From 82735e4d46ac7b9969facef2acc8f8e793b68f71 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 15 九月 2025 16:11:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  227 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 145 insertions(+), 82 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 f015f0c..7408e89 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
@@ -37,6 +37,7 @@
 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;
@@ -135,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("-",""));
             //鍞よ捣鏀粯涓氬姟
@@ -150,7 +151,7 @@
         }
         orders.setOriginPriceNum1(orders.getPriceNum1());
         orders.setOriginPriceNum2(orders.getPriceNum2());
-        orders.setOriginEstimatedAccount(orders.getOriginEstimatedAccount());
+        orders.setOriginEstimatedAccount(orders.getEstimatedAccount());
         orders.setConfirmOtherFee(0l);
         ordersMapper.insert(orders);
 
@@ -175,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{
@@ -184,7 +185,7 @@
             }else{
                 orderTypeInfo = orderTypeInfo + (Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"-鍒嗘嫞宸�":"-鍖呰宸�");
             }
-        }
+        }*/
         String logInfo = ordersLog.getInfo()
                 .replace("{param}",orderTypeInfo);
         this.saveOrderLog(orders,ordersLog,
@@ -261,6 +262,7 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        Integer priceNum2 = orders.getPriceNum2();
         if( (Constants.equalsInteger(orders.getType(),Constants.ZERO)
                 && Constants.equalsInteger(orders.getWorkType(),Constants.TWO) &&
             ( Constants.equalsInteger(orders.getCarType(),Constants.ZERO)
@@ -277,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)){
@@ -318,6 +320,7 @@
                 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())
@@ -340,15 +343,19 @@
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢ㄩ鏍囧噯鏁版嵁閿欒锛岃鍒锋柊閲嶈瘯");
                 }
                 sumPrice = sumPrice + (cateringDTO.getPrice() * cateringDTO.getNum()) ;
+
             }
             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);
     }
 
 
@@ -401,9 +408,6 @@
         }else{
             throw new BusinessException(ResponseStatus.NOT_ALLOWED);
         }
-
-
-
     }
 
 
@@ -451,7 +455,7 @@
         orders.setOriginPriceNum1(orders.getPriceNum1());
         orders.setOriginPriceNum2(orders.getPriceNum2());
         orders.setOriginEstimatedAccount(orders.getOriginEstimatedAccount());
-        orders.setConfirmOtherFee(0l);
+        orders.setConfirmOtherFee(0L);
         ordersMapper.updateById(orders);
     }
 
@@ -644,9 +648,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()+"浠�");
                         }
                     }
                 }
@@ -685,15 +689,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(),"鎮ㄨ繕鏈敞鍐岃鏈嶅姟锛岃鍓嶅線\"鎴戠殑\"椤甸潰鎻愪氦鐢宠");
             }
         }
 
@@ -759,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());
         orders.setWorkStartTime(new Date());
@@ -799,6 +806,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())
@@ -808,6 +817,7 @@
                 .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getEstimatedAccount,total)
                 .set(Orders::getOriginEstimatedAccount,total)
+                .set(Orders::getReceiveAccount,reciveTotal)
                 .eq(Orders::getId,orders.getId())
         );
         //鍒涘缓鎿嶄綔鏃ュ織
@@ -844,24 +854,28 @@
     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.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO ))
+                    || (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()));
         }
-        BigDecimal bigDecimalPrice = orders.getPrice().
-                multiply(new BigDecimal(orders.getPriceNum1().toString()))
-                .multiply(new BigDecimal(orders.getPriceNum2().toString()));
+        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();
     }
 
@@ -911,9 +925,12 @@
         }
         orders.setPriceNum1(confirmUpdOrderDTO.getPriceNum1());
         orders.setPriceNum2(confirmUpdOrderDTO.getPriceNum2());
+        orders.setConfirmOtherFee(confirmUpdOrderDTO.getConfirmOtherFee());
         Long totalFee = this.getTotal(orders);//閲嶆柊璁$畻璐圭敤
-        Long payFee = totalFee+Constants.formatLongNum(confirmUpdOrderDTO.getConfirmOtherFee());//閲嶆柊璁$畻璐圭敤
-        BigDecimal recFee = new BigDecimal(payFee).multiply((new BigDecimal(1).subtract(Constants.formatBigDecimal(orders.getPlatformRata())))).setScale(0, RoundingMode.HALF_UP) ;
+        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())
@@ -922,14 +939,21 @@
                 .set(Orders::getEstimatedAccount,totalFee)
                 .set(Orders::getStatus,Constants.ordersStatus.feeconfirm.getKey())
                 .set(Orders::getPayAccount,payFee)
-                .set(Orders::getReceiveAccount,recFee.longValue())
+                .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);
+        }
 
     }
 
@@ -1086,13 +1110,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)){
@@ -1132,6 +1156,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);
         }
 
@@ -1169,16 +1194,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)
@@ -1199,6 +1225,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);
         }
         //鐭俊閫氱煡
@@ -1224,9 +1251,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(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
@@ -1242,7 +1276,8 @@
         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 =  (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("-",""));
             ordersMapper.updateById(orders);
@@ -1316,21 +1351,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;
@@ -1394,6 +1436,7 @@
             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);
         }
         //鐭俊閫氱煡鍙戝崟鏂�
@@ -1493,7 +1536,7 @@
             }
         }else{
             //闈炵敤椁愮被璁㈠崟
-            if(!Constants.equalsInteger(orders.getStatus(),Constants.THREE)){
+            if(!Constants.equalsInteger(orders.getStatus(),Constants.FIVE)){
                 return  ("澶勭悊鎴愬姛!");
             }else{
                 //澶勭悊鏀粯瀹屾垚閫昏緫
@@ -1573,9 +1616,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);
         }
@@ -1620,24 +1661,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() ");
@@ -1658,38 +1704,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);
     }
 
@@ -1789,12 +1810,25 @@
         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)){
-            orders.setConfirmCountdown(DateUtil.getXMinuteAfterDate(orders.getIsUpdateTime(),60).getTime() - System.currentTimeMillis());
+            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()
@@ -1893,7 +1927,7 @@
             BigDecimal lat = orders.getLat();
             BigDecimal lgt = orders.getLgt();
             //鏌ヨ鑼冨洿鍐呯殑浼氬憳
-            List<Member> memberList = memberMapper.getList(lgt,lat,orders.getType());
+            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)
@@ -1915,7 +1949,7 @@
             Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId());
             //鑷姩娲惧崟
             Orders model = ordersMapper.selectById(orders.getId());
-            if(!Constants.equalsInteger(model.getStatus(),Constants.ONE) || Constants.equalsInteger(model.getId(),model.getReleaseMemberId())){
+            if(!Constants.equalsInteger(model.getStatus(),Constants.ONE) || Constants.equalsInteger(releaseMember.getId(),model.getReleaseMemberId())){
                //濡傛灉璁㈠崟宸插垹闄� 骞朵笖闈炲彂甯冩柟
                 continue;
             }
@@ -1999,7 +2033,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")
         );
@@ -2013,6 +2048,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