From d98b610bd0793dd5d29f623400a1d0a81bb55334 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 21 八月 2025 17:46:27 +0800
Subject: [PATCH] 优化

---
 server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java                            |   42 
 small-program/App.vue                                                                           |   88 ++-
 server/services/src/main/resources/application-dev.yml                                          |  108 +++-
 small-program/pages/withdrawal/withdrawal.vue                                                   |   93 +++
 server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java                           |  197 ++++++++
 server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                           |    4 
 server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java         |    4 
 server/services/src/main/java/com/doumee/service/business/AliSmsService.java                    |  180 ++++++++
 server/services/src/main/resources/application-test.yml                                         |   45 +
 server/web/src/main/java/com/doumee/api/web/OrdersApi.java                                      |   43 +
 small-program/store/index.js                                                                    |    5 
 server/pom.xml                                                                                  |   11 
 server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java                         |    2 
 server/services/src/main/java/com/doumee/core/constants/Constants.java                          |  112 +++++
 server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java     |   17 
 server/services/src/main/java/com/doumee/dao/business/model/Orders.java                         |    5 
 server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java           |    5 
 server/services/src/main/java/com/doumee/service/business/OrdersService.java                    |   19 
 small-program/pages/index/index.vue                                                             |   34 +
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java           |  249 ++++++++---
 server/admin/src/main/java/com/doumee/api/business/OrdersController.java                        |   14 
 server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java |    2 
 22 files changed, 1,026 insertions(+), 253 deletions(-)

diff --git a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
index 739bd96..983a2e0 100644
--- a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -62,13 +62,13 @@
         return ApiResponse.success(null);
     }
 
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:orders:update")
-    public ApiResponse updateById(@RequestBody Orders orders) {
-        ordersService.updateById(orders);
-        return ApiResponse.success(null);
-    }
+//    @ApiOperation("鏍规嵁ID淇敼")
+//    @PostMapping("/updateById")
+//    @RequiresPermissions("business:orders:update")
+//    public ApiResponse updateById(@RequestBody Orders orders) {
+//        ordersService.updateById(orders);
+//        return ApiResponse.success(null);
+//    }
 
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
diff --git a/server/pom.xml b/server/pom.xml
index 51da524..4e1b4ed 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -263,6 +263,17 @@
       <version>0.2.15</version>
     </dependency>
 
+    <dependency>
+      <groupId>com.aliyun</groupId>
+      <artifactId>aliyun-java-sdk-core</artifactId>
+      <version>3.5.0</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.aliyun</groupId>
+      <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+      <version>1.1.0</version>
+    </dependency>
 
  <!--   <dependency>
       <groupId>com.azure.spring</groupId>
diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index 06ec043..47d22e5 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -76,7 +76,9 @@
     public void refreshToken(String token,Member member) {
         try {
             if(Objects.nonNull(member)){
-                redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+                redisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+//                redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);
+//                redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(member),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
             }
         } catch (Exception e) {
 
diff --git a/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java b/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
index 0d47a1b..440b45d 100644
--- a/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
+++ b/server/services/src/main/java/com/doumee/config/wx/SendWxMessage.java
@@ -5,15 +5,21 @@
 import com.doumee.core.constants.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.model.IdentityInfo;
+import com.doumee.dao.business.model.Orders;
+import com.doumee.dao.business.model.WithdrawalOrders;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,9 +35,16 @@
     private static String goodsOrderUrl = "pages/settlementDetails/settlementDetails?goodsOrderId=";
 
     private static String identityInfoUrl = "pages/mine/mine";
+
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    /**
+     * 淇℃伅璁よ瘉
+     * @param openid
+     * @param identityInfo
+     * @throws WxErrorException
+     */
     public  void  identityInfoMessage(String openid, IdentityInfo identityInfo) throws WxErrorException {
         RestTemplate restTemplate = new RestTemplate();
         String accessToken = WxMiniConfig.wxMaService.getAccessToken();
@@ -43,12 +56,12 @@
         //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
         wxMsgVO.setTouser(openid);
         //璁㈤槄娑堟伅妯℃澘id
-        wxMsgVO.setTemplate_id("4H9ztG4E9BxJLwMuYSZ6oiM7yb4KX7u7bYhkhYJP0-Y");
+        wxMsgVO.setTemplate_id("VJho7-lf-4_WZFfOzenDndgwNDIA0EvCiE6vqBnExpQ");
         Map<String, TemplateData> m = new HashMap<>(4);
-        m.put("thing11", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"鐢ㄥ伐璁よ瘉":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"杩愯揣璁よ瘉":"渚涢璁よ瘉"));
-        m.put("phrase4", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"璁よ瘉閫氳繃":"璁よ瘉鏈�氳繃"));
-        m.put("date3", new TemplateData(DateUtil.getFomartDate(identityInfo.getAuditTime(),"yyyy-MM-dd HH:mm:ss")));
-        m.put("thing5", new TemplateData(identityInfo.getAuditRemark()));
+        m.put("thing2", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"鐢ㄥ伐璁よ瘉":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"杩愯揣璁よ瘉":"渚涢璁よ瘉"));
+        m.put("phrase6", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"璁よ瘉閫氳繃":"璁よ瘉鏈�氳繃"));
+        m.put("time12", new TemplateData(DateUtil.getFomartDate(identityInfo.getAuditTime(),"yyyy-MM-dd HH:mm")));
+        m.put("thing14", new TemplateData(identityInfo.getAuditRemark()));
         wxMsgVO.setPage(identityInfoUrl);
         wxMsgVO.setData(m);
         ResponseEntity<String> responseEntity =
@@ -57,4 +70,178 @@
     }
 
 
+    /**
+     *
+     * @param openidList
+     * @param orders
+     * @param cancelType 鍙栨秷绫诲瀷锛�0=骞冲彴鍙栨秷锛�1=鍙戝崟鏂瑰彇娑堬紱1=鎺ュ崟鏂瑰彇娑�
+     * @throws WxErrorException
+     */
+    public  void  cancelMessage(List<String> openidList, Orders orders,Integer cancelType ) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 璁㈠崟鍙栨秷涓氬姟  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8");
+        Map<String, TemplateData> m = new HashMap<>(5);
+        m.put("character_string3", new TemplateData(orders.getCode()));
+        m.put("thing2", new TemplateData(Constants.orderType.getName(orders.getType())));
+        m.put("thing1", new TemplateData(orders.getLocation() + (StringUtils.isNotBlank(orders.getLocationRemark())?orders.getLocationRemark():"")));
+        m.put("date8", new TemplateData(DateUtil.getFomartDate(orders.getCancelTime(),"yyyy-MM-dd HH:mm:ss")));
+        m.put("thing6", new TemplateData(Constants.equalsInteger(cancelType,Constants.ZERO)?"骞冲彴鍙栨秷":Constants.equalsInteger(cancelType,Constants.ONE)?"鍙戝崟鏂瑰彇娑�":"鎺ュ崟鏂瑰彇娑�"));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        if(CollectionUtils.isNotEmpty(openidList)){
+            for (String openid:openidList) {
+                //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+                wxMsgVO.setTouser(openid);
+                ResponseEntity<String> responseEntity =
+                        restTemplate.postForEntity(url, wxMsgVO, String.class);
+                log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁㈠崟鍙栨秷涓氬姟锛歿}", JSONObject.toJSONString(responseEntity));
+            }
+        }else{
+            log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁㈠崟鍙栨秷涓氬姟锛歿}", "鏃犱汉鍛樹俊鎭�");
+        }
+    }
+
+
+    public  void  acceptMessage(String openid, Orders orders,String memberName,String memberPhone) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 鎺ュ崟涓氬姟  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        wxMsgVO.setTouser(openid);
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("oVjOBLcHxIlGzOMJsdInmgI5CHGXh-UTvMzQqfFOnIg");
+        Map<String, TemplateData> m = new HashMap<>(4);
+        m.put("character_string3", new TemplateData(orders.getCode()));
+        m.put("thing1", new TemplateData(Constants.orderType.getName(orders.getType())));
+        m.put("thing15", new TemplateData(memberName));
+        m.put("phone_number8", new TemplateData(memberPhone));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMsgVO, String.class);
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁㈠崟鍙栨秷涓氬姟锛歿}", JSONObject.toJSONString(responseEntity));
+    }
+
+
+    public  void  orderUpdMessage(String openid, Orders orders) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 璁㈠崟鍙樻洿閫氱煡  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        wxMsgVO.setTouser(openid);
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk");
+        Map<String, TemplateData> m = new HashMap<>(3);
+        m.put("character_string1", new TemplateData(orders.getCode()));
+        m.put("thing3", new TemplateData("鍙樻洿璁㈠崟鏃ユ湡"));
+        //鍙樻洿鍚庢棩鏈燂細07-23鑷�07-25
+        m.put("thing5", new TemplateData("鍙樻洿鍚庢棩鏈�:" +DateUtil.getFomartDate(orders.getStartDate(),"MM-dd") + "鑷�" +DateUtil.getFomartDate(orders.getEndDate(),"MM-dd")));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMsgVO, String.class);
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁㈠崟鍙樻洿閫氱煡锛歿}", JSONObject.toJSONString(responseEntity));
+    }
+
+
+
+
+    public  void  withdrawalMessage(String openid, WithdrawalOrders withdrawalOrders) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 鎻愮幇鎴愬姛閫氱煡  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        wxMsgVO.setTouser(openid);
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("fNJy4545hcrH83bP3a1vszs7XEKWjXMsrfr2XCNsql0");
+        Map<String, TemplateData> m = new HashMap<>(4);
+        m.put("phrase2", new TemplateData("宸叉墦娆�"));
+        m.put("amount1", new TemplateData((new BigDecimal(withdrawalOrders.getAmount().toString()).divide(new BigDecimal("100"))).toString()));
+        m.put("time3", new TemplateData(DateUtil.getFomartDate(withdrawalOrders.getUpdateTime(),"yyyy.MM.dd HH.mm.ss")));
+        m.put("thing4", new TemplateData("鎵撴鎴愬姛锛岃娉ㄦ剰鏌ユ敹"));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMsgVO, String.class);
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 鎻愮幇鎴愬姛閫氱煡锛歿}", JSONObject.toJSONString(responseEntity));
+    }
+
+
+    public  void  revenueMessage(String openid, Orders orders) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 璁㈠崟鏀剁泭閫氱煡  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        wxMsgVO.setTouser(openid);
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("tDpYImlrdv-0d3euTrHbYZ1cEZvjVHTNlqHvV0tpLHg");
+        Map<String, TemplateData> m = new HashMap<>(5);
+        m.put("character_string8", new TemplateData(orders.getCode()));
+        m.put("phrase3", new TemplateData("宸叉敮浠�"));
+        m.put("phrase4", new TemplateData("寰俊鏀粯"));
+        m.put("amount6", new TemplateData((new BigDecimal(orders.getReceiveAccount().toString()).divide(new BigDecimal("100")))+"鍏�"));
+        m.put("date7", new TemplateData(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd HH:mm:ss")));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMsgVO, String.class);
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 璁㈠崟鏀剁泭閫氱煡锛歿}", JSONObject.toJSONString(responseEntity));
+    }
+
+
+    public  void  autoDispatchMessage(String openid, Orders orders,BigDecimal distance) throws WxErrorException {
+        RestTemplate restTemplate = new RestTemplate();
+        String accessToken = WxMiniConfig.wxMaService.getAccessToken();
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 - 鏈嶅姟娲惧崟  -> accessToken锛歿}",accessToken);
+        //杩欓噷绠�鍗曡捣瑙佹垜浠瘡娆¢兘鑾峰彇鏈�鏂扮殑access_token锛堟椂闂村紑鍙戜腑锛屽簲璇ュ湪access_token蹇繃鏈熸椂鍐嶉噸鏂拌幏鍙栵級
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken;
+        //鎷兼帴鎺ㄩ�佺殑妯$増
+        WxMsgVO wxMsgVO = new WxMsgVO();
+        wxMsgVO.setTouser(openid);
+        //璁㈤槄娑堟伅妯℃澘id
+        wxMsgVO.setTemplate_id("1h6JYpQf-mDKV4tYQ6gGDONfx1awqtm3-y9W8vUraT4");
+        Map<String, TemplateData> m = new HashMap<>(5);
+        m.put("thing2", new TemplateData(Constants.orderType.getName(orders.getType())));
+        m.put("thing3", new TemplateData(orders.getOrderContent()));
+        m.put("phrase4", new TemplateData("姝ゅ湴璺濈鎮�"+distance+"鍏噷"));
+        m.put("amount28", new TemplateData(orders.getEstimatedAccount().toString()));
+        m.put("thing12", new TemplateData("宸ュ崟灏嗕簬"+DateUtil.getFomartDate(orders.getStartDate(),"MM-dd")+"寮�濮�"));
+        //TODO 璺宠浆鍦板潃
+        wxMsgVO.setPage("");
+        wxMsgVO.setData(m);
+        //鐢ㄦ埛鐨刼penid锛堣鍙戦�佺粰閭d釜鐢ㄦ埛锛�
+        ResponseEntity<String> responseEntity =
+                restTemplate.postForEntity(url, wxMsgVO, String.class);
+        log.info("寰俊灏忕▼搴�->寰俊娑堟伅閫氱煡 鏈嶅姟娲惧崟锛歿}", JSONObject.toJSONString(responseEntity));
+    }
+
+
 }
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
index 08bf046..322a247 100644
--- a/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
+++ b/server/services/src/main/java/com/doumee/config/wx/WxMiniConfig.java
@@ -31,7 +31,7 @@
     public static WxMaService wxMaService;
     /********寰俊灏忕▼搴忔敮浠�**********/
     public static JsapiService wxPayService;
-    public static WxPayService wxPayV2Service;
+//    public static WxPayService wxPayV2Service;
     public static RefundService refundService;
     public static JsapiServiceExtension jsapiExtService;
     public static BillDownloadService billDownloadService;
@@ -48,8 +48,7 @@
     void init() {
         this.load_WxMaService();
         this.load_wxPayService();
-        this.load_wxPayV2Service();
-        this.load_transferToUser();
+//        this.load_wxPayV2Service();
         this.load_transferToUser();
         this.wxProperties = wxPayProperties;
     }
@@ -63,8 +62,8 @@
             config.setAppid(StringUtils.trimToNull(wxPayProperties.getSubAppId()));
             config.setSecret(StringUtils.trimToNull(wxPayProperties.getSubAppSecret()));
         }else {
-            config.setAppid(StringUtils.trimToNull(wxPayProperties.getAppId()));
-            config.setSecret(StringUtils.trimToNull(wxPayProperties.getAppSecret()));
+//            config.setAppid(StringUtils.trimToNull(wxPayProperties.getAppId()));
+//            config.setSecret(StringUtils.trimToNull(wxPayProperties.getAppSecret()));
         }
         config.setMsgDataFormat("JSON");
         //config.setToken("");
@@ -100,22 +99,22 @@
     /**
      * 鍒濆鍖栧井淇″皬绋嬪簭鏀粯
      */
-    public void load_wxPayV2Service()
-    {
-        WxPayConfig payConfig = new WxPayConfig();
-        payConfig.setTradeType(WxPayConstants.TradeType.JSAPI);
-        payConfig.setSignType(WxPayConstants.SignType.MD5);
-        payConfig.setAppId(StringUtils.trimToNull(wxPayProperties.getAppId()));
-        payConfig.setSubAppId(StringUtils.trimToNull(wxPayProperties.getSubAppId()));
-        payConfig.setMchId(StringUtils.trimToNull(wxPayProperties.getMchId()));
-        payConfig.setSubMchId(StringUtils.trimToNull(wxPayProperties.getSubMchId()));
-        payConfig.setMchKey(StringUtils.trimToNull(wxPayProperties.getMchKey()));
-//        payConfig.setKeyPath(StringUtils.trimToNull(wxPayProperties.getKeyPath()));
-        payConfig.setNotifyUrl(StringUtils.trimToNull(wxPayProperties.getNotifyUrl()));
-        WxPayService wxPayService = new WxPayServiceImpl();
-        wxPayService.setConfig(payConfig);
-        this.wxPayV2Service = wxPayService;
-    }
+//    public void load_wxPayV2Service()
+//    {
+//        WxPayConfig payConfig = new WxPayConfig();
+//        payConfig.setTradeType(WxPayConstants.TradeType.JSAPI);
+//        payConfig.setSignType(WxPayConstants.SignType.MD5);
+//        payConfig.setAppId(StringUtils.trimToNull(wxPayProperties.getAppId()));
+//        payConfig.setSubAppId(StringUtils.trimToNull(wxPayProperties.getSubAppId()));
+//        payConfig.setMchId(StringUtils.trimToNull(wxPayProperties.getMchId()));
+//        payConfig.setSubMchId(StringUtils.trimToNull(wxPayProperties.getSubMchId()));
+//        payConfig.setMchKey(StringUtils.trimToNull(wxPayProperties.getMchKey()));
+////        payConfig.setKeyPath(StringUtils.trimToNull(wxPayProperties.getKeyPath()));
+//        payConfig.setNotifyUrl(StringUtils.trimToNull(wxPayProperties.getNotifyUrl()));
+//        WxPayService wxPayService = new WxPayServiceImpl();
+//        wxPayService.setConfig(payConfig);
+//        this.wxPayV2Service = wxPayService;
+//    }
 
 
     /**
@@ -136,6 +135,7 @@
 //    }
 
 
+    //杞处涓氬姟
     public void load_transferToUser()
     {
         TransferToUser transferToUser = new TransferToUser(
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java b/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
index 08ba1cb..2a05a1f 100644
--- a/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
+++ b/server/services/src/main/java/com/doumee/config/wx/WxPayProperties.java
@@ -38,7 +38,7 @@
     /**
      * 鏀粯API瀵嗛挜
      */
-    private String subMchKey;
+//    private String subMchKey;
 
     /**
      * 鏀粯鍥炶皟鍦板潃
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index c2f64ee..14afe17 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -592,4 +592,116 @@
 
     }
 
+
+
+    public  enum orderType {
+        ygd(0, "鐢ㄥ伐鍗�"),
+        hyd(1, "璐ц繍鍗�"),
+        scd(2, "閫侀鍗�"),
+
+        ;
+        // 鎴愬憳鍙橀噺
+        private int key;
+        private String name;
+
+        // 鏋勯�犳柟娉�
+        orderType(int key, String name) {
+            this.name = name;
+            this.key = key;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (orderType c : orderType.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
+
+
+
+    public  enum smsContent {
+        accept(0, "SMS_491325122","鎮ㄧ殑{order}璁㈠崟宸茶鎺ュ崟锛佹椂闂达細{time1}-{time2}锛屾帴鍗曟柟锛歿name}銆�"),
+        receiveCancel(1, "SMS_491055243","鎮ㄧ殑{order}璁㈠崟锛屾椂闂达細{time1}-{time2}锛屽凡琚帴鍗曟柟鍙栨秷锛岃鍗曞凡閲嶆柊杩涘叆鎺ュ崟澶у巺銆�"),
+        platformCancel(2, "SMS_491375152","鎮ㄧ殑{order}璁㈠崟锛屾椂闂达細{time1}-{time2},宸茬敱骞冲彴鍙栨秷銆傚鏈夌枒闂鑱旂郴瀹㈡湇銆�"),
+        agreeUpd(3, "SMS_491190259","鎺ュ崟鏂瑰凡鍚屾剰鎮ㄥ皢{order}鐨勮鍗曟椂闂翠慨鏀逛负{time1}鑷硔time2}銆�"),
+        disAgreeUpd(4, "SMS_491085252","鎺ュ崟鏂瑰凡鎷掔粷鎮ㄥ皢{order}鐨勮鍗曟椂闂翠慨鏀逛负{time1}-{time2}銆傜郴缁熷凡閲嶆柊灏嗚鍗曟斁鍏ユ帴鍗曞ぇ鍘呫��"),
+        orderUpd(5, "SMS_491010267","璇锋敞鎰忥紒鎮ㄦ壙鎺ョ殑{order}璁㈠崟锛屽鎴峰皢璁㈠崟鏃堕棿淇敼涓簕time1}-{time2}銆傝鍓嶅線纭鏄惁鎺ュ彈锛岃秴鏃朵笉澶勭悊灏嗚涓哄悓鎰忋��"),
+        releaseCancel(6, "SMS_491150253","鎮ㄦ壙鎺ョ殑{order}璁㈠崟锛屾椂闂达細{time1}-{time2}锛屽凡琚彂鍗曟柟鍙栨秷銆傛偍鍙墠寰�鎺ュ崟澶у巺閲嶆柊鎺ュ崟銆�"),
+        platformCancel2(7, "SMS_491420143","鎮ㄦ壙鎺ョ殑{order}璁㈠崟锛屾椂闂达細{time1}-{time2}锛屽凡鐢卞钩鍙板彇娑堛�傚鏈夌枒闂鑱旂郴瀹㈡湇銆�"),
+        dispatch(8, "SMS_491180276","宸蹭负鎮ㄦ櫤鑳藉尮閰嶈鍗曘�傝鍗曠被鍨嬶細{order}锛屾椂闂达細{time1}-{time2}锛岃窛绂伙細{distance}锛岄璁¤垂鐢▄money}銆傝鍓嶅線纭銆�"),
+        pay(9, "SMS_491180278","鎮ㄦ壙鎺ョ殑{order}璁㈠崟娆鹃」宸插埌璐︼紒鍒拌处閲戦锛歿money}銆傚彲鍦ㄥ皬绋嬪簭璐︽埛浣欓杩涜鏌ョ湅銆�"),
+        authentication(10, "SMS_491055290","鎮ㄧ敵璇风殑{authentication}鐨剓order}璁よ瘉{status}銆傝鍦ㄥ皬绋嬪簭鏌ョ湅璇︽儏銆�"),
+        ;
+        // 鎴愬憳鍙橀噺
+        private int key;
+        private String code;
+        private String name;
+
+        // 鏋勯�犳柟娉�
+        smsContent(int key,String code, String name) {
+            this.name = name;
+            this.code = code;
+            this.key = key;
+        }
+
+        // 鏅�氭柟娉�
+        public static Constants.smsContent getSmsContent(int index) {
+            for (smsContent c : smsContent.values()) {
+                if (c.getKey() == index) {
+                    return c;
+                }
+            }
+            return null;
+        }
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public void setCode(String code) {
+            this.code = code;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+    }
+
+
+
+
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
index cd3435a..197b04e 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -193,7 +193,7 @@
     private Integer isUpdate;
 
     @ApiModelProperty(value = "淇敼鏃堕棿", example = "1")
-    private Integer isUpdateTime;
+    private Date isUpdateTime;
 
     @ApiModelProperty(value = "鎺ュ崟鏂归粦鍚嶅崟member:id 澶氫釜浠�,鍒嗗壊")
     private String blackReceive;
@@ -364,6 +364,9 @@
     @TableField(exist = false)
     private BigDecimal queryLgt;
 
+    @ApiModelProperty(value = "鏄惁鍙彇娑堬細0=鍙互锛�1=涓嶅彲浠�", example = "1")
+    @TableField(exist = false)
+    private Integer cancelStatus;
 
 }
 
diff --git a/server/services/src/main/java/com/doumee/service/business/AliSmsService.java b/server/services/src/main/java/com/doumee/service/business/AliSmsService.java
new file mode 100644
index 0000000..71625fb
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/AliSmsService.java
@@ -0,0 +1,180 @@
+package com.doumee.service.business;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.aliyuncs.profile.IClientProfile;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.CategoryMapper;
+import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.IdentityInfo;
+import com.doumee.dao.business.model.Orders;
+import com.doumee.dao.dto.CateringDTO;
+import com.github.pagehelper.Constant;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/7/23 11:37
+ */
+@Service
+@Slf4j
+public class AliSmsService {
+
+    protected Logger logger = LogManager.getLogger("sms");
+
+    private final static String ACCESS_KEY_ID = "LTAI5tMkg7wwV74a8H6Bm3Ej";
+    private final static String ACCESS_KEY_SECRET = "FcHKST36sfwfo706L6bvrweGFIbp3n";
+    private final static String SING_NAME = "姗欐澶╀笅绉戞妧";
+
+
+    public void sendSms(int type, String phone, Orders orders, String receiveName, String businessPhone, BigDecimal distance, IdentityInfo identityInfo,CategoryMapper categoryMapper){
+        Constants.smsContent smsContent = Constants.smsContent.getSmsContent(type);
+        Map<String,Object> tempParam = new HashMap<>();
+        if(smsContent.getName().indexOf("time1")>=Constants.ZERO){
+            tempParam.put("time1", DateUtil.formatDate(orders.getStartDate(),"MM-dd"));
+        }
+        if(smsContent.getName().indexOf("time2")>=Constants.ZERO){
+            tempParam.put("time2", DateUtil.formatDate(orders.getEndDate(),"MM-dd"));
+        }
+        if(smsContent.getName().indexOf("name")>=Constants.ZERO){
+            tempParam.put("name", receiveName);
+        }
+        if(smsContent.getName().indexOf("money")>=Constants.ZERO){
+            tempParam.put("money", new BigDecimal(orders.getReceiveAccount().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP)+"鍏�");
+        }
+        if(smsContent.getName().indexOf("distance")>=Constants.ZERO){
+            tempParam.put("distance", distance +"km");
+        }
+        //璁よ瘉鐭俊 鐗规畩澶勭悊
+        if(Constants.equalsInteger(smsContent.getKey(),Constants.smsContent.authentication.getKey())){
+            //璁よ瘉绫诲瀷
+            if(smsContent.getName().indexOf("authentication")>=Constants.ZERO){
+                tempParam.put("authentication", Constants.equalsInteger(identityInfo.getAuthType(),Constants.ZERO)?"涓汉":identityInfo.getCompanyName());
+            }
+            if(smsContent.getName().indexOf("order")>=Constants.ZERO){
+                tempParam.put("order", Constants.orderType.getName(identityInfo.getType()).replace("鍗�",""));
+            }
+            if(smsContent.getName().indexOf("status")>=Constants.ZERO){
+                tempParam.put("status", Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"宸查�氳繃":"鏈�氳繃");
+            }
+        }else{
+            if(smsContent.getName().indexOf("order")>=Constants.ZERO){
+                String order = "";
+                //鏌ヨ璁㈠崟鐨勭被鍨嬩俊鎭�
+                if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+                    order = Constants.workType.getName(orders.getWorkType());
+                    Category category = categoryMapper.selectById(orders.getCategoryId());
+                    if(Objects.nonNull(category)){
+                        order = category.getName() + order;
+                    }
+                }else if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+                    order = "杩愯緭";
+                    Category category = categoryMapper.selectById(orders.getTransportTypeId());
+                    if(Objects.nonNull(category)){
+                        order = category.getName() + order;
+                    }
+                }else{
+                    List<CateringDTO> cateringDTOList = JSONArray.parseArray(orders.getWayInfo(),CateringDTO.class);
+                    if(CollectionUtils.isNotEmpty(cateringDTOList)){
+                        for (CateringDTO cateringDTO:cateringDTOList) {
+                            if(StringUtils.isBlank(order)){
+                                order = cateringDTO.getName();
+                            }else{
+                                order = order + "/" +cateringDTO.getName();
+                            }
+                        }
+                    }
+                }
+                tempParam.put("order",order);
+            }
+        }
+
+        if(smsContent.getName().indexOf("authentication")>=Constants.ZERO){
+            tempParam.put("distance", distance +"km");
+        }
+        AliSmsService.sendSms(phone,smsContent.getCode(), JSONObject.toJSONString(tempParam));
+    }
+
+
+    public static void main(String[] args) {
+        Map<String,Object> tempParam = new HashMap<>();
+        tempParam.put("order","钁¤悇閲囨憳宸�");
+        tempParam.put("time1","07-23");
+        tempParam.put("time2","07-24");
+        AliSmsService.sendSms("18055151023","SMS_491055243", JSONObject.toJSONString(tempParam));
+    }
+
+
+    /**
+     * 鍙戠煭淇℃ā鏉�(鍙兢鍙�)
+     *
+     * @param phone         璁㈠崟璇︽儏
+     * @param templateCode  妯℃澘code
+     * @param templateParam 妯℃澘鍙橀噺json瀛楃涓�
+     * @return 澶勭悊缁撴灉
+     */
+    public static Boolean sendSms(String phone, String templateCode, String templateParam) {
+        try {
+            //璁剧疆瓒呮椂鏃堕棿-鍙嚜琛岃皟鏁�
+            System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
+            System.setProperty("sun.net.client.defaultReadTimeout", "10000");
+            //鍒濆鍖朼scClient闇�瑕佺殑鍑犱釜鍙傛暟
+            //鐭俊API浜у搧鍚嶇О锛堢煭淇′骇鍝佸悕鍥哄畾锛屾棤闇�淇敼锛�
+            final String product = "Dysmsapi";
+            //鐭俊API浜у搧鍩熷悕锛堟帴鍙e湴鍧�鍥哄畾锛屾棤闇�淇敼锛�
+            final String domain = "dysmsapi.aliyuncs.com";
+            //鍒濆鍖朼scClient,鏆傛椂涓嶆敮鎸佸region锛堣鍕夸慨鏀癸級
+            IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_SECRET);
+            DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
+            IAcsClient acsClient = new DefaultAcsClient(profile);
+            //缁勮璇锋眰瀵硅薄
+            SendSmsRequest request = new SendSmsRequest();
+            //浣跨敤post鎻愪氦
+            request.setMethod(MethodType.POST);
+            //蹇呭~:寰呭彂閫佹墜鏈哄彿銆傛敮鎸佷互閫楀彿鍒嗛殧鐨勫舰寮忚繘琛屾壒閲忚皟鐢紝鎵归噺涓婇檺涓�1000涓墜鏈哄彿鐮�,鎵归噺璋冪敤鐩稿浜庡崟鏉¤皟鐢ㄥ強鏃舵�х◢鏈夊欢杩�,楠岃瘉鐮佺被鍨嬬殑鐭俊鎺ㄨ崘浣跨敤鍗曟潯璋冪敤鐨勬柟寮�
+            request.setPhoneNumbers(phone);
+            //蹇呭~:鐭俊绛惧悕-鍙湪鐭俊鎺у埗鍙颁腑鎵惧埌
+            request.setSignName(SING_NAME);
+            //蹇呭~:鐭俊妯℃澘-鍙湪鐭俊鎺у埗鍙颁腑鎵惧埌
+            request.setTemplateCode(templateCode);
+            //鍙��:妯℃澘涓殑鍙橀噺鏇挎崲JSON涓�,濡傛ā鏉垮唴瀹逛负"浜茬埍鐨�${name},鎮ㄧ殑楠岃瘉鐮佷负${code}"鏃�,姝ゅ鐨勫�间负
+            //鍙嬫儏鎻愮ず:濡傛灉JSON涓渶瑕佸甫鎹㈣绗�,璇峰弬鐓ф爣鍑嗙殑JSON鍗忚瀵规崲琛岀鐨勮姹�,姣斿鐭俊鍐呭涓寘鍚玕r\n鐨勬儏鍐靛湪JSON涓渶瑕佽〃绀烘垚\\r\\n,鍚﹀垯浼氬鑷碕SON鍦ㄦ湇鍔$瑙f瀽澶辫触
+            request.setTemplateParam(templateParam);
+            //鍙��-涓婅鐭俊鎵╁睍鐮�(鎵╁睍鐮佸瓧娈垫帶鍒跺湪7浣嶆垨浠ヤ笅锛屾棤鐗规畩闇�姹傜敤鎴疯蹇界暐姝ゅ瓧娈�)
+            //dto.setSmsUpExtendCode("90997");
+            //鍙��:outId涓烘彁渚涚粰涓氬姟鏂规墿灞曞瓧娈�,鏈�缁堝湪鐭俊鍥炴墽娑堟伅涓皢姝ゅ�煎甫鍥炵粰璋冪敤鑰�
+            //dto.setOutId("yourOutId");
+            //璇锋眰澶辫触杩欓噷浼氭姏ClientException寮傚父
+            SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
+            if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
+//                logger.info(phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse));
+                return true;
+            } else {
+//                logger.error(phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+//            logger.error(e);
+        }
+        return false;
+    }
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/OrdersService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
index 0da39ec..b8db34d 100644
--- a/server/services/src/main/java/com/doumee/service/business/OrdersService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -52,8 +52,9 @@
      *
      * @param orders 瀹炰綋瀵硅薄
      */
-    void updateById(Orders orders);
+//    void updateById(Orders orders);
 
+    void update(Orders orders);
     /**
      * 鎵归噺涓婚敭鏇存柊
      *
@@ -105,13 +106,19 @@
 
     void begin(Integer orderId,Member member);
 
-    void updOrderData(UpdOrderDataDTO updOrderDataDTO);
-
+//    void updOrderData(UpdOrderDataDTO updOrderDataDTO);
+//
     void confirmUpd(ConfirmUpdOrderDTO confirmUpdOrderDTO);
 
-    void releaseCancelOrder(Integer orderId,Member member);
+    /**
+     * 璁㈠崟鍙栨秷鍓嶇疆鎻愮ず
+     * @param orderId
+     * @param member
+     * @return
+     */
+    String cancelTips(Integer orderId,Member member);
 
-    void receiveCancelOrder(Integer orderId,Member member);
+    void cancelOrder(Integer orderId,Member member);
 
     OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO);
 
@@ -128,7 +135,7 @@
 
     PageData<Orders> findPageForMini(PageWrap<Orders> pageWrap);
 
-    Orders getDetail(Integer id,Integer userType);
+    Orders getDetail(Integer id,Member member);
 
     void refundCallback(RefundNotification refundNotification);
 
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index fdab8b9..56d9001 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -252,7 +252,9 @@
     @Override
     public List<Category> getCategoryList(Integer type){
         List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda().eq(Category::getDeleted,Constants.ZERO).eq(Category::getStatus,Constants.ZERO)
-                .eq(Objects.nonNull(type),Category::getType,type));
+                .eq(Objects.nonNull(type),Category::getType,type)
+                .orderByAsc(Category::getSortnum)
+        );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)){
             String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                     +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
index fb5d5b4..5345ef6 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
@@ -73,9 +73,18 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if(Objects.nonNull(identityInfo.getId())){
-            this.updateById(identityInfo);
-        }else{
+            IdentityInfo model = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+                    .eq(IdentityInfo::getMemberId,identityInfo.getMemberId())
+                    .eq(IdentityInfo::getType,identityInfo.getType())
+                    .last("limit 1")
+            );
+            if(Objects.nonNull(model)){
+                identityInfo.setId(model.getId());
+                this.updateById(identityInfo);
+                return identityInfo.getId();
+            }
+
+
             //鏌ヨ鐢ㄦ埛鏄惁宸插瓨鍦ㄥ綋鍓嶈韩浠�
             if(identityInfoMapper.selectCount(new QueryWrapper<IdentityInfo>().lambda()
                     .eq(IdentityInfo::getDeleted,Constants.ZERO)
@@ -94,7 +103,6 @@
                     .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity,Constants.ONE)
                     .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity,Constants.ONE)
                     .eq(Member::getId,identityInfo.getMemberId()));
-        }
         return identityInfo.getId();
     }
 
@@ -459,6 +467,7 @@
         memberMapper.update(new UpdateWrapper<Member>().lambda()
                 .set(Member::getUpdateUser,user.getId())
                 .set(Member::getUpdateTime,date)
+                .set(Constants.equalsInteger(auditDTO.getAuditStatus(),Constants.ZERO),Member::getAutoReceiveStatus,Constants.ONE)
                 .set(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO),Member::getWorkerIdentity, auditDTO.getAuditStatus() )
                 .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity , auditDTO.getAuditStatus() )
                 .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity , auditDTO.getAuditStatus() )
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 25d4e53..b6f728c 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -232,7 +232,7 @@
                     .or().eq(Member::getDriverIdentity,Constants.TWO );
         });
         queryWrapper.lambda().ge(pageWrap.getModel().getStartTime()!=null, Member::getCreateTime,pageWrap.getModel().getStartTime());
-        queryWrapper.lambda().ne(pageWrap.getModel().getEndTime()!=null,Member::getCreateTime,pageWrap.getModel().getEndTime());
+        queryWrapper.lambda().le(pageWrap.getModel().getEndTime()!=null,Member::getCreateTime,pageWrap.getModel().getEndTime());
 
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -252,8 +252,6 @@
 
 
     /***************灏忕▼搴忔帴鍙�*************/
-
-
 
     /**
      * 寰俊灏忕▼搴忕櫥褰�
@@ -328,7 +326,6 @@
                 member.setPublishNum(Constants.ZERO.longValue());
                 member.setAutoReceiveStatus(Constants.ONE);
                 member.setUseIdentity(Constants.ZERO);
-                member.setOpenid(wxPhoneRequest.getOpenid());
                 memberMapper.insert(member);
             }
             AccountResponse accountResponse = new AccountResponse();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index 8b094d9..1b5f608 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -101,6 +101,7 @@
         orders.setPayStatus(Constants.ZERO);
         orders.setDeleted(Constants.ZERO);
         orders.setReleaseMemberId(orders.getMember().getId());
+        orders.setCommentStatus(Constants.ZERO);
         //鏌ヨ鎵嬬画璐�
         Category platformCategory = categoryMapper.selectOne(new QueryWrapper<Category>().lambda().eq(Category::getType,Constants.THREE).eq(Category::getName,orders.getType()).eq(Category::getDeleted,Constants.ZERO).last("limit 1 "));
         if(Objects.isNull(platformCategory)){
@@ -121,6 +122,7 @@
         if(Constants.equalsInteger(orders.getType(),Constants.TWO)){
             orders.setStatus(Constants.ordersStatus.waitPay.getKey());
             orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
+            orders.setPayAccount(orders.getEstimatedAccount());
             //鍞よ捣鏀粯涓氬姟
             objects = this.getWxPayResponse(orders,orders.getMember().getOpenid());
             orderReleaseVO.setObject(objects);
@@ -182,7 +184,7 @@
         request.setOutTradeNo(orders.getOutTradeNo());
         request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑
         Amount amount = new Amount();
-        amount.setTotal(1);//orders.getEstimatedAccount().intValue());
+        amount.setTotal(1);//orders.getPayAccount().intValue());
         request.setAmount(amount);
 //        PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
         // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
@@ -328,12 +330,40 @@
     }
 
     @Override
-    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void updateById(Orders orders) {
+    public void update(Orders orders){
         if(Objects.isNull(orders)
-        || Objects.isNull(orders.getId())){
+                || Objects.isNull(orders.getId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        Orders model = ordersMapper.selectById(orders.getId());
+        if(!Constants.equalsInteger(model.getReleaseMemberId(),orders.getMember().getId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(Constants.equalsInteger(model.getIsUpdate(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟宸蹭慨鏀癸紝寰呮帴鍗曟柟纭锛屾棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(!Constants.equalsInteger(model.getType(),Constants.TWO)){
+            if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+                this.updateById(orders);
+            }else if(Constants.equalsInteger(model.getStatus(),Constants.TWO)){
+                this.updOrderData(orders,model);
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+            }
+        }else{
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+        }
+
+
+
+    }
+
+
+
+//    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void updateById(Orders orders) {
+
         Orders model = ordersMapper.selectById(orders.getId());
         if(Constants.equalsInteger(model.getType(),Constants.TWO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"姝ょ被璁㈠崟鏃犳硶杩涜淇敼");
@@ -362,6 +392,7 @@
                         || StringUtils.isEmpty(multifile.getName())){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒");
                 }
+                multifile.setId(null);
                 multifile.setIsdeleted(Constants.ZERO);
                 multifile.setCreateDate(new Date());
                 multifile.setObjId(orders.getId());
@@ -378,7 +409,7 @@
             return;
         }
         for (Orders orders: orderss) {
-            this.updateById(orders);
+            //this.updateById(orders);
         }
     }
 
@@ -501,8 +532,11 @@
         queryWrapper.like(org.apache.commons.lang3.StringUtils.isNotBlank(model.getCode()),Orders::getCode, model.getCode());
         queryWrapper.eq(Objects.nonNull(model.getType()),Orders::getType, model.getType());
         queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus, model.getStatus());
+        queryWrapper.eq(Objects.nonNull(model.getCommentStatus()),Orders::getCommentStatus, model.getCommentStatus());
+        queryWrapper.eq(Objects.nonNull(model.getReleaseMemberId()),Orders::getReleaseMemberId, model.getReleaseMemberId());
+        queryWrapper.eq(Objects.nonNull(model.getAcceptMemberId()),Orders::getAcceptMemberId, model.getAcceptMemberId());
         queryWrapper.eq(Objects.nonNull(model.getAcceptType()),Orders::getAcceptType, model.getAcceptType());
-        queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getReleaseName()),"m1.name", model.getReleaseName());
+        queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getReleaseName()),"m1.name like '%"+model.getReleaseName()+"%' or m1.TELEPHONE like '%"+model.getReleaseName()+"%' ");
         queryWrapper.apply(org.apache.commons.lang3.StringUtils.isNotBlank(model.getAcceptName()),"( i.LINK_NAME like '%"+model.getAcceptName()+"%' or i.company_name like '%"+model.getAcceptName()+"%' or i.TELEPHONE like '%"+model.getAcceptName()+"%' ) ");
         IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper);
         for (Orders orders:iPage.getRecords()) {
@@ -595,22 +629,23 @@
         if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄨ嚜宸辩殑璁㈠崟鏃犳硶杩涜璇ユ搷浣�");
         }
+         member = memberMapper.selectById(member.getId());
         //鏌ヨ鐢ㄦ埛鏄惁鏈夊搴旇韩浠�
         if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
             if(!Constants.equalsInteger(member.getWorkerIdentity(),Constants.TWO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鍓嶅線涓汉涓績杩涜韬唤璁よ瘉!");
             }
         }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
             if(!Constants.equalsInteger(member.getDriverIdentity(),Constants.TWO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鍓嶅線涓汉涓績杩涜韬唤璁よ瘉!");
             }
         }else{
             if(!Constants.equalsInteger(member.getChefIdentity(),Constants.TWO)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鑱旂郴绠$悊鍛�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"韬唤淇℃伅寮傚父锛岃鍓嶅線涓汉涓績杩涜韬唤璁よ瘉!");
             }
         }
 
-        ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,orders.getId())
+         ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,orders.getId())
                 .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getAcceptType,Constants.ZERO)
                 .set(Orders::getAcceptTime,new Date())
@@ -670,50 +705,36 @@
 
     /**
      * 鍙戝崟鏂逛慨鏀硅鍗� - 宸叉帴鍗曠姸鎬�
-     * @param updOrderDataDTO
      */
-    @Override
+//    @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void updOrderData(UpdOrderDataDTO updOrderDataDTO){
-        if(Objects.isNull(updOrderDataDTO)
-            || Objects.isNull(updOrderDataDTO.getOrderId())
-            || Objects.isNull(updOrderDataDTO.getStartDate())
-            || Objects.isNull(updOrderDataDTO.getEndDate())){
+    public void updOrderData(Orders orders,Orders model){
+        if(Objects.isNull(orders)
+            || Objects.isNull(orders.getStartDate())
+            || Objects.isNull(orders.getEndDate())){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        Orders orders = ordersMapper.selectById(updOrderDataDTO.getOrderId());
-        if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY);
-        }
-        if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�");
-        }
-        if(!Constants.equalsInteger(orders.getReleaseMemberId(),updOrderDataDTO.getMember().getId())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
-        }
-        if(Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟宸蹭慨鏀癸紝寰呮帴鍗曟柟纭锛屾棤娉曡繘琛岃鎿嶄綔");
-        }
-        orders.setStartDate(updOrderDataDTO.getStartDate());
-        orders.setEndDate(updOrderDataDTO.getEndDate());
-        orders.setTotalDays(updOrderDataDTO.getTotalDays());
+        model.setTotalDays(DateUtil.daysBetweenDates(orders.getEndDate(),orders.getStartDate())+1);
+        model.setStartDate(orders.getStartDate());
+        model.setEndDate(orders.getEndDate());
         //鐢ㄨ溅绫诲瀷
-        if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
-            if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)) {
-                orders.setPriceNum1(updOrderDataDTO.getTotalDays());
+        if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+            if(Constants.equalsInteger(model.getCarType(),Constants.ZERO)) {
+                model.setPriceNum1(orders.getTotalDays());
             }
-        }else if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
-            if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)||(Constants.equalsInteger(orders.getWorkType(),Constants.TWO)&&Constants.equalsInteger(orders.getCarType(),Constants.ZERO))){
-                orders.setPriceNum1(updOrderDataDTO.getTotalDays());
+        }else if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
+            if(Constants.equalsInteger(model.getWorkType(),Constants.ONE)||
+                    (Constants.equalsInteger(model.getWorkType(),Constants.TWO)&&Constants.equalsInteger(model.getCarType(),Constants.ZERO))){
+                model.setPriceNum1(orders.getTotalDays());
             }
         }else{
-            orders.setPriceNum1(updOrderDataDTO.getTotalDays());
+            model.setPriceNum1(orders.getTotalDays());
         }
         Long total = this.getTotal(orders);
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
-                .set(Orders::getStartDate,updOrderDataDTO.getStartDate())
-                .set(Orders::getEndDate,updOrderDataDTO.getEndDate())
-                .set(Orders::getTotalDays,updOrderDataDTO.getTotalDays())
+                .set(Orders::getStartDate,model.getStartDate())
+                .set(Orders::getEndDate,model.getEndDate())
+                .set(Orders::getTotalDays,model.getTotalDays())
                 .set(Orders::getIsUpdate,Constants.ONE)
                 .set(Orders::getIsUpdateTime,new Date())
                 .set(Orders::getUpdateTime,new Date())
@@ -722,8 +743,8 @@
         );
         //鍒涘缓鎿嶄綔鏃ュ織
         Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_ORDER;
-        this.saveOrderLog(orders,ordersLog,
-                ordersLog.getInfo(),updOrderDataDTO.getMember().getId(),null);
+        this.saveOrderLog(model,ordersLog,
+                ordersLog.getInfo(),orders.getMember().getId(),null);
 
         //TODO 閫氱煡鎺ュ崟浜� 璁㈠崟鍙戠敓鍙樻洿
     }
@@ -779,7 +800,7 @@
         if(!Constants.equalsInteger(orders.getAcceptMemberId(),confirmUpdOrderDTO.getMember().getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
-        if( Constants.equalsInteger(confirmUpdOrderDTO.getStatus(),Constants.ONE)){
+        if(!Constants.equalsInteger(confirmUpdOrderDTO.getStatus(),Constants.ONE)){
             ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                     .set(Orders::getIsUpdate,Constants.TWO)
                     .set(Orders::getUpdateTime,new Date())
@@ -799,7 +820,7 @@
                     .eq(Orders::getId,orders.getId())
             );
 
-            memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getReceiveNum,"receive_num - 1").eq(Member::getId,confirmUpdOrderDTO.getMember().getId()));
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql("receive_num = receive_num - 1").eq(Member::getId,confirmUpdOrderDTO.getMember().getId()));
 
             //璁板綍涓嶅悓鎰忎慨鏀圭殑鏃ュ織
             Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_DISAGREE;
@@ -810,18 +831,55 @@
     }
 
 
-    /**
-     * 鍙戝崟鏂瑰彇娑堣鍗�
-     * @param orderId
-     * @param member
-     */
     @Override
-    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void releaseCancelOrder(Integer orderId,Member member){
+    public void cancelOrder(Integer orderId,Member member){
         Orders orders = ordersMapper.selectById(orderId);
         if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
+        if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
+            this.releaseCancelOrder(orders,member);
+        }else if(Constants.equalsInteger(orders.getAcceptMemberId(),member.getId())){
+            this.receiveCancelOrder(orders,member);
+        }else{
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
+        }
+
+    }
+
+
+    @Override
+    public String cancelTips(Integer orderId,Member member){
+        Orders orders = ordersMapper.selectById(orderId);
+        if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+
+        Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIMES).getCode());
+        Long cancelTimes = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                .apply(" DATE(cancel_time) = DATE(NOW()) ")
+                .eq(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
+                .eq(Orders::getReleaseMemberId,member.getId()));
+        //鏌ヨ鍙栨秷娆℃暟
+        if(totalCancelTimes<=cancelTimes){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠婃棩璁㈠崟涓诲姩鍙栨秷娆℃暟宸茶秴鍑�"+totalCancelTimes+"娆�,鏃犳硶鍙栨秷璁㈠崟,濡傞渶澶勭悊璇疯仈绯诲鏈�");
+        }
+
+        Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIME).getCode());
+        Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate());
+        if(hours < cancelTimeHour){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�");
+        }
+        return  "浠婃棩杩樺彲涓诲姩鍙栨秷"+(totalCancelTimes-cancelTimes)+"娆★紝鏄惁纭鍙栨秷";
+
+    }
+
+    /**
+     * 鍙戝崟鏂瑰彇娑堣鍗�
+     * @param member
+     */
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void releaseCancelOrder(Orders orders,Member member){
         if(!(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.wait.getKey())
                 ||Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.waitPay.getKey())
         || Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey()))){
@@ -893,30 +951,27 @@
             //TODO 鍙戝崟鏂瑰彇娑堣鍗曢�氱煡鎺ュ崟鏂�
 
             //鍑忓皯鎺ュ崟閲�
-            memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getReceiveNum,"receive_num - 1").eq(Member::getId,orders.getAcceptMemberId()));
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql("receive_num = (receive_num - 1) ").eq(Member::getId,orders.getAcceptMemberId()));
         }
         //鍑忓皯鍙戝崟閲�
-        memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getPublishNum,"publish_num - 1").eq(Member::getId,orders.getReleaseMemberId()));
+        memberMapper.update(new UpdateWrapper<Member>().lambda().setSql("publish_num = (publish_num - 1)").eq(Member::getId,orders.getReleaseMemberId()));
 
         //鏃ュ織瀛樺偍
         Constants.OrdersLog ordersLog = Constants.OrdersLog.RELEASE_CANCEL;
         this.saveOrderLog(orders,ordersLog,
                 ordersLog.getInfo(),member.getId(),null);
+
+
+
     }
 
 
     /**
      * 鎺ュ崟鏂瑰彇娑堟帴鍗�
-     * @param orderId
      * @param member
      */
-    @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public void receiveCancelOrder(Integer orderId,Member member){
-        Orders orders = ordersMapper.selectById(orderId);
-        if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
-            throw new BusinessException(ResponseStatus.DATA_EMPTY);
-        }
+    public void receiveCancelOrder(Orders orders,Member member){
         if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
         }
@@ -948,7 +1003,7 @@
         );
 
         //鍑忓皯鎺ュ崟閲�
-        memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getReceiveNum,"receive_num - 1").eq(Member::getId,orders.getAcceptMemberId()));
+        memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" receive_num = receive_num - 1 ").eq(Member::getId,orders.getAcceptMemberId()));
         //鏃ュ織瀛樺偍
         Constants.OrdersLog ordersLog = Constants.OrdersLog.CANCEL;
         this.saveOrderLog(orders,ordersLog,
@@ -994,7 +1049,7 @@
             orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
             ordersMapper.updateById(orders);
             //鍞よ捣鏀粯涓氬姟
-            object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+            object = this.getWxPayResponse(orders,doneOrderDTO.getMember().getOpenid());
             orderReleaseVO.setObject(object);
         }else{
             orders.setStatus(Constants.ordersStatus.done.getKey());
@@ -1147,13 +1202,14 @@
                 .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getCommentTime,new Date())
                 .set(Orders::getCommentLevel,commentDTO.getLevel())
+                .set(org.apache.commons.lang3.StringUtils.isNotBlank(commentDTO.getInfo()),Orders::getCommentInfo,commentDTO.getInfo())
                 .set(Orders::getCommentType,Constants.ZERO)
                 .eq(Orders::getId,orders.getId())
         );
         memberMapper.update(new UpdateWrapper<Member>().lambda()
-                .set(Member::getScore," ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )")
-                .set(Member::getTotalScore," total_score +" + commentDTO.getLevel())
-                .set(Member::getScoreOrderNum," score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId())
+                .setSql(" score =  ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )")
+                .setSql(" total_score =  total_score +" + commentDTO.getLevel())
+                .setSql(" score_order_num = score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId())
         );
         //鏃ュ織瀛樺偍
         Constants.OrdersLog ordersLog = Constants.OrdersLog.COMMENT;
@@ -1171,7 +1227,7 @@
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     public String payNotify(String preOrderId,String paymentNo){
-        Orders orders = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda().eq(Orders::getCode,preOrderId).last("limit 1"));
+        Orders orders = ordersMapper.selectOne(new QueryWrapper<Orders>().lambda().eq(Orders::getOutTradeNo,preOrderId).last("limit 1"));
         if(Constants.equalsInteger(orders.getType(),Constants.TWO)){
             //鐢ㄩ璁㈠崟  濡傛灉宸茬粡娴佽浆鍒板凡鏀粯  鍒欑洿鎺ヨ繑鍥�
             if(!Constants.equalsInteger(orders.getStatus(),Constants.ZERO)){
@@ -1214,6 +1270,8 @@
                 //瀛樺偍娴佹按璁板綍
                 MemberRevenue memberRevenue = new MemberRevenue();
                 memberRevenue.setCreateTime(new Date());
+                memberRevenue.setDeleted(Constants.ZERO);
+                memberRevenue.setTransactionNo(orders.getCode());
                 memberRevenue.setMemberId(orders.getAcceptMemberId());
                 memberRevenue.setType(orders.getType());
                 memberRevenue.setOptType(Constants.ONE);
@@ -1233,8 +1291,8 @@
 
                 //鏇存柊鎺ュ崟鐢ㄦ埛鐨勪綑棰濅笌鍘嗗彶鎬婚噾棰�
                 memberMapper.update(new UpdateWrapper<Member>().lambda()
-                        .set(Member::getAmount,"amount + " + orders.getReceiveAccount() )
-                        .set(Member::getTotalAmount,"amount + " + orders.getReceiveAccount() )
+                        .setSql(" amount = ( amount + " + orders.getReceiveAccount() +")" )
+                        .setSql(" total_amount = ( amount + " + orders.getReceiveAccount() + ")" )
                         .eq(Member::getId,member.getId())
                 );
 
@@ -1320,7 +1378,7 @@
                 //鎺ュ崟鏂� 鎴戠殑璁㈠崟
                 queryWrapper.eq(Orders::getAcceptMemberId,model.getMember().getId());
                 queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus());
-                queryWrapper.orderByDesc(Orders::getCreateTime);
+                queryWrapper.orderByDesc(Orders::getAcceptTime);
             }else{
                 //鏌ヨ鐢ㄦ埛鐨勬帴鍗曟潈閲�
                 ReceiveWeight receiveWeight = receiveWeightMapper.selectOne(new QueryWrapper<ReceiveWeight>().lambda().eq(ReceiveWeight::getDeleted,Constants.ZERO).apply(" RECEIVE_MIN < "+model.getMember().getReceiveNum()+" and RECEIVE_MAX > " + model.getMember().getReceiveNum()).last(" limit 1 "));
@@ -1427,7 +1485,7 @@
 
 
     @Override
-    public Orders getDetail(Integer id,Integer userType) {
+    public Orders getDetail(Integer id,Member member) {
         Orders orders = ordersMapper.selectJoinOne(Orders.class,new MPJLambdaWrapper<Orders>()
                         .selectAll(Orders.class)
                         .select(" m1.name " , Orders::getReleaseName)
@@ -1472,11 +1530,56 @@
             orders.setMultifileList(multifileList);
         }
         orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus()));
+        orders.setCancelStatus(Constants.ZERO);
+        this.getPriceUnit(orders);
+        if(orders.getStatus() <= Constants.ordersStatus.accept.getKey()){
+            if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
+                //鍒ゆ柇鏄惁鍙慨鏀� 宸插彇娑堟鏁� 涓� 鏃堕棿闄愬埗
+                Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIMES).getCode());
+                Long cancelTimes = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+                        .apply(" DATE(cancel_time) = DATE(NOW()) ")
+                        .eq(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
+                        .eq(Orders::getReleaseMemberId,orders.getReleaseMemberId()));
+                //鏌ヨ鍙栨秷娆℃暟
+                if(totalCancelTimes<=cancelTimes){
+                    orders.setCancelStatus(Constants.ONE);
+                    return orders;
+                }
+                Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIME).getCode());
+                Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate());
+                if(hours < cancelTimeHour){
+                    orders.setCancelStatus(Constants.ONE);
+                    return orders;
+                }
+            }else if(Constants.equalsInteger(orders.getAcceptMemberId(),member.getId())){
+                //鍒ゆ柇鏄惁鍙慨鏀� 宸插彇娑堟鏁� 涓� 鏃堕棿闄愬埗
+                Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RECEIVE_CANCEL_TIMES).getCode());
+                Long cancelTimes = orderLogMapper.selectCount(new QueryWrapper<OrderLog>().lambda()
+                        .apply(" DATE(create_time) = DATE(NOW()) ")
+                        .eq(OrderLog::getObjType,Constants.OrdersLog.CANCEL.getKey())
+                        .eq(OrderLog::getMemberId,member.getId()));
+                //鏌ヨ鍙栨秷娆℃暟
+                if(totalCancelTimes<=cancelTimes){
+                    orders.setCancelStatus(Constants.ONE);
+                    return orders;
+                }
 
+                Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RECEIVE_CANCEL_TIME).getCode());
+                Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate());
+                if(hours < cancelTimeHour){
+                    orders.setCancelStatus(Constants.ONE);
+                    return orders;
+                }
+            }
+        } else{
+            orders.setCancelStatus(Constants.ONE);
+        }
         return orders;
     }
 
 
+
+
     public synchronized String  getNextCode(Integer type){
         String prefix = "YG";
         if(!Constants.equalsInteger(type,Constants.ZERO)){
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index ef8c562..facfcc1 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -222,6 +222,8 @@
             //瀛樺偍娴佹按璁板綍
             MemberRevenue memberRevenue = new MemberRevenue();
             memberRevenue.setCreateTime(new Date());
+            memberRevenue.setTransactionNo(withdrawalOrders.getOutBillNo());
+            memberRevenue.setDeleted(Constants.ZERO);
             memberRevenue.setMemberId(member.getId());
             memberRevenue.setType(Constants.THREE);
             memberRevenue.setOptType(-Constants.ONE);
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index 8467933..2befcf6 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -7,7 +7,7 @@
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:
-    # database: 0
+    #    database: 0
     host: 127.0.0.1
     port: 6379
     password:
@@ -47,6 +47,7 @@
           required: true
 
 debug_model: true
+
 # Swagger閰嶇疆
 swagger:
   host:
@@ -58,6 +59,8 @@
   enable-encrypt: true
   # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
   redirect-uri: /
+
+
 des_pwd: 123456SDFKDJF
 knife4j:
   enable: true
@@ -65,8 +68,10 @@
     enable: true
     username: admin
     password: 111111
+
 qiwei:
   serviceurl: https://qyapi.weixin.qq.com
+
 aes:
   encrypt:
     open: true # 鏄惁寮�鍚姞瀵� true  or  false
@@ -74,46 +79,85 @@
     publicKey: mN4Yn8Or8r7SH1w3 # AES瀵嗛挜
     privateKey:  # RSA绉侀挜
     time: 600000
+
 ########################寰俊鏀粯鐩稿叧閰嶇疆########################
 wx:
   pay:
-    #鏈嶅姟鍟�---------start-------
-    appId: wx48fd8faa35cc8277
-    mchId: 1661770902
-    apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT
-    serialNumer: 368B835A194384FD583B83B77977B84127D2F655
-    mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
-    notifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxPayNotify
-    refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wxRefundNotify
-    #notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
-    #refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
-    #keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12
-    #privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem
-    #privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem
-    keyPath: d://apiclient_cert.p12
-    privateCertPath: d://apiclient_cert.pem
-    privateKeyPath: d://apiclient_key.pem
-
-    #鍟嗘埛淇℃伅
-    wechatSerialNumer: 3C9A32FB6CD453FAAAF97F9737ECAEA9D6625727
-    wechatPayPublicKeyId: 47E172124E73E8098A565E971064C20ACDE7C911 # PUB_KEY_ID_0116617720032025071800291849000801 #鍟嗘埛/骞冲彴鏀粯鍏挜id
-    wechatPubKeyPath: d://pub_key.pem #鍟嗘埛鏀粯鍏挜
-    #wechatPlatformPubKeyPath: d:/wechatpay_47E172124E73E8098A565E971064C20ACDE7C911.pem  #骞冲彴鏀粯鍏挜
-    wechatPrivateKeyPath: d://wechatApiclient_key.pem #鍟嗘埛绉侀挜
-    wechatNotifyUrl: http://xiaopiqiu2.natapp1.cc/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
-    #wechatApiV3Key: V4PRKUBTK2BKNKJAD9NSI9YFG2Q0EOT1 #鍟嗘埛APIV3Key
+    #鏈嶅姟鍟�---------start------- 鍙傛暟璇﹁В鍦板潃 https://pay.weixin.qq.com/doc/v3/partner/4013080340
+    mchId: 1700071922    #鏈嶅姟鍟嗗湪寰俊鏀粯渚х殑鍞竴韬唤鏍囪瘑
+    appId: wx332441ae5b12be7d    #鏈嶅姟鍟嗗湪寰俊寮�鏀惧钩鍙帮紙绉诲姩搴旂敤锛夋垨鍏紬骞冲彴锛堝叕浼楀彿/灏忕▼搴忥級涓婄敵璇风殑涓�涓敮涓�鏍囪瘑
+    apiV3Key: 0a056faa107c2b2944b9d6a9aa6d4142 #7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB
+    serialNumer: 7DCD480EB6DF3791721867A6EB57105DECEF38BE #38495CE0137D90E4DC4F64F7ECDE035A35470BE3 #鏈嶅姟鍟嗚瘉涔﹀簭鍒楀彿
+    #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
+    notifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxPayNotify
+    refundNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxRefundNotify
+    keyPath: d://jinkuai/apiclient_cert.p12
+    privateCertPath: d://jinkuai/apiclient_cert.pem
+    privateKeyPath: d://jinkuai/apiclient_key.pem
 
     #鏈嶅姟鍟�-------------end---
+
+    #鍟嗘埛淇℃伅
+    wechatSerialNumer: 38495CE0137D90E4DC4F64F7ECDE035A35470BE3
+    wechatPayPublicKeyId: PUB_KEY_ID_0117233260692025072500181939000603 #鍟嗘埛/骞冲彴鏀粯鍏挜id
+    wechatPubKeyPath: d://jinkuai/shanghu/pub_key.pem #鍟嗘埛鏀粯鍏挜
+    wechatPrivateKeyPath: d://jinkuai/shanghu/apiclient_key.pem #鍟嗘埛绉侀挜
+    wechatNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
+
+
     existsSub: 1
-    appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24
+    appSecret:
     #瀛愬晢鎴�------------start----
-    subAppId: wxcd2b89fd2ff065f8 #wxcd2b89fd2ff065f8
-    subAppSecret: 3462fa186da7cb06c544df8d8664b63a #3336812504c830b1c3c5243f9ece407a
-    subMchId: 1661772003
-    subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS
+    subMchId: 1723326069    #瀛愬晢鎴峰彿
+    subAppId: wx332441ae5b12be7d #灏忕▼搴廼d
+    subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #灏忕▼搴忕閽�
     #瀛愬晢鎴�------------end----
-    #mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+    #      mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
     typeId: gybike
+
+
+#wx:
+#  pay:
+#    #鏈嶅姟鍟�---------start-------
+#    appId: wx48fd8faa35cc8277
+#    mchId: 1661770902
+#    apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT
+#    serialNumer: 368B835A194384FD583B83B77977B84127D2F655
+#    mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
+#    notifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxPayNotify
+#    refundNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxRefundNotify
+##    notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
+##    refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
+#    #keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12
+#    #privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem
+#    #privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem
+#    keyPath: /usr/local/zhengshu/apiclient_cert.p12 #d://apiclient_cert.p12
+#    privateCertPath: /usr/local/zhengshu/apiclient_cert.pem #d://apiclient_cert.pem
+#    privateKeyPath: /usr/local/zhengshu/apiclient_key.pem #d://apiclient_key.pem
+#
+#
+#    #鍟嗘埛淇℃伅
+#    wechatSerialNumer: 3C9A32FB6CD453FAAAF97F9737ECAEA9D6625727
+#    wechatPayPublicKeyId: 47E172124E73E8098A565E971064C20ACDE7C911 # PUB_KEY_ID_0116617720032025071800291849000801 #鍟嗘埛/骞冲彴鏀粯鍏挜id
+#    wechatPubKeyPath: /usr/local/zhengshu/pub_key.pem #d://pub_key.pem #鍟嗘埛鏀粯鍏挜
+#    #wechatPlatformPubKeyPath: d:/wechatpay_47E172124E73E8098A565E971064C20ACDE7C911.pem  #骞冲彴鏀粯鍏挜
+#    wechatPrivateKeyPath: /usr/local/zhengshu/wechatApiclient_key.pem #d://wechatApiclient_key.pem #鍟嗘埛绉侀挜
+#    wechatNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
+#    #wechatApiV3Key: V4PRKUBTK2BKNKJAD9NSI9YFG2Q0EOT1 #鍟嗘埛APIV3Key
+#
+#
+#    #鏈嶅姟鍟�-------------end---
+#    existsSub: 1
+#    appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24
+#    #瀛愬晢鎴�------------start----
+#    subAppId: wxcd2b89fd2ff065f8 #wxcd2b89fd2ff065f8
+#    subAppSecret: 3462fa186da7cb06c544df8d8664b63a #3336812504c830b1c3c5243f9ece407a
+#    subMchId: 1661772003
+#    subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS
+#    #瀛愬晢鎴�------------end----
+#    #      mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+#    typeId: gybike
+
 upload:
   type: ftp
 
diff --git a/server/services/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml
index bf7bdcf..85d8738 100644
--- a/server/services/src/main/resources/application-test.yml
+++ b/server/services/src/main/resources/application-test.yml
@@ -70,32 +70,37 @@
     password: 111111
 
 ########################寰俊鏀粯鐩稿叧閰嶇疆########################
+
+########################寰俊鏀粯鐩稿叧閰嶇疆########################
 wx:
   pay:
     #鏈嶅姟鍟�---------start-------
-    appId: wx48fd8faa35cc8277
-    mchId: 1661770902
-    apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT
-    serialNumer: 368B835A194384FD583B83B77977B84127D2F655
-    mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
-    #    notifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxPayNotify
-    #    refundNotifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxRefundNotify
-    notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify
-    refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify
-    keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12
-    privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem
-    privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem
-    #    keyPath: d://apiclient_cert.p12
-    #    privateCertPath: d://apiclient_cert.pem
-    #    privateKeyPath: d://apiclient_key.pem
+    mchId: 1700071922 #鏈嶅姟鍟嗗晢鎴峰彿
+    appId: wx6cc1087ca79db7f6 #鏈嶅姟鍟咥PPID
+    apiV3Key: 0a056faa107c2b2944b9d6a9aa6d4142
+    serialNumer: 38495CE0137D90E4DC4F64F7ECDE035A35470BE3 #鏈嶅姟鍟嗚瘉涔﹀簭鍒楀彿
+    #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S
+    notifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxPayNotify
+    refundNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wxRefundNotify
+    keyPath: /usr/local/zhengshu/apiclient_cert.p12
+    privateCertPath: /usr/local/zhengshu/apiclient_cert.pem
+    privateKeyPath: /usr/local/zhengshu/apiclient_key.pem
+
+    #鍟嗘埛淇℃伅
+    wechatSerialNumer: 12C0F0DD0F3D2B565B45586D3FEA225EBF723BEC
+    wechatPayPublicKeyId:  PUB_KEY_ID_0117233260692025072500181939000603 #鍟嗘埛/骞冲彴鏀粯鍏挜id
+    wechatPubKeyPath: /usr/local/zhengshu/pub_key.pem #鍟嗘埛鏀粯鍏挜
+    wechatPrivateKeyPath: /usr/local/zhengshu/shanghu/apiclient_key.pem #鍟嗘埛绉侀挜
+    wechatNotifyUrl: https://test.doumee.cn/jinkuai_admin/web/wechat/transferNotify #鍟嗘埛杞处鍥炶皟鍦板潃
+
+
     #鏈嶅姟鍟�-------------end---
     existsSub: 1
-    appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24
+    appSecret:
     #瀛愬晢鎴�------------start----
-    subAppId: wxcd2b89fd2ff065f8 #wxcd2b89fd2ff065f8
-    subAppSecret: 3462fa186da7cb06c544df8d8664b63a #3336812504c830b1c3c5243f9ece407a
-    subMchId: 1661772003
-    subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS
+    subAppId: wx332441ae5b12be7d #灏忕▼搴廼d
+    subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #灏忕▼搴忕閽�
+    subMchId: 1723326069    #瀛愬晢鎴峰彿
     #瀛愬晢鎴�------------end----
     #      mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
     typeId: gybike
diff --git a/server/web/src/main/java/com/doumee/api/web/OrdersApi.java b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
index fe942c1..8fc10ce 100644
--- a/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/OrdersApi.java
@@ -62,9 +62,22 @@
     })
     public ApiResponse updateOrder(@RequestBody Orders orders) {
         orders.setMember(this.getMemberResponse());
-        ordersService.updateById(orders);
+        ordersService.update(orders);
         return  ApiResponse.success("鎿嶄綔鎴愬姛");
     }
+
+
+//    @LoginRequired
+//    @ApiOperation(value = "淇敼璁㈠崟鏃ユ湡 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
+//    @PostMapping("/updOrderData")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+//    })
+//    public ApiResponse updOrderData(@RequestBody UpdOrderDataDTO updOrderDataDTO) {
+//        updOrderDataDTO.setMember(this.getMemberResponse());
+//        ordersService.updOrderData(updOrderDataDTO);
+//        return  ApiResponse.success("鎿嶄綔鎴愬姛");
+//    }
 
     @LoginRequired
     @ApiOperation(value = "鎵嬪姩鎺ュ崟 - 鎺ュ崟鏂�", notes = "灏忕▼搴忕")
@@ -90,39 +103,27 @@
 
     @LoginRequired
     @ApiOperation(value = "鍙栨秷璁㈠崟 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
-    @GetMapping("/releaseCancelOrder")
+    @GetMapping("/cancelOrder")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse releaseCancelOrder(@RequestParam Integer orderId) {
-        ordersService.releaseCancelOrder(orderId,this.getMemberResponse());
+    public ApiResponse cancelOrder(@RequestParam Integer orderId) {
+        ordersService.cancelOrder(orderId,this.getMemberResponse());
         return  ApiResponse.success("鎿嶄綔鎴愬姛");
     }
-
 
     @LoginRequired
-    @ApiOperation(value = "鍙栨秷鎺ュ崟 - 鎺ュ崟鏂�", notes = "灏忕▼搴忕")
-    @GetMapping("/receiveCancelOrder")
+    @ApiOperation(value = "鍙栨秷鍓嶆彁绀鸿 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
+    @GetMapping("/cancelTips")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse receiveCancelOrder(@RequestParam Integer orderId) {
-        ordersService.receiveCancelOrder(orderId,this.getMemberResponse());
+    public ApiResponse cancelTips(@RequestParam Integer orderId) {
+        ordersService.cancelTips(orderId,this.getMemberResponse());
         return  ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
 
-    @LoginRequired
-    @ApiOperation(value = "淇敼璁㈠崟鏃ユ湡 - 鍙戝崟鏂�", notes = "灏忕▼搴忕")
-    @PostMapping("/updOrderData")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
-    })
-    public ApiResponse updOrderData(@RequestBody UpdOrderDataDTO updOrderDataDTO) {
-        updOrderDataDTO.setMember(this.getMemberResponse());
-        ordersService.updOrderData(updOrderDataDTO);
-        return  ApiResponse.success("鎿嶄綔鎴愬姛");
-    }
 
     @LoginRequired
     @ApiOperation(value = "纭璁㈠崟淇敼 - 鎺ュ崟鏂�", notes = "灏忕▼搴忕")
@@ -191,7 +192,7 @@
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse<Orders> getDetail(@RequestParam Integer orderId) {
-        return  ApiResponse.success("鎿嶄綔鎴愬姛",ordersService.getDetail(orderId,this.getMemberResponse().getUseIdentity()));
+        return  ApiResponse.success("鎿嶄綔鎴愬姛",ordersService.getDetail(orderId,this.getMemberResponse()));
     }
 
     @LoginRequired
diff --git a/small-program/App.vue b/small-program/App.vue
index a23ecbe..120bad2 100644
--- a/small-program/App.vue
+++ b/small-program/App.vue
@@ -1,11 +1,17 @@
 <script>
 	import { mapState } from 'vuex'
+	var QQMapWX = require('@/utils/qqmap-wx-jssdk.js')
 	export default {
 		computed: {
 			...mapState(['userInfo','openid'])
 		},
+<<<<<<< HEAD
 		onLaunch: function() { 
+=======
+		onLaunch: function() {  
+>>>>>>> 2d0d3bb6a63ad0aee9d5cc003b50c50391b1cc94
 			var that = this;
+			that.getLocaltionBiz() 
 			if (!this.openid || this.openid =='') {
 				uni.login({
 					provider: 'weixin',
@@ -16,17 +22,6 @@
 							that.$store.commit('setToken', res.data.token)
 							that.$store.commit('setOpenid', res.data.openid)
 							that.$store.commit('setUserInfo', res.data.member)
-							uni.getLocation({
-								type: 'wgs84',
-								success: (addr) => {
-									that.$store.commit('setPosition', { latitude: addr.latitude, longitude: addr.longitude })
-									that.$isResolve()
-								},
-								fail: (err) => {
-									console.error('鑾峰彇浣嶇疆澶辫触', err);
-									that.$isResolve()
-								}
-							});
 							
 						}
 					}
@@ -35,32 +30,10 @@
 				var that = this
 				let res = this.$u.api.getMemberInfo({}).then(res =>{ 
 					if (res && res.code === 200) { 
-						that.$store.commit('setUserInfo', res.data)
-						uni.getLocation({
-							type: 'wgs84',
-							success: (addr) => {
-								that.$store.commit('setPosition', { latitude: addr.latitude, longitude: addr.longitude })
-								that.$isResolve()
-							},
-							fail: (err) => {
-								console.error('鑾峰彇浣嶇疆澶辫触', err);
-								that.$isResolve()
-							}
-						});
+						that.$store.commit('setUserInfo', res.data) 
 					} else {
 						that.$store.commit('setToken','')
-						that.$store.commit('setUserInfo',{})
-						uni.getLocation({
-							type: 'wgs84',
-							success: (addr) => {
-								that.$store.commit('setPosition', { latitude: addr.latitude, longitude: addr.longitude })
-								that.$isResolve()
-							},
-							fail: (err) => {
-								console.error('鑾峰彇浣嶇疆澶辫触', err);
-								that.$isResolve()
-							}
-						});
+						that.$store.commit('setUserInfo',{}) 
 					}
 				})
 			}
@@ -70,6 +43,51 @@
 		},
 		onHide: function() {
 			console.log('App Hide')
+		},
+		methods:{
+			getLocaltionBiz(){
+				var that =this
+				uni.getLocation({
+					type: 'wgs84',
+					success: (addr) => {
+						const locParam = { latitude: addr.latitude, longitude: addr.longitude ,address:'鑾峰彇鍦板潃澶辫触'};
+						var address =null
+						const qqmapsdk = new QQMapWX({
+							 key: '4PXBZ-JLBC7-LCLXG-P2SZX-C4HYE-LDBLQ' //鑵捐鍦板浘鐢宠鐨刱ey锛堝悗缁渶瑕佸叕鍙告彁渚涳紝涓汉寮�鍙戣�呴搴︽湁闄愶級
+						 });  
+						  // 鑵捐鍦板浘閫嗗湴鐞嗙紪鐮�
+						qqmapsdk.reverseGeocoder({
+							locParam,
+							success: function(res) {
+								console.log(res, '==================鑾峰彇鍦板潃');
+								let info = res.result;
+								locParam.province = info.address_component.province;
+								locParam.city = info.address_component.city;
+								locParam.area = info.address_component.district;
+								locParam.street = info.address_component.street;
+								var ta = info.address  || '鍦板潃鑾峰彇澶辫触' ;
+								if(info.formatted_addresses  && info.formatted_addresses.recommend){
+									ta =info.formatted_addresses.recommend
+								}
+								locParam.address =ta											
+								that.$store.commit('setPosition',locParam)
+								that.$isResolve()
+							},
+							fail: (err) => {
+								console.error('鑾峰彇浣嶇疆澶辫触===========', err);
+								that.$store.commit('setPosition',locParam)
+								that.$isResolve()
+							}
+						});
+						// that.$store.commit('setPosition',locParam)
+						that.$isResolve()
+					},
+					fail: (err) => {
+						console.error('鑾峰彇浣嶇疆澶辫触', err);
+						that.$isResolve()
+					}
+				});
+			}
 		}
 	}
 </script>
diff --git a/small-program/pages/index/index.vue b/small-program/pages/index/index.vue
index c100d48..ed7f456 100644
--- a/small-program/pages/index/index.vue
+++ b/small-program/pages/index/index.vue
@@ -83,10 +83,10 @@
 		<!-- 鍙戝崟鏂� -->
 		<view class="index-c" v-if="typeViewId === 0">
 			<view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view>
-			<view class="index-c-title" :style="{ height: navHeight + 'px' }" @click="selectAddress">
+			<view class="index-c-title" :style="{ height: navHeight + 'px' }" @click="selectAddress(-1)">
 				<text class="index-c-title-logo">杩戝揩</text>
 				<image class="dingwei" src="/static/icon/home_ic_location@2x.png" mode="widthFix"></image>
-				<text>瑗挎箹鍥介檯骞垮満</text>
+				<text>{{location.address || address || '鑾峰彇鍦板潃澶辫触'}}</text>
 				<image class="qu" src="/static/icon/home_ar_next@2x.png" mode="widthFix"></image>
 			</view>
 			
@@ -321,11 +321,7 @@
 				 <view class="phone-item" v-for="(item,index) in serverPhone"    :key="item" @click="contactPhoneDo(item)">
 				 	<view></view>
 				 	<text>{{item}}</text> 
-				 </view> 
-				 <view class="phone-item" v-for="(item,index) in serverPhone"    :key="item" @click="contactPhoneDo(item)">
-				 	<view></view>
-				 	<text>{{item}}</text> 
-				 </view> 
+				 </view>  
 				<!-- <view class="phone-botton"  @click="contactPhone()" >鍏抽棴</view> -->
 			</view>
 		</u-popup>
@@ -339,7 +335,7 @@
 	export default {
 		components: { sunuiMverify },
 		computed: {
-			...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid', 'latitude', 'longitude']),
+			...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid', 'latitude', 'longitude','address']),
 			totalPrice() {
 				return this.form.estimatedAccount / 100
 			}
@@ -352,6 +348,11 @@
 				isLogin: false,
 				typeId: 0,
 				qqmapsdk: null,
+				location:{
+					latitude:null,
+					longitude:null,
+					address:null,
+				},
 				type: [
 					{ name: '鐢ㄥ伐', id: 0 },
 					{ name: '杩愯揣', id: 1 },
@@ -411,7 +412,7 @@
 				isOnce: true
 			}
 		},
-		async onLoad() {
+		async onLoad() { 
 			await this.$onLaunched;
 			
 			if (this.token && this.token != '' && this.userInfo && JSON.stringify(this.userInfo) != '{}' && this.userInfo.useIdentity === 1) {
@@ -724,7 +725,7 @@
 			},
 			selectAddress(type, index) {
 				uni.chooseLocation({
-					success: (res) => {
+					success: (res) => { 
 						if ([1,2].includes(type)) {
 							this.form.latitude = res.latitude
 							this.form.longitude = res.longitude
@@ -737,7 +738,12 @@
 							this.form.wayInfoDTOList[0].lat = res.latitude
 							this.form.wayInfoDTOList[0].lgt = res.longitude
 							this.form.wayInfoDTOList[0].location = res.address
-						}
+						}else if (type == -1) {
+							console.log(res)
+							this.location.latitude = res.latitude
+							this.location.longitude = res.longitude
+							this.location.address =res.name ||  res.address
+						} 
 					}
 				});
 			},
@@ -1129,7 +1135,7 @@
 				padding: 0 30rpx;
 				box-sizing: border-box;
 				display: flex;
-				align-items: center;
+				align-items: center; 				
 				.index-c-title-logo {
 					font-weight: bold;
 					font-size: 40rpx;
@@ -1146,6 +1152,10 @@
 					font-size: 32rpx;
 					color: #ffffff;
 					margin-right: 12rpx;
+					max-width: 280rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
 				}
 				.qu {
 					width: 22rpx;
diff --git a/small-program/pages/withdrawal/withdrawal.vue b/small-program/pages/withdrawal/withdrawal.vue
index 765f968..0f9b211 100644
--- a/small-program/pages/withdrawal/withdrawal.vue
+++ b/small-program/pages/withdrawal/withdrawal.vue
@@ -11,13 +11,17 @@
 					<text>鎻愮幇鍒拌处</text>
 					<text>寰俊闆堕挶</text>
 				</view>
+				<view class="content-title">鐪熷疄濮撳悕</view>
+				<view class="content-input" style="margin-bottom: 40rpx;"> 
+					<input style="font-weight: 500;" type="text" v-model="name"  @input="changeName" placeholder="寰俊瀹炲悕璁よ瘉濮撳悕" /> 
+				</view>
 				<view class="content-title">鎻愮幇閲戦</view>
 				<view class="content-input">
 					<view class="content-input-icon">
 						<image src="/static/icon/ic_money@2x.png" mode="widthFix"></image>
 					</view>
-					<input type="number" v-model="amount" @input="changeAmount" placeholder="璇疯緭鍏ユ彁鐜伴噾棰�" />
-					<view class="content-input-btn" @click="inputAll">鍏ㄩ儴鎻愮幇</view>
+					<input type="digit" v-model="amount" @input="changeAmount" placeholder="璇疯緭鍏ユ彁鐜伴噾棰�" />
+					<view class="content-input-btn" @click="inputAll">鍏ㄩ儴鎻愮幇</view> 
 				</view>
 				<view class="content-tips">{{tips}}</view>
 				<view class="content-button" @click="submit">2灏忔椂鍒拌处锛岀‘璁ゆ彁鐜�</view>
@@ -35,23 +39,95 @@
 		data() {
 			return {
 				tips:'',//
+				wxTips:'',
+				canTransfer:false,
 				changing1:false,
-				amount: null
+				amount: null,
+				name:''
 			};
+		},
+		onLoad(){
+			this.name = this.userInfo.name
+			var that =this
+			that.canTransfer = false
+			if (wx.canIUse('requestMerchantTransfer')) {
+				//that.tips='鎮ㄧ殑寰俊鐗堟湰鏀寔璇ュ姛鑳�'
+				that.canTransfer = true
+			}else{
+				that.tips='鎮ㄧ殑寰俊鐗堟湰杩囦綆锛岃鏇存柊鑷虫渶鏂扮増鏈娇鐢ㄨ鍔熻兘'
+				uni.showToast({
+					title:'鎮ㄧ殑寰俊鐗堟湰杩囦綆锛岃鏇存柊鑷虫渶鏂扮増鏈娇鐢ㄨ鍔熻兘銆�'
+				})
+			}
+			/* wx.ready(function () {
+			  wx.checkJsApi({
+			    jsApiList: ['requestMerchantTransfer'],
+			    success: function (res) {
+			      if (res.checkResult['requestMerchantTransfer']) {
+						that.canTransfer = true
+			      } else {
+					  that.tips='鎮ㄧ殑寰俊鐗堟湰杩囦綆锛岃鏇存柊鑷虫渶鏂扮増鏈娇鐢ㄨ鍔熻兘'
+					  uni.showToast({
+					  	title:'鎮ㄧ殑寰俊鐗堟湰杩囦綆锛岃鏇存柊鑷虫渶鏂扮増鏈娇鐢ㄨ鍔熻兘銆�'
+					  })
+			      }
+			    }
+			  });
+			}); */
 		},
 		methods: {
 			jump() {
 				uni.navigateTo({
 					url: '/pages/balance-details/balance-details'
 				})
-			},
+			}, 
 			inputAll(){
 				this.amount = ((this.userInfo.amount|| 0)/100).toFixed(2)
 			},
 			changeAmount(){
 				this.tips=''
 			},
+			wxMerchantTransfer(param){	
+				wx.requestMerchantTransfer({
+				    mchId: param.mchId,
+				    appId: param.appId,
+				    package: param.packageInfo,
+				    success: (res) => {
+				      // res.err_msg灏嗗湪椤甸潰灞曠ず鎴愬姛鍚庤繑鍥炲簲鐢ㄦ椂杩斿洖ok锛屽苟涓嶄唬琛ㄤ粯娆炬垚鍔�
+					  console.log(res)
+				      uni.navigateTo({
+				      	url: '/pages/withdrawal-successful/withdrawal-successful'
+				      })
+				    },
+				    fail: (res) => {
+					  console.log("22222222222222",res)
+				      uni.showToast({
+				      	title:'瀵逛笉璧凤紝鎻愮幇澶辫触銆�'+res.err_msg
+				      })
+				    },
+				  });
+				/* WeixinJSBridge.invoke('requestMerchantTransfer',param,
+				  function (res) {
+					if (res.err_msg === 'requestMerchantTransfer:ok') {
+					  // res.err_msg灏嗗湪椤甸潰灞曠ず鎴愬姛鍚庤繑鍥炲簲鐢ㄦ椂杩斿洖success锛屽苟涓嶄唬琛ㄤ粯娆炬垚鍔�
+					  uni.navigateTo({
+					  	url: '/pages/withdrawal-successful/withdrawal-successful'
+					  })
+					}else{ 
+						uni.showToast({
+							title:'瀵逛笉璧凤紝鎻愮幇澶辫触銆�'+res.err_msg
+						})
+					}
+				  }
+				);	 */			      
+			},
 			submit() {
+				  if(!this.canTransfer){
+					  uni.showToast({
+					  	title:'鎮ㄧ殑寰俊鐗堟湰杩囦綆锛岃鏇存柊鑷虫渶鏂扮増鏈娇鐢ㄨ鍔熻兘銆�'
+					  })
+					  return;
+				  }
 				  if(this.changing1){
 						return
 				  }
@@ -68,13 +144,14 @@
 				  }
 				  this.changing1 = true
 				  var that = this
-				  var param ={amount:this.amount }
+				  var param ={amount:this.amount,name:this.name }
 				  that.$u.api.applyWithdrawal(param)
 				  .then(res =>{
 						if(res.code ===200){
-							uni.navigateTo({
-								url: '/pages/withdrawal-successful/withdrawal-successful'
-							})
+							that.wxMerchantTransfer(res.data);
+							// uni.navigateTo({
+							// 	url: '/pages/withdrawal-successful/withdrawal-successful'
+							// })
 						} 
 				   }).finally(() => {
 						that.changing1 = false
diff --git a/small-program/store/index.js b/small-program/store/index.js
index e783ab2..337989e 100644
--- a/small-program/store/index.js
+++ b/small-program/store/index.js
@@ -19,7 +19,8 @@
 		openid: token || '',
 		
 		latitude: '',
-		longitude: ''
+		longitude: '',
+		address:'瀹氫綅涓�'
 	},
 	mutations: {
 		// 璁剧疆瀵艰埅鏍忛珮搴�
@@ -49,6 +50,8 @@
 			console.log(obj)
 			state.latitude = obj.latitude
 			state.longitude = obj.longitude
+			state.address = obj.address  
+			console.log("=====================",obj)
 		},
 		// 娓呴櫎缂撳瓨鏁版嵁
 		empty(state) {

--
Gitblit v1.9.3