From bd6229ebd9cb543a22944ecb1142fad92b675dce Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 13 十月 2025 14:26:25 +0800
Subject: [PATCH] bug 修复

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  426 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 307 insertions(+), 119 deletions(-)

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 0041ca0..bca9bde 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
@@ -33,9 +33,11 @@
 import com.wechat.pay.java.service.refund.model.RefundNotification;
 import jodd.util.StringUtil;
 import lombok.With;
+import lombok.extern.slf4j.Slf4j;
 import nonapi.io.github.classgraph.json.Id;
 import org.apache.poi.sl.image.ImageHeaderEMF;
 import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -45,6 +47,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -54,6 +57,7 @@
  * @author 姹熻箘韫�
  * @date 2025/07/09 12:00
  */
+@Slf4j
 @Service
 public class OrdersServiceImpl implements OrdersService {
 
@@ -132,11 +136,11 @@
         if(Objects.isNull(category)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鍙傛暟閰嶇疆閿欒,璇疯仈绯荤鐞嗗憳");
         }
+        orders.setPayAccount(orders.getEstimatedAccount());
+        Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
+        orders.setReceiveAccount(orders.getPayAccount() - tcje);
         //鐢ㄩ璁㈠崟
         if(Constants.equalsInteger(orders.getType(),Constants.TWO)){
-            orders.setPayAccount(orders.getEstimatedAccount());
-            Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
-            orders.setReceiveAccount(orders.getPayAccount() - tcje);
             orders.setStatus(Constants.ordersStatus.waitPay.getKey());
             orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
             //鍞よ捣鏀粯涓氬姟
@@ -145,6 +149,10 @@
         }else{
             orders.setStatus(Constants.ordersStatus.wait.getKey());
         }
+        orders.setOriginPriceNum1(orders.getPriceNum1());
+        orders.setOriginPriceNum2(orders.getPriceNum2());
+        orders.setOriginEstimatedAccount(orders.getEstimatedAccount());
+        orders.setConfirmOtherFee(0l);
         ordersMapper.insert(orders);
 
         orderReleaseVO.setId(orders.getId());
@@ -168,7 +176,7 @@
 
         //鍒涘缓鎿嶄綔鏃ュ織
         Constants.OrdersLog ordersLog = Constants.OrdersLog.UPLOAD;
-        String orderTypeInfo = "鐢ㄥ伐鍗�";
+        String orderTypeInfo = Constants.getOrderInfo(orders);/*"鐢ㄥ伐鍗�";
         if(!Constants.equalsInteger(orders.getType(),Constants.ZERO)){
             orderTypeInfo =   Constants.equalsInteger(orders.getType(),Constants.ONE)?"鐢ㄨ溅鍗�":"閫侀鍗�";
         }else{
@@ -177,7 +185,7 @@
             }else{
                 orderTypeInfo = orderTypeInfo + (Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"-鍒嗘嫞宸�":"-鍖呰宸�");
             }
-        }
+        }*/
         String logInfo = ordersLog.getInfo()
                 .replace("{param}",orderTypeInfo);
         this.saveOrderLog(orders,ordersLog,
@@ -202,7 +210,7 @@
         request.setOutTradeNo(orders.getOutTradeNo());
         request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑
         Amount amount = new Amount();
-        amount.setTotal(1);//orders.getPayAccount().intValue());
+        amount.setTotal(orders.getPayAccount().intValue());
         request.setAmount(amount);
 //        PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
         // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
@@ -238,7 +246,7 @@
 
 
     public void initVerification(Orders orders){
-        if(Objects.isNull(orders)
+         if(Objects.isNull(orders)
                 || Objects.isNull(orders.getType())
                 || Objects.isNull(orders.getStartDate())
                 || Objects.isNull(orders.getEndDate())
@@ -254,9 +262,13 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if( (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO) &&
-            ( Constants.equalsInteger(orders.getCarType(),Constants.ZERO) || Constants.equalsInteger(orders.getCarType(),Constants.ONE) ))
-            || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ONE))
+        Integer priceNum2 = orders.getPriceNum2();
+        if( (Constants.equalsInteger(orders.getType(),Constants.ZERO)
+                && Constants.equalsInteger(orders.getWorkType(),Constants.TWO) &&
+            ( Constants.equalsInteger(orders.getCarType(),Constants.ZERO)
+                    || Constants.equalsInteger(orders.getCarType(),Constants.ONE) ))
+            || (Constants.equalsInteger(orders.getType(),Constants.ZERO)
+                && Constants.equalsInteger(orders.getWorkType(),Constants.ONE))
         ){
             if(Objects.isNull(orders.getPriceNum2())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -267,7 +279,7 @@
         orders.setTotalDays(DateUtil.daysBetweenDates(orders.getEndDate(),orders.getStartDate())+1);
         if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
             if(Constants.equalsInteger(orders.getWorkType(),Constants.TWO)
-            && ( Objects.isNull(orders.getCarType())  ) ){
+                && ( Objects.isNull(orders.getCarType())  ) ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
         }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
@@ -297,11 +309,18 @@
             }
             orders.setWayInfo(JSONObject.toJSONString(orders.getWayInfoDTOList()));
         }else{
+            List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda().eq(Category::getDeleted,Constants.ZERO)
+                    .eq(Category::getType,Constants.TWO)
+            );
+            if(CollectionUtils.isEmpty(categoryList)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"椁愭爣淇℃伅閿欒");
+            }
             //鐢ㄩ璁㈠崟
             if(CollectionUtils.isEmpty(orders.getCateringDTOList())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
             Long sumPrice = 0L;
+//            List<CateringDTO> cateringDTOList = new ArrayList<>();
             for (CateringDTO cateringDTO:orders.getCateringDTOList()) {
                 if(Objects.isNull(cateringDTO)
                         || StringUtils.isEmpty(cateringDTO.getName())
@@ -310,16 +329,33 @@
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄩ鏍囧噯鏁版嵁閿欒");
                 }
+                //椁愭爣淇℃伅
+                List<Category> categories = categoryList.stream().filter(i->Constants.equalsInteger(i.getId(),cateringDTO.getId())).collect(Collectors.toList());
+                if(CollectionUtils.isEmpty(categories)){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄩ鏍囧噯鏁版嵁閿欒锛岃鍒锋柊閲嶈瘯");
+                }
+                Category category = categories.get(Constants.ZERO);
+                List<String> priceList = JSONArray.parseArray(category.getDetail(),String.class  );
+                if(CollectionUtils.isEmpty(priceList)){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄩ鏍囧噯鏁版嵁閿欒锛岃鍒锋柊閲嶈瘯");
+                }
+                if(priceList.stream().filter(i->((Long.valueOf(i)*100)+"").equals((cateringDTO.getPrice()+""))).collect(Collectors.toList()).size()==Constants.ZERO){
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄩ鏍囧噯鏁版嵁閿欒锛岃鍒锋柊閲嶈瘯");
+                }
                 sumPrice = sumPrice + (cateringDTO.getPrice() * cateringDTO.getNum()) ;
+
             }
-            if(!sumPrice.equals(orders.getPrice())){
+            if(new BigDecimal(sumPrice.toString()).compareTo(orders.getPrice())!=Constants.ZERO){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍗曚环璁$畻閿欒");
             }
+
+
             orders.setWayInfo(JSONObject.toJSONString(orders.getCateringDTOList()));
         }
         if(!orders.getEstimatedAccount().equals(this.getTotal(orders))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閲戦璁$畻閿欒!");
         }
+        orders.setPriceNum2(priceNum2);
     }
 
 
@@ -361,7 +397,8 @@
             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)){
+            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);
@@ -371,9 +408,6 @@
         }else{
             throw new BusinessException(ResponseStatus.NOT_ALLOWED);
         }
-
-
-
     }
 
 
@@ -418,6 +452,11 @@
             }
             multifileMapper.insert(multifileList);
         }
+        orders.setOriginPriceNum1(orders.getPriceNum1());
+        orders.setOriginPriceNum2(orders.getPriceNum2());
+        orders.setOriginEstimatedAccount(orders.getEstimatedAccount());
+        orders.setPayAccount(orders.getEstimatedAccount());
+        orders.setConfirmOtherFee(0L);
         ordersMapper.updateById(orders);
     }
 
@@ -474,9 +513,9 @@
         );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orderLogList)){
             for (OrderLog orderLog:orderLogList) {
-                if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ZERO)){
+                if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ZERO)&& org.apache.commons.lang3.StringUtils.isNotBlank(orders.getReleaseName())){
                     orderLog.setLogInfo(orderLog.getLogInfo().replace("{userName}",orders.getReleaseName()));
-                }else if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ONE)){
+                }else if(Constants.equalsInteger(orderLog.getOptUserType(),Constants.ONE)&& org.apache.commons.lang3.StringUtils.isNotBlank(orders.getAcceptName())){
                     orderLog.setLogInfo(orderLog.getLogInfo().replace("{userName}",orders.getAcceptName()));
                 }
             }
@@ -610,9 +649,9 @@
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(cateringDTOList)){
                     for (CateringDTO cateringDTO:cateringDTOList) {
                         if(StringUtils.isEmpty(orders.getOrderContent())){
-                            orders.setOrderContent(cateringDTO.getName()+cateringDTO.getPrice()+" 闇�"+cateringDTO.getNum()+"浠�");
+                            orders.setOrderContent(cateringDTO.getName()+(new BigDecimal(cateringDTO.getPrice().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP))+" 闇�"+cateringDTO.getNum()+"浠�");
                         }else{
-                            orders.setOrderContent(orders.getOrderContent()+" | "+cateringDTO.getName()+cateringDTO.getPrice()+" 闇�"+cateringDTO.getNum()+"浠�");
+                            orders.setOrderContent(orders.getOrderContent()+" | "+cateringDTO.getName()+(new BigDecimal(cateringDTO.getPrice().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP))+" 闇�"+cateringDTO.getNum()+"浠�");
                         }
                     }
                 }
@@ -651,15 +690,15 @@
         //鏌ヨ鐢ㄦ埛鏄惁鏈夊搴旇韩浠�
         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(),"鎮ㄨ繕鏈敞鍐岃鏈嶅姟锛岃鍓嶅線\"鎴戠殑\"椤甸潰鎻愪氦鐢宠");
             }
         }
 
@@ -685,14 +724,20 @@
                 .eq(IdentityInfo::getAuditStatus,Constants.TWO)
                 .last("limit 1")
         );
+        Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId());
 
-        if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){
-            //鍙戦�佸井淇¢�氱煡
-            sendWxMessage.acceptMessage(member.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone());
+        if(Objects.nonNull(releaseMember)){
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(releaseMember.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){
+                //鍙戦�佸井淇¢�氱煡
+                sendWxMessage.acceptMessage(releaseMember.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone());
+            }
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getLinkPhone())){
+                //鐭俊閫氱煡
+                aliSmsService.businessSendSms(Constants.smsContent.accept.getKey(),orders.getLinkPhone(),orders,null,
+                        wokerIdentityInfo,categoryMapper);
+            }
         }
-        //鐭俊閫氱煡
-        aliSmsService.businessSendSms(Constants.smsContent.accept.getKey(),member.getTelephone(),orders,null,
-                wokerIdentityInfo,categoryMapper);
+
 
 
     }
@@ -718,6 +763,9 @@
         }
         if(Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟淇敼寰呯‘璁わ紝鏃犳硶杩涜璇ユ搷浣�");
+        }
+        if(orders.getStartDate().getTime()>System.currentTimeMillis()){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鏈埌寮�濮嬫椂闂存棤娉曡繘琛岃鎿嶄綔");
         }
         orders.setUpdateTime(new Date());
         orders.setStatus(Constants.ordersStatus.doing.getKey());
@@ -759,6 +807,8 @@
             model.setPriceNum1(orders.getTotalDays());
         }
         Long total = this.getTotal(orders);
+        Long tcje = Long.valueOf(new BigDecimal(total.toString()).multiply(model.getPlatformRata()).intValue());
+        Long reciveTotal = total  - tcje;
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                 .set(Orders::getStartDate,model.getStartDate())
                 .set(Orders::getEndDate,model.getEndDate())
@@ -767,6 +817,8 @@
                 .set(Orders::getIsUpdateTime,new Date())
                 .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getEstimatedAccount,total)
+                .set(Orders::getOriginEstimatedAccount,total)
+                .set(Orders::getReceiveAccount,reciveTotal)
                 .eq(Orders::getId,orders.getId())
         );
         //鍒涘缓鎿嶄綔鏃ュ織
@@ -775,20 +827,25 @@
                 ordersLog.getInfo(),orders.getMember().getId(),null);
 
         //閫氱煡鎺ュ崟浜� 璁㈠崟鍙戠敓鍙樻洿
-        Member member = memberMapper.selectById(orders.getAcceptMemberId());
-        //鍙戦�佸井淇¢�氱煡
-        sendWxMessage.orderUpdMessage(member.getOpenid(),orders);
-
-        IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
-                .eq(IdentityInfo::getMemberId,member.getId())
-                .eq(IdentityInfo::getType,orders.getType())
-                .eq(IdentityInfo::getAuditStatus,Constants.TWO)
-                .last("limit 1")
-        );
-        if(Objects.nonNull(wokerIdentityInfo)){
-            //鐭俊閫氱煡
-            aliSmsService.businessSendSms(Constants.smsContent.orderUpd.getKey(),wokerIdentityInfo.getTelephone(),orders,null,
-                    null,categoryMapper);
+        Member member = memberMapper.selectById(model.getAcceptMemberId());
+        if(Objects.nonNull(member)){
+            if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())){
+                model.setStartDate(orders.getStartDate());
+                model.setEndDate(orders.getEndDate());
+                //鍙戦�佸井淇¢�氱煡
+                sendWxMessage.orderUpdMessage(member.getOpenid(),model);
+            }
+            IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
+                    .eq(IdentityInfo::getMemberId,member.getId())
+                    .eq(IdentityInfo::getType,orders.getType())
+                    .eq(IdentityInfo::getAuditStatus,Constants.TWO)
+                    .last("limit 1")
+            );
+            if(Objects.nonNull(wokerIdentityInfo)){
+                //鐭俊閫氱煡
+                aliSmsService.businessSendSms(Constants.smsContent.orderUpd.getKey(),wokerIdentityInfo.getTelephone(),orders,null,
+                        null,categoryMapper);
+            }
         }
 
     }
@@ -798,23 +855,108 @@
     public Long getTotal(Orders orders){
         if(Objects.isNull(orders)
                 ||Objects.isNull(orders.getPrice())
-                ||Objects.isNull(orders.getPriceNum1())){
+                ||Objects.isNull(orders.getPriceNum1())
+                ||Objects.isNull(orders.getType())
+        ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        BigDecimal bigDecimalPrice = BigDecimal.ZERO;
         if(
             (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO ))
-            || Constants.equalsInteger(orders.getType(),Constants.ONE)
+                    || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.nonNull(orders.getCarType()) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO ) && Constants.equalsInteger(orders.getCarType(),Constants.TWO))
+                || Constants.equalsInteger(orders.getType(),Constants.ONE)
                 || Constants.equalsInteger(orders.getType(),Constants.TWO)
         ){
-            orders.setPriceNum2(Constants.ONE);
+            bigDecimalPrice = orders.getPrice().multiply(new BigDecimal(orders.getPriceNum1().toString()));
         }else{
             if(Objects.isNull(orders.getPriceNum2())){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
+            bigDecimalPrice = orders.getPrice().multiply(new BigDecimal(orders.getPriceNum1().toString())).multiply(new BigDecimal(orders.getPriceNum2().toString()));
         }
-        return orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2();
+        if(Objects.nonNull(orders.getConfirmOtherFee())){
+            bigDecimalPrice = bigDecimalPrice.add(new BigDecimal(orders.getConfirmOtherFee().toString()));
+        }
+        return bigDecimalPrice.divide(new BigDecimal("1"),0,BigDecimal.ROUND_HALF_UP).longValue();//orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2();
     }
 
+
+    /**
+     * 鎺ュ崟鏂圭‘璁よ鍗曡垂鐢�
+     */
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void  confirmFee(ConfirmFeeOrderDTO confirmUpdOrderDTO){
+        if(Objects.isNull(confirmUpdOrderDTO)
+                || Objects.isNull(confirmUpdOrderDTO.getOrderId())
+                || Objects.isNull(confirmUpdOrderDTO.getPriceNum1())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        Orders orders = ordersMapper.selectById(confirmUpdOrderDTO.getOrderId());
+        if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(orders.getAcceptMemberId(),confirmUpdOrderDTO.getMember().getId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
+        }
+        if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�");
+        }
+        //绫诲瀷:0=鐢ㄥ伐锛�1=杩愯揣锛�2=璁㈤
+        if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+            //鐢ㄥ伐绫诲瀷:0=閲囨憳宸ワ紱1=鍒嗘嫞宸ワ紱2=鍖呰宸ワ紱锛堢敤宸ヨ鍗曪級
+            if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){
+                //1=鍒嗘嫞宸�
+                if( Objects.isNull(confirmUpdOrderDTO.getPriceNum2())){//蹇呴』鏈夌敤宸ユ暟閲忥紙浜猴級
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST);
+                }
+            }else if(Constants.equalsInteger(orders.getWorkType(),Constants.TWO)){
+                //鍖呰宸� 鐢ㄨ溅绫诲瀷(鐢ㄥ伐鍖呰/杩愯揣浣跨敤):0=澶�;1=娆�/灏忔椂;2=閲嶉噺
+                if( !Constants.equalsInteger(orders.getCarType(),Constants.TWO)
+                        && Objects.isNull(confirmUpdOrderDTO.getPriceNum2())){
+                    //涓嶆槸鎸夐噸閲忚璐圭殑锛屽繀椤绘湁鐢ㄥ伐鏁伴噺锛堜汉锛�
+                    throw new BusinessException(ResponseStatus.BAD_REQUEST);
+                }
+            }
+        }else  if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
+            //杩愯揣璁㈠崟
+
+        }else{
+            throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ヨ鍗曚笉鏀寔璇ユ搷浣滐紝璇疯繑鍥炲埛鏂伴噸璇曪紒");
+        }
+        orders.setPriceNum1(confirmUpdOrderDTO.getPriceNum1());
+        orders.setPriceNum2(confirmUpdOrderDTO.getPriceNum2());
+        orders.setConfirmOtherFee(confirmUpdOrderDTO.getConfirmOtherFee());
+        Long totalFee = this.getTotal(orders);//閲嶆柊璁$畻璐圭敤
+        Long payFee = totalFee;//閲嶆柊璁$畻璐圭敤
+        Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
+        Long reciveTotal = payFee  - tcje;
+        //BigDecimal recFee = new BigDecimal(payFee).multiply((new BigDecimal(1).subtract(Constants.formatBigDecimal(orders.getPlatformRata())))).setScale(0, RoundingMode.HALF_UP) ;
+        ordersMapper.update(new UpdateWrapper<Orders>().lambda()
+                .set(Orders::getPriceNum1,confirmUpdOrderDTO.getPriceNum1())
+                .set(Orders::getPriceNum2,confirmUpdOrderDTO.getPriceNum2())
+                .set(Orders::getConfirmFeeRemark,confirmUpdOrderDTO.getConfirmFeeRemark())
+                .set(Orders::getConfirmOtherFee,confirmUpdOrderDTO.getConfirmOtherFee())
+                .set(Orders::getEstimatedAccount,totalFee)
+                .set(Orders::getStatus,Constants.ordersStatus.feeconfirm.getKey())
+                .set(Orders::getPayAccount,payFee)
+                .set(Orders::getReceiveAccount,reciveTotal)
+                .set(Orders::getUpdateTime,new Date())
+                .set(Orders::getConfirmFeeTime,new Date())
+                .eq(Orders::getId,orders.getId())
+        );
+        //璁板綍鍚屾剰淇敼鐨勬棩蹇�
+        Constants.OrdersLog ordersLog = Constants.OrdersLog.FEE_CONFIRM;
+        this.saveOrderLog(orders,ordersLog,
+                ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null);
+
+        //寰俊閫氱煡
+        Member member = memberMapper.selectById(orders.getReleaseMemberId());
+        if(Objects.nonNull(member)&& org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())){
+            sendWxMessage.waitPayMessage(member.getOpenid(),orders);
+        }
+
+    }
 
     /**
      * 鎺ュ崟鏂瑰鐞嗚鍗曚慨鏀�
@@ -911,13 +1053,13 @@
                 .eq(Orders::getReleaseMemberId,member.getId()));
         //鏌ヨ鍙栨秷娆℃暟
         if(totalCancelTimes<=cancelTimes){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠婃棩璁㈠崟涓诲姩鍙栨秷娆℃暟宸茶秴鍑�"+totalCancelTimes+"娆�,鏃犳硶鍙栨秷璁㈠崟,濡傞渶澶勭悊璇疯仈绯诲鏈�");
+            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+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟");
         }
         return  "浠婃棩杩樺彲涓诲姩鍙栨秷"+(totalCancelTimes-cancelTimes)+"娆★紝鏄惁纭鍙栨秷";
 
@@ -969,13 +1111,13 @@
                     .eq(Orders::getReleaseMemberId,orders.getReleaseMemberId()));
             //鏌ヨ鍙栨秷娆℃暟
             if(totalCancelTimes<=cancelTimes){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠婃棩璁㈠崟涓诲姩鍙栨秷娆℃暟宸茶秴鍑�"+totalCancelTimes+"娆�,鏃犳硶鍙栨秷璁㈠崟,濡傞渶澶勭悊璇疯仈绯诲鏈�");
+                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+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟");
             }
 
             if(Constants.equalsInteger(orders.getType(),Constants.TWO)){
@@ -1015,6 +1157,7 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){
             List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList());
             //鍙戦�佸井淇¢�氱煡
+            orders.setCancelTime(new Date());
             sendWxMessage.cancelMessage(openIdList,orders,Constants.ONE);
         }
 
@@ -1052,16 +1195,17 @@
                 .eq(OrderLog::getMemberId,member.getId()));
         //鏌ヨ鍙栨秷娆℃暟
         if(totalCancelTimes<=cancelTimes){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠婃棩璁㈠崟涓诲姩鍙栨秷娆℃暟宸茶秴鍑�"+totalCancelTimes+"娆�,鏃犳硶鍙栨秷璁㈠崟,濡傞渶澶勭悊璇疯仈绯诲鏈�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠婃棩璁㈠崟涓诲姩鍙栨秷娆℃暟宸茶秴鍑�"+totalCancelTimes+"娆�,鏃犳硶鍙栨秷璁㈠崟");
         }
 
         Integer cancelTimeHour = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RECEIVE_CANCEL_TIME).getCode());
         Long hours = DateUtil.getBetweenHours(new Date(),orders.getStartDate());
         if(hours < cancelTimeHour){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟");
         }
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                 .set(Orders::getUpdateTime,new Date())
+                .set(Orders::getCancelTime,new Date())
                 .set(Orders::getStatus,Constants.ordersStatus.wait.getKey())
                 .set(Orders::getAcceptMemberId,null)
                 .set(Orders::getAcceptType,null)
@@ -1082,6 +1226,7 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){
             List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList());
             //鍙戦�佸井淇¢�氱煡
+            orders.setCancelTime(new Date());
             sendWxMessage.cancelMessage(openIdList,orders,Constants.TWO);
         }
         //鐭俊閫氱煡
@@ -1107,9 +1252,16 @@
         if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
+        if(Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())){
+            if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
+            }
+        }else{
+            if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.feeconfirm.getKey())){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
+            }
         }
+
         if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
@@ -1125,6 +1277,7 @@
         if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){
             orders.setPayAccount(doneOrderDTO.getAmount());
             //鎻愭垚閲戦
+//            Long tcje =  (new BigDecimal(orders.getPayAccount().toString()).multiply(Constants.formatBigDecimal(orders.getPlatformRata())).setScale(0,RoundingMode.HALF_UP).longValue());
             Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
             orders.setReceiveAccount(orders.getPayAccount() - tcje);
             orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
@@ -1199,21 +1352,28 @@
         }
 
         if(!((( Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.ZERO) )
-                || ( !Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.THREE) ))
+                || ( !Constants.equalsInteger(orders.getType(),Constants.TWO) && Constants.equalsInteger(orders.getStatus(),Constants.FIVE) ))
         && Constants.equalsInteger(orders.getPayStatus(),Constants.ZERO) )){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆");
         }
+        Member payMember = memberMapper.selectById(reusePayDTO.getMember().getId());
+        if(Objects.isNull(payMember)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛淇℃伅寮傚父");
+        }
+
         OrderReleaseVO orderReleaseVO = new OrderReleaseVO();
         if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){
             orders.setPayAccount(reusePayDTO.getAmount());
             //鎻愭垚閲戦
             Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue());
             orders.setReceiveAccount(orders.getPayAccount() - tcje);
+            orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
+            ordersMapper.updateById(orders);
         }
         orders.setOutTradeNo(UUID.randomUUID().toString().replace("-",""));
         ordersMapper.updateById(orders);
         //鍞よ捣鏀粯涓氬姟
-        Object object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+        Object object = this.getWxPayResponse(orders,payMember.getOpenid());
         orderReleaseVO.setObject(object);
         orderReleaseVO.setId(orders.getId());
         return orderReleaseVO;
@@ -1275,7 +1435,9 @@
                 );
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){
             List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList());
+            orders.setCancelTime(new Date());
             //鍙戦�佸井淇¢�氱煡
+            orders.setCancelTime(new Date());
             sendWxMessage.cancelMessage(openIdList,orders,Constants.ZERO);
         }
         //鐭俊閫氱煡鍙戝崟鏂�
@@ -1375,7 +1537,7 @@
             }
         }else{
             //闈炵敤椁愮被璁㈠崟
-            if(!Constants.equalsInteger(orders.getStatus(),Constants.THREE)){
+            if(!Constants.equalsInteger(orders.getStatus(),Constants.FIVE)){
                 return  ("澶勭悊鎴愬姛!");
             }else{
                 //澶勭悊鏀粯瀹屾垚閫昏緫
@@ -1455,9 +1617,7 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         Orders model = pageWrap.getModel();
         if(Objects.isNull(model)
-            || Objects.isNull(model.getQueryLat())
-            || Objects.isNull(model.getQueryLgt())
-                || Objects.isNull(model.getQueryMyOrderType())
+            || Objects.isNull(model.getQueryMyOrderType())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -1502,24 +1662,29 @@
                 .select("c2.name",Orders::getTransportTypeName)
                 .leftJoin(" category c1 on t.category_id = c1.id  ")
                 .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id  ")
-                .select(" case when T.LGT IS NULL OR T.LAT IS NULL THEN 0 " +
-                        " when t.TYPE = 0 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+workerLgt+", "+workerLat+" )) /1000,DECIMAL(15,2))  " +
-                        " when t.TYPE = 1 then   CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+driverLgt+", "+driverLat+" )) /1000,DECIMAL(15,2)) " +
-                        " else  CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+chefLgt+", "+chefLat+" )) /1000,DECIMAL(15,2)) end " , Orders::getDistance)
-                .eq(Objects.nonNull(model.getType()),Orders::getType,model.getType());
+                .eq(Objects.nonNull(model.getType()),Orders::getType,model.getType())
+                .eq(Objects.nonNull(model.getCommentStatus()),Orders::getCommentStatus,model.getCommentStatus());;
+        if(!(Objects.isNull(model.getQueryLat())||Objects.isNull(model.getQueryLgt()))){
+            queryWrapper.select(" case when T.LGT IS NULL OR T.LAT IS NULL THEN 0 " +
+                    " when t.TYPE = 0 then CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+workerLgt+", "+workerLat+" )) /1000,DECIMAL(15,2))  " +
+                    " when t.TYPE = 1 then   CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+driverLgt+", "+driverLat+" )) /1000,DECIMAL(15,2)) " +
+                    " else  CONVERT( ST_Distance_Sphere ( POINT ( t.LGT, t.LAT ), POINT ( "+chefLgt+", "+chefLat+" )) /1000,DECIMAL(15,2)) end " , Orders::getDistance);
+        }
         if(Objects.nonNull(model.getQueryMyOrderType())){
             if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)){
                 //鍙戝崟鏂� 鎴戠殑璁㈠崟
                 queryWrapper.eq(Orders::getReleaseMemberId,model.getMember().getId());
-                queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus());
+                queryWrapper.eq(Objects.nonNull(model.getStatus())&&!Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus());
+                queryWrapper.in(Objects.nonNull(model.getStatus())&&Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus(),Constants.ordersStatus.feeconfirm.getKey());
                 queryWrapper.orderByDesc(Orders::getCreateTime);
             }else if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){
                 //鎺ュ崟鏂� 鎴戠殑璁㈠崟
                 queryWrapper.eq(Orders::getAcceptMemberId,model.getMember().getId());
                 queryWrapper.eq(Objects.nonNull(model.getStatus()),Orders::getStatus,model.getStatus());
+//                queryWrapper.in(Objects.nonNull(model.getStatus())&&Constants.equalsInteger(model.getStatus(),Constants.ordersStatus.waitPay.getKey()),Orders::getStatus,model.getStatus(),Constants.ordersStatus.feeconfirm.getKey());
                 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 "));
                 if(Objects.nonNull(receiveWeight)){
                     queryWrapper.apply(" DATE_ADD(t.CREATE_TIME, INTERVAL "+receiveWeight.getDelayTime()+" MINUTE)  < now() ");
@@ -1540,38 +1705,13 @@
         IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper);
         for (Orders orders:iPage.getRecords()) {
             this.getPriceUnit(orders);
+            if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)||Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){
+                orders.setStatusName(
+                        Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)?Constants.ordersStatus.getName(orders.getStatus()):
+                                Constants.ordersStatus.getInfo(orders.getStatus())
+                );
+            }
         }
-//        if(Objects.nonNull(model.getQueryMyOrderType())&&Constants.equalsInteger(model.getQueryMyOrderType(),Constants.TWO)){
-//            if(Constants.equalsInteger(model.getMember().getUseIdentity(),Constants.ONE)){
-//                model.getMember().setWorkerIdentityModel(
-//                        identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
-//                                .eq(IdentityInfo::getMemberId,model.getMember().getId())
-//                                .eq(IdentityInfo::getType,Constants.ZERO)
-//                                .eq(IdentityInfo::getAuditStatus,Constants.TWO)
-//                                .last("limit 1")
-//                        )
-//                );
-//                model.getMember().setDriverIdentityModel(
-//                        identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
-//                                .eq(IdentityInfo::getMemberId,model.getMember().getId())
-//                                .eq(IdentityInfo::getType,Constants.ONE)
-//                                .eq(IdentityInfo::getAuditStatus,Constants.TWO)
-//                                .last("limit 1")
-//                        )
-//                );
-//                model.getMember().setChefIdentityModel(
-//                        identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda()
-//                                .eq(IdentityInfo::getMemberId,model.getMember().getId())
-//                                .eq(IdentityInfo::getType,Constants.TWO)
-//                                .eq(IdentityInfo::getAuditStatus,Constants.TWO)
-//                                .last("limit 1")
-//                        )
-//                );
-//            }
-//            for (Orders orders:iPage.getRecords()) {
-//               this.getDistance(model.getMember(),orders);
-//            }
-//        }
         return PageData.from(iPage);
     }
 
@@ -1670,9 +1810,26 @@
         }
         orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus()));
         orders.setCancelStatus(Constants.ZERO);
+        if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())&&Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){
+            String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_CONFIRM).getCode();
+            orders.setConfirmCountdown(DateUtil.getXMinuteAfterDate(orders.getIsUpdateTime(),Integer.valueOf(autoConfirmTime)).getTime() - System.currentTimeMillis());
+            if(orders.getConfirmCountdown()<=Constants.ZERO){
+                orders.setConfirmCountdown(0L);
+            }
+        }
+        if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.waitPay.getKey())){
+            orders.setCancelCountdown(DateUtil.getXMinuteAfterDate(orders.getCreateTime(),15).getTime() - System.currentTimeMillis());
+            if(orders.getCancelCountdown()<=Constants.ZERO){
+                orders.setCancelCountdown(0L);
+            }
+        }
         this.getPriceUnit(orders);
+        orders.setCanStart(Constants.ZERO);
         if(orders.getStatus() <= Constants.ordersStatus.accept.getKey()){
             if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
+                if(Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())&&orders.getStartDate().getTime() <= System.currentTimeMillis()){
+                    orders.setCanStart(Constants.ONE);
+                }
                 //鍒ゆ柇鏄惁鍙慨鏀� 宸插彇娑堟鏁� 涓� 鏃堕棿闄愬埗
                 Integer totalCancelTimes = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RELEASE_CANCEL_TIMES).getCode());
                 Long cancelTimes = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
@@ -1762,7 +1919,7 @@
     @Override
     public void autoGrabOrders(){
         String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_DISPATCH).getCode();
-        List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+        List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO)
                 .eq(Orders::getStatus,Constants.ONE).eq(Orders::getCommentStatus,Constants.ZERO)
                 .apply(" DATE_ADD(create_time, INTERVAL "+autoConfirmTime+" MINUTE) < now() ")
                 .last("limit 100")
@@ -1771,19 +1928,20 @@
             BigDecimal lat = orders.getLat();
             BigDecimal lgt = orders.getLgt();
             //鏌ヨ鑼冨洿鍐呯殑浼氬憳
-            List<Member> memberList = memberMapper.selectList(new MPJLambdaWrapper<Member>().selectAll(Member.class)
-                            .select(" ifnull((select r.level from receive_weight r where r.RECEIVE_MAX > t.RECEIVE_NUM and t.RECEIVE_NUM > r.RECEIVE_MIN limit 1  ),0) " ,Member::getLevel)
-                            .select(  " ifnull( (select CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2)) from identity_info ii where ii.AUDIT_STATUS = 2 and type = 0 and ii.member_id = t.ID limit  1 ),0) ",Member::getDistance )
-
-                    .apply(" id in (" +
-                            " select ii.member_id from identity_info ii where ii.AUDIT_STATUS = 2 and type = '"+orders.getType()+"' " +
-                            " and ( CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2))) < 100 " +
-                            ") ")
-                    .orderByDesc(Member::getLevel)
-                    .orderByDesc(Member::getScore)
-                    .orderByAsc(Member::getDistance)
-                    .last(" limit 1 ")
-            );
+            List<Member> memberList = memberMapper.getList(lgt,lat,orders.getType(),orders.getReleaseMemberId());
+//                    memberMapper.selectList(new MPJLambdaWrapper<Member>()
+//                    .select(Member::getId,Member::getScore)
+//                            .select(" ifnull((select r.level from receive_weight r where r.RECEIVE_MAX > RECEIVE_NUM and RECEIVE_NUM > r.RECEIVE_MIN limit 1  ),0) " ,Member::getLevel)
+//                            .select(  " ifnull( (select CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2)) from identity_info ii where ii.AUDIT_STATUS = 2 and type = 0 and ii.member_id = ID limit  1 ),0) ",Member::getDistance )
+////
+//                    .apply(" id in (" +
+//                            " select ii.member_id from identity_info ii where ii.AUDIT_STATUS = 2 and type = '"+orders.getType()+"' " +
+//                            " and ( CONVERT( ST_Distance_Sphere ( POINT ( ii.lgt, ii.lat ), POINT ( "+lgt+", "+lat+" )) /1000,DECIMAL(15,2))) < 100 " +
+//                            ") ")
+//                    .orderByDesc(" level , score ")
+//                    .orderByAsc(Member::getDistance)
+//                    .last(" limit 1 ")
+//            );
             if(CollectionUtils.isEmpty(memberList)){
                 continue;
             }
@@ -1791,8 +1949,9 @@
             Member member = memberList.get(Constants.ZERO);
             Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId());
             //鑷姩娲惧崟
-            Orders model = ordersMapper.selectById(orders.getStatus());
-            if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+            Orders model = ordersMapper.selectById(orders.getId());
+            if(!Constants.equalsInteger(model.getStatus(),Constants.ONE) || Constants.equalsInteger(releaseMember.getId(),model.getReleaseMemberId())){
+               //濡傛灉璁㈠崟宸插垹闄� 骞朵笖闈炲彂甯冩柟
                 continue;
             }
             ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,model.getId())
@@ -1804,7 +1963,7 @@
             );
 
             //鏇存柊鎺ュ崟閲�
-            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (ifnull(publish_num,0) + 1 )").eq(Member::getId,member.getId()));
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" RECEIVE_NUM = (ifnull(RECEIVE_NUM,0) + 1 )").eq(Member::getId,member.getId()));
 
             //鍒涘缓鎿嶄綔鏃ュ織
             Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO;
@@ -1826,8 +1985,8 @@
             //閫氱煡鎺ュ崟鏂�
             sendWxMessage.autoDispatchMessage(member.getOpenid(),orders,GeoUtils.haversineDistance(
                     orders.getLgt().doubleValue(), orders.getLat().doubleValue(),
-                    member.getDriverIdentityModel().getLgt().doubleValue(),
-                    member.getDriverIdentityModel().getLat().doubleValue()
+                    wokerIdentityInfo.getLgt().doubleValue(),
+                    wokerIdentityInfo.getLat().doubleValue()
             ));
              
             aliSmsService.businessSendSms(Constants.smsContent.dispatch.getKey(),orders.getLinkPhone(),orders,null,
@@ -1875,7 +2034,8 @@
     public void autoConfirm(){
         String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_CONFIRM).getCode();
         List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
-                .eq(Orders::getStatus,Constants.ordersStatus.accept).eq(Orders::getIsUpdate,Constants.ONE)
+                .eq(Orders::getStatus,Constants.ordersStatus.accept.getKey())
+                .eq(Orders::getIsUpdate,Constants.ONE)
                 .apply(" DATE_ADD(IS_UPDATE_TIME, INTERVAL "+autoConfirmTime+" MINUTE) < now() ")
                 .last("limit 100")
         );
@@ -1889,6 +2049,34 @@
                 //璁板綍鍚屾剰淇敼鐨勬棩蹇�
                 Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO_AGREE;
                 this.saveOrderLog(orders,ordersLog,
+                        ordersLog.getInfo(),null,null);
+            }
+        }
+    }
+
+
+
+    //鑷姩鍙栨秷 璁㈠崟鏈敮浠�
+    @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public void autoCancelWaitPay(){
+        List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getStatus,Constants.ordersStatus.waitPay)
+                .apply(" DATE_ADD(CREATE_TIME, INTERVAL 15 MINUTE) < now() ")
+                .last("limit 100")
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ordersList)){
+            for (Orders orders:ordersList) {
+                ordersMapper.update(new UpdateWrapper<Orders>().lambda()
+                        .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
+                        .set(Orders::getUpdateTime,DateUtil.getCurrDateTime())
+                        .set(Orders::getCancelTime,DateUtil.getCurrDateTime())
+                        .set(Orders::getCancelType,Constants.TWO)
+                        .eq(Orders::getId,orders.getId())
+                );
+                //璁板綍鍚屾剰淇敼鐨勬棩蹇�
+                Constants.OrdersLog ordersLog = Constants.OrdersLog.SYSTEM_CANCEL;
+                this.saveOrderLog(orders,ordersLog,
                         ordersLog.getInfo(),orders.getAcceptMemberId(),null);
             }
         }

--
Gitblit v1.9.3