Переглянути джерело

Merge remote-tracking branch 'origin/master'

wujiefeng 1 рік тому
батько
коміт
d9691da165

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/login/LoginCommonModel.java

@@ -44,4 +44,7 @@ public class LoginCommonModel {
 
     @Schema(description = "用户权限列表")
     private Set<String> auths;
+
+    @Schema(description = "权限字符串")
+    private String permiss;
 }

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RegisterUserAccountParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.org;
 
 import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserState;
 import com.zhongshu.card.client.type.UserType;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotEmpty;
@@ -60,4 +61,7 @@ public class RegisterUserAccountParam {
     @Schema(description = "用户类型", hidden = true)
     private UserType userType = UserType.Consumer;
 
+    @Schema(description = "用户状态")
+    private UserState state;
+
 }

+ 42 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/UserCountAboutRoleModel.java

@@ -0,0 +1,42 @@
+package com.zhongshu.card.client.model.org;
+
+import com.google.common.collect.Lists;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.org.role.RoleModel;
+import com.zhongshu.card.client.type.CertificateType;
+import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserLoginType;
+import com.zhongshu.card.client.type.UserState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserCountAboutRoleModel extends UserCountModel {
+
+    @Schema(description = "角色信息")
+    private List<RoleModel> roles = new ArrayList<>();
+
+    private List<String> roleIds;
+
+    public List<String> getRoleIds() {
+        if (ObjectUtils.isNotEmpty(roles)) {
+            return roles.stream().map(it -> it.getId()).collect(Collectors.toUnmodifiableList());
+        }
+        return Lists.newArrayList();
+    }
+
+}

+ 5 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/AreaController.java

@@ -39,11 +39,11 @@ public class AreaController {
         return this.areaService.addArea(param);
     }
 
-    //    @ResourceAuth(value = "areaManager", type = AuthType.Platform, remark = "区域管理_区域列表_160_Menu")
-    @ResourceAuth(value = "areaManager", type = AuthType.Project, remark = "区域管理_区域列表_160_Menu")
-    @ResourceAuth(value = "areaManager", type = AuthType.School, remark = "区域管理_区域列表_160_Menu")
-    @ResourceAuth(value = "areaManager", type = AuthType.BusinessMain, remark = "区域管理_区域列表_160_Menu")
-    @ResourceAuth(value = "areaManager", type = AuthType.CommonOrg, remark = "区域管理_区域列表_160_Menu")
+    //    @ResourceAuth(value = "projectAreaManager", type = AuthType.Platform, remark = "区域管理_区域列表_160_Menu")
+    @ResourceAuth(value = "projectAreaManager", type = AuthType.Project, remark = "区域管理_区域列表_160_Menu")
+    @ResourceAuth(value = "projectAreaManager", type = AuthType.School, remark = "区域管理_区域列表_160_Menu")
+    @ResourceAuth(value = "projectAreaManager", type = AuthType.BusinessMain, remark = "区域管理_区域列表_160_Menu")
+    @ResourceAuth(value = "projectAreaManager", type = AuthType.CommonOrg, remark = "区域管理_区域列表_160_Menu")
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.Project, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.School, remark = "")

+ 5 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/orgManager/AreaTypeManagerController.java

@@ -37,11 +37,11 @@ public class AreaTypeManagerController {
     @Autowired
     DictInfoService dictInfoService;
 
-    //    @ResourceAuth(value = "areaTypeList", type = AuthType.Platform, remark = "区域管理_区域类型_161_Menu")
-    @ResourceAuth(value = "areaTypeList", type = AuthType.Project, remark = "区域管理_区域类型_161_Menu")
-    @ResourceAuth(value = "areaTypeList", type = AuthType.School, remark = "区域管理_区域类型_161_Menu")
-    @ResourceAuth(value = "areaTypeList", type = AuthType.BusinessMain, remark = "区域管理_区域类型_161_Menu")
-    @ResourceAuth(value = "areaTypeList", type = AuthType.CommonOrg, remark = "区域管理_区域类型_161_Menu")
+    //    @ResourceAuth(value = "projectAreaTypeManager", type = AuthType.Platform, remark = "区域管理_区域类型_161_Menu")
+    @ResourceAuth(value = "projectAreaTypeManager", type = AuthType.Project, remark = "区域管理_区域类型_161_Menu")
+    @ResourceAuth(value = "projectAreaTypeManager", type = AuthType.School, remark = "区域管理_区域类型_161_Menu")
+    @ResourceAuth(value = "projectAreaTypeManager", type = AuthType.BusinessMain, remark = "区域管理_区域类型_161_Menu")
+    @ResourceAuth(value = "projectAreaTypeManager", type = AuthType.CommonOrg, remark = "区域管理_区域类型_161_Menu")
     @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.Project, remark = "")
     @ResourceAuth(value = AuthConstant.Admin, type = AuthType.School, remark = "")

+ 1 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/UserManagerController.java

@@ -53,9 +53,7 @@ public class UserManagerController {
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "用户列表-分页查询(所有)", description = "用户列表-分页查询")
     @RequestMapping(value = {"pageAllUser"}, method = {RequestMethod.POST})
-    public ResultContent<Page<UserCountModel>> pageAllUser(
-            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
-            @Parameter(required = false) UserCountSearchParam param) {
+    public ResultContent<Page<UserCountModel>> pageAllUser(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) UserCountSearchParam param) {
         return userAccountService.list(param, pageable);
     }
 

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationUserDao.java

@@ -25,6 +25,8 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
     // 查询用户在机构的信息
     OrganizationUser findTopByOrganizationAndUser(Organization organization, UserAccount user);
 
+    OrganizationUser findTopByUserIdAndOid(String userId, String oid);
+
     OrganizationUser findTopByUserAndProjectOid(UserAccount user, String projectOid);
 
     OrganizationUser findTopByOrganizationAndUserAndProjectOid(Organization organization, UserAccount user, String projectOid);

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/gateDoor/GateDoorService.java

@@ -134,6 +134,7 @@ public class GateDoorService extends SuperService {
             useParam.setOperator(param.getOperator());
             useParam.setPic(info.getPic());
             info.setPic("");
+            // 保存使用记录
             ResultContent<DeviceUseRecords> resultContent = deviceUseRecordService.saveDeviceLogs(useParam);
             if (resultContent.isSuccess()) {
                 DeviceUseRecords records = resultContent.getContent();

+ 15 - 6
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/IndexService.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.server.core.service.org;
 
+import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.client.content.ResultState;
 import com.github.microservice.auth.client.model.LoginTokenModel;
 import com.github.microservice.auth.client.model.UserAuthLoginModel;
@@ -27,6 +28,7 @@ import com.zhongshu.card.server.core.service.base.RedisService;
 import com.zhongshu.card.server.core.service.setting.PlatFormConfigInfoService;
 import com.zhongshu.card.server.core.service.user.RoleServiceImpl;
 import com.zhongshu.card.server.core.service.user.UserAccountServiceImpl;
+import com.zhongshu.card.server.core.util.AesUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import com.zhongshu.card.server.core.util.wx.WechatCUtil;
 import jakarta.servlet.http.HttpServletRequest;
@@ -243,7 +245,17 @@ public class IndexService {
         stopWatch.start("3");
         // 用户所有的权限
         Set<String> auth = roleServiceImpl.getUserAllAuths(userAccount.getUserId());
+        String aesStr = "";
+        if (auth != null && !auth.isEmpty()) {
+            try {
+                auth.add(AuthConstant.Admin);
+                aesStr = AesUtils.encrypt(String.join(",", auth), "lIllIIIllIIIllIl");
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
         commonModel.setAuths(auth);
+        commonModel.setPermiss(aesStr);
         stopWatch.stop();
         log.info(stopWatch.prettyPrint());
 
@@ -316,8 +328,7 @@ public class IndexService {
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format("平台未初始化,请联系管理员"));
         }
-        if (organization.getState() == OrganizationState.Locked ||
-                organization.getState() == OrganizationState.Frozen) {
+        if (organization.getState() == OrganizationState.Locked || organization.getState() == OrganizationState.Frozen) {
             return ResultContent.buildFail(String.format("平台已被锁定,不能登录"));
         }
         UserAccount userAccount = userCountDao.findTopByLoginName(phone);
@@ -475,8 +486,7 @@ public class IndexService {
             return ResultContent.buildSuccess(resultContent.getContent());
         } else {
             // 记录登录失败信息
-            userLoginFailRecordDao.save(UserLoginFailRecord.builder().userName(phone)
-                    .ttl(new Date(dbHelper.getTime() + lockTime)).build());
+            userLoginFailRecordDao.save(UserLoginFailRecord.builder().userName(phone).ttl(new Date(dbHelper.getTime() + lockTime)).build());
             String msg = resultContent.getMsg();
             if (StringUtils.isEmpty(msg)) {
                 msg = "账号或密码不正确.";
@@ -509,8 +519,7 @@ public class IndexService {
      * @return
      */
     public ResultContent loginOut() {
-        com.github.microservice.auth.client.content.ResultContent<Long> resultContent =
-                userService.logoutFromToken(authHelper.getUserToken());
+        com.github.microservice.auth.client.content.ResultContent<Long> resultContent = userService.logoutFromToken(authHelper.getUserToken());
         if (resultContent.getState() == ResultState.Success) {
         } else {
             return ResultContent.buildFail(resultContent.getMsg());

+ 2 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -327,7 +327,7 @@ public class OrganizationUserServiceImpl extends SuperService {
         organizationUser.setPhone(userAccount.getPhone());
         organizationUser.setName(userAccount.getName());
         organizationUser.setCardNumber(userAccount.getCardNumber());
-
+        organizationUser.setOid(param.getOrgOid());
         if (organization.getAuthType() == AuthType.Project) {
             organizationUser.setIsOrg(Boolean.FALSE);
         } else {
@@ -608,9 +608,7 @@ public class OrganizationUserServiceImpl extends SuperService {
                             failDetails.add(String.format("%s 机构信息不存在", orgName));
                             continue;
                         }
-                        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(
-                                projectInfo, organization, OrganizationRelationType.ProjectBindOrg
-                        );
+                        OrganizationRelation relation = organizationRelationDao.findTopByMainOrganizationAndRelOrganizationAndRelationType(projectInfo, organization, OrganizationRelationType.ProjectBindOrg);
                         if (ObjectUtils.isEmpty(relation)) {
                             failDetails.add(String.format("%s 机构信息未加入到项目中", orgName));
                             continue;

+ 24 - 14
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/RoleServiceImpl.java

@@ -463,7 +463,8 @@ public class RoleServiceImpl extends SuperService {
         if (ObjectUtils.isEmpty(userAccount)) {
             return auth;
         }
-        List<OrganizationUser> organizationUsers = organizationUserDao.findByUserAndAuthType(userAccount, AuthType.Platform);
+//        List<OrganizationUser> organizationUsers = organizationUserDao.findByUserAndAuthType(userAccount, AuthType.Platform);
+        List<OrganizationUser> organizationUsers = organizationUserDao.findByUserId(userAccount.getUserId());
         if (ObjectUtils.isEmpty(organizationUsers)) {
             return auth;
         }
@@ -471,22 +472,31 @@ public class RoleServiceImpl extends SuperService {
             Organization organization = organizationUser.getOrganization();
             String oid = organization.getOid();
 
-            var roleGroupModels = roleService.listRoleGroupFromOrganizationUser(oid, userId).getContent();
-            if (!CollectionUtils.isEmpty(roleGroupModels)) {
-                roleGroupModels.stream().forEach(roleGroup -> {
-                    if (!CollectionUtils.isEmpty(roleGroup.getRoleId())) {
-                        roleGroup.getRoleId().stream().forEach(it -> {
-                            var role = roleService.getRole(it).getContent();
-                            if (role != null && !CollectionUtils.isEmpty(role.getAuth())) {
-                                auth.addAll(role.getAuth());
-                            }
-                        });
+            List<Role> roles = organizationUser.getRoles();
+
+//            var roleGroupModels = roleService.listRoleGroupFromOrganizationUser(oid, userId).getContent();
+//            if (!CollectionUtils.isEmpty(roleGroupModels)) {
+//                roleGroupModels.stream().forEach(roleGroup -> {
+//                    if (!CollectionUtils.isEmpty(roleGroup.getRoleId())) {
+//                        roleGroup.getRoleId().stream().forEach(it -> {
+//                            var role = roleService.getRole(it).getContent();
+//                            if (role != null && !CollectionUtils.isEmpty(role.getAuth())) {
+//                                auth.addAll(role.getAuth());
+//                            }
+//                        });
+//                    }
+//                });
+//            }
+
+
+            if (ObjectUtils.isNotEmpty(roles)) {
+                roles.stream().forEach(tempRole -> {
+                    var role = roleService.getRole(tempRole.getRoleId()).getContent();
+                    if (role != null && !CollectionUtils.isEmpty(role.getAuth())) {
+                        auth.addAll(role.getAuth());
                     }
                 });
-            }
 
-            List<Role> roles = organizationUser.getRoles();
-            if (ObjectUtils.isNotEmpty(roles)) {
                 List<Role> _list = roles.stream().filter(it -> {
                     return it.getIsAdmin();
                 }).collect(Collectors.toList());

+ 94 - 17
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/UserAccountServiceImpl.java

@@ -13,6 +13,7 @@ import com.zhongshu.card.client.model.base.AuthTypeParam;
 import com.zhongshu.card.client.model.base.UserIdModel;
 import com.zhongshu.card.client.model.org.*;
 import com.zhongshu.card.client.model.org.role.RoleModel;
+import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.type.Sex;
@@ -26,8 +27,8 @@ import com.zhongshu.card.server.core.dataConfig.CardSystemDefault;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
+import com.zhongshu.card.server.core.service.base.CommonService;
 import com.zhongshu.card.server.core.service.base.SuperService;
-import com.zhongshu.card.server.core.service.devices.DevicePermissEventService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
 import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
 import com.zhongshu.card.server.core.service.orgManager.OrganizationManagerServiceImpl;
@@ -42,13 +43,17 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -89,6 +94,8 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
 
     @Autowired
     private OrganizationUserServiceImpl organizationUserService;
+    @Autowired
+    private CommonService commonService;
 
     /**
      * 注册基本用户 (没有就注册,有就修改)
@@ -162,6 +169,14 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             }
             userAccount.setRealName(realName);
             userCountDao.save(userAccount);
+
+            // 更新关联的
+            Map<String, Object> where = new HashMap<>();
+            where.put("userId", userAccount.getUserId());
+
+            Map<String, Object> standardData = new HashMap<>();
+            standardData.put("name", userAccount.getName());
+            commonService.updateData(where, standardData, OrganizationUser.class.getSimpleName());
         }
         return ResultContent.buildSuccess(userAccount.getUserId());
     }
@@ -259,6 +274,10 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent updateOrgUserState(UpdateUserStateParam param) {
+        String userId = "";
+
+        // 初始基本用户信息
+        RegisterUserAccountParam userAccountParam = new RegisterUserAccountParam();
         if (StringUtils.isEmpty(param.getUserId())) {
             // 新增加
             if (StringUtils.isEmpty(param.getName())) {
@@ -274,43 +293,71 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             if (!validateResult.isSuccess()) {
                 return ResultContent.buildFail(validateResult.getMsg());
             }
-
-            // 初始基本用户信息
-            RegisterUserAccountParam userAccountParam = new RegisterUserAccountParam();
             userAccountParam.setLoginName(param.getPhone());
             userAccountParam.setPassword(param.getPassword());
             userAccountParam.setPhone(param.getPhone());
-            userAccountParam.setName(param.getName());
-            ResultContent<String> userAccountContent = registerUserAccount(userAccountParam);
-            if (userAccountContent.isFailed()) {
-                return ResultContent.buildFail(userAccountContent.getMsg());
-            }
-            String userId = userAccountContent.getContent();
-            
         } else {
+            userId = param.getUserId();
+            UserAccount temp = userCountDao.findTopByUserId(userId);
+            userAccountParam.setLoginName(temp.getLoginName());
+            userAccountParam.setPhone(temp.getPhone());
+            userAccountParam.setUserType(temp.getUserType());
+        }
+        userAccountParam.setName(param.getName());
+        userAccountParam.setState(param.getState());
 
+        ResultContent<String> userAccountContent = registerUserAccount(userAccountParam);
+        if (userAccountContent.isFailed()) {
+            return ResultContent.buildFail(userAccountContent.getMsg());
         }
-        String userId = param.getUserId();
+        userId = userAccountContent.getContent();
+
+
         String oid = param.getOid();
         if (StringUtils.isEmpty(oid)) {
             oid = getCurrentOid();
         }
-        Assert.hasText(oid, "oid不能为空");
+        if (StringUtils.isEmpty(oid)) {
+            return ResultContent.buildFail("oid不能为空");
+        }
         Assert.hasText(userId, "userId不能为空");
-        // 价差用户数据
+
+        // 机构信息
         Organization organization = organizationDao.findTopByOid(oid);
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, oid));
         }
+        // 用户数据
         UserAccount temp = userCountDao.findTopByUserId(userId);
         if (ObjectUtils.isEmpty(temp)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, userId));
         }
 
+        OrgBindUserAllParam orgBindUserAllParam = new OrgBindUserAllParam();
+        orgBindUserAllParam.setUserId(userId);
+        // 要绑定的机构
+        orgBindUserAllParam.setOrgOid(organization.getOid());
+        orgBindUserAllParam.setRoleIds(param.getRoleIds());
+        orgBindUserAllParam.setState(param.getState());
+        orgBindUserAllParam.setRemark(param.getRemark());
+        orgBindUserAllParam.setProjectOid(organization.getOid());
         OrganizationUser organizationUser = organizationUserDao.findTopByOrganizationAndUser(organization, temp);
         if (ObjectUtils.isNotEmpty(organizationUser)) {
-            organizationUser.setState(param.getState());
-            organizationUserDao.save(organizationUser);
+            orgBindUserAllParam.setId(organizationUser.getId());
+            orgBindUserAllParam.setCode(organizationUser.getCode());
+            if (organizationUser.getPosition() != null) {
+                orgBindUserAllParam.setPositionId(organizationUser.getPosition().getId());
+            }
+            if (organizationUser.getDepartment() != null) {
+                orgBindUserAllParam.setDepartmentId(organizationUser.getDepartment().getId());
+            }
+        } else {
+            orgBindUserAllParam.setIsAdmin(Boolean.FALSE);
+        }
+        // 绑定用户到机构
+        ResultContent<OrganizationUser> bindUserContent = organizationUserService.orgBindUser(orgBindUserAllParam);
+        if (bindUserContent.isFailed()) {
+            return ResultContent.buildFail(bindUserContent.getMsg());
         }
         return ResultContent.buildSuccess();
     }
@@ -549,8 +596,21 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent<Page<UserCountModel>> list(UserCountSearchParam param, Pageable pageable) {
+        String oid = param.getOid();
+        if (StringUtils.isEmpty(oid)) {
+            oid = getCurrentOid();
+        }
         Page<UserAccount> page = userCountDao.page(pageable, param);
-        return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
+        List<UserCountAboutRoleModel> models = new ArrayList<>();
+        List<UserAccount> list = page.getContent();
+        if (ObjectUtils.isNotEmpty(list)) {
+            String finalOid = oid;
+            models = list.parallelStream().map(it -> {
+                return toAboutRoleModel(it, finalOid);
+            }).collect(Collectors.toUnmodifiableList());
+        }
+        Page<UserCountAboutRoleModel> page1 = new PageImpl<>(models, PageRequest.of(page.getNumber(), page.getSize(), page.getSort()), page.getTotalElements());
+        return ResultContent.buildSuccess(page1);
     }
 
     /**
@@ -595,6 +655,23 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         return model;
     }
 
+    public UserCountAboutRoleModel toAboutRoleModel(UserAccount entity, String oid) {
+        UserCountAboutRoleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new UserCountAboutRoleModel();
+            BeanUtils.copyProperties(entity, model);
+            // 角色
+            if (StringUtils.isNotEmpty(oid)) {
+                OrganizationUser organizationUser = organizationUserDao.findTopByUserIdAndOid(entity.getUserId(), oid);
+                if (ObjectUtils.isNotEmpty(organizationUser)) {
+                    model.setRoles(roleServiceImpl.toModels(organizationUser.getRoles()));
+                    model.setRemark(organizationUser.getRemark());
+                }
+            }
+        }
+        return model;
+    }
+
     /**
      * 用户的基本信息 (简介模型)
      *

+ 9 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/util/AesUtils.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.crypto.Cipher;
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import java.io.ByteArrayOutputStream;
@@ -32,6 +33,14 @@ public class AesUtils {
         return toHexString(md.digest());
     }
 
+    public static String encrypt(String data, String SECRET_KEY) throws Exception {
+        Cipher cipher = Cipher.getInstance("AES");
+        SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
+        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
+        byte[] encryptedBytes = cipher.doFinal(data.getBytes());
+        return new String(Base64.getEncoder().encode(encryptedBytes));
+    }
+
     @SneakyThrows
     public static String signMacSHA256(String str, String key) {
         Mac mac = Mac.getInstance("HmacSHA256");