From f2530067b6cd16a87b76190cf524d2ed75bf9592 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期六, 11 十月 2025 14:26:54 +0800
Subject: [PATCH] 集成中台及正联功能

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java |  165 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 136 insertions(+), 29 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
index ff7214b..694f093 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
@@ -2,9 +2,12 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
+import com.heredata.hos.model.bucket.Bucket;
 import com.stylefeng.guns.config.properties.GunsProperties;
 import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.base.tips.ErrorTip;
 import com.stylefeng.guns.core.base.tips.Tip;
+import com.stylefeng.guns.core.beetl.ShiroExtUtil;
 import com.stylefeng.guns.core.common.annotion.BussinessLog;
 import com.stylefeng.guns.core.common.annotion.Permission;
 import com.stylefeng.guns.core.common.constant.Const;
@@ -19,21 +22,24 @@
 import com.stylefeng.guns.core.log.LogObjectHolder;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.shiro.ShiroUser;
-import com.stylefeng.guns.core.util.ObsUploadUtil;
 import com.stylefeng.guns.core.util.SinataUtil;
 import com.stylefeng.guns.core.util.ToolUtil;
-import com.stylefeng.guns.modular.system.controller.util.UUIDUtil;
 import com.stylefeng.guns.modular.system.dao.UserMapper;
 import com.stylefeng.guns.modular.system.factory.UserFactory;
 import com.stylefeng.guns.modular.system.model.TAgent;
 import com.stylefeng.guns.modular.system.model.TBranchOffice;
-import com.stylefeng.guns.modular.system.model.TCompany;
 import com.stylefeng.guns.modular.system.model.User;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.transfer.UserDto;
-import com.stylefeng.guns.modular.system.util.OssUploadUtil;
-import com.stylefeng.guns.modular.system.util.huawei.OBSUtil;
-import org.apache.poi.ss.formula.functions.T;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.EmployeeUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.QianYunTongConfig;
+import com.stylefeng.guns.modular.system.util.qianyuntong.UserUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.DeleteStafNodeRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.QYTUserInfo;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNode;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.SaveStaffNodeRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -46,7 +52,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.io.File;
-import java.io.InputStream;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -74,6 +79,12 @@
     private ITAgentService agentService;
     @Autowired
     private ITBranchOfficeService branchOfficeService;
+    
+    @Autowired
+    private QianYunTongConfig qianYunTongConfig;
+
+    @Autowired
+    private ShiroExtUtil shiroExtUtil;
 
 
     /**
@@ -131,7 +142,7 @@
      */
     @RequestMapping("/user_info")
     public String userInfo(Model model) {
-        Integer userId = ShiroKit.getUser().getId();
+        Integer userId = shiroExtUtil.getUser().getId();
         if (ToolUtil.isEmpty(userId)) {
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
@@ -160,7 +171,7 @@
         if (!newPwd.equals(rePwd)) {
             throw new GunsException(BizExceptionEnum.TWO_PWD_NOT_MATCH);
         }
-        Integer userId = ShiroKit.getUser().getId();
+        Integer userId = shiroExtUtil.getUser().getId();
         User user = userService.selectById(userId);
         String oldMd5 = ShiroKit.md5(oldPwd, user.getSalt());
         if (user.getPassword().equals(oldMd5)) {
@@ -194,8 +205,8 @@
             page.setRecords(userService.getUserListPage(page,null, name, beginTime, endTime, deptid));
             return super.packForBT(page);
         } else {
-            Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
-            Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
+            Integer objectId = Objects.requireNonNull(shiroExtUtil.getUser()).getObjectId();
+            Integer roleType = Objects.requireNonNull(shiroExtUtil.getUser()).getRoleType();
 
             if(roleType == 3){
                 // 查询下级分公司账号
@@ -237,12 +248,44 @@
         if (result.hasErrors()) {
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
-
         // 判断账号是否重复
         User theUser = userService.getByAccount(user.getAccount());
         if (theUser != null) {
             throw new GunsException(BizExceptionEnum.USER_ALREADY_REG);
         }
+
+        ShiroUser user1 = shiroExtUtil.getUser();
+        User user2 = userService.selectById(user1.getId());
+        TBranchOffice tBranchOffice = branchOfficeService.selectById(user2.getObjectId());
+        List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(user.getPhone(), tBranchOffice.getEnterCode());
+        Long empId = null;
+        Integer empnew = null;
+        if(null == userInfoByPhone || userInfoByPhone.size() == 0){
+            SaveStaffNodeRequest request1 = new SaveStaffNodeRequest();
+            request1.setMobile(user2.getPhone());
+            request1.setEntercode(tBranchOffice.getEnterCode());
+            request1.setEmpName(user.getName());
+            request1.setEmpNickname(user.getName());
+            request1.setLoginNo(user.getAccount());
+            request1.setEmpSex(user.getSex() == 1 ? "男" : "女");
+            request1.setMphone(user.getPhone());
+            request1.setEmail(user.getPhone() + "@qyt.com");
+            request1.setDeptId(0);
+            request1.setPositionId(1);
+            request1.setSuperLevel(0);
+            request1.setHideMobile(0);
+            ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request1);
+            if(200 != resultUtil.getStatus()){
+                return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg());
+            }
+            SaveStaffNode saveStaffNode = resultUtil.getData();
+            empId = saveStaffNode.getEmpId();
+            empnew = 1;
+        }else{
+            empId = userInfoByPhone.get(0).getEmpId();
+            empnew = 0;
+        }
+
 
         // 完善账号信息
         user.setSalt(ShiroKit.getRandomSalt(5));
@@ -251,10 +294,13 @@
         user.setCreatetime(new Date());
 
         User objectUser = UserFactory.createUser(user);
-        ShiroUser user1 = ShiroKit.getUser();
         objectUser.setRoleType(user1.getRoleType());
         objectUser.setObjectId(user1.getObjectId());
         objectUser.setPassWordUpdate(new Date());
+        objectUser.setEnterId(empId);
+        objectUser.setEmpnew(empnew);
+        objectUser.setEntercode(tBranchOffice.getEnterCode());
+        objectUser.setEnterId(Long.valueOf(tBranchOffice.getEnterCode()));
         this.userService.insert(objectUser);
 
         return SUCCESS_TIP;
@@ -273,15 +319,49 @@
             throw new GunsException(BizExceptionEnum.REQUEST_NULL);
         }
 
-
         User oldUser = userService.selectById(user.getId());
-
+        ShiroUser user1 = shiroExtUtil.getUser();
+        User user2 = userService.selectById(user1.getId());
+        TBranchOffice tBranchOffice = branchOfficeService.selectById(user2.getObjectId());
+        //调用中台接口
+        Long empId = null;
+        Integer empnew = null;
+        List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(oldUser.getPhone(), tBranchOffice.getEnterCode());
+        if(null == userInfoByPhone || userInfoByPhone.size() == 0){
+            SaveStaffNodeRequest request1 = new SaveStaffNodeRequest();
+            request1.setMobile(user2.getPhone());
+            request1.setEntercode(tBranchOffice.getEnterCode());
+            request1.setEmpName(user.getName());
+            request1.setEmpNickname(user.getName());
+            request1.setLoginNo(user.getAccount());
+            request1.setEmpSex(user.getSex() == 1 ? "男" : "女");
+            request1.setMphone(user.getPhone());
+            request1.setEmail(user.getPhone() + "@qyt.com");
+            request1.setDeptId(0);
+            request1.setPositionId(1);
+            request1.setSuperLevel(0);
+            request1.setHideMobile(0);
+            ResultUtil<SaveStaffNode> resultUtil = EmployeeUtil.saveStaffNode(request1);
+            if(200 != resultUtil.getStatus()){
+                return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg());
+            }
+            SaveStaffNode saveStaffNode = resultUtil.getData();
+            empId = saveStaffNode.getEmpId();
+            empnew = 1;
+        }else{
+            empId = userInfoByPhone.get(0).getEmpId();
+            empnew = 0;
+        }
+        oldUser.setEmpId(empId);
+        oldUser.setEntercode(tBranchOffice.getEnterCode());
+        oldUser.setEnterId(Long.valueOf(tBranchOffice.getEnterCode()));
+        oldUser.setEmpnew(empnew);
         if (ShiroKit.hasRole(Const.ADMIN_NAME)) {
             this.userService.updateById(UserFactory.editUser(user, oldUser));
             return SUCCESS_TIP;
         } else {
             assertAuth(user.getId());
-            ShiroUser shiroUser = ShiroKit.getUser();
+            ShiroUser shiroUser = shiroExtUtil.getUser();
             if (shiroUser.getId().equals(user.getId())) {
                 this.userService.updateById(UserFactory.editUser(user, oldUser));
                 return SUCCESS_TIP;
@@ -306,7 +386,24 @@
         if (userId.equals(Const.ADMIN_ID)) {
             throw new GunsException(BizExceptionEnum.CANT_DELETE_ADMIN);
         }
-
+        User user = userService.selectById(userId);
+        ShiroUser user1 = shiroExtUtil.getUser();
+        User user2 = userService.selectById(user1.getId());
+        TBranchOffice tBranchOffice = branchOfficeService.selectById(user2.getObjectId());
+        //调用中台接口
+        if(1 == user.getEmpnew()){
+            List<QYTUserInfo> userInfoByPhone = UserUtil.getUserInfoByPhone(user.getPhone(), tBranchOffice.getEnterCode());
+            if (null != userInfoByPhone && 0 < userInfoByPhone.size() && 1 == user.getEmpnew()) {
+                DeleteStafNodeRequest request1 = new DeleteStafNodeRequest();
+                request1.setEmpId(user.getEnterId());
+                request1.setMobile(tBranchOffice.getPrincipalPhone());
+                request1.setEntercode(tBranchOffice.getEnterCode());
+                ResultUtil resultUtil = EmployeeUtil.ecrmDeleteStafNode(request1);
+                if(200 != resultUtil.getStatus()){
+                    return new ErrorTip(resultUtil.getStatus(), resultUtil.getMsg());
+                }
+            }
+        }
 
         assertAuth(userId);
         this.userService.setStatus(userId, ManagerStatus.DELETED.getCode());
@@ -423,21 +520,31 @@
     @RequestMapping("/saveApk")
     public String saveApk(@RequestPart("myfile") MultipartFile file, HttpServletRequest request){
         Map<String, Object> m = new HashMap<>();
+        QianYunTongConfig qianYunTongConfig1 = qianYunTongConfig.getQianYunTongConfig();
         try {
             String pictureName = UUID.randomUUID().toString() + "." + ToolUtil.getFileSuffix(file.getOriginalFilename());
-            try {
-                String fileSavePath = gunsProperties.getFileUploadPath()+"apk\\";
-                InputStream inputStream = file.getInputStream();
-                String name1 = file.getOriginalFilename();
-                name1 = UUIDUtil.getRandomCode() + name1.substring(name1.lastIndexOf("."));
-                String s = OBSUtil.putObjectToBucket(inputStream, name1);
-//                String s = OssUploadUtil.ossUpload(request, file);
-                // file.transferTo(new File(fileSavePath + pictureName));
-                return s;
-            } catch (Exception e) {
-                e.printStackTrace();
+            String bucketName = qianYunTongConfig1.getBucketName();
+            Bucket grjyTest = NCOSSUtil.getBucketInfo(bucketName);
+            if (null == grjyTest) {
+                //创建桶
+                Boolean bucket = NCOSSUtil.createBucket(bucketName);
+                if (!bucket) {
+                    throw new RuntimeException("创建存储桶失败");
+                }
+                //设置桶策略
+                String policyText = "{\"Version\":\"2025-06-23\",\"Statement\":[{\"Sid\":\"Stmt20250623\",\"Action\":[\"GetObject\"],\"Effect\":\"Allow\",\"Resource\":\"" + bucketName + "/*\",\"Principal\":\"*\"}]}";
+                Boolean bucketPolicy = NCOSSUtil.setBucketPolicy(bucketName, policyText);
+                if (!bucketPolicy) {
+                    throw new RuntimeException("设置桶策略失败");
+                }
             }
-            m.put("imgUrl", gunsProperties.getFileUploadPath()+"apk/"+pictureName);
+            //上传对象
+            String key = "apk/" + pictureName;
+            String object = NCOSSUtil.putObject(bucketName, key, file.getInputStream());
+            if (null == object) {
+                throw new RuntimeException("上传图片失败");
+            }
+            m.put("imgUrl", "https://traffic.qytzt.cn/v1/AUTH_" + qianYunTongConfig1.getAccount() + "/" + bucketName + "/" + key);
         } catch (Exception e) {
             e.printStackTrace();
         }

--
Gitblit v1.7.1