From d2048c247c446be08598abf8e1bc11a4ea77be32 Mon Sep 17 00:00:00 2001
From: luqingyang <lqy5492@163.com>
Date: 星期三, 25 十月 2023 16:41:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java |  878 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 878 insertions(+), 0 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
new file mode 100644
index 0000000..a3f305f
--- /dev/null
+++ b/consum-base/src/main/java/com/consum/base/controller/FinSysTenantUserController.java
@@ -0,0 +1,878 @@
+package com.consum.base.controller;
+
+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.pojo.FinSysTenantUserSearchParam;
+import com.consum.base.pojo.FinSysTenantUserUpdParam;
+import com.consum.base.service.FinSysTenantServiceImpl;
+import com.consum.base.service.FinSysTenantUserServiceImpl;
+import com.consum.model.po.FinSysTenant;
+import com.consum.model.po.FinSysTenantUser;
+import com.iplatform.base.ArgumentsConstants;
+import com.iplatform.base.service.DeptServiceImpl;
+import com.iplatform.base.service.RoleServiceImpl;
+import com.iplatform.base.service.UserServiceImpl;
+import com.iplatform.base.util.PlatformRSAUtils;
+import com.iplatform.core.util.AESUtils;
+import com.iplatform.model.po.S_config;
+import com.iplatform.model.po.S_dept;
+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.*;
+import com.walker.web.ResponseValue;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @Description 绯荤粺鐢ㄦ埛
+ * @Author wh
+ * @Date 2023/7/17 14:16
+ */
+@RestController
+@RequestMapping("/pc/fin/sys/tenant/user")
+public class FinSysTenantUserController extends BaseController {
+
+    private String roleName;
+
+    private FinSysTenantUserServiceImpl finSysTenantUserService;
+
+    private UserServiceImpl userService;
+
+    private DeptServiceImpl deptService;
+
+    private FinSysTenantServiceImpl finSysTenantService;
+
+    private RoleServiceImpl roleService;
+
+
+    @Autowired
+    public void setUserService(UserServiceImpl userService) {
+        this.userService = userService;
+    }
+
+    private S_config sConfig;
+
+    @Autowired
+    public FinSysTenantUserController(FinSysTenantServiceImpl finSysTenantService, FinSysTenantUserServiceImpl finSysTenantUserService, RoleServiceImpl roleService) {
+        this.finSysTenantUserService = finSysTenantUserService;
+        this.finSysTenantService = finSysTenantService;
+        this.roleService = roleService;
+    }
+
+    /**
+     * @Description 鍒嗛〉鍒楄〃鏌ヨ
+     * @Author wh
+     * @Date 2023/7/11 13:59
+     */
+    @RequestMapping("/select/list")
+    public ResponseValue allocatedList(FinSysTenantUserSearchParam param) {
+        if (param.getTenantCode() == 0) {
+            FinSysTenantUser user = new FinSysTenantUser();
+            Long id = this.getCurrentUser().getId();
+            user.setSysUserId(id);
+            List<FinSysTenantUser> select = finSysTenantUserService.select(user);
+            if (select.size() > 0) {
+                param.setTenantCode(new Long(select.get(0).getTenantCode()));
+            }
+        }
+        GenericPager<FinSysTenantUser> pager = this.finSysTenantUserService.queryAllPageUser(param);
+
+        List<FinSysTenantUser> datas = pager.getDatas();
+        if (datas.size() > 0) {
+            for (FinSysTenantUser finSysTenantUser : datas) {
+                if (finSysTenantUser.getUserPhone() != null) {
+                    // 瑙e瘑骞惰劚鏁�
+                    String tel = null;
+                    try {
+                        tel = AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY);
+                    } catch (Exception e) {
+                        logger.error("瑙e瘑鎵嬫満鍙峰け璐ワ紝鍘熷洜锛�" + e);
+                        tel = null;
+                    }
+                    if (StringUtils.isNotEmpty(tel)) {
+                        finSysTenantUser.setUserPhone(PhoneNumberUtils.maskMobile(tel));
+                    } else {
+                        finSysTenantUser.setUserPhone("");
+                    }
+                } else {
+                    finSysTenantUser.setUserPhone("");
+                }
+
+                // 寰幆鍘绘煡瑙掕壊
+                Long sysUserId = finSysTenantUser.getSysUserId();
+                if (sysUserId != null) {
+                    List<S_role> list = finSysTenantUserService.getByUserId(sysUserId);
+                    String roleStr = "";
+                    for (S_role s_role : list) {
+                        roleStr = roleStr + s_role.getRole_name() + "  ";
+                    }
+                    finSysTenantUser.setRoleStr(roleStr);
+                }
+
+                //寰幆鏌ヨ杩愮淮鍟唅d
+                if (finSysTenantUser.getSupplierId() != null) {
+                    finSysTenantUser.setIsSupplier("鏄�");
+                } else {
+                    finSysTenantUser.setIsSupplier("鍚�");
+                }
+            }
+        }
+        return ResponseValue.success(pager);
+    }
+
+
+    /**
+     * @Description 鏂板
+     * @Author wh
+     * @Date 2023/7/17 15:56
+     */
+    @PostMapping("/add")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseValue add(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+        if (finSysTenantUserService.getByUserCode(user.getUserCode()) != null && finSysTenantUserService.getByUserCode(user.getUserCode()) > 0) {
+            return ResponseValue.error("鍛樺伐缂栧彿閲嶅");
+        }
+        if (user.getTenantId() == null || "".equals(user.getTenantId()) || new Integer(user.getTenantId()) == 0) {
+            return ResponseValue.error("娣诲姞鏃惰閫夋嫨鍖哄幙");
+        }
+        if (user.getTenantCode() == null || "".equals(user.getTenantCode()) || new Integer(user.getTenantCode()) == 0) {
+            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);// 鏄惁鍒犻櫎 0鏄� 1鍚�
+        user.setSysUserId(NumberGenerator.getLongSequenceNumber());
+        // 鍔犲瘑鎵嬫満鍙�
+        String key = PlatformRSAUtils.AES_KEY;
+        String pwdPhone = "";
+        if (user.getUserPhone() != null) {
+            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+        }
+        user.setUserPhone(pwdPhone);
+        user.setIsDelete(1);
+        //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
+        user.setSysDeptId(3L); //瀵瑰簲骞冲彴鏈烘瀯id  榛樿涓哄钩鍙扮鐞�
+        this.finSysTenantUserService.insert(user);
+        // 鎻掑叆骞冲彴鐢ㄦ埛
+        S_user_core userCore = new S_user_core();
+        userCore.setId(user.getSysUserId());
+        userCore.setDept_id(3L); //閮ㄩ棬id锛岀洰鍓嶅啓姝�
+        userCore.setOrg_id(user.getSysDeptId()); //鏈烘瀯id
+        userCore.setOrg_id(1L);
+        userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+        userCore.setNick_name(user.getUserName());
+        //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+        userCore.setUser_type(2);
+        userCore.setPhonenumber(pwdPhone);
+        userCore.setSex(user.getSex().toString());
+        //鍒濆鍖栧瘑鐮� 123456
+        String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
+        userCore.setPassword(pws);
+        // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
+        if (user.getStatus() == 0) {
+            user.setStatus(1);
+        } else {
+            user.setStatus(0);
+        }
+        userCore.setStatus(user.getStatus());
+        userCore.setDel_flag(0);
+        userCore.setCreate_by(this.getCurrentUser().getUser_name());
+        userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        userCore.setRemark(user.getRemark());
+        userCore.setType(1);
+        userCore.setBind_client_id("0");
+        userCore.setBind_wechat(0);
+        userCore.setModify_pwd(0);
+        userCore.setBind_mobile(0);
+        userCore.setBind_mail(0);
+        userCore.setProfile_id(0L);
+        userCore.setIs_wechat_public(0);
+        userCore.setIs_wechat_routine(0);
+        userCore.setIs_wechat_ios(0);
+        userCore.setIs_wechat_android(0);
+        userCore.setIs_logoff(0);
+        userCore.setLogoff_time(0L);
+        userCore.setIs_sms(0);
+        //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+        userCore.setType(1);
+        //鍟嗘埛id锛�0-骞冲彴
+        userCore.setMer_id(0L);
+        this.userService.insert(userCore);
+        // 鎻掑叆骞冲彴鏈烘瀯
+        //灏戣鑹瞚d
+        List<Long> roleList = user.getRoleList(); //鏈烘瀯id  澶氫釜
+        if (!CollectionUtils.isEmpty(roleList)) {
+            Long sysUserId = user.getSysUserId();    //鐢ㄦ埛id
+            this.finSysTenantUserService.execInsertRoleUserList(roleList, sysUserId);
+        }
+//        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;
+        }
+    }
+
+    /**
+     * @Description 鎵归噺瀵煎叆鐢ㄦ埛
+     * @Author jlq
+     * @Date 2023/10/12 15:56
+     */
+    @PostMapping("/import")
+    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("鏂囦欢鏍煎紡鏈夎!");
+        }
+        S_user_core currentUser = this.getCurrentUser();
+        if (currentUser==null){
+            return ResponseValue.error("褰撳墠鐧诲綍鐢ㄦ埛涓虹┖");
+        }
+
+        if (StringUtils.isEmpty(tenantId)||StringUtils.isEmpty(tenantCode)){
+            return ResponseValue.error("娣诲姞鏃惰閫夋嫨鍖哄幙");
+        }
+
+        List<S_role> roles = this.roleService.select(new S_role());
+        ArrayList<FinSysTenantUser> finSysTenantUsers = new ArrayList<>();
+
+        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())){
+                    throw new ImportUserParamVerifyException("鍗曞厓鏍间笉鑳戒负绌�!");
+                }
+                //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+                if ( finSysTenantUserService.getByUserCode(data.getUserCode()) > 0) {
+                    throw new ImportUserParamVerifyException("鍛樺伐缂栧彿涓虹┖鎴栧凡瀛樺湪!");
+                }
+                if (data.getSex()<1&&data.getSex()>0){
+                    throw new ImportUserParamVerifyException("鎬у埆鐮佸彧鑳戒负 0 鎴� 1");
+                }
+                FinSysTenantUser user = new FinSysTenantUser();
+                user.setUserName(data.getUserName());
+                user.setUserCode(data.getUserCode());
+                user.setUserPhone(data.getUserPhone());
+                user.setSex(data.getSex());
+                user.setEmail(data.getEmail());
+                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();
+                user.setRoleList(Arrays.asList(sRole.orElse(new S_role()).getRole_id()));
+
+                user.setId(NumberGenerator.getLongSequenceNumber());
+                user.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+                user.setCreateBy(currentUser.getUser_name());
+                user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+                user.setUpdateBy(currentUser.getUser_name());
+                user.setStatus(1);// 0绂佺敤 1鍚敤
+                user.setIsDelete(0);// 鏄惁鍒犻櫎 0鏄� 1鍚�
+                user.setSysUserId(NumberGenerator.getLongSequenceNumber());
+                user.setRemark("鎵归噺瀵煎叆");
+                // 鍔犲瘑鎵嬫満鍙�
+                String key = PlatformRSAUtils.AES_KEY;
+                String pwdPhone = AESUtils.encryptStrAES(data.getUserPhone(), key);
+                user.setUserPhone(pwdPhone);
+
+                user.setIsDelete(1);
+                //鎬庝箞鑾峰彇宸︿晶鏈烘瀯鏍戞暟鎹�
+                user.setSysDeptId(3L); //瀵瑰簲骞冲彴鏈烘瀯id  榛樿涓哄钩鍙扮鐞�
+                finSysTenantUsers.add(user);
+            }
+            @Override
+            public void doAfterAllAnalysed(AnalysisContext context) {
+
+            }
+            @Override
+            public void onException(Exception exception, AnalysisContext context) throws Exception {
+                if (exception!=null){
+                    // 濡傛灉鏄煇涓�涓崟鍏冩牸鐨勮浆鎹㈠紓甯� 鑳借幏鍙栧埌鍏蜂綋琛屽彿 灏佽鏃跺紓甯�
+                    if (exception instanceof ExcelDataConvertException) {
+                        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()+" ]");
+                    }
+                    if (exception instanceof ImportUserParamVerifyException){
+                        throw new IllegalStateException("绗�"+context.readSheetHolder().getRowIndex()+"琛�, 瑙f瀽閿欒:[ "+ exception.getMessage()+" ]");
+                    }
+                    throw exception;
+                }
+            }
+        }).sheet().doRead();
+
+        insertUserAndUserCoreBatch(finSysTenantUsers);
+
+        return ResponseValue.success();
+    }
+
+    /**
+     * 鎵归噺鎻掑叆鐢ㄦ埛琛ㄥ拰骞冲彴鐢ㄦ埛琛�
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void insertUserAndUserCoreBatch(List<FinSysTenantUser> finSysTenantUsers){
+        ArrayList<S_user_core> sUserCores = new ArrayList<>();
+        for (FinSysTenantUser user : finSysTenantUsers) {
+            // 鎻掑叆骞冲彴鐢ㄦ埛
+            S_user_core userCore = new S_user_core();
+            userCore.setId(user.getSysUserId());
+            userCore.setDept_id(3L); //閮ㄩ棬id锛岀洰鍓嶅啓姝�
+            userCore.setOrg_id(user.getSysDeptId()); //鏈烘瀯id
+            userCore.setOrg_id(1L);
+            userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+            userCore.setNick_name(user.getUserName());
+            //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+            userCore.setUser_type(2);
+            userCore.setPhonenumber(user.getUserPhone());
+            userCore.setSex(user.getSex().toString());
+            //鍒濆鍖栧瘑鐮� 123456
+            String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
+            userCore.setPassword(pws);
+            // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
+            if (user.getStatus() == 0) {
+                user.setStatus(1);
+            } else {
+                user.setStatus(0);
+            }
+            userCore.setStatus(user.getStatus());
+            userCore.setDel_flag(0);
+            userCore.setCreate_by(this.getCurrentUser().getUser_name());
+            userCore.setCreate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+            userCore.setRemark(user.getRemark());
+            userCore.setType(1);
+            userCore.setBind_client_id("0");
+            userCore.setBind_wechat(0);
+            userCore.setModify_pwd(0);
+            userCore.setBind_mobile(0);
+            userCore.setBind_mail(0);
+            userCore.setProfile_id(0L);
+            userCore.setIs_wechat_public(0);
+            userCore.setIs_wechat_routine(0);
+            userCore.setIs_wechat_ios(0);
+            userCore.setIs_wechat_android(0);
+            userCore.setIs_logoff(0);
+            userCore.setLogoff_time(0L);
+            userCore.setIs_sms(0);
+            //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+            userCore.setType(1);
+            //鍟嗘埛id锛�0-骞冲彴
+            userCore.setMer_id(0L);
+            sUserCores.add(userCore);
+        }
+        //淇濆瓨鐢ㄦ埛淇℃伅
+        this.finSysTenantUserService.insertBatch(finSysTenantUsers);
+        //淇濆瓨骞冲彴鐢ㄦ埛淇℃伅
+        this.userService.insertBatch(sUserCores);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        this.finSysTenantUserService.execInsertRoleUserList(finSysTenantUsers);
+    }
+
+    public static class ImportUserParamVerifyException extends RuntimeException{
+        public ImportUserParamVerifyException(){super();}
+        public ImportUserParamVerifyException(String message){super(message);}
+    }
+
+
+    /**
+     * @Description 缂栬緫
+     * @Author wh
+     * @Date 2023/7/17 14:33
+     */
+    @PostMapping("/update")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseValue update(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        String key = PlatformRSAUtils.AES_KEY;
+        String pwdPhone = "";
+        if (user.getUserPhone() != null) {
+            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+        }
+        user.setUserPhone(pwdPhone);
+        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
+        finSysTenantUserService.update(user);
+        // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
+        S_user_core userCore = new S_user_core();
+        userCore.setId(user.getSysUserId());
+        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
+        userCore.setUpdate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
+        if (user.getStatus() == 0) {
+            user.setStatus(1);
+        } else {
+            user.setStatus(0);
+        }
+        userCore.setStatus(user.getStatus());
+        if (user.getSex() != null) {
+            userCore.setSex(user.getSex().toString());
+        }
+        userCore.setRemark(user.getRemark());
+        userCore.setNick_name(user.getUserName());
+        // 鍔犲瘑鎵嬫満鍙�
+        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(); //閫夋嫨鐨勬潈闄�
+        //鍏堝垹闄ゅ啀娣诲姞
+        if (list != null && list.size() > 0) {
+            finSysTenantUserService.execDelRoleUserList(user.getSysUserId());
+        }
+        if (roleList != null && roleList.size() > 0) {
+            finSysTenantUserService.execInsertRoleUserList(roleList, user.getSysUserId());
+        }
+        this.getFinSysTenantUserCache().remove(user.getSysUserId() + "");
+        return ResponseValue.success(1);
+    }
+
+    /**
+     * @Description 鐘舵�佷慨鏀�/閫昏緫鍒犻櫎
+     * @Author wh
+     * @Date 2023/7/17 14:35
+     */
+    @PostMapping("/updateStatus")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseValue updateStatus(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER   搴旇鏄煡璇�  鐒跺悗鍙敼鐘舵��
+        List<FinSysTenantUser> select = finSysTenantUserService.select(new FinSysTenantUser(user.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
+        S_user_core userCore = new S_user_core();
+        userCore.setId(user.getSysUserId());
+        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
+        userCore.setUpdate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        // 骞冲彴鐢ㄦ埛琛ㄥ拰绯荤粺鐢ㄦ埛 琛ㄧ姸鎬佺浉鍙�
+        if (user.getStatus() == 0) {
+            user.setStatus(1);
+        } else {
+            user.setStatus(0);
+        }
+        userCore.setStatus(user.getStatus());
+        this.userService.update(userCore);
+        return ResponseValue.success(1);
+    }
+
+    /**
+     * @Description 瀵嗙爜鍒濆鍖�
+     * @Author wh
+     * @Date 2023/7/17 14:36
+     */
+    @PostMapping("/defaultPassword")
+    public ResponseValue defaultPassword(@RequestBody FinSysTenantUser finSysTenantUser) {
+        if (finSysTenantUser == null) {
+            return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        //鍒濆鍖栧瘑鐮� 123456
+        String stringValue = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();// 瀵嗘枃
+        // 1. 淇敼鐢ㄦ埛琛�
+        //鐢ㄦ埛琛╥d
+        Long sysUserId = finSysTenantUser.getSysUserId();
+        S_user_core userCore = new S_user_core();
+        userCore.setId(sysUserId);
+        userCore.setPassword(stringValue);
+        userCore.setModify_pwd(0);
+        userService.update(userCore);
+        // 2. 淇敼骞冲彴鐢ㄦ埛锛堜笉鐢ㄤ慨鏀癸級
+        return ResponseValue.success(1);
+    }
+
+    /**
+     * @Description 鏍规嵁id鑾峰彇鐢ㄦ埛淇℃伅
+     * @Author wh
+     * @Date 2023/7/17 14:38
+     */
+    @GetMapping("/detail")
+    public ResponseValue detail(Long id) {
+        if (id == null || id.longValue() <= 0) {
+            return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+
+        FinSysTenantUser finSysTenantUser = this.finSysTenantUserService.get(new FinSysTenantUser(id));
+        if (finSysTenantUser == null) {
+            return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        String s = AESUtils.decryptStrAES(finSysTenantUser.getUserPhone(), PlatformRSAUtils.AES_KEY);
+
+        finSysTenantUser.setUserPhone(s);
+        Long sysUserId = finSysTenantUser.getSysUserId();
+        List<S_role> list = finSysTenantUserService.getByUserId(sysUserId);
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("list", list);
+        map.put("data", finSysTenantUser);
+        return ResponseValue.success(map);
+    }
+
+    /**
+     * 寰楀埌 褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭�
+     * 澧炲姞 鐖剁被鏈烘瀯鐨刢ode
+     *
+     * @param
+     * @return
+     */
+    @GetMapping("/getCurInfo")
+    public ResponseValue getCurInfo() {
+
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo != null || sysInfo.getLv() > 0) {
+            // 瑙e瘑鎵嬫満鍙�
+            String key = PlatformRSAUtils.AES_KEY;
+            String userPhone = sysInfo.getUserPhone();
+            if (userPhone != null) {
+                sysInfo.setUserPhone(AESUtils.decryptStrAES(userPhone, key));
+            }
+
+            // 鏌ヨ 鐢ㄦ埛瑙掕壊 TODO 涓存椂瑙e喅 灏嗘潵鏀鹃厤缃枃浠朵腑
+            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);
+                }
+            }
+
+            // 鏌ヨ鐖剁被鐨刼rgcode  闇�瑕佸皢鑷繁鐨刼rg鍏堟煡鍑烘潵  鍐嶆牴鎹畃arentid 鏌ョ埗绫�
+            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()));
+                        if (parents != null && parents.size() > 0) {
+                            sysInfo.setParentCode(parents.get(0).getCode());
+                        }
+                    }
+
+                }
+            }
+        }
+        return ResponseValue.success(sysInfo);
+    }
+
+
+    /**
+     * 鏇存柊瑙掕壊鏉冮檺
+     *
+     * @param user
+     * @return
+     */
+    @PostMapping("/updRole")
+    public ResponseValue updRole(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        // 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());
+        }
+        if (roleList != null && roleList.size() > 0) {
+            finSysTenantUserService.execInsertRoleUserList(roleList, user.getSysUserId());
+        }
+        return ResponseValue.success(1);
+    }
+
+
+    /**
+     * @Description 鏂板
+     * @Author llb
+     * @Date 2023/7/17 15:56
+     */
+    @PostMapping("/addSupplier")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseValue addSupplier(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        // 鑾峰彇杩愮淮绠$悊
+        List<S_dept> depts = this.finSysTenantUserService.selectDept(roleName);
+        if (depts == null || depts.size() == 0) {
+            return ResponseValue.error(roleName + "鐨勮鑹蹭笉瀛樺湪");
+        }
+        //鏍规嵁鍛樺伐缂栧彿鏌ヨ锛屽鏋滃瓨鍦ㄥ垯鎻愮ず
+        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());
+        user.setUpdateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        user.setUpdateBy(this.getCurrentUser().getUser_name());
+        user.setIsDelete(0);// 鏄惁鍒犻櫎 0鏄� 1鍚�
+        user.setSysUserId(NumberGenerator.getLongSequenceNumber());
+        user.setIsDelete(1);
+        user.setLv(sysInfo.getLv());
+        user.setTenantCode(sysInfo.getTenantCode());
+        user.setTenantId(sysInfo.getTenantId());
+        user.setSysDeptId(2l); //杩愮淮绠$悊
+        // 鍔犲瘑鎵嬫満鍙�
+        String key = PlatformRSAUtils.AES_KEY;
+        String userPhone = user.getUserPhone();
+        String pwdPhone = "";
+        if (userPhone != null) {
+            pwdPhone = AESUtils.encryptStrAES(userPhone, key);
+            user.setUserPhone(pwdPhone);
+        }
+
+        this.finSysTenantUserService.insert(user);
+        // 鎻掑叆骞冲彴鐢ㄦ埛
+        S_user_core userCore = new S_user_core();
+        userCore.setId(user.getSysUserId());
+        userCore.setDept_id(depts.get(0).getId()); //閮ㄩ棬
+        userCore.setOrg_id(1L);
+        //userCore.setUser_name();  //鐢ㄦ埛璐﹀彿
+        userCore.setUser_name(user.getUserCode());  //鐢ㄦ埛璐﹀彿
+        userCore.setNick_name(user.getUserName());
+        //鐢ㄦ埛绫诲瀷 鍏堥粯璁よ缃负2
+        userCore.setUser_type(2);
+
+        userCore.setPhonenumber(userPhone);
+        //鍒濆鍖栧瘑鐮� 123456
+        String pws = this.getArgumentVariable(ArgumentsConstants.KEY_SECURITY_PASSWORD_INIT).getStringValue();
+        userCore.setPassword(pws);
+        if (user.getStatus() == 0) {
+            userCore.setStatus(1);
+        } else {
+            userCore.setStatus(0);
+        }
+        userCore.setDel_flag(0);
+        userCore.setCreate_by(this.getCurrentUser().getCreate_by());
+        userCore.setCreate_time(DateUtils.getDateTimeNumber());
+        userCore.setRemark(user.getRemark());
+        userCore.setType(1);
+        userCore.setBind_client_id("0");
+        userCore.setBind_wechat(0);
+        userCore.setModify_pwd(0);
+        userCore.setBind_mobile(0);
+        userCore.setBind_mail(0);
+        userCore.setProfile_id(0L);
+        userCore.setIs_wechat_public(0);
+        userCore.setIs_wechat_routine(0);
+        userCore.setIs_wechat_ios(0);
+        userCore.setIs_wechat_android(0);
+        userCore.setIs_logoff(0);
+        userCore.setLogoff_time(0L);
+        userCore.setIs_sms(0);
+        //绠$悊鍛樼被鍨嬶細1= 骞冲彴瓒呯, 2=鍟嗘埛瓒呯, 3=绯荤粺绠$悊鍛橈紝4=鍟嗘埛绠$悊鍛�
+        userCore.setType(2);
+        //鍟嗘埛id锛�0-骞冲彴
+        userCore.setMer_id(0L);
+        this.userService.insert(userCore);
+        // 鎻掑叆骞冲彴鏈烘瀯
+        //灏戣鑹瞚d
+        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");
+    }};
+
+    @PostMapping("/updatePerson")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseValue updatePerson(@RequestBody FinSysTenantUser user) {
+        if (user == null) {
+            return ResponseValue.error("鍙傛暟涓虹┖");
+        }
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        String avatar = user.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());
+        String pwdPhone = "";
+        if (user.getUserPhone() != null) {
+            String key = PlatformRSAUtils.AES_KEY;
+            pwdPhone = AESUtils.encryptStrAES(user.getUserPhone(), key);
+        }
+        updUser.setUserPhone(pwdPhone);
+        // 1.鏇存柊绯荤粺鐢ㄦ埛   FIN_SYS_TENANT_USER
+        finSysTenantUserService.update(updUser);
+        // 2.鏇存柊骞冲彴鐢ㄦ埛  S_USER_CORE
+        S_user_core userCore = new S_user_core();
+        userCore.setId(sysInfo.getSysUserId());
+        userCore.setUpdate_by(this.getCurrentUser().getUser_name());
+        userCore.setUpdate_time(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
+        userCore.setNick_name(updUser.getUserName());
+        userCore.setEmail(updUser.getEmail());
+        // 鍔犲瘑鎵嬫満鍙�
+        userCore.setPhonenumber(updUser.getUserPhone());
+        this.userService.update(userCore);
+        this.getFinSysTenantUserCache().remove(String.valueOf(sysInfo.getSysUserId()));
+        this.getUserCacheProvider().removeUser(sysInfo.getSysUserId());
+        return ResponseValue.success(1);
+    }
+
+    /**
+     * @Description 淇敼瀵嗙爜
+     */
+    @PostMapping("/updatePassword")
+    public ResponseValue updatePassword(@RequestBody FinSysTenantUserUpdParam param) {
+        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("淇℃伅涓嶈兘涓虹┖锛�");
+        }
+        FinSysTenantUser sysInfo = getSysInfo();
+        if (sysInfo == null) {
+            return ResponseValue.error("鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
+        }
+        //鏍¢獙淇╂杈撳叆鐨勫瘑鐮�
+        btnMixPd = PlatformRSAUtils.getRsaDecryptValue(btnMixPd, PlatformRSAUtils.PRIK);
+        newMixPd = PlatformRSAUtils.getRsaDecryptValue(newMixPd, PlatformRSAUtils.PRIK);
+        if (!newMixPd.equals(btnMixPd)) {
+            return ResponseValue.error("鏂板瘑鐮佷笌纭瀵嗙爜涓嶄竴鑷达紒");
+        }
+        // 鏁板瓧+瀛楁瘝+鐗规畩绗﹀悎锛屾渶灏�8浣�
+        if (StringUtils.isEmpty(btnMixPd) || btnMixPd.length() < 8 || btnMixPd.length() > 12) {
+            return ResponseValue.error("瀵嗙爜绾у埆杩囦綆锛岃杈撳叆锛�8-12涓瓧绗�");
+        }
+        String validatePasswordRule = this.validatePasswordRule(btnMixPd);
+        if (validatePasswordRule != null) {
+            return ResponseValue.error(validatePasswordRule);
+        }
+        //鐢ㄦ埛琛╥d
+        Long sysUserId = sysInfo.getSysUserId();
+        S_user_core queryU = new S_user_core();
+        queryU.setId(sysUserId);
+        S_user_core queryUserInfo = userService.get(queryU);
+        if (queryUserInfo == null) {
+            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);
+        userService.update(queryU);
+        // 2. 淇敼骞冲彴鐢ㄦ埛锛堜笉鐢ㄤ慨鏀癸級
+        return ResponseValue.success(1);
+    }
+}

--
Gitblit v1.9.1