瀏覽代碼

Changes 修改数据业务

cyan 6 天之前
父節點
當前提交
619a16a0fb

+ 13 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/IOkkiAccountService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.okki.account.param.OkkiAccountResetPwdParam;
 import org.jeecg.modules.okki.site.entity.OkkiSite;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -39,4 +40,16 @@ public interface IOkkiAccountService extends IService<OkkiAccount> {
      * @param siteId
      */
     public Map<String, Object> getSiteBindInfo(Integer siteId);
+
+    /**
+     * 批量添加站点绑定
+     * @param newUsers
+     */
+    public void addUserToSite(List<Map<String, String>> newUsers);
+
+    /**
+     * 批量解除站点绑定
+     * @param usersToRemoves
+     */
+    public void removeUserToSite(List<Map<String, String>> usersToRemoves);
 }

+ 124 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/impl/OkkiAccountServiceImpl.java

@@ -14,6 +14,7 @@ import org.jeecg.modules.okki.account.entity.OkkiAccount;
 import org.jeecg.modules.okki.account.mapper.OkkiAccountMapper;
 import org.jeecg.modules.okki.account.param.OkkiAccountResetPwdParam;
 import org.jeecg.modules.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.site.entity.OkkiSite;
 import org.jeecg.modules.okki.site.service.IOkkiSiteService;
 import org.jeecg.modules.okki.siteuser.entity.OkkiSiteUser;
 import org.jeecg.modules.okki.siteuser.service.IOkkiSiteUserService;
@@ -22,8 +23,10 @@ import org.jeecg.modules.system.service.ISysDictService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 小二账号
@@ -566,4 +569,125 @@ public class OkkiAccountServiceImpl extends ServiceImpl<OkkiAccountMapper, OkkiA
         }
         return mergedList;
     }
+
+    /**
+     * 添加用户到站点
+     *
+     * @param newUsers
+     */
+    @Override
+    public void addUserToSite(List<Map<String, String>> newUsers) {
+        List<OkkiSite> okkiSites = okkiSiteService.getAssignSiteList();
+        log.info("要处理的站点数量有:okkiSites:{}", okkiSites.size());
+
+        okkiSites.forEach(c -> {
+            QueryWrapper<OkkiSiteUser> okkiSiteUserQueryWrapper = new QueryWrapper<>();
+            okkiSiteUserQueryWrapper.eq("site_id", c.getSiteId());
+            List<OkkiSiteUser> okkiSiteUsers = okkiSiteUserService.list(okkiSiteUserQueryWrapper);
+            log.info("okkiSiteUsers:{}", FastJsonUtil.toJSONString(okkiSiteUsers));
+            if (!CollectionUtils.isEmpty(okkiSiteUsers)) {
+                Map<String, String> siteUsersMap = okkiSiteUsers.stream()
+                        .collect(Collectors.groupingBy(
+                                OkkiSiteUser::getType,
+                                Collectors.mapping(okkiSiteUser -> String.valueOf(okkiSiteUser.getUserId()), Collectors.joining(","))
+                        ));
+                log.info("siteUsersMap before adding new user: {}", FastJsonUtil.toJSONString(siteUsersMap));
+
+                // 插入到 siteUsersMap
+                for (Map<String, String> user : newUsers) {
+                    String role = user.get("userRole");
+                    String id = user.get("userId");
+                    siteUsersMap.merge(role, id, (existingValue, newValue) -> existingValue + "," + newValue);
+                }
+
+                log.info("siteUsersMap after adding new user: {}", FastJsonUtil.toJSONString(siteUsersMap));
+
+                OkkiBindSiteDto okkiBindSiteDto = new OkkiBindSiteDto();
+                okkiBindSiteDto.setServiceManageUser(siteUsersMap.get("serviceManageUser"));
+                okkiBindSiteDto.setDataUser(siteUsersMap.get("dataUser"));
+                okkiBindSiteDto.setKefuUser(siteUsersMap.get("kefuUser"));
+                okkiBindSiteDto.setSeoUser(siteUsersMap.get("seoUser"));
+
+                okkiBindSiteDto.setSemManageUser(siteUsersMap.get("semManageUser"));
+                okkiBindSiteDto.setSemUser(siteUsersMap.get("semUser"));
+                okkiBindSiteDto.setUiUser(siteUsersMap.get("uiUser"));
+
+                okkiBindSiteDto.setWebsiteUser(siteUsersMap.get("websiteUser"));
+                okkiBindSiteDto.setSocialUser(siteUsersMap.get("socialUser"));
+                okkiBindSiteDto.setRdUser(siteUsersMap.get("rdUser"));
+                log.info("okkiBindSiteDto:{}", FastJsonUtil.toJSONString(okkiBindSiteDto));
+
+//                okkiAccountService.bindSitesV2(okkiBindSiteDto);
+                log.info("用户:{},分配公司名称:{}", FastJsonUtil.toJSONString(newUsers), c.getCompanyName());
+            }
+        });
+
+    }
+
+    /**
+     * 批量删除站点用户
+     *
+     * @param usersToRemoves
+     */
+    @Override
+    public void removeUserToSite(List<Map<String, String>> usersToRemoves) {
+        List<OkkiSite> okkiSites = okkiSiteService.getAssignSiteList();
+        log.info("要处理的站点数量有:okkiSites:{}", okkiSites.size());
+        okkiSites.forEach(c -> {
+            QueryWrapper<OkkiSiteUser> okkiSiteUserQueryWrapper = new QueryWrapper<>();
+            okkiSiteUserQueryWrapper.eq("site_id", c.getSiteId());
+            List<OkkiSiteUser> okkiSiteUsers = okkiSiteUserService.list(okkiSiteUserQueryWrapper);
+            log.info("okkiSiteUsers:{}", FastJsonUtil.toJSONString(okkiSiteUsers));
+            if (!CollectionUtils.isEmpty(okkiSiteUsers)) {
+                Map<String, String> siteUsersMap = okkiSiteUsers.stream()
+                        .collect(Collectors.groupingBy(
+                                OkkiSiteUser::getType,
+                                Collectors.mapping(okkiSiteUser -> String.valueOf(okkiSiteUser.getUserId()), Collectors.joining(","))
+                        ));
+                log.info("siteUsersMap before removing new user: {}", FastJsonUtil.toJSONString(siteUsersMap));
+
+                // 从 siteUsersMap 中删除
+                for (Map<String, String> user : usersToRemoves) {
+                    String role = user.get("userRole");
+                    String idToRemove = user.get("userId");
+
+                    // 检查 siteUsersMap 是否包含该 role
+                    if (siteUsersMap.containsKey(role)) {
+                        String existingUsers = siteUsersMap.get(role);
+                        List<String> userList = new ArrayList<>(Arrays.asList(existingUsers.split(",")));
+
+                        // 删除目标 userId
+                        userList.remove(idToRemove);
+
+                        if (userList.isEmpty()) {
+                            // 如果该 role 下已无用户,移除整个 key
+                            siteUsersMap.remove(role);
+                        } else {
+                            // 重新拼接并更新 siteUsersMap
+                            siteUsersMap.put(role, String.join(",", userList));
+                        }
+                    }
+                }
+                log.info("siteUsersMap after removing new user: {}", FastJsonUtil.toJSONString(siteUsersMap));
+
+                OkkiBindSiteDto okkiBindSiteDto = new OkkiBindSiteDto();
+                okkiBindSiteDto.setServiceManageUser(siteUsersMap.get("serviceManageUser"));
+                okkiBindSiteDto.setDataUser(siteUsersMap.get("dataUser"));
+                okkiBindSiteDto.setKefuUser(siteUsersMap.get("kefuUser"));
+                okkiBindSiteDto.setSeoUser(siteUsersMap.get("seoUser"));
+
+                okkiBindSiteDto.setSemManageUser(siteUsersMap.get("semManageUser"));
+                okkiBindSiteDto.setSemUser(siteUsersMap.get("semUser"));
+                okkiBindSiteDto.setUiUser(siteUsersMap.get("uiUser"));
+
+                okkiBindSiteDto.setWebsiteUser(siteUsersMap.get("websiteUser"));
+                okkiBindSiteDto.setSocialUser(siteUsersMap.get("socialUser"));
+                okkiBindSiteDto.setRdUser(siteUsersMap.get("rdUser"));
+                log.info("okkiBindSiteDto:{}", FastJsonUtil.toJSONString(okkiBindSiteDto));
+
+//                okkiAccountService.bindSitesV2(okkiBindSiteDto);
+                log.info("用户:{},删除公司名称:{}", FastJsonUtil.toJSONString(usersToRemoves), c.getCompanyName());
+            }
+        });
+    }
 }

+ 78 - 5
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/controller/ShopApiController.java

@@ -1,11 +1,11 @@
 package org.jeecg.modules.okki.site.controller;
 
-import com.lark.oapi.service.contact.v3.model.P1UserChangedV3;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpHeaders;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.util.FastJsonUtil;
+import org.jeecg.modules.okki.account.service.IOkkiAccountService;
 import org.jeecg.modules.okki.site.dto.FeiShuRecordSheetDto;
 import org.jeecg.modules.okki.site.dto.FeiShuSeoTeamRecordSheetDto;
 import org.jeecg.modules.okki.site.dto.WeChatMsgDto;
@@ -15,6 +15,7 @@ import org.jeecg.modules.okki.site.service.IFeiShuMsgService;
 import org.jeecg.modules.okki.site.service.IFeiShuSeoTeamSheetService;
 import org.jeecg.modules.okki.site.service.IFeiShuSheetService;
 import org.jeecg.modules.okki.site.service.IOkkiSiteService;
+import org.jeecg.modules.okki.siteuser.service.IOkkiSiteUserService;
 import org.jeecg.modules.okki.wechatgroup.entity.OkkiShopWechatGroupMsg;
 import org.jeecg.modules.okki.wechatgroup.service.IOkkiShopWechatGroupMsgService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,10 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 /**
  * @Description: 站点
@@ -58,6 +56,9 @@ public class ShopApiController {
     @Value("${file.jsonPath}")
     private String fileJsonPath;
 
+    @Autowired
+    private IOkkiAccountService okkiAccountService;
+
     @PostMapping(value = "/add")
     public Result<String> add(@RequestBody OkkiSiteParam okkiSiteParam, @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
         log.info("请求参数 param" + okkiSiteParam.toString() + "authorization" + authorization);
@@ -252,4 +253,76 @@ public class ShopApiController {
         }
         return Result.error("同步站点信息失败");
     }
+
+    /**
+     * 批量添加用户到站点
+     *
+     * @param authorization
+     * @return
+     */
+    @PostMapping(value = "/add/user/site")
+    public Result<?> addUserToWebsite(@RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
+        log.info("请求参数 authorization:{}", authorization);
+        String Authorization = "emU=-{p2$Kj+Ml]3_J%zxHiSD58w!|&Z\"rsFg16TCY4a*7E`9?c~#A[G,vQIR;hub}n^foNVO<)P(qB:0.tk'y>@/dLWXUOR_U[QUHurk|?nTlg,tSh$fAZa3Z/<:oP&";
+        if (!authorization.equals(Authorization)) {
+            return Result.error("sign 验证不通过");
+        }
+
+        // userRole
+        // serviceManageUser 、dataUser、kefuUser、seoUser、semManageUser、semUser
+        // uiUser、websiteUser、socialUser、rdUser
+
+        // 需要添加的用户列表
+        List<Map<String, String>> newUsers = new ArrayList<>();
+        Map<String, String> user1 = new HashMap<>();
+        user1.put("userRole", "seoUser");
+        user1.put("userId", "a12333");
+        newUsers.add(user1);
+
+        Map<String, String> user2 = new HashMap<>();
+        user2.put("userRole", "semUser");
+        user2.put("userId", "a1543");
+        newUsers.add(user2);
+
+        Map<String, String> user3 = new HashMap<>();
+        user3.put("userRole", "dataUser");
+        user3.put("userId", "a1416");
+        newUsers.add(user3);
+
+        Map<String, String> user4 = new HashMap<>();
+        user4.put("userRole", "socialUser");
+        user4.put("userId", "a1593");
+        newUsers.add(user4);
+
+        okkiAccountService.addUserToSite(newUsers);
+        return Result.ok("success");
+    }
+
+    /**
+     * 批量删除用户到站点
+     *
+     * @param authorization
+     * @return
+     */
+    @PostMapping(value = "/remove/user/site")
+    public Result<?> removeUserToWebsite(@RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
+        log.info("请求参数 authorization:{}", authorization);
+        String Authorization = "emU=-{p2$Kj+Ml]3_J%zxHiSD58w!|&Z\"rsFg16TCY4a*7E`9?c~#A[G,vQIR;hub}n^foNVO<)P(qB:0.tk'y>@/dLWXUOR_U[QUHurk|?nTlg,tSh$fAZa3Z/<:oP&";
+        if (!authorization.equals(Authorization)) {
+            return Result.error("sign 验证不通过");
+        }
+
+        // userRole
+        // serviceManageUser 、dataUser、kefuUser、seoUser、semManageUser、semUser
+        // uiUser、websiteUser、socialUser、rdUser
+
+        // 需要删除的用户列表
+        List<Map<String, String>> usersToRemoves = new ArrayList<>();
+        Map<String, String> user1 = new HashMap<>();
+        user1.put("userRole", "kefuUser");
+        user1.put("userId", "1230111");
+        usersToRemoves.add(user1);
+        okkiAccountService.removeUserToSite(usersToRemoves);
+        return Result.ok("success");
+    }
 }

+ 9 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/mapper/OkkiSiteMapper.java

@@ -1,14 +1,21 @@
 package org.jeecg.modules.okki.site.mapper;
 
-import org.jeecg.modules.okki.site.entity.OkkiSite;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.site.entity.OkkiSite;
+import java.util.List;
 
 /**
  * @Description: 站点
  * @Author: jeecg-boot
- * @Date:   2024-04-29
+ * @Date: 2024-04-29
  * @Version: V1.0
  */
 public interface OkkiSiteMapper extends BaseMapper<OkkiSite> {
 
+    /**
+     * 获取已经分配的站点列表
+     *
+     * @return
+     */
+    public List<OkkiSite> getAssignSiteList();
 }

+ 3 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/mapper/xml/OkkiSiteMapper.xml

@@ -2,4 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.okki.site.mapper.OkkiSiteMapper">
 
+    <select id="getAssignSiteList" resultType="org.jeecg.modules.okki.site.entity.OkkiSite">
+        SELECT DISTINCT t1.site_id, t1.company_name FROM okki_site t1, okki_site_user t2 WHERE t1.site_id = t2.site_id AND t1.del_flag = 0
+    </select>
 </mapper>

+ 7 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/service/IOkkiSiteService.java

@@ -47,4 +47,11 @@ public interface IOkkiSiteService extends IService<OkkiSite> {
      * 处理站点信息
      */
     public boolean dealSiteInfoByJsonData(String jsonPath);
+
+    /**
+     * 获取站点
+     *
+     * @return
+     */
+    public List<OkkiSite> getAssignSiteList();
 }

+ 9 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/service/impl/OkkiSiteServiceImpl.java

@@ -706,4 +706,13 @@ public class OkkiSiteServiceImpl extends ServiceImpl<OkkiSiteMapper, OkkiSite> i
         updateGroupFieldMap.put("小满-Showlist数量", xiaoManSiteDto.getShowlistNum());
         return updateGroupFieldMap;
     }
+
+    /**
+     * 获取分配的站点列表
+     * @return
+     */
+    @Override
+    public List<OkkiSite> getAssignSiteList(){
+        return okkiSiteMapper.getAssignSiteList();
+    }
 }

+ 4 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -70,6 +70,8 @@ public class LoginController {
 
 	private final String BASE_CHECK_CODES = "qwertyuiplkjhgfdsazxcvbnmQWERTYUPLKJHGFDSAZXCVBNM1234567890";
 
+	private final String BASE_NUMBER_CHECK_CODES = "1234567890";
+
 	@ApiOperation("登录接口")
 	@RequestMapping(value = "/login", method = RequestMethod.POST)
 	public Result<JSONObject> login(@RequestBody SysLoginModel sysLoginModel, HttpServletRequest request){
@@ -513,8 +515,8 @@ public class LoginController {
 	public Result<String> randomImage(HttpServletResponse response,@PathVariable("key") String key){
 		Result<String> res = new Result<String>();
 		try {
-			//生成验证码
-			String code = RandomUtil.randomString(BASE_CHECK_CODES,4);
+			//生成验证码 BASE_CHECK_CODES、BASE_NUMBER_CHECK_CODES
+			String code = RandomUtil.randomString(BASE_NUMBER_CHECK_CODES,4);
 			//存到redis中
 			String lowerCaseCode = code.toLowerCase();