From 9a43e21c30a5d2db9c29f4ae23df9b39fc858a8a Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 15 七月 2025 11:21:36 +0800
Subject: [PATCH] 111

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  190 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 188 insertions(+), 2 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 50586b7..8887d58 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
@@ -12,6 +12,7 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.GeoUtils;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
@@ -21,14 +22,17 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.wechat.pay.java.service.partnerpayments.jsapi.model.Amount;
 import com.wechat.pay.java.service.partnerpayments.jsapi.model.Payer;
 import com.wechat.pay.java.service.partnerpayments.jsapi.model.PrepayRequest;
 import com.wechat.pay.java.service.partnerpayments.jsapi.model.PrepayWithRequestPaymentResponse;
 import jodd.util.StringUtil;
+import nonapi.io.github.classgraph.json.Id;
 import org.apache.poi.sl.image.ImageHeaderEMF;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -70,6 +74,9 @@
     private MemberRevenueMapper memberRevenueMapper;
 
     @Autowired
+    private IdentityInfoMapper identityInfoMapper;
+
+    @Autowired
     private WxMiniUtilService wxMiniUtilService;
 
     @Override
@@ -79,8 +86,8 @@
         this.initVerification(orders);
         orders.setCreateTime(new Date());
         orders.setPayStatus(Constants.ZERO);
-        //TODO 璁㈠崟缂栧彿瑙勫垯
-
+        //璁㈠崟缂栧彿
+        orders.setCode(this.getNextCode(orders.getType()));
         Category category = categoryMapper.selectOne(new QueryWrapper<Category>().lambda()
                 .eq(Category::getDeleted,Constants.ZERO).eq(Category::getType,Constants.THREE)
                 .eq(Category::getName,orders.getType())
@@ -1133,4 +1140,183 @@
         return  ("澶勭悊鎴愬姛!");
     }
 
+
+    @Override
+    public PageData<Orders> findPageForMini(PageWrap<Orders> pageWrap) {
+        IPage<Orders> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<Orders> queryWrapper = new MPJLambdaWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        Orders model = pageWrap.getModel();
+        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  ");
+        if(Objects.nonNull(model.getQueryMyOrderType())){
+            if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ZERO)){
+                //鍙戝崟鏂� 鎴戠殑璁㈠崟
+                queryWrapper.eq(Orders::getReleaseMemberId,model.getMember().getId());
+            }else if(Constants.equalsInteger(model.getQueryMyOrderType(),Constants.ONE)){
+                //鎺ュ崟鏂� 鎴戠殑璁㈠崟
+                queryWrapper.eq(Orders::getAcceptMemberId,model.getMember().getId());
+            }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);
+            }
+        }
+        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);
+            }
+        }
+        return PageData.from(iPage);
+    }
+
+
+
+
+    //瀹氫綅璺濈
+    public void getDistance(Member member,Orders orders){
+
+        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()
+                        )
+                );
+            }
+        }
+    }
+
+
+
+    @Override
+    public Orders getDetail(Integer id,Integer userType) {
+        Orders orders = ordersMapper.selectJoinOne(Orders.class,new MPJLambdaWrapper<Orders>()
+                        .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  ")
+                        .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);
+            }
+        }
+        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));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORDERS_FILES).getCode();
+            for (Multifile multifile:multifileList) {
+                multifile.setFileurlFull(path + multifile.getFileurl());
+            }
+            orders.setMultifileList(multifileList);
+        }
+
+
+        return orders;
+    }
+
+
+
+
+    public synchronized String  getNextCode(Integer type){
+//        String prefix = "YG";
+//        if(!Constants.equalsInteger(type,Constants.ZERO)){
+//            prefix = (Constants.equalsInteger(type,Constants.ONE)?"YC-":"SC-");
+//        }
+//        prefix =  DateUtil.getDate(new Date(),"yyyyMMdd") +"-";
+//        Integer countNum  = RedisUtil.getObject(redisTemplate, Constants.RedisKeys.ORDER_CODE, Integer.class);
+//        countNum = Constants.formatIntegerNum(countNum)+1;
+//        //鏇存柊缂撳瓨
+//        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.ORDER_CODE,countNum);
+//        String nextIndex =Integer.toString( countNum );
+//        return prefix + org.apache.commons.lang3.StringUtils.leftPad(nextIndex,3,"0");
+        return null;
+    }
+
+
 }

--
Gitblit v1.9.3