zoujiajian 3 лет назад
Родитель
Сommit
dc5cd797c9

+ 17 - 13
netflix-common/src/main/java/com/cyksj/common/constant/TemplateEnum.java

@@ -12,20 +12,24 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum TemplateEnum {
-	//	ORDER_TRANSPORT_ENV_TEMPLATE("发货通知测试环境模板", "eQ8IXwudD5yJ6HPgyqTq9O9IZBb5Qvd1_BjoztmsbvA", " "),
-	ORDER_TRANSPORT_PRD_TEMPLATE("发货通知正式环境模板", "IfQ4Z9b_rTBjfwywYtJVj9-dWmQUpQ8V4PXO9cnCFYo", " "),
-	//	NEW_ORDER_ENV_TEMPLATE("新订单通知正式测试模板", "ArKvAzb193viawglfkiaNv7RgOZFP4Zq3EqrwRWlbPg", " "),
-	NEW_ORDER_PRD_TEMPLATE("新订单通知正式环境模板", "ArKvAzb193viawglfkiaNv7RgOZFP4Zq3EqrwRWlbPg", " "),
-	//	EMPTY_ENV_TEMPLATE("空车位通知测试环境模板", "ArZr9oCJYelqCfn0pU7RQqRbRIWuyRNaU7N_Oo6p2vM", " "),
-	EMPTY_PRD_TEMPLATE("正式环境空车位通知模板", "ArKvAzb193viawglfkiaNv7RgOZFP4Zq3EqrwRWlbPg", " "),
-	//	SPOTIFY_ENV_TEMPLATE("Spotify注册测试环境模板", "gsGFRefPlGKfvNoqB5Vd43ZOsmCsZNsH4UDWefWG0sg", " "),
-	SPOTIFY_PRD_TEMPLATE("Spotify注册正式环境模板", "PswFyVYMurzJbdV8weJW2kuSAGpS_fnAKJQR7qMNlQI", " "),
-	PLAT_ACCOUNT_UPDATE_PRD_TEMPLATE("账号修改密码正式环境通知模板", "krTse4JDgR-upgx3JiB7XNOqpTEFhwLnA-yD1u-BZlw", " "),
-	SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_PRD_TEMPLATE("Spotify账号解除限制成功正式环境模板", "o51fvp6AriFaIzlweupK2qjR5afsnKy2JabKocX5wHU", " "),
-	WX_GZH_QR_CODE_LOGIN("微信公众号扫码登录正式环境模板", "t4YTQcMwjT9VYlPUGXxJuWSpXvVyqyq_8-xKBhuFBC8", "")
+	ORDER_TRANSPORT_TEMPLATE("发货通知模板"),
+
+	NEW_ORDER_TEMPLATE("新订单通知模板"),
+
+	EMPTY_TEMPLATE("空车位通知模板"),
+
+	SPOTIFY_TEMPLATE("Spotify注册通知模板"),
+
+	PLAT_ACCOUNT_UPDATE_TEMPLATE("账号修改密码通知模板"),
+
+	SPOTIFY_ACCOUNT_EXPIRED_PRD_TEMPLATE("Spotify账号到期通知模板"),
+
+	SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_TEMPLATE("Spotify账号解除限制成功模板"),
+
+	EXPIRY_TEMPLATE("用户平台账号过期通知模板"),
+
+	WX_GZH_QR_CODE_LOGIN("微信公众号扫码登录模板")
 
 	;
 	private String desc;
-	private String templateId;
-	private String url;
 }

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/gzh/GzhMsgTemplateRelationMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.gzh;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.GzhMsgTemplateRelation;
+
+/*
+ *项目名: netflix
+ *文件名: GzhMsgTemplateRelationMapper
+ *创建者: JavaZou
+ *创建时间:2023/1/16 12:27
+ */
+public interface GzhMsgTemplateRelationMapper extends BaseMapper<GzhMsgTemplateRelation> {
+}

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GzhMsgTemplateRelation.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: GzhMsgTemplateRelation
+ *创建者: JavaZou
+ *创建时间:2023/1/16 12:26
+ */
+@Getter
+@Setter
+public class GzhMsgTemplateRelation extends BaseEntity{
+	private Long wxAppId;
+
+	private String templateId;
+
+	private String url;
+
+	private String remark;
+
+	/**
+	 * 测试/线上(dev\prd)
+	 */
+	private String type;
+}

+ 38 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/WxAppTemplateView.java

@@ -0,0 +1,38 @@
+package com.cyksj.model.entity;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: WxAppTemplateView
+ *创建者: JavaZou
+ *创建时间:2023/1/16 13:39
+ */
+@Getter
+@Setter
+@SearchBean(tables = "gzh_msg_template_relation gtr left join wx_app wa on wa.id = gtr.wx_app_id")
+public class WxAppTemplateView {
+	@DbField("gtr.id")
+	private Long id;
+
+	@DbField("gtr.wx_app_id")
+	private Long wxAppId;
+
+	@DbField("gtr.template_id")
+	private String templateId;
+
+	@DbField("gtr.type")
+	private String type;
+
+	@DbField("gtr.remark")
+	private String remark;
+
+	/**
+	 * 公众号appid
+	 */
+	@DbField("wa.appid")
+	private String appId;
+}

+ 2 - 0
netflix-service/src/main/java/com/cyksj/common/EnvCommonService.java

@@ -18,6 +18,8 @@ public class EnvCommonService {
 
 	public static final String active = "dev";
 
+	public static final String active_prd = "prd";
+
 	@Value(value = "${spring.profiles.active}")
 	private String env;
 

+ 21 - 14
netflix-service/src/main/java/com/cyksj/service/mange/account/CmsAccountServiceImpl.java

@@ -14,10 +14,12 @@ import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.entity.Account;
 import com.cyksj.model.entity.OrderDon;
 import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.WxAppTemplateView;
 import com.cyksj.model.excel.ExcelAccountData;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.views.ExpiredAccountDataView;
 import com.cyksj.service.mange.CmsAccountService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
@@ -47,6 +49,8 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 
 	private final UserMapper userMapper;
 
+	private final TemplateCommonService templateCommonService;
+
 	@Override
 	public IPage<ExpiredAccountDataView> getExpiredAccountView(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startTime, String endTime, String now, Long offset, Long limit) {
 		return accountMapper.getExpiredAccountView(isCorpWx, customerService, goodsId, account, renewStatus, handleStatus, cnAccount, usAccount, userId, startTime, endTime, now, new Page<>(offset, limit));
@@ -66,20 +70,23 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 		String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
 		log.info("开始发送账号修改密码模板消息,大小:{}", relations.size());
 		for (GroupsRelationView relation : relations) {
-			TemplateEnum templateEnum = TemplateEnum.PLAT_ACCOUNT_UPDATE_PRD_TEMPLATE;
-			User user = userMapper.selectById(relation.getUserId());
-			if (user != null) {
-				WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-						.setToUser(user.getOpenId())
-						.setTemplateId(templateEnum.getTemplateId())
-						.setUrl(url);
-				WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-				data.setFirst(new WxMpTemplateData(String.format("%s账号密码更改提醒", relation.getTitle())));
-				data.setKeyword1(new WxMpTemplateData(relation.getTripsAccount()));
-				data.setKeyword2(new WxMpTemplateData(DateTime.now().toString("YYYY-MM-mm HH:mm:ss")));
-				data.setRemark(new WxMpTemplateData("您的账号密码已经更新,请到我的车票查看,长期用户请选择拼车/年付。\n" +
-						"如您不是在公众号购买,请在浏览器登录查看我的车票"));
-				weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
+			Long userId = relation.getUserId();
+			WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.PLAT_ACCOUNT_UPDATE_TEMPLATE.getDesc());
+			if (wxAppTemplateView != null) {
+				User user = userMapper.selectById(relation.getUserId());
+				if (user != null) {
+					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+							.setToUser(user.getOpenId())
+							.setTemplateId(wxAppTemplateView.getTemplateId())
+							.setUrl(url);
+					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+					data.setFirst(new WxMpTemplateData(String.format("%s账号密码更改提醒", relation.getTitle())));
+					data.setKeyword1(new WxMpTemplateData(relation.getTripsAccount()));
+					data.setKeyword2(new WxMpTemplateData(DateTime.now().toString("YYYY-MM-mm HH:mm:ss")));
+					data.setRemark(new WxMpTemplateData("您的账号密码已经更新,请到我的车票查看,长期用户请选择拼车/年付。\n" +
+							"如您不是在公众号购买,请在浏览器登录查看我的车票"));
+					weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+				}
 			}
 		}
 	}

+ 29 - 34
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -2,14 +2,12 @@ package com.cyksj.service.mange.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.TemplateEnum;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
-import com.cyksj.mapper.stock.OrderDonStockMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.entity.*;
@@ -17,6 +15,7 @@ import com.cyksj.model.excel.ExcelOrderDonInfo;
 import com.cyksj.model.manage.request.ReqSetLogisticsPost;
 import com.cyksj.service.mange.CmsOrderDonService;
 import com.cyksj.service.mange.stock.GoodsDonStockService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -41,18 +40,16 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final UserMapper userMapper;
 
-    private final EnvCommonService envCommonService;
-
     private final GoodsDonMapper goodsDonMapper;
 
     private final WeChatService weChatService;
 
     private final GoodsSkuStockRelateMapper skuStockRelateMapper;
 
-    private final OrderDonStockMapper orderDonStockMapper;
-
     private final GoodsDonStockService goodsDonStockService;
 
+    private final TemplateCommonService templateCommonService;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -108,36 +105,34 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
 
     private void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost) throws Exception {
-        TemplateEnum templateEnum = null;
-        if (EnvCommonService.active.equals(envCommonService.getEnv())) {
-            return;
-        }else {
-            templateEnum = TemplateEnum.ORDER_TRANSPORT_PRD_TEMPLATE;
-        }
-        String openId = orderDon.getOpenId();
-        if (openId == null) {
-            User u  = userMapper.selectById(orderDon.getUserId());
-            if (u == null) {
-                throw BusinessRuntimeException.getInstance("用户不存在");
+        Long userId = orderDon.getUserId();
+        WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.ORDER_TRANSPORT_TEMPLATE.getDesc());
+        if (wxAppTemplateView != null) {
+            String openId = orderDon.getOpenId();
+            if (openId == null) {
+                User u = userMapper.selectById(orderDon.getUserId());
+                if (u == null) {
+                    throw BusinessRuntimeException.getInstance("用户不存在");
+                }
+                openId = u.getOpenId();
             }
-            openId = u.getOpenId();
+            WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+                    .setToUser(openId)
+                    .setTemplateId(wxAppTemplateView.getTemplateId())
+                    //TODO
+                    .setUrl(" ");
+            GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
+            OrderDonTransport transport = transportMapper.selectOne(Wrappers.lambdaQuery(OrderDonTransport.class).eq(OrderDonTransport::getOrderId, reqSetLogisticsPost.getOrderId()).last("limit 1"));
+            WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+            data.setFirst(new WxMpTemplateData("订单发货通知"));
+            data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
+            data.setKeyword2(new WxMpTemplateData(goodsDon.getTitle()));
+            data.setKeyword3(new WxMpTemplateData(reqSetLogisticsPost.getCodeCn()));
+            data.setKeyword4(new WxMpTemplateData(reqSetLogisticsPost.getTrackingNumber()));
+            data.setKeyword5(new WxMpTemplateData(String.format("%s%s%s%s", transport.getProvince(), transport.getCity(), transport.getDistrict(), transport.getAddress())));
+            data.setRemark(new WxMpTemplateData("可复制运单编号查询物流信息"));
+            weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
         }
-        WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-                .setToUser(openId)
-                .setTemplateId(templateEnum.getTemplateId())
-                //TODO
-                .setUrl(" ");
-        GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
-        OrderDonTransport transport = transportMapper.selectOne(Wrappers.lambdaQuery(OrderDonTransport.class).eq(OrderDonTransport::getOrderId, reqSetLogisticsPost.getOrderId()).last("limit 1"));
-        WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-        data.setFirst(new WxMpTemplateData("订单发货通知"));
-        data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
-        data.setKeyword2(new WxMpTemplateData(goodsDon.getTitle()));
-        data.setKeyword3(new WxMpTemplateData(reqSetLogisticsPost.getCodeCn()));
-        data.setKeyword4(new WxMpTemplateData(reqSetLogisticsPost.getTrackingNumber()));
-        data.setKeyword5(new WxMpTemplateData(String.format("%s%s%s%s", transport.getProvince(), transport.getCity(), transport.getDistrict(), transport.getAddress())));
-        data.setRemark(new WxMpTemplateData("可复制运单编号查询物流信息"));
-        weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
     }
 
 }

+ 20 - 12
netflix-service/src/main/java/com/cyksj/service/mange/impl/SpotifySendMsgServiceImpl.java

@@ -10,7 +10,9 @@ import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.entity.SpotifyUnLimitRecord;
 import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.WxAppTemplateView;
 import com.cyksj.service.mange.SpotifySendMsgService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -38,6 +40,8 @@ public class SpotifySendMsgServiceImpl implements SpotifySendMsgService {
 
 	private static String spotifyUnLimitSuccessUrl;
 
+	private final TemplateCommonService templateCommonService;
+
 	@PostConstruct
 	public void init() {
 		String host = envCommonService.getHost();
@@ -53,18 +57,22 @@ public class SpotifySendMsgServiceImpl implements SpotifySendMsgService {
 			if (unLimitRecord != null && !unLimitRecord.getIsSend()) {
 				User user = userMapper.selectById(unLimitRecord.getUserId());
 				if (user != null) {
-					WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-							.setToUser(user.getOpenId())
-							.setTemplateId(TemplateEnum.SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_PRD_TEMPLATE.getTemplateId())
-							.setUrl(spotifyUnLimitSuccessUrl);
-					WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-					data.setFirst(new WxMpTemplateData("您的Spotify账号登录限制解除成功"));
-					data.setKeyword1(new WxMpTemplateData(user.getNickname()));
-					data.setKeyword2(new WxMpTemplateData(DateUtil.format(unLimitRecord.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")));
-					data.setRemark(new WxMpTemplateData("建议您购买Spotify年付会员,无需每过14天解除限制,点击了解"));
-					weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
-					unLimitRecord.setIsSend(true);
-					spotifyUnLimitRecordMapper.updateById(unLimitRecord);
+					Long userId = user.getId();
+					WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.SPOTIFY_ACCOUNT_UN_LIMIT_SUCCESS_TEMPLATE.getDesc());
+					if (wxAppTemplateView != null) {
+						WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+								.setToUser(user.getOpenId())
+								.setTemplateId(wxAppTemplateView.getTemplateId())
+								.setUrl(spotifyUnLimitSuccessUrl);
+						WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+						data.setFirst(new WxMpTemplateData("您的Spotify账号登录限制解除成功"));
+						data.setKeyword1(new WxMpTemplateData(user.getNickname()));
+						data.setKeyword2(new WxMpTemplateData(DateUtil.format(unLimitRecord.getUpdateTime(), "yyyy-MM-dd HH:mm:ss")));
+						data.setRemark(new WxMpTemplateData("建议您购买Spotify年付会员,无需每过14天解除限制,点击了解"));
+						weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+						unLimitRecord.setIsSend(true);
+						spotifyUnLimitRecordMapper.updateById(unLimitRecord);
+					}
 				}
 			}
 		}

+ 21 - 23
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -538,29 +538,27 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	}
 
 	private void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception {
-		TemplateEnum templateEnum = null;
-		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
-			return;
-		} else {
-			templateEnum = TemplateEnum.EMPTY_PRD_TEMPLATE;
-		}
-		User u = userMapper.selectById(orderDon.getUserId());
-		WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-				.setToUser(toPeople)
-				.setTemplateId(templateEnum.getTemplateId())
-				//TODO
-				.setUrl(" ");
-		GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
-		GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
-		WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-		data.setFirst(new WxMpTemplateData("空车位通知!"));
-		data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
-		data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), goodsDonSku.getSpecVal())));
-		data.setKeyword3(new WxMpTemplateData((u == null ? " " : u.getNickname())));
-		data.setKeyword4(new WxMpTemplateData(orderDon.getMoney().divide(BigDecimal.valueOf(100)).toString()));
-		data.setKeyword5(new WxMpTemplateData(DateUtil.format(orderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
-		data.setRemark(new WxMpTemplateData("请尽快关联账号信息"));
-		weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
+		Long userId = orderDon.getUserId();
+		WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.EMPTY_TEMPLATE.getDesc());
+		if (wxAppTemplateView != null) {
+			User u = userMapper.selectById(orderDon.getUserId());
+			WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+					.setToUser(toPeople)
+					.setTemplateId(wxAppTemplateView.getTemplateId())
+					//TODO
+					.setUrl(" ");
+			GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
+			GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
+			WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+			data.setFirst(new WxMpTemplateData("空车位通知!"));
+			data.setKeyword1(new WxMpTemplateData(orderDon.getOrderNo()));
+			data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), goodsDonSku.getSpecVal())));
+			data.setKeyword3(new WxMpTemplateData((u == null ? " " : u.getNickname())));
+			data.setKeyword4(new WxMpTemplateData(orderDon.getMoney().divide(BigDecimal.valueOf(100)).toString()));
+			data.setKeyword5(new WxMpTemplateData(DateUtil.format(orderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
+			data.setRemark(new WxMpTemplateData("请尽快关联账号信息"));
+			weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+		}
 	}
 
 	@Override

+ 16 - 18
netflix-service/src/main/java/com/cyksj/service/register/impl/SpotifyServiceImpl.java

@@ -20,16 +20,14 @@ import com.cyksj.mapper.RegisterOrderDonMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.Coupon;
-import com.cyksj.model.entity.CouponUser;
-import com.cyksj.model.entity.RegisterOrderDon;
-import com.cyksj.model.entity.SysConfig;
+import com.cyksj.model.entity.*;
 import com.cyksj.model.request.SpotifyRegisterReq;
 import com.cyksj.model.response.ProxyInfo;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.register.SpotifyService;
 import com.cyksj.service.sys.SysConfigService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -70,6 +68,8 @@ public class SpotifyServiceImpl implements SpotifyService {
 
     private final SysConfigService sysConfigService;
 
+    private final TemplateCommonService templateCommonService;
+
     private static final List<String> User_Agent_LIST =  List.of(
             "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
             "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
@@ -311,21 +311,19 @@ public class SpotifyServiceImpl implements SpotifyService {
     }
 
     private void spotifyTemplateMsg(RegisterOrderDon registerOrderDon, String url, Boolean isSuccess) throws Exception {
-        TemplateEnum templateEnum = null;
-        if (EnvCommonService.active.equals(envCommonService.getEnv())) {
-            return;
-        }else {
-            templateEnum = TemplateEnum.SPOTIFY_PRD_TEMPLATE;
+        Long userId = registerOrderDon.getUserId();
+        WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.SPOTIFY_TEMPLATE.getDesc());
+        if (wxAppTemplateView != null) {
+            WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+                    .setToUser(registerOrderDon.getOpenId())
+                    .setTemplateId(wxAppTemplateView.getTemplateId())
+                    .setUrl(url);
+            WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+            data.setFirst(new WxMpTemplateData(isSuccess ? "Spotify账号已注册成功" : "Spotify账号注册失败,请修改后重新提交"));
+            data.setKeyword1(new WxMpTemplateData(registerOrderDon.getPhone()));
+            data.setKeyword2(new WxMpTemplateData(DateUtil.format(registerOrderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
+            weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
         }
-        WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-                .setToUser(registerOrderDon.getOpenId())
-                .setTemplateId(templateEnum.getTemplateId())
-                .setUrl(url);
-        WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-        data.setFirst(new WxMpTemplateData(isSuccess ? "Spotify账号已注册成功" : "Spotify账号注册失败,请修改后重新提交"));
-        data.setKeyword1(new WxMpTemplateData(registerOrderDon.getPhone()));
-        data.setKeyword2(new WxMpTemplateData(DateUtil.format(registerOrderDon.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
-        weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
     }
 
 }

+ 6 - 4
netflix-service/src/main/java/com/cyksj/service/template/TemplateCommonService.java

@@ -1,9 +1,6 @@
 package com.cyksj.service.template;
 
-import com.cyksj.model.entity.GoodsDon;
-import com.cyksj.model.entity.GoodsDonSku;
-import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.*;
 
 /*
  *项目名: netflix
@@ -21,4 +18,9 @@ public interface TemplateCommonService {
 	 * 公众号扫描登录成功模板消息
 	 */
 	void sendWxGzhQrCodeSuccessMsg(User user) throws Exception;
+
+	/**
+	 * 获取发送模板消息的公众号
+	 */
+	WxAppTemplateView getWxAppByUserId(Long userId, String templateMark);
 }

+ 54 - 25
netflix-service/src/main/java/com/cyksj/service/template/impl/TemplateCommonServiceImpl.java

@@ -2,17 +2,20 @@ package com.cyksj.service.template.impl;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.TemplateEnum;
 import com.cyksj.common.util.Jsons;
+import com.cyksj.config.WeChatConfig;
+import com.cyksj.mapper.gzh.UserGzhRelationMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.GoodsDon;
-import com.cyksj.model.entity.GoodsDonSku;
-import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.*;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.util.MapBuilder;
+import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -33,37 +36,63 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 
 	private final WeChatService weChatService;
 
+	private final BeanSearcher beanSearcher;
+
+	private final UserGzhRelationMapper userGzhRelationMapper;
+
+	private final WeChatConfig weChatConfig;
+
 	public void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, GoodsDonSku sku, User user, String toPeople) throws Exception {
-		TemplateEnum templateEnum = null;
-		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
-			return;
+		Long userId = order.getUserId();
+		WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.NEW_ORDER_TEMPLATE.getDesc());
+		if (wxAppTemplateView != null) {
+			WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+					.setToUser(toPeople)
+					.setTemplateId(wxAppTemplateView.getTemplateId())
+					//TODO
+					.setUrl(" ");
+			WxMpTemplateMessage.TemplateData data = templateMessage.getData();
+			data.setFirst(new WxMpTemplateData("新订单通知!"));
+			data.setKeyword1(new WxMpTemplateData(order.getOrderNo()));
+			data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), sku.getSpecVal())));
+			data.setKeyword3(new WxMpTemplateData(user == null ? "推广未登录用户" : user.getNickname()));
+			data.setKeyword4(new WxMpTemplateData(order.getMoney().divide(BigDecimal.valueOf(100)).toString()));
+			data.setKeyword5(new WxMpTemplateData(DateUtil.format(order.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
+			data.setRemark(new WxMpTemplateData("点击查看详情"));
+			weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()), Jsons.toJson(templateMessage));
+		}
+	}
+
+	@Override
+	public WxAppTemplateView getWxAppByUserId(Long userId, String templateMark) {
+		UserGzhRelation userGzhRelation = userGzhRelationMapper.selectOne(Wrappers.lambdaQuery(UserGzhRelation.class)
+				.eq(UserGzhRelation::getUserId, userId).last("limit 1"));
+		MapBuilder builder = MapUtils.builder()
+				.field(WxAppTemplateView::getRemark, templateMark);
+		if (userGzhRelation == null) {
+			builder.field(WxAppTemplateView::getAppId, weChatConfig.getAppid());
 		}else {
-			templateEnum = TemplateEnum.NEW_ORDER_PRD_TEMPLATE;
+			builder.field(WxAppTemplateView::getWxAppId, userGzhRelation.getWxAppId());
 		}
-		WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-				.setToUser(toPeople)
-				.setTemplateId(templateEnum.getTemplateId())
-				//TODO
-				.setUrl(" ");
-		WxMpTemplateMessage.TemplateData data = templateMessage.getData();
-		data.setFirst(new WxMpTemplateData("新订单通知!"));
-		data.setKeyword1(new WxMpTemplateData(order.getOrderNo()));
-		data.setKeyword2(new WxMpTemplateData(String.format("%s,%s", goodsDon.getTitle(), sku.getSpecVal())));
-		data.setKeyword3(new WxMpTemplateData(user == null ? "推广未登录用户" : user.getNickname()));
-		data.setKeyword4(new WxMpTemplateData(order.getMoney().divide(BigDecimal.valueOf(100)).toString()));
-		data.setKeyword5(new WxMpTemplateData(DateUtil.format(order.getCreatedTime(), "yyyy-MM-dd HH:mm:ss")));
-		data.setRemark(new WxMpTemplateData("点击查看详情"));
-		weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
+		String type;
+		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
+			type = EnvCommonService.active;
+		} else {
+			type = EnvCommonService.active_prd;
+		}
+		builder.field(WxAppTemplateView::getType, type);
+		return beanSearcher.searchFirst(WxAppTemplateView.class, builder.build());
 	}
 
 	@Override
 	public void sendWxGzhQrCodeSuccessMsg(User user) throws Exception {
-		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
-			TemplateEnum templateEnum = TemplateEnum.WX_GZH_QR_CODE_LOGIN;
+		Long userId = user.getId();
+		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
+			WxAppTemplateView wxAppTemplateView = this.getWxAppByUserId(userId, TemplateEnum.WX_GZH_QR_CODE_LOGIN.getDesc());
 			String url = String.format("%sauth/weChat?url=%s", envCommonService.getHost(), envCommonService.getDomain() + "yinhe/web/");
 			WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
 					.setToUser(user.getOpenId())
-					.setTemplateId(templateEnum.getTemplateId())
+					.setTemplateId(wxAppTemplateView.getTemplateId())
 					.setUrl(url);
 			WxMpTemplateMessage.TemplateData data = templateMessage.getData();
 			data.setFirst(new WxMpTemplateData("您已登录成功"));

+ 51 - 45
netflix-service/src/main/java/com/cyksj/task/Scheduler.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.TemplateEnum;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.RedisKey;
@@ -16,6 +17,7 @@ import com.cyksj.redis.RedisService;
 import com.cyksj.service.order.OrderDonService;
 import com.cyksj.service.register.RegisterOrderDonService;
 import com.cyksj.service.register.SpotifyService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -27,8 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.cyksj.common.constant.WeChatTemplateConst.EXPIRY_TEMPLATE;
-
 @Component
 @Slf4j
 @RequiredArgsConstructor
@@ -68,6 +68,8 @@ public class Scheduler {
 
         private final RealGoodsInterestUserMapper realGoodsInterestUserMapper;
 
+        private final TemplateCommonService templateCommonService;
+
 
     /**
      * 每5分钟清理过期账号
@@ -90,49 +92,53 @@ public class Scheduler {
         List<GroupsRelation> groupsRelations = groupsRelationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).le(GroupsRelation::getExpiryTime, time));
         for (GroupsRelation relation : groupsRelations) {
             User user = userMapper.selectById(relation.getUserId());
-            WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
-                    .setToUser(user.getOpenId())
-                    .setTemplateId(EXPIRY_TEMPLATE)
-                    .setUrl(" ");
-
-            /**
-             * 您的账号即将到期
-             * 账号名称: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(goodsDon.getTitle()));
-            data.setKeyword3(new WxMpTemplateData(DateUtil.format(relation.getExpiryTime(), "yyyy-MM-dd HH:mm:ss")));
-            data.setKeyword4(new WxMpTemplateData("账号即将到期"));
-            data.setRemark(new WxMpTemplateData("请尽快续费,以免影响使用"));
-            log.info("发送账号即将到期消息至用户:{}", user.getId());
-            weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
-
-            List<Account> accounts = accountMapper.selectList(Wrappers.lambdaQuery(Account.class).le(Account::getExpiryTime, time));
-            List<CustomerService> customerServices = customerServiceMapper.selectList(null);
-            if(!accounts.isEmpty()){
-                for (CustomerService customerService : customerServices) {
-                    WxMpTemplateMessage manageMessage = new WxMpTemplateMessage()
-                            .setToUser(customerService.getOpenId())
-                            .setTemplateId(EXPIRY_TEMPLATE)
-                            .setUrl(" ");
-                    WxMpTemplateMessage.TemplateData data2 = manageMessage.getData();
-                    data2.setFirst(new WxMpTemplateData("您有" + accounts.size() + "个主账号即将到期"));
-                    data2.setKeyword1(new WxMpTemplateData("车队主账号"));
-                    data2.setKeyword2(new WxMpTemplateData("车队主账号"));
-                    data2.setKeyword3(new WxMpTemplateData("5天后"));
-                    data2.setKeyword4(new WxMpTemplateData("账号即将到期"));
-                    data2.setRemark(new WxMpTemplateData("请尽快登录后台-在账号管理中查看"));
-                    log.info("发送账号即将到期消息至客服:{}", customerService.getNickName());
-                    weChatService.sendTemplateMessage(weChatService.getAccessToken(),Jsons.toJson(manageMessage));
+            Long userId = user.getId();
+            WxAppTemplateView wxAppTemplateView = templateCommonService.getWxAppByUserId(userId, TemplateEnum.EXPIRY_TEMPLATE.getDesc());
+            if (wxAppTemplateView != null) {
+                WxMpTemplateMessage templateMessage = new WxMpTemplateMessage()
+                        .setToUser(user.getOpenId())
+                        .setTemplateId(wxAppTemplateView.getTemplateId())
+                        .setUrl(" ");
+
+                /**
+                 * 您的账号即将到期
+                 * 账号名称: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(goodsDon.getTitle()));
+                data.setKeyword3(new WxMpTemplateData(DateUtil.format(relation.getExpiryTime(), "yyyy-MM-dd HH:mm:ss")));
+                data.setKeyword4(new WxMpTemplateData("账号即将到期"));
+                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);
+                if(!accounts.isEmpty()){
+                    for (CustomerService customerService : customerServices) {
+                        WxMpTemplateMessage manageMessage = new WxMpTemplateMessage()
+                                .setToUser(customerService.getOpenId())
+                                .setTemplateId(wxAppTemplateView.getTemplateId())
+                                .setUrl(" ");
+                        WxMpTemplateMessage.TemplateData data2 = manageMessage.getData();
+                        data2.setFirst(new WxMpTemplateData("您有" + accounts.size() + "个主账号即将到期"));
+                        data2.setKeyword1(new WxMpTemplateData("车队主账号"));
+                        data2.setKeyword2(new WxMpTemplateData("车队主账号"));
+                        data2.setKeyword3(new WxMpTemplateData("5天后"));
+                        data2.setKeyword4(new WxMpTemplateData("账号即将到期"));
+                        data2.setRemark(new WxMpTemplateData("请尽快登录后台-在账号管理中查看"));
+                        log.info("发送账号即将到期消息至客服:{}", customerService.getNickName());
+                        weChatService.sendTemplateMessage(weChatService.getAccessToken(wxAppTemplateView.getAppId()),Jsons.toJson(manageMessage));
+                    }
                 }
             }
         }