zhoux 2 лет назад
Родитель
Сommit
8e7d74e012

+ 0 - 14
src/main/java/com/dk/mdm/controller/common/CommonController.java

@@ -77,20 +77,6 @@ public class CommonController extends BaseController<Map<String, Object>> {
     }
 
     /**
-     * @desc : 获取最大显示顺序
-     * @author : 周兴
-     * @date : 2023/1/6 12:47
-     */
-    @ApiOperation(
-            value = "获取最大显示顺序",
-            notes = "获取最大显示顺序"
-    )
-    @PostMapping("get_max_display_no")
-    public ResponseResultVO<Integer> getMaxDisplayNo(@RequestBody Map<String, Object> param) {
-        return commonService.getMaxDisplayNo(param);
-    }
-
-    /**
      * @desc : 获取系统表数据种类
      * @author : 周兴
      * @date : 2023/1/6 12:47

+ 3 - 2
src/main/java/com/dk/mdm/controller/core/UserController.java

@@ -2,6 +2,7 @@ package com.dk.mdm.controller.core;
 
 import com.alibaba.fastjson.JSONObject;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.model.vo.core.UserVO;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
@@ -85,8 +86,8 @@ public class UserController{
      * @date : 2022-06-07 16:10
      */
     @PostMapping("get_current")
-    public ResponseResultVO<UserVO> getCurrent() {
-        return ResponseResultUtil.success(authUtils.getUser());
+    public ResponseResultVO<StaffEntity> getCurrent() {
+        return ResponseResultUtil.success(authUtils.getStaff());
     }
 
     /**

+ 1 - 0
src/main/java/com/dk/mdm/controller/mst/StaffController.java

@@ -1,6 +1,7 @@
 package com.dk.mdm.controller.mst;
 
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.common.util.ExcelUtils;
 import com.dk.mdm.model.pojo.mst.Staff; 

+ 10 - 0
src/main/java/com/dk/mdm/infrastructure/convert/mst/StaffConvert.java

@@ -1,6 +1,8 @@
 package com.dk.mdm.infrastructure.convert.mst;
 
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.mdm.model.pojo.mst.Staff;
+import com.dk.mdm.model.response.mst.StaffResponse;
 import com.dk.mdm.model.vo.mst.StaffVO;
 import org.mapstruct.Mapper;
 
@@ -19,4 +21,12 @@ public interface StaffConvert {
      */
     Staff convertToPo(StaffVO staffVO);
 
+    /**
+     * @desc   : 转换pojo为Entity
+     *
+     * @author : admin
+     * @date   : 2023/1/9 10:37
+     */
+    StaffEntity convertToEntity(StaffResponse staff);
+
 }

+ 44 - 42
src/main/java/com/dk/mdm/infrastructure/util/AuthUtils.java

@@ -3,13 +3,15 @@ package com.dk.mdm.infrastructure.util;
 import com.alibaba.fastjson.JSONObject;
 import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.constant.Constant;
-import com.dk.common.model.vo.core.UserVO;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.util.oauth.AESSecurityUtil;
 import com.dk.common.util.oauth.JwtUtil;
-import com.dk.mdm.infrastructure.convert.core.UserConvert;
-import com.dk.mdm.mapper.core.UserMapper;
-import com.dk.common.model.response.core.UserResponse;
+import com.dk.mdm.infrastructure.convert.mst.StaffConvert;
+import com.dk.mdm.mapper.mst.StaffMapper;
+import com.dk.mdm.model.pojo.mst.Staff;
+import com.dk.mdm.model.response.mst.StaffResponse;
+import com.dk.mdm.service.mst.StaffService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -32,10 +34,10 @@ public class AuthUtils {
     private String AESKey;
 
     @Autowired
-    private UserMapper userMapper;
+    private StaffMapper staffMapper;
 
     @Autowired
-    private UserConvert userConvert;
+    private StaffConvert staffConvert;
 
     @Autowired
     private StringRedisTemplate stringRedisTemplate;
@@ -48,8 +50,8 @@ public class AuthUtils {
      * @author : 洪旭东
      * @date   : 2022-06-07 16:19
      */
-    public UserVO getUser(){
-        return getUser(httpServletRequest.getHeader("Authorization"));
+    public StaffEntity getStaff(){
+        return getStaff(httpServletRequest.getHeader("Authorization"));
     }
     /**
      * @date_time 2021-12-23 09:25
@@ -57,25 +59,27 @@ public class AuthUtils {
      * @description 通过token获取用户信息,如果redis中失效,重新查询
      * @return com.dongke.auth.pojo.User
      */
-    public UserVO getUser(String token){
+    public StaffEntity getStaff(String token){
         if (token==null) {
             return null;
         }
         try {
             String[] tokens = token.split(" ");
             String decrypt = AESSecurityUtil.decrypt(AESKey, tokens[1]);
-            Long userId = Long.valueOf(JwtUtil.getUserId(decrypt));
-            log.info("userId=>{}",userId);
+            String staffId = JwtUtil.getStaffId(decrypt);
+            log.info("staffId=>{}",staffId);
 
             String appCode = JwtUtil.getAppCode(decrypt);
-            log.info("appUuid=>{}",appCode);
-            String ftyCode =JwtUtil.getFtyCode(decrypt);
-            log.info("ftyCode=>{}",ftyCode);
-            String json = stringRedisTemplate.opsForValue().get(Constant.RedisConstant.REDIS_USER.getName() + ftyCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userId);
+            log.info("appCode=>{}",appCode);
+            String cpId = JwtUtil.getCpId(decrypt);
+            log.info("cpId=>{}",cpId);
+            String cpCode = JwtUtil.getCpCode(decrypt);
+            log.info("cpCode=>{}",cpCode);
+            String json = stringRedisTemplate.opsForValue().get(Constant.RedisConstant.REDIS_STAFF.getName() + cpId + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + staffId);
             if (json==null){
-                return saveUser(userId, appCode);
+                return saveStaff(staffId, cpCode, appCode);
             }else{
-                return JSONObject.parseObject(json, UserVO.class);
+                return JSONObject.parseObject(json, StaffEntity.class);
             }
         } catch (Exception e) {
             log.error(e.toString(),e);
@@ -87,25 +91,25 @@ public class AuthUtils {
      * @author : 周兴
      * @date   : 2023/1/6 15:46
      */
-    public void cleanUser(){
+    public void cleanStaff(){
         String appCode = JwtUtil.getAppCode(httpServletRequest);
-        cleanUser(Constant.RedisConstant.REDIS_USER.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + getUser().getUserId());
+        cleanStaff(Constant.RedisConstant.REDIS_STAFF.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + getStaff().getStaffId());
     }
     /**
      * @desc   : 清除redis用户信息
      * @author : 周兴
      * @date   : 2023/1/6 15:46
      */
-    public void cleanUser(Long userId){
+    public void cleanStaff(Long userId){
         String appCode = JwtUtil.getAppCode(httpServletRequest);
-        stringRedisTemplate.delete(Constant.RedisConstant.REDIS_USER.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userId);
+        stringRedisTemplate.delete(Constant.RedisConstant.REDIS_STAFF.getName() + appCode + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userId);
     }
     /**
      * @desc   : 清除redis用户信息
      * @author : 周兴
      * @date   : 2023/1/6 15:46
      */
-    public void cleanUser(String key){
+    public void cleanStaff(String key){
         stringRedisTemplate.delete(key);
     }
     /**
@@ -113,16 +117,16 @@ public class AuthUtils {
      * @author : 周兴
      * @date   : 2023/1/5 13:08
      */
-    public void cleanLoginUser(){
-        UserVO userVo = getUser();
-        cleanLoginUser(Constant.RedisConstant.REDIS_LOGIN.getName() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode());
+    public void cleanLoginStaff(){
+        StaffEntity staffEntity = getStaff();
+        cleanLoginStaff(Constant.RedisConstant.REDIS_LOGIN.getName() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + staffEntity.getStaffCode());
     }
     /**
      * @desc   : 清除缓存
      * @author : 周兴
      * @date   : 2023/1/5 13:09
      */
-    public void cleanLoginUser(String key){
+    public void cleanLoginStaff(String key){
         stringRedisTemplate.delete(key);
     }
     /**
@@ -131,28 +135,26 @@ public class AuthUtils {
      * @description 保存用户信息 + 权限ID 到Redis
      * @return User
      */
-    public UserVO saveUser(Long userId, String appCode){
-        UserResponse user = userMapper.selectById(userId);
-        UserVO userVO = userConvert.convertToVo(user);
-        if (user!=null) {
-            userVO.setAppCode(appCode);
-            saveUser(userVO);
+    public StaffEntity saveStaff(String staffId, String cpCode, String appCode){
+        StaffResponse staff = staffMapper.selectById(staffId);
+        StaffEntity staffEntity = staffConvert.convertToEntity(staff);
+        if (staffEntity!=null) {
+            staffEntity.setAppCode(appCode);
+            staffEntity.setCpCode(cpCode);
+            saveStaff(staffEntity);
         }
-        return userVO;
+        return staffEntity;
     }
     /**
-     * @desc   : 保存用户
+     * @desc   : 保存员工
      * @author : 周兴
      * @date   : 2023/1/6 15:18
      */
-    public UserVO saveUser(UserVO user){
-        user.setUserPwd(null);
-        if (user!=null) {
-//            List<String> list = functionService.selectNameByUser(user.getUserId());
-//            user.setFunNameList(list);
-            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_USER.getName() + user.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName()
-                    + user.getAppCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + user.getUserCode(), JSONObject.toJSONString(user), 1, TimeUnit.HOURS);
+    public StaffEntity saveStaff(StaffEntity staff){
+        if (staff!=null) {
+            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_STAFF.getName() + staff.getCpId() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName()
+                    + staff.getAppCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + staff.getStaffCode(), JSONObject.toJSONString(staff), 1, TimeUnit.HOURS);
         }
-        return user;
+        return staff;
     }
 }

+ 1 - 1
src/main/java/com/dk/mdm/mapper/common/CommonMapper.xml

@@ -4,7 +4,7 @@
 
     <!-- 获取显示顺序的最大值 -->
     <select id="getMaxDisplayNo" resultType="Integer">
-        select max(display_no)
+        select max(display_no) + 1
         from ${table}
         where flg_valid
         <if test="ftyId != null">

+ 16 - 0
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.java

@@ -4,6 +4,7 @@ import com.dk.mdm.model.pojo.mst.Staff;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.mst.StaffQuery;
 import com.dk.mdm.model.response.mst.StaffResponse;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -28,5 +29,20 @@ public interface StaffMapper extends BaseMapper<Staff>{
      * @date   : 2023/1/9 10:42
      */
     Long countByCond(StaffQuery staffQuery);
+
+    /**
+     * @desc   : 根据userId获取当前企业的员工信息
+     * @author : 周兴
+     * @date   : 2024/3/6 10:42
+     */
+    StaffResponse selectByUserId(@Param("userId") String userId);
+
+    /**
+     * @desc   : 根据staffId获取当前企业的员工信息
+     * @author : 周兴
+     * @date   : 2024/3/6 10:42
+     */
+    StaffResponse selectById(@Param("staffId") String staffId);
+
 }
 

+ 14 - 0
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml

@@ -124,6 +124,20 @@
         WHERE t.staff_id = #{staffId}::uuid
     </select>
 
+    <!-- 根据用户Id查询表t_mst_staff的一行数据 -->
+    <select id="selectByUserId" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        , org.org_name,
+        case when t.hr_status = 1 then '在职' else '离职' end as  hr_status_name,
+        (SELECT  COALESCE(array_to_string(array_agg(role_name), ','),'')
+        FROM dkic_b.t_mst_role
+        WHERE role_id = ANY (t.role_ids)) AS role_names
+        FROM dkic_b.t_mst_staff t
+        LEFT JOIN dkic_b.t_mst_org org ON t.org_Id = org.org_Id
+        WHERE t.wx_user_id = #{userId}::uuid
+    </select>
+
     <insert id="insertBatch">
         insert into dkic_b.t_mst_staff
         (

+ 11 - 2
src/main/java/com/dk/mdm/model/response/mst/StaffResponse.java

@@ -129,6 +129,13 @@ public class StaffResponse extends PageInfo<StaffResponse> implements Serializab
     private Integer cpId;
 
     /**
+     * 企业编码
+     */
+    @Excel(name = "企业编码")
+    @ApiModelProperty(value = "企业编码")
+    private String cpCode;
+
+    /**
      * 登录标识1能登录 0不能登录
      */
     @Excel(name = "登录标识")
@@ -156,7 +163,8 @@ public class StaffResponse extends PageInfo<StaffResponse> implements Serializab
      */
     @Excel(name = "创建用户 (触发器自动处理)")
     @ApiModelProperty(value = "创建用户 (触发器自动处理)")
-    private Long opCreateUserId;
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opCreateUserId;
 
 
     /**
@@ -174,7 +182,8 @@ public class StaffResponse extends PageInfo<StaffResponse> implements Serializab
      */
     @Excel(name = "修改用户 (触发器自动处理)")
     @ApiModelProperty(value = "修改用户 (触发器自动处理)")
-    private Long opUpdateUserId;
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String opUpdateUserId;
 
 
     /**

+ 62 - 20
src/main/java/com/dk/mdm/service/common/CommonService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.model.vo.core.UserVO;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
@@ -12,10 +13,13 @@ import com.dk.common.response.ResponseResultVO;
 import com.dk.common.service.BaseService;
 import com.dk.mdm.mapper.common.CommonMapper;
 import com.dk.mdm.infrastructure.util.AuthUtils;
+import com.dk.mdm.mapper.mst.StaffMapper;
+import com.dk.mdm.model.response.mst.StaffResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.postgresql.util.PGobject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
@@ -38,6 +42,9 @@ public class CommonService extends BaseService<Map<String, Object>> {
     private CommonMapper commonMapper;
 
     @Autowired
+    private StaffMapper staffMapper;
+
+    @Autowired
     private AuthUtils authUtils;
 
     /**
@@ -48,8 +55,9 @@ public class CommonService extends BaseService<Map<String, Object>> {
     public Map<String, Object> getUniqueNoteCode(String docName, Boolean codeFlag) {
         Map<String, Object> param = new HashMap<>();
         param.put("docName", docName);
-        // TODO 公司Id
-        param.put("cpId", 1);
+        // 公司Id
+        StaffEntity staff = authUtils.getStaff();
+        param.put("cpId", staff.getCpId());
         Map<String, Object> map = null;
         // 获取系统基础数据
         if (codeFlag) {
@@ -65,11 +73,25 @@ public class CommonService extends BaseService<Map<String, Object>> {
      * @author : 周兴
      * @date : 2024/3/4 11:41
      */
+    @Transactional(
+            rollbackFor = {Exception.class}
+    )
     public ResponseResultVO<Map<String, List<Map<String, Object>>>> getInfoAfterLogin(Map<String, Object> param) {
+        // 先根据userId查询当前企业的员工信息
+        StaffResponse staff = staffMapper.selectByUserId(param.get("userId").toString());
+        if (staff != null) {
+            // 存Redis
+            authUtils.saveStaff(new StaffEntity().setStaffId(staff.getStaffId())
+                    .setStaffCode(staff.getStaffCode())
+                    .setStaffName(staff.getStaffName())
+                    .setCpCode(param.get("cpCode").toString())
+                    .setCpId(Integer.parseInt(param.get("cpId").toString()))
+                    .setAppCode(param.get("appCode").toString()));
+        }
         // 获取菜单
         List<Map<String, Object>> menuList = commonMapper.getMenuByUser(param);
         Map<String, List<Map<String, Object>>> map = new HashMap<>();
-        map.put("menuList",menuList);
+        map.put("menuList", menuList);
         return ResponseResultUtil.success(map);
     }
 
@@ -90,19 +112,42 @@ public class CommonService extends BaseService<Map<String, Object>> {
      * @date : 2023/5/11 10:19
      */
     public ResponseResultVO refreshBasicData(Map<String, Object> param) {
-        UserVO user = authUtils.getUser();
-        if (param.get("appCode") != null) {
-            user.setAppCode(param.get("appCode").toString());
+        return null;
+//        UserVO user = authUtils.getUser();
+//        if (param.get("appCode") != null) {
+//            user.setAppCode(param.get("appCode").toString());
+//        }
+//        Map userMap = new HashMap();
+//        userMap.put("userId", user.getUserId());
+//        userMap.put("appCode", user.getAppCode());
+//        return ResponseResultUtil.success(new HashMap<String, Object>(3) {{
+//            put("menu", commonMapper.getMenuByUser(user.getAppCode(), user.getUserId()));
+//            put("function", (user.getRoleIds() != null && user.getRoleIds().indexOf(-1) >= 0)
+//                    ? commonMapper.getUserFunctionAdmin(userMap) : commonMapper.getUserFunction(userMap));
+//            put("userTableSetting", commonMapper.getUserTableInfo(userMap));
+//        }});
+    }
+
+    /**
+     * @desc : 获取序号最大值
+     * @author : 周兴
+     * @date : 2023/1/6 11:41t_user_right
+     */
+    public Integer getMaxDisplayNo(Constant.DisplayNoTable displayNoTable, Map<String, Object> param) {
+        if (param == null) {
+            param = new HashMap<>();
+        }
+        param.put("cpId", authUtils.getStaff().getCpId());
+        String table = displayNoTable.getTable();
+        String mode = displayNoTable.getMode();
+        if (table != null && mode != null) {
+            table = mode + "." + table;
+            param.put("table", table);
+            // 获取最大序号
+            Integer maxDisplayNo = commonMapper.getMaxDisplayNo(param);
+            return maxDisplayNo == null ? 1 : maxDisplayNo;
         }
-        Map userMap = new HashMap();
-        userMap.put("userId", user.getUserId());
-        userMap.put("appCode", user.getAppCode());
-        return ResponseResultUtil.success(new HashMap<String, Object>(3) {{
-            put("menu", commonMapper.getMenuByUser(user.getAppCode(), user.getUserId()));
-            put("function", (user.getRoleIds() != null && user.getRoleIds().indexOf(-1) >= 0)
-                    ? commonMapper.getUserFunctionAdmin(userMap) : commonMapper.getUserFunction(userMap));
-            put("userTableSetting", commonMapper.getUserTableInfo(userMap));
-        }});
+        return 0;
     }
 
     /**
@@ -110,11 +155,8 @@ public class CommonService extends BaseService<Map<String, Object>> {
      * @author : 周兴
      * @date : 2023/1/6 11:41t_user_right
      */
-    public ResponseResultVO<Integer> getMaxDisplayNo(Map<String, Object> param) {
-        // 获取系统基础数据
-        Integer maxDisplayNo = commonMapper.getMaxDisplayNo(param);
-        maxDisplayNo = maxDisplayNo == null ? 1 : (maxDisplayNo + 1);
-        return ResponseResultUtil.success(maxDisplayNo);
+    public Integer getMaxDisplayNo(Constant.DisplayNoTable displayNoTable) {
+        return getMaxDisplayNo(displayNoTable, null);
     }
 
     /**

+ 166 - 160
src/main/java/com/dk/mdm/service/core/UserService.java

@@ -9,6 +9,7 @@ import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.common.mapper.opinfo.OpInfoMapper;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.model.vo.core.UserVO;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
@@ -110,101 +111,102 @@ public class UserService extends BaseService<User> {
             rollbackFor = {Exception.class}
     )
     public ResponseResultVO login(UserVO userVo) {
-        // 校验应用
-        ResponseResultVO appVO = checkApp(userVo);
-        if (appVO != null) {
-            return appVO;
-        }
-        UserResponse user;
-        // TODO CR 220516 登录时没有redis,登录后验证或api用户获取token时,才需要验证redis
-        // 2022-05-21 周兴 暂时保留
-
-        //在缓存中查询登录的用户信息
-        //如果缓存中不存在当前登录的用户信息
-        // TODO CR 220516 redis还要加上app_uuid?共用token?token作为redis的key
-        // 2022-05-21 周兴 redis key 修改为 USER-{token}-{userid}
-
-        // 判断工厂编码是否存在
-        Long count = factoryMapper.selectByCode(new Factory().setFtyCode(userVo.getFtyCode()));
-        if (count <= 0) {
-            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
-                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
-            return ResponseResultUtil.error(ErrorCodeEnum.FTY_ERROR.getCode(), ErrorCodeEnum.FTY_ERROR.getMessage());
-        }
-        //根据用户编码查询数据库中的用户信息
-        user = userMapper.selectByCode(userVo.getUserCode(), userVo.getFtyCode());
-        //查询不到用户信息,在缓存中将此用户信息设置为空,过期时间为30秒(在此期间不会访问数据库)
-        if (user == null) {
-            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
-                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
-            return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage());
-        }
-        user.setAppCode(userVo.getAppCode());
-        user.setFtyCode(userVo.getFtyCode());
-//        // 统一查询系统参数 TODO
-//        List<String> codes = new ArrayList<String>() {{
-//            add(Constant.StringConstant.SYS_CODE_002.getName());
-//            add(Constant.StringConstant.SYS_CODE_003.getName());
-//            add(Constant.StringConstant.SYS_CODE_010.getName());
-//        }};
-//        JSONObject settingValues = getSetting(codes, user.getCpId());
+        return null;
+//        // 校验应用
+//        ResponseResultVO appVO = checkApp(userVo);
+//        if (appVO != null) {
+//            return appVO;
+//        }
+//        UserResponse user;
+//        // TODO CR 220516 登录时没有redis,登录后验证或api用户获取token时,才需要验证redis
+//        // 2022-05-21 周兴 暂时保留
 //
-//        // 系统参数中错误次数
-//        int times = settingValues.getInteger(Constant.StringConstant.SYS_CODE_002.getName());
-//        // 系统参数中锁定时长
-//        int lockHours = settingValues.getInteger(Constant.StringConstant.SYS_CODE_003.getName());
-//        // 密码有效期
-//        String pwdValidDate = settingValues.getString(Constant.StringConstant.SYS_CODE_010.getName());
-        // 查询用户锁定状态
-        UserLocked userLocked = userLockedMapper.selectById(user.getUserId());
-        if (userLocked == null) {
-            userLocked = new UserLocked().setUserId(user.getUserId()).setIsLocked(false).setMissCount(0);
-            //保存
-            userLockedMapper.insert(userLocked);
-        }
-        //查询登录状态
-        if (userLocked.getIsLocked()) {
-            //锁定中
-            // TODO CR 220516 锁定时间+系统参数锁定时长<当前时间才解锁,1、时间不对,2、判断方向返了
-            // 2022-05-21 周兴 已修改 TODO
-            Integer lockHours = 3;
-            // 锁定时间 + 系统参数中锁定时间 < 当前时间 解锁
-            if (userLocked.getLockedTime().plusHours(lockHours).compareTo(LocalDateTime.now()) < 0) {
-            } else {
-                return ResponseResultUtil.error(ErrorCodeEnum.USER_IS_LOCKED.getCode(), ErrorCodeEnum.USER_IS_LOCKED.getMessage());
-            }
-        }
-        if (userMapper.encodePassword(userVo.getUserPwd(), user.getUserId()).equals(user.getUserPwd())) {
-            //密码正确
-            //清除锁定信息
-            userLockedMapper.unLockUser(user.getUserId());
-            //查询到用户信息后将数据放到缓存中,缓存过期时间为30分钟
-            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
-                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
-        } else {
-            //密码错误
-            // 增加锁定次数
-            userLockedMapper.addMissCount(user.getUserId());
-            // 获取系统参数默认密码
-            Map<String, Object> param = new HashMap<>();
-            param.put("code", Constant.StringConstant.SYS_CODE_002.getName());
-            param.put("ftyId", user.getFtyId());
-            String sysValue = commonMapper.getSettingValue(param);
-            Integer times = Integer.parseInt(sysValue);
-            // 判断是否需要锁定用户
-            int returnRows = 0;
-            if (times != 0 && userLocked.getMissCount() + 1 > times) {
-                returnRows = userLockedMapper.lockUser(user.getUserId());
-            }
-            //清理redis
-            authUtils.cleanLoginUser(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
-                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode());
-            return returnRows == 0 ? ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage())
-                    : ResponseResultUtil.error(ErrorCodeEnum.USER_IS_LOCKED.getCode(), ErrorCodeEnum.USER_IS_LOCKED.getMessage());
-        }
-        return ResponseResultUtil.success(new JSONObject() {{
-            put("user", user);
-        }});
+//        //在缓存中查询登录的用户信息
+//        //如果缓存中不存在当前登录的用户信息
+//        // TODO CR 220516 redis还要加上app_uuid?共用token?token作为redis的key
+//        // 2022-05-21 周兴 redis key 修改为 USER-{token}-{userid}
+//
+//        // 判断工厂编码是否存在
+//        Long count = factoryMapper.selectByCode(new Factory().setFtyCode(userVo.getFtyCode()));
+//        if (count <= 0) {
+//            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
+//                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
+//            return ResponseResultUtil.error(ErrorCodeEnum.FTY_ERROR.getCode(), ErrorCodeEnum.FTY_ERROR.getMessage());
+//        }
+//        //根据用户编码查询数据库中的用户信息
+//        user = userMapper.selectByCode(userVo.getUserCode(), userVo.getFtyCode());
+//        //查询不到用户信息,在缓存中将此用户信息设置为空,过期时间为30秒(在此期间不会访问数据库)
+//        if (user == null) {
+//            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
+//                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
+//            return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage());
+//        }
+//        user.setAppCode(userVo.getAppCode());
+//        user.setFtyCode(userVo.getFtyCode());
+////        // 统一查询系统参数 TODO
+////        List<String> codes = new ArrayList<String>() {{
+////            add(Constant.StringConstant.SYS_CODE_002.getName());
+////            add(Constant.StringConstant.SYS_CODE_003.getName());
+////            add(Constant.StringConstant.SYS_CODE_010.getName());
+////        }};
+////        JSONObject settingValues = getSetting(codes, user.getCpId());
+////
+////        // 系统参数中错误次数
+////        int times = settingValues.getInteger(Constant.StringConstant.SYS_CODE_002.getName());
+////        // 系统参数中锁定时长
+////        int lockHours = settingValues.getInteger(Constant.StringConstant.SYS_CODE_003.getName());
+////        // 密码有效期
+////        String pwdValidDate = settingValues.getString(Constant.StringConstant.SYS_CODE_010.getName());
+//        // 查询用户锁定状态
+//        UserLocked userLocked = userLockedMapper.selectById(user.getUserId());
+//        if (userLocked == null) {
+//            userLocked = new UserLocked().setUserId(user.getUserId()).setIsLocked(false).setMissCount(0);
+//            //保存
+//            userLockedMapper.insert(userLocked);
+//        }
+//        //查询登录状态
+//        if (userLocked.getIsLocked()) {
+//            //锁定中
+//            // TODO CR 220516 锁定时间+系统参数锁定时长<当前时间才解锁,1、时间不对,2、判断方向返了
+//            // 2022-05-21 周兴 已修改 TODO
+//            Integer lockHours = 3;
+//            // 锁定时间 + 系统参数中锁定时间 < 当前时间 解锁
+//            if (userLocked.getLockedTime().plusHours(lockHours).compareTo(LocalDateTime.now()) < 0) {
+//            } else {
+//                return ResponseResultUtil.error(ErrorCodeEnum.USER_IS_LOCKED.getCode(), ErrorCodeEnum.USER_IS_LOCKED.getMessage());
+//            }
+//        }
+//        if (userMapper.encodePassword(userVo.getUserPwd(), user.getUserId()).equals(user.getUserPwd())) {
+//            //密码正确
+//            //清除锁定信息
+//            userLockedMapper.unLockUser(user.getUserId());
+//            //查询到用户信息后将数据放到缓存中,缓存过期时间为30分钟
+//            stringRedisTemplate.opsForValue().set(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
+//                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode(), "null", 30, TimeUnit.SECONDS);
+//        } else {
+//            //密码错误
+//            // 增加锁定次数
+//            userLockedMapper.addMissCount(user.getUserId());
+//            // 获取系统参数默认密码
+//            Map<String, Object> param = new HashMap<>();
+//            param.put("code", Constant.StringConstant.SYS_CODE_002.getName());
+//            param.put("ftyId", user.getFtyId());
+//            String sysValue = commonMapper.getSettingValue(param);
+//            Integer times = Integer.parseInt(sysValue);
+//            // 判断是否需要锁定用户
+//            int returnRows = 0;
+//            if (times != 0 && userLocked.getMissCount() + 1 > times) {
+//                returnRows = userLockedMapper.lockUser(user.getUserId());
+//            }
+//            //清理redis
+//            authUtils.cleanLoginUser(Constant.RedisConstant.REDIS_LOGIN.getName() + userVo.getFtyCode() + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getAppCode()
+//                    + Constant.StringConstant.SYSTEM_MAGIN_LINE.getName() + userVo.getUserCode());
+//            return returnRows == 0 ? ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage())
+//                    : ResponseResultUtil.error(ErrorCodeEnum.USER_IS_LOCKED.getCode(), ErrorCodeEnum.USER_IS_LOCKED.getMessage());
+//        }
+//        return ResponseResultUtil.success(new JSONObject() {{
+//            put("user", user);
+//        }});
     }
 
     /**
@@ -216,39 +218,40 @@ public class UserService extends BaseService<User> {
             rollbackFor = {Exception.class}
     )
     public ResponseResultVO loginAfterCheckPassword(UserResponse user, String accessToken) {
-        // 存Redis
-        authUtils.saveUser(new UserVO().setUserId(user.getUserId()).setUserType(user.getUserType()).setUserCode(user.getUserCode())
-                .setUserName(user.getUserName()).setClientId(user.getClientId()).setFtyId(user.getFtyId()).setOrgId(user.getOrgId())
-                .setStaffId(user.getStaffId()).setAppCode(user.getAppCode()).setFtyCode(user.getFtyCode()));
-        userMapper.updateUserLogin(
-                new UserVO().setUserId(user.getUserId())
-                        .setIsLogin(true).setTokenKey(accessToken)
-                        .setTokenInvalidTime(LocalDateTime.ofEpochSecond((System.currentTimeMillis() + OauthConstants.EXPIRES_IN) / 1000,
-                                0, ZoneOffset.ofHours(8)))
-        );
-        // 获取浏览器标识
-        UserAgent userAgent = UserAgent.parseUserAgentString(httpServletRequest.getHeader("User-Agent"));
-
-        //登录日志
-        userMapper.insertUserLoginLog(new UserLoginLog().setUserId(user.getUserId())
-                .setLoginType(Constant.IntegerConstant.LOG_LOGIN_LOGIN.getValue()).setClientIp(httpServletRequest.getRemoteAddr())
-                .setClientInfo(userAgent.toString()).setAppCode(user.getAppCode()));
-        opInfoMapper.setOpInfo(user.getAppCode(), String.valueOf(user.getUserId()), user.getLang());
-        // TODO 系统参数
-//        JSONObject settingValues = getSetting(codes, userVo.getCpId());
-        // 获取用户表格设置
-        Map userMap = new HashMap();
-        userMap.put("userId", user.getUserId());
-        userMap.put("appCode", user.getAppCode());
-
-        return ResponseResultUtil.success(new HashMap<String, Object>(16) {{
-            put("accessToken", accessToken);
-            put("user", user);
-            put("menu", commonMapper.getMenuByUser(user.getAppCode(), user.getUserId()));
-            put("function", (user.getRoleIds() != null && user.getRoleIds().indexOf(-1) >= 0)
-                    ? commonMapper.getUserFunctionAdmin(userMap) : commonMapper.getUserFunction(userMap));
-            put("userTableSetting", commonMapper.getUserTableInfo(userMap));
-        }});
+        return null;
+//        // 存Redis
+//        authUtils.saveUser(new UserVO().setUserId(user.getUserId()).setUserType(user.getUserType()).setUserCode(user.getUserCode())
+//                .setUserName(user.getUserName()).setClientId(user.getClientId()).setFtyId(user.getFtyId()).setOrgId(user.getOrgId())
+//                .setStaffId(user.getStaffId()).setAppCode(user.getAppCode()).setFtyCode(user.getFtyCode()));
+//        userMapper.updateUserLogin(
+//                new UserVO().setUserId(user.getUserId())
+//                        .setIsLogin(true).setTokenKey(accessToken)
+//                        .setTokenInvalidTime(LocalDateTime.ofEpochSecond((System.currentTimeMillis() + OauthConstants.EXPIRES_IN) / 1000,
+//                                0, ZoneOffset.ofHours(8)))
+//        );
+//        // 获取浏览器标识
+//        UserAgent userAgent = UserAgent.parseUserAgentString(httpServletRequest.getHeader("User-Agent"));
+//
+//        //登录日志
+//        userMapper.insertUserLoginLog(new UserLoginLog().setUserId(user.getUserId())
+//                .setLoginType(Constant.IntegerConstant.LOG_LOGIN_LOGIN.getValue()).setClientIp(httpServletRequest.getRemoteAddr())
+//                .setClientInfo(userAgent.toString()).setAppCode(user.getAppCode()));
+//        opInfoMapper.setOpInfo(user.getAppCode(), String.valueOf(user.getUserId()), user.getLang());
+//        // TODO 系统参数
+////        JSONObject settingValues = getSetting(codes, userVo.getCpId());
+//        // 获取用户表格设置
+//        Map userMap = new HashMap();
+//        userMap.put("userId", user.getUserId());
+//        userMap.put("appCode", user.getAppCode());
+//
+//        return ResponseResultUtil.success(new HashMap<String, Object>(16) {{
+//            put("accessToken", accessToken);
+//            put("user", user);
+//            put("menu", commonMapper.getMenuByUser(user.getAppCode(), user.getUserId()));
+//            put("function", (user.getRoleIds() != null && user.getRoleIds().indexOf(-1) >= 0)
+//                    ? commonMapper.getUserFunctionAdmin(userMap) : commonMapper.getUserFunction(userMap));
+//            put("userTableSetting", commonMapper.getUserTableInfo(userMap));
+//        }});
     }
 
     /**
@@ -262,21 +265,22 @@ public class UserService extends BaseService<User> {
     public ResponseResultVO logout() {
         // 获取浏览器标识
         UserAgent userAgent = UserAgent.parseUserAgentString(httpServletRequest.getHeader("User-Agent"));
-        UserVO u = authUtils.getUser();
+        StaffEntity staff = authUtils.getStaff();
         String appCode = JwtUtil.getAppCode(httpServletRequest);
-        Integer userId = u.getUserId();
-        // 用户
-        User user = super.selectObjectById(userId.toString());
-        //修改登录状态
-        userMapper.updateUserLogin(
-                new UserVO().setUserId(userId).setAppCode(u.getAppCode()).setIsLogin(false));
-        //记录登录日志
-        userMapper.insertUserLoginLog(new UserLoginLog().setUserId(user.getUserId())
-                .setLoginType(Constant.IntegerConstant.LOG_LOGIN_LOGOUT.getValue()).setClientIp(httpServletRequest.getRemoteAddr())
-                .setClientInfo(userAgent.toString()).setAppCode(u.getAppCode()));
+        String staffId = staff.getStaffId();
+        // todo
+//        // 用户
+//        User user = super.selectObjectById(userId.toString());
+//        //修改登录状态
+//        userMapper.updateUserLogin(
+//                new UserVO().setUserId(userId).setAppCode(u.getAppCode()).setIsLogin(false));
+//        //记录登录日志
+//        userMapper.insertUserLoginLog(new UserLoginLog().setUserId(user.getUserId())
+//                .setLoginType(Constant.IntegerConstant.LOG_LOGIN_LOGOUT.getValue()).setClientIp(httpServletRequest.getRemoteAddr())
+//                .setClientInfo(userAgent.toString()).setAppCode(u.getAppCode()));
         //清理redis
-        authUtils.cleanUser();
-        authUtils.cleanLoginUser();
+        authUtils.cleanStaff();
+        authUtils.cleanLoginStaff();
         return ResponseResultUtil.success();
     }
 
@@ -308,26 +312,28 @@ public class UserService extends BaseService<User> {
             rollbackFor = {Exception.class}
     )
     public ResponseResultVO updatePassword(UserVO userVO) {
-        // 用户
-        UserVO userVo = authUtils.getUser();
-        // 查询当前用户信息
-        UserResponse user = userMapper.selectUserWithPwdById(userVo.getUserId());
-
-        if (!user.getUserPwd().equals(userMapper.encodePassword(userVO.getPassword(), userVo.getUserId()))) {
-            // 旧密码错误
-            return ResponseResultUtil.error(ErrorCodeEnum.USER_PWD_ERROR.getCode(), ErrorCodeEnum.USER_PWD_ERROR.getMessage());
-        } else if (!userVO.getNewPassword().equals(userVO.getConfirmPassword())) {
-            // 确认密码不一致
-            return ResponseResultUtil.error(ErrorCodeEnum.USER_PWD_NEW_AND_CONFIRM_DIFFERENT.getCode(),
-                    ErrorCodeEnum.USER_PWD_NEW_AND_CONFIRM_DIFFERENT.getMessage());
-        }
-        // 修改密码
-        userMapper.updatePassword(new UserVO()
-                .setUserId(userVo.getUserId())
-                .setPwdDate(LocalDateTime.now())
-                .setFlgInitPwd(Boolean.FALSE)
-                .setUserPwd(userMapper.encodePassword(userVO.getNewPassword(), userVo.getUserId())));
-        return ResponseResultUtil.success();
+        // todo
+        return null ;
+//        // 用户
+//        UserVO userVo = authUtils.getUser();
+//        // 查询当前用户信息
+//        UserResponse user = userMapper.selectUserWithPwdById(userVo.getUserId());
+//
+//        if (!user.getUserPwd().equals(userMapper.encodePassword(userVO.getPassword(), userVo.getUserId()))) {
+//            // 旧密码错误
+//            return ResponseResultUtil.error(ErrorCodeEnum.USER_PWD_ERROR.getCode(), ErrorCodeEnum.USER_PWD_ERROR.getMessage());
+//        } else if (!userVO.getNewPassword().equals(userVO.getConfirmPassword())) {
+//            // 确认密码不一致
+//            return ResponseResultUtil.error(ErrorCodeEnum.USER_PWD_NEW_AND_CONFIRM_DIFFERENT.getCode(),
+//                    ErrorCodeEnum.USER_PWD_NEW_AND_CONFIRM_DIFFERENT.getMessage());
+//        }
+//        // 修改密码
+//        userMapper.updatePassword(new UserVO()
+//                .setUserId(userVo.getUserId())
+//                .setPwdDate(LocalDateTime.now())
+//                .setFlgInitPwd(Boolean.FALSE)
+//                .setUserPwd(userMapper.encodePassword(userVO.getNewPassword(), userVo.getUserId())));
+//        return ResponseResultUtil.success();
     }
     // endregion
 

+ 3 - 7
src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java

@@ -74,15 +74,11 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 	public ResponseResultVO<?> insert(MoneyAccountVO moneyAccountVO) {
 		// 转化实体
 		MoneyAccount moneyAccount = moneyAccountConvert.convertToPo(moneyAccountVO);
-		Integer displayNo = moneyAccountMapper.selectDisplayNo(new MoneyAccountQuery());
-		if (displayNo != null) {
-			//插入序号
-			moneyAccount.setDisplayNo(displayNo);
-		} else {
-			moneyAccount.setDisplayNo(0);
-		}
+		// 获取显示顺序
+		Integer displayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.MONEYACCOUNT);
 		// 获取编码和主键UuId
 		Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.MONEYACCOUNT.getName(),true);
+		moneyAccount.setDisplayNo(displayNo);
 		moneyAccount.setMacId(codeMap.get("outId").toString());
 		moneyAccount.setMacCode(codeMap.get("outNote").toString());
 		return super.insert(moneyAccount);

+ 5 - 0
src/main/java/com/dk/mdm/service/mst/StaffService.java

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mst.StaffConvert;
+import com.dk.mdm.infrastructure.util.AuthUtils;
 import com.dk.mdm.model.pojo.mst.*;
 import com.dk.mdm.mapper.mst.StaffMapper;
 import com.dk.common.service.BaseService;
@@ -64,6 +66,9 @@ public class StaffService extends BaseService<Staff> {
     @Autowired
     private CommonService commonService;
 
+    @Autowired
+    private AuthUtils authUtils;
+
     /**
      * @desc : 条件查询
      * @author : 姜永辉