Prechádzať zdrojové kódy

短信通知定时器

caotao 1 týždeň pred
rodič
commit
8c9a82dd3d

+ 4 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -249,4 +249,8 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
      * @return
      */
     List<Long> selectCanBuyInsuranceOrder();
+
+    List<Map<String, Object>> queryOrderLink(@Param("day") int day,@Param("direction")int direction);
+
+    List<Map<String, Object>> queryOrderJzPhone(@Param("day") int day,@Param("direction")int direction);
 }

+ 31 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderDownSmsOneJob.java

@@ -0,0 +1,31 @@
+package com.yc.ship.module.trade.job;
+
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.framework.tenant.core.job.TenantJob;
+import com.yc.ship.module.trade.service.smsSendconfig.SmsSendconfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class OrderDownSmsOneJob  implements JobHandler {
+    @Resource
+    private SmsSendconfigService smsSendconfigService;
+
+    @Override
+    @TenantIgnore
+    public String execute(String s){
+        log.info(">>>>>>>>>>>>>>>>>>>>>> OrderDownSmsOneJob Begin <<<<<<<<<<<<<<<<<<<<<<");
+        try {
+            smsSendconfigService.upSmsSendMsg(2,"SMS_505150033",1);
+        } catch (Exception e) {
+            log.error(">>>>>>>>>>>>>>>>>>>>>> OrderDownSmsOneJob Error <<<<<<<<<<<<<<<<<<<<<<");
+            log.error(e.getMessage(), e);
+        }
+        log.info(">>>>>>>>>>>>>>>>>>>>>>  OrderDownSmsOneJob End  <<<<<<<<<<<<<<<<<<<<<<");
+        return "成功";
+    }
+}

+ 31 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderDownSmsSevenJob.java

@@ -0,0 +1,31 @@
+package com.yc.ship.module.trade.job;
+
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.framework.tenant.core.job.TenantJob;
+import com.yc.ship.module.trade.service.smsSendconfig.SmsSendconfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class OrderDownSmsSevenJob  implements JobHandler {
+    @Resource
+    private SmsSendconfigService smsSendconfigService;
+
+    @Override
+    @TenantIgnore
+    public String execute(String s){
+        log.info(">>>>>>>>>>>>>>>>>>>>>> OrderDownSmsSevenJob Begin <<<<<<<<<<<<<<<<<<<<<<");
+        try {
+            smsSendconfigService.upSmsSendMsg(2,"SMS_504885367",7);
+        } catch (Exception e) {
+            log.error(">>>>>>>>>>>>>>>>>>>>>> OrderDownSmsSevenJob Error <<<<<<<<<<<<<<<<<<<<<<");
+            log.error(e.getMessage(), e);
+        }
+        log.info(">>>>>>>>>>>>>>>>>>>>>>  OrderDownSmsSevenJob End  <<<<<<<<<<<<<<<<<<<<<<");
+        return "成功";
+    }
+}

+ 35 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderUpSmsOneJob.java

@@ -0,0 +1,35 @@
+package com.yc.ship.module.trade.job;
+
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.framework.tenant.core.job.TenantJob;
+import com.yc.ship.module.trade.service.smsSendconfig.SmsSendconfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 上水开航前1天短信通知
+ */
+@Component
+@Slf4j
+public class OrderUpSmsOneJob implements JobHandler {
+    @Resource
+    private SmsSendconfigService smsSendconfigService;
+
+    @Override
+    @TenantIgnore
+    public String execute(String s){
+        log.info(">>>>>>>>>>>>>>>>>>>>>> OrderUpSmsOneJob Begin <<<<<<<<<<<<<<<<<<<<<<");
+        try {
+            smsSendconfigService.upSmsSendMsg(1,"SMS_505090361",1);
+        } catch (Exception e) {
+            log.error(">>>>>>>>>>>>>>>>>>>>>> OrderUpSmsOneJob Error <<<<<<<<<<<<<<<<<<<<<<");
+            log.error(e.getMessage(), e);
+        }
+        log.info(">>>>>>>>>>>>>>>>>>>>>>  OrderUpSmsOneJob End  <<<<<<<<<<<<<<<<<<<<<<");
+        return "成功";
+    }
+}

+ 31 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/job/OrderUpSmsSevenJob.java

@@ -0,0 +1,31 @@
+package com.yc.ship.module.trade.job;
+
+import com.yc.ship.framework.quartz.core.handler.JobHandler;
+import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
+import com.yc.ship.framework.tenant.core.job.TenantJob;
+import com.yc.ship.module.trade.service.smsSendconfig.SmsSendconfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class OrderUpSmsSevenJob implements JobHandler {
+    @Resource
+    private SmsSendconfigService smsSendconfigService;
+
+    @Override
+    @TenantIgnore
+    public String execute(String s){
+        log.info(">>>>>>>>>>>>>>>>>>>>>> OrderUpSmsSevenJob Begin <<<<<<<<<<<<<<<<<<<<<<");
+        try {
+            smsSendconfigService.upSmsSendMsg(1,"SMS_504955351",7);
+        } catch (Exception e) {
+            log.error(">>>>>>>>>>>>>>>>>>>>>> OrderUpSmsSevenJob Error <<<<<<<<<<<<<<<<<<<<<<");
+            log.error(e.getMessage(), e);
+        }
+        log.info(">>>>>>>>>>>>>>>>>>>>>>  OrderUpSmsSevenJob End  <<<<<<<<<<<<<<<<<<<<<<");
+        return "成功";
+    }
+}

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/smsSendconfig/SmsSendconfigService.java

@@ -57,4 +57,6 @@ public interface SmsSendconfigService {
     PageResult<SmsSendconfigDO> getSmsSendconfigPage(SmsSendconfigPageReqVO pageReqVO);
 
     PageResult<SmsSendconfigQueryRespVO> querySendLogList(SmsSendconfigPageReqVO pageReqVO);
+
+    void upSmsSendMsg(int type, String code, int day);
 }

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

@@ -1,5 +1,6 @@
 package com.yc.ship.module.trade.service.smsSendconfig;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -11,6 +12,11 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.mybatis.core.util.MyBatisUtils;
+import com.yc.ship.module.system.dal.dataobject.dict.DictDataDO;
+import com.yc.ship.module.system.dal.dataobject.sms.SmsTemplateDO;
+import com.yc.ship.module.system.dal.mysql.dict.DictDataMapper;
+import com.yc.ship.module.system.dal.mysql.sms.SmsTemplateMapper;
+import com.yc.ship.module.system.service.sms.SmsSendService;
 import com.yc.ship.module.trade.api.sms.dto.SmsReqDTO;
 import com.yc.ship.module.trade.controller.admin.smsSendconfig.vo.SmsSendconfigPageReqVO;
 import com.yc.ship.module.trade.controller.admin.smsSendconfig.vo.SmsSendconfigQueryRespVO;
@@ -18,6 +24,7 @@ import com.yc.ship.module.trade.controller.admin.smsSendconfig.vo.SmsSendconfigS
 import com.yc.ship.module.trade.dal.dataobject.smsProduct.SmsProductDO;
 import com.yc.ship.module.trade.dal.dataobject.smsSendLog.SmsSendLogDO;
 import com.yc.ship.module.trade.dal.dataobject.smsSendconfig.SmsSendconfigDO;
+import com.yc.ship.module.trade.dal.mysql.order.TradeOrderMapper;
 import com.yc.ship.module.trade.dal.mysql.smsProduct.SmsProductMapper;
 import com.yc.ship.module.trade.dal.mysql.smsSendLog.SmsSendLogMapper;
 import com.yc.ship.module.trade.dal.mysql.smsSendconfig.SmsSendconfigMapper;
@@ -59,9 +66,20 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
     @Resource
     private SmsServiceImpl smsService;
 
+    @Resource
+    private SmsSendService smsSendService;
+
     @Resource
     private SmsSendLogMapper smsSendLogMapper;
 
+    @Resource
+    private TradeOrderMapper tradeOrderMapper;
+
+    @Resource
+    private SmsTemplateMapper smsTemplateMapper;
+    @Resource
+    private DictDataMapper dictDataMapper;
+
     @Override
     public Long createSmsSendconfig(SmsSendconfigSaveReqVO createReqVO) {
         // 插入
@@ -285,4 +303,77 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
         return new PageResult<>(page.getRecords(), page.getTotal());
     }
 
+    /**
+     * @param type 1 上水 2 下水
+     * @param code
+     * @param day 天数
+     */
+    @Override
+    @Async
+    public void upSmsSendMsg(int type, String code, int day) {
+        // 查询订单联系人
+        List<Map<String,Object>> linkList = tradeOrderMapper.queryOrderLink(day,type);
+        // 查询接站登记人
+        List<Map<String,Object>> jzPhoneList = tradeOrderMapper.queryOrderJzPhone(day,type);
+        // 查询短信配置
+        SmsTemplateDO smsTemplateDO = smsTemplateMapper.selectByCode(code);
+        // 合并两个列表并去重
+        Set<String> phoneSet = new HashSet<>();
+        Map<String, Map<String, Object>> phoneDataMap = new HashMap<>();
+
+        if (linkList != null) {
+            for (Map<String, Object> map : linkList) {
+                String phone = (String) map.get("link_mobile");
+                if (phone != null && !phone.isEmpty()) {
+                    phoneSet.add(phone);
+                }
+            }
+        }
+        if (jzPhoneList != null) {
+            for (Map<String, Object> map : jzPhoneList) {
+                String phone = (String) map.get("phone");
+                if (phone != null && !phone.isEmpty()) {
+                    phoneSet.add(phone);
+                    if (!phoneDataMap.containsKey(phone)) {
+                        phoneDataMap.put(phone, map);
+                    }
+                }
+            }
+        }
+        List<String> phoneList = new ArrayList<>(phoneSet);
+        List<String> params = smsTemplateDO.getParams();// ["【pick】","【time】"]
+        Map<String, Object> templateParams = new HashMap<>();
+        if(type == 1){
+            // 上水
+            // 获取上水抵达三峡游客中心 查询数据字典
+            List<DictDataDO> arriveDataLis = dictDataMapper.selectListByStatusAndDictType(0, "up_arrive");
+            if(day == -1){
+                // 获取上水登船时间 查询数据字典
+                List<DictDataDO> dictDataList = dictDataMapper.selectListByStatusAndDictType(0, "up_board");
+                templateParams.put(params.get(0), dictDataList.get(0).getLabel());
+                templateParams.put(params.get(1), arriveDataLis.get(0).getLabel());
+            }else{
+                templateParams.put(params.get(0), DateUtil.format(DateUtil.offsetDay(new Date(), day), "yyyy年MM月dd日"));
+                templateParams.put(params.get(1), arriveDataLis.get(0).getLabel());
+            }
+        }else{
+            // 下水
+            if(day == -1){
+                // 获取下水登船时间 查询数据字典
+                List<DictDataDO> dictDataList = dictDataMapper.selectListByStatusAndDictType(0, "down_board");
+                templateParams.put(params.get(0), dictDataList.get(0).getLabel());
+            }else{
+                templateParams.put(params.get(0), DateUtil.format(DateUtil.offsetDay(new Date(), day), "yyyy年MM月dd日"));
+            }
+        }
+        if(CollectionUtil.isNotEmpty(phoneList)){
+            for(String phone : phoneList){
+//                log.info("【短信发送】:phone:{}", phone);
+//                log.info("【短信发送】:templateParams:{}", templateParams);
+                smsSendService.sendSingleSmsToAdmin(phone, null, smsTemplateDO.getId(), templateParams);
+            }
+//            smsSendService.sendSingleSmsToAdmin("18071246889", null, smsTemplateDO.getId(), templateParams);
+        }
+    }
+
 }

+ 19 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -2576,5 +2576,24 @@
           and (is_insure is null)
           and travel_date BETWEEN now() and CONCAT(DATE_ADD(CURDATE(),INTERVAL 2 DAY), ' 23:59:59')
     </select>
+
+
+    <select id="queryOrderLink" resultType="java.util.Map">
+        select distinct td.link_mobile from trade_order td
+                                                LEFT JOIN product_voyage pv ON td.voyage_id = pv.id
+                                                LEFT JOIN resource_route rr ON pv.route_id = rr.id
+        where DATE_FORMAT(td.travel_date, '%Y-%m-%d') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL (-#{day}) DAY), '%Y-%m-%d')
+          and td.deleted='0' and td.link_mobile is not null and td.order_status >0 and rr.direction = #{direction};
+    </select>
+
+    <select id="queryOrderJzPhone" resultType="java.util.Map">
+        select distinct tzd.phone from trade_order td
+                                           left join trade_order_jz tz on tz.order_id = td.id
+                                           left join trade_order_jz_detail tzd on tzd.jz_id = tz.id and tzd.deleted='0'
+                                           LEFT JOIN product_voyage pv ON td.voyage_id = pv.id
+                                           LEFT JOIN resource_route rr ON pv.route_id = rr.id
+        where DATE_FORMAT(td.travel_date, '%Y-%m-%d') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL (-#{day}) DAY), '%Y-%m-%d')
+          and td.deleted='0' and tzd.phone is not null and td.order_status >0 and rr.direction = #{direction};
+    </select>
 </mapper>