diff --git a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictDeserializer.java b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictDeserializer.java index 7d4b40d..662e6c8 100644 --- a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictDeserializer.java +++ b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictDeserializer.java @@ -83,7 +83,26 @@ public class DictDeserializer extends JsonDeserializer { Class valueClazz = currentValue.getClass(); try { - Field field = valueClazz.getDeclaredField(currentName); + Field[] declaredFields = valueClazz.getDeclaredFields(); + Field field = null; + for (Field field_ : declaredFields) { + if (field_.getName().equals(currentName)) { + field = field_; + break; + } + } + if (field == null) { + declaredFields = valueClazz.getSuperclass().getDeclaredFields(); + for (Field field_ : declaredFields) { + if (field_.getName().equals(currentName)) { + field = field_; + break; + } + } + } + if (field == null) { + throw new NoSuchFieldException("字段不存在:" + currentName); + } Class clazz = field.getType(); if (DictStr.class.isAssignableFrom(clazz)) { String val = p.getValueAsString(); diff --git a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/AuthWay.java b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/AuthWay.java index bdce65e..1b14045 100644 --- a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/AuthWay.java +++ b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/AuthWay.java @@ -19,5 +19,6 @@ public enum AuthWay implements DictStr { ; private final String val; + private final String txt; } diff --git a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/ClientCode.java b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/ClientCode.java index 8330441..012055d 100644 --- a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/ClientCode.java +++ b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/contant/ClientCode.java @@ -1,5 +1,6 @@ package com.njzscloud.common.security.contant; +import com.njzscloud.common.core.ienum.DictInt; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -9,18 +10,21 @@ import lombok.RequiredArgsConstructor; */ @Getter @RequiredArgsConstructor -public enum ClientCode { - pc(1), - wx_app(2), - app(4); +public enum ClientCode implements DictInt { + PC(0, "电脑端"), + WX_MINI_APP(1, "微信小程序"), + ; - private final int permission; + private final Integer val; + + private final String txt; /** * 检查是否有登录权限 */ - public boolean hasPermission(int permission) { - return !((this.permission & permission) == this.permission); + public boolean hasPermission(int clientCode) { + var mask = 1 << this.val; + return (clientCode & mask) == 0; } } diff --git a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/AbstractAuthenticationProvider.java b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/AbstractAuthenticationProvider.java index b6b75e5..7d13dcf 100644 --- a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/AbstractAuthenticationProvider.java +++ b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/AbstractAuthenticationProvider.java @@ -3,6 +3,7 @@ package com.njzscloud.common.security.support; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import com.njzscloud.common.core.ex.ExceptionMsg; +import com.njzscloud.common.security.contant.ClientCode; import com.njzscloud.common.security.contant.Constants; import com.njzscloud.common.security.ex.UserLoginException; import org.springframework.security.authentication.AccountStatusException; @@ -112,9 +113,10 @@ public abstract class AbstractAuthenticationProvider implements AuthenticationPr * @throws AccountStatusException 账号状态校验失败时抛出 */ protected void lastCheck(LoginForm loginForm, UserDetail userDetail) throws UserLoginException { - if (userDetail.getDisabled() == Boolean.TRUE) { - throw new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "用户已被禁用"); - } + Assert.isFalse(userDetail.getDisabled(), () -> new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "用户已被禁用")); + ClientCode clientCode = loginForm.getClientCode(); + Integer code = userDetail.getClientCode(); + Assert.isTrue(clientCode.hasPermission(code), () -> new UserLoginException(ExceptionMsg.CLI_ERR_MSG, "当前用户无权使用:" + clientCode.getTxt())); } /** diff --git a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/LoginForm.java b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/LoginForm.java index 8f5baf6..5aecdf9 100644 --- a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/LoginForm.java +++ b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/LoginForm.java @@ -5,12 +5,14 @@ import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.mvc.validator.Constrained; import com.njzscloud.common.mvc.validator.ValidRule; import com.njzscloud.common.security.contant.AuthWay; +import com.njzscloud.common.security.contant.ClientCode; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; import java.security.Principal; import java.util.Arrays; +import java.util.List; import java.util.stream.Collectors; @Getter @@ -22,9 +24,13 @@ public abstract class LoginForm implements Constrained, Principal { */ private final AuthWay authWay; + private ClientCode clientCode; + public Tuple2 validate() { ValidRule[] rules = rules(); - String message = Arrays.stream(rules) + List ruleList = Arrays.stream(rules).collect(Collectors.toList()); + ruleList.add(ValidRule.of(() -> clientCode != null, "未指定要使用的客户端")); + String message = ruleList.stream() .filter(it -> !it.predicate.get()) .map(it -> it.message) .collect(Collectors.joining("\n")); diff --git a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/UserDetail.java b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/UserDetail.java index 150a75b..a3444d4 100644 --- a/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/UserDetail.java +++ b/njzscloud-common/njzscloud-common-security/src/main/java/com/njzscloud/common/security/support/UserDetail.java @@ -43,6 +43,7 @@ public class UserDetail implements CredentialsContainer, Principal { */ private Long accountId; private Long tenantId; + private Integer clientCode; private String tenantName; /** * 登录方式 diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/cotroller/ResourceController.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/cotroller/ResourceController.java index 0cb12ac..1dc08c9 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/cotroller/ResourceController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/cotroller/ResourceController.java @@ -36,4 +36,9 @@ public class ResourceController { )); } + @GetMapping("/list_role_res") + public R> listRoleRes(@RequestParam(value = "roleId") String roleId) { + return R.success(resourceService.listRoleRes(roleId)); + } + } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/mapper/ResourceMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/mapper/ResourceMapper.java index 69a36ad..4c88fcb 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/mapper/ResourceMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/mapper/ResourceMapper.java @@ -15,4 +15,6 @@ import java.util.List; @Mapper public interface ResourceMapper extends BaseMapper { List occupied(@Param(Constants.WRAPPER) QueryWrapper ew); + + List listRoleRes(@Param("roleId") String roleId); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/service/ResourceService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/service/ResourceService.java index d06e02d..b6829a2 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/service/ResourceService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/resource/service/ResourceService.java @@ -41,4 +41,8 @@ public class ResourceService extends ServiceImpl .in("a.data_id", dataIds)); return !roles.isEmpty(); } + + public List listRoleRes(String roleId) { + return baseMapper.listRoleRes(roleId); + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/controller/RoleController.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/controller/RoleController.java index 88e1440..89b33cb 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/controller/RoleController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/controller/RoleController.java @@ -7,6 +7,7 @@ import com.njzscloud.common.core.utils.R; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.supervisory.sys.role.pojo.entity.RoleEntity; +import com.njzscloud.supervisory.sys.role.pojo.param.BindResParam; import com.njzscloud.supervisory.sys.role.pojo.param.RoleAddParam; import com.njzscloud.supervisory.sys.role.pojo.param.RoleModifyParam; import com.njzscloud.supervisory.sys.role.pojo.param.RoleQueryParam; @@ -61,7 +62,7 @@ public class RoleController { * 详情 */ @GetMapping("/detail") - public R detail(@RequestParam Long id) { + public R detail(@RequestParam("id") Long id) { return R.success(roleService.detail(id)); } @@ -73,6 +74,23 @@ public class RoleController { return R.success(roleService.list(Wrappers.lambdaQuery(RoleEntity.class).like(StrUtil.isNotBlank(roleName), RoleEntity::getRoleName, roleName))); } + /** + * 绑定资源 + */ + @PostMapping("/bind_res") + public R bindRole(@RequestBody BindResParam bindResParam) { + roleService.bindRes(bindResParam); + return R.success(); + } + + /** + * 查询用户拥有的角色 + */ + @GetMapping("/list_user_role") + public R> listUserRole(@RequestParam(value = "userId") Long userId) { + return R.success(roleService.listUserRole(userId)); + } + /** * 分页查询 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/mapper/RoleMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/mapper/RoleMapper.java index 66a9e8a..29a5e8a 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/mapper/RoleMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/mapper/RoleMapper.java @@ -1,6 +1,7 @@ package com.njzscloud.supervisory.sys.role.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; @@ -8,6 +9,8 @@ import com.njzscloud.supervisory.sys.role.pojo.entity.RoleEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

sys_role

*

角色表

@@ -19,4 +22,8 @@ public interface RoleMapper extends BaseMapper { * 分页查询 */ IPage paging(IPage page, @Param(Constants.WRAPPER) Wrapper ew); + + List listUserRole(@Param("userId") Long userId); + + Boolean candel(@Param("ew") QueryWrapper ew); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/BindResParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/BindResParam.java new file mode 100644 index 0000000..0f7b11c --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/BindResParam.java @@ -0,0 +1,20 @@ +package com.njzscloud.supervisory.sys.role.pojo.param; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Set; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class BindResParam { + private Long id; + /** + * 资源 Id 列表 + */ + private Set res; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleAddParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleAddParam.java index 847c3eb..2e8bcdc 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleAddParam.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleAddParam.java @@ -5,7 +5,7 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.util.List; +import java.util.Set; @Getter @Setter @@ -28,5 +28,5 @@ public class RoleAddParam { */ private String memo; - private List resIds; + private Set resIds; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleModifyParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleModifyParam.java index af37b22..f70a4a6 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleModifyParam.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/pojo/param/RoleModifyParam.java @@ -5,7 +5,7 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; -import java.util.List; +import java.util.Set; @Getter @Setter @@ -29,6 +29,6 @@ public class RoleModifyParam { */ private String memo; - private List resIds; + private Set resIds; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/service/RoleResService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/service/RoleResService.java index 32065e5..83a5fe9 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/service/RoleResService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/role/service/RoleResService.java @@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -89,7 +90,7 @@ public class RoleResService extends ServiceImpl resIds) { + public void bindRoleRes(Long roleId, Set resIds) { if (CollUtil.isEmpty(resIds)) return; List sysMenuEntities = resourceService.listByIds(resIds); Assert.isTrue(sysMenuEntities.size() == resIds.size(), () -> Exceptions.exception("资源不存在")); @@ -110,4 +111,6 @@ public class RoleResService extends ServiceImpl implements this.save(roleEntity); Long roleEntityId = roleEntity.getId(); - List resIds = roleAddParam.getResIds(); - roleResService.bindRes(roleEntityId, resIds); + Set resIds = roleAddParam.getResIds(); + roleResService.bindRoleRes(roleEntityId, resIds); return roleEntityId; } @@ -68,8 +70,8 @@ public class RoleService extends ServiceImpl implements Assert.isTrue(exists, () -> Exceptions.clierr("角色不存在")); RoleEntity roleEntity = BeanUtil.copyProperties(roleModifyParam, RoleEntity.class); this.updateById(roleEntity); - List resIds = roleModifyParam.getResIds(); - roleResService.bindRes(roleId, resIds); + Set resIds = roleModifyParam.getResIds(); + roleResService.bindRoleRes(roleId, resIds); } /** @@ -84,6 +86,8 @@ public class RoleService extends ServiceImpl implements return roleCode.equals(ROLE_ADMIN); } ), () -> Exceptions.exception("管理员角色不允许删除")); + Boolean candel = baseMapper.candel(Wrappers.query().in("a.id", ids)); + Assert.isTrue(candel, () -> Exceptions.exception("角色已在使用不能删除")); this.removeBatchByIds(ids); roleResService.remove(Wrappers.lambdaQuery().in(RoleResourceEntity::getRoleId, ids)); } @@ -110,4 +114,17 @@ public class RoleService extends ServiceImpl implements .like(StrUtil.isNotBlank(roleName), RoleEntity::getRoleName, roleName); return PageResult.of(baseMapper.paging(page, ew).convert(it -> BeanUtil.copyProperties(it, RoleDetailResult.class))); } + + public List listUserRole(Long userId) { + return baseMapper.listUserRole(userId); + } + + public void bindRes(BindResParam bindResParam) { + Long id = bindResParam.getId(); + RoleEntity userEntity = this.getById(id); + Assert.notNull(userEntity, () -> Exceptions.clierr("角色不存在")); + Set res = bindResParam.getRes(); + Assert.notEmpty(res, () -> Exceptions.clierr("未指定资源")); + roleResService.bindRoleRes(id, res); + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/controller/UserController.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/controller/UserController.java index de39bfa..9b9924c 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/controller/UserController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/controller/UserController.java @@ -61,6 +61,33 @@ public class UserController { return R.success(userService.detail(id)); } + /** + * 禁用 + */ + @GetMapping("/disable") + public R detail(@RequestParam("id") Long id, @RequestParam("disable") Boolean disable) { + userService.disable(id, disable); + return R.success(); + } + + /** + * 绑定角色 + */ + @PostMapping("/bind_role") + public R bindRole(@RequestBody BindRoleParam bindRoleParam) { + userService.bindRole(bindRoleParam); + return R.success(); + } + + /** + * 授权客户端 + */ + @GetMapping("/bind_client") + public R bindClient(@RequestParam("id") Long id, @RequestParam("clientCode") Integer clientCode) { + userService.bindClient(id, clientCode); + return R.success(); + } + /** * 分页查询 */ @@ -87,4 +114,13 @@ public class UserController { userService.modifyPasswd(modifyPasswdParam); return R.success(); } + + /** + * 重置密码 + */ + @GetMapping("/reset_passwd") + public R resetPasswd(@RequestParam("id") Long id) { + userService.resetPasswd(id); + return R.success(true, "重置成功,新密码:8个8"); + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserAccountEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserAccountEntity.java index 8d79077..f775811 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserAccountEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserAccountEntity.java @@ -35,11 +35,6 @@ public class UserAccountEntity { */ private String username; - /** - * 邮箱 - */ - private String email; - /** * 手机号 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserEntity.java index 02c715f..e2e2f80 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/entity/UserEntity.java @@ -1,7 +1,6 @@ package com.njzscloud.supervisory.sys.user.pojo.entity; import com.baomidou.mybatisplus.annotation.*; -import com.njzscloud.supervisory.sys.user.contant.Gender; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -25,11 +24,6 @@ public class UserEntity { @TableId(type = IdType.ASSIGN_ID) private Long id; - /** - * 租户 Id - */ - private Long tenantId; - /** * 昵称 */ @@ -40,16 +34,6 @@ public class UserEntity { */ private String avatar; - /** - * 性别; 字典代码:gender - */ - private Gender gender; - - /** - * 邮箱 - */ - private String email; - /** * 手机号 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/param/BindRoleParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/param/BindRoleParam.java new file mode 100644 index 0000000..4ba06cf --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/param/BindRoleParam.java @@ -0,0 +1,20 @@ +package com.njzscloud.supervisory.sys.user.pojo.param; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Set; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class BindRoleParam { + private Long id; + /** + * 角色 Id 列表 + */ + private Set roles; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserAccountDetailResult.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserAccountDetailResult.java index 589d9cd..c7aacb4 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserAccountDetailResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserAccountDetailResult.java @@ -18,10 +18,6 @@ public class UserAccountDetailResult { * 用户名 */ private String username; - /** - * 邮箱 - */ - private String email; /** * 手机号 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserDetailResult.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserDetailResult.java index 48461b9..51da5d5 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserDetailResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/pojo/result/UserDetailResult.java @@ -1,7 +1,6 @@ package com.njzscloud.supervisory.sys.user.pojo.result; import com.njzscloud.supervisory.sys.role.pojo.result.RoleDetailResult; -import com.njzscloud.supervisory.sys.user.contant.Gender; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -19,11 +18,6 @@ public class UserDetailResult { */ private String nickname; - /** - * 性别; 字典代码:gender - */ - private Gender gender; - private String avatar; /** @@ -34,7 +28,6 @@ public class UserDetailResult { * 手机号 */ private String phone; - private Long tenantId; /** * 账号信息 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserAccountService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserAccountService.java index f8ad32c..9cafa2d 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserAccountService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserAccountService.java @@ -39,7 +39,6 @@ public class UserAccountService extends ServiceImpl oldSysUserList = this.list(Wrappers.lambdaQuery() .eq(StrUtil.isNotBlank(username), UserAccountEntity::getUsername, username) - .or().eq(StrUtil.isNotBlank(email), UserAccountEntity::getEmail, email) .or().eq(StrUtil.isNotBlank(phone), UserAccountEntity::getPhone, phone) .or(StrUtil.isNotBlank(wechatOpenid), it -> it .eq(UserAccountEntity::getWechatOpenid, wechatOpenid) @@ -51,10 +50,6 @@ public class UserAccountService extends ServiceImpl Exceptions.clierr("密码不能为空")); Assert.isTrue(oldSysUserList.stream().noneMatch(it -> username.equals(it.getUsername())), () -> Exceptions.exception("用户名【{}】已被使用", username)); } - if (StrUtil.isNotBlank(email)) { - Assert.notBlank(secret, () -> Exceptions.clierr("密码不能为空")); - Assert.isTrue(oldSysUserList.stream().noneMatch(it -> email.equals(it.getEmail())), () -> Exceptions.exception("邮箱【{}】已被使用", email)); - } if (StrUtil.isNotBlank(phone)) { Assert.notBlank(secret, () -> Exceptions.clierr("密码不能为空")); Assert.isTrue(oldSysUserList.stream().noneMatch(it -> phone.equals(it.getPhone())), () -> Exceptions.exception("手机号【{}】已被使用", phone)); diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserService.java index d942b55..6b30dae 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/sys/user/service/UserService.java @@ -11,6 +11,7 @@ import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.security.support.UserDetail; +import com.njzscloud.common.security.util.EncryptUtil; import com.njzscloud.common.security.util.SecurityUtil; import com.njzscloud.supervisory.sys.role.pojo.result.RoleDetailResult; import com.njzscloud.supervisory.sys.user.contant.Gender; @@ -26,6 +27,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -76,6 +78,9 @@ public class UserService extends ServiceImpl implements */ @Transactional(rollbackFor = Exception.class) public void del(List ids) { + if (ids.contains(1L)) { + throw Exceptions.clierr("不能删除管理员"); + } this.removeByIds(ids); userAccountService.delByUserIds(ids); userRoleService.delByUserIds(ids); @@ -93,7 +98,6 @@ public class UserService extends ServiceImpl implements UserAccountDetailResult userAccountDetailResult = BeanUtil.copyProperties(userAccountEntity, UserAccountDetailResult.class); List roleDetailResults = userRoleService.listRole(id); return userDetailResult - .setTenantId(userEntity.getTenantId()) .setAccount(userAccountDetailResult) .setRoles(roleDetailResults); } @@ -144,4 +148,29 @@ public class UserService extends ServiceImpl implements Long userId = SecurityUtil.currentUserId(); userAccountService.modifyPasswd(userId, modifyPasswdParam); } + + public void disable(Long id, Boolean disable) { + userAccountService.update(Wrappers.lambdaUpdate().eq(UserAccountEntity::getUserId, id) + .set(UserAccountEntity::getDisabled, disable)); + } + + public void bindRole(BindRoleParam bindRoleParam) { + Long id = bindRoleParam.getId(); + UserEntity userEntity = this.getById(id); + Assert.notNull(userEntity, () -> Exceptions.clierr("用户不存在")); + Set roles = bindRoleParam.getRoles(); + Assert.notEmpty(roles, () -> Exceptions.clierr("未指定角色")); + userRoleService.bindUserRole(id, roles); + + } + + public void bindClient(Long id, Integer clientCode) { + userAccountService.update(Wrappers.lambdaUpdate().eq(UserAccountEntity::getUserId, id) + .set(UserAccountEntity::getClientCode, clientCode)); + } + + public void resetPasswd(Long id) { + userAccountService.update(Wrappers.lambdaUpdate().eq(UserAccountEntity::getUserId, id) + .set(UserAccountEntity::getSecret, EncryptUtil.encrypt("88888888"))); + } } diff --git a/njzscloud-svr/src/main/resources/mapper/sys/auth/AuthMapper.xml b/njzscloud-svr/src/main/resources/mapper/sys/auth/AuthMapper.xml index 0bd48f8..876714f 100644 --- a/njzscloud-svr/src/main/resources/mapper/sys/auth/AuthMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/sys/auth/AuthMapper.xml @@ -8,6 +8,7 @@ + + diff --git a/njzscloud-svr/src/main/resources/mapper/sys/role/RoleMapper.xml b/njzscloud-svr/src/main/resources/mapper/sys/role/RoleMapper.xml index 83985cc..edeeb70 100644 --- a/njzscloud-svr/src/main/resources/mapper/sys/role/RoleMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/sys/role/RoleMapper.xml @@ -7,15 +7,23 @@ SELECT id, role_code, role_name, - memo, - creator_id, - modifier_id, - create_time, - modify_time, - deleted + memo FROM sys_role ${ew.customSqlSegment} + + diff --git a/njzscloud-svr/src/main/resources/mapper/sys/user/SysUserRoleMapper.xml b/njzscloud-svr/src/main/resources/mapper/sys/user/SysUserRoleMapper.xml index e5bc3e1..142ab05 100644 --- a/njzscloud-svr/src/main/resources/mapper/sys/user/SysUserRoleMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/sys/user/SysUserRoleMapper.xml @@ -10,7 +10,7 @@ b.role_name, b.memo FROM sys_user_role a - INNER JOIN sys_role b ON b.id = a.role_id AND b.deleted = 0 + INNER JOIN sys_role b ON b.id = a.role_id ${ew.customSqlSegment} diff --git a/njzscloud-svr/src/main/resources/mapper/sys/user/UserMapper.xml b/njzscloud-svr/src/main/resources/mapper/sys/user/UserMapper.xml index 1429534..eb5e1f4 100644 --- a/njzscloud-svr/src/main/resources/mapper/sys/user/UserMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/sys/user/UserMapper.xml @@ -15,13 +15,10 @@