فهرست منبع

fix 短信通知3天内过期账号用户

zoujiajian 3 سال پیش
والد
کامیت
2a93e33a42

+ 2 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -103,4 +103,6 @@ public interface Constant {
 	String QR_CODE_WX_APP_ID = "qr_code_wx_app_id";
 
 	String CHANGE_GROUPS_TRIPS_ACCOUNT = "您好,您购买的%s,账号已替换,请登陆网站https://nf.video/查看最新账号密码【银河录像局】";
+
+	String ACCOUNT_EXPIRY_MSG_TEMPLATE = "您好,您购买的%s,还有%s到期,请登陆网站https://nf.video/及时续费。【银河录像局】";
 }

+ 46 - 41
netflix-service/src/main/java/com/cyksj/task/Scheduler.java

@@ -1,6 +1,7 @@
 package com.cyksj.task;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.BetweenFormater;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -8,28 +9,25 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.Constant;
-import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.SmsUtil;
+import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.distribute.DistributeWaitingSendPointsMapper;
-import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.mapper.manage.sys.WorkOrderMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.AccountView;
+import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.views.CmsUserVO;
 import com.cyksj.model.views.UserDistributeViews;
-import com.cyksj.model.views.WxAppTemplateView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.mange.CmsAccountService;
 import com.cyksj.service.order.OrderDonService;
 import com.cyksj.service.register.RegisterOrderDonService;
 import com.cyksj.service.register.SpotifyService;
 import com.cyksj.service.relation.GroupRelationClearService;
+import com.cyksj.service.sms.SmsService;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import com.ejlchina.searcher.BeanSearcher;
@@ -98,7 +96,7 @@ public class Scheduler {
 
         private final WorkOrderMapper workOrderMapper;
 
-        private final UserDistributeMapper userDistributeMapper;
+        private final SmsService smsService;
 
         private final CmsUserMapper cmsUserMapper;
 
@@ -120,39 +118,39 @@ public class Scheduler {
     public void expiryWxMsg() throws Exception {
         DateTime now = new DateTime();
         DateTime zero = DateUtil.offset(now, DateField.HOUR, -9);
-        DateTime time = DateUtil.offset(zero, DateField.DAY_OF_MONTH, 5);
-        List<GroupsRelation> groupsRelations = groupsRelationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).le(GroupsRelation::getExpiryTime, time));
-        String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
-        for (GroupsRelation relation : groupsRelations) {
-            User user = userMapper.selectById(relation.getUserId());
-            if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
-                String openId = user.getOpenId();
-                WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(openId, TemplateEnum.EXPIRY_TEMPLATE.getDesc());
-                if (wxAppTemplateView != null) {
-                    WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-                            .setToUser(openId)
-                            .setTemplateId(wxAppTemplateView.getTemplateId())
-                            .setUrl(url);
-
-                    /**
-                     * 您的账号即将到期
-                     * 账号名称:Netflix账号
-                     * 平台:Netflix
-                     * 失效日期:5天后
-                     * 异常原因:账号即将到期
-                     * 请尽快续费,以免影响使用
-                     */
-                    GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
-                    GoodsDonSku donSku = skuMapper.selectById(groupsTrips.getSkuId());
-                    GoodsDon goodsDon = donMapper.selectById(donSku.getGoodsId());
-                    WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-                    data.setFirst(new WxMpTemplateData("您的账号即将到期"));
-                    data.setKeyword1(new WxMpTemplateData(goodsDon.getTitle()));
-                    data.setKeyword2(new WxMpTemplateData(DateUtil.format(relation.getExpiryTime(), "yyyy-MM-dd HH:mm:ss")));
-                    data.setRemark(new WxMpTemplateData("请尽快续费,以免影响使用"));
-                    log.info("发送账号即将到期消息至用户:{}", user.getId());
-                    weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
-            }
+        DateTime time = DateUtil.offset(zero, DateField.DAY_OF_MONTH, 3);
+	    List<GroupsRelationView> groupsRelations = beanSearcher.searchAll(GroupsRelationView.class, MapUtils.builder().field(GroupsRelationView::getExpiryTime, time).op(Operator.LessEqual).build());
+        //String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
+        for (GroupsRelationView relation : groupsRelations) {
+//            User user = userMapper.selectById(relation.getUserId());
+//            if (user != null && StrUtil.isNotBlank(user.getOpenId())) {
+//                String openId = user.getOpenId();
+//                WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(openId, TemplateEnum.EXPIRY_TEMPLATE.getDesc());
+//                if (wxAppTemplateView != null) {
+//                    WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+//                            .setToUser(openId)
+//                            .setTemplateId(wxAppTemplateView.getTemplateId())
+//                            .setUrl(url);
+//
+//                    /**
+//                     * 您的账号即将到期
+//                     * 账号名称:Netflix账号
+//                     * 平台:Netflix
+//                     * 失效日期:3天后
+//                     * 异常原因:账号即将到期
+//                     * 请尽快续费,以免影响使用
+//                     */
+//                    GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
+//                    GoodsDonSku donSku = skuMapper.selectById(groupsTrips.getSkuId());
+//                    GoodsDon goodsDon = donMapper.selectById(donSku.getGoodsId());
+//                    WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+//                    data.setFirst(new WxMpTemplateData("您的账号即将到期"));
+//                    data.setKeyword1(new WxMpTemplateData(goodsDon.getTitle()));
+//                    data.setKeyword2(new WxMpTemplateData(DateUtil.format(relation.getExpiryTime(), "yyyy-MM-dd HH:mm:ss")));
+//                    data.setRemark(new WxMpTemplateData("请尽快续费,以免影响使用"));
+//                    log.info("发送账号即将到期消息至用户:{}", user.getId());
+//                    weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+//            }
 
 //                List<Account> accounts = accountMapper.selectList(Wrappers.lambdaQuery(Account.class).le(Account::getExpiryTime, time));
 //                List<CustomerService> customerServices = customerServiceMapper.selectList(null);
@@ -174,7 +172,14 @@ public class Scheduler {
 //                        weChatService.sendTemplateMessage(weChatService.getAccessToken(),Jsons.toJson(manageMessage));
 //                    }
 //                }
-            }
+//            }
+	        //短信通知过期账号 用户
+	        try {
+		        String day = DateUtil.formatBetween(zero, relation.getExpiryTime(), BetweenFormater.Level.DAY);
+		        smsService.sendSmsToRelationUser(relation.getUserId(), String.format(Constant.ACCOUNT_EXPIRY_MSG_TEMPLATE, relation.getTitle(), day));
+	        } catch (Exception e) {
+		        log.error("过期账号用户:{}发送短信错误:{}", relation.getUserId(), StringUtil.getErrorText(e));
+	        }
         }