Sfoglia il codice sorgente

1.登陆+filter新增redis客户经理
2.贸易订单+客户经理过滤
3.入驻认证+客户经理
4.客户列表+客户经理

lengfaqiang 2 anni fa
parent
commit
8b7e26c5af
24 ha cambiato i file con 685 aggiunte e 62 eliminazioni
  1. 43 15
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  2. 9 3
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java
  3. 6 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java
  4. 0 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java
  5. 2 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginUserInfo.java
  6. 1 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java
  7. 30 1
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java
  8. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operationManagement/TradeOrderManageController.java
  9. 35 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/operator/TradeOrderManageService.java
  10. 28 11
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  11. 11 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java
  12. 44 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java
  13. 3 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java
  14. 10 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserRoleDao.java
  15. 78 11
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java
  16. 3 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/EntSettleExcel.java
  17. 25 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EnterpriseBindManagerVo.java
  18. 10 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/EntFindPageResVo.java
  19. 39 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/KwsUserSystemTypeVo.java
  20. 59 9
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  21. 5 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  22. 215 3
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml
  23. 5 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml
  24. 23 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserRoleDao.xml

+ 43 - 15
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -1,18 +1,24 @@
 package com.sckw.auth.service.impl;
 
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
-import com.sckw.auth.model.vo.req.*;
+import com.sckw.auth.model.vo.req.ForgetPasswordReqVo;
+import com.sckw.auth.model.vo.req.LoginBase;
+import com.sckw.auth.model.vo.req.LoginReqVo;
+import com.sckw.auth.model.vo.req.RegisterReqVo;
 import com.sckw.auth.model.vo.res.DeptInfoResVo;
 import com.sckw.auth.model.vo.res.EntInfoResVo;
 import com.sckw.auth.model.vo.res.LoginResVo;
 import com.sckw.auth.model.vo.res.LoginResVo1;
+import com.sckw.auth.service.IAuthService;
 import com.sckw.auth.util.AsyncFactory;
 import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.exception.SystemException;
+import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.ClientTypeEnum;
 import com.sckw.core.model.enums.LoginMethodEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.utils.*;
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.model.EntCertificateInfo;
 import com.sckw.core.web.model.LoginEntInfo;
@@ -21,16 +27,16 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverDetailVo;
 import com.sckw.redis.constant.RedisConstant;
-import com.sckw.system.api.RemoteSystemService;
-import com.sckw.system.api.model.dto.req.*;
-import com.sckw.system.api.model.dto.res.KwsRoleResDto;
-import com.sckw.core.exception.SystemException;
-import com.sckw.core.model.constant.Global;
-import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.redis.utils.RedissonUtils;
-import com.sckw.system.api.model.dto.res.*;
-import com.sckw.auth.service.IAuthService;
+import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.RemoteUserService;
+import com.sckw.system.api.model.dto.req.ForgetPasswordReqDto;
+import com.sckw.system.api.model.dto.req.RegisterReqDto;
+import com.sckw.system.api.model.dto.req.UserLoginReqDto;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.FindEntUserResDto;
+import com.sckw.system.api.model.dto.res.KwsUserResDto;
+import com.sckw.system.api.model.dto.res.UserAccessMenuInfoResDto;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
@@ -515,7 +521,7 @@ public class AuthServiceImpl implements IAuthService {
 
     /**
      * @param loginBase {}
-     * @param userId 用户ID
+     * @param userId    用户ID
      * @desc 生成token
      * @author zk
      * @date 2023/8/18
@@ -545,7 +551,7 @@ public class AuthServiceImpl implements IAuthService {
 
         private final RemoteUserService remoteUserService;
 
-        public AsyncProcess1(LoginBase loginBase, KwsUserResDto user, RDriverDetailVo driver, EntCacheResDto enterprise ,
+        public AsyncProcess1(LoginBase loginBase, KwsUserResDto user, RDriverDetailVo driver, EntCacheResDto enterprise,
                              RemoteUserService remoteUserService) {
             this.loginBase = loginBase;
             this.user = user;
@@ -582,7 +588,7 @@ public class AuthServiceImpl implements IAuthService {
 
         /**
          * @param loginBase 登录信息
-         * @param driver 司机信息
+         * @param driver    司机信息
          * @desc: 缓存司机信息
          * @author: czh
          * @date: 2023/7/3
@@ -609,7 +615,7 @@ public class AuthServiceImpl implements IAuthService {
 
         /**
          * @param loginBase 登录信息
-         * @param user 用户信息
+         * @param user      用户信息
          * @desc: 缓存用户信息
          * @author: czh
          * @date: 2023/7/3
@@ -640,7 +646,8 @@ public class AuthServiceImpl implements IAuthService {
                     loginUserInfo.setAuthUserIdList(entUser.stream().map(FindEntUserResDto::getUserId).distinct().toList());
                 }
             }
-
+            //客户经理  存储相关联企业id
+            customerManager(loginUserInfo);
             int expireTime = ClientTypeEnum.expireTime(loginBase.getClientType());
             String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId());
             RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);
@@ -649,6 +656,27 @@ public class AuthServiceImpl implements IAuthService {
             saveMenusToCache(user);
         }
 
+        private void customerManager(LoginUserInfo loginUserInfo) {
+            if (SystemTypeEnum.MANAGE.getCode().equals(loginBase.getSystemType())) {
+                List<Long> enterpriseIds = new ArrayList<>();
+                if (user.getIsMain().equals(Global.YES)) {
+                    //获取所以运营端账号关联的企业(客户经理关联的企业)
+                    List<Long> userIds = remoteUserService.selectUserBySystemType(1);
+                    /**带有数据权限*/
+                    enterpriseIds = remoteUserService.findEnterpriseListByIds(userIds);
+                    //无数据权限,运营账号(客户经理关联)关联的企业即可
+//                    enterpriseIds = remoteUserService.findEnterpriseListByUserIds(userIds);
+                } else {
+                    enterpriseIds = remoteUserService.findEnterpriseIds(user.getId());
+                }
+                if (enterpriseIds.size() > 0) {
+                    String key = Global.getCustomerManagerUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId());
+                    RedissonUtils.putSet(key, enterpriseIds);
+                    loginUserInfo.setAuthEntIdList(enterpriseIds);
+                }
+            }
+        }
+
         /**
          * @param loginResVo 登录返参
          * @desc: 存缓存请求地址

+ 9 - 3
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/RequestCheckFilter.java

@@ -1,6 +1,7 @@
 package com.sckw.core.filter;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.ClientTypeEnum;
 import com.sckw.core.model.enums.SystemTypeEnum;
@@ -21,6 +22,7 @@ import jakarta.annotation.PostConstruct;
 import jakarta.servlet.*;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import org.redisson.api.RSet;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.io.IOException;
@@ -129,6 +131,13 @@ public class RequestCheckFilter implements Filter {
         LoginEntInfo loginEntInfo = StringUtils.isNotBlank(loginEntStr) ? JSON.parseObject(loginEntStr, LoginEntInfo.class) : null;
 
         if (SystemTypeEnum.MANAGE.getCode().equals(Integer.parseInt(systemType))) {
+            //redis 获取客户经理绑定企业ID
+            String managerKey = Global.getCustomerManagerUserLoginKey(SystemTypeEnum.MANAGE.getCode(), loginUserInfo.getId());
+            RSet<Object> set = RedissonUtils.getSet(managerKey);
+            if (Objects.nonNull(set)){
+                List authUserIdList = JSONObject.parseObject(set.toString(), List.class);
+                loginUserInfo.setAuthEntIdList(authUserIdList);
+            }
             LoginUserHolder.set(loginUserInfo);
             LoginEntHolder.set(loginEntInfo);
             RedissonUtils.putString(Global.getFullUserTokenKey(clientType, userId), token, ClientTypeEnum.expireTime(clientType));
@@ -174,9 +183,6 @@ public class RequestCheckFilter implements Filter {
 //            ResponseUtil.writer(response, HttpResult.error(HttpStatus.AUTHORITY_NO_CODE, HttpStatus.ACCESS_FIAL));
 //            return;
 //        }
-
-        List<Long> authUserIdList = null; //redis 获取客户经理绑定企业ID
-        loginUserInfo.setAuthEntIdList(authUserIdList);
         LoginUserHolder.set(loginUserInfo);
         LoginEntHolder.set(loginEntInfo);
         RedissonUtils.putString(Global.getFullUserLoginKey(NumberUtils.parseInt(systemType), loginUserInfo.getId()), JSON.toJSONString(loginUserInfo), Global.APP_TOKEN_EXPIRE);

+ 6 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java

@@ -95,6 +95,8 @@ public class Global {
     public static final String REDIS_USER_LOGIN_PREFIX = "userLoginInfo:";
     public static final String REDIS_USER_PREFIX = "userInfo:";
     public static final String REDIS_USER_TOKEN_PREFIX = "userToken:";
+    //客户经理redisKey
+    public static final String REDIS_CUSTOMER_MANAGER_USER_LOGIN_PREFIX = "customerManagerUserLoginInfo:";
 
     /**redis企业信息前缀*/
     public static final String REDIS_ENTERPRISE_PREFIX = "enterpriseInfo:";
@@ -306,4 +308,8 @@ public class Global {
     public static String getRepeatSubmitKey(Long userId, String url) {
         return REPEAT_SUBMIT + userId + COLON + url;
     }
+
+    public static String getCustomerManagerUserLoginKey(Integer systemType, Long userId) {
+        return REDIS_CUSTOMER_MANAGER_USER_LOGIN_PREFIX + systemType + COLON + userId;
+    }
 }

+ 0 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java

@@ -4,7 +4,6 @@ import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.web.model.LoginUserInfo;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**

+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/model/LoginUserInfo.java

@@ -71,7 +71,7 @@ public class LoginUserInfo {
     }
 
     public LoginUserInfo(Long id, Integer systemType, String account, String userName, String phone,
-                         int isMain, int status, Long entId, String clientType, String deptIds, List<Long> authUserIdList) {
+                         int isMain, int status, Long entId, String clientType, String deptIds, List<Long> authUserIdList, List<Long> authEntIdList) {
         this.id = id;
         this.systemType = systemType;
         this.account = account;
@@ -83,5 +83,6 @@ public class LoginUserInfo {
         this.clientType = clientType;
         this.deptIds = deptIds;
         this.authUserIdList = authUserIdList;
+        this.authEntIdList = authEntIdList;
     }
 }

+ 1 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/DateUtil.java

@@ -584,6 +584,7 @@ public class DateUtil {
 //        //结束时间
 //        String beforeMonthDateAndDaysEndToString1 = getBeforeMonthDateAndDaysEndToString(1, 0);
 //        System.out.println(beforeMonthDateAndDaysEndToString1);
+       String SS= cn.hutool.core.date.DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")+" 00:00:00";
         //月
         //开始时间
         String monthDateStart = DateUtil.getBeforeMonthDateAndDaysStartToString(LocalDateTime.now(), 1, -1);

+ 30 - 1
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java

@@ -1,10 +1,10 @@
 package com.sckw.system.api;
 
 import com.sckw.core.exception.SystemException;
-import com.sckw.core.model.page.PageRes;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.system.api.model.dto.req.*;
 import com.sckw.system.api.model.dto.res.*;
+
 import java.util.List;
 import java.util.Map;
 
@@ -239,4 +239,33 @@ public interface RemoteUserService {
      * @date 2023/10/11
      **/
     List<Long> findUserIds(List<Long> entIds, String userName);
+
+
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     * @param userId 客户经理id
+     * @return list 企业id数组
+     */
+    List<Long> findEnterpriseIds(Long userId);
+
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     * @param userIds 客户经理id
+     * @return list 企业id数组
+     */
+    List<Long> findEnterpriseListByUserIds(List<Long> userIds);
+
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     * @param userIds 客户经理id
+     * @return list 企业id数组
+     */
+    List<Long> findEnterpriseListByIds(List<Long> userIds);
+
+    /**
+     * 通过账号类型查出相关所有的企业账户
+     * @param systemType
+     * @return
+     */
+    List<Long> selectUserBySystemType(Integer systemType);
 }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operator/TradeOrderManageController.java → sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/operationManagement/TradeOrderManageController.java

@@ -1,4 +1,4 @@
-package com.sckw.report.controller.operator;
+package com.sckw.report.controller.operationManagement;
 
 import com.sckw.core.exception.CustomPromptException;
 import com.sckw.core.utils.CollectionUtils;

+ 35 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/operator/TradeOrderManageService.java

@@ -1,9 +1,13 @@
 package com.sckw.report.service.operator;
 
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.model.vo.TableBottom;
 import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.report.enums.TOrderStatusEnum;
 import com.sckw.report.model.dto.OperatorTOrderListStsConditionDTO;
 import com.sckw.report.model.vo.OperatorTOrderContractParam;
@@ -19,6 +23,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.regex.Pattern;
@@ -44,6 +50,10 @@ public class TradeOrderManageService {
      * @return: com.sckw.core.model.page.PageResult
      */
     public PageResult listPaging(OperatorTOrderListQueryVO params) {
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (CollectionUtils.isEmpty(authEntIdList)){
+            return PageResult.build(params.getPage(), params.getPageSize(), 0L, Collections.emptyList());
+        }
         Criteria criteria = buildCriteria(BeanUtils.copyProperties(params, OperatorTOrderListStsConditionDTO.class), false);
         Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
         return kwOrderService.getResult(criteria, sort, params.getPage(), params.getPageSize());
@@ -57,6 +67,26 @@ public class TradeOrderManageService {
      * @return: com.sckw.core.model.vo.TableStatisticRes
      */
     public TableStatisticRes listStatistic(OperatorTOrderStsQueryVO params) {
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (CollectionUtils.isEmpty(authEntIdList)){
+            List<TOrderStatusEnum> enums = TOrderStatusEnum.getSortList();
+            enums.remove(0);
+            List<TableTop> list = new ArrayList<>();
+            for (TOrderStatusEnum e : enums) {
+                Integer value = e.getCode();
+                TableTop tableTop = new TableTop();
+                tableTop.setName(e.getMsg()).setValue(value).setTotal(0);
+                list.add(tableTop);
+            }
+            TableTop all = new TableTop();
+            all.setName("全部").setTotal(0);
+            list.add(0, all);
+            TableBottom tableBottom = new TableBottom();
+            tableBottom.setTotal(0);
+            TableStatisticRes res = new TableStatisticRes();
+            res.setTableTops(list).setTableBottom(tableBottom);
+            return res;
+        }
         Criteria criteria = buildCriteria(BeanUtils.copyProperties(params, OperatorTOrderListStsConditionDTO.class), true);
         List<TOrderStatusEnum> enums = TOrderStatusEnum.getSortList();
         enums.remove(0);
@@ -71,6 +101,11 @@ public class TradeOrderManageService {
      * @return: java.util.List<com.sckw.report.service.param.TradeOrderListExport>
      */
     public List<TradeOrderListExport> export(OperatorTOrderExportQueryVO params) {
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (CollectionUtils.isEmpty(authEntIdList)){
+            List<TradeOrderListExport> exports = new ArrayList<>();
+            return exports;
+        }
         Query query = new Query();
         if (StringUtils.isNotBlank(params.getIds())) {
             List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);

+ 28 - 11
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -11,10 +11,12 @@ import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
+
 import java.util.Map;
 
 /**
  * 企业信息
+ *
  * @author zk
  * @date 2023-05-31
  */
@@ -34,13 +36,13 @@ public class KwsEnterpriseController {
      **/
     @GetMapping("/detail")
     public HttpResult detail(@RequestParam Long id,
-                             @RequestParam (value = "isAll", required = false)Boolean isAll) {
+                             @RequestParam(value = "isAll", required = false) Boolean isAll) {
         return HttpResult.ok(kwsEntService.detail(id, isAll));
     }
 
     /**
-     * @desc 企业联系人信息
      * @param id 企业信息
+     * @desc 企业联系人信息
      * @author zk
      * @date 2023/9/1
      **/
@@ -73,6 +75,23 @@ public class KwsEnterpriseController {
         return HttpResult.ok(kwsEntService.findListGroup(pageReqVo));
     }
 
+
+    /**
+     * 企业用户绑定客户经理
+     *
+     * @param vo 请求参数
+     * @return return
+     */
+    @RequestMapping(name = "企业用户绑定客户经理", value = "/enterpriseBindManager", method = RequestMethod.POST)
+    public HttpResult enterpriseBindManager(@Valid @RequestBody EnterpriseBindManagerVo vo) {
+        try {
+            kwsEntService.enterpriseBindManage(vo);
+        } catch (Exception e) {
+            return HttpResult.error(e.getMessage());
+        }
+        return HttpResult.ok();
+    }
+
     /**
      * @param id 主键ID
      * @return HttpResult
@@ -150,7 +169,6 @@ public class KwsEnterpriseController {
     }
 
 
-
     /**
      * @param reqVo {ids:主键ID(多个以逗号隔开)}
      * @return HttpResult
@@ -216,11 +234,11 @@ public class KwsEnterpriseController {
 
 
     /**
+     * @return HttpResult
      * @desc: 查企业下的员工
      * @param: reqVo 企业id
      * @author: czh
      * @date 2023/7/18
-     * @return HttpResult
      */
     @PostMapping("findEntUser")
     public HttpResult findEntUser(@RequestBody FindListReqVo reqVo) {
@@ -228,11 +246,11 @@ public class KwsEnterpriseController {
     }
 
     /**
+     * @return HttpResult
      * @desc: 查所有企业
      * @param: reqVo 企业id
      * @author: czh
      * @date 2023/7/18
-     * @return HttpResult
      */
     @PostMapping("findList")
     public HttpResult findList(@RequestBody FindListReqVo reqVo) {
@@ -240,8 +258,8 @@ public class KwsEnterpriseController {
     }
 
     /**
-     * @param  reqVo id
-     * @return  HttpResult
+     * @param reqVo id
+     * @return HttpResult
      * @desc: 查询企业的信息+主体机构信息
      * @author: czh
      * @date: 2023/7/22
@@ -252,8 +270,8 @@ public class KwsEnterpriseController {
     }
 
     /**
-     * @param  reqVo id
-     * @return  HttpResult
+     * @param reqVo id
+     * @return HttpResult
      * @desc: 查询其他入驻企
      * @author: czh
      * @date: 2023/7/22
@@ -265,7 +283,7 @@ public class KwsEnterpriseController {
 
     /**
      * @param reqVo 查询
-     * @return  HttpResult
+     * @return HttpResult
      * @desc: 客户列表分组个数
      * @author: czh
      * @date: 2023/9/14
@@ -286,5 +304,4 @@ public class KwsEnterpriseController {
     }
 
 
-
 }

+ 11 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java

@@ -85,7 +85,7 @@ public class KwsUserController {
      * @date: 2023/6/14
      */
     @PostMapping("/add")
-    @RepeatSubmit(interval = 1000,message ="前方拥堵,请稍后尝试")
+    @RepeatSubmit(interval = 1000, message = "前方拥堵,请稍后尝试")
     public HttpResult add(@Valid @RequestBody UserAddReqVo reqVo,
                           @RequestHeader(name = "System-Type", required = true) int systemType) {
         reqVo.setSystemType(systemType);
@@ -217,6 +217,15 @@ public class KwsUserController {
         return HttpResult.ok(HttpStatus.MSG_005);
     }
 
+    /**
+     * 获取客户经理
+     *
+     * @return
+     */
+    @RequestMapping(name = "获取客户经理", value = "/getManager", method = RequestMethod.GET)
+    public HttpResult getManager() {
+        return HttpResult.ok(kwsUserService.getManager());
+    }
 
     /**
      * @desc: 导出
@@ -229,13 +238,12 @@ public class KwsUserController {
     }
 
 
-
     @PostMapping("testEdit")
     public HttpResult testEdit(@RequestParam String type) {
         return HttpResult.ok(kwsUserService.test(Arrays.stream(type.split(",")).map(Integer::parseInt).toList()));
     }
 
-    @RepeatSubmit(interval = 1000,message ="前方拥堵,请稍后尝试")
+    @RepeatSubmit(interval = 1000, message = "前方拥堵,请稍后尝试")
     @PostMapping("testApprove")
     public HttpResult testApprove(@RequestBody ForgetPasswordReqVo reqVo) {
         kwsUserService.test(Collections.singletonList(1));

+ 44 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java

@@ -15,6 +15,7 @@ import java.util.Map;
 
 /**
  * 企业信息
+ *
  * @author zk
  * @date 2023-06-02
  */
@@ -22,6 +23,7 @@ import java.util.Map;
 public interface KwsEnterpriseDao {
     /**
      * 新增
+     *
      * @param record
      * @return
      */
@@ -29,6 +31,7 @@ public interface KwsEnterpriseDao {
 
     /**
      * 更新
+     *
      * @param record
      * @return
      */
@@ -36,6 +39,7 @@ public interface KwsEnterpriseDao {
 
     /**
      * 详情查询
+     *
      * @param id
      * @return
      */
@@ -61,6 +65,7 @@ public interface KwsEnterpriseDao {
 
     /**
      * 查询
+     *
      * @param params
      * @return
      * @throws Exception
@@ -69,6 +74,7 @@ public interface KwsEnterpriseDao {
 
     /**
      * 查询
+     *
      * @param params
      * @return
      */
@@ -76,13 +82,24 @@ public interface KwsEnterpriseDao {
 
     /**
      * 查询
+     *
      * @param params
      * @return
      */
     List<FindEntListPojo> findPojo(@Param(value = "dto") FindPojoParam params);
 
+
+    /**
+     * 查询
+     *
+     * @param params
+     * @return
+     */
+    List<FindEntListPojo> findPojoAndManager(@Param(value = "dto") FindPojoParam params);
+
     /**
      * 根据用户查企业信息
+     *
      * @param id
      * @return
      */
@@ -98,7 +115,7 @@ public interface KwsEnterpriseDao {
     int approval(KwsEnterprise kwsEnterprise);
 
     /**
-     * @param  list 企业ids
+     * @param list 企业ids
      * @return FindEntUserPojo
      * @desc: 根据企业id查用户
      * @author: czh
@@ -163,4 +180,30 @@ public interface KwsEnterpriseDao {
                                                                   @Param(value = "entIdList") List<Long> entIdList,
                                                                   @Param(value = "entName") String entName);
 
+    /**
+     * 根据用户id和用户规则id查询企业信息
+     * @param userId 用户id
+     * @param roleId   规则id
+     * @return
+     */
+    List<Long> findEnterpriseIdsByUserRoleId(@Param("userId") Long userId,@Param("roleId") Long roleId);
+
+    /**
+     * 根据用户id和用户规则id查询企业信息
+     * @param userId 用户id
+     * @param roleIds   规则id
+     * @return
+     */
+    List<Long> findEnterpriseIdsByUserRoleIds(@Param("userId") Long userId,@Param("roleIds") List<Long> roleIds);
+
+
+    /**
+     * 根据用户id和用户规则id查询企业信息
+     * @param userIds 用户ids
+     * @param roleIds   规则ids
+     * @return
+     */
+    List<Long> findEnterpriseIdsByUserIdAndUserRoleIds(@Param("userIds") List<Long> userIds, @Param("roleIds") List<Long> roleIds);
+
+    List<Long> findEnterpriseIdsByUserIds(@Param("userIds") List<Long> userIds);
 }

+ 3 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java

@@ -3,6 +3,7 @@ package com.sckw.system.dao;
 import com.sckw.system.model.KwsDept;
 import com.sckw.system.model.KwsUser;
 import com.sckw.system.model.KwsUserDept;
+import com.sckw.system.model.vo.res.KwsUserSystemTypeVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -107,4 +108,6 @@ public interface KwsUserDao {
      * @date: 2023/9/4
      */
     List<KwsUser> selectByDeptIds(@Param(value = "list") List<Long> deptIds);
+
+    List<KwsUserSystemTypeVo> selectUserBySystemType(@Param("systemType") Integer systemType);
 }

+ 10 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserRoleDao.java

@@ -50,6 +50,15 @@ public interface  KwsUserRoleDao {
      */
     List<KwsUserRole> findAllByUserId(Long userId);
 
+    /**
+     * @param userIds 用户ids
+     * @return List
+     * @desc: 根据用户ID查用户角色信息
+     * @author: czh
+     * @date: 2023/6/13
+     */
+    List<KwsUserRole> findRoleAllByUserIds(@Param("userIds") List<Long> userIds);
+
     /**
      * @param roleId 角色id
      * @return List
@@ -68,4 +77,5 @@ public interface  KwsUserRoleDao {
      */
     List<KwsUserRole> findAllByRoleIds(List<Long> list);
 
+    List<KwsUserRole> findAllByUserIds(@Param("userIds") List<Long> userIds);
 }

+ 78 - 11
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java

@@ -12,10 +12,7 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.system.api.RemoteUserService;
 import com.sckw.system.api.model.dto.req.*;
 import com.sckw.system.api.model.dto.res.*;
-import com.sckw.system.dao.KwsEnterpriseDao;
-import com.sckw.system.dao.KwsUserLoginDao;
-import com.sckw.system.dao.SysAreaDao;
-import com.sckw.system.dao.SysDictDao;
+import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindEntUserPojo;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
@@ -23,10 +20,10 @@ import com.sckw.system.model.vo.req.FindListReqVo;
 import com.sckw.system.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
+import com.sckw.system.model.vo.res.KwsUserSystemTypeVo;
 import com.sckw.system.service.*;
 import jakarta.annotation.Resource;
 import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -67,6 +64,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     @Resource
     private SysAreaDao sysAreaDao;
 
+    @Resource
+    private KwsUserRoleDao userRoleDao;
+
+    @Resource
+    private KwsUserDao userDao;
+
     @Resource
     private CommonService commonService;
 
@@ -220,7 +223,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
 
         List<Long> deptIds = kwsAuthorities.stream().map(KwsAuthority::getDeptId).toList();
         List<KwsUser> kwsUsers = remoteBaseService.queryUserByDeptIds(deptIds);
-        if(CollectionUtils.isEmpty(kwsUsers)) {
+        if (CollectionUtils.isEmpty(kwsUsers)) {
             return list;
         }
 
@@ -233,10 +236,10 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         FindListReqVo findListReqVo = new FindListReqVo();
         findListReqVo.setId(entId);
         List<FindEntUserPojo> entUser = kwsEnterpriseService.findEntUser(findListReqVo);
-        if(CollectionUtils.isEmpty(entUser)) {
+        if (CollectionUtils.isEmpty(entUser)) {
             return Collections.emptyList();
         }
-        return BeanUtils.copyToList(entUser,FindEntUserResDto.class);
+        return BeanUtils.copyToList(entUser, FindEntUserResDto.class);
     }
 
 
@@ -264,7 +267,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
      **/
     @Override
     public List<Long> findEntIds(List<Integer> entTypes, String firmName) {
-        Map<String, Object> params  = new HashMap<>(Global.NUMERICAL_SIXTEEN){{
+        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
             put("entTypes", entTypes);
             put("firmName", firmName);
         }};
@@ -275,7 +278,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     }
 
     /**
-     * @param entIds 企业ID
+     * @param entIds   企业ID
      * @param userName 用户名称
      * @desc 根据企业ID或用户名称搜索用户ID(适用于关键字搜索)
      * @author zk
@@ -283,7 +286,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
      **/
     @Override
     public List<Long> findUserIds(List<Long> entIds, String userName) {
-        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN){{
+        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
             put("entIds", entIds);
             put("userName", userName);
         }};
@@ -293,9 +296,72 @@ public class RemoteUserServiceImpl implements RemoteUserService {
         return userIds;
     }
 
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     *
+     * @param userId 客户经理id
+     * @return list 企业id数组
+     */
+    @Override
+    public List<Long> findEnterpriseIds(Long userId) {
+        List<Long> enterpriseIds = null;
+        List<KwsUserRole> userRoles = userRoleDao.findAllByUserId(userId);
+        if (!org.springframework.util.CollectionUtils.isEmpty(userRoles) && userRoles.size() > 0) {
+            List<Long> roleIds = userRoles.stream().map(KwsUserRole::getRoleId).distinct().collect(Collectors.toList());
+//            enterpriseIds = kwsEnterpriseDao.findEnterpriseIdsByUserRoleId(userId);
+            enterpriseIds = kwsEnterpriseDao.findEnterpriseIdsByUserRoleIds(userId, roleIds);
+        }
+        return enterpriseIds;
+    }
+
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     *
+     * @param userIds 客户经理id
+     * @return list 企业id数组
+     */
+    @Override
+    public List<Long> findEnterpriseListByIds(List<Long> userIds) {
+        List<Long> enterpriseIds = null;
+        List<KwsUserRole> userRoles = userRoleDao.findRoleAllByUserIds(userIds);
+        if (!org.springframework.util.CollectionUtils.isEmpty(userRoles) && userRoles.size() > 0) {
+            List<Long> roleIds = userRoles.stream().map(KwsUserRole::getRoleId).distinct().collect(Collectors.toList());
+            enterpriseIds = kwsEnterpriseDao.findEnterpriseIdsByUserIdAndUserRoleIds(userIds, roleIds);
+        }
+        return enterpriseIds;
+    }
+
+    /**
+     * 通过用户id查询所有的企业信息(传递的是客户经理用户的id)
+     *
+     * @param userIds 客户经理id
+     * @return list 企业id数组
+     */
+    @Override
+    public List<Long> findEnterpriseListByUserIds(List<Long> userIds) {
+        List<Long> enterpriseIds = kwsEnterpriseDao.findEnterpriseIdsByUserIds(userIds);
+        return enterpriseIds;
+    }
+
+    /**
+     * 查询出所有运营端账号
+     *
+     * @param systemType
+     * @return
+     */
+    @Override
+    public List<Long> selectUserBySystemType(Integer systemType) {
+        List<Long> userIds = null;
+        List<KwsUserSystemTypeVo> userBySystemType = userDao.selectUserBySystemType(1);
+        if (!org.springframework.util.CollectionUtils.isEmpty(userBySystemType) && userBySystemType.size() > 0) {
+            userIds = userBySystemType.stream().map(KwsUserSystemTypeVo::getId).distinct().collect(Collectors.toList());
+        }
+        return userIds;
+    }
 
     /**
      * 根据用户名查用户信息
+     *
      * @param username 用户账号
      * @return
      */
@@ -307,6 +373,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
 
     /**
      * 根据用户姓名模糊查用户信息
+     *
      * @param name 用户姓名
      * @return list
      */

+ 3 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/report/EntSettleExcel.java

@@ -46,6 +46,9 @@ public class EntSettleExcel implements Serializable {
     @ExcelProperty(value = "联系电话")
     private String phone;
 
+    @ExcelProperty(value = "客户经理")
+    private String managerName;
+
     @ExcelProperty(value = "入驻类型")
     private String entryTypeStr;
 

+ 25 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EnterpriseBindManagerVo.java

@@ -0,0 +1,25 @@
+package com.sckw.system.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 企业绑定客户经理入参
+ * @date 2023-12-13 15:12:39
+ */
+@Data
+public class EnterpriseBindManagerVo implements Serializable {
+    /**
+     * 企业用户id ,号分割
+     */
+    @NotBlank(message = "企业id不能为空")
+    public String enterpriseIds;
+    /**
+     * 客户经理id
+     */
+    @NotBlank(message = "客户经理不能为空")
+    public String managerId;
+}

+ 10 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/EntFindPageResVo.java

@@ -1,6 +1,5 @@
 package com.sckw.system.model.vo.res;
 
-import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.sckw.core.utils.LongToStringUtils;
@@ -119,6 +118,16 @@ public class EntFindPageResVo implements Serializable {
      */
     private String statusName;
 
+    /**
+     * 客户经理
+     */
+    private Long manager;
+
+    /**
+     * 客户经理
+     */
+    private String managerName;
+
     /**
      * 创建时间
      */

+ 39 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/KwsUserSystemTypeVo.java

@@ -0,0 +1,39 @@
+package com.sckw.system.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author lfdc
+ * @description 用户经理vo
+ * @date 2023-12-13 15:12:25
+ */
+@Data
+public class KwsUserSystemTypeVo implements Serializable {
+    /**
+     * 用户id
+     */
+    private Long id;
+    /**
+     * 系统类型
+     */
+    private String systemType;
+    /**
+     * 账号
+     */
+    private String account;
+    /**
+     * 用户名
+     */
+    private String name;
+    /**
+     * 电话
+     */
+    private String phone;
+    /**
+     * 是否是企业管理(0否、1是)
+     */
+    private Integer isMain;
+
+}

+ 59 - 9
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -1,7 +1,5 @@
 package com.sckw.system.service;
 
-import java.util.Date;
-
 import cn.hutool.core.date.DateUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -15,10 +13,12 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.model.EntCertificateInfo;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.UserInfo;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
-import com.sckw.system.api.model.dto.res.*;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
 import com.sckw.system.dubbo.RemoteSystemServiceImpl;
 import com.sckw.system.model.*;
@@ -30,7 +30,6 @@ import com.sckw.system.model.report.EntCustomerExcel;
 import com.sckw.system.model.report.EntSettleExcel;
 import com.sckw.system.model.vo.req.*;
 import com.sckw.system.model.vo.res.*;
-import com.sckw.system.model.vo.res.KwsUserResVo;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -80,6 +79,9 @@ public class KwsEnterpriseService {
     @Autowired
     private KwsMenuDao kwsMenuDao;
 
+    @Autowired
+    private KwsUserDao userDao;
+
     @Autowired
     private RemoteSystemServiceImpl remoteSystemService;
 
@@ -212,9 +214,13 @@ public class KwsEnterpriseService {
      */
     public PageResult findPage(EntFindPageReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
-        List<FindEntListPojo> list = findPojo(reqVo);
         List<EntFindPageResVo> result = new ArrayList<>();
-
+//        List<FindEntListPojo> list = findPojo(reqVo);
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (authEntIdList.size() < 1) {
+            return PageHelperUtil.getPageResult(new PageInfo<>(result));
+        }
+        List<FindEntListPojo> list = findPojoManager(reqVo);
         if (CollectionUtils.isEmpty(list)) {
             return PageHelperUtil.getPageResult(new PageInfo<>(result));
         }
@@ -227,11 +233,26 @@ public class KwsEnterpriseService {
             entFindPageResVo.setEntTypes(item.getType());
             entFindPageResVo.setEntryType(item.getSystemType().equals(SystemTypeEnum.MANAGE.getCode()) ? EntryTypeEnum.PLATFORM.getCode() : EntryTypeEnum.SELF.getCode());
             entFindPageResVo.setEntryTypeStr(EntryTypeEnum.getName(entFindPageResVo.getEntryType()).getName());
+            if (entFindPageResVo.getManager() != null) {
+                KwsUser kwsUser = userDao.selectByKey(entFindPageResVo.getManager());
+                entFindPageResVo.setManagerName(kwsUser == null ? null : kwsUser.getName());
+            }
             result.add(entFindPageResVo);
         }
         return PageHelperUtil.getPageResult(new PageInfo<>(result), list, reqVo.getPageSize());
     }
 
+    private List<FindEntListPojo> findPojoManager(EntFindPageReqVo reqVo) {
+        FindPojoParam findPojoParam = new FindPojoParam();
+        BeanUtils.copyProperties(reqVo, findPojoParam);
+        findPojoParam.setIdList(StringUtils.splitStrToList(reqVo.getIds(), Long.class));
+        if (StringUtils.isNotBlank(reqVo.getEntTypes())) {
+            findPojoParam.setTypeList(Arrays.stream(reqVo.getEntTypes().split(Global.COMMA)).map(Integer::parseInt).toList());
+        }
+
+        return kwsEnterpriseDao.findPojoAndManager(findPojoParam);
+    }
+
     /**
      * @param reqVo 查所有企业
      * @return List<KwsEnterprise>
@@ -398,7 +419,8 @@ public class KwsEnterpriseService {
 
 
         //子公司不用新建机构、角色等,直接返回
-        Map<String, Object> map = CollectionUtils.createHashMap();;
+        Map<String, Object> map = CollectionUtils.createHashMap();
+        ;
         map.put("entName", kwsEnterprise.getFirmName());
         map.put("createByName", kwsEnterprise.getContacts());
         if (Objects.nonNull(reqVo.getEntPid())) {
@@ -1255,13 +1277,16 @@ public class KwsEnterpriseService {
      * @date: 2023/9/21
      */
     public void exportEntSettle(EntFindPageReqVo reqVo, HttpServletResponse response) {
+        List<Long> authEntIdList = LoginUserHolder.getAuthEntIdList();
+        if (CollectionUtils.isEmpty(authEntIdList)) {
+            throw new SystemException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认!");
+        }
         List<FindEntListPojo> list = findPojo(reqVo);
         List<EntFindPageResVo> result = new ArrayList<>();
 
         if (CollectionUtils.isEmpty(list)) {
             throw new SystemException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认!");
         }
-
         for (FindEntListPojo item : list) {
             EntFindPageResVo entFindPageResVo = new EntFindPageResVo();
             BeanUtils.copyProperties(item, entFindPageResVo);
@@ -1283,7 +1308,10 @@ public class KwsEnterpriseService {
             if (item.getType().contains(String.valueOf(EntTypeEnum.LOGISTICS4.getCode()))) {
                 entFindPageResVo.setEnt4("是");
             }
-
+            if (entFindPageResVo.getManager() != null) {
+                KwsUser kwsUser = userDao.selectByKey(entFindPageResVo.getManager());
+                entFindPageResVo.setManagerName(kwsUser == null ? null : kwsUser.getName());
+            }
             result.add(entFindPageResVo);
         }
 
@@ -1294,4 +1322,26 @@ public class KwsEnterpriseService {
         }
     }
 
+    /**
+     * 企业用户绑定客户经理
+     *
+     * @param vo
+     */
+    @Transactional
+    public void enterpriseBindManage(EnterpriseBindManagerVo vo) {
+        long managerId = Long.parseLong(vo.getManagerId());
+        String enterpriseIds = vo.getEnterpriseIds();
+        List<Long> enterpriseList = StringUtils.splitStrToList(enterpriseIds, Long.class);
+        enterpriseList.forEach(id -> {
+            KwsEnterprise enterprise = kwsEnterpriseDao.selectByKey(id);
+            enterprise.setManager(managerId);
+            kwsEnterpriseDao.update(enterprise);
+        });
+        //清除缓存  新增缓存
+        String key = Global.getCustomerManagerUserLoginKey(SystemTypeEnum.MANAGE.getCode(), managerId);
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(key)) {
+            RedissonUtils.delete(key);
+        }
+        RedissonUtils.putSet(key, enterpriseIds);
+    }
 }

+ 5 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -23,6 +23,7 @@ import com.sckw.system.dubbo.RemoteSystemServiceImpl;
 import com.sckw.system.model.*;
 import com.sckw.system.model.report.KwsUserExcel;
 import com.sckw.system.model.vo.req.*;
+import com.sckw.system.model.vo.res.KwsUserSystemTypeVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import com.sckw.transport.api.dubbo.TransportStatisticsService;
 import jakarta.servlet.http.HttpServletResponse;
@@ -389,7 +390,7 @@ public class KwsUserService {
      * 根据用户名查用户信息
      */
     public KwsUser getUserByAccount(String username, int systemType) {
-        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN){{
+        Map<String, Object> params = new HashMap<>(Global.NUMERICAL_SIXTEEN) {{
             put("account", username);
             put("systemType", systemType);
         }};
@@ -676,4 +677,7 @@ public class KwsUserService {
         ExcelUtil.downData(response, KwsUserExcel.class, result);
     }
 
+    public List<KwsUserSystemTypeVo> getManager() {
+        return kwsUserDao.selectUserBySystemType(1);
+    }
 }

+ 215 - 3
sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

@@ -38,13 +38,13 @@
 
   <sql id="Base_Column_List">
     id, firm_name, code, contacts, phone, legal_name, legal_phone, head, integral,
-    balance, experience, member_level, reg_time, reg_source, org_code, city_code, detail_address, 
-    lat, lng, approval, approval_time, manager, remark, status, create_by, create_time, 
+    balance, experience, member_level, reg_time, reg_source, org_code, city_code, detail_address,
+    lat, lng, approval, approval_time, manager, remark, status, create_by, create_time,
     update_by, update_time, del_flag,city_name, website, business
   </sql>
 
   <select id="selectByKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-    select 
+    select
     <include refid="Base_Column_List" />
     from kws_enterprise
     where id = #{id,jdbcType=BIGINT}
@@ -688,4 +688,216 @@
        and del_flag = 0
   </update>
 
+  <select id="findEnterpriseIdsByUserRoleId" resultType="java.lang.Long">
+      SELECT id
+      from kws_enterprise
+      where del_flag = 0 and status = 0
+      <if test="userId != null">
+          and (manager = #{userId} or manager in (SELECT user_id
+          from kws_user_dept
+          where dept_id in (SELECT dept_id from kws_authority where role_id = #{roleId})))
+      </if>
+  </select>
+
+  <select id="findEnterpriseIdsByUserRoleIds" resultType="java.lang.Long">
+      SELECT id
+      from kws_enterprise
+      <where>
+          del_flag = 0
+            and status = 0
+          <if test="userId != null">
+              and            (manager = #{userId} or manager in (SELECT user_id
+                                                                 from kws_user_dept
+              where dept_id in (SELECT dept_id
+                                from kws_authority
+              <where>
+                  status = 0
+                    and del_flag = 0
+                  <if test="roleIds != null and roleIds.size() != 0">
+                      and role_id in
+                      <foreach collection="roleIds" item="item" separator="," open="(" close=")">
+                          #{item}
+                      </foreach>
+                  </if>
+              </where>
+              )
+              )
+                  )
+          </if>
+      </where>
+  </select>
+
+  <select id="findPojoAndManager" resultType="com.sckw.system.model.pojo.FindEntListPojo">
+      select tab.*,
+      case when tab.id in (select ent_id from kws_ent_dep) then '子单位' else '主单位' end entDept,
+      case when tab.status = 0 then '正常' else '冻结' end statusName
+      from
+      (
+      select a.id,
+      min(a.firm_name) firm_name,
+      min(a.code) code,
+      min(a.contacts) contacts,
+      min(a.phone) phone,
+      min(a.legal_name) legal_name,
+      min(a.legal_phone) legal_phone,
+      min(a.head) head,
+      min(a.integral) integral,
+      min(a.balance) balance,
+      min(a.experience) experience,
+      min(a.member_level) member_level,
+      min(a.reg_time) reg_time,
+      min(a.reg_source) reg_source,
+      min(a.org_code) org_code,
+      min(a.city_code) city_code,
+      min(a.detail_address) detail_address,
+      min(a.lat) lat,
+      min(a.lng) lng,
+      min(a.approval) approval,
+      min(a.approval_time) approval_time,
+      min(a.manager) manager,
+      min(a.remark) remark,
+      min(a.status) status,
+      min(a.create_by) create_by,
+      min(a.create_time) create_time,
+      min(a.update_by) update_by,
+      min(a.update_time) update_time,
+      min(a.del_flag) del_flag,
+      ifnull(GROUP_CONCAT(distinct b.type), '') type,
+      min(k.system_type) system_type,
+      min(k.name) createByName,
+      min(ku.name) updateByName,
+      min(d.id) pid,
+      min(d.firm_name) pEntName
+      from kws_enterprise a
+      left join kws_user k on a.create_by = k.id
+      left join kws_user ku on a.update_by = ku.id
+      left join kws_ent_type b on a.id = b.ent_id and b.del_flag = 0
+      <if test="dto.approval == null or (dto.approval != null and dto.approval != 2)">
+          and b.status != 1
+      </if>
+      left join kws_ent_dep c on a.id = c.ent_id
+      left join kws_enterprise d on c.ent_pid = d.id
+      where a.del_flag = 0
+      <if test="dto.typeList != null and dto.typeList.size() > 0">
+          and exists (select 1
+          from kws_ent_type kt
+          where a.id = kt.ent_id
+          and kt.del_flag = 0
+          and kt.type in
+          <foreach collection="dto.typeList" item="item" open="(" close=")" separator=",">
+              #{item}
+          </foreach>
+          )
+      </if>
+      <choose>
+          <when test="dto.approval != null and dto.approval == 3">
+              and a.approval in (3,4)
+          </when>
+          <when test="dto.approval != null and dto.approval != 3">
+              and a.approval = #{dto.approval}
+          </when>
+      </choose>
+      <if test="dto.customer != null and dto.customer == 1">
+          and a.approval in (1, 4)
+      </if>
+      <if test="dto.keywords != null">
+          and (a.contacts like concat('%', #{dto.keywords}, '%') or a.phone like concat('%', #{dto.keywords}, '%') or a.firm_name like concat('%', #{dto.keywords}, '%'))
+      </if>
+      <if test="dto.startTime != null">
+          and a.reg_time >= #{dto.startTime}
+      </if>
+      <if test="dto.endTime != null">
+          and a.reg_time &lt;= #{dto.endTime}
+      </if>
+      <if test="dto.approvalStartTime != null">
+          and a.approval_time >= #{dto.approvalStartTime}
+      </if>
+      <if test="dto.approvalEndTime != null">
+          and a.approval_time &lt; date_add(#{dto.approvalEndTime}, INTERVAL 1 DAY)
+      </if>
+      <if test="dto.status != null and dto.status != ''">
+          and a.status = #{dto.status}
+      </if>
+      <if test="dto.entryType != null and dto.entryType == 1">
+          and k.system_type = 2
+      </if>
+      <if test="dto.entryType != null and dto.entryType == 2">
+          and k.system_type = 1
+      </if>
+      <if test="dto.idList != null and dto.idList.size() > 0">
+          and a.id in
+          <foreach collection="dto.idList" item="item" separator="," open="(" close=")">
+              #{item}
+          </foreach>
+      </if>
+      <choose>
+          <when test="dto.entDept != null and dto.entDept == 0">
+              and not exists (
+              select 1
+              from kws_ent_dep dep
+              where a.id = dep.ent_id
+              <if test="dto.entId != null">
+                  and dep.ent_pid = #{dto.entId}
+              </if>
+              )
+          </when>
+          <when test="dto.entDept != null and dto.entDept == 1">
+              and exists (
+              select 1 from kws_ent_dep dep
+              where a.id = dep.ent_id
+              <if test="dto.entId != null">
+                  and dep.ent_pid = #{dto.entId}
+              </if>)
+          </when>
+      </choose>
+      group by a.id
+      ) tab
+      where tab.id is not null
+      order by tab.update_time desc
+    </select>
+
+  <select id="findEnterpriseIdsByUserIdAndUserRoleIds" resultType="java.lang.Long">
+      SELECT id
+      from kws_enterprise
+      <where>
+          del_flag = 0
+          and status = 0
+          <if test="userIds != null and userIds.size() != 0">
+              and            ( (manager in
+              <foreach collection="userIds" item="item" separator="," open="(" close=")">
+                  #{item}
+              </foreach>
+              ) or manager in (SELECT user_id
+              from kws_user_dept
+              where dept_id in (SELECT dept_id
+              from kws_authority
+              <where>
+                  status = 0
+                  and del_flag = 0
+                  <if test="roleIds != null and roleIds.size() != 0">
+                      and role_id in
+                      <foreach collection="roleIds" item="item" separator="," open="(" close=")">
+                          #{item}
+                      </foreach>
+                  </if>
+              </where>
+              )
+              )
+              )
+          </if>
+      </where>
+    </select>
+
+  <select id="findEnterpriseIdsByUserIds" resultType="java.lang.Long">
+      SELECT id
+      from kws_enterprise
+      where status = 0
+        and del_flag = 0
+      <if test="userIds != null and userIds.size() != 0">
+          and manager in
+          <foreach collection="userIds" separator="," close=")" open="(" item="item">
+      #{item}
+          </foreach>
+      </if>
+  </select>
 </mapper>

+ 5 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml

@@ -376,4 +376,9 @@
         </foreach>
     </select>
 
+  <select id="selectUserBySystemType" resultType="com.sckw.system.model.vo.res.KwsUserSystemTypeVo">
+      select u.id AS id,u.system_type AS systemType,u.account AS account,u.name AS name, u.phone AS phone,u.is_main as isMain
+      from kws_user AS u
+      where u.del_flag = 0 and u.status = 0 and u.system_type = #{systemType}
+    </select>
 </mapper>

+ 23 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserRoleDao.xml

@@ -30,6 +30,20 @@
     select * from kws_user_role where user_id = #{userId} and del_flag = 0 and status = 0
   </select>
 
+    <select id="findRoleAllByUserIds" resultType="com.sckw.system.model.KwsUserRole">
+        select * from kws_user_role
+        <where>
+            del_flag = 0 and status = 0
+            <if test="userIds != null and userIds.size()>0">
+                and user_id in
+                <foreach collection="userIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+
+            </if>
+        </where>
+    </select>
+
   <select id="findAllByRoleId" resultType="com.sckw.system.model.KwsUserRole">
     select * from kws_user_role where role_id = #{roleId} and del_flag = 0 and status = 0
   </select>
@@ -178,4 +192,13 @@
     where id = #{id,jdbcType=BIGINT}
   </update>
 
+  <select id="findAllByUserIds" resultMap="BaseResultMap">
+      select * from kws_user_role where del_flag = 0 and status = 0
+      <if test="userIds != null and userIds.size() != 0">
+          and user_id in
+          <foreach collection="userIds" separator="," close=")" open="(" item="item">
+      #{item}
+          </foreach>
+      </if>
+  </select>
 </mapper>