From 3044a637a15e09d50ad733fd482c6e64e90df2f9 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 25 六月 2025 17:46:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java |  100 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 87 insertions(+), 13 deletions(-)

diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
index 69932a4..003d70a 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
@@ -29,6 +29,7 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
 import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
 import com.wechat.pay.java.core.exception.MalformedMessageException;
@@ -133,8 +134,16 @@
         franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(name) ? franchiseeLambdaQueryWrapper.like(Franchisee::getName, name) : franchiseeLambdaQueryWrapper;
         franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(head) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHead, head) : franchiseeLambdaQueryWrapper;
         franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(phone) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHeadPhone, phone) : franchiseeLambdaQueryWrapper;
-        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(city) ? franchiseeLambdaQueryWrapper.like(Franchisee::getCity, city) : franchiseeLambdaQueryWrapper;
-        List<Franchisee> list = franchiseeService.list(franchiseeLambdaQueryWrapper);
+        if (org.springframework.util.StringUtils.hasLength(city)){
+            String[] cityCodes = city.split(",");
+            franchiseeLambdaQueryWrapper.and(e->{
+                List<String> list = Arrays.asList(cityCodes);
+                e.like(Franchisee::getCityCode,list.get(0));
+                for (int i = 1; i < list.size(); i++) {
+                    e.or().like(Franchisee::getCityCode,list.get(i));
+                }
+            });
+        }        List<Franchisee> list = franchiseeService.list(franchiseeLambdaQueryWrapper);
         List<Integer> collect = list.stream().map(Franchisee::getId).collect(Collectors.toList());
         if (collect.isEmpty())collect.add(-1);
         for (Franchisee franchisee : list) {
@@ -738,21 +747,43 @@
         wrapper = StringUtils.isNotBlank(dto.getPhone()) ? wrapper.like(Franchisee::getHeadPhone, dto.getPhone()) : wrapper;
         if (org.springframework.util.StringUtils.hasLength(dto.getCity())){
             String[] cityCodes = dto.getCity().split(",");
-            wrapper.and(wrapperLike -> {
-                Arrays.stream(cityCodes)
-                        .forEach(code -> wrapperLike.like(Franchisee::getCityCode, code));
+            wrapper.and(e->{
+                List<String> list = Arrays.asList(cityCodes);
+                e.like(Franchisee::getCityCode,list.get(0));
+                for (int i = 1; i < list.size(); i++) {
+                    e.or().like(Franchisee::getCityCode,list.get(i));
+                }
             });
         }
+//        if (StringUtils.isNotBlank(dto.getCity())) {
+//            String[] cityCodes = Arrays.stream(dto.getCity().split(","))
+//                    .map(String::trim)
+//                    .filter(StringUtils::isNotBlank)
+//                    .distinct()
+//                    .toArray(String[]::new);
+//
+//            if (cityCodes.length > 0) {
+//                wrapper.and(andWrapper -> {
+//                    Arrays.stream(cityCodes).forEach(code ->
+//                            andWrapper.or()
+//                                    .apply("CONCAT(',', city_code, ',') LIKE CONCAT('%,', {0}, ',%')", code)
+//                    );
+//                });
+//            }
+//        }
 
-        Page<Franchisee> page = wrapper.eq(Franchisee::getIsDelete, 0)
-                .orderByDesc(Franchisee::getCreateTime).page(Page.of(dto.getPageNum(), dto.getPageSize()));
+
+
+
+        wrapper.eq(Franchisee::getIsDelete, 0).orderByDesc(Franchisee::getCreateTime);
+        Page<Franchisee> page = wrapper.page(Page.of(dto.getPageNum(), dto.getPageSize()));
         for (Franchisee record : page.getRecords()) {
-                if (record.getSiteIds()!=null){
-                    String[] split = record.getSiteIds().split(",");
-                    List<Site> list = siteService.lambdaQuery().in(Site::getId, split).list();
-                        //用 , 拼接
-                    record.setSiteStr(list.stream().map(Site::getSiteName).collect(Collectors.joining(",")));
-                }
+            if (record.getSiteIds()!=null){
+                String[] split = record.getSiteIds().split(",");
+                List<Site> list = siteService.lambdaQuery().in(Site::getId, split).list();
+                //用 , 拼接
+                record.setSiteStr(list.stream().map(Site::getSiteName).collect(Collectors.joining(",")));
+            }
 
 
         }
@@ -1030,4 +1061,47 @@
         return franchiseeService.updateBatchById(list) ? R.ok() : R.fail();
     }
 
+    /**
+     * 设置加盟商操作密码
+     *
+     */
+    @ApiOperation(value = "设置加盟商操作密码【202506】", tags = {"后台-加盟商管理"})
+    @PutMapping(value = "/setPayPassword")
+    public R<String> setPayPassword(@RequestParam(value = "payPassword") String payPassword) {
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserService.getById(userid);
+        if(Objects.isNull(sysUser.getFranchiseeId())){
+            return R.fail("加盟商信息不存在!");
+        }
+        Franchisee franchisee = franchiseeService.getById(sysUser.getFranchiseeId());
+        franchisee.setPayPassword(SecurityUtils.encryptPassword(payPassword));
+        return franchiseeService.updateById(franchisee) ? R.ok() : R.fail();
+    }
+
+    /**
+     * 设置加盟商操作密码
+     *
+     */
+    @ApiOperation(value = "加盟商余额扣除撤回【202506】", tags = {"后台-加盟商管理"})
+    @PutMapping(value = "/balanceWithdraw")
+    public R<String> balanceWithdraw(@RequestParam(value = "id") Integer id,
+                                     @RequestParam(value = "payPassword") String payPassword) {
+
+        TFranchiseeBalanceChange balanceChange = balanceChangeService.getById(id);
+
+        Franchisee franchisee = franchiseeService.getById(balanceChange.getFranchiseeId());
+
+        if(!SecurityUtils.matchesPassword(payPassword, franchisee.getPayPassword())){
+            return R.fail("密码错误!");
+        }
+
+        franchisee.setBalance(franchisee.getBalance().add(balanceChange.getAmount()));
+        franchiseeService.updateById(franchisee);
+
+        // 删除操作记录
+        balanceChangeService.removeById(id);
+
+        return R.ok();
+    }
+
 }

--
Gitblit v1.7.1