Bladeren bron

bug修改,短信功能开发

lishiqiang 2 dagen geleden
bovenliggende
commit
37c2a7bc21

+ 2 - 0
ship-module-trade/ship-module-trade-api/src/main/java/com/yc/ship/module/trade/api/dto/TradeOrderRespDTO.java

@@ -41,6 +41,8 @@ public class TradeOrderRespDTO {
     private Long billStoreId;
     private Long storeId;
     private String storeName;
+    private String content;
     private Long externalOrderId;
+    private Integer orderStatus;
 
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -110,7 +110,7 @@ public class TradeOrderDO extends TenantBaseDO {
      * 订单状态
      * 关联 {@link TradeOrderStatusEnum}
      */
-    @ForUpdate(fieldName = "订单状态")
+//    @ForUpdate(fieldName = "订单状态")
     private Integer orderStatus;
     /**
      * 支付时间

+ 6 - 11
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -240,7 +240,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_CREATE)
     public CommonResult<TradeOrderRespDTO> createShipOrder(ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
         TradeOrderBO tradeOrderBO = null;
         try {
@@ -257,6 +256,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             TradeOrderRespDTO tradeOrderRespDTO = new TradeOrderRespDTO().setOrderId(tradeOrderBO.getTradeOrderDO().getId()).setOrderNo(tradeOrderBO.getTradeOrderDO().getOrderNo())
                     .setPayAmount(tradeOrderBO.getTradeOrderDO().getPayAmount()).setOriginPayAmount(tradeOrderBO.getExtraInfo().getOriginPayAmount())
                     .setDiscountAmount(tradeOrderBO.getExtraInfo().getDiscountAmount()).setMarketingId(tradeOrderBO.getExtraInfo().getMarketingCouponCodeId())
+                    .setOrderStatus(tradeOrderBO.getTradeOrderDO().getOrderStatus())
                     .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
             return CommonResult.success(tradeOrderRespDTO);
         } catch (ServiceException e) {
@@ -270,7 +270,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_MODIFY)
+
     public CommonResult<TradeOrderRespDTO> modifyShipOrder(ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
         TradeOrderBO tradeOrderBO = null;
         try {
@@ -289,13 +289,15 @@ public class TradeOrderServiceImpl implements TradeOrderService {
             }
             tradeOrderRepositoryService.modifyOrder(tradeOrderBO,shipTradeOrderCreateReqVO.getOldtradeOrderDO());
             //4 下单成功回调
-            tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
+//            tradeSupplierCallbackService.afterAllOrderCreate(tradeOrderBO.getTradeOrderDO());
             //5.下单后处理
             afterOrderModify(tradeOrderBO, changedFields + shipTradeOrderCreateReqVO.getChangedFields1());
             TradeOrderRespDTO tradeOrderRespDTO = new TradeOrderRespDTO().setOrderId(tradeOrderBO.getTradeOrderDO().getId()).setOrderNo(tradeOrderBO.getTradeOrderDO().getOrderNo())
                     .setPayAmount(tradeOrderBO.getTradeOrderDO().getPayAmount()).setOriginPayAmount(tradeOrderBO.getExtraInfo().getOriginPayAmount())
                     .setDiscountAmount(tradeOrderBO.getExtraInfo().getDiscountAmount()).setMarketingId(tradeOrderBO.getExtraInfo().getMarketingCouponCodeId())
-                    .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName());
+                    .setMarketingName(tradeOrderBO.getExtraInfo().getMarketingName())
+                    .setOrderStatus(tradeOrderBO.getTradeOrderDO().getOrderStatus())
+                    .setContent(changedFields + shipTradeOrderCreateReqVO.getChangedFields1());
             return CommonResult.success(tradeOrderRespDTO);
         } catch (ServiceException e) {
             try {
@@ -1129,18 +1131,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         tradeOrderHandlers.forEach(handler -> handler.afterOrderCreate(tradeOrderBO));
 //        tradePublishUtils.publishOrderCreateSuccessMsg(tradeOrderBO.getTradeOrderDO().getId().toString());
         //支付倒计时--不超时,有预订单
-        Map<String, Object> append = TradeOrderLogUtils.append("result", "成功");
-        append.put("content", "");
-        TradeOrderLogUtils.setOrderInfo(tradeOrderBO.getTradeOrderDO().getId(), null, tradeOrderBO.getTradeOrderDO().getOrderStatus(), append);
     }
 
     private void afterOrderModify(TradeOrderBO tradeOrderBO, String content) {
         //执行下单后处理器
         tradeOrderHandlers.forEach(handler -> handler.afterOrderModify(tradeOrderBO));
-        //支付倒计时--不超时,有预订单
-        Map<String, Object> append = TradeOrderLogUtils.append("result", "订单修改");
-        append.put("content", content);
-        TradeOrderLogUtils.setOrderInfo(tradeOrderBO.getTradeOrderDO().getId(), null, tradeOrderBO.getTradeOrderDO().getOrderStatus(), append);
     }
 
 

+ 26 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/otc/impl/OtcTradeOrderServiceImpl.java

@@ -1453,6 +1453,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_CREATE)
     public CommonResult<?> createOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
         Long distributorId = createVO.getDistributorId() != null ? createVO.getDistributorId() : loginUser.getDistributorId();
         Long storeId = createVO.getStoreId() != null ? createVO.getStoreId() : loginUser.getStoreId();
@@ -1620,6 +1621,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
             }
             TradeOrderTotalDO tradeOrderTotalDO = BeanUtils.toBean(summary, TradeOrderTotalDO.class);
             Long orderId = result.getCheckedData().getOrderId();
+            Integer orderStatus = result.getCheckedData().getOrderStatus();
             tradeOrderTotalDO.setOrderId(IdWorker.getId());
             tradeOrderTotalDO.setOldOrderId(orderId);
             tradeOrderTotalDO.setOtherRemark(summary.getOtherRemark());
@@ -1686,13 +1688,18 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 auditType = 4;
             }
             if (auditType > 0 && createVO.getIsYd() != 1) {
+                orderStatus = TradeOrderStatusEnum.TRANSFER.getStatus();
                 AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, auditType).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
-                tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER).set("audit_user",auditUserDO.getAuditUser()).set("audit_status", 1).eq("id", orderId));
+                tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_user",auditUserDO.getAuditUser()).set("audit_status", 1).eq("id", orderId));
             }
             if (!tradeOrderRoomDOList.isEmpty()) {
                 tradeOrderRoomModelMapper.deleteByOrderId(orderId);
                 tradeOrderRoomModelMapper.insertBatch(tradeOrderRoomDOList);
             }
+            //支付倒计时--不超时,有预订单
+            Map<String, Object> append = TradeOrderLogUtils.append("result", "订单创建成功");
+            append.put("content", "");
+            TradeOrderLogUtils.setOrderInfo(orderId, null, orderStatus, append);
             tradePublishUtils.publishOrderCreateSuccessMsg(orderId + "");
             OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
             return CommonResult.success(respVO);
@@ -1727,6 +1734,7 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ORDER_MODIFY)
     public CommonResult<?> motifyOtcOrder(LoginUser loginUser, TradeOrderOtcCreateVO createVO) {
         Long distributorId = createVO.getDistributorId() != null ? createVO.getDistributorId() : loginUser.getDistributorId();
         Long storeId = createVO.getStoreId() != null ? createVO.getStoreId() : loginUser.getStoreId();
@@ -1915,6 +1923,8 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 return CommonResult.error(result.getCode(), result.getMsg());
             }
             Long neworderId = result.getCheckedData().getOrderId();
+            Integer neworderStatus = result.getCheckedData().getOrderStatus();
+            String content  = result.getCheckedData().getContent();
 
             tradeOrderTotalMapper.update(new LambdaUpdateWrapper<TradeOrderTotalDO>()
                     .set(TradeOrderTotalDO::getDeleted, 1)
@@ -1956,20 +1966,30 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                 auditType = 3;
             }
             if (!Objects.equals(oldleaderAmount, leaderAmount) || !Objects.equals(oldwithAmount, withAmount) || !Objects.equals(oldotherMoney, otherMoney)) {
-                auditType = 3;
+                auditType = 4;
             }
             if (!Objects.equals(shipTradeOrderCreateReqVO.getAmount(), tradeOrderDO.getAmount()) && loginUser.getDistributorId() != null) {
                 auditType = 4;
             }
+            //1.取消订单,四级审核,销售-计调-运营主管-营销经理
+            //2.重要信息修改(修改游客信息,价格变动),四级审核,销售-计调-运营主管-营销经理
+            //3.普通信息修改(联系电话,联系人,备注),二级审核,计调-运营主管
+            //4.下单填写领队费,陪同费,其他费用,四级审核,销售-计调-运营主管-营销经理
+            //5.申请优惠政策,二级审核,计调-运营主管
+            //6.点击支付定金,三级审核,销售-计调-运营主管
             String msg = "";
             if (auditType > 0 && createVO.getIsYd() != 1) {
                 AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, auditType).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
                 tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", auditType).set("audit_user", auditUserDO == null ? "" : auditUserDO.getAuditUser()).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
+                log.error(orderNo+">>>>>>>>>>>>>>>>>>>>>> motifyOtcOrder 进入审核流程 <<<<<<<<<<<<<<<<<<<<<<"+auditType+";"+(auditUserDO == null ? "" : auditUserDO.getAuditUser()));
                 msg = "修改提交成功,等待管理员审核";
+                neworderStatus = TradeOrderStatusEnum.TRANSFER.getStatus();
             } else if (shipTradeOrderCreateReqVO.getDeposi().compareTo(BigDecimal.ZERO) > 0 && createVO.getIsYd() != 1 && Objects.equals(tradeOrderDO.getOrderStatus(), TradeOrderStatusEnum.YD.getStatus())) {
                 AuditUserDO auditUserDO = auditUserMapper.selectOne(new LambdaQueryWrapperX<AuditUserDO>().eq(AuditUserDO::getType, 3).eq(AuditUserDO::getAuditStatus, 1).eq(AuditUserDO::getDeleted, 0).orderByDesc(AuditUserDO::getCreateTime).last("limit 1"));
                 tradeOrderMapper.update(new UpdateWrapper<TradeOrderDO>().set("audit_type", 3).set("audit_user", auditUserDO == null ? "" : auditUserDO.getAuditUser()).set("order_status", TradeOrderStatusEnum.TRANSFER.getStatus()).set("audit_status", 1).eq("id", neworderId));
                 msg = "修改提交成功,等待管理员审核";
+                neworderStatus = TradeOrderStatusEnum.TRANSFER.getStatus();
+                log.error(orderNo+">>>>>>>>>>>>>>>>>>>>>> motifyOtcOrder 进入审核流程2 <<<<<<<<<<<<<<<<<<<<<<"+3+";"+(auditUserDO == null ? "" : auditUserDO.getAuditUser()));
             }
 
             tradeOrderRoomModelMapper.deleteByOrderId(orderId);
@@ -2006,6 +2026,10 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
                     orderPolicyMapper.insertBatch(orderPolicyDOList);
                 }
             }
+            //支付倒计时--不超时,有预订单
+            Map<String, Object> append = TradeOrderLogUtils.append("result", "订单修改成功");
+            append.put("content", content);
+            TradeOrderLogUtils.setOrderInfo(neworderId, tradeOrderDO.getOrderStatus(), neworderStatus, append);
             tradePublishUtils.publishOrderCreateSuccessMsg(neworderId + "");
             OtcTradeOrderCreateRespVO respVO = TradeOrderConvert.INSTANCE.convert(result.getData());
             return CommonResult.success(respVO, msg);

+ 32 - 19
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/smsSendconfig/SmsSendconfigServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yc.ship.module.trade.service.smsSendconfig;
 
 import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
@@ -143,7 +144,7 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
                     if (sendType != null && sendType == 2) {
                         //sendTime 17:30
                         String sendTime = smsSendconfigQueryRespVO.getSendTime();
-                        //1.出行前一天  2.出行当
+                        // 1.出行当天 2.出行前1天 3.出行前2天 4.出行前3天 5.出行前4天 6.出行前5天 7.出行前6天 8.出行前7
                         Integer sendDateType = smsSendconfigQueryRespVO.getSendDateType();
                         if (sendDateType != null && sendDateType == 1) {
                             //2025-01-22 19:00
@@ -191,22 +192,34 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
             mobileList.add(smsSendconfigQueryRespVO.getMobile());
             smsReqDTO.setMobile(mobileList);
             smsReqDTO.setSmsTemplateId(smsSendconfigQueryRespVO.getApiTemplateId());
-            String input = smsSendconfigQueryRespVO.getSmsParms();
-            //【1】产品名称; 【2】订单号; 【3】游玩日期; 【4】联系人;【5】购买数量; 【6】团名称; 【7】旅行社联系人; 【8】联系电话;
-            input = input.replaceAll("【1】", smsSendconfigQueryRespVO.getProductName().substring(0, 10).replace("【", "").replace("】", "").replace("-", ""));
-            input = input.replaceAll("【2】", smsSendconfigQueryRespVO.getOrderNo());
-            input = input.replaceAll("【3】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
-            input = input.replaceAll("【4】", smsSendconfigQueryRespVO.getContactName());
-            input = input.replaceAll("【5】", smsSendconfigQueryRespVO.getNum() + "");
-            input = input.replaceAll("【6】", smsSendconfigQueryRespVO.getSourceName());
-            input = input.replaceAll("【7】", smsSendconfigQueryRespVO.getContactName());
-            input = input.replaceAll("【8】", smsSendconfigQueryRespVO.getMobile());
-            input = input.replaceAll("【9】", smsSendconfigQueryRespVO.getRouteName());
-            input = input.replaceAll("【10】", smsSendconfigQueryRespVO.getShortName());
-            smsReqDTO.setSmsContent(input);
+            String content = smsSendconfigQueryRespVO.getSmsParms();
+
+            //【1】航次名称; 【2】订单号; 【3】游玩日期; 【4】联系人;【5】购买数量;
+            //            【6】团号; 【7】旅行社联系人; 【8】联系电话;【9】航线名称;【10】产品简称;【11】咨询电话;【12】游船;【13】开航时间;
+            //            【14】出发时间;【15】违约金;【16】补缴费;【17】小程序链接;【18】登船时间
+            content = content.replaceAll("【1】", smsSendconfigQueryRespVO.getVoyageName());
+            content = content.replaceAll("【2】", smsSendconfigQueryRespVO.getOrderNo());
+            content = content.replaceAll("【3】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
+            content = content.replaceAll("【12】", smsSendconfigQueryRespVO.getShipName());
+            content = content.replaceAll("【13】", smsSendconfigQueryRespVO.getUseDate().substring(0, 10));
+            content = content.replaceAll("【4】", smsSendconfigQueryRespVO.getContactName());
+            content = content.replaceAll("【5】", smsSendconfigQueryRespVO.getNum() + "");
+            content = content.replaceAll("【6】", smsSendconfigQueryRespVO.getGroupNo());
+            content = content.replaceAll("【7】", smsSendconfigQueryRespVO.getContactName());
+            content = content.replaceAll("【8】", smsSendconfigQueryRespVO.getMobile());
+            content = content.replaceAll("【9】", smsSendconfigQueryRespVO.getRouteName());
+            content = content.replaceAll("【10】", smsSendconfigQueryRespVO.getShortName());
+            content = content.replaceAll("【14】", smsSendconfigQueryRespVO.getLeaveTime().substring(0, 10));
+            content = content.replaceAll("【18】", smsSendconfigQueryRespVO.getLeaveTime().substring(0, 10));
+            DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(smsSendconfigQueryRespVO.getLeaveTime()), -7);
+            DateTime dateTime2 = DateUtil.offsetDay(DateUtil.parse(smsSendconfigQueryRespVO.getLeaveTime()), -1);
+            content = content.replaceAll("【19】", DateUtil.format(dateTime, "yyyy-MM-dd"));
+            content = content.replaceAll("【20】", DateUtil.format(dateTime2, "yyyy-MM-dd"));
+
+            smsReqDTO.setSmsContent(content);
             String result;
             if (StringUtils.isNotBlank(smsSendconfigQueryRespVO.getChannelCode()) && StringUtils.equals("UNICOM", smsSendconfigQueryRespVO.getChannelCode())) {
-                JSONArray parts = JSONUtil.parseArray(input);
+                JSONArray parts = JSONUtil.parseArray(content);
                 JSONArray templates = JSONUtil.parseArray(smsSendconfigQueryRespVO.getTemplateParams());
                 Map<Object, Object> map = new HashMap<>();
                 for (int i = 0; i < templates.size(); i++) {
@@ -214,10 +227,10 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
                     String value = parts.getStr(i);
                     map.put(key, value);
                 }
-                String content = StrUtil.format(smsSendconfigQueryRespVO.getSmsContent(), map);
-                smsSendLogDO.setSmsContent(content);
+                String content2 = StrUtil.format(smsSendconfigQueryRespVO.getSmsContent(), map);
+                smsSendLogDO.setSmsContent(content2);
                 String mobile = smsSendconfigQueryRespVO.getMobile();
-                log.error("[下单成功短信发送参数]:{};手机号:{}", content, mobile);
+                log.error("[下单成功短信发送参数]:{};手机号:{}", content2, mobile);
                 HttpClient httpclient = new HttpClient();
                 PostMethod post = new PostMethod(url);
                 post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "gbk");
@@ -245,7 +258,7 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
                     result = "发送失败" + e.getMessage();
                 }
             } else {
-                smsSendLogDO.setSmsContent(input);
+                smsSendLogDO.setSmsContent(content);
                 result = smsService.sendMsg(smsReqDTO);
             }
             smsSendLogDO.setResult(result);

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/smsSendconfig/SmsSendconfigMapper.xml

@@ -21,7 +21,7 @@
         inner join system_sms_template t6 on t7.sms_template_id = t6.id
         inner join system_sms_channel t8 on t8.id = t6.channel_id
         where t2.use_date = DATE_SUB(CURDATE(), INTERVAL (t7.send_date_type-1) DAY)
-        and t3.voucher_status in (1,2)
+        and t3.voucher_status in (1,2,6)
         and t1.deleted = 0
         and t2.deleted = 0
         and t7.deleted = 0