From 4e3e18cdb0d75c098b68353ef8c86cdd7c0f79b2 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 21 八月 2025 15:27:34 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  860 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 587 insertions(+), 273 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 aa1864e..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
@@ -17,6 +17,7 @@
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.dto.*;
+import com.doumee.dao.vo.OrderReleaseVO;
 import com.doumee.service.business.OrdersService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -42,10 +43,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -84,6 +82,9 @@
     private WithdrawalOrdersMapper withdrawalOrdersMapper;
 
     @Autowired
+    private ReceiveWeightMapper receiveWeightMapper;
+
+    @Autowired
     private WxMiniUtilService wxMiniUtilService;
 
     @Resource
@@ -91,11 +92,22 @@
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
-    public Object create(Orders orders) {
+    public OrderReleaseVO create(Orders orders) {
+        OrderReleaseVO orderReleaseVO = new OrderReleaseVO();
         Object objects = null;
         this.initVerification(orders);
         orders.setCreateTime(new Date());
+        orders.setUpdateTime(orders.getUpdateTime());
         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)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈缃钩鍙伴厤缃俊鎭�");
+        }
+        orders.setPlatformRata(new BigDecimal(platformCategory.getDetail()).divide(new BigDecimal("100")));
         //璁㈠崟缂栧彿
         orders.setCode(this.getNextCode(orders.getType()));
         Category category = categoryMapper.selectOne(new QueryWrapper<Category>().lambda()
@@ -109,17 +121,20 @@
         //鐢ㄩ璁㈠崟
         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);
         }else{
             orders.setStatus(Constants.ordersStatus.wait.getKey());
         }
         ordersMapper.insert(orders);
+        orderReleaseVO.setId(orders.getId());
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orders.getMultifileList())){
             List<Multifile> multifileList = orders.getMultifileList();
             for (Multifile multifile:multifileList) {
                 if(Objects.isNull(multifile)
-                || Objects.isNull(multifile.getObjType())
                 || StringUtils.isEmpty(multifile.getFileurl())
                 || StringUtils.isEmpty(multifile.getName())){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒");
@@ -132,7 +147,7 @@
             multifileMapper.insert(multifileList);
         }
         //鏇存柊鐢ㄦ埛鍙戝崟閲�
-        memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getReceiveNum," (receive_num + 1 )").eq(Member::getId,orders.getMember().getId()));
+        memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" receive_num =  ( receive_num + 1 )").eq(Member::getId,orders.getMember().getId()));
 
         //鍒涘缓鎿嶄綔鏃ュ織
         Constants.OrdersLog ordersLog = Constants.OrdersLog.UPLOAD;
@@ -150,7 +165,7 @@
                 .replace("{param}",orderTypeInfo);
         this.saveOrderLog(orders,ordersLog,
                 logInfo,orders.getReleaseMemberId(),null);
-        return objects;
+        return orderReleaseVO;
     }
 
     private Object getWxPayResponse(Orders orders,String openid){
@@ -166,10 +181,10 @@
         Payer payer = new Payer();
         payer.setSubOpenid(openid);
         request.setPayer(payer);
-        request.setOutTradeNo(orders.getCode());
+        request.setOutTradeNo(orders.getOutTradeNo());
         request.setNotifyUrl(WxMiniConfig.wxProperties.getNotifyUrl());//杩欎釜鍥炶皟url蹇呴』鏄痟ttps寮�澶寸殑
         Amount amount = new Amount();
-        amount.setTotal(orders.getEstimatedAccount().intValue());
+        amount.setTotal(1);//orders.getPayAccount().intValue());
         request.setAmount(amount);
 //        PrepayResponse res = WxMiniConfig.wxPayService.prepay(request);
         // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁�
@@ -210,12 +225,10 @@
                 || Objects.isNull(orders.getStartDate())
                 || Objects.isNull(orders.getEndDate())
                 || StringUtil.isBlank(orders.getLocation())
-                || StringUtil.isBlank(orders.getLocationRemark())
                 || StringUtil.isBlank(orders.getLinkPhone())
                 || Objects.isNull(orders.getLat())
                 || Objects.isNull(orders.getLgt())
-                || Objects.isNull(orders.getCategoryId())
-                || Objects.isNull(orders.getTotalDays())
+                || (!Constants.equalsInteger(orders.getType(),Constants.TWO) && Objects.isNull(orders.getCategoryId()))
                 || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Objects.isNull(orders.getWorkType()))
                 || Objects.isNull(orders.getPriceNum1())
                 || Objects.isNull(orders.getEstimatedAccount())
@@ -223,19 +236,20 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if((Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO ))
-                || (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO)
-                        &&Constants.equalsInteger(orders.getCarType(),Constants.TWO))
-                || Constants.equalsInteger(orders.getType(),Constants.ONE)
+        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);
+            }
+        }else{
             orders.setPriceNum2(Constants.ONE);
         }
-        if(Objects.isNull(orders.getPriceNum2())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
-        }
+        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)){
@@ -254,9 +268,9 @@
             for (WayInfoDTO wayInfoDTO:orders.getWayInfoDTOList()) {
                 if(Objects.isNull(wayInfoDTO)
                         ||StringUtils.isEmpty(wayInfoDTO.getLocation())
-                        ||StringUtils.isEmpty(wayInfoDTO.getProvince())
-                        ||StringUtils.isEmpty(wayInfoDTO.getCity())
-                        ||StringUtils.isEmpty(wayInfoDTO.getArea())
+//                        ||StringUtils.isEmpty(wayInfoDTO.getProvince())
+//                        ||StringUtils.isEmpty(wayInfoDTO.getCity())
+//                        ||StringUtils.isEmpty(wayInfoDTO.getArea())
                         ||Objects.isNull(wayInfoDTO.getLat())
                         ||Objects.isNull(wayInfoDTO.getLgt())
                 ){
@@ -293,6 +307,9 @@
 
 
 
+
+
+
     @Override
     public void deleteById(Integer id) {
         ordersMapper.deleteById(id);
@@ -313,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(),"姝ょ被璁㈠崟鏃犳硶杩涜淇敼");
@@ -347,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());
@@ -363,7 +409,7 @@
             return;
         }
         for (Orders orders: orderss) {
-            this.updateById(orders);
+            //this.updateById(orders);
         }
     }
 
@@ -389,28 +435,8 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         orders.setStatusName(Constants.ordersStatus.getName(orders.getStatus()));
+        this.getPriceUnit(orders);
 
-        if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
-            if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){
-                orders.setPriceUnit("鍏�/鏂�");
-            }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){
-                orders.setPriceUnit("鍏�/浜�/澶�");
-            }else{
-                if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
-                    orders.setPriceUnit("鍏�/浜�/澶�");
-                }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
-                    orders.setPriceUnit("鍏�/浜�/灏忔椂");
-                }else{
-                    orders.setPriceUnit("鍏�/鏂�");
-                }
-            }
-        }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
-            if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
-                orders.setPriceUnit("鍏�/澶�");
-            }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
-                orders.setPriceUnit("鍏�/娆�");
-            }
-        }
         //闄勪欢淇℃伅
         List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId())
                 .eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId));
@@ -441,6 +467,29 @@
         return orders;
     }
 
+    public void getPriceUnit(Orders orders){
+        if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+            if(Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)){
+                orders.setPriceUnit("鍏�/鏂�");
+            }else if(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)){
+                orders.setPriceUnit("鍏�/浜�/澶�");
+            }else{
+                if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
+                    orders.setPriceUnit("鍏�/浜�/澶�");
+                }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
+                    orders.setPriceUnit("鍏�/浜�/灏忔椂");
+                }else{
+                    orders.setPriceUnit("鍏�/鏂�");
+                }
+            }
+        }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
+            if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
+                orders.setPriceUnit("鍏�/澶�");
+            }else if(Constants.equalsInteger(orders.getCarType(),Constants.ONE)){
+                orders.setPriceUnit("鍏�/娆�");
+            }
+        }
+    }
     @Override
     public Orders findOne(Orders orders) {
         QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders);
@@ -483,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()) {
@@ -527,11 +579,11 @@
 
             if(Constants.equalsInteger(orders.getCarType(),Constants.ZERO)){
                 if(Objects.nonNull(orders.getPriceNum2())) {
-                    orders.setOrderContent(orders.getOrderContent() + " | 鐢ㄨ溅" + orders.getPriceNum2() + "澶�");
+                    orders.setOrderContent(orders.getOrderContent() + " | 鐢ㄨ溅" + orders.getPriceNum1() + "澶�");
                 }
             }else{
                 if(Objects.nonNull(orders.getPriceNum2())) {
-                    orders.setOrderContent(orders.getOrderContent() + " | 鐢ㄨ溅" + orders.getPriceNum2() + "娆�");
+                    orders.setOrderContent(orders.getOrderContent() + " | 鐢ㄨ溅" + orders.getPriceNum1() + "娆�");
                 }
             }
         }else{
@@ -577,28 +629,34 @@
         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(),"韬唤淇℃伅寮傚父锛岃鍓嶅線涓汉涓績杩涜韬唤璁よ瘉!");
             }
         }
-        orders.setUpdateTime(new Date());
-        orders.setAcceptType(Constants.ZERO);
-        orders.setAcceptTime(new Date());
-        orders.setAcceptMemberId(member.getId());
-        orders.setStatus(Constants.ordersStatus.accept.getKey());
-        ordersMapper.updateById(orders);
+
+         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())
+                .set(Orders::getAcceptMemberId,member.getId())
+                .set(Orders::getStatus,Constants.ordersStatus.accept.getKey())
+        );
+
+
+
         //鏇存柊鎺ュ崟閲�
-        memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getPublishNum," (publish_num + 1 )").eq(Member::getId,member.getId()));
+        memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId()));
 
         //鍒涘缓鎿嶄綔鏃ュ織
         Constants.OrdersLog ordersLog = Constants.OrdersLog.RECEIVE;
@@ -627,7 +685,7 @@
         if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.accept.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�");
         }
-        if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
+        if(!Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
         if(Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){
@@ -647,74 +705,68 @@
 
     /**
      * 鍙戝崟鏂逛慨鏀硅鍗� - 宸叉帴鍗曠姸鎬�
-     * @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())
-            || Objects.isNull(updOrderDataDTO.getTotalDays())){
+    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,"now()")
-                .set(Orders::getUpdateTime,"now()")
+                .set(Orders::getIsUpdateTime,new Date())
+                .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getEstimatedAccount,total)
                 .eq(Orders::getId,orders.getId())
         );
         //鍒涘缓鎿嶄綔鏃ュ織
         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 閫氱煡鎺ュ崟浜� 璁㈠崟鍙戠敓鍙樻洿
     }
 
 
+    @Override
     public Long getTotal(Orders orders){
+        if(Objects.isNull(orders)
+                ||Objects.isNull(orders.getPrice())
+                ||Objects.isNull(orders.getPriceNum1())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         if(
-            (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO )) ||
-                    (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.TWO)
-                            &&Constants.equalsInteger(orders.getCarType(),Constants.TWO))
+            (Constants.equalsInteger(orders.getType(),Constants.ZERO) && Constants.equalsInteger(orders.getWorkType(),Constants.ZERO ))
             || Constants.equalsInteger(orders.getType(),Constants.ONE)
+                || Constants.equalsInteger(orders.getType(),Constants.TWO)
         ){
             orders.setPriceNum2(Constants.ONE);
+        }else{
+            if(Objects.isNull(orders.getPriceNum2())){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
         }
         return orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2();
     }
@@ -745,13 +797,13 @@
         if(!Constants.equalsInteger(orders.getIsUpdate(),Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟淇敼鐘舵�佸凡娴佽浆锛屾棤娉曡繘琛岃鎿嶄綔");
         }
-        if(Constants.equalsInteger(orders.getAcceptMemberId(),confirmUpdOrderDTO.getMember().getId())){
+        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,"now()")
+                    .set(Orders::getUpdateTime,new Date())
                     .eq(Orders::getId,orders.getId())
             );
             //璁板綍鍚屾剰淇敼鐨勬棩蹇�
@@ -761,44 +813,79 @@
         }else{
             ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                     .set(Orders::getIsUpdate,Constants.TWO)
-                    .set(Orders::getUpdateTime,"now()")
+                    .set(Orders::getUpdateTime,new Date())
                     .set(Orders::getStatus,Constants.ordersStatus.wait.getKey())
                     .set(Orders::getAcceptMemberId,null)
                     .set(Orders::getAcceptType,null)
                     .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;
             this.saveOrderLog(orders,ordersLog,
                     ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null);
-
             //TODO 鍙戦�佷笉鍚屾剰鍙樻洿閫氱煡
-
         }
     }
 
 
-    /**
-     * 鍙戝崟鏂瑰彇娑堣鍗�
-     * @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()))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
         }
-        if(Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
+        if(!Constants.equalsInteger(orders.getReleaseMemberId(),member.getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
         //寰呮敮浠樼敤椁愯鍗�/寰呮帴鍗曡鍗曡繘琛屽彇娑�
@@ -818,8 +905,8 @@
             }
             ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                     .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
-                    .set(Orders::getUpdateTime,"now()")
-                    .set(Orders::getCancelTime,"now()")
+                    .set(Orders::getUpdateTime,new Date())
+                    .set(Orders::getCancelTime,new Date())
                     .set(Orders::getCancelType,Constants.ZERO)
                     .eq(Orders::getId,orders.getId())
             );
@@ -856,42 +943,39 @@
             }
             ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                     .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
-                    .set(Orders::getUpdateTime,"now()")
-                    .set(Orders::getCancelTime,"now()")
+                    .set(Orders::getUpdateTime,new Date())
+                    .set(Orders::getCancelTime,new Date())
                     .set(Orders::getCancelType,Constants.ONE)
                     .eq(Orders::getId,orders.getId())
             );
             //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(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
         }
-        if(Constants.equalsInteger(orders.getAcceptMemberId(),member.getId())){
+        if(!Constants.equalsInteger(orders.getAcceptMemberId(),member.getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
         //鍒ゆ柇鏄惁鍙慨鏀� 宸插彇娑堟鏁� 涓� 鏃堕棿闄愬埗
@@ -911,7 +995,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璺濈璁㈠崟寮�濮嬫椂闂翠笉瓒�"+cancelTimeHour+"灏忔椂,鏃犳硶鍙栨秷璁㈠崟锛屽闇�澶勭悊璇疯仈绯诲鏈�");
         }
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
-                .set(Orders::getUpdateTime,"now()")
+                .set(Orders::getUpdateTime,new Date())
                 .set(Orders::getStatus,Constants.ordersStatus.wait.getKey())
                 .set(Orders::getAcceptMemberId,null)
                 .set(Orders::getAcceptType,null)
@@ -919,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,
@@ -936,7 +1020,7 @@
      */
     @Override
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
-    public Object doneOrder(DoneOrderDTO doneOrderDTO){
+    public OrderReleaseVO doneOrder(DoneOrderDTO doneOrderDTO){
         if(Objects.isNull(doneOrderDTO)||Objects.isNull(doneOrderDTO.getOrderId())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -950,9 +1034,11 @@
         if(!Constants.equalsInteger(orders.getStatus(),Constants.ordersStatus.doing.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆,鏃犳硶杩涜鍙栨秷");
         }
-        if(Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){
+        if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍鐨勮鍗曟棤娉曡繘琛岃鎿嶄綔");
         }
+        OrderReleaseVO orderReleaseVO = new OrderReleaseVO();
+        orderReleaseVO.setId(orders.getId());
         Object object = null;
         //鐢ㄩ璁㈠崟
         if(!Constants.equalsInteger(orders.getType(),Constants.TWO)){
@@ -960,20 +1046,81 @@
             //鎻愭垚閲戦
             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);
             //鍞よ捣鏀粯涓氬姟
-            object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+            object = this.getWxPayResponse(orders,doneOrderDTO.getMember().getOpenid());
+            orderReleaseVO.setObject(object);
         }else{
             orders.setStatus(Constants.ordersStatus.done.getKey());
+            orders.setFinishTime(new Date());
+            ordersMapper.updateById(orders);
+
+            Member member = memberMapper.selectById(orders.getAcceptMemberId());
+
+            //瀛樺偍娴佹按璁板綍
+            MemberRevenue memberRevenue = new MemberRevenue();
+            memberRevenue.setCreateTime(new Date());
+            memberRevenue.setMemberId(orders.getAcceptMemberId());
+            memberRevenue.setType(orders.getType());
+            memberRevenue.setOptType(Constants.ONE);
+            memberRevenue.setBeforeAmount(member.getAmount());
+            memberRevenue.setAmount(orders.getReceiveAccount());
+            memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount());
+            if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+                memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" +
+                        (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�")));
+            }else{
+                memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
+            }
+            memberRevenue.setObjId(orders.getId());
+            memberRevenue.setObjType(Constants.ZERO);
+            memberRevenue.setStatus(Constants.ZERO);
+            memberRevenueMapper.insert(memberRevenue);
+
             //鏃ュ織瀛樺偍
             Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE;
             this.saveOrderLog(orders,ordersLog,
                     ordersLog.getInfo(),doneOrderDTO.getMember().getId(),null);
         }
-        return object;
+        return orderReleaseVO;
     }
 
 
+
+    @Override
+    public OrderReleaseVO reusePay(ReusePayDTO reusePayDTO){
+        if(Objects.isNull(reusePayDTO)||Objects.isNull(reusePayDTO.getOrderId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        Orders orders = ordersMapper.selectById(reusePayDTO.getOrderId());
+        if(Objects.isNull(orders)||Constants.equalsInteger(orders.getDeleted(),Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(orders.getType(),Constants.TWO)&&Objects.isNull(reusePayDTO.getAmount())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+
+        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.getPayStatus(),Constants.ZERO) )){
+            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);
+        //鍞よ捣鏀粯涓氬姟
+        Object object = this.getWxPayResponse(orders,orders.getMember().getOpenid());
+        orderReleaseVO.setObject(object);
+        orderReleaseVO.setId(orders.getId());
+        return orderReleaseVO;
+    }
 
 
     @Override
@@ -1002,17 +1149,21 @@
         }
 
         //鍑忓皯鍙戝崟閲�
-        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 = ifnull(publish_num,0) - 1")
+                .eq(Member::getId,orders.getReleaseMemberId()));
 
         if(Constants.equalsInteger(orders.getStatus(),Constants.TWO)||Constants.equalsInteger(orders.getStatus(),Constants.THREE)){
             //鍑忓皯鎺ュ崟閲�
-            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 = ifnull(receive_num,0) - 1")
+                    .eq(Member::getId,orders.getAcceptMemberId()));
         }
-
+        Date date = new Date();
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                 .set(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
-                .set(Orders::getUpdateTime,"now()")
-                .set(Orders::getCancelTime,"now()")
+                .set(Orders::getUpdateTime,date)
+                .set(Orders::getCancelTime,date)
                 .set(Orders::getCancelType,Constants.TWO)
                 .eq(Orders::getId,orders.getId())
         );
@@ -1048,26 +1199,23 @@
 
         ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                 .set(Orders::getCommentStatus,Constants.ONE)
-                .set(Orders::getUpdateTime,"now()")
-                .set(Orders::getCommentTime,"now()")
+                .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;
         this.saveOrderLog(orders,ordersLog,
                 ordersLog.getInfo(),orders.getAcceptMemberId(),null);
     }
-
-
 
 
     /**
@@ -1079,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)){
@@ -1087,10 +1235,10 @@
             }else{
                 //澶勭悊鏀粯瀹屾垚閫昏緫
                 ordersMapper.update(new UpdateWrapper<Orders>().lambda()
-                        .set(Orders::getUpdateTime,"now()")
-                        .set(Orders::getStatus,Constants.ordersStatus.wait)
+                        .set(Orders::getUpdateTime,new Date())
+                        .set(Orders::getStatus,Constants.ordersStatus.wait.getKey())
                         .set(Orders::getPayStatus,Constants.ONE)
-                        .set(Orders::getPayTime,"now()")
+                        .set(Orders::getPayTime,new Date())
                         .set(Orders::getPayMethod,Constants.ZERO)
                         .set(Orders::getWxExternalNo,paymentNo)
                         .eq(Orders::getId,orders.getId())
@@ -1108,13 +1256,13 @@
             }else{
                 //澶勭悊鏀粯瀹屾垚閫昏緫
                 ordersMapper.update(new UpdateWrapper<Orders>().lambda()
-                        .set(Orders::getUpdateTime,"now()")
+                        .set(Orders::getUpdateTime,new Date())
                         .set(Orders::getStatus,Constants.FOUR)
                         .set(Orders::getPayStatus,Constants.ONE)
-                        .set(Orders::getPayTime,"now()")
+                        .set(Orders::getPayTime,new Date())
                         .set(Orders::getPayMethod,Constants.ZERO)
                         .set(Orders::getWxExternalNo,paymentNo)
-                        .set(Orders::getFinishTime,"now()")
+                        .set(Orders::getFinishTime,new Date())
                         .eq(Orders::getId,orders.getId())
                 );
 
@@ -1122,12 +1270,20 @@
                 //瀛樺偍娴佹按璁板綍
                 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);
                 memberRevenue.setBeforeAmount(member.getAmount());
                 memberRevenue.setAmount(orders.getReceiveAccount());
                 memberRevenue.setAfterAmount(member.getAmount() + orders.getReceiveAccount());
+                if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+                    memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()) + "-" +
+                            (Constants.equalsInteger(orders.getWorkType(),Constants.ZERO)?"閲囨憳宸�":(Constants.equalsInteger(orders.getWorkType(),Constants.ONE)?"鍒嗘嫞宸�":"鍖呰宸�")));
+                }else{
+                    memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
+                }
                 memberRevenue.setObjId(orders.getId());
                 memberRevenue.setObjType(Constants.ZERO);
                 memberRevenue.setStatus(Constants.ZERO);
@@ -1135,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())
                 );
 
@@ -1146,6 +1302,7 @@
                         ordersLog.getInfo(),orders.getReleaseMemberId(),null);
 
                 //TODO 閫氱煡鎺ュ崟鏂� 娆鹃」宸插埌璐�
+
             }
         }
         return  ("澶勭悊鎴愬姛!");
@@ -1158,69 +1315,124 @@
         MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<>();
         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())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        BigDecimal chefLat = model.getQueryLat();
+        BigDecimal chefLgt = model.getQueryLgt();
+        BigDecimal driverLat = model.getQueryLat();
+        BigDecimal driverLgt = model.getQueryLgt();
+        BigDecimal workerLat = model.getQueryLat();
+        BigDecimal workerLgt = model.getQueryLgt();
+        IdentityInfo wokerIdentityInfo = 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")
+        );
+        if(Objects.nonNull(wokerIdentityInfo)){
+            workerLat = wokerIdentityInfo.getLat();
+            workerLgt = wokerIdentityInfo.getLgt();
+        }
+        IdentityInfo driverIdentityInfo = 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")
+        );
+        if(Objects.nonNull(driverIdentityInfo)){
+            driverLat = driverIdentityInfo.getLat();
+            driverLgt = driverIdentityInfo.getLgt();
+        }
+        IdentityInfo chefIdentityInfo = 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")
+        );
+        if(Objects.nonNull(chefIdentityInfo)){
+            chefLat = chefIdentityInfo.getLat();
+            chefLgt = chefIdentityInfo.getLgt();
+        }
         queryWrapper.selectAll(Orders.class)
                 .select("c1.name",Orders::getCategoryName)
                 .select("c2.name",Orders::getTransportTypeName)
                 .leftJoin(" category c1 on t.category_id = c1.id  ")
-                .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.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());
         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.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.orderByDesc(Orders::getAcceptTime);
             }else{
-                //鎺ュ崟澶у巺
-                queryWrapper.and(i->
-                        i.eq(Constants.equalsInteger(model.getMember().getWorkerIdentity(),Constants.TWO),Orders::getType,Constants.ZERO)
-                                .or()
-                                .eq(Constants.equalsInteger(model.getMember().getDriverIdentity(),Constants.TWO),Orders::getType,Constants.ONE)
-                                .or()
-                                .eq(Constants.equalsInteger(model.getMember().getChefIdentity(),Constants.TWO),Orders::getType,Constants.TWO)
-                );
-                queryWrapper.eq(Orders::getStatus,Constants.ONE);
+                //鏌ヨ鐢ㄦ埛鐨勬帴鍗曟潈閲�
+                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() ");
+                }
+                queryWrapper.eq(Orders::getStatus,Constants.ordersStatus.wait.getKey());
+                queryWrapper.ne(Orders::getReleaseMemberId,model.getMember().getId());
+                if(Objects.nonNull(model.getSortType())){
+                    if(Constants.equalsInteger(model.getSortType(),Constants.ZERO)){
+                        queryWrapper.orderByDesc(Orders::getCreateTime);
+                    }else if(Constants.equalsInteger(model.getSortType(),Constants.ONE)){
+                        queryWrapper.orderByAsc(" distance  ");
+                    }else{
+                        queryWrapper.orderByDesc(Orders::getEstimatedAccount);
+                    }
+                }
             }
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
+        } 
         IPage<Orders> iPage = ordersMapper.selectJoinPage(page,Orders.class,queryWrapper);
-        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);
-            }
+        for (Orders orders:iPage.getRecords()) {
+            this.getPriceUnit(orders);
         }
+//        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);
     }
 
@@ -1229,72 +1441,83 @@
 
     //瀹氫綅璺濈
     public void getDistance(Member member,Orders orders){
+        try{
+            if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
+                if(Objects.nonNull(member.getWorkerIdentityModel())&&Objects.nonNull(member.getWorkerIdentityModel().getLgt())
+                        &&Objects.nonNull(member.getWorkerIdentityModel().getLat())){
+                    orders.setDistance(
+                            GeoUtils.haversineDistance(
+                                    orders.getLgt().doubleValue(),orders.getLat().doubleValue(),
+                                    member.getWorkerIdentityModel().getLgt().doubleValue(),
+                                    member.getWorkerIdentityModel().getLat().doubleValue()
+                            )
+                    );
+                }
 
-        if(Constants.equalsInteger(orders.getType(),Constants.ZERO)){
-            if(Objects.nonNull(member.getWorkerIdentityModel())&&Objects.nonNull(member.getWorkerIdentityModel().getLgt())
-                    &&Objects.nonNull(member.getWorkerIdentityModel().getLat())){
-                orders.setDistance(
-                        GeoUtils.haversineDistance(
-                                orders.getLgt().doubleValue(),orders.getLat().doubleValue(),
-                                member.getWorkerIdentityModel().getLgt().doubleValue(),
-                                member.getWorkerIdentityModel().getLat().doubleValue()
-                        )
-                );
+            }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
+                if(Objects.nonNull(member.getDriverIdentityModel())&&Objects.nonNull(member.getDriverIdentityModel().getLgt())
+                        &&Objects.nonNull(member.getDriverIdentityModel().getLat())) {
+                    orders.setDistance(
+                            GeoUtils.haversineDistance(
+                                    orders.getLgt().doubleValue(), orders.getLat().doubleValue(),
+                                    member.getDriverIdentityModel().getLgt().doubleValue(),
+                                    member.getDriverIdentityModel().getLat().doubleValue()
+                            )
+                    );
+                }
+            }else{
+                if(Objects.nonNull(member.getChefIdentityModel())&&Objects.nonNull(member.getChefIdentityModel().getLgt())
+                        &&Objects.nonNull(member.getChefIdentityModel().getLat())) {
+                    orders.setDistance(
+                            GeoUtils.haversineDistance(
+                                    orders.getLgt().doubleValue(),orders.getLat().doubleValue(),
+                                    member.getChefIdentityModel().getLgt().doubleValue(),
+                                    member.getChefIdentityModel().getLat().doubleValue()
+                            )
+                    );
+                }
             }
-
-        }else if(Constants.equalsInteger(orders.getType(),Constants.ONE)){
-            if(Objects.nonNull(member.getDriverIdentityModel())&&Objects.nonNull(member.getDriverIdentityModel().getLgt())
-                    &&Objects.nonNull(member.getDriverIdentityModel().getLat())) {
-                orders.setDistance(
-                        GeoUtils.haversineDistance(
-                                orders.getLgt().doubleValue(), orders.getLat().doubleValue(),
-                                member.getDriverIdentityModel().getLgt().doubleValue(),
-                                member.getDriverIdentityModel().getLat().doubleValue()
-                        )
-                );
-            }
-        }else{
-            if(Objects.nonNull(member.getChefIdentityModel())&&Objects.nonNull(member.getChefIdentityModel().getLgt())
-                    &&Objects.nonNull(member.getChefIdentityModel().getLat())) {
-                orders.setDistance(
-                        GeoUtils.haversineDistance(
-                                orders.getLgt().doubleValue(),orders.getLat().doubleValue(),
-                                member.getChefIdentityModel().getLgt().doubleValue(),
-                                member.getChefIdentityModel().getLat().doubleValue()
-                        )
-                );
-            }
+        }catch (Exception e){
+            orders.setDistance(0L);
         }
     }
 
 
 
     @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)
+                        .select(" m1.telephone " , Orders::getReleasePhone)
+                        .select(" case when i.AUTH_TYPE = 0 then i.LINK_NAME else i.COMPANY_NAME end " , Orders::getAcceptName)
+                        .select(" i.TELEPHONE " , Orders::getAcceptPhone)
                         .select("c1.name",Orders::getCategoryName)
                         .select("c2.name",Orders::getTransportTypeName)
+                        .select(" m2.SCORE " , Orders::getScore)
+                        .select(" m1.PUBLISH_NUM " , Orders::getPublishNum)
+                        .select(" m2.RECEIVE_NUM " , Orders::getReceiveNum)
+                        .select(" m1.COVER_IMAGE " , Orders::getReleaseCoverImage)
+                        .select(" m2.COVER_IMAGE " , Orders::getAcceptCoverImage)
                         .leftJoin(" category c1 on t.category_id = c1.id  ")
                         .leftJoin(" category c2 on t.TRANSPORT_TYPE_ID = c2.id  ")
+                        .leftJoin("member m1 on t.RELEASE_MEMBER_ID = m1.id ")
+                        .leftJoin("member m2 on t.ACCEPT_MEMBER_ID = m2.id ")
+                        .leftJoin("identity_info i on m2.id = i.MEMBER_ID and i.TYPE = t.type and i.AUDIT_STATUS = 2  ")
+
                         .eq(Orders::getId,id)
                 );
         if(Objects.isNull(orders)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(Objects.nonNull(userType)){
-            Member member = memberMapper.selectById(
-                    Constants.equalsInteger(userType,Constants.ZERO)?orders.getReleaseMemberId():orders.getAcceptMemberId()
-            );
-            if(Objects.nonNull(member)){
-                if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getCoverImage())){
-                    //澶村儚淇℃伅
-                    String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
-                            +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
-                    member.setFullCoverImage(path + member.getCoverImage());
-                }
-                orders.setMember(member);
-            }
+        //澶村儚淇℃伅
+        String coverPath  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+                +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.MEMBER_FILES).getCode();
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getReleaseCoverImage())){
+            orders.setReleaseCoverImage(coverPath + orders.getReleaseCoverImage());
+        }
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(orders.getAcceptCoverImage())){
+            orders.setAcceptCoverImage(coverPath + orders.getAcceptCoverImage());
         }
         List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,orders.getId())
                 .eq(Multifile::getIsdeleted,Constants.ZERO).eq(Multifile::getObjType,Constants.ONE).orderByAsc(Multifile::getId));
@@ -1306,10 +1529,55 @@
             }
             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){
@@ -1317,7 +1585,7 @@
         if(!Constants.equalsInteger(type,Constants.ZERO)){
             prefix = (Constants.equalsInteger(type,Constants.ONE)?"YH-":"DC-");
         }
-        prefix =  DateUtil.getDate(new Date(),"yyyyMMddHHmmss") +"-";
+        prefix =  prefix + DateUtil.getCurrDateTimeShort() +"-";
 
         Integer countNum  = (Integer) redisTemplate.opsForValue().get(Constants.RedisKeys.ORDER_CODE);//RedisUtil.getObject(redisTemplate, Constants.RedisKeys.ORDER_CODE, Integer.class);
         countNum = Constants.formatIntegerNum(countNum)+1;
@@ -1349,19 +1617,60 @@
     }
 
 
-
-    //todo 鑷姩娲惧崟
+    /**
+     * 鑷姩娲惧崟
+     */
+    @Override
     public void autoGrabOrders(){
-//        String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_DISPATCH_DISTANCE).getCode();
-//        List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
-//                .eq(Orders::getStatus,Constants.FOUR).eq(Orders::getCommentStatus,Constants.ZERO)
-//                .apply(" DATE_ADD(finish_time, INTERVAL 7 DAY) < now() ")
-//                .last("limit 100")
-//        );
+        String autoConfirmTime = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AUTO_DISPATCH).getCode();
+        List<Orders> ordersList = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
+                .eq(Orders::getStatus,Constants.ONE).eq(Orders::getCommentStatus,Constants.ZERO)
+                .apply(" DATE_ADD(create_time, INTERVAL "+autoConfirmTime+" MINUTE) < now() ")
+                .last("limit 100")
+        );
+        for (Orders orders:ordersList) {
+            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 ")
+            );
+            if(CollectionUtils.isEmpty(memberList)){
+                continue;
+            }
+            Member member = memberList.get(Constants.ZERO);
+            //鑷姩娲惧崟
+            Orders model = ordersMapper.selectById(orders.getStatus());
+            if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+                continue;
+            }
+            ordersMapper.update(new UpdateWrapper<Orders>().lambda().eq(Orders::getId,model.getId())
+                    .set(Orders::getUpdateTime,new Date())
+                    .set(Orders::getAcceptType,Constants.ONE)
+                    .set(Orders::getAcceptTime,new Date())
+                    .set(Orders::getAcceptMemberId,member.getId())
+                    .set(Orders::getStatus,Constants.ordersStatus.accept.getKey())
+            );
 
+            //鏇存柊鎺ュ崟閲�
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId()));
 
+            //鍒涘缓鎿嶄綔鏃ュ織
+            Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO;
+            this.saveOrderLog(orders,ordersLog,
+                    ordersLog.getInfo(),member.getId(),null);
 
+        }
     }
 
     //鑷姩璇勪环 璁㈠崟瀹屾垚7澶╁悗鑷姩璇勪环4鏄�
@@ -1377,17 +1686,17 @@
         for (Orders orders:ordersList) {
             ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                     .set(Orders::getCommentStatus,Constants.ONE)
-                    .set(Orders::getUpdateTime,"now()")
-                    .set(Orders::getCommentTime,"now()")
+                    .set(Orders::getUpdateTime,new Date())
+                    .set(Orders::getCommentTime,new Date())
                     .set(Orders::getCommentLevel,Constants.FOUR)
                     .set(Orders::getCommentType,Constants.ZERO)
                     .eq(Orders::getId,orders.getId())
             );
 
             memberMapper.update(new UpdateWrapper<Member>().lambda()
-                    .set(Member::getScore," ( total_score +" + Constants.FOUR + " ) / (score_order_num + 1 )")
-                    .set(Member::getTotalScore," total_score +" + Constants.FOUR)
-                    .set(Member::getScoreOrderNum," score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId())
+                    .setSql(" score = ( ( total_score +" + Constants.FOUR + " ) / (score_order_num + 1 ) ) ")
+                    .setSql(" total_score = ( total_score +" + Constants.FOUR + ")")
+                    .setSql(" score_order_num = ( score_order_num + 1 ) " ).eq(Member::getId,orders.getAcceptMemberId())
             );
 
             //鏃ュ織瀛樺偍
@@ -1412,7 +1721,7 @@
             for (Orders orders:ordersList) {
                 ordersMapper.update(new UpdateWrapper<Orders>().lambda()
                         .set(Orders::getIsUpdate,Constants.TWO)
-                        .set(Orders::getUpdateTime,"now()")
+                        .set(Orders::getUpdateTime,new Date())
                         .eq(Orders::getId,orders.getId())
                 );
                 //璁板綍鍚屾剰淇敼鐨勬棩蹇�
@@ -1424,6 +1733,11 @@
     }
 
 
+    @Override
+    public  void initializeCode(){
+        //鏇存柊缂撳瓨
+        redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0);
+    }
 
 
 

--
Gitblit v1.9.3