From 7ee466ebc953bb5640bcf42f2b8e2a87aa471c21 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 15 四月 2026 20:12:21 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun

---
 server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java |  190 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 178 insertions(+), 12 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index 68070ca..2602c77 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -10,13 +10,23 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.DriverInfoMapper;
+import com.doumee.dao.business.ShopInfoMapper;
 import com.doumee.dao.business.WithdrawalOrdersMapper;
+import com.doumee.dao.business.model.DriverInfo;
+import com.doumee.dao.business.model.ShopInfo;
 import com.doumee.dao.business.model.WithdrawalOrders;
+import com.doumee.dao.dto.WithdrawalApproveDTO;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.WithdrawalOrdersService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -30,6 +40,15 @@
 
     @Autowired
     private WithdrawalOrdersMapper withdrawalOrdersMapper;
+
+    @Autowired
+    private SystemUserMapper systemUserMapper;
+
+    @Autowired
+    private ShopInfoMapper shopInfoMapper;
+
+    @Autowired
+    private DriverInfoMapper driverInfoMapper;
 
     @Override
     public Integer create(WithdrawalOrders withdrawalOrders) {
@@ -75,11 +94,19 @@
 
     @Override
     public WithdrawalOrders findById(Integer id) {
-        WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectById(id);
-        if (Objects.isNull(withdrawalOrders)) {
+        WithdrawalOrders order = withdrawalOrdersMapper.selectById(id);
+        if (Objects.isNull(order)) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        return withdrawalOrders;
+        // 鏌ヨ瀹℃壒浜哄悕绉�
+        fillUpdateUserName(order);
+        // 鏍规嵁鐢ㄦ埛绫诲瀷鏌ヨ鍏宠仈淇℃伅
+        if (Constants.ONE.equals(order.getMemberType())) {
+            fillMemberInfo(order);
+        } else {
+            fillShopInfo(order);
+        }
+        return order;
     }
 
     @Override
@@ -97,16 +124,52 @@
     @Override
     public PageData<WithdrawalOrders> findPage(PageWrap<WithdrawalOrders> pageWrap) {
         IPage<WithdrawalOrders> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<WithdrawalOrders> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<WithdrawalOrders> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         pageWrap.getModel().setDeleted(Constants.ZERO);
-        queryWrapper.lambda().eq(WithdrawalOrders::getDeleted, pageWrap.getModel().getDeleted());
-        queryWrapper.lambda().like(StringUtils.isNotBlank(pageWrap.getModel().getOutBillNo()), WithdrawalOrders::getOutBillNo, pageWrap.getModel().getOutBillNo());
-        queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null, WithdrawalOrders::getMemberId, pageWrap.getModel().getMemberId());
-        queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null, WithdrawalOrders::getStatus, pageWrap.getModel().getStatus());
-        queryWrapper.lambda().eq(pageWrap.getModel().getType() != null, WithdrawalOrders::getType, pageWrap.getModel().getType());
-        queryWrapper.lambda().ge(pageWrap.getModel().getCreateStartTime() != null, WithdrawalOrders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
-        queryWrapper.lambda().le(pageWrap.getModel().getCreateEndTime() != null, WithdrawalOrders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+
+        // 鍏叡锛氬鎵逛汉鍚嶇О
+        queryWrapper.selectAll(WithdrawalOrders.class)
+                .selectAs(SystemUser::getUsername, WithdrawalOrders::getUpdateUserName)
+                .leftJoin(SystemUser.class, SystemUser::getId, WithdrawalOrders::getUserId);
+
+        // 鏍规嵁鐢ㄦ埛绫诲瀷鍏宠仈涓嶅悓琛�
+        Integer memberType = pageWrap.getModel().getMemberType();
+        if (Constants.ONE.equals(memberType)) {
+            // 鍙告満绔細鍏宠仈 DriverInfo 琛�
+            queryWrapper.selectAs(DriverInfo::getName, WithdrawalOrders::getMemberName)
+                    .selectAs(DriverInfo::getTelephone, WithdrawalOrders::getMemberTelephone)
+                    .leftJoin(DriverInfo.class, DriverInfo::getMemberId, WithdrawalOrders::getMemberId);
+        } else {
+            // 搴楅摵绔� / 涓嶇瓫閫夛細鍏宠仈 ShopInfo 琛�
+            queryWrapper.selectAs(ShopInfo::getName, WithdrawalOrders::getShopName)
+                    .selectAs(ShopInfo::getLinkName, WithdrawalOrders::getLinkName)
+                    .leftJoin(ShopInfo.class, ShopInfo::getId, WithdrawalOrders::getMemberId,
+                            ext -> ext.eq(ShopInfo::getDeleted, Constants.ZERO));
+        }
+
+        queryWrapper.eq(WithdrawalOrders::getDeleted, pageWrap.getModel().getDeleted());
+        if (memberType != null) {
+            queryWrapper.eq(WithdrawalOrders::getMemberType, memberType);
+        }
+        if (StringUtils.isNotBlank(pageWrap.getModel().getOutBillNo())) {
+            queryWrapper.like(WithdrawalOrders::getOutBillNo, pageWrap.getModel().getOutBillNo());
+        }
+        if (pageWrap.getModel().getMemberId() != null) {
+            queryWrapper.eq(WithdrawalOrders::getMemberId, pageWrap.getModel().getMemberId());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.eq(WithdrawalOrders::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getType() != null) {
+            queryWrapper.eq(WithdrawalOrders::getType, pageWrap.getModel().getType());
+        }
+        if (pageWrap.getModel().getCreateStartTime() != null) {
+            queryWrapper.ge(WithdrawalOrders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
+        }
+        if (pageWrap.getModel().getCreateEndTime() != null) {
+            queryWrapper.le(WithdrawalOrders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+        }
         for (PageWrap.SortData sortData : pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                 queryWrapper.orderByDesc(sortData.getProperty());
@@ -114,8 +177,12 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-        return PageData.from(withdrawalOrdersMapper.selectPage(page, queryWrapper));
+        return PageData.from(withdrawalOrdersMapper.selectJoinPage(page, WithdrawalOrders.class, queryWrapper));
     }
+
+
+
+
 
     @Override
     public long count(WithdrawalOrders withdrawalOrders) {
@@ -123,4 +190,103 @@
         return withdrawalOrdersMapper.selectCount(wrapper);
     }
 
+    @Override
+    public Long totalAmount(PageWrap<WithdrawalOrders> pageWrap) {
+        QueryWrapper<WithdrawalOrders> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("IFNULL(SUM(amount), 0) as amount");
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda().eq(WithdrawalOrders::getDeleted, Constants.ZERO);
+        queryWrapper.lambda().in(WithdrawalOrders::getStatus, Arrays.asList(Constants.ZERO, Constants.ONE));
+        if (pageWrap.getModel().getOutBillNo() != null) {
+            queryWrapper.lambda().like(WithdrawalOrders::getOutBillNo, pageWrap.getModel().getOutBillNo());
+        }
+        if (pageWrap.getModel().getMemberId() != null) {
+            queryWrapper.lambda().eq(WithdrawalOrders::getMemberId, pageWrap.getModel().getMemberId());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.lambda().eq(WithdrawalOrders::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getType() != null) {
+            queryWrapper.lambda().eq(WithdrawalOrders::getType, pageWrap.getModel().getType());
+        }
+        if (pageWrap.getModel().getCreateStartTime() != null) {
+            queryWrapper.lambda().ge(WithdrawalOrders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime()));
+        }
+        if (pageWrap.getModel().getCreateEndTime() != null) {
+            queryWrapper.lambda().le(WithdrawalOrders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime()));
+        }
+        WithdrawalOrders result = withdrawalOrdersMapper.selectOne(queryWrapper);
+        return result != null && result.getAmount() != null ? result.getAmount() : 0L;
+    }
+
+    @Override
+    public void approve(WithdrawalApproveDTO dto) {
+        if (dto == null || dto.getId() == null || dto.getStatus() == null) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀹℃壒鍙傛暟涓嶅畬鏁�");
+        }
+        if (!Constants.ONE.equals(dto.getStatus()) && !Constants.TWO.equals(dto.getStatus())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀹℃壒缁撴灉浠呮敮鎸侀�氳繃鎴栨嫆缁�");
+        }
+
+        WithdrawalOrders order = withdrawalOrdersMapper.selectById(dto.getId());
+        if (Objects.isNull(order)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if (!Constants.ZERO.equals(order.getStatus())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呯敵璇蜂腑鐨勬彁鐜拌鍗曞彲瀹℃壒");
+        }
+
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+        Integer currentUserId = getCurrentUserId();
+
+        WithdrawalOrders update = new WithdrawalOrders();
+        update.setId(dto.getId());
+        update.setStatus(dto.getStatus());
+        update.setUserId(currentUserId);
+        update.setApproveTime(new Date());
+        update.setApproveRemark(dto.getApproveRemark());
+        update.setUpdateTime(new Date());
+        withdrawalOrdersMapper.updateById(update);
+    }
+
+    private Integer getCurrentUserId() {
+        com.doumee.core.model.LoginUserInfo user =
+                (com.doumee.core.model.LoginUserInfo) org.apache.shiro.SecurityUtils.getSubject().getPrincipal();
+        return user != null ? user.getId() : null;
+    }
+
+    private void fillUpdateUserName(WithdrawalOrders order) {
+        if (order.getUserId() != null) {
+            SystemUser user = systemUserMapper.selectById(order.getUserId());
+            if (user != null) {
+                order.setUpdateUserName(user.getUsername());
+            }
+        }
+    }
+
+    private void fillShopInfo(WithdrawalOrders order) {
+        if (order.getMemberId() != null) {
+            ShopInfo shop = shopInfoMapper.selectById(order.getMemberId());
+            if (shop != null && !Constants.ONE.equals(shop.getDeleted())) {
+                order.setShopInfo(shop);
+                order.setShopName(shop.getName());
+                order.setLinkName(shop.getLinkName());
+            }
+        }
+    }
+
+    private void fillMemberInfo(WithdrawalOrders order) {
+        if (order.getMemberId() != null) {
+            DriverInfo driver = driverInfoMapper.selectOne(
+                    new QueryWrapper<DriverInfo>().lambda()
+                            .eq(DriverInfo::getMemberId, order.getMemberId())
+                            .eq(DriverInfo::getDeleted, Constants.ZERO)
+                            .last("limit 1"));
+            if (driver != null) {
+                order.setMemberName(driver.getName());
+                order.setMemberTelephone(driver.getTelephone());
+            }
+        }
+    }
+
 }

--
Gitblit v1.9.3