Procházet zdrojové kódy

Merge remote-tracking branch 'origin/developerF' into developerC

# Conflicts:
#	src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java
zhijiezhao před 3 roky
rodič
revize
52bdf1ed56

+ 26 - 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", "wx0938e78f38bc203d");
-        link = link.replace("APPSECRET", "a563dd2c07c9c815a4e697c8b6cb73dc");
+        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);
@@ -258,6 +264,7 @@ public class WeChatService {
         log.info("微信公众号授权用户数据>>>>>>>>>>>" + userInfo);
         Map<String, Object> map = JSONObject.parseObject(userInfo, Map.class);
         return map;
+
     }
 
     /**
@@ -266,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;
     }
 
+
     /**
      * 推送收款微信模板消息(公众号)
      *
@@ -313,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 字符串
@@ -345,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");
         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);
@@ -366,14 +370,14 @@ public class WeChatService {
         data.put("keyword3", keyword3);
         data.put("remark", remark);
 
-        JSONObject miniProgram = new JSONObject();
-        miniProgram.put("appid", "o6rro6UAe6BRU30flEGvelFShDBw");
-        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/");
+        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 字符串
@@ -381,6 +385,7 @@ 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/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);
@@ -445,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);
@@ -469,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);
@@ -495,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();
@@ -507,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;
@@ -517,6 +518,4 @@ public class WeChatService {
             log.error("推送微信模板消息失败:", e);
         }
     }
-
-
 }

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

@@ -240,12 +240,15 @@ public interface OrderClubMapper {
     /**
      * 根据用户id获取用户openid列表(微信公众号openid,下单)
      */
-    List<String> getOpenidListByPermission(Integer orderId);
+    List<String> getOpenidListByPermission(String unionid);
 
+    String getOpenidunionId(Integer userid);
+     //查询是否是订金订单6060是订金订单其他不是
+    List<Integer> getProductOrder(Integer orderid);
     /*
      *根据orderId查询商品名称
      */
-    List<String> getOrderId(Integer orderId);
+    List<String> getOrderIds(Integer orderId);
     /*
      *根据orderId查询订单金额
      */
@@ -259,7 +262,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

@@ -85,7 +85,7 @@ public interface PayOrderMapper {
     /**
      * 根据用户id获取用户openid列表(微信公众号openid,下单)
      */
-    List<String> getOpenidListByPermission(Integer orderId);
+    List<String> getOpenidListByPermission(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);
 

+ 20 - 11
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -63,6 +63,8 @@ public class OrderClubServiceImpl implements OrderClubService {
     @Resource
     private WeChatService weChatService;
 
+    private SubmitServiceImpl submitService;
+
     /**
      * 获取各状态订单数量
      *
@@ -372,24 +374,26 @@ 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() ) {
+log.info("********************下单微信公众号消息推送***************************");
+        if (0==order.getSecondHandOrderFlag() && 0==order.getRebateFlag() && !"6060".equals(orderClubMapper.getProductOrder(order.getOrderId()))) {
+            log.info("*******"+order.getSecondHandOrderFlag()+"**********"+order.getRebateFlag());
+            log.info("*******获取公众名"+orderClubMapper.getOrderIds(orderId).toString());
+            String name="0";
         try {
             String accessToken = weChatService.getAccessToken();
-            List<String> openidList = orderClubMapper.getOpenidListByPermission(orderId);
+            List<String> openidList = orderClubMapper.getOpenidListByPermission(submitService.unionId);
             openidList.removeIf(Objects::isNull);
-            String name= orderClubMapper.getOrderId(orderId).toString();
+            String i=orderClubMapper.getOrderIds(orderId).toString();
+            if(i.length()<10){
+                 name= StringUtils.strip(i, "[]");
+            }else { name= StringUtils.strip(i.substring(0,11), "[]"); name+="...";}
+
             String associateTitle = "订单已成功提交,等待付款!";
             Double money=order.getPayTotalFee();
             String orderno = orderClubMapper.getOrderNo(orderId);
             String remarkText = "下单时间:" + order.getOrderTime() +"点击详情进行付款";
             // 跳转到【小程序付款-选择支付方式页面】
-            String pagePath = "pages/user/order/order-payment?type=payfirm&orderId="+orderId;
+            String pagePath = "pages/user/order/order-details?orderId="+orderId;
             for (String openid : openidList) {
                 // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
                 weChatService.sendTemplateMsgs(accessToken, openid, associateTitle, name,orderno, money, remarkText, pagePath);
@@ -398,7 +402,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);
     }

+ 26 - 0
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -194,6 +194,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                 //保存收款记录
                 productService.saveDiscernReceipt(balancePayFee, orderId, "【订单支付,余额抵扣】");
             }
+            //可用=可用-本次抵扣
             availableMoney = MathUtil.sub(availableMoney, balancePayFee).doubleValue();
             payOrderMapper.updateMoneyByUserId(userMoney, availableMoney, order.getUserId());
             log.info("【订单支付,余额抵扣】>>>>>>>>>>>更新用户余额(update[user])userId:" + order.getUserId() + ",orderId:" + orderId);
@@ -777,6 +778,31 @@ public class PayOrderServiceImpl implements PayOrderService {
             //(收款买家)收款状态:1待收款、2部分收款、3已收款
             order.setReceiptStatus(3);
             log.info("【支付异步回调】>>>>>>>>>>>>>>订单(全部支付),修改订单状态:" + order.getStatus() + ",orderId:" + orderId);
+            log.info("************************订单支付完成消息推送*********************");
+            //判断是否是二手订单和返佣订单
+                if (0 == orderClubMapper.getsecondHandOrderFlag(orderId) && 0 == orderClubMapper.getrebateFlag(orderId) && !"6060".equals(orderClubMapper.getProductOrder(orderId))) {
+                    try {
+                        String accessToken = weChatService.getAccessToken();
+                        log.info(">>>>>>>>>>>>>>>>>"+userid+">>>>>>>>>>>>>>"+orderClubMapper.getOpenidunionId(userid));
+                        List<String> openidList = payOrderMapper.getOpenidListByPermission(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()) {

+ 27 - 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,31 @@ public class ReceiptServiceImpl implements ReceiptService {
                             }
                         }
                     }
+                    log.info("************************订单支付完成消息推送*********************");
+                    if(3 == order.getReceiptStatus()) {
+                        if (0==order.getSecondHandOrderFlag() && 0==order.getRebateFlag() && !"6060".equals(orderClubMapper.getProductOrder(order.getOrderId())) ) {
+                            SubmitServiceImpl s=new SubmitServiceImpl();
+                            try {
+                                String accessToken = weChatService.getAccessToken();
+                                List<String> openidList = orderClubMapper.getOpenidListByPermission(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 +1792,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);
     }
 

+ 25 - 24
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -372,30 +372,31 @@ public class ShipServiceImpl implements ShipService {
         /**
          * 发货后消息推送
          */
-        if (1 == orderClubMapper.getreceiptStatus(logisticsDto.getShopOrderId())) {
-            if (0 == orderClubMapper.getsecondHandOrderFlag(logisticsDto.getShopOrderId()) && 0 == orderClubMapper.getrebateFlag(logisticsDto.getShopOrderId())) {
-                try {
-                    LogisticsInformationPo logisticsInformation = new LogisticsInformationPo();
-                    String accessToken = weChatService.getAccessToken();
-                    List<String> openidList = shipMapper.getOpenidListByPermission(logisticsDto.getShopOrderId());
-                    openidList.removeIf(Objects::isNull);
-                    String company = logisticsInformation.getLogisticsCompanyName();
-                    String companyno = logisticsInformation.getNu();
-                    String associateTitle = "尊敬的采美客户,您购买的订单已经发货啦~";
-                    String time = logisticsBatch.getDeliveryTime().toString();
-                    String orderno = shopOrder.getOrderNo();
-                    String remarkText = "收到货后请记得确认收货哟~";
-                    // 跳转到【跳转到小程序订单详情页面】
-                    String pagePath = "pages/user/order/order-details?orderId=" + shipMapper.getorderID(logisticsDto.getShopOrderId());
-                    for (String openid : openidList) {
-                        // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
-                        weChatService.sendTemplateMsgy(accessToken, openid, associateTitle, orderno, time, company, companyno, remarkText, pagePath);
-                    }
-                } catch (Exception e) {
-                    log.error("【订单发货通知】获取微信公众号access_token异常!", e);
-                }
-            }
-        }
+//        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(shopOrder.getUserId(),s.unionId);
+//                    openidList.removeIf(Objects::isNull);
+//                    String company = logisticsInformation.getLogisticsCompanyName();
+//                    String companyno = logisticsInformation.getNu();
+//                    String associateTitle = "尊敬的采美客户,您购买的订单已经发货啦~";
+//                    String time = logisticsBatch.getDeliveryTime().toString();
+//                    String orderno = shopOrder.getOrderNo();
+//                    String remarkText = "收到货后请记得确认收货哟~";
+//                    // 跳转到【跳转到小程序订单详情页面】
+//                    String pagePath = "pages/user/order/order-details?orderId=" + shipMapper.getorderID(logisticsDto.getShopOrderId());
+//                    for (String openid : openidList) {
+//                        // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
+//                        weChatService.sendTemplateMsgy(accessToken, openid, associateTitle, orderno, time, company, companyno, remarkText, pagePath);
+//                    }
+//                } catch (Exception e) {
+//                    log.error("【订单发货通知】获取微信公众号access_token异常!", e);
+//                }
+//            }
+//        }
                 return ResponseJson.success(logisticsBatch.getId());
 
     }

+ 49 - 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;
@@ -56,6 +58,8 @@ public class SubmitServiceImpl implements SubmitService {
     @Resource
     private OrderClubMapper orderClubMapper;
     @Resource
+    private WeChatService weChatService;
+    @Resource
     private CartClubMapper cartClubMapper;
     @Resource
     private CartSellerMapper cartSellerMapper;
@@ -64,6 +68,9 @@ public class SubmitServiceImpl implements SubmitService {
     @Resource
     private PayOrderMapper payOrderMapper;
 
+    public static String unionId;
+    public static Integer oderid;
+
     /**
      * 生成订单
      *
@@ -122,6 +129,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);
         }
@@ -313,6 +322,9 @@ public class SubmitServiceImpl implements SubmitService {
         mainOrder.setUpdateDate(curDateStr);
         // 订单状态 0 有效  其它无效
         mainOrder.setDelFlag(0);
+
+
+
         //协销下单
         if (3 == orderParamBo.getCartType()) {
             mainOrder.setSpId(orderParamBo.getServiceProviderId());
@@ -1065,6 +1077,9 @@ public class SubmitServiceImpl implements SubmitService {
         submitMapper.insertMainOrder(mainOrder);
         log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增主订单(insert[cm_order])orderId:" + mainOrder.getOrderId());
 
+
+
+
         /*
          * 保存订单促销,返回订单促销Id
          */
@@ -1526,6 +1541,40 @@ public class SubmitServiceImpl implements SubmitService {
             log.info("【提交订单】>>>>删除当前机构 用户 购物车数据!");
         }
 
+        log.info("**********************微信模板消息推送*****************************");
+        List<Integer> productIds = orderClubMapper.getProductOrder(mainOrder.getOrderId());
+        if (0==mainOrder.getSecondHandOrderFlag() && 0==mainOrder.getRebateFlag() && (null != productIds && !productIds.contains(6060)) ) {
+            log.info("*******获取公众名"+orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString());
+            String name="0";
+            try {
+                String accessToken = weChatService.getAccessToken();
+                List<String> openidList = orderClubMapper.getOpenidListByPermission(unionId);
+                openidList.removeIf(Objects::isNull);
+                String i=orderClubMapper.getOrderIds(mainOrder.getOrderId()).toString();
+                if(i.length()<10){
+                     name= StringUtils.strip(i, "[]");
+                }else { name= StringUtils.strip(i.substring(0,11), "[]"); name+="...";}
+
+                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-details?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 *******************");
 
         /*

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

@@ -497,16 +497,24 @@
         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 openid FROM `wechat_user` WHERE 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="getProductOrder" resultType="java.lang.Integer">
+        SELECT productID FROM `cm_order_product` WHERE orderId=#{orderid}
+    </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 +525,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 +541,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>

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

@@ -219,10 +219,7 @@
     </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 openid FROM `wechat_user` WHERE 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">