Pu Zhibing
8 天以前 f2530067b6cd16a87b76190cf524d2ed75bf9592
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();
        }