From 0b7c409aff156bc4d5605893e860c0c3652b9cd8 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 17 七月 2025 19:25:30 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  152 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 108 insertions(+), 44 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 8bd112f..a640402 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;
 
 /**
@@ -91,7 +89,8 @@
 
     @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());
@@ -120,15 +119,16 @@
             orders.setStatus(Constants.ordersStatus.waitPay.getKey());
             //鍞よ捣鏀粯涓氬姟
             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(),"闄勪欢淇℃伅閿欒");
@@ -159,7 +159,7 @@
                 .replace("{param}",orderTypeInfo);
         this.saveOrderLog(orders,ordersLog,
                 logInfo,orders.getReleaseMemberId(),null);
-        return objects;
+        return orderReleaseVO;
     }
 
     private Object getWxPayResponse(Orders orders,String openid){
@@ -219,7 +219,7 @@
                 || Objects.isNull(orders.getStartDate())
                 || Objects.isNull(orders.getEndDate())
                 || StringUtil.isBlank(orders.getLocation())
-                || StringUtil.isBlank(orders.getLocationRemark())
+                || (!Constants.equalsInteger(Constants.ONE,orders.getType())&&StringUtil.isBlank(orders.getLocationRemark()))
                 || StringUtil.isBlank(orders.getLinkPhone())
                 || Objects.isNull(orders.getLat())
                 || Objects.isNull(orders.getLgt())
@@ -263,9 +263,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())
                 ){
@@ -298,6 +298,9 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閲戦璁$畻閿欒!");
         }
     }
+
+
+
 
 
 
@@ -600,12 +603,17 @@
                 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().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId()));
 
@@ -701,8 +709,8 @@
                 .set(Orders::getEndDate,updOrderDataDTO.getEndDate())
                 .set(Orders::getTotalDays,updOrderDataDTO.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())
         );
@@ -715,12 +723,22 @@
     }
 
 
+    @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.ONE)
         ){
             orders.setPriceNum2(Constants.ONE);
+        }else{
+            if(Objects.isNull(orders.getPriceNum2())){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            }
         }
         return orders.getPrice() * orders.getPriceNum1() * orders.getPriceNum2();
     }
@@ -757,7 +775,7 @@
         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())
             );
             //璁板綍鍚屾剰淇敼鐨勬棩蹇�
@@ -767,7 +785,7 @@
         }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)
@@ -824,8 +842,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())
             );
@@ -862,8 +880,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.ONE)
                     .eq(Orders::getId,orders.getId())
             );
@@ -917,7 +935,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)
@@ -1059,8 +1077,8 @@
 
         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(Orders::getCommentType,Constants.ZERO)
                 .eq(Orders::getId,orders.getId())
@@ -1098,10 +1116,10 @@
             }else{
                 //澶勭悊鏀粯瀹屾垚閫昏緫
                 ordersMapper.update(new UpdateWrapper<Orders>().lambda()
-                        .set(Orders::getUpdateTime,"now()")
+                        .set(Orders::getUpdateTime,new Date())
                         .set(Orders::getStatus,Constants.ordersStatus.wait)
                         .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())
@@ -1119,13 +1137,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())
                 );
 
@@ -1367,19 +1385,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鏄�
@@ -1395,8 +1454,8 @@
         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())
@@ -1430,7 +1489,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())
                 );
                 //璁板綍鍚屾剰淇敼鐨勬棩蹇�
@@ -1442,6 +1501,11 @@
     }
 
 
+    @Override
+    public  void initializeCode(){
+        //鏇存柊缂撳瓨
+        redisTemplate.opsForValue().set(Constants.RedisKeys.ORDER_CODE,0);
+    }
 
 
 

--
Gitblit v1.9.3