Parcourir la source

fix 多公众号模板优化

zoujiajian il y a 3 ans
Parent
commit
3f0a419a9a

+ 0 - 2
netflix-service/src/main/java/com/cyksj/service/mange/CmsAccountService.java

@@ -22,6 +22,4 @@ public interface CmsAccountService extends IService<Account> {
 	List<OrderDon> getNoAppleOneOrderDon(List<Long> skuIds, Date yesZeroDate, Date thisZeroDate, List<String> noOrderStatus);
 
 	List<ExcelAccountData> getExpiredAccountViewNoPage(Boolean isCorpWx, String customerService, Integer goodsId, String account, Boolean renewStatus, Boolean handleStatus, String cnAccount, String usAccount, Integer userId, String startDate, String endDate, String toString);
-
-	void sendAccountTemplateMsg(Account account) throws Exception;
 }

+ 0 - 55
netflix-service/src/main/java/com/cyksj/service/mange/account/CmsAccountServiceImpl.java

@@ -1,29 +1,14 @@
 package com.cyksj.service.mange.account;
 
-import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.common.EnvCommonService;
-import com.cyksj.common.constant.TemplateEnum;
-import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.AccountMapper;
-import com.cyksj.mapper.UserMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-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.views.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;
-import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -41,16 +26,6 @@ import java.util.List;
 public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> implements CmsAccountService {
 	private final AccountMapper accountMapper;
 
-	private final WeChatService weChatService;
-
-	private final BeanSearcher beanSearcher;
-
-	private final EnvCommonService envCommonService;
-
-	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));
@@ -61,36 +36,6 @@ public class CmsAccountServiceImpl extends ServiceImpl<AccountMapper, Account> i
 		return accountMapper.getExpiredAccountViewNoPage(isCorpWx, customerService, goodsId, account, renewStatus, handleStatus, cnAccount, usAccount, userId, startTime, endTime, now);
 	}
 
-	@Override
-	public void sendAccountTemplateMsg(Account account) throws Exception {
-		List<GroupsRelationView> relations = beanSearcher.searchList(GroupsRelationView.class, MapUtils.builder()
-				.field(GroupsRelationView::getAccountId, account.getId()).op(Operator.Equal)
-				.field(GroupsRelationView::getStatus, "validity").op(Operator.Equal)
-				.build());
-		String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
-		log.info("开始发送账号修改密码模板消息,大小:{}", relations.size());
-		for (GroupsRelationView relation : relations) {
-			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));
-				}
-			}
-		}
-	}
-
 	@Override
 	public List<Account> getNoAppleOneAccount(String appleOne) {
 		return accountMapper.getNoAppleOneAccount(appleOne);

+ 8 - 48
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -2,22 +2,20 @@ 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.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.OrderDonMapper;
+import com.cyksj.mapper.OrderDonTransportMapper;
+import com.cyksj.mapper.OrderDonWaybillMapper;
 import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
-import com.cyksj.model.dto.WxMpTemplateData;
-import com.cyksj.model.dto.WxMpTemplateMessage;
-import com.cyksj.model.entity.*;
+import com.cyksj.model.entity.GoodsSkuStockRelate;
+import com.cyksj.model.entity.OrderDon;
+import com.cyksj.model.entity.OrderDonTransport;
+import com.cyksj.model.entity.OrderDonWaybill;
 import com.cyksj.model.excel.ExcelOrderDonInfo;
 import com.cyksj.model.manage.request.ReqSetLogisticsPost;
-import com.cyksj.model.views.WxAppTemplateView;
 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;
 import org.springframework.stereotype.Service;
@@ -39,12 +37,6 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final OrderDonWaybillMapper orderDonWaybillMapper;
 
-    private final UserMapper userMapper;
-
-    private final GoodsDonMapper goodsDonMapper;
-
-    private final WeChatService weChatService;
-
     private final GoodsSkuStockRelateMapper skuStockRelateMapper;
 
     private final GoodsDonStockService goodsDonStockService;
@@ -89,7 +81,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             TASK_POOL.execute(()->{
                 try {
                     log.info("发送发货通知至{}用户", orderDon.getUserId());
-                    sendTransportMsgNotify(orderDon, reqSetLogisticsPost);
+                    templateCommonService.sendTransportMsgNotify(orderDon, reqSetLogisticsPost);
                 } catch (Exception e) {
                     log.error("发送发货通知至{}用户失败:{}", orderDon.getUserId(), e);
                 }
@@ -104,36 +96,4 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         return orderDonWaybill;
     }
 
-
-    private void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost) throws Exception {
-        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();
-            }
-            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));
-        }
-    }
-
 }

+ 5 - 29
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.AliPayCommon;
 import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.TaskTypeEnum;
-import com.cyksj.common.constant.TemplateEnum;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.snowflake.Sequence;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
@@ -40,7 +39,9 @@ import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
-import com.cyksj.model.dto.*;
+import com.cyksj.model.dto.AliPayParams;
+import com.cyksj.model.dto.CouponPopularizeDto;
+import com.cyksj.model.dto.H5JsPayParams;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.OrderAttach;
@@ -50,7 +51,6 @@ import com.cyksj.model.request.ZfbOrderRefundReq;
 import com.cyksj.model.response.AliPayRefundRep;
 import com.cyksj.model.views.CouponNewUserView;
 import com.cyksj.model.views.CouponUserView;
-import com.cyksj.model.views.WxAppTemplateView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.coupon.CouponFontService;
 import com.cyksj.service.exchange.ExchangeCodeService;
@@ -312,7 +312,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					List<CustomerService> customerServices = customerServiceMapper.selectList(null);
 					for (CustomerService customerService : customerServices) {
 						log.info("发送客服{}空车位通知消息", customerService.getNickName());
-						emptySendMsgNotify(orderDon, customerService.getOpenId());
+						templateCommonService.emptySendMsgNotify(orderDon, customerService.getOpenId());
 					}
 				} catch (Exception e) {
 					log.error("发送{}空车位模板消息至客服失败:{}", orderDon.getGoodsId(), e);
@@ -538,30 +538,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		}
 	}
 
-	private void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception {
-		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
 	@Transactional(rollbackFor = Throwable.class)
 	public OrderDon renewal(OrderPayRequest payRequest) throws Exception {
@@ -1461,7 +1437,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					List<CustomerService> customerServices = customerServiceMapper.selectList(null);
 					for (CustomerService customerService : customerServices) {
 						log.info("发送客服{}空车位通知消息", customerService.getNickName());
-						emptySendMsgNotify(order, customerService.getOpenId());
+						templateCommonService.emptySendMsgNotify(order, customerService.getOpenId());
 					}
 				} catch (Exception e) {
 					log.error("发送{}空车位模板消息至客服失败:{}", order.getGoodsId(), e);

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

@@ -20,7 +20,10 @@ 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.*;
+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.request.SpotifyRegisterReq;
 import com.cyksj.model.response.ProxyInfo;
 import com.cyksj.model.views.WxAppTemplateView;
@@ -312,18 +315,20 @@ public class SpotifyServiceImpl implements SpotifyService {
     }
 
     private void spotifyTemplateMsg(RegisterOrderDon registerOrderDon, String url, Boolean isSuccess) throws Exception {
-        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));
+        if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+            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));
+            }
         }
     }
 

+ 20 - 0
netflix-service/src/main/java/com/cyksj/service/template/TemplateCommonService.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.template;
 
 import com.cyksj.model.entity.*;
+import com.cyksj.model.manage.request.ReqSetLogisticsPost;
 import com.cyksj.model.views.WxAppTemplateView;
 
 /*
@@ -24,4 +25,23 @@ public interface TemplateCommonService {
 	 * 获取发送模板消息的公众号
 	 */
 	WxAppTemplateView getWxAppByUserId(Long userId, String templateMark);
+
+	/**
+	 * 发货通知模板消息
+	 */
+	void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost) throws Exception;
+
+	/**
+	 * 空车位通知模板
+	 */
+	void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception;
+
+	/**
+	 * 账号修改密码通知模板
+	 */
+	void sendAccountTemplateMsg(Account account) throws Exception;
+
+	/**
+	 * Spotify账号到期通知模板
+	 */
 }

+ 131 - 19
netflix-service/src/main/java/com/cyksj/service/template/impl/TemplateCommonServiceImpl.java

@@ -5,16 +5,24 @@ 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.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.config.WeChatConfig;
+import com.cyksj.mapper.GoodsDonMapper;
+import com.cyksj.mapper.GoodsDonSkuMapper;
+import com.cyksj.mapper.OrderDonTransportMapper;
+import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.gzh.UserGzhRelationMapper;
 import com.cyksj.model.dto.WxMpTemplateData;
 import com.cyksj.model.dto.WxMpTemplateMessage;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.manage.request.ReqSetLogisticsPost;
+import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.views.WxAppTemplateView;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.wechat.WeChatService;
 import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
@@ -22,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /*
  *项目名: netflix
@@ -43,24 +52,34 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 
 	private final WeChatConfig weChatConfig;
 
+	private final UserMapper userMapper;
+
+	private final GoodsDonMapper goodsDonMapper;
+
+	private final OrderDonTransportMapper transportMapper;
+
+	private final GoodsDonSkuMapper goodsDonSkuMapper;
+
 	public void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, GoodsDonSku sku, User user, String toPeople) throws Exception {
-		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));
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			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));
+			}
 		}
 	}
 
@@ -87,8 +106,8 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 
 	@Override
 	public void sendWxGzhQrCodeSuccessMsg(User user) throws Exception {
-		Long userId = user.getId();
-		if (EnvCommonService.active.equals(envCommonService.getEnv())) {
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			Long userId = user.getId();
 			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()
@@ -103,4 +122,97 @@ public class TemplateCommonServiceImpl implements TemplateCommonService {
 			weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
 		}
 	}
+
+	@Override
+	public void sendTransportMsgNotify(OrderDon orderDon, ReqSetLogisticsPost reqSetLogisticsPost) throws Exception {
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			Long userId = orderDon.getUserId();
+			WxAppTemplateView wxAppTemplateView = this.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();
+				}
+				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));
+			}
+		}
+	}
+
+	@Override
+	public void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception {
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			Long userId = orderDon.getUserId();
+			WxAppTemplateView wxAppTemplateView = this.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
+	public void sendAccountTemplateMsg(Account account) throws Exception {
+		if (!EnvCommonService.active.equals(envCommonService.getEnv())) {
+			List<GroupsRelationView> relations = beanSearcher.searchList(GroupsRelationView.class, MapUtils.builder()
+					.field(GroupsRelationView::getAccountId, account.getId()).op(Operator.Equal)
+					.field(GroupsRelationView::getStatus, "validity").op(Operator.Equal)
+					.build());
+			String url = String.format("%sauth/weChat?url=%syinhe/web/ticket", envCommonService.getHost(), envCommonService.getDomain());
+			log.info("开始发送账号修改密码模板消息,大小:{}", relations.size());
+			for (GroupsRelationView relation : relations) {
+				Long userId = relation.getUserId();
+				WxAppTemplateView wxAppTemplateView = this.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));
+					}
+				}
+			}
+		}
+	}
 }

+ 4 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -21,6 +21,7 @@ import com.cyksj.model.excel.ExcelManageAccountData;
 import com.cyksj.model.manage.request.ReqAccountIncrExpiryTime;
 import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.service.mange.CmsAccountService;
+import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.web.util.EasyExcelUtils;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -58,6 +59,8 @@ public class CmsAccountController {
 
     private final GroupsMapper groupsMapper;
 
+	private final TemplateCommonService templateCommonService;
+
     @GetMapping("/get")
     public Result<SearchResult<AccountView>> get(Long userId ,String nickName ,String submitAccount ,String expiryStartTime, String expiryEndTime) {
         MapBuilder mapBuilder = MapUtils.flatBuilder(request.getParameterMap());
@@ -143,7 +146,7 @@ public class CmsAccountController {
 							account.setPassword(data.getPassword());
 							flag = true;
 							//发放模板消息
-							accountService.sendAccountTemplateMsg(account);
+							templateCommonService.sendAccountTemplateMsg(account);
 						}
 						if (flag) {
 							accountService.updateById(account);