Selaa lähdekoodia

微信消息推送

Duan_xu 3 vuotta sitten
vanhempi
commit
77fae329ce

+ 27 - 27
src/main/java/com/caimei365/order/components/WeChatService.java

@@ -2,6 +2,7 @@ package com.caimei365.order.components;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.annotation.JSONType;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.utils.JwtUtil;
 import com.caimei365.order.utils.RequestUtil;
@@ -20,6 +21,7 @@ import javax.crypto.spec.SecretKeySpec;
 import java.security.AlgorithmParameters;
 import java.security.Security;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
@@ -54,6 +56,9 @@ public class WeChatService {
     private String heHeAppId;
     @Value("${wx.hehe-app-secret}")
     private String heHeAppSecret;
+
+    public static String unionid;
+
     /**
      * 收款通知模板Id
      */
@@ -193,6 +198,7 @@ public class WeChatService {
             // 静默授权
             link = link.replace("snsapi_userinfo", "snsapi_base");
         }
+        log.info("》》》》授权消息"+link);
         return link;
     }
 
@@ -219,7 +225,7 @@ public class WeChatService {
         link = link.replace("CODE", code);
         // 发送授权链接,得到微信用户信息
         String result = RequestUtil.sendGet(link);
-        log.info(result);
+        log.info("用户信息获取成功"+result);
         Map<String, Object> map = JSONObject.parseObject(result, Map.class);
         return map;
     }
@@ -236,8 +242,8 @@ public class WeChatService {
 //            return access_token;
 //        }
         String link = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
-        link = link.replace("APPID", appId);
-        link = link.replace("APPSECRET", appSecret);
+        link = link.replace("APPID", crmAppId);
+        link = link.replace("APPSECRET", crmAppSecret);
         String result = RequestUtil.sendGet(link);
         log.info("微信公众号获取access_token>>>" + result);
         Map<String, Object> map = JSONObject.parseObject(result, Map.class);
@@ -267,10 +273,12 @@ public class WeChatService {
     public Map<String, Object> getUserInfoByWeb(String access_token, String openId) throws Exception {
         String requestUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openId;
         String userInfo = RequestUtil.sendGet(requestUrl);
+        log.info("获取用户信息"+userInfo);
         Map<String, Object> map = JSONObject.parseObject(userInfo, Map.class);
         return map;
     }
 
+
     /**
      * 推送收款微信模板消息(公众号)
      *
@@ -314,8 +322,8 @@ public class WeChatService {
 
         JSONObject json = new JSONObject();
         json.put("touser", openid);
-        json.put("template_id", messageTemplateReceipt);
-        json.put("url", "https://www.caimei365.com/");
+        json.put("template_id",messageTemplateReceipt);
+        json.put("url","https://www.caimei365.com/");
         json.put("miniprogram", miniProgram);
         json.put("data", data);
         // json 字符串
@@ -346,19 +354,14 @@ public class WeChatService {
     public void sendTemplateMsgs(String accessToken, String openid, String title, String name,String orderno, Double money, String remarkText, String pagePath) {
         JSONObject first = new JSONObject();
         first.put("value", title);
-        first.put("color", "#000000");
         JSONObject keyword1 = new JSONObject();
-        keyword1.put("value", name);
-        keyword1.put("color", "#FF0000");
+        keyword1.put("value", name+"...");
         JSONObject keyword2 = new JSONObject();
         keyword2.put("value", orderno);
-        keyword2.put("color", "#c4c400");
         JSONObject keyword3 = new JSONObject();
         keyword3.put("value", money.toString());
-        keyword3.put("color", "#c4c400");
         JSONObject remark = new JSONObject();
         remark.put("value", remarkText);
-        remark.put("color", "#c4c400");
 
         JSONObject data = new JSONObject();
         data.put("first", first);
@@ -367,21 +370,22 @@ public class WeChatService {
         data.put("keyword3", keyword3);
         data.put("remark", remark);
 
-//        JSONObject miniProgram = new JSONObject();
-//        miniProgram.put("appid", "wxf3cd4ae0cdd11c36");
-//        miniProgram.put("pagepath", pagePath);
+       JSONObject miniProgram = new JSONObject();
+       miniProgram.put("appid", miniAppId);
+       miniProgram.put("pagepath", pagePath);
 
-        JSONObject json = new JSONObject();
-        json.put("touser", openid);
-        json.put("template_id", "lLPssEY0tx6k5jT-8tDQgEpInf5quA3_M9RsI9aw3IM");
-        json.put("url", "https://www.caimei365.com/");
-//        json.put("miniprogram", miniProgram);
+        JSONObject json = new JSONObject(new LinkedHashMap());
+        json.put("touser",openid);
+        json.put("template_id","lLPssEY0tx6k5jT-8tDQgEpInf5quA3_M9RsI9aw3IM");
+        json.put("url","https://www.caimei365.com/");
+        json.put("miniprogram", miniProgram);
         json.put("data", data);
         // json 字符串
         String jsonString = json.toJSONString();
         log.info(">>>>>>>>推送微信模板消息:" + jsonString);
         try {
             // https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
+//            String requestUrl =  "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token="+accessToken;
             String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken;
             // 发送请求
             String result = RequestUtil.httpRequest(requestUrl, "POST", jsonString);
@@ -446,7 +450,8 @@ public class WeChatService {
         log.info(">>>>>>>>推送微信模板消息:" + jsonString);
         try {
             // https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
-            String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken;
+              String requestUrl =  "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN";
+//            String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken;
             // 发送请求
             String result = RequestUtil.httpRequest(requestUrl, "POST", jsonString);
             log.info(">>>>>>>>推送结果:" + result);
@@ -470,22 +475,16 @@ public class WeChatService {
     public void sendTemplateMsgz(String accessToken, String openid, String title,String paytime, String name,String orderno, Double money, String remarkText, String pagePath) {
         JSONObject first = new JSONObject();
         first.put("value", title);
-        first.put("color", "#000000");
         JSONObject keyword1 = new JSONObject();
         keyword1.put("value", name);
-        keyword1.put("color", "#FF0000");
         JSONObject keyword2 = new JSONObject();
         keyword2.put("value", orderno);
-        keyword2.put("color", "#c4c400");
         JSONObject keyword3 = new JSONObject();
         keyword3.put("value", money);
-        keyword3.put("color", "#c4c400");
         JSONObject keyword4 = new JSONObject();
         keyword4.put("value", paytime);
-        keyword4.put("color", "#c4c400");
         JSONObject remark = new JSONObject();
         remark.put("value", remarkText);
-        remark.put("color", "#c4c400");
 
         JSONObject data = new JSONObject();
         data.put("first", first);
@@ -496,7 +495,7 @@ public class WeChatService {
         data.put("remark", remark);
 
         JSONObject miniProgram = new JSONObject();
-        miniProgram.put("appid", receiptAppId);
+        miniProgram.put("appid", miniAppId);
         miniProgram.put("pagepath", pagePath);
 
         JSONObject json = new JSONObject();
@@ -508,6 +507,7 @@ public class WeChatService {
         // json 字符串
         String jsonString = json.toJSONString();
         log.info(">>>>>>>>推送微信模板消息:" + jsonString);
+        log.info(">>>>>>>>推送微信模板json消息:" + json);
         try {
             // https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
             String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken;

+ 5 - 3
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -240,12 +240,14 @@ public interface OrderClubMapper {
     /**
      * 根据用户id获取用户openid列表(微信公众号openid,下单)
      */
-    List<String> getOpenidListByPermission(Integer orderId);
+    List<String> getOpenidListByPermission(Integer userid,String unionid);
+
+    String getOpenidunionId(Integer userid);
 
     /*
      *根据orderId查询商品名称
      */
-    List<String> getOrderId(Integer orderId);
+    List<String> getOrderIds(Integer orderId);
     /*
      *根据orderId查询订单金额
      */
@@ -259,7 +261,7 @@ public interface OrderClubMapper {
     /*
      *根据orderId查询收款状态
      */
-    Integer getreceiptStatus(Integer orderId);
+    Integer getReceiptStatus(Integer orderId);
 
     /*
      *根据orderId查询二手订单标识

+ 1 - 1
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -95,7 +95,7 @@ public interface PayOrderMapper {
     /**
      * 根据用户id获取用户openid列表(微信公众号openid,下单)
      */
-    List<String> getOpenidListByPermission(Integer orderId);
+    List<String> getOpenidListByPermission(Integer userid,String unionid);
 
     /**
      * 保存分账详情

+ 1 - 1
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -32,7 +32,7 @@ public interface ShipMapper {
      * 根据子订单id查询openid
      * @param shopOrderId
      */
-    List<String> getOpenidListByPermission(Integer shopOrderId);
+    List<String> getOpenidListByPermission(Integer userid,String unionid);
 
     String getorderID(Integer shopOrderId);
 

+ 10 - 9
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -372,18 +372,14 @@ public class OrderClubServiceImpl implements OrderClubService {
             order.setStatus(31);
             order.setReceiptStatus(3);
         }
-        order.setUpdateDate(curDateStr);
-        order.setConfirmTime(curDateStr);
-        //确认订单状态
-        order.setConfirmFlag(2);
-        // 更新订单状态
-        orderClubMapper.updateOrderStatus(order);
+
         if (0==order.getSecondHandOrderFlag() && 0==order.getRebateFlag() ) {
+            SubmitServiceImpl s=new SubmitServiceImpl();
         try {
             String accessToken = weChatService.getAccessToken();
-            List<String> openidList = orderClubMapper.getOpenidListByPermission(orderId);
+            List<String> openidList = orderClubMapper.getOpenidListByPermission(order.getUserId(),s.unionId);
             openidList.removeIf(Objects::isNull);
-            String name= orderClubMapper.getOrderId(orderId).toString();
+            String name= StringUtils.strip(orderClubMapper.getOrderIds(orderId).toString().substring(0,11), "[]");
             String associateTitle = "订单已成功提交,等待付款!";
             Double money=order.getPayTotalFee();
             String orderno = orderClubMapper.getOrderNo(orderId);
@@ -398,7 +394,12 @@ public class OrderClubServiceImpl implements OrderClubService {
             log.error("【订单发货通知】获取微信公众号access_token异常!", e);
         }
         }
-
+        order.setUpdateDate(curDateStr);
+        order.setConfirmTime(curDateStr);
+        //确认订单状态
+        order.setConfirmFlag(2);
+        // 更新订单状态
+        orderClubMapper.updateOrderStatus(order);
 
         return ResponseJson.success("确认订单成功!", null);
     }

+ 55 - 28
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -44,9 +44,6 @@ import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
-import static org.bouncycastle.asn1.x500.style.RFC4519Style.c;
-import static org.bouncycastle.asn1.x500.style.RFC4519Style.o;
-
 /**
  * Description
  *
@@ -79,6 +76,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Value("${pay.notify-url}")
     private String notifyUrl;
 
+    private static Integer userid;
     /**
      * 订单支付前效验付款规则
      *
@@ -88,6 +86,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     public ResponseJson<Map<String, Object>> payBeforeCheck(Integer orderId) {
         // 订单信息
         OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
+        userid=order.getUserId();
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -141,6 +140,7 @@ public class PayOrderServiceImpl implements PayOrderService {
     public ResponseJson<Map<String, Object>> balanceDeduction(Integer orderId) {
         // 订单信息
         OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
+        userid=order.getUserId();
         if (null == order) {
             return ResponseJson.error("订单不存在", null);
         }
@@ -251,6 +251,32 @@ public class PayOrderServiceImpl implements PayOrderService {
                     baseMapper.insertBalanceRecord(balanceRecord1);
                 }
                 log.info("【订单支付,线上/线下余额抵扣】>>>>>>>>>>>>>>>>>>>>>>>>>>新增用户余额收支记录(insert[cm_user_balance_record])orderId:" + orderId);
+                log.info("************************订单支付完成消息推送*********************");
+                //判断是否是二手订单和返佣订单
+                if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId)) {
+
+                    try {
+                        log.info("unionid>>>>>"+weChatService.unionid);
+                        String accessToken = weChatService.getAccessToken();
+                        List<String> openidList = payOrderMapper.getOpenidListByPermission(userid,orderClubMapper.getOpenidunionId(userid));
+                        openidList.removeIf(Objects::isNull);
+                        String name = StringUtils.strip(orderClubMapper.getOrderIds(orderId).toString().substring(0,11), "[]");
+                        String associateTitle = "订单支付成功!";
+                        Double money = orderClubMapper.getpayTotalFee(orderId);
+                        String orderno = order.getOrderNo();
+                        String paytime = curDateStr;
+                        String remarkText = "采美将尽快为您安排发货~";
+                        // 跳转到【小程序付款-选择支付方式页面】
+                        String pagePath = "pages/user/order/order-details?orderId=" + orderId;
+                        for (String openid : openidList) {
+                            // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
+                            weChatService.sendTemplateMsgz(accessToken, openid, associateTitle, paytime, name, orderno, money, remarkText, pagePath);
+                        }
+                    } catch (Exception e) {
+                        log.error("【订单发货通知】获取微信公众号access_token异常!", e);
+                    }
+                }
+                log.info("支付成功"+userid);
             }
         }
         Map<String, Object> map = new HashMap<>(2);
@@ -832,6 +858,31 @@ public class PayOrderServiceImpl implements PayOrderService {
             //(收款买家)收款状态:1待收款、2部分收款、3已收款
             order.setReceiptStatus(3);
             log.info("【支付异步回调】>>>>>>>>>>>>>>订单(全部支付),修改订单状态:" + order.getStatus() + ",orderId:" + orderId);
+            log.info("************************订单支付完成消息推送*********************"+userid);
+            //判断是否是二手订单和返佣订单
+                if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId)) {
+                    try {
+                        String accessToken = weChatService.getAccessToken();
+                        log.info(">>>>>>>>>>>>>>>>>"+userid+">>>>>>>>>>>>>>"+orderClubMapper.getOpenidunionId(userid));
+                        List<String> openidList = payOrderMapper.getOpenidListByPermission(userid,orderClubMapper.getOpenidunionId(userid));
+                        openidList.removeIf(Objects::isNull);
+                        String name = StringUtils.strip(orderClubMapper.getOrderIds(orderId).toString().substring(0,11), "[]");
+                        String associateTitle = "订单支付成功!";
+                        Double money = orderClubMapper.getpayTotalFee(orderId);
+                        String orderno = orderClubMapper.getOrderNo(orderId);
+                        String paytime = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
+                        String remarkText = "采美将尽快为您安排发货~";
+                        // 跳转到【小程序付款-选择支付方式页面】
+                        String pagePath = "pages/user/order/order-details?orderId=" + orderId;
+                        for (String openid : openidList) {
+                            // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
+                            weChatService.sendTemplateMsgz(accessToken, openid, associateTitle, paytime, name, orderno, money, remarkText, pagePath);
+                        }
+                    } catch (Exception e) {
+                        log.error("【订单发货通知】获取微信公众号access_token异常!", e);
+                    }
+                }
+            log.info("支付成功2");
         } else {
             // 部分支付
             if (OrderStatus.UNRECEIVED_AND_UNSHIPPED.getCode() == order.getStatus() || OrderStatus.PART_RECEIVED_AND_UNSHIPPED.getCode() == order.getStatus()) {
@@ -981,6 +1032,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                     num = 20000;
                 }
                 // 超级会员用户标识
+                userid=order.getUserId();
                 Integer svipUserId = baseMapper.getSvipUserIdByUserId(order.getUserId());
                 if (null != svipUserId && svipUserId.equals(order.getUserId())) {
                     // 超级会员用户采美豆翻倍
@@ -1027,31 +1079,6 @@ public class PayOrderServiceImpl implements PayOrderService {
             return ResponseJson.error(-2, "支付失败", "付款次数异常");
         } else if (dbPayCounter > paySuccessCounter) {
 
-            if ( 1 == orderClubMapper.getreceiptStatus(orderId)) {
-                if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId)) {
-                    try {
-                        String accessToken = weChatService.getAccessToken();
-                        List<String> openidList = payOrderMapper.getOpenidListByPermission(orderId);
-                        openidList.removeIf(Objects::isNull);
-                        String name = StringUtils.strip(orderClubMapper.getOrderId(orderId).toString().substring(0,11), "[]");
-                        String associateTitle = "订单支付成功!";
-                        Double money = orderClubMapper.getpayTotalFee(orderId);
-                        String orderno = orderClubMapper.getOrderNo(orderId);
-                        String paytime = orderClubMapper.getpayTime(orderId);
-                        String remarkText = "采美将尽快为您安排发货~";
-                        // 跳转到【小程序付款-选择支付方式页面】
-                        String pagePath = "pages/user/order/order-details?orderId=" + orderId;
-                        for (String openid : openidList) {
-                            // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
-                            weChatService.sendTemplateMsgz(accessToken, openid, associateTitle, paytime, name, orderno, money, remarkText, pagePath);
-                        }
-                    } catch (Exception e) {
-                        log.error("【订单发货通知】获取微信公众号access_token异常!", e);
-                    }
-                }
-            }
-
-
             return ResponseJson.success("支付成功");
         } else {
             return ResponseJson.error("支付异常", null);

+ 26 - 24
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -59,6 +59,7 @@ public class ReceiptServiceImpl implements ReceiptService {
     private OrderClubMapper orderClubMapper;
     @Resource
     private BaseMapper baseMapper;
+
     /**
      * 只有当识别出来的收款类型是广发银行-5461 ,中信银行-0897,中信银行0897-财付通 和 中信银行0897-支付宝时,才会显示手续费,并且自动勾选上手续费,默认按收款金额的千分之一计算 (收款金额 - 手续费 = 短信中收到的金额)
      */
@@ -1689,6 +1690,30 @@ public class ReceiptServiceImpl implements ReceiptService {
                             }
                         }
                     }
+                    if(3 == order.getReceiptStatus()) {
+                        if (0==order.getSecondHandOrderFlag() && 0==order.getRebateFlag() ) {
+                            SubmitServiceImpl s=new SubmitServiceImpl();
+                            try {
+                                String accessToken = weChatService.getAccessToken();
+                                List<String> openidList = orderClubMapper.getOpenidListByPermission(order.getUserId(),s.unionId);
+                                openidList.removeIf(Objects::isNull);
+                                String name= StringUtils.strip(orderClubMapper.getOrderIds(order.getOrderId()).toString().substring(0,11), "[]");
+                                String associateTitle = "订单支付成功!";
+                                Double money=order.getPayTotalFee();
+                                String orderno = orderClubMapper.getOrderNo(order.getOrderId());
+                                String paytime=order.getPayTime();
+                                String remarkText = "采美将尽快为您安排发货~";
+                                // 跳转到【小程序付款-选择支付方式页面】
+                                String pagePath = "pages/user/order/order-details?orderId="+order.getOrderId();
+                                for (String openid : openidList) {
+                                    // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
+                                    weChatService.sendTemplateMsgz(accessToken, openid, associateTitle,paytime, name,orderno, money, remarkText, pagePath);
+                                }
+                            } catch (Exception e) {
+                                log.error("【订单发货通知】获取微信公众号access_token异常!", e);
+                            }
+                        }
+                    }
                 }
 
                 if (null != receiptPo.getConfirmType() && 3 == receiptPo.getConfirmType()) {
@@ -1766,30 +1791,7 @@ public class ReceiptServiceImpl implements ReceiptService {
                 log.error("【线下收款】获取微信公众号access_token异常!", e);
             }
         }
-        OrderVo order=new OrderVo();
-        if(null!=order && 0==order.getPayFlag() && 1==order.getReceiptStatus()){
-            if (0==order.getSecondHandOrderFlag() && 0==order.getRebateFlag() ) {
-                try {
-                    String accessToken = weChatService.getAccessToken();
-                    List<String> openidList = receiptMapper.getOpenidListByPermission(Collections.singletonList(3));
-                    openidList.removeIf(Objects::isNull);
-                    String name= StringUtils.strip(orderClubMapper.getOrderId(order.getOrderId()).toString().substring(0,11), "[]");
-                    String associateTitle = "订单支付成功!";
-                    Double money=order.getPayTotalFee();
-                    String orderno = orderClubMapper.getOrderNo(order.getOrderId());
-                    String paytime=order.getPayTime();
-                    String remarkText = "采美将尽快为您安排发货~";
-                    // 跳转到【小程序付款-选择支付方式页面】
-                    String pagePath = "pages/user/order/order-details?orderId="+order.getOrderId();
-                    for (String openid : openidList) {
-                        // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
-                        weChatService.sendTemplateMsgz(accessToken, openid, associateTitle,paytime, name,orderno, money, remarkText, pagePath);
-                    }
-                } catch (Exception e) {
-                    log.error("【订单发货通知】获取微信公众号access_token异常!", e);
-                }
-            }
-        }
+
         return ResponseJson.success("审核收款信息成功!", null);
     }
 

+ 3 - 2
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -372,12 +372,13 @@ public class ShipServiceImpl implements ShipService {
         /**
          * 发货后消息推送
          */
-        if (1 == orderClubMapper.getreceiptStatus(logisticsDto.getShopOrderId())) {
+        if (1 == orderClubMapper.getReceiptStatus(logisticsDto.getShopOrderId())) {
             if (0 == orderClubMapper.getsecondHandOrderFlag(logisticsDto.getShopOrderId()) && 0 == orderClubMapper.getrebateFlag(logisticsDto.getShopOrderId())) {
+                SubmitServiceImpl s=new SubmitServiceImpl();
                 try {
                     LogisticsInformationPo logisticsInformation = new LogisticsInformationPo();
                     String accessToken = weChatService.getAccessToken();
-                    List<String> openidList = shipMapper.getOpenidListByPermission(logisticsDto.getShopOrderId());
+                    List<String> openidList = shipMapper.getOpenidListByPermission(shopOrder.getUserId(),s.unionId);
                     openidList.removeIf(Objects::isNull);
                     String company = logisticsInformation.getLogisticsCompanyName();
                     String companyno = logisticsInformation.getNu();

+ 42 - 0
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -3,8 +3,10 @@ package com.caimei365.order.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.ProductService;
+import com.caimei365.order.components.WeChatService;
 import com.caimei365.order.mapper.*;
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.bo.PayParamBo;
 import com.caimei365.order.model.dto.RechargeDto;
 import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.dto.SubmitDto;
@@ -55,6 +57,8 @@ public class SubmitServiceImpl implements SubmitService {
     @Resource
     private OrderClubMapper orderClubMapper;
     @Resource
+    private WeChatService weChatService;
+    @Resource
     private CartClubMapper cartClubMapper;
     @Resource
     private CartSellerMapper cartSellerMapper;
@@ -63,6 +67,9 @@ public class SubmitServiceImpl implements SubmitService {
     @Resource
     private PayOrderMapper payOrderMapper;
 
+    public static String unionId;
+    public static Integer oderid;
+
     /**
      * 生成订单
      *
@@ -118,6 +125,8 @@ public class SubmitServiceImpl implements SubmitService {
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto) {
         // 获取机构用户Id
         Integer clubUserId = baseMapper.getUserIdByClubId(submitDto.getClubId());
+        submitDto.getUnionId();
+        unionId=submitDto.getUnionId();
         if (null == clubUserId || clubUserId == 0) {
             return ResponseJson.error("机构用户信息异常!", null);
         }
@@ -309,6 +318,9 @@ public class SubmitServiceImpl implements SubmitService {
         mainOrder.setUpdateDate(curDateStr);
         // 订单状态 0 有效  其它无效
         mainOrder.setDelFlag(0);
+
+
+
         //协销下单
         if (3 == orderParamBo.getCartType()) {
             mainOrder.setSpId(orderParamBo.getServiceProviderId());
@@ -1056,6 +1068,9 @@ public class SubmitServiceImpl implements SubmitService {
         submitMapper.insertMainOrder(mainOrder);
         log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增主订单(insert[cm_order])orderId:" + mainOrder.getOrderId());
 
+
+
+
         /*
          * 保存订单促销,返回订单促销Id
          */
@@ -1471,6 +1486,33 @@ public class SubmitServiceImpl implements SubmitService {
             log.info("【提交订单】>>>>删除当前机构 用户 购物车数据!");
         }
 
+        log.info("**********************微信模板消息推送*****************************");
+        if (0==mainOrder.getSecondHandOrderFlag() && 0==mainOrder.getRebateFlag() ) {
+            try {
+                String accessToken = weChatService.getAccessToken();
+                List<String> openidList = orderClubMapper.getOpenidListByPermission(mainOrder.getUserId(),unionId);
+                openidList.removeIf(Objects::isNull);
+                String name = StringUtils.strip(orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString().substring(0,11),"[]");
+                log.info("订单商品>>>>>"+name+""+mainOrder.getOrderId());
+                String associateTitle = "订单已成功提交,等待付款!";
+                Double money=mainOrder.getPayTotalFee();
+                String orderno = mainOrder.getOrderNo();
+                String remarkText = "下单时间:" + mainOrder.getOrderTime() +"点击详情进行付款";
+                // 跳转到【小程序付款-选择支付方式页面】
+                String pagePath = "pages/user/order/order-payment?type=payfirm&orderId="+mainOrder.getOrderId();
+                for (String openid : openidList) {
+                    // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接
+                    log.error("获取openid>>>>>"+openidList);
+                    weChatService.sendTemplateMsgs(accessToken, openid, associateTitle, name,orderno, money, remarkText, pagePath);
+                }
+            } catch (Exception e) {
+                log.error("【订单下单通知】获取微信公众号access_token异常!", e);
+            }
+        }
+
+
+
+
         log.info("******************** 提交订单逻辑处理 end *******************");
 
         /*

+ 13 - 7
src/main/resources/mapper/OrderClubMapper.xml

@@ -497,16 +497,22 @@
         AND scr.delFlag = '0' AND osc.expiredTime > NOW()
     </select>
     <select id="getOpenidListByPermission" resultType="java.lang.String">
-        SELECT DISTINCT scr.openid FROM  cm_mall_share_code_record scr
-        LEFT JOIN cm_mall_order_share_code osc ON scr.orderId = osc.orderId
-        WHERE scr.orderId=#{orderId}
+        SELECT DISTINCT cm.crmopenid FROM  `cm_mall_operation_user` cm
+        LEFT JOIN `user` u ON u.userID = cm.userID
+        WHERE u.userID=#{userid} AND cm.unionId= #{unionid}
     </select>
 
-    <select id="getOrderId" resultType="java.lang.String">
+    <select id="getOpenidunionId" resultType="java.lang.String">
+        SELECT DISTINCT cm.unionId FROM  `cm_mall_operation_user` cm
+        LEFT JOIN `user` u ON u.userID = cm.userID
+        WHERE u.userID=#{userid}
+    </select>
+
+    <select id="getOrderIds" resultType="java.lang.String">
         SELECT DISTINCT p.name FROM  product p
          LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
          LEFT JOIN `cm_order` cm ON cm.orderNo=cmp.orderNo
-        WHERE cmp.orderId=#{orderId} AND cm.status=0
+         WHERE cmp.orderId=#{orderId}
     </select>
 
     <select id="getpayTotalFee" resultType="java.lang.Double">
@@ -517,7 +523,7 @@
         SELECT payTime FROM cm_order  WHERE orderId=#{orderId}
     </select>
 
-    <select id="getreceiptStatus" resultType="java.lang.Integer">
+    <select id="getReceiptStatus" resultType="java.lang.Integer">
         SELECT receiptStatus FROM cm_order  WHERE orderId=#{orderId}
     </select>
 
@@ -533,7 +539,7 @@
         SELECT DISTINCT cm.orderNo FROM  product p
         LEFT JOIN cm_order_product cmp ON p.productID = cmp.productID
         LEFT JOIN `cm_order` cm ON cm.orderNo=cmp.orderNo
-        WHERE cmp.orderId=#{orderId} AND cm.status=0
+        WHERE cmp.orderId=#{orderId}
     </select>
 
     <select id="getClubCouponById" resultType="com.caimei365.order.model.vo.CouponVo">

+ 3 - 1
src/main/resources/mapper/OrderCommonMapper.xml

@@ -320,7 +320,9 @@
         payTime,
         rebateFlag,
         clauseID AS clauseId,
-        clauseName
+        clauseName,
+        payTime,
+        orderNo
         FROM cm_order
         WHERE orderID = #{orderId}
     </select>

+ 3 - 4
src/main/resources/mapper/PayOrderMapper.xml

@@ -220,10 +220,9 @@
     </select>
 
     <select id="getOpenidListByPermission" resultType="java.lang.String">
-        SELECT DISTINCT scr.openid FROM  cm_mall_share_code_record scr
-        LEFT JOIN cm_mall_order_share_code osc ON scr.orderId = osc.orderId
-        LEFT JOIN `cm_order` cm ON cm.orderId=osc.orderId
-        WHERE cm.orderId=#{orderId}
+        SELECT DISTINCT cm.crmopenid FROM  `cm_mall_operation_user` cm
+        LEFT JOIN `user` u ON u.userID = cm.userID
+        WHERE u.userID=#{userid} AND cm.unionId= #{unionid}
     </select>
 
     <select id="getSplitAccountList" resultType="com.caimei365.order.model.po.SplitAccountPo">

+ 3 - 3
src/main/resources/mapper/ShipMapper.xml

@@ -223,9 +223,9 @@
     </select>
 
     <select id="getOpenidListByPermission" resultType="java.lang.String">
-        SELECT DISTINCT * FROM  cm_mall_share_code_record scr
-         LEFT JOIN cm_order_product cmo ON cmo.orderID = scr.orderID
-        WHERE cmo.shopOrderID = #{shopOrderId}
+        SELECT DISTINCT cm.crmopenid FROM  `cm_mall_operation_user` cm
+        LEFT JOIN `user` u ON u.userID = cm.userID
+        WHERE u.userID=#{userid} AND cm.unionId= #{unionid}
     </select>
 
     <select id="getorderID" resultType="java.lang.String">