瀏覽代碼

fixed 订单核销功能优化

fushengqian 1 月之前
父節點
當前提交
ac79e64002

+ 35 - 32
db/fuint-db.sql

@@ -629,38 +629,41 @@ CREATE TABLE `mt_open_gift_item` (
 DROP TABLE IF EXISTS `mt_order`;
 
 CREATE TABLE `mt_order` (
-    `ID` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
-    `TYPE` varchar(30) DEFAULT NULL COMMENT '订单类型',
-    `PAY_TYPE` varchar(30) DEFAULT 'JSAPI' COMMENT '支付类型',
-    `ORDER_MODE` varchar(30) DEFAULT 'express' COMMENT '订单模式',
-    `PLATFORM` varchar(30) DEFAULT '' COMMENT '平台',
-    `ORDER_SN` varchar(32) NOT NULL DEFAULT '' COMMENT '订单号',
-    `COUPON_ID` int DEFAULT '0' COMMENT '卡券ID',
-    `MERCHANT_ID` int DEFAULT '0' COMMENT '所属商户ID',
-    `STORE_ID` int DEFAULT '0' COMMENT '所属店铺ID',
-    `USER_ID` int NOT NULL DEFAULT '0' COMMENT '用户ID',
-    `VERIFY_CODE` varchar(10) DEFAULT '' COMMENT '核销验证码',
-    `IS_VISITOR` char(1) DEFAULT 'N' COMMENT '是否游客',
-    `AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '订单金额',
-    `PAY_AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '支付金额',
-    `USE_POINT` int DEFAULT '0' COMMENT '使用积分数量',
-    `POINT_AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '积分金额',
-    `DISCOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '折扣金额',
-    `DELIVERY_FEE` decimal(10,2) DEFAULT '0.00' COMMENT '配送费用',
-    `PARAM` varchar(500) DEFAULT '' COMMENT '订单参数',
-    `EXPRESS_INFO` varchar(500) DEFAULT '' COMMENT '物流信息',
-    `REMARK` varchar(500) DEFAULT '' COMMENT '用户备注',
-    `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
-    `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
-    `STATUS` char(1) DEFAULT 'A' COMMENT '订单状态',
-    `PAY_TIME` datetime DEFAULT NULL COMMENT '支付时间',
-    `PAY_STATUS` char(1) DEFAULT '' COMMENT '支付状态',
-    `SETTLE_STATUS` char(1) DEFAULT 'A' COMMENT '结算状态',
-    `STAFF_ID` int DEFAULT '0' COMMENT '操作员工',
-    `COMMISSION_USER_ID` int DEFAULT '0' COMMENT '分佣用户ID',
-    `COMMISSION_STATUS` char(1) DEFAULT 'A' COMMENT '分佣提成计算状态',
-    `OPERATOR` varchar(30) DEFAULT '' COMMENT '最后操作人',
-    PRIMARY KEY (`ID`)
+  `ID` int NOT NULL AUTO_INCREMENT COMMENT '自增ID',
+  `TYPE` varchar(30) DEFAULT NULL COMMENT '订单类型',
+  `PAY_TYPE` varchar(30) DEFAULT 'JSAPI' COMMENT '支付类型',
+  `ORDER_MODE` varchar(30) DEFAULT 'express' COMMENT '订单模式',
+  `PLATFORM` varchar(30) DEFAULT '' COMMENT '平台',
+  `ORDER_SN` varchar(32) NOT NULL DEFAULT '' COMMENT '订单号',
+  `COUPON_ID` int DEFAULT '0' COMMENT '卡券ID',
+  `MERCHANT_ID` int DEFAULT '0' COMMENT '所属商户ID',
+  `STORE_ID` int DEFAULT '0' COMMENT '所属店铺ID',
+  `USER_ID` int NOT NULL DEFAULT '0' COMMENT '用户ID',
+  `VERIFY_CODE` varchar(10) DEFAULT '' COMMENT '核销验证码',
+  `IS_VISITOR` char(1) DEFAULT 'N' COMMENT '是否游客',
+  `AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '订单金额',
+  `PAY_AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '支付金额',
+  `USE_POINT` int DEFAULT '0' COMMENT '使用积分数量',
+  `POINT_AMOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '积分金额',
+  `DISCOUNT` decimal(10,2) DEFAULT '0.00' COMMENT '折扣金额',
+  `DELIVERY_FEE` decimal(10,2) DEFAULT '0.00' COMMENT '配送费用',
+  `PARAM` varchar(500) DEFAULT '' COMMENT '订单参数',
+  `EXPRESS_INFO` varchar(500) DEFAULT '' COMMENT '物流信息',
+  `REMARK` varchar(500) DEFAULT '' COMMENT '用户备注',
+  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
+  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
+  `STATUS` char(1) DEFAULT 'A' COMMENT '订单状态',
+  `PAY_TIME` datetime DEFAULT NULL COMMENT '支付时间',
+  `PAY_STATUS` char(1) DEFAULT '' COMMENT '支付状态',
+  `SETTLE_STATUS` char(1) DEFAULT 'A' COMMENT '结算状态',
+  `STAFF_ID` int DEFAULT '0' COMMENT '操作员工',
+  `CONFIRM_STATUS` char(1) DEFAULT 'N' COMMENT '核销状态',
+  `CONFIRM_TIME` datetime DEFAULT NULL COMMENT '核销时间',
+  `CONFIRM_REMARK` varchar(500) DEFAULT NULL COMMENT '核销备注',
+  `COMMISSION_USER_ID` int DEFAULT '0' COMMENT '分佣用户ID',
+  `COMMISSION_STATUS` char(1) DEFAULT 'A' COMMENT '分佣提成计算状态',
+  `OPERATOR` varchar(30) DEFAULT '' COMMENT '最后操作人',
+  PRIMARY KEY (`ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';
 
 /*Table structure for table `mt_order_address` */

+ 10 - 1
fuint-application/src/main/java/com/fuint/common/dto/OrderDto.java

@@ -107,13 +107,22 @@ public class OrderDto implements Serializable {
 
     @ApiModelProperty("订单状态")
     private String status;
-    
+
     @ApiModelProperty("支付状态")
     private String payStatus;
 
     @ApiModelProperty(value="结算状态")
     private String settleStatus;
 
+    @ApiModelProperty("核销状态")
+    private String confirmStatus;
+
+    @ApiModelProperty("核销时间")
+    private Date confirmTime;
+
+    @ApiModelProperty("核销备注")
+    private String confirmRemark;
+
     @ApiModelProperty("最后操作人")
     private String operator;
 

+ 3 - 0
fuint-application/src/main/java/com/fuint/common/param/OrderListParam.java

@@ -16,6 +16,9 @@ public class OrderListParam extends PageParam implements Serializable {
     @ApiModelProperty(value="ID", name="id")
     private String id;
 
+    @ApiModelProperty(value="关键字", name="keyword")
+    private String keyword;
+
     @ApiModelProperty(value="会员ID", name="userId")
     private String userId;
 

+ 42 - 5
fuint-application/src/main/java/com/fuint/common/service/impl/OrderServiceImpl.java

@@ -198,8 +198,12 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
         String storeIds = orderListParam.getStoreIds() == null ? "" : orderListParam.getStoreIds();
         String startTime = orderListParam.getStartTime() == null ? "" : orderListParam.getStartTime();
         String endTime = orderListParam.getEndTime() == null ? "" : orderListParam.getEndTime();
+        String keyword = orderListParam.getKeyword() == null ? "" : orderListParam.getKeyword();
         List<String> payType = orderListParam.getPayType();
 
+        LambdaQueryWrapper<MtOrder> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.ne(MtOrder::getStatus, OrderStatusEnum.DELETED.getKey());
+
         if (dataType.equals("toPay")) {
             status = OrderStatusEnum.CREATED.getKey(); // 待支付
         } else if(dataType.equals("paid")) {
@@ -207,12 +211,20 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
             payStatus = PayStatusEnum.SUCCESS.getKey(); // 已支付
         } else if(dataType.equals("cancel")) {
             status = OrderStatusEnum.CANCEL.getKey();  // 已取消
+        } else if(dataType.equals("todo")) {
+            // 待核销
+            payStatus = PayStatusEnum.SUCCESS.getKey();
+            lambdaQueryWrapper.eq(MtOrder::getConfirmStatus, YesOrNoEnum.NO.getKey());
+            lambdaQueryWrapper.eq(MtOrder::getType, OrderTypeEnum.GOOGS.getKey());
+            lambdaQueryWrapper.eq(MtOrder::getOrderMode, OrderModeEnum.ONESELF.getKey());
+        } else if(dataType.equals("confirm")) {
+            // 已核销
+            payStatus = PayStatusEnum.SUCCESS.getKey();
+            lambdaQueryWrapper.eq(MtOrder::getType, OrderTypeEnum.GOOGS.getKey());
+            lambdaQueryWrapper.eq(MtOrder::getConfirmStatus, YesOrNoEnum.YES.getKey());
+            lambdaQueryWrapper.eq(MtOrder::getOrderMode, OrderModeEnum.ONESELF.getKey());
         }
 
-        Page<MtOpenGift> pageHelper = PageHelper.startPage(pageNumber, pageSize);
-        LambdaQueryWrapper<MtOrder> lambdaQueryWrapper = Wrappers.lambdaQuery();
-        lambdaQueryWrapper.ne(MtOrder::getStatus, OrderStatusEnum.DELETED.getKey());
-
         if (StringUtil.isNotEmpty(orderSn)) {
             lambdaQueryWrapper.eq(MtOrder::getOrderSn, orderSn);
         }
@@ -225,10 +237,21 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
         if (StringUtil.isNotEmpty(settleStatus)) {
             lambdaQueryWrapper.eq(MtOrder::getSettleStatus, settleStatus);
         }
+        if (StringUtil.isNotEmpty(keyword)) {
+            MtUser userInfo = memberService.queryMemberByMobile(merchantId, keyword);
+            if (userInfo != null) {
+                lambdaQueryWrapper.and(wq -> wq
+                        .like(MtOrder::getOrderSn, keyword)
+                        .or()
+                        .eq(MtOrder::getUserId, userInfo.getId().toString()));
+            } else {
+                lambdaQueryWrapper.like(MtOrder::getOrderSn, keyword);
+            }
+        }
         if (StringUtil.isNotEmpty(mobile)) {
             MtUser userInfo = memberService.queryMemberByMobile(merchantId, mobile);
             if (userInfo != null) {
-                userId = userInfo.getId() + "";
+                userId = userInfo.getId().toString();
             } else {
                 userId = "0";
             }
@@ -270,6 +293,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
             lambdaQueryWrapper.in(MtOrder::getPayType, payType);
         }
         lambdaQueryWrapper.orderByDesc(MtOrder::getId);
+        Page<MtOpenGift> pageHelper = PageHelper.startPage(pageNumber, pageSize);
         List<MtOrder> orderList = mtOrderMapper.selectList(lambdaQueryWrapper);
 
         List<UserOrderDto> dataList = new ArrayList<>();
@@ -350,6 +374,7 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
         mtOrder.setUpdateTime(new Date());
         mtOrder.setDeliveryFee(orderDto.getDeliveryFee() == null ? new BigDecimal(0) : orderDto.getDeliveryFee());
         mtOrder.setSettleStatus(SettleStatusEnum.WAIT.getKey());
+        mtOrder.setConfirmStatus(YesOrNoEnum.NO.getKey());
 
         if (mtOrder.getId() == null || mtOrder.getId() <= 0) {
             mtOrder.setCreateTime(new Date());
@@ -1326,6 +1351,18 @@ public class OrderServiceImpl extends ServiceImpl<MtOrderMapper, MtOrder> implem
             mtOrder.setRemark(orderDto.getRemark());
         }
 
+        if (null != orderDto.getConfirmStatus()) {
+            mtOrder.setConfirmStatus(orderDto.getConfirmStatus());
+        }
+
+        if (null != orderDto.getConfirmRemark()) {
+            mtOrder.setConfirmRemark(orderDto.getConfirmRemark());
+        }
+
+        if (null != orderDto.getConfirmTime()) {
+            mtOrder.setConfirmTime(orderDto.getConfirmTime());
+        }
+
         mtOrderMapper.updateById(mtOrder);
         return mtOrder;
     }

+ 3 - 1
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendOrderController.java

@@ -360,11 +360,13 @@ public class BackendOrderController extends BaseController {
         orderDto.setId(orderId);
         orderDto.setOperator(accountInfo.getAccountName());
         if (StringUtil.isNotEmpty(remark)) {
-            orderDto.setRemark(remark);
+            orderDto.setConfirmRemark(remark);
         }
         if (StringUtil.isNotEmpty(verifyCode)) {
             orderDto.setVerifyCode(verifyCode);
         }
+        orderDto.setConfirmStatus(YesOrNoEnum.YES.getKey());
+        orderDto.setConfirmTime(new Date());
 
         orderService.updateOrder(orderDto);
         return getSuccessResult(true);

+ 7 - 24
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendPrinterController.java

@@ -81,12 +81,7 @@ public class BackendPrinterController extends BaseController {
         String searchStoreId = request.getParameter("storeId");
 
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        Integer storeId;
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        } else {
-            storeId = accountInfo.getStoreId();
-        }
+        Integer storeId = accountInfo.getStoreId();
 
         PaginationRequest paginationRequest = new PaginationRequest();
         paginationRequest.setCurrentPage(page);
@@ -146,9 +141,6 @@ public class BackendPrinterController extends BaseController {
         Integer id = params.get("id") == null ? 0 : Integer.parseInt(params.get("id").toString());
 
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         MtPrinter mtPrinter = printerService.queryPrinterById(id);
         if (mtPrinter == null) {
@@ -184,9 +176,6 @@ public class BackendPrinterController extends BaseController {
         String autoPrint = params.get("autoPrint") == null ? YesOrNoEnum.NO.getKey() : params.get("autoPrint").toString();
 
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         MtPrinter mtPrinter = new MtPrinter();
         mtPrinter.setOperator(accountInfo.getAccountName());
@@ -220,11 +209,11 @@ public class BackendPrinterController extends BaseController {
     public ResponseObject info(HttpServletRequest request, @PathVariable("id") Integer id) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         MtPrinter printerInfo = printerService.queryPrinterById(id);
+        if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0 && !accountInfo.getMerchantId().equals(printerInfo.getMerchantId())) {
+            return getFailureResult(1004);
+        }
 
         Map<String, Object> result = new HashMap<>();
         result.put("printerInfo", printerInfo);
@@ -245,9 +234,6 @@ public class BackendPrinterController extends BaseController {
     public ResponseObject setting(HttpServletRequest request) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         List<MtSetting> settingList = settingService.getSettingList(accountInfo.getMerchantId(), SettingTypeEnum.PRINTER.getKey());
 
@@ -291,9 +277,6 @@ public class BackendPrinterController extends BaseController {
         String enable = param.get("enable") != null ? param.get("enable").toString() : null;
 
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         PrinterSettingEnum[] settingList = PrinterSettingEnum.values();
         for (PrinterSettingEnum setting : settingList) {
@@ -331,14 +314,14 @@ public class BackendPrinterController extends BaseController {
     public ResponseObject doPrint(HttpServletRequest request, @PathVariable("orderId") Integer orderId) throws Exception {
         String token = request.getHeader("Access-Token");
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
-        if (accountInfo == null) {
-            return getFailureResult(1001, "请先登录");
-        }
 
         UserOrderDto orderInfo = orderService.getOrderById(orderId);
         if (orderInfo == null) {
             return getFailureResult(201, "该订单不存在");
         }
+        if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0 && !accountInfo.getMerchantId().equals(orderInfo.getMerchantId())) {
+            return getFailureResult(1004);
+        }
 
         // 打印订单
         Boolean result = printerService.printOrder(orderInfo, false);

+ 10 - 16
fuint-application/src/main/java/com/fuint/module/merchantApi/controller/MerchantOrderController.java

@@ -59,18 +59,13 @@ public class MerchantOrderController extends BaseController {
         String token = request.getHeader("Access-Token");
         UserInfo userInfo = TokenUtil.getUserInfoByToken(token);
 
-        if (userInfo == null) {
-            return getFailureResult(1001, "用户未登录");
-        }
-
         MtUser mtUser = memberService.queryMemberById(userInfo.getId());
-        MtStaff staffInfo = null;
-        if (mtUser != null && mtUser.getMobile() != null) {
-            staffInfo = staffService.queryStaffByMobile(mtUser.getMobile());
-        }
+        MtStaff staffInfo = staffService.queryStaffByMobile(mtUser.getMobile());
+
         if (staffInfo == null) {
-            return getFailureResult(1002, "该账号属于任何商户");
-        } else if(staffInfo.getStoreId() != null && staffInfo.getStoreId() > 0){
+            return getFailureResult(1004);
+        } else {
+            params.setMerchantId(staffInfo.getMerchantId());
             params.setStoreId(staffInfo.getStoreId());
         }
 
@@ -88,8 +83,11 @@ public class MerchantOrderController extends BaseController {
         String token = request.getHeader("Access-Token");
 
         UserInfo userInfo = TokenUtil.getUserInfoByToken(token);
-        if (userInfo == null) {
-            return getFailureResult(1001, "用户未登录");
+
+        MtUser mtUser = memberService.queryMemberById(userInfo.getId());
+        MtStaff mtStaff = staffService.queryStaffByMobile(mtUser.getMobile());
+        if (mtStaff == null) {
+            return getFailureResult(1004);
         }
 
         String orderId = param.getOrderId();
@@ -112,10 +110,6 @@ public class MerchantOrderController extends BaseController {
         String token = request.getHeader("Access-Token");
         UserInfo mtUser = TokenUtil.getUserInfoByToken(token);
 
-        if (mtUser == null) {
-            return getFailureResult(1001, "请先登录");
-        }
-
         String orderId = param.getOrderId();
         if (orderId == null || StringUtil.isEmpty(orderId)) {
             return getFailureResult(201, "订单不能为空");

+ 9 - 0
fuint-repository/src/main/java/com/fuint/repository/model/MtOrder.java

@@ -110,6 +110,15 @@ public class MtOrder implements Serializable {
     @ApiModelProperty("操作员工")
     private Integer staffId;
 
+    @ApiModelProperty("核销状态")
+    private String confirmStatus;
+
+    @ApiModelProperty("核销时间")
+    private Date confirmTime;
+
+    @ApiModelProperty("核销备注")
+    private String confirmRemark;
+
     @ApiModelProperty("分佣提成用户ID")
     private Integer commissionUserId;