consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
@@ -2,14 +2,16 @@
import cn.hutool.core.util.ReflectUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.consum.base.BaseController;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.FinSysTenantUserSearchParam;
import com.consum.base.pojo.FinSysTenantUserUpdParam;
import com.consum.base.pojo.ImportUserParam;
import com.consum.base.pojo.request.FinSysTenantUserParam;
import com.consum.base.pojo.response.DepartmentVO;
import com.consum.base.pojo.response.FinSysTenantUserVO;
import com.consum.base.pojo.response.FinSysTenantVO;
@@ -29,38 +31,22 @@
import com.iplatform.model.po.S_role;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.infrastructure.utils.PhoneNumberUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.infrastructure.utils.*;
import com.walker.web.ResponseValue;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*;
/**
 * @Description 系统用户
@@ -78,7 +64,6 @@
    private UserServiceImpl userService;
    private FinSysTenantServiceImpl finSysTenantService;
    private RoleServiceImpl roleService;
@@ -86,16 +71,14 @@
    @Autowired
    private FinSysTenantDepartmentService finSysTenantDepartmentService;
    @Autowired
    public void setUserService(UserServiceImpl userService) {
        this.userService = userService;
    }
    @Autowired
    public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService, FinSysTenantUserServiceImpl finSysTenantUserService,
        RoleServiceImpl roleService) {
    public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService,
        FinSysTenantUserServiceImpl finSysTenantUserService, RoleServiceImpl roleService) {
        this.finSysTenantUserService = finSysTenantUserService;
        this.finSysTenantService = finSysTenantService;
        this.roleService = roleService;
@@ -107,7 +90,11 @@
     * @Date 2023/7/11 13:59
     */
    @RequestMapping("/select/list")
    public ResponseValue allocatedList(FinSysTenantUserSearchParam param) {
    public ResponseValue allocatedList() {
        FinSysTenantUserSearchParam param = CommonUtil.getObjFromReq(FinSysTenantUserSearchParam.class);
        FinSysTenantUserSearchParam param2 = new FinSysTenantUserSearchParam();
        CommonUtil.copyProperties(param, param2);
        param = param2;
        if (param.getTenantCode() == 0) {
            FinSysTenantUser user = new FinSysTenantUser();
            Long id = this.getCurrentUser().getId();
@@ -153,7 +140,7 @@
                    finSysTenantUser.setRoleStr(roleStr);
                }
                //循环查询运维商id
                // 循环查询运维商id
                if (finSysTenantUser.getSupplierId() != null) {
                    finSysTenantUser.setIsSupplier("是");
                } else {
@@ -171,16 +158,15 @@
        try {
            Field fieldDatas = GenericPager.class.getDeclaredField("datas");
//            fieldDatas.setAccessible(true);
//            fieldDatas.set(pager, resultList);
            // fieldDatas.setAccessible(true);
            // fieldDatas.set(pager, resultList);
            ReflectUtil.setFieldValue(pager, fieldDatas, resultList);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("分页列表查询失败,原因:" + e);
        }
        return ResponseValue.success(pager);
    }
    @ApiOperation(value = "根据机构id查询用户", notes = "根据机构id查询用户")
    @ApiImplicitParam(name = "tenantId", value = "机构id", required = true, dataType = "Long", paramType = "query")
@@ -193,7 +179,6 @@
        return ResponseValue.success(result);
    }
    /**
     * @Description 新增
     * @Author wh
@@ -201,65 +186,73 @@
     */
    @PostMapping("/add")
    @Transactional(rollbackFor = Exception.class)
    public ResponseValue add(@RequestBody FinSysTenantUser user) {
        if (user == null) {
    public ResponseValue add() {
        FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class);
        FinSysTenantUser tenantUser = new FinSysTenantUser();
        CommonUtil.copyProperties(user, tenantUser);
        if (tenantUser == null) {
            return ResponseValue.error("参数为空");
        }
        //根据员工编号查询,如果存在则提示
        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
        // 根据员工编号查询,如果存在则提示
        if (finSysTenantUserService.getByUserCode(tenantUser.getUserCode()) != null
            && finSysTenantUserService.getByUserCode(tenantUser.getUserCode()) > 0) {
            return ResponseValue.error("员工编号重复");
        }
        if (user.getTenantId() == null || "".equals(user.getTenantId()) || new Integer(user.getTenantId()) == 0) {
        if (StringUtils.isEmpty(tenantUser.getTenantId()) || "0".equals(tenantUser.getTenantId())) {
            return ResponseValue.error("添加时请选择区县");
        }
        if (user.getTenantCode() == null || "".equals(user.getTenantCode()) || new Integer(user.getTenantCode()) == 0) {
        if (StringUtils.isEmpty(tenantUser.getTenantCode()) || "0".equals(tenantUser.getTenantCode())) {
            return ResponseValue.error("添加时请选择区县");
        }
        //插入系统用户
        user.setId(NumberGenerator.getLongSequenceNumber());
        user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        user.setCreateBy(this.getCurrentUser().getUser_name());
        user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        user.setUpdateBy(this.getCurrentUser().getUser_name());
        //user.setStatus(1);// 0禁用 1启用
        user.setIsDelete(0);
        user.setSysUserId(NumberGenerator.getLongSequenceNumber());
        // 插入系统用户
        tenantUser.setId(NumberGenerator.getLongSequenceNumber());
        tenantUser.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        tenantUser.setCreateBy(this.getCurrentUser().getUser_name());
        tenantUser.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        tenantUser.setUpdateBy(this.getCurrentUser().getUser_name());
        // user.setStatus(1);// 0禁用 1启用
        tenantUser.setIsDelete(0);
        tenantUser.setSysUserId(NumberGenerator.getLongSequenceNumber());
        // 加密手机号
        String key = PlatformRSAUtils.AES_KEY;
        String encPhone = "";
        if (user.getUserPhone() != null) {
            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
        if (tenantUser.getUserPhone() != null) {
            encPhone = AESUtils.encryptStrAES(tenantUser.getUserPhone(), key);
        }
        user.setUserPhone(encPhone);
        //怎么获取左侧机构树数据
        user.setSysDeptId(3L); //对应平台机构id  默认为平台管理
        this.finSysTenantUserService.insert(user);
        tenantUser.setUserPhone(encPhone);
        // 怎么获取左侧机构树数据
//        tenantUser.setSysDeptId(3L); // 对应平台机构id 默认为平台管理
        this.finSysTenantUserService.insert(tenantUser);
        // 插入平台用户
        S_user_core userCore = new S_user_core();
        userCore.setId(user.getSysUserId());
        userCore.setDept_id(3L); //部门id,目前写死
        userCore.setOrg_id(user.getSysDeptId()); //机构id
        userCore.setId(tenantUser.getSysUserId());
        userCore.setDept_id(3L); // 部门id,目前写死
        userCore.setOrg_id(tenantUser.getSysDeptId()); // 机构id
        userCore.setOrg_id(1L);
        userCore.setUser_name(user.getUserCode());  //用户账号
        userCore.setNick_name(user.getUserName());
        //用户类型 先默认设置为2
        userCore.setUser_name(tenantUser.getUserCode()); // 用户账号
        userCore.setNick_name(tenantUser.getUserName());
        // 用户类型 先默认设置为2
        userCore.setUser_type(2);
        userCore.setPhonenumber(encPhone);
        userCore.setSex(user.getSex().toString());
        //初始化密码 123456
        userCore.setSex(tenantUser.getSex().toString());
        // 初始化密码 123456
        String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
        userCore.setPassword(pws);
        // 平台用户表和系统用户 表状态相反
        if (user.getStatus() == 0) {
            user.setStatus(1);
        if (tenantUser.getStatus() == 0) {
            tenantUser.setStatus(1);
        } else {
            user.setStatus(0);
            tenantUser.setStatus(0);
        }
        userCore.setStatus(user.getStatus());
        userCore.setStatus(tenantUser.getStatus());
        userCore.setDel_flag(0);
        userCore.setCreate_by(this.getCurrentUser().getUser_name());
        userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        userCore.setRemark(user.getRemark());
        userCore.setRemark(tenantUser.getRemark());
        userCore.setType(1);
        userCore.setBind_client_id("0");
        userCore.setBind_wechat(0);
@@ -274,95 +267,20 @@
        userCore.setIs_logoff(0);
        userCore.setLogoff_time(0L);
        userCore.setIs_sms(0);
        //管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
        // 管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
        userCore.setType(1);
        //商户id,0-平台
        // 商户id,0-平台
        userCore.setMer_id(0L);
        this.userService.insert(userCore);
        // 插入平台机构
        //少角色id
        List<Long> roleList = user.getRoleList(); //机构id  多个
        // 少角色id
        List<Long> roleList = user.getRoleList(); // 机构id 多个
        if (!CollectionUtils.isEmpty(roleList)) {
            Long sysUserId = user.getSysUserId();    //用户id
            Long sysUserId = tenantUser.getSysUserId(); // 用户id
            this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
        }
//        this.getFinCustomerCache().remove();
        // this.getFinCustomerCache().remove();
        return ResponseValue.success(1);
    }
    public static class ImportUserParam {
        @ExcelProperty("用户姓名")
        private String userName;
        @ExcelProperty("用户编号")
        private String userCode;
        @ExcelProperty("手机号")
        private String userPhone;
        @ExcelProperty("性别(1男,2女)")
        private Integer sex;
        @ExcelProperty("电子邮箱")
        private String email;
        @ExcelProperty("顺序号")
        private Long seq;
        @ExcelProperty("角色名称")
        private String roleName;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getUserCode() {
            return userCode;
        }
        public void setUserCode(String userCode) {
            this.userCode = userCode;
        }
        public String getUserPhone() {
            return userPhone;
        }
        public void setUserPhone(String userPhone) {
            this.userPhone = userPhone;
        }
        public Integer getSex() {
            return sex;
        }
        public void setSex(Integer sex) {
            this.sex = sex;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Long getSeq() {
            return seq;
        }
        public void setSeq(Long seq) {
            this.seq = seq;
        }
        public String getRoleName() {
            return roleName;
        }
        public void setRoleName(String roleName) {
            this.roleName = roleName;
        }
    }
    /**
@@ -371,7 +289,8 @@
     * @Date 2023/10/12 15:56
     */
    @PostMapping("/import")
    public ResponseValue importUser(@RequestParam String tenantId, @RequestParam String tenantCode, MultipartFile file) throws IOException {
    public ResponseValue importUser(@RequestParam String tenantId, @RequestParam String tenantCode, MultipartFile file)
        throws IOException {
        String originalFilename = file.getOriginalFilename();
        if (!"xls".equals(originalFilename.substring(originalFilename.lastIndexOf(".") + 1))) {
            return ResponseValue.error("文件格式有误!");
@@ -391,11 +310,13 @@
        EasyExcel.read(file.getInputStream(), ImportUserParam.class, new AnalysisEventListener<ImportUserParam>() {
            @Override
            public void invoke(ImportUserParam data, AnalysisContext context) {
                if (StringUtils.isEmpty(data.getUserName()) || StringUtils.isEmpty(data.getUserCode()) || StringUtils.isEmpty(data.getUserPhone())
                    || null == data.getSex() || StringUtils.isEmpty(data.getEmail()) || null == data.getSeq() || StringUtils.isEmpty(data.getRoleName())) {
                if (StringUtils.isEmpty(data.getUserName()) || StringUtils.isEmpty(data.getUserCode())
                    || StringUtils.isEmpty(data.getUserPhone()) || null == data.getSex()
                    || StringUtils.isEmpty(data.getEmail()) || null == data.getSeq()
                    || StringUtils.isEmpty(data.getRoleName())) {
                    throw new ImportUserParamVerifyException("单元格不能为空!");
                }
                //根据员工编号查询,如果存在则提示
                // 根据员工编号查询,如果存在则提示
                if (finSysTenantUserService.getByUserCode(data.getUserCode()) > 0) {
                    throw new ImportUserParamVerifyException("员工编号为空或已存在!");
                }
@@ -411,8 +332,9 @@
                user.setSeq(data.getSeq());
                user.setTenantId(tenantId);
                user.setTenantCode(tenantCode);
                //设置角色
                Optional<S_role> sRole = roles.stream().filter(role -> role.getRole_name().equals(data.getRoleName())).findFirst();
                // 设置角色
                Optional<S_role> sRole =
                    roles.stream().filter(role -> role.getRole_name().equals(data.getRoleName())).findFirst();
                user.setRoleList(Arrays.asList(sRole.orElse(new S_role()).getRole_id()));
                user.setId(NumberGenerator.getLongSequenceNumber());
@@ -430,8 +352,8 @@
                user.setUserPhone(encPhone);
                user.setIsDelete(1);
                //怎么获取左侧机构树数据
                user.setSysDeptId(3L); //对应平台机构id  默认为平台管理
                // 怎么获取左侧机构树数据
                user.setSysDeptId(3L); // 对应平台机构id 默认为平台管理
                finSysTenantUsers.add(user);
            }
@@ -445,15 +367,17 @@
                if (exception != null) {
                    // 如果是某一个单元格的转换异常 能获取到具体行号 封装时异常
                    if (exception instanceof ExcelDataConvertException) {
                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
                        logger.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(), excelDataConvertException.getColumnIndex() + 1,
                        ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
                        logger.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex(),
                            excelDataConvertException.getColumnIndex() + 1,
                            excelDataConvertException.getCellData().getStringValue());
                        throw new IllegalStateException(
                            "第" + (excelDataConvertException.getRowIndex() + 1) + "行,第" + (excelDataConvertException.getColumnIndex() + 1) + "列解析异常,异常数据为:[ "
                                + excelDataConvertException.getCellData().getStringValue() + " ]");
                        throw new IllegalStateException("第" + (excelDataConvertException.getRowIndex() + 1) + "行,第"
                            + (excelDataConvertException.getColumnIndex() + 1) + "列解析异常,异常数据为:[ "
                            + excelDataConvertException.getCellData().getStringValue() + " ]");
                    }
                    if (exception instanceof ImportUserParamVerifyException) {
                        throw new IllegalStateException("第" + context.readSheetHolder().getRowIndex() + "行, 解析错误:[ " + exception.getMessage() + " ]");
                        throw new IllegalStateException("第" + context.readSheetHolder().getRowIndex() + "行, 解析错误:[ "
                            + exception.getMessage() + " ]");
                    }
                    throw exception;
                }
@@ -475,16 +399,16 @@
            // 插入平台用户
            S_user_core userCore = new S_user_core();
            userCore.setId(user.getSysUserId());
            userCore.setDept_id(3L); //部门id,目前写死
            userCore.setOrg_id(user.getSysDeptId()); //机构id
            userCore.setDept_id(3L); // 部门id,目前写死
            userCore.setOrg_id(user.getSysDeptId()); // 机构id
            userCore.setOrg_id(1L);
            userCore.setUser_name(user.getUserCode());  //用户账号
            userCore.setUser_name(user.getUserCode()); // 用户账号
            userCore.setNick_name(user.getUserName());
            //用户类型 先默认设置为2
            // 用户类型 先默认设置为2
            userCore.setUser_type(2);
            userCore.setPhonenumber(user.getUserPhone());
            userCore.setSex(user.getSex().toString());
            //初始化密码 123456
            // 初始化密码 123456
            String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
            userCore.setPassword(pws);
            // 平台用户表和系统用户 表状态相反
@@ -512,17 +436,17 @@
            userCore.setIs_logoff(0);
            userCore.setLogoff_time(0L);
            userCore.setIs_sms(0);
            //管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
            // 管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
            userCore.setType(1);
            //商户id,0-平台
            // 商户id,0-平台
            userCore.setMer_id(0L);
            sUserCores.add(userCore);
        }
        //保存用户信息
        // 保存用户信息
        this.finSysTenantUserService.insertBatch(finSysTenantUsers);
        //保存平台用户信息
        // 保存平台用户信息
        this.userService.insertBatch(sUserCores);
        //保存角色权限信息
        // 保存角色权限信息
        this.finSysTenantUserService.execInsertRoleUserList(finSysTenantUsers);
    }
@@ -537,7 +461,6 @@
        }
    }
    /**
     * @Description 编辑
     * @Author wh
@@ -545,19 +468,23 @@
     */
    @PostMapping("/update")
    @Transactional(rollbackFor = Exception.class)
    public ResponseValue update(@RequestBody FinSysTenantUser user) {
        if (user == null) {
    public ResponseValue update() {
        FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class);
        FinSysTenantUser tenantUser = new FinSysTenantUser();
        CommonUtil.copyProperties(user, tenantUser);
        if (tenantUser == null) {
            return ResponseValue.error("参数为空");
        }
        String key = PlatformRSAUtils.AES_KEY;
        String encPhone = "";
        if (user.getUserPhone() != null) {
            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
        if (tenantUser.getUserPhone() != null) {
            encPhone = AESUtils.encryptStrAES(tenantUser.getUserPhone(), key);
        }
        user.setUserPhone(encPhone);
        // 1.更新系统用户   FIN_SYS_TENANT_USER
        finSysTenantUserService.update(user);
        // 2.更新平台用户  S_USER_CORE
        tenantUser.setUserPhone(encPhone);
        // 1.更新系统用户 FIN_SYS_TENANT_USER
        finSysTenantUserService.update(tenantUser);
        // 2.更新平台用户 S_USER_CORE
        S_user_core userCore = new S_user_core();
        userCore.setId(user.getSysUserId());
        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -577,11 +504,11 @@
        // 加密手机号
        userCore.setPhonenumber(user.getUserPhone());
        this.userService.update(userCore);
        // 3. 更新角色配置  S_ROLE_USER
        // 1. 根据  user.getSysUserId() 查询
        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId());  //已有的权限
        List<Long> roleList = user.getRoleList(); //选择的权限
        //先删除再添加
        // 3. 更新角色配置 S_ROLE_USER
        // 1. 根据 user.getSysUserId() 查询
        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); // 已有的权限
        List<Long> roleList = user.getRoleList(); // 选择的权限
        // 先删除再添加
        if (list != null && list.size() > 0) {
            finSysTenantUserService.execDelRoleUserList(user.getSysUserId());
        }
@@ -599,19 +526,22 @@
     */
    @PostMapping("/updateStatus")
    @Transactional(rollbackFor = Exception.class)
    public ResponseValue updateStatus(@RequestBody FinSysTenantUser user) {
        if (user == null) {
    public ResponseValue updateStatus() {
        FinSysTenantUserParam user = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class);
        FinSysTenantUser tenantUser = new FinSysTenantUser();
        CommonUtil.copyProperties(user, tenantUser);
        if (tenantUser == null) {
            return ResponseValue.error("参数为空");
        }
        // 1.更新系统用户   FIN_SYS_TENANT_USER   应该是查询  然后只改状态
        List<FinSysTenantUser> select = finSysTenantUserService.select(new FinSysTenantUser(user.getId()));
        // 1.更新系统用户 FIN_SYS_TENANT_USER 应该是查询 然后只改状态
        List<FinSysTenantUser> select = finSysTenantUserService.select(new FinSysTenantUser(tenantUser.getId()));
        if (select == null || select.size() == 0) {
            return ResponseValue.error("用户不存在");
        }
        FinSysTenantUser finSysTenantUser = select.get(0);
        finSysTenantUser.setStatus(user.getStatus());
        finSysTenantUserService.update(finSysTenantUser);
        // 2.更新平台用户  S_USER_CORE
        // 2.更新平台用户 S_USER_CORE
        S_user_core userCore = new S_user_core();
        userCore.setId(user.getSysUserId());
        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -633,15 +563,20 @@
     * @Date 2023/7/17 14:36
     */
    @PostMapping("/defaultPassword")
    public ResponseValue defaultPassword(@RequestBody FinSysTenantUser finSysTenantUser) {
        if (finSysTenantUser == null) {
    public ResponseValue defaultPassword() {
        FinSysTenantUserParam user = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class);
        FinSysTenantUserParam tenantUser = new FinSysTenantUserParam();
        CommonUtil.copyProperties(user, tenantUser);
        user = tenantUser;
        if (Objects.isNull(user)) {
            return ResponseValue.error("用户信息不存在");
        }
        //初始化密码 123456
        // 初始化密码 123456
        String stringValue = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();// 密文
        // 1. 修改用户表
        //用户表id
        Long sysUserId = finSysTenantUser.getSysUserId();
        // 用户表id
        Long sysUserId = user.getSysUserId();
        S_user_core userCore = new S_user_core();
        userCore.setId(sysUserId);
        userCore.setPassword(stringValue);
@@ -696,21 +631,23 @@
            }
            // 查询 用户角色 TODO 临时解决 将来放配置文件中
            List<S_role> list = finSysTenantUserService.getByUserId(sysInfo.getSysUserId());  //已有的权限
            // 已有的权限
            List<S_role> list = finSysTenantUserService.getByUserId(sysInfo.getSysUserId());
            for (S_role s_role : list) {
                if (s_role.getRole_id() != null && s_role.getRole_id().equals(1690961420053L)) {
                    sysInfo.setKfStatus(1);
                }
            }
            // 查询父类的orgcode  需要将自己的org先查出来  再根据parentid 查父类
            // 查询父类的orgcode 需要将自己的org先查出来 再根据parentid 查父类
            String tenantId = sysInfo.getTenantId();
            if (tenantId != null && !tenantId.equals("")) {
                List<FinSysTenant> select = finSysTenantService.select(new FinSysTenant(Long.valueOf(tenantId)));
                if (select != null && select.size() > 0) {
                    FinSysTenant finSysTenant = select.get(0);
                    if (finSysTenant != null && finSysTenant.getParentId() != null) {
                        List<FinSysTenant> parents = finSysTenantService.select(new FinSysTenant(finSysTenant.getParentId()));
                        List<FinSysTenant> parents =
                            finSysTenantService.select(new FinSysTenant(finSysTenant.getParentId()));
                        if (parents != null && parents.size() > 0) {
                            sysInfo.setParentCode(parents.get(0).getCode());
                        }
@@ -722,22 +659,25 @@
        return ResponseValue.success(sysInfo);
    }
    /**
     * 更新角色权限
     *
     * @param user
     * @return
     */
    @PostMapping("/updRole")
    public ResponseValue updRole(@RequestBody FinSysTenantUser user) {
    public ResponseValue updRole() {
        FinSysTenantUser user = CommonUtil.getObjFromReqBody(FinSysTenantUser.class);
        FinSysTenantUser tenantUser = new FinSysTenantUser();
        CommonUtil.copyProperties(user, tenantUser);
        user = tenantUser;
        if (user == null) {
            return ResponseValue.error("参数为空");
        }
        // 1. 根据  user.getSysUserId() 查询
        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId());  //已有的权限
        List<Long> roleList = user.getRoleList(); //选择的权限
        //先删除再添加
        // 1. 根据 user.getSysUserId() 查询
        List<S_role> list = finSysTenantUserService.getByUserId(user.getSysUserId()); // 已有的权限
        List<Long> roleList = user.getRoleList(); // 选择的权限
        // 先删除再添加
        if (list != null && list.size() > 0) {
            finSysTenantUserService.execDelRoleUserList(user.getSysUserId());
        }
@@ -747,7 +687,6 @@
        return ResponseValue.success(1);
    }
    /**
     * @Description 新增
     * @Author llb
@@ -755,7 +694,11 @@
     */
    @PostMapping("/addSupplier")
    @Transactional(rollbackFor = Exception.class)
    public ResponseValue addSupplier(@RequestBody FinSysTenantUser user) {
    public ResponseValue addSupplier() {
        FinSysTenantUserParam userParam = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class);
        FinSysTenantUser user = new FinSysTenantUser();
        CommonUtil.copyProperties(userParam, user);
        if (user == null) {
            return ResponseValue.error("参数为空");
        }
@@ -764,12 +707,13 @@
        if (depts == null || depts.size() == 0) {
            return ResponseValue.error(roleName + "的角色不存在");
        }
        //根据员工编号查询,如果存在则提示
        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
        // 根据员工编号查询,如果存在则提示
        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null
            && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
            return ResponseValue.error("员工编号重复");
        }
        FinSysTenantUser sysInfo = this.getSysInfo();
        //插入系统用户
        // 插入系统用户
        user.setId(NumberGenerator.getLongSequenceNumber());
        user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        user.setCreateBy(this.getCurrentUser().getUser_name());
@@ -781,7 +725,7 @@
        user.setLv(sysInfo.getLv());
        user.setTenantCode(sysInfo.getTenantCode());
        user.setTenantId(sysInfo.getTenantId());
        user.setSysDeptId(2l); //运维管理
        user.setSysDeptId(2l); // 运维管理
        // 加密手机号
        String key = PlatformRSAUtils.AES_KEY;
        String userPhone = user.getUserPhone();
@@ -795,16 +739,16 @@
        // 插入平台用户
        S_user_core userCore = new S_user_core();
        userCore.setId(user.getSysUserId());
        userCore.setDept_id(depts.get(0).getId()); //部门
        userCore.setDept_id(depts.get(0).getId()); // 部门
        userCore.setOrg_id(1L);
        //userCore.setUser_name();  //用户账号
        userCore.setUser_name(user.getUserCode());  //用户账号
        // userCore.setUser_name(); //用户账号
        userCore.setUser_name(user.getUserCode()); // 用户账号
        userCore.setNick_name(user.getUserName());
        //用户类型 先默认设置为2
        // 用户类型 先默认设置为2
        userCore.setUser_type(2);
        userCore.setPhonenumber(userPhone);
        //初始化密码 123456
        // 初始化密码 123456
        String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
        userCore.setPassword(pws);
        if (user.getStatus() == 0) {
@@ -830,67 +774,73 @@
        userCore.setIs_logoff(0);
        userCore.setLogoff_time(0L);
        userCore.setIs_sms(0);
        //管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
        // 管理员类型:1= 平台超管, 2=商户超管, 3=系统管理员,4=商户管理员
        userCore.setType(2);
        //商户id,0-平台
        // 商户id,0-平台
        userCore.setMer_id(0L);
        this.userService.insert(userCore);
        // 插入平台机构
        //少角色id
        List<Long> roleList = user.getRoleList(); //机构id  多个
        Long sysUserId = user.getSysUserId();    //用户id
        // 少角色id
        List<Long> roleList = user.getRoleList(); // 机构id 多个
        Long sysUserId = user.getSysUserId(); // 用户id
        this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
        return ResponseValue.success(1);
    }
    private Set<String> picFormatArr = new HashSet<String>() {{
        add(".pjp");
        add(".svgz");
        add(".jxl");
        add(".jpeg");
        add(".ico");
        add(".avif");
        add(".tif");
        add(".gif");
        add(".jfif");
        add(".jpg");
        add(".svg");
        add(".png");
        add(".xbm");
        add(".pjpeg");
        add(".bmp");
        add(".webp");
    }};
    private Set<String> picFormatArr = new HashSet<String>() {
        {
            add(".pjp");
            add(".svgz");
            add(".jxl");
            add(".jpeg");
            add(".ico");
            add(".avif");
            add(".tif");
            add(".gif");
            add(".jfif");
            add(".jpg");
            add(".svg");
            add(".png");
            add(".xbm");
            add(".pjpeg");
            add(".bmp");
            add(".webp");
        }
    };
    @PostMapping("/updatePerson")
    @Transactional(rollbackFor = Exception.class)
    public ResponseValue updatePerson(@RequestBody FinSysTenantUser user) {
        if (user == null) {
    public ResponseValue updatePerson() {
        FinSysTenantUserParam userParam = CommonUtil.getObjFromReqBody(FinSysTenantUserParam.class);
        FinSysTenantUserParam tenantUser = new FinSysTenantUserParam();
        CommonUtil.copyProperties(userParam, tenantUser);
        userParam = tenantUser;
        if (userParam == null) {
            return ResponseValue.error("参数为空");
        }
        FinSysTenantUser sysInfo = getSysInfo();
        if (sysInfo == null) {
            return ResponseValue.error("用户信息不存在");
        }
        String avatar = user.getAvatar();
        String avatar = userParam.getAvatar();
        if (!picFormatArr.contains(avatar.substring(avatar.lastIndexOf(".")))) {
            return ResponseValue.error("头像格式不允许");
        }
        FinSysTenantUser updUser = new FinSysTenantUser();
        updUser.setId(sysInfo.getId());
        updUser.setAvatar(user.getAvatar());
        updUser.setEmail(user.getEmail());
        updUser.setUserName(user.getUserName());
        updUser.setSex(user.getSex());
        updUser.setAvatar(userParam.getAvatar());
        updUser.setEmail(userParam.getEmail());
        updUser.setUserName(userParam.getUserName());
        updUser.setSex(userParam.getSex());
        String encPhone = "";
        if (user.getUserPhone() != null) {
        if (userParam.getUserPhone() != null) {
            String key = PlatformRSAUtils.AES_KEY;
            encPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
            encPhone = AESUtils.encryptStrAES(userParam.getUserPhone(), key);
        }
        updUser.setUserPhone(encPhone);
        // 1.更新系统用户   FIN_SYS_TENANT_USER
        // 1.更新系统用户 FIN_SYS_TENANT_USER
        finSysTenantUserService.update(updUser);
        // 2.更新平台用户  S_USER_CORE
        // 2.更新平台用户 S_USER_CORE
        S_user_core userCore = new S_user_core();
        userCore.setId(sysInfo.getSysUserId());
        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
@@ -909,11 +859,16 @@
     * @Description 修改密码
     */
    @PostMapping("/updatePassword")
    public ResponseValue updatePassword(@RequestBody FinSysTenantUserUpdParam param) {
    public ResponseValue updatePassword() {
        FinSysTenantUserUpdParam param = CommonUtil.getObjFromReqBody(FinSysTenantUserUpdParam.class);
        FinSysTenantUserUpdParam finSysTenantParam = new FinSysTenantUserUpdParam();
        CommonUtil.copyProperties(param, finSysTenantParam);
        param = finSysTenantParam;
        String oldMixPd = param.getOldMixPd();
        String newMixPd = param.getNewMixPd();
        String btnMixPd = param.getBtnMixPd();
        //校验参数
        // 校验参数
        if (StringUtils.isEmpty(oldMixPd) || StringUtils.isEmpty(newMixPd) || StringUtils.isEmpty(btnMixPd)) {
            return ResponseValue.error("信息不能为空!");
        }
@@ -921,7 +876,7 @@
        if (sysInfo == null) {
            return ResponseValue.error("用户信息不存在");
        }
        //校验俩次输入的密码
        // 校验俩次输入的密码
        btnMixPd = PlatformRSAUtils.getRsaDecryptValue(btnMixPd, PlatformRSAUtils.PRIK);
        newMixPd = PlatformRSAUtils.getRsaDecryptValue(newMixPd, PlatformRSAUtils.PRIK);
        if (!newMixPd.equals(btnMixPd)) {
@@ -935,7 +890,7 @@
        if (validatePasswordRule != null) {
            return ResponseValue.error(validatePasswordRule);
        }
        //用户表id
        // 用户表id
        Long sysUserId = sysInfo.getSysUserId();
        S_user_core queryU = new S_user_core();
        queryU.setId(sysUserId);
@@ -944,14 +899,14 @@
            return ResponseValue.error("用户信息不存在");
        }
        oldMixPd = PlatformRSAUtils.getRsaDecryptValue(oldMixPd, PlatformRSAUtils.PRIK);
        //校验老密码
        // 校验老密码
        if (!this.matchesPassword(oldMixPd, queryUserInfo.getPassword())) {
            return ResponseValue.error("旧密码输入有误!");
        }
        if (oldMixPd.equalsIgnoreCase(btnMixPd)) {
            return ResponseValue.error("新密码不能与旧密码相同!");
        }
        //更新数据库
        // 更新数据库
        // 1. 修改用户表
        queryU.setPassword(this.encryptPassword(btnMixPd));
        queryU.setModify_pwd(1);
@@ -962,8 +917,7 @@
    @ApiOperation(value = "根据机构id查询部门中的用户", notes = "根据机构id查询部门中的用户")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "agencyId", value = "机构id", required = true, dataType = "Long", paramType = "query")
    })
        @ApiImplicitParam(name = "agencyId", value = "机构id", required = true, dataType = "Long", paramType = "query")})
    @GetMapping("/select/department")
    public ResponseValue selectDepartment(Long agencyId) {
        FinSysTenantVO finSysTenantVO = new FinSysTenantVO();
@@ -977,18 +931,18 @@
        // 部门
        FinSysTenantDepartment finSysTenantDepartment = new FinSysTenantDepartment();
        finSysTenantDepartment.setTenantId(agencyId);
        List<FinSysTenantDepartment> tenantDepartmentList = finSysTenantDepartmentService.select(finSysTenantDepartment);
        List<FinSysTenantDepartment> tenantDepartmentList =
            finSysTenantDepartmentService.select(finSysTenantDepartment);
        List<DepartmentVO> departmentVOList = Lists.newArrayList();
        tenantDepartmentList.forEach(department -> {
            DepartmentVO departmentVO = new DepartmentVO();
            //用户
            // 用户
            Long id = department.getId();
            departmentVO.setId(id);
            departmentVO.setName(department.getName());
            departmentVO.setType("department");
            String sql = "SELECT SYS_USER_ID,USER_NAME FROM "
                + "fin_sys_tenant_user "
            String sql = "SELECT SYS_USER_ID,USER_NAME FROM " + "fin_sys_tenant_user "
                + "WHERE SYS_DEPT_ID =:deptId AND SYS_USER_ID NOT IN(SELECT MANAGER_ID FROM base_warehouse_manager)";
            Map<String, Object> param = new HashMap<>();
            param.put("deptId", id);
@@ -996,7 +950,7 @@
            List<UserVO> userVOList = Lists.newArrayList();
            select.forEach(user -> {
                UserVO userVO = new UserVO();
                userVO.setId((Long) user.get("sysUserId"));
                userVO.setId((Long)user.get("sysUserId"));
                userVO.setName(user.get("userName").toString());
                userVO.setType("user");
                userVOList.add(userVO);
@@ -1008,6 +962,5 @@
        return ResponseValue.success(finSysTenantVO);
    }
}