Преглед изворни кода

fix:技师审核消息通知

wrj пре 10 месеци
родитељ
комит
535a8827dd

+ 5 - 1
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/TJsController.java

@@ -277,7 +277,11 @@ public class TJsController extends BaseController {
             LambdaQueryWrapper<TJs> mhCompanyLambdaQueryWrapper = new LambdaQueryWrapper<>();
             mhCompanyLambdaQueryWrapper.eq(TJs::getId, js.getId()).eq(TJs::getnTong, JsStatusEnum.JS_NOT_PASS.getCode());
             js.setnTong(JsStatusEnum.JS_RETURN.getCode());
-            return R.ok(jsService.update(js, mhCompanyLambdaQueryWrapper));
+            boolean update = jsService.update(js, mhCompanyLambdaQueryWrapper);
+
+            jsService.jsNotification(js);
+
+            return R.ok(update);
         } catch (ServiceException s) {
             log.error(s.getMessage());
             return R.fail(s.getMessage());

+ 3 - 1
nightFragrance-admin/src/main/resources/application-test.yml

@@ -240,8 +240,10 @@ wechat:
   redirect-url: https://test.baoxianzhanggui.com/nightFragrance/sq/getAccessToken
   # 回调地址
   access-token-url: https://api.weixin.qq.com/sns/oauth2/access_token
-  # 消息模版ID
+  # 消息模版ID订单待接单通知
   template-id-1: HU2LfMIes91Au9kxR3VEoNYuMayxZoPNsFRfWNCmKrQ
+  # 入驻平台审核通知
+  template-id-2: els5FNc0BtFbSKhxIjbzqGX_9FmxAWyBhjL95qVevYE
 # 防止XSS攻击
 xss:
   # 过滤开关

+ 6 - 1
nightFragrance-common/src/main/java/com/ylx/common/config/WechatAccountConfig.java

@@ -33,9 +33,14 @@ public class WechatAccountConfig {
     private String accessTokenUrl;
 
     /**
-     * 消息模版ID
+     * 消息模版ID(新订单待接单通知)
      */
     private String templateId1;
 
+    /**
+     * 入驻申请审核结果通知
+     */
+    private String templateId2;
+
 
 }

+ 29 - 0
nightFragrance-common/src/main/resources/activiti.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                    http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/contex
+http://www.springframework.org/schema/context/spring-context.xsd
+http://www.springframework.org/schema/tx
+http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+    <!-- 这里可以使用 链接池 dbcp-->
+    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
+        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
+        <property name="url" value="jdbc:mysql://47.92.254.66:3306/night_fragrance?serverTimezone=Asia/Shanghai"/>
+        <property name="username" value="root" />
+        <property name="password" value="@RqGHG#KZ*C9ytkQ"/>
+        <property name="maxActive" value="3" />
+        <property name="maxIdle" value="1" />
+    </bean>
+
+    <bean id="processEngineConfiguration"
+          class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
+        <property name="dataSource" ref="dataSource" />
+        <property name="databaseSchemaUpdate" value="true"/>
+    </bean>
+
+</beans>

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/TJsService.java

@@ -27,4 +27,6 @@ public interface TJsService extends IService<TJs> {
     void newOrderNotification(String openId);
 
     boolean upPost(TJs js);
+
+    void jsNotification(TJs js);
 }

+ 33 - 6
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TJsServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ylx.common.config.WechatAccountConfig;
 import com.ylx.common.constant.MassageConstants;
 import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.StringUtils;
@@ -16,6 +17,7 @@ import com.ylx.massage.enums.JsStatusEnum;
 import com.ylx.massage.enums.OrderStatusEnum;
 import com.ylx.massage.mapper.TJsMapper;
 import com.ylx.massage.service.*;
+import com.ylx.massage.utils.DateTimeUtils;
 import com.ylx.massage.utils.LocationUtil;
 import com.ylx.massage.utils.WeChatUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -25,10 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -40,6 +39,9 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
     @Resource
     private TJsMapper mapper;
 
+    @Resource
+    private WechatAccountConfig wxPayProperties;
+
     @Resource
     private LocationUtil locationUtil;
 
@@ -118,7 +120,32 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
         TWxUser tWxUser = new TWxUser();
         tWxUser.setRole(1);
         wxUserService.update(tWxUser, wxLambdaQueryWrapper);
-        return this.update(js, jsLambdaQueryWrapper);
+
+        boolean update = this.update(js, jsLambdaQueryWrapper);
+
+        this.jsNotification(js1);
+
+        return update;
+    }
+    @Override
+    public void jsNotification(TJs js) {
+
+        cn.hutool.json.JSONObject param = JSONUtil.createObj();
+        //是否审核通过
+
+        if(JsStatusEnum.JS_PASS.getCode().equals(js.getnTong())){
+            param.set("const1", JSONUtil.createObj().set("value", "审核通过可以接单"));
+        }else{
+            param.set("const1", JSONUtil.createObj().set("value", "审核驳回请重新提交"));
+        }
+
+        //审核时间
+        param.set("time2", JSONUtil.createObj().set("value", DateTimeUtils.formatDate(new Date(), DateTimeUtils.DATE_NUMBER_YEAR_MONTH_FORMAT)));
+        //账号
+        param.set("character_string3", JSONUtil.createObj().set("value", js.getcOpenId()));
+
+        weChatUtil.notification(js.getcOpenId(), wxPayProperties.getTemplateId2(), param);
+
     }
 
     @Override
@@ -157,7 +184,7 @@ public class TJsServiceImpl extends ServiceImpl<TJsMapper, TJs> implements TJsSe
         param.set("thing18",JSONUtil.createObj().set("value", "李四"));
         param.set("time6",JSONUtil.createObj().set("value", "2022年11月11日 22:22"));
         param.set("thing27",JSONUtil.createObj().set("value", "湖南长沙岳麓"));
-        weChatUtil.notification(openId, param);
+//        weChatUtil.notification(openId, param);
 
     }
     @Override

+ 53 - 32
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ylx.common.config.WechatAccountConfig;
 import com.ylx.common.constant.MassageConstants;
 import com.ylx.common.core.domain.R;
 import com.ylx.common.exception.ServiceException;
@@ -48,6 +49,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
     @Resource
     private TOrderMapper orderMapper;
 
+    @Resource
+    private WechatAccountConfig wxPayProperties;
+
+
+
     @Resource
     private TWxUserService wxUserService;
 
@@ -261,7 +267,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         param.set("time6", JSONUtil.createObj().set("value", DateTimeUtils.formatDate(new Date(), DateTimeUtils.DATE_NUMBER_YEAR_MONTH_FORMAT)));
         param.set("thing27", JSONUtil.createObj().set("value", order.getName() + " " + order.getAddress()));
         TJs js = jsService.getById(order.getcJsId());
-        weChatUtil.notification(js.getcOpenId(), param);
+        weChatUtil.notification(js.getcOpenId(), wxPayProperties.getTemplateId1(), param);
 
     }
 
@@ -473,37 +479,52 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         // 根据orderid查询订单信息
         TOrder orderNew = getById(order.getcId());
         //待接单
-//        if (Objects.equals(orderNew.getnStatus(), OrderStatusEnum.WAIT_JD.getCode())) {
-//            TWxUser user = wxUserService.getById(orderNew.getcOpenId());
-//            // 更新用户金额 及下单此时
-//            TWxUser paramUser = new TWxUser();
-//            paramUser.setcOpenid(user.getcOpenid());
-//            // 金额归还对应账户
-//            paramUser.setdBalance(user.getdBalance().add(orderNew.getdTotalMoney()));
-//            // 消费金额对应减少
-//            paramUser.setdMoney(user.getdMoney().subtract(orderNew.getdTotalMoney()));
-//            // 下单次数减一
-//            paramUser.setnNum(user.getnNum() - MassageConstants.INTEGER_ONE);
-//            wxUserService.updateById(paramUser);
-//
-//            // 更新项目数据
-//            JSONArray objects = orderNew.getcGoods();
-//            objects.forEach(item -> {
-//                UpdateWrapper<TXiangmu> wrapper = new UpdateWrapper<>();
-//                // 获取参数
-//                wrapper.lambda().eq(TXiangmu::getcId, ((JSONObject) item).getString("cId"));
-//                // 设置数量
-//                wrapper.setSql(" n_sale_number = n_sale_number - " + ((JSONObject) item).getInteger("number"));
-//                xiangmuService.update(wrapper);
-//            });
-//            TOrder orderParam = new TOrder();
-//            orderParam.setcId(orderNew.getcId());
-//            orderParam.setnStatus(OrderStatusEnum.CANCEL.getCode());
-//            return updateById(orderParam);
-//
-//        } else
-
-        if (Objects.equals(orderNew.getnStatus(), OrderStatusEnum.WAIT_PAY.getCode())) {
+        if (Objects.equals(orderNew.getnStatus(), OrderStatusEnum.WAIT_JD.getCode())) {
+            TWxUser user = wxUserService.getById(orderNew.getcOpenId());
+            // 更新用户金额 及下单此时
+            TWxUser paramUser = new TWxUser();
+            paramUser.setId(user.getId());
+            paramUser.setcOpenid(user.getcOpenid());
+
+            if (orderNew.getPayType() == 2) {
+                // 金额归还对应账户
+                paramUser.setdBalance(user.getdBalance().add(orderNew.getTotalPrice()));
+            } else {
+                // 微信支付
+                // 生成退款单退款
+                RefundVoucher refundVoucher = new RefundVoucher();
+                refundVoucher.setRefundNo(generator.generateNextOrderNumber(OrderNumberGenerator.KEY_PREFIX_REFUND));
+                refundVoucher.setOrderNo(orderNew.getOrderNo());
+                refundVoucher.setMoney(orderNew.getTotalPrice());
+                refundVoucher.setOpenId(orderNew.getcOpenId());
+                refundVoucher.setReStatus(MassageConstants.INTEGER_ZERO);
+                refundVoucher.setReason("技师拒绝接单");
+                refundVoucherService.save(refundVoucher);
+                // 微信退款原路返回
+                rechargeService.refund(refundVoucher.getRefundNo(), null, orderNew.getOrderNo(), orderNew.getTotalPrice());
+            }
+            // 消费金额对应减少
+            paramUser.setdMoney(user.getdMoney().subtract(orderNew.getTotalPrice()));
+            // 下单次数减一
+            paramUser.setnNum(user.getnNum() - MassageConstants.INTEGER_ONE);
+            wxUserService.updateById(paramUser);
+
+            // 更新项目数据
+            JSONArray objects = orderNew.getcGoods();
+            objects.forEach(item -> {
+                UpdateWrapper<TXiangmu> wrapper = new UpdateWrapper<>();
+                // 获取参数
+                wrapper.lambda().eq(TXiangmu::getcId, ((JSONObject) item).getString("cId"));
+                // 设置数量
+                wrapper.setSql(" n_sale_number = n_sale_number - " + ((JSONObject) item).getInteger("number"));
+                xiangmuService.update(wrapper);
+            });
+            TOrder orderParam = new TOrder();
+            orderParam.setcId(orderNew.getcId());
+            orderParam.setnStatus(OrderStatusEnum.CANCEL.getCode());
+            return updateById(orderParam);
+
+        } else if (Objects.equals(orderNew.getnStatus(), OrderStatusEnum.WAIT_PAY.getCode())) {
             //待付款
             TOrder orderParam = new TOrder();
             orderParam.setcId(orderNew.getcId());

+ 2 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/utils/WeChatUtil.java

@@ -247,7 +247,7 @@ public class WeChatUtil {
      * @param token access_token
      * @return 返回包含微信公众号码ticket的Map
      */
-    public Map<?, ?> notification(String openid, cn.hutool.json.JSONObject data) {
+    public Map<?, ?> notification(String openid, String templateId,cn.hutool.json.JSONObject data) {
 
         String token = this.getToken();
         log.info("notification-access_token:{}", token);
@@ -256,7 +256,7 @@ public class WeChatUtil {
 
         cn.hutool.json.JSONObject param1 = JSONUtil.createObj();
         param1.put("touser", openid);
-        param1.put("template_id", wxPayProperties.getTemplateId1());
+        param1.put("template_id", templateId);
         param1.put("url", "https://test.baoxianzhanggui.com/fragrance/");
         param1.put("data", data);
         String result = HttpUtil.post(url, param1.toString());