Просмотр исходного кода

增加销售单回复增加token,防止数据重复提交

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10745 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 8 лет назад
Родитель
Сommit
2d24a17466

+ 54 - 39
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -1,17 +1,49 @@
 package com.uas.platform.b2b.controller;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.servlet.ModelAndView;
+
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
 import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
 import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
-import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.model.OrderType;
+import com.uas.platform.b2b.model.PurchaseOrder;
+import com.uas.platform.b2b.model.PurchaseOrderAll;
+import com.uas.platform.b2b.model.PurchaseOrderDone;
+import com.uas.platform.b2b.model.PurchaseOrderEnd;
+import com.uas.platform.b2b.model.PurchaseOrderItem;
+import com.uas.platform.b2b.model.PurchaseOrderReceived;
+import com.uas.platform.b2b.model.PurchaseOrderReply;
+import com.uas.platform.b2b.model.PurchaseOrderTodo;
+import com.uas.platform.b2b.model.PurchaseOrderWaiting;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.support.JxlsExcelView;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.TokenService;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
@@ -25,21 +57,6 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  * 卖家对订单的操作
@@ -73,17 +90,10 @@ public class SaleOrderController {
 	@Autowired
 	private PurchaseOrderTodoDao purchaseOrderTodoDao;
 
-	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
-
-	/**
-	 * 销售类型
-	 */
-	private final static String SALEKIND = "sale";
+	@Autowired
+	private TokenService tokenService;
 
-	/**
-	 * 采购类型
-	 */
-	private final static String PURCKIND = "purc";
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
 
 	/**
 	 * 作为卖家,收到的采购订单
@@ -367,7 +377,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderAll> getSaleOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(全部)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
@@ -392,7 +402,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderTodo> getTodoSaleOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购单列表(待回复)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		purchaseOrderTodoDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -418,7 +428,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderDone> getDoneSaleOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购单列表(已回复)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		purchaseOrderDoneDao.updateStatusForSaleDone(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -444,7 +454,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderEnd> getEndSaleOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购单列表(已结案)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
 		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
@@ -468,7 +478,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderReceived> getReceivedOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -493,7 +503,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderWaiting> getWaitingOrders(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.sale.name());
 		purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -517,12 +527,17 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items/{orderItemId}/reply", method = RequestMethod.POST)
 	public ResponseEntity<String> replyOrderItem(@RequestBody String json,
-			@PathVariable("orderItemId") Long orderItemId) {
+			@PathVariable("orderItemId") Long orderItemId, @PathVariable("token") String token) {
 		PurchaseOrderReply reply = FlexJsonUtils.fromJson(json, PurchaseOrderReply.class);
 		PurchaseOrderItem orderItem = new PurchaseOrderItem();
 		orderItem.setId(orderItemId);
 		reply.setOrderItem(orderItem);
-		reply = purchaseOrderService.reply(reply);
+		boolean flag = tokenService.enabled(token);
+		if (flag) {// 如果token存在,才进行操作处理
+			reply = purchaseOrderService.reply(reply);
+			// 清除token
+			tokenService.delete(token);
+		}
 		logger.log("客户采购单", "单个回复客户采购明细", reply.replyDescription(), reply.getOrderItem().getOrder().getCode(),
 				orderItemId);
 		return new ResponseEntity<String>(HttpStatus.OK);
@@ -765,7 +780,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderAll> getAllPurcOrders(PageParams params, String searchFilter) {
 		logger.log("采购单", "查看采购订单列表(包括采购明细)(全部)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), PURCKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
 		purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
@@ -784,7 +799,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderTodo> getTodoPurcOrders(PageParams params, String searchFilter) {
 		logger.log("采购单", "查看采购订单列表(包括采购明细)(待回复)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), PURCKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
 		purchaseOrderTodoDao.updateStatusForPurc(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
@@ -804,7 +819,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderDone> getDonePurcOrders(PageParams params, String searchFilter) {
 		logger.log("采购单", "查看采购订单列表(包括采购明细)(已回复)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), PURCKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
 		purchaseOrderDoneDao.updateStatusForPurcDone(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
@@ -823,7 +838,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderEnd> getEndPurcOrders(PageParams params, String searchFilter) {
 		logger.log("采购单", "查看采购订单列表(包括采购明细)(已结案)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), PURCKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
 		pageInfo.filter("end", Constant.YES);
@@ -841,7 +856,7 @@ public class SaleOrderController {
 	public SPage<PurchaseOrderWaiting> getWaitingPurcOrders(PageParams params, String searchFilter) {
 		logger.log("采购单", "查看采购订单列表(包括采购明细)(待交货)");
 		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
-				SystemSession.getUser().getEnterprise().getUu(), PURCKIND);
+				SystemSession.getUser().getEnterprise().getUu(), OrderType.purc.getPhrase());
 		purchaseOrderWaitingDao.updateStatusForPurc(SystemSession.getUser().getEnterprise().getUu());
 		PageInfo pageInfo = new PageInfo(params);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());

+ 35 - 0
src/main/java/com/uas/platform/b2b/controller/TokenController.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2b.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.TokenService;
+
+/**
+ * 关于token的一些方法
+ * 
+ * @author hejq
+ * @time 创建时间:2017年8月15日
+ */
+@RequestMapping("/token")
+@RestController
+public class TokenController {
+
+	@Autowired
+	private TokenService tokenService;
+	
+	/**
+	 * 获取token
+	 * 
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET)
+	private ModelMap getToken(String userType) {
+		return tokenService.getToken(userType, SystemSession.getUser().getUserUU());
+	}
+
+}

+ 14 - 0
src/main/java/com/uas/platform/b2b/dao/TokenDao.java

@@ -10,7 +10,21 @@ import com.uas.platform.b2b.model.Token;
 @Repository
 public interface TokenDao extends JpaRepository<Token, Long> {
 	
+	/**
+	 * 通过uu号和用户类型找出token,验证码使用
+	 * 
+	 * @param uu
+	 * @param userType
+	 * @return
+	 */
 	public List<Token> findByUuAndUserType(Long uu, String userType);
 	
+	/**
+	 * 通过随机码找出token信息
+	 * 
+	 * @param code
+	 * @return
+	 */
+	Token findByCode(String code);
 
 }

+ 105 - 0
src/main/java/com/uas/platform/b2b/model/OrderType.java

@@ -0,0 +1,105 @@
+package com.uas.platform.b2b.model;
+
+public enum OrderType {
+	/**
+	 * {@code 100 采购}
+	 */
+	purc(100, "采购单"),
+
+	/**
+	 * {@code 101销售}
+	 */
+	sale(101, "销售单"),
+
+	/**
+	 * {@code 102 发货单}
+	 */
+	salesend(102, "发货单"),
+
+	/**
+	 * {@code 103发货提醒}
+	 */
+	salenotice(103, "发货提醒"),
+
+	/**
+	 * {@code 104采购询价}
+	 */
+	purcinquiry(104, "采购询价单"),
+
+	/**
+	 * {@code 105销售询价}
+	 */
+	saleinquiry(105, "销售询价单"),
+
+	/**
+	 * {@code 106代采订单}
+	 */
+	deputyorder(106, "代采订单"),
+
+	/**
+	 * {@code 107模具询价单}
+	 */
+	inquirymould(107, "模具询价单"),
+
+	/**
+	 * {@code 108客户采购验退单}
+	 */
+	salereturn(108, "客户采购验退单"),
+
+	/**
+	 * {@code 109客户采购验收单}
+	 */
+	saleaccept(109, "客户采购验收单"),
+
+	/**
+	 * {@code 110应收对账单}
+	 */
+	apcheck(110, "应收对账单");
+
+	private OrderType(int value, String phrase) {
+		this.value = value;
+		this.phrase = phrase;
+	}
+
+	private final int value;
+
+	private final String phrase;
+
+	/**
+	 * @return 状态的整型编码
+	 */
+	public int value() {
+		return this.value;
+	}
+
+	/**
+	 * @return 状态的描述
+	 */
+	public String getPhrase() {
+		return this.phrase;
+	}
+
+	/**
+	 * @param statusCode
+	 *            状态的编码
+	 * @return 状态
+	 * @throws IllegalArgumentException
+	 *             如果statusCode不存在的话
+	 */
+	public static OrderType valueOf(int statusCode) {
+		for (OrderType status : values()) {
+			if (status.value == statusCode) {
+				return status;
+			}
+		}
+		throw new IllegalArgumentException("没有与编号 [" + statusCode + "]匹配的状态");
+	}
+
+	/**
+	 * 返回状态的编号
+	 */
+	@Override
+	public String toString() {
+		return Integer.toString(value);
+	}
+}

+ 11 - 0
src/main/java/com/uas/platform/b2b/model/Token.java

@@ -5,6 +5,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -41,6 +42,7 @@ public class Token implements Serializable{
 		this();
 		this.userType = type.toLowerCase();
 		this.uu = uu;
+		this.code = uuid();
 		if("mobile".equals(this.userType))
 			this.code = randomCode();
 	}
@@ -122,4 +124,13 @@ public class Token implements Serializable{
 		String result = afterShuffle.substring(3, 9);
 		return result;
 	}
+
+	/**
+	 * 产生唯一字符串
+	 * 
+	 * @return
+	 */
+	private String uuid() {
+		return UUID.randomUUID().toString().replaceAll("\\-", "");
+	}
 }

+ 10 - 0
src/main/webapp/resources/js/index/services/Token.js

@@ -0,0 +1,10 @@
+define([ 'ngResource'], function() {
+	angular.module('TokenService', [ 'ngResource']).factory('token', ['$resource', function($resource) {
+		return $resource('token', {}, {
+			info: {
+				url: 'token',
+				mehtod: 'GET'
+			}
+		})
+	}])
+});

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/order.html

@@ -533,7 +533,7 @@
 					<br ng-if="item.replyQty>=item.qty">
 					<br ng-if="item.replyQty>=item.qty">
 					<div ng-show="!item.$editing">
-						<a ng-click="item.$editing=true" ng-if="item.acceptQty - item.returnQty < item.qty">回复</a>
+						<a ng-click="item.$editing=true; getToken()" ng-if="item.acceptQty - item.returnQty < item.qty">回复</a>
 					</div>
 					<div ng-if="item.$editing">
 						<div>