From 75755c37790befc243142d140806089e71190e12 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 14 一月 2025 14:22:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java                |    6 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java    |    1 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java     |   44 +++++++
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml             |    4 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java                          |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java                            |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java |    3 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java           |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java     |    7 +
 ruoyi-common/pom.xml                                                                                   |   11 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java                 |   16 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java        |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java             |   15 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java        |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java          |  203 ++++++++++++++++-----------------
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java                         |    2 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml            |    4 
 17 files changed, 217 insertions(+), 115 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
index 833aa57..ad189f8 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/vo/OrderDetailVO.java
@@ -89,4 +89,7 @@
     @ApiModelProperty(value = "预约单id")
     private String technicianSubscribeId;
 
+    @ApiModelProperty("核销码BASE64")
+    private String writeOffCode;
+
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
index 00ab5fb..2fa939d 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java
@@ -7,7 +7,9 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 @Slf4j
@@ -54,6 +56,11 @@
             public R<List<Shop>> getAllShop() {
                 return R.fail("获取所有门店失败:" + cause.getMessage());
             }
+
+            @Override
+            public R<Map<String, BigDecimal>> getShopStatistics() {
+                return R.fail();
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
index ff0a740..e5a5a73 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java
@@ -12,7 +12,9 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -65,4 +67,8 @@
 	 */
 	@PostMapping("/shop/getAllShop")
 	R<List<Shop>> getAllShop();
+
+
+	@GetMapping("/shop/getShopStatistics")
+	public R<Map<String, BigDecimal>> getShopStatistics();
 }
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index a6129f8..9d86df3 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -31,6 +31,17 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.4.1</version>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java
new file mode 100644
index 0000000..93bc31e
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/uuid/QRCodeGenerator.java
@@ -0,0 +1,44 @@
+package com.ruoyi.common.core.utils.uuid;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.WriterException;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Base64;
+
+public class QRCodeGenerator {
+
+    /**
+     * 生成二维码图片的base64编码
+     * @param text
+     * @param width
+     * @param height
+     * @return
+     * @throws WriterException
+     * @throws IOException
+     */
+    public static String generateQRCodeBase64(String text, int width, int height) throws WriterException, IOException {
+        QRCodeWriter qrCodeWriter = new QRCodeWriter();
+        BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
+
+        ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream();
+        MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream);
+        byte[] pngData = pngOutputStream.toByteArray();
+
+        return Base64.getEncoder().encodeToString(pngData);
+    }
+
+    public static void main(String[] args) {
+        try {
+            String text = "Hello, World!";
+            String base64QRCode = generateQRCodeBase64(text, 200, 200);
+            System.out.println("Base64 QR Code: " + base64QRCode);
+        } catch (WriterException | IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
index 25f0f98..1649af8 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java
@@ -137,6 +137,8 @@
     @PostMapping("/editAppUserById")
     public R<Void> editAppUserById(@RequestBody AppUser appUser) {
         appUserService.updateById(appUser);
+        appUserService.update(new LambdaUpdateWrapper<AppUser>().eq(AppUser::getId, appUser.getId())
+                .set(AppUser::getLastShopTime, appUser.getLastShopTime()));
         return R.ok();
 
     }
@@ -744,108 +746,6 @@
     @GetMapping("/commissionDetail")
     @ApiOperation(value = "分佣统计", tags = "管理后台-首页统计")
     public R<CommissionDetail> commissionDetail(CommissionDetail cd) {
-        Long userid = tokenService.getLoginUser().getUserid();
-        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
-        LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0);
-        if(sysUser.getRoleType() == 2){
-            queryWrapper.eq(AppUser::getShopId, sysUser.getObjectId());
-        }
-        LocalDateTime startTime = cd.getStartTime();
-        LocalDateTime endTime = cd.getEndTime();
-        queryWrapper.ge(null != startTime, AppUser::getCreateTime, startTime);
-        queryWrapper.le(null != endTime, AppUser::getCreateTime, endTime);
-        queryWrapper.orderByAsc(AppUser::getCreateTime);
-        List<AppUser> appUserList = appUserService.list(queryWrapper);
-        if (appUserList.isEmpty()) {
-            return R.ok(new CommissionDetail());
-        }
-        BigDecimal totalCommission = BigDecimal.ZERO;
-        BigDecimal totalServiceFee = BigDecimal.ZERO;
-        BigDecimal totalUserCommission = BigDecimal.ZERO;
-        Map<Integer, BigDecimal> vipCommissions = new HashMap<>();
-        Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>();
-        for (AppUser appUser : appUserList) {
-            BigDecimal distributionAmount = Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO);
-            totalCommission = totalCommission.add(distributionAmount);
-            Integer vipId = appUser.getVipId();
-            if (vipId != null && vipId >= 1 && vipId <= 7) {
-                vipCommissions.merge(vipId, distributionAmount, BigDecimal::add);
-
-                String dateKey = appUser.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-                dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
-                        .merge(vipId, distributionAmount, BigDecimal::add);
-            }
-        }
-        List<Shop> data = shopClient.getAllShop().getData();
-        if(sysUser.getRoleType() == 2){
-            data = Arrays.asList(shopClient.getShopById(sysUser.getObjectId()).getData());
-        }
-        for (Shop shop : data) {
-            totalServiceFee = totalServiceFee.add(shop.getServerGiveawayMoney());
-            totalUserCommission = totalUserCommission.add(shop.getGiveawayMoney());
-        }
-
-        R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), null);
-        List<ShopBalanceStatement> data1 = r.getData();
-        if (!CollectionUtils.isEmpty(data1)){
-            for (ShopBalanceStatement shopBalanceStatement : data1) {
-                String dateKey = shopBalanceStatement.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-                Integer type = shopBalanceStatement.getType();
-                if (type == 1){
-                    type = 8;
-                }else if (type == 2){
-                    type = 9;
-                }else {
-                    type = 10;
-                }
-                dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
-                        .merge(type, shopBalanceStatement.getVariableAmount(), BigDecimal::add);
-            }
-        }
-
-
-        CommissionDetail commissionDetail = new CommissionDetail();
-        commissionDetail.setTotalCommission(totalCommission);
-        commissionDetail.setTotalServiceFee(totalServiceFee);
-        commissionDetail.setTotalUserCommission(totalUserCommission);
-
-        commissionDetail.setTotalNormalCommission(vipCommissions.getOrDefault(1, BigDecimal.ZERO));
-        commissionDetail.setTotalGoldCommission(vipCommissions.getOrDefault(2, BigDecimal.ZERO));
-        commissionDetail.setTotalDiamondCommission(vipCommissions.getOrDefault(3, BigDecimal.ZERO));
-        commissionDetail.setTotalAgentCommission(vipCommissions.getOrDefault(4, BigDecimal.ZERO));
-        commissionDetail.setTotalSuperAgentCommission(vipCommissions.getOrDefault(5, BigDecimal.ZERO));
-        commissionDetail.setTotalTopAgentCommission(vipCommissions.getOrDefault(6, BigDecimal.ZERO));
-        commissionDetail.setTotalPartnerCommission(vipCommissions.getOrDefault(7, BigDecimal.ZERO));
-
-        List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream()
-                .map(entry -> {
-                    CommissionDate commissionDate = new CommissionDate();
-                    commissionDate.setDate(entry.getKey());
-                    Map<Integer, BigDecimal> dailyCommissions = entry.getValue();
-                    commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO));
-                    commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO));
-                    commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO));
-                    commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO));
-                    commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO));
-                    commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO));
-                    commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO));
-                    BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission())
-                            .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission());
-                    commissionDate.setTotalCommission(add);
-
-                    commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO));
-                    commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO));
-                    commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO));
-                    return commissionDate;
-                })
-                .collect(Collectors.toList());
-
-        commissionDetail.setCommissionDateList(commissionDateList);
-        return R.ok(commissionDetail);
-    }
-
-
-    public R<CommissionDetail> commissionDetail2(CommissionDetail cd) {
         if (cd.getStartTime() == null || cd.getEndTime() == null) {
             return R.fail("请选择时间");
         }
@@ -858,7 +758,7 @@
         getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> {
             for (int i = 1; i < 8; i++){
                 List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>()
-                        .eq(BalanceChangeRecord::getCreateTime, date)
+                        .between(BalanceChangeRecord::getCreateTime, date, date.plusDays(1))
                         .eq(BalanceChangeRecord::getChangeType,4)
                         .eq(BalanceChangeRecord::getVipId, i));
                 BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -886,7 +786,99 @@
                 }
             }
         });
-        return null;
+
+
+        BigDecimal totalCommission = BigDecimal.ZERO;
+        BigDecimal totalNormalCommission = BigDecimal.ZERO;
+
+        BigDecimal totalGoldCommission = BigDecimal.ZERO;
+
+        BigDecimal totalDiamondCommission = BigDecimal.ZERO;
+
+        BigDecimal totalAgentCommission = BigDecimal.ZERO;
+
+        BigDecimal totalSuperAgentCommission = BigDecimal.ZERO;
+
+        BigDecimal totalTopAgentCommission = BigDecimal.ZERO;
+
+        BigDecimal totalPartnerCommission = BigDecimal.ZERO;
+
+        List<AppUser> allAppUserList = appUserService.list();
+        for (AppUser appUser : allAppUserList) {
+            BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount();
+            totalCommission = totalCommission.add(totalDistributionAmount);
+            if (appUser.getVipId() == 1){
+                totalNormalCommission = totalNormalCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 2){
+                totalGoldCommission = totalGoldCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 3){
+                totalDiamondCommission = totalDiamondCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 4){
+                totalAgentCommission = totalAgentCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 5){
+                totalSuperAgentCommission = totalSuperAgentCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 6){
+                totalTopAgentCommission = totalTopAgentCommission.add(totalDistributionAmount);
+            }
+            if (appUser.getVipId() == 7){
+                totalPartnerCommission = totalPartnerCommission.add(totalDistributionAmount);
+            }
+        }
+
+        R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics();
+        Map<String, BigDecimal> data = shopStatistics.getData();
+        BigDecimal totalServiceFee = BigDecimal.ZERO;
+        BigDecimal totalUserCommission = BigDecimal.ZERO;
+        if (data != null){
+            totalServiceFee = data.get("serverGiveawayMoney");
+            totalUserCommission = data.get("lowerLevelGiveawayMoney");
+        }
+
+        CommissionDetail commissionDetail = new CommissionDetail();
+        commissionDetail.setTotalCommission(totalCommission);
+        commissionDetail.setTotalServiceFee(totalServiceFee);
+        commissionDetail.setTotalUserCommission(totalUserCommission);
+
+        commissionDetail.setTotalNormalCommission(totalNormalCommission);
+        commissionDetail.setTotalGoldCommission(totalGoldCommission);
+        commissionDetail.setTotalDiamondCommission(totalDiamondCommission);
+        commissionDetail.setTotalAgentCommission(totalAgentCommission);
+        commissionDetail.setTotalSuperAgentCommission(totalSuperAgentCommission);
+        commissionDetail.setTotalTopAgentCommission(totalTopAgentCommission);
+        commissionDetail.setTotalPartnerCommission(totalPartnerCommission);
+
+
+        List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream()
+                .map(entry -> {
+                    CommissionDate commissionDate = new CommissionDate();
+                    commissionDate.setDate(entry.getKey());
+                    Map<Integer, BigDecimal> dailyCommissions = entry.getValue();
+                    commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO));
+                    commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO));
+                    commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO));
+                    commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO));
+                    commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO));
+                    commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO));
+                    commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO));
+                    BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission())
+                            .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission());
+                    commissionDate.setTotalCommission(add);
+
+                    commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO));
+                    commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO));
+                    commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO));
+                    return commissionDate;
+                })
+                .collect(Collectors.toList());
+
+        commissionDetail.setCommissionDateList(commissionDateList);
+
+        return R.ok(commissionDetail);
     }
 
 
@@ -906,7 +898,8 @@
                 .limit(daysBetween + 1)
                 .collect(Collectors.toList());
     }
-    
+
+
     
     /**
      * 上传图片
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
index 3839d5e..32bb927 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -134,7 +134,11 @@
     @GetMapping("/user/list")
     @ApiOperation(value = "积分管理-用户积分明细(必传用户id)", tags = "后台")
     public R<Page<UserPoint>> userlist(UserPoint userPoint) {
-        Page<UserPoint> page = userPointService.lambdaQuery().eq(UserPoint::getAppUserId, userPoint.getAppUserId()).orderByDesc(UserPoint::getCreateTime).page(Page.of(userPoint.getPageNum(), userPoint.getPageSize()));
+        Page<UserPoint> page = userPointService.lambdaQuery()
+                .eq(UserPoint::getType, userPoint.getType())
+                .eq(UserPoint::getAppUserId, userPoint.getAppUserId())
+                .orderByDesc(UserPoint::getCreateTime)
+                .page(Page.of(userPoint.getPageNum(), userPoint.getPageSize()));
         for (UserPoint record : page.getRecords()) {
             int i = record.getHistoricalPoint() - record.getBalance();
             if (i>0){
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java
index 5acba8a..60acc1f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/dto/WithQuery.java
@@ -8,7 +8,7 @@
 @Data
 public class WithQuery {
     @ApiModelProperty("用户名称")
-    private String name;
+    private String userName;
 
     @ApiModelProperty("电话")
     private String phone;
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml
index 9af80f7..f1db46f 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/BalanceChangeRecordMapper.xml
@@ -30,8 +30,8 @@
             tbcr.change_type,
             tbcr.create_time,
             tbcr.change_amount,
-        tbcr.beforeAmount,
-        tbcr.afterAmount
+        tbcr.before_amount,
+        tbcr.after_amount
         FROM
             t_balance_change_record tbcr
                 LEFT JOIN t_app_user tau ON tbcr.app_user_id = tau.id
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml
index 7f913d7..6991416 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/WithdrawalRequestsMapper.xml
@@ -26,8 +26,8 @@
         <if test="withQuery.phone != null and withQuery.phone != ''">
             AND t2.phone LIKE concat('%',#{withQuery.phone},'%')
         </if>
-        <if test="withQuery.name != null and withQuery.name != ''">
-            AND t2.phone LIKE concat('%',#{withQuery.name},'%')
+        <if test="withQuery.userName != null and withQuery.userName != ''">
+            AND t2.name LIKE concat('%',#{withQuery.userName},'%')
         </if>
         order by t1.create_time desc
     </select>
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 6e38450..4ac605c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.uuid.QRCodeGenerator;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.order.enums.OrderStatus;
@@ -41,6 +42,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
@@ -215,6 +217,14 @@
                 Long id = data.get(0).getId();
                 orderDetailVO.setTechnicianSubscribeId(id.toString());
             }
+        }
+        // 生成核销码BASE64
+        try {
+            String base64 = QRCodeGenerator.generateQRCodeBase64(order.getOrderNumber(), 124, 124);
+            orderDetailVO.setWriteOffCode(base64);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ServiceException("生成核销码失败");
         }
         return orderDetailVO;
     }
@@ -439,11 +449,12 @@
             appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
             appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN));
             //查询最后一次的消费订单
-            Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1"));
+            Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2)
+                    .eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1"));
             if(null != order1){
                 appUser.setLastShopTime(order1.getCreateTime());
             }else{
-                appUser.setLastShopTime(LocalDateTime.MIN);
+                appUser.setLastShopTime(null);
             }
         
             //构建账户余额流水明细
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
index 348da92..88aa5b8 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/OrderInfoVo.java
@@ -71,5 +71,7 @@
 	private String afterSaleTime;
 	@ApiModelProperty("活动名称")
 	private String activityName;
+	@ApiModelProperty("核销码BASE64")
+	private String writeOffCode;
 	
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java
index 61cc917..9a6fa18 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsEvaluateController.java
@@ -158,6 +158,7 @@
         if (StringUtils.isNotEmpty(goodsEvaluate.getPhone())&&StringUtils.isNotEmpty(goodsEvaluate.getUserName())){
             // 取交集
             usersNameList.retainAll(usersPhoneList);
+            if (usersNameList.isEmpty())usersNameList.add(-1L);
         }else{
             usersNameList.addAll(usersPhoneList);
         }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
index b9a0f91..0cbb3c5 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OrderActivityInfoController.java
@@ -200,6 +200,7 @@
 				.gt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 0, OrderActivityInfo::getStartTime, LocalDateTime.now())
 				.ge(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 1, OrderActivityInfo::getEndTime, LocalDateTime.now())
 				.lt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 1, OrderActivityInfo::getStartTime, LocalDateTime.now())
+				.lt(orderActivityInfo.getStatus() != null && orderActivityInfo.getStatus() == 2, OrderActivityInfo::getEndTime, LocalDateTime.now())
 				.eq(orderActivityInfo.getIsShelf() != null, OrderActivityInfo::getIsShelf, orderActivityInfo.getIsShelf()).orderByDesc(OrderActivityInfo::getCreateTime)
 				.orderByDesc(OrderActivityInfo::getCreateTime))
 				;
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
index 63a0b98..82218b8 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
@@ -26,6 +26,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
@@ -178,7 +179,7 @@
                                                                       @RequestParam(value = "date") LocalDateTime date){
         List<ShopBalanceStatement> list = shopBalanceStatementService.list(new LambdaQueryWrapper<ShopBalanceStatement>()
                 .eq(ShopBalanceStatement::getType, type)
-                .in(ShopBalanceStatement::getCreateTime, date));
+                .between(ShopBalanceStatement::getCreateTime, date.with(LocalTime.MIN), date.with(LocalTime.MAX)));
         return R.ok(list);
     }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
index de666db..c27318c 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -709,5 +709,21 @@
         return R.ok(list);
     }
 
+
+    @GetMapping("/getShopStatistics")
+    public R<Map<String, BigDecimal> > getShopStatistics(){
+        List<Shop> shopList = shopService.list();
+        BigDecimal serverGiveawayMoney = BigDecimal.ZERO;
+        BigDecimal lowerLevelGiveawayMoney = BigDecimal.ZERO;
+        for (Shop shop : shopList) {
+            serverGiveawayMoney = serverGiveawayMoney.add(shop.getServerGiveawayMoney());
+            lowerLevelGiveawayMoney = lowerLevelGiveawayMoney.add(shop.getLowerLevelGiveawayMoney());
+        }
+        Map<String, BigDecimal> map = new HashMap<>();
+        map.put("serverGiveawayMoney", serverGiveawayMoney);
+        map.put("lowerLevelGiveawayMoney", lowerLevelGiveawayMoney);
+        return R.ok(map);
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
index fe74705..32aafb7 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TechnicianController.java
@@ -111,7 +111,9 @@
         }else {
             Technician byId = technicianService.getById(technician.getId());
             if (byId.getPhone()!=technician.getPhone()){
-                List<Technician> list = technicianService.lambdaQuery().eq(Technician::getPhone, technician.getPhone()).eq(Technician::getShopId, sysUser.getObjectId()).list();
+                List<Technician> list = technicianService.lambdaQuery()
+                        .eq(Technician::getPhone, technician.getPhone())
+                        .ne(Technician::getId, byId.getId()).list();
                 if (!list.isEmpty()) {
                     return R.fail("当前号码已经添加");
                 }

--
Gitblit v1.7.1