From 1be40c8a6695dfe8623687604d7a90a9eb7ccd70 Mon Sep 17 00:00:00 2001
From: xusd <hugeinfo123>
Date: Mon, 14 Oct 2024 17:42:03 +0800
Subject: [PATCH] Merge branch 'feature/gzdyh_20241011_gridaccount' into gzdyh_test

---
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java |  451 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 397 insertions(+), 54 deletions(-)

diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
index 33acd57..60d42ad 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
@@ -1,133 +1,476 @@
 package cn.huge.module.ctuser.service;
 
+import cn.huge.base.common.bo.R;
+import cn.huge.base.common.bo.ReturnBO;
 import cn.huge.base.common.exception.ServiceException;
-import cn.huge.base.common.utils.DateUtils;
-import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.*;
+import cn.huge.module.client.api.impl.SysClientImpl;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.ctuser.dao.mapper.CtAccountMapper;
 import cn.huge.module.ctuser.domain.po.CtAccount;
+import cn.huge.module.ctuser.domain.po.CtUnit;
+import cn.huge.module.ctuser.domain.po.CtUser;
+import cn.huge.module.ctuser.domain.po.CtUserole;
+import cn.huge.module.ctuser.dto.*;
+import cn.huge.module.cust.constant.UserBaseConsts;
+import cn.huge.module.sys.dto.GridTokenBaseDTO;
+import cn.huge.module.sys.dto.GridUserBaseDTO;
+import cn.huge.module.sys.dto.GridUserRoleDTO;
+import cn.huge.module.sys.vo.GridRoleMenuVo;
+import cn.huge.module.sys.vo.GridUserRoleVo;
+import cn.huge.module.utils.JwtUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
 
-import javax.annotation.PostConstruct;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 /**
+ * @author liyj
+ * @version 1.0.0
  * @title: 客户用户账号表业务逻辑处理
  * @Description 客户用户账号表业务逻辑处理
  * @company hugeinfo
- * @author liyj
  * @Time 2024-08-19 20:04:18
- * @version 1.0.0
  */
 @Slf4j
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class CtAccountService extends ServiceImpl<CtAccountMapper, CtAccount>{
+public class CtAccountService extends ServiceImpl<CtAccountMapper, CtAccount> {
 
     @Autowired
     private CtAccountMapper mapper;
 
     @Autowired
     private UtilsClientImpl utilsClient;
+    @Autowired
+    private CtUserService ctUserService;
+    @Autowired
+    private CtUseroleService ctUseroleService;
+    @Autowired
+    private SysClientImpl sysClient;
+    @Autowired
+    private CtUnitService ctUnitService;
 
     /**
-    * 更新对象
-    * @param entity 对象
-    */
-    public void updateCtAccount(CtAccount entity){
-        try{
+     * 更新对象
+     *
+     * @param entity 对象
+     */
+    public void updateCtAccount(CtAccount entity) {
+        try {
             mapper.updateCtAccount(entity);
-        }catch (Exception e){
-            log.error("[CtAccountService.updateCtAccount]调用失败,异常信息:"+e, e);
+        } catch (Exception e) {
+            log.error("[CtAccountService.updateCtAccount]调用失败,异常信息:" + e, e);
             throw new ServiceException("CtAccountService.updateCtAccount", e);
         }
     }
 
     /**
-    * 条件更新对象
-    * @param entity 对象
-    * @param terms 条件
-    */
-    public void updateCtAccountTerms(CtAccount entity, Map<String, Object> terms){
-        try{
+     * 条件更新对象
+     *
+     * @param entity 对象
+     * @param terms  条件
+     */
+    public void updateCtAccountTerms(CtAccount entity, Map<String, Object> terms) {
+        try {
             mapper.updateCtAccountTerms(entity, terms);
-        }catch (Exception e){
-            log.error("[CtAccountService.updateCtAccountTerms]调用失败,异常信息:"+e, e);
+        } catch (Exception e) {
+            log.error("[CtAccountService.updateCtAccountTerms]调用失败,异常信息:" + e, e);
             throw new ServiceException("CtAccountService.updateCtAccountTerms", e);
         }
     }
 
     /**
-    * 根据编号物理删除
-    * @param id 查询条件集合
-    */
-    public void deleteCtAccount(String id){
-        try{
+     * 根据编号物理删除
+     *
+     * @param id 查询条件集合
+     */
+    public void deleteCtAccount(String id) {
+        try {
             mapper.deleteCtAccount(id);
-        }catch (Exception e){
-            log.error("[CtAccountService.deleteCtAccount]调用失败,异常信息:"+e, e);
+        } catch (Exception e) {
+            log.error("[CtAccountService.deleteCtAccount]调用失败,异常信息:" + e, e);
             throw new ServiceException("CtAccountService.deleteCtAccount", e);
         }
     }
 
     /**
-    * 按条件查询
-    * @param terms 条件
-    * @return List
-    */
-    public List<CtAccount> listTerms(Map<String, Object> terms){
+     * 按条件查询
+     *
+     * @param terms 条件
+     * @return List
+     */
+    public List<CtAccount> listTerms(Map<String, Object> terms) {
         return mapper.listTerms(terms);
     }
 
     /**
-    * 按条件统计
-    * @param terms 条件
-    * @return long
-    */
-    public long countTerms(Map<String, Object> terms){
+     * 按条件统计
+     *
+     * @param terms 条件
+     * @return long
+     */
+    public long countTerms(Map<String, Object> terms) {
         return mapper.countTerms(terms);
     }
 
     /**
-    * 按条件分页查询
-    * @param page 分页对象
-    * @param terms 条件
-    * @return Page
-    */
-    public Page<CtAccount> pageQuery(PageRequest page, Map<String, Object> terms){
+     * 按条件分页查询
+     *
+     * @param page  分页对象
+     * @param terms 条件
+     * @return Page
+     */
+    public Page<CtAccount> pageQuery(PageRequest page, Map<String, Object> terms) {
         long total = mapper.countTerms(terms);
         List<CtAccount> content = mapper.pageTerms(page, terms);
         return new PageImpl<CtAccount>(content, page, total);
     }
 
     /**
-    * 新增或更新对象
-    * @param ctAccount 实体对象
-    */
-    public void saveCtAccount(CtAccount ctAccount){
-        try{
-            Date nowDate = DateUtils.getMowDate();
+     * 新增或更新对象
+     *
+     * @param ctAccount 实体对象
+     */
+    public void saveCtAccount(CtAccount ctAccount) {
+        try {
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
-            if (IdUtils.checkNewId(ctAccount.getId())){
+            if (IdUtils.checkNewId(ctAccount.getId())) {
                 ctAccount.setId(utilsClient.getNewTimeId());
                 ctAccount.setCreateTime(nowDate);
             }
             ctAccount.setUpdateTime(nowDate);
             this.saveOrUpdate(ctAccount);
-        }catch (Exception e){
-            log.error("[CtAccountService.saveCtAccount]调用失败,异常信息:"+e, e);
+        } catch (Exception e) {
+            log.error("[CtAccountService.saveCtAccount]调用失败,异常信息:" + e, e);
             throw new ServiceException("CtAccountService.saveCtAccount", e);
         }
     }
 
+    /**
+     * 根据账号和类型查询
+     *
+     * @param acc     账号
+     * @param accType 账号类型
+     * @return
+     */
+    public CtAccount getByAccAndType(String acc, int accType) {
+        QueryWrapper<CtAccount> accountWrapper = new QueryWrapper<>();
+        accountWrapper.eq("acc", acc)
+                .eq("acc_type", accType);
+        CtAccount ctAccount = this.getOne(accountWrapper);
+        return ctAccount;
+    }
+
+    /**
+     * 根据用户编号和类型查询
+     *
+     * @param userId  用户编号
+     * @param accType 账号类型
+     * @return
+     */
+    public CtAccount getByUserIdAndType(String userId, int accType) {
+        QueryWrapper<CtAccount> accountWrapper = new QueryWrapper<>();
+        accountWrapper.eq("user_id", userId)
+                .eq("acc_type", accType);
+        CtAccount ctAccount = this.getOne(accountWrapper);
+        return ctAccount;
+    }
+
+    /**
+     * 判断密码是否正确
+     *
+     * @param cipher    密码
+     * @param ctAccount 账号信息
+     * @return Boolean
+     */
+    public Boolean checkCredential(String cipher, CtAccount ctAccount) {
+        String credentialMd5 = DigestUtils.md5DigestAsHex(cipher.getBytes());
+        if (StringUtils.equals(credentialMd5, ctAccount.getCipher())) {
+            return true;
+        } else {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+            String createTime = sdf.format(ctAccount.getCreateTime());
+            String credentialTime = sdf.format(ctAccount.getCreateTime());
+            //是否修改过密码,未修改过可以用默认密码登录
+            if (createTime.equals(credentialTime)) {
+                if (cipher.equals(UserBaseConsts.MR_CIPHER)) {
+                    return true;
+                } else {
+                    return false;
+                }
+            } else {
+                return false;
+            }
+        }
+    }
+
+    /**
+     * web端-工作人员用户登录
+     *
+     * @param ctAccountLoginDTO 登录账号信息
+     * @return UserLoginDTO
+     */
+    public ReturnBO webLogin(CtAccountLoginDTO ctAccountLoginDTO) {
+        try {
+            // 判断账号密码是否为空
+            if (StringUtils.isBlank(ctAccountLoginDTO.getAcc()) || StringUtils.isBlank(ctAccountLoginDTO.getCipher())) {
+                return ReturnFailUtils.getRepInfo("账号或密码不能为空");
+            }
+            // 判断账号是否存在
+            CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1);
+            if (ObjectUtils.isNotEmpty(ctAccount)) {
+                // 判断账号是否被锁定
+                if (ObjectUtils.isNotEmpty(ctAccount.getLimitTime())) {
+                    Date nowDate = new Date();
+                    if (nowDate.before(ctAccount.getLimitTime())) {
+                        SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分");
+                        return ReturnFailUtils.getRepInfo("账号已锁定,请于" + sdf.format(ctAccount.getLimitTime()) + "后重试,或者请联系管理员解锁!");
+                    }
+                }
+                // 判断密码是否正确
+                if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) {
+                    //返回结果
+                    UserLoginDTO userLoginDTO = new UserLoginDTO();
+                    CtUser ctUser = ctUserService.getById(ctAccount.getUserId());
+                    if (ObjectUtils.isEmpty(ctUser)) {
+                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                    }
+                    if (ctUser.getStatus() != UserBaseConsts.USER_STATUS_1) {
+                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                    }
+                    // 封装用户信息
+                    userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId()));
+                    userLoginDTO.setUserId(ctUser.getId());
+                    userLoginDTO.setTrueName(ctUser.getTrueName());
+                    userLoginDTO.setUnit(ctUser.getUnitName());
+                    userLoginDTO.setDept(ctUser.getDeptName());
+                    userLoginDTO.setCustId(ctUser.getCustId());
+                    // 登录用户角色
+                    List<CtUserole> ctUseroleList = ctUseroleService.listByUserId(ctUser.getId());
+                    userLoginDTO.setCtUseroleList(ctUseroleList);
+                    // 登录用户地址信息
+                    CtUserAddrDTO ctUserAddrDTO = new CtUserAddrDTO();
+                    ctUserAddrDTO.setProv(ctUser.getProv());
+                    ctUserAddrDTO.setProvName(ctUser.getProvName());
+                    ctUserAddrDTO.setCity(ctUser.getCity());
+                    ctUserAddrDTO.setCityName(ctUser.getCityName());
+                    ctUserAddrDTO.setArea(ctUser.getArea());
+                    ctUserAddrDTO.setAreaName(ctUser.getAreaName());
+                    ctUserAddrDTO.setRoad(ctUser.getRoad());
+                    ctUserAddrDTO.setRoadName(ctUser.getRoadName());
+                    ctUserAddrDTO.setVillage(ctUser.getVillage());
+                    ctUserAddrDTO.setVillageName(ctUser.getVillageName());
+                    userLoginDTO.setCtUserAddrDTO(ctUserAddrDTO);
+                    // 最后登录时间
+                    Date loginTime = ctAccount.getLoginTime();
+                    if (ObjectUtils.isEmpty(ctAccount.getLoginTime())) {
+                        loginTime = DateUtils.getNowDate();
+                    }
+                    userLoginDTO.setLastLoginTime(loginTime);
+                    // 更新最新登录时间
+                    UpdateWrapper<CtAccount> accountUpdateWrapper = new UpdateWrapper<>();
+                    accountUpdateWrapper.set("login_time", loginTime).eq("id", ctAccount.getId());
+                    this.update(accountUpdateWrapper);
+                    return ReturnSucUtils.getRepInfo(userLoginDTO);
+                } else {
+                    return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                }
+            } else {
+                return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+            }
+        } catch (Exception e) {
+            log.error("service方法[AccountService.webLogin]调用失败,异常信息:" + e, e);
+            throw new ServiceException("CtAccountService.webLogin", e);
+        }
+    }
+
+    /**
+     * web端-工作人员-修改密码
+     *
+     * @param userId      用户编号
+     * @param ctCipherDTO 修改密码信息
+     * @return
+     */
+    public ReturnBO webChangeCipher(String userId, CtCipherDTO ctCipherDTO) {
+        try {
+            CtUser loginUser = ctUserService.getById(userId);
+            CtAccount ctAccount = this.getByAccAndType(loginUser.getAcc(), UserBaseConsts.ACC_TYPE_1);
+//            QueryWrapper<CtAccount> ctAccountQueryWrapper = new QueryWrapper<>();
+//            ctAccountQueryWrapper.eq("user_id", loginUser.getId()).
+//                    eq("acc_type", UserBaseConsts.ACC_TYPE_1);
+//            CtAccount ctAccount =mapper.selectOne(ctAccountQueryWrapper);
+            if (ObjectUtils.isEmpty(ctAccount)) {
+                return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!");
+            }
+            String oldCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getOldCipher().getBytes());
+            if (!StringUtils.equals(oldCredentialMd5, ctAccount.getCipher())) {
+                return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!");
+            }
+            String newCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getNewCipher().getBytes());
+            if (StringUtils.equals(newCredentialMd5, ctAccount.getCipher())) {
+                return ReturnFailUtils.getRepInfo("新密码不能和旧密码相同!");
+            }
+            UpdateWrapper<CtAccount> accountUpdateWrapper = new UpdateWrapper<>();
+            accountUpdateWrapper.set("cipher", newCredentialMd5).set("cipher_open", ctCipherDTO.getNewCipher())
+                    .set("update_time", DateUtils.getNowDate()).eq("id", ctAccount.getId());
+            this.update(accountUpdateWrapper);
+            return ReturnSucUtils.getRepInfo();
+        } catch (Exception e) {
+            log.error("service方法[AccountService.webChangeCipher]调用失败,异常信息:" + e, e);
+            throw new ServiceException("CtAccountService.webChangeCipher", e);
+        }
+    }
+
+    /**
+     * web端-网格系统单点登录
+     *
+     * @param gridTokenBaseDTO 网格系统token
+     * @return UserLoginDTO
+     */
+    public ReturnBO webGridLogin(GridTokenBaseDTO gridTokenBaseDTO) {
+        try {
+            GridUserBaseDTO gridUserBaseDTO = sysClient.getUserInfo(gridTokenBaseDTO);
+
+            // 判断账号密码是否为空
+            if (ObjectUtils.isEmpty(gridUserBaseDTO)) {
+                return ReturnFailUtils.getRepInfo("gridToken已失效,请重新登录!");
+            }
+            // 判断账号是否存在
+            CtAccount ctAccount = null;
+            CtUser ctUser = null;
+            //如果和亿迅系统的手机号对不上,在用身份证号去查询用户,如果查询得到,就对得上,如果查询不到,就说明用户不存在
+            ctUser = ctUserService.getByIdCard(gridUserBaseDTO.getIdNumber());
+            if (ObjectUtils.isNotEmpty(ctUser)) {
+                ctAccount = this.getByUserIdAndType(ctUser.getId(), UserBaseConsts.ACC_TYPE_1);
+            }
+//            CtAccount ctAccount = this.getByAccAndType(gridUserBaseDTO.getAccount(), UserBaseConsts.ACC_TYPE_1);
+//            if (ObjectUtils.isEmpty(ctAccount)) {
+//                ctAccount = this.getByAccAndType(gridUserBaseDTO.getMobile(), UserBaseConsts.ACC_TYPE_1);
+//            }
+
+//            if (ObjectUtils.isNotEmpty(ctAccount)) {
+//                //返回结果
+//                ctUser = ctUserService.getById(ctAccount.getUserId());
+//                if (ObjectUtils.isEmpty(ctUser)) {
+//                    return ReturnFailUtils.getRepInfo("用户不存在!");
+//                }
+//            } else {
+//
+//            }
+            if (ObjectUtils.isNotEmpty(ctUser)) {
+                //有对应用户,则模拟登录,返回对应信息
+                UserLoginDTO userLoginDTO = login(ctAccount, ctUser);
+                return ReturnSucUtils.getRepInfo(userLoginDTO);
+            } else {
+                //没有对应用户,创建用户,根据用户id获取用户信息
+                ReturnBO repInfo = initNewUser(gridUserBaseDTO);
+                if (repInfo.getCode() == 0) {
+                    //创建用户成功,模拟登录
+                    ctUser = ctUserService.getByIdCard(gridUserBaseDTO.getIdNumber());
+                    if (ObjectUtils.isNotEmpty(ctUser)) {
+                        ctAccount = this.getByUserIdAndType(ctUser.getId(), UserBaseConsts.ACC_TYPE_1);
+                    }
+                    UserLoginDTO userLoginDTO = login(ctAccount, ctUser);
+                    return ReturnSucUtils.getRepInfo(userLoginDTO);
+                } else {
+                    //创建用户失败,返回失败信息
+                    return repInfo;
+                }
+
+            }
+        } catch (Exception e) {
+            log.error("service方法[AccountService.webGridLogin]调用失败,异常信息:" + e, e);
+            throw new ServiceException("CtAccountService.webGridLogin", e);
+        }
+    }
+
+    private UserLoginDTO login(CtAccount ctAccount, CtUser ctUser) {
+        UserLoginDTO userLoginDTO = new UserLoginDTO();
+        // 封装用户信息
+        userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId()));
+        userLoginDTO.setUserId(ctUser.getId());
+        userLoginDTO.setTrueName(ctUser.getTrueName());
+        userLoginDTO.setUnit(ctUser.getUnitName());
+        userLoginDTO.setDept(ctUser.getDeptName());
+        userLoginDTO.setCustId(ctUser.getCustId());
+        // 登录用户角色
+        List<CtUserole> ctUseroleList = ctUseroleService.listByUserId(ctUser.getId());
+        userLoginDTO.setCtUseroleList(ctUseroleList);
+        // 登录用户地址信息
+        CtUserAddrDTO ctUserAddrDTO = new CtUserAddrDTO();
+        ctUserAddrDTO.setProv(ctUser.getProv());
+        ctUserAddrDTO.setProvName(ctUser.getProvName());
+        ctUserAddrDTO.setCity(ctUser.getCity());
+        ctUserAddrDTO.setCityName(ctUser.getCityName());
+        ctUserAddrDTO.setArea(ctUser.getArea());
+        ctUserAddrDTO.setAreaName(ctUser.getAreaName());
+        ctUserAddrDTO.setRoad(ctUser.getRoad());
+        ctUserAddrDTO.setRoadName(ctUser.getRoadName());
+        ctUserAddrDTO.setVillage(ctUser.getVillage());
+        ctUserAddrDTO.setVillageName(ctUser.getVillageName());
+        userLoginDTO.setCtUserAddrDTO(ctUserAddrDTO);
+        // 最后登录时间
+        Date loginTime = new Date();
+        userLoginDTO.setLastLoginTime(loginTime);
+        // 更新最新登录时间
+        UpdateWrapper<CtAccount> accountUpdateWrapper = new UpdateWrapper<>();
+        accountUpdateWrapper.set("login_time", loginTime).eq("id", ctAccount.getId());
+        this.update(accountUpdateWrapper);
+        return userLoginDTO;
+    }
+
+    private ReturnBO initNewUser(GridUserBaseDTO gridUserBaseDTO) {
+        String userId = gridUserBaseDTO.getId();
+        //拿到用户机构信息
+        GridUserRoleVo gridUserRoleVo = new GridUserRoleVo();
+        gridUserRoleVo.setUserId(userId);
+        GridUserRoleDTO userRoleDTO = sysClient.getUserRoleList(gridUserRoleVo);
+        if (StringUtils.isEmpty(userRoleDTO.getOrgName())) {
+            return ReturnFailUtils.getRepInfo("用户不存在!,请确认后重试!");
+        }
+        if (StringUtils.isNotEmpty(userRoleDTO.getOrgName()) && userRoleDTO.getOrgName().endsWith("网格")) {
+            return ReturnFailUtils.getRepInfo("该用户所在机构禁止登录矛调系统,请切换该用户机构为区、镇街、社区机构");
+        }
+        //拿到用户角色菜单权限信息
+        GridRoleMenuVo gridRoleMenuVo = new GridRoleMenuVo();
+        gridRoleMenuVo.setOrgRoleId(userRoleDTO.getRoleId());
+        gridRoleMenuVo.setMenuSys("sub-mdjfhj");
+        CtUserole roleMenu = sysClient.getRoleMenu(gridRoleMenuVo);
+        List<CtUserole> ctUseroles = new ArrayList<>();
+        ctUseroles.add(roleMenu);
+        CtUnit ctUnit = ctUnitService.selectUnitByGridId(userRoleDTO.getOrgId());
+        if (ctUnit != null && StringUtils.isNotEmpty(ctUnit.getId())) {
+            CtUserSaveDTO ctUserSaveDTO = new CtUserSaveDTO();
+            ctUserSaveDTO.setUnitId(ctUnit.getId());
+            ctUserSaveDTO.setUnitName(ctUnit.getUnitName());
+            ctUserSaveDTO.setCipher("byzfw2023!");
+            ctUserSaveDTO.setAcc(gridUserBaseDTO.getMobile());
+            ctUserSaveDTO.setTrueName(gridUserBaseDTO.getName());
+            ctUserSaveDTO.setMobile(gridUserBaseDTO.getMobile());
+            ctUserSaveDTO.setIdcard(gridUserBaseDTO.getIdNumber());
+            ctUserSaveDTO.setCtUseroleList(ctUseroles);
+            ctUserService.webSaveCtUser(ctUserSaveDTO, "-1");
+
+        } else {
+            return ReturnFailUtils.getRepInfo("用户不存在!,请确认后重试!");
+        }
+        return ReturnSucUtils.getRepInfo("创建账号成功");
+    }
+
 }

--
Gitblit v1.8.0