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

---
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java |  193 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 191 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..320b2ea 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,7 +12,9 @@
 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.core.utils.redis.RedisUtil;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.dto.*;
@@ -21,14 +23,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,7 +75,13 @@
     private MemberRevenueMapper memberRevenueMapper;
 
     @Autowired
+    private IdentityInfoMapper identityInfoMapper;
+
+    @Autowired
     private WxMiniUtilService wxMiniUtilService;
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -79,8 +90,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 +1144,182 @@
         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");
+    }
+
+
 }

--
Gitblit v1.9.3