浏览代码

更新用户角色

wuweihao 3 年之前
父节点
当前提交
1c3a82b2ad

+ 1 - 1
gis_admin/src/main/java/com/gis/admin/controller/LoginController.java

@@ -118,7 +118,7 @@ public class LoginController {
             roleEntity.setPerm("1,2,3");
         }
 
-        BaseRuntimeException.isNull(roleEntity, ErrorEnum.FAILURE_SYS_2001);
+        BaseRuntimeException.isNull(roleEntity, null, "角色不存在");
         tokenMap.put("roleId", roleEntity.getId());
         tokenMap.put("isAdmin", entity.getIsAdmin());
 

+ 6 - 0
gis_admin/src/main/java/com/gis/admin/controller/SysRoleController.java

@@ -42,6 +42,12 @@ public class SysRoleController  {
         return roleService.listCount(param);
     }
 
+    @ApiOperation("v0.2-角色列表(已启用的)")
+    @GetMapping("enabledList")
+    public Result enabledList() {
+        return roleService.enabledList();
+    }
+
     @WebControllerLog(description = "角色权限-新增/修改", addDb = true)
     @ApiOperation("新增或修改")
     @PostMapping("save")

+ 2 - 0
gis_admin/src/main/java/com/gis/admin/controller/SysUserController.java

@@ -92,5 +92,7 @@ public class SysUserController {
     }
 
 
+
+
 }
 

+ 3 - 3
gis_admin/src/main/java/com/gis/admin/entity/dto/UserDto.java

@@ -65,9 +65,9 @@ public class UserDto {
 //    @ApiModelProperty(value = "角色,sys_admin:系统管理员,sys_high:高级管理员, sys_normal:普通管理员, sys_visitor:游客" ,required = true)
 //    private String role;
 
-//    @NotNull(message = "角色不能为空")
-//    @ApiModelProperty(value = "角色id",notes = "目前一个用户只有一个角色", required = true)
-//    private Long roleId;
+    @NotNull(message = "角色不能为空")
+    @ApiModelProperty(value = "角色id",notes = "目前一个用户只有一个角色", required = true)
+    private Long roleId;
 
 ////    @NotBlank(message = "旧密码不能为空")
 //    @ApiModelProperty(value = "旧密码", name = "oldPassword")

+ 5 - 2
gis_admin/src/main/java/com/gis/admin/entity/po/SysUserEntity.java

@@ -33,8 +33,8 @@ public class SysUserEntity extends BaseEntity implements Serializable {
 //    @ApiModelProperty(value = "昵称")
 //    private String nickName;
 
-    @ApiModelProperty(value = "性别 M:男  F:女")
-    private String sex;
+    @ApiModelProperty(value = "性别 0:男  1:女")
+    private Integer sex;
 
     @ApiModelProperty(value = "电话")
     private String phone;
@@ -68,6 +68,9 @@ public class SysUserEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "角色id",notes = "目前一个用户只有一个角色", required = true)
     private Long roleId;
 
+    @ApiModelProperty(value = "创建者id")
+    private Long creatorId;
+
 
 
 

+ 9 - 13
gis_admin/src/main/java/com/gis/admin/service/SysRoleService.java

@@ -16,38 +16,34 @@ import java.util.Set;
  */
 public interface SysRoleService extends IService<SysRoleEntity> {
 
-//    void saveRoleResource(Long roleId, Long resourceId);
-
-//    void deleteRoleResource(Long roleId);
-
     Set<String> findRoleKeyByUserId(Long userId);
 
     Result saveEntity(RoleDto param);
 
-    Result search(PageDto param);
-
-//    void deleteUserRoleByUserId(Long userId);
-
-//    void saveUserRole(Long userId, Long roleId);
-
     Result remove(Long id);
 
     Result detail(Long id);
 
-
     Result editStatus(Long id, Integer isDisable);
 
     Result listCount(PageDto param);
 
     SysRoleEntity findByUserId(Long userId);
 
-
     Result authorize(RoleAuthDto param);
 
     Result getHotel();
 
     List<String> getScopeById(Long roleId);
 
-//    List<Long> getPermIdByRoleId(Long roleId);
+    // 角色列表(已启用的)
+    Result enabledList();
+
+    // 保存用户角色
+    void saveUserRole(Long userId, Long roleId);
+
+    // 更新用户角色
+    void updateUserRole(Long userId, Long roleId);
+
 
 }

+ 2 - 1
gis_admin/src/main/java/com/gis/admin/service/SysUserService.java

@@ -30,10 +30,11 @@ public interface SysUserService extends IService<SysUserEntity> {
 
     Result register(RegisterDto param);
 
-//    Result getRole();
 
     Result<SysUserEntity> detail(Long id);
 
     Result retrievePassword(ResetPasswordDto param);
 
+    SysUserEntity mpFindById(Long id);
+
 }

+ 27 - 45
gis_admin/src/main/java/com/gis/admin/service/impl/SysRoleServiceImpl.java

@@ -37,19 +37,6 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
     @Autowired
     SysRoleMapper entityMapper;
 
-//    @Autowired
-//    SysRolePermMapper rolePermMapper;
-
-//    @Override
-//    public void saveRoleResource(Long roleId, Long resourceId) {
-//        entityMapper.saveRoleResource(roleId, resourceId);
-//    }
-//
-//    @Override
-//    public void deleteRoleResource(Long roleId) {
-//        entityMapper.deleteRoleResource(roleId);
-//    }
-
 
     @Override
     public Set<String> findRoleKeyByUserId(Long userId) {
@@ -81,31 +68,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
         return Result.success(roleEntity);
     }
 
-    @Override
-    public Result search(PageDto param) {
-//        startPage(param);
-//        Condition condition = new Condition(SysRoleEntity.class);
-//        // 参数名是属性
-//        String searchKey = param.getSearchKey();
-//        if (StringUtils.isNotBlank(searchKey)) {
-//            condition.and().andLike("roleName", "%" + param.getSearchKey()+ "%");
-//        }
-//        // 排除系统管理员
-//        condition.and().andNotEqualTo("roleKey", "sys_admin");
-//        PageInfo<SysRoleEntity> pageInfo = this.findAll(condition, param.getPageNum(), param.getPageSize());
-//        return Result.success(pageInfo);
-        return Result.success();
-    }
 
-//    @Override
-//    public void deleteUserRoleByUserId(Long userId) {
-//        entityMapper.deleteUserRoleByUserId(userId);
-//    }
-//
-//    @Override
-//    public void saveUserRole(Long userId, Long roleId) {
-//        entityMapper.saveUserRole(userId, roleId);
-//    }
+
+
+
 
     /**
      * 删除角色
@@ -145,15 +111,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
         return Result.success(roleEntity);
     }
 
-//    private List<SysRolePermEntity> getPermByRoleId(Long roleId){
-//       List<SysRolePermEntity> list = rolePermMapper.getPermByRoleId(roleId);
-//       return list;
-//    }
 
-//    @Override
-//    public List<Long> getPermIdByRoleId(Long roleId){
-//        return rolePermMapper.getPermIdByRoleId(roleId);
-//    }
 
     @Override
     public Result editStatus(Long id, Integer isDisable) {
@@ -174,6 +132,28 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
         return Result.success(lists);
     }
 
+
+    @Override
+    public Result enabledList() {
+        LambdaQueryWrapper<SysRoleEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysRoleEntity::getIsEnabled, 1);
+        return Result.success(this.list(wrapper));
+    }
+
+    @Override
+    public void saveUserRole(Long userId, Long roleId) {
+        entityMapper.saveUserRole(userId, roleId);
+    }
+
+    @Override
+    public void updateUserRole(Long userId, Long roleId) {
+        // 删除中间表的旧用户id
+        entityMapper.deleteUserRoleByUserId(userId);
+
+        // 重新添加
+        entityMapper.saveUserRole(userId, roleId);
+    }
+
     @Override
     public SysRoleEntity findByUserId(Long userId) {
         return entityMapper.findByUserId(userId);
@@ -226,6 +206,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
     }
 
 
+
+
     /**
      * 检查角色名称
      * @param roleName

+ 30 - 36
gis_admin/src/main/java/com/gis/admin/service/impl/SysUserServiceImpl.java

@@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gis.admin.entity.dto.*;
+import com.gis.admin.service.SysRoleService;
 import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.base.service.impl.IBaseService;
+import com.gis.common.constant.ErrorEnum;
 import com.gis.common.util.*;
 import com.gis.admin.entity.po.SysUserEntity;
 import com.gis.admin.mapper.SysUserMapper;
@@ -16,7 +19,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
@@ -33,11 +35,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
     private SysUserMapper entityMapper;
 
     @Autowired
-    HttpServletRequest request;
+    IBaseService iBaseService;
 
+    @Autowired
+    SysRoleService roleService;
 
-    /**重置密码redis key*/
-    final static String RESET_PASSWORD_KEY = "reset:password:";
 
 
     @Override
@@ -58,22 +60,35 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
             BeanUtils.copyProperties(param, entity);
             entity.setIsAdmin(0);
             entity.setPassword(PasswordUtils.encrypt(param.getUserName(), "123456", PasswordUtils.getStaticSalt()));
+            entity.setCreatorId(iBaseService.getUserId());
+
             this.save(entity);
-        } else {
-            entity = this.getById(id);
-            if (entity == null) {
-                log.error("用户不存在: {}", id);
-                return Result.failure("用户不存在");
-            }
 
+            // 保存角色
+            roleService.saveUserRole(entity.getId(), param.getRoleId());
+
+        } else {
+            entity = this.mpFindById(id);
+            Long dbRoleId = entity.getRoleId();
+            BaseRuntimeException.isNull(entity, ErrorEnum.FAILURE_SYS_2001);
             BeanUtils.copyProperties(param, entity);
             this.updateById(entity);
+            Long roleId = param.getRoleId();
+            if (!roleId.equals(dbRoleId)){
+                // 更新用户角色中间表
+                roleService.updateUserRole(id, roleId);
+            }
 
         }
 
+
+
         return Result.success();
     }
 
+
+
+
     @Override
     public Result removes(String ids) {
         List<String> idList = Arrays.asList(ids);
@@ -90,31 +105,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         return Result.success();
     }
 
-//    @Override
-//    public Result<SysUserEntity> search(PageDateDto param) {
-//        BaseUtil.startPage(param);
-//
-//        IPage<SysUserEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
-//        LambdaQueryWrapper<SysUserEntity> wrapper = new LambdaQueryWrapper<>();
-//
-//
-//        String startTime = param.getStartTime();
-//        String endTime = param.getEndTime();
-//        if (StringUtils.isNotBlank(startTime) || StringUtils.isNotBlank(endTime)){
-//            wrapper.between(SysUserEntity::getCreateTime, startTime, endTime);
-//        }
-//
-//        String searchKey = param.getSearchKey();
-//        if (StringUtils.isNotBlank(searchKey)){
-//            wrapper.like(SysUserEntity::getUserName, searchKey);
-//        }
-//
-//        wrapper.orderByDesc(SysUserEntity::getCreateTime);
-//
-//        IPage<SysUserEntity> result = this.page(page, wrapper);
-//
-//        return Result.success(result);
-//    }
 
     @Override
     public Result<SysUserEntity> search(UserPageDateDto param) {
@@ -167,7 +157,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         String oldPassword = Base64Converter.decodePassword(param.getOldPassword());
         param.setNewPassword(newPassword);
         param.setOldPassword(oldPassword);
-        SysUserEntity user = this.findByUserName(JwtUtil.getUsername(request.getHeader("token")));
+        SysUserEntity user = this.findByUserName(iBaseService.getUserName());
         updatePwd(param, user, true);
         return Result.success();
     }
@@ -281,6 +271,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
         return Result.success((Object) code);
     }
 
+    @Override
+    public SysUserEntity mpFindById(Long id) {
+        return entityMapper.detailMapper(id);
+    }
 
 
 }

+ 1 - 1
gis_admin/src/main/java/com/gis/admin/shiro/ShiroRealm.java

@@ -136,7 +136,7 @@ public class ShiroRealm extends AuthorizingRealm {
      */
     private SysUserEntity checkUserTokenIsEffect(String token) throws AuthenticationException {
         // 解密获得username,用于和数据库进行对比
-        String username = JwtUtil.getUsername(token);
+        String username = JwtUtil.getUserName(token);
         if (username == null) {
             throw new JwtAuthenticationException(5001, "token invalid");
         }

+ 4 - 0
gis_common/src/main/java/com/gis/common/base/service/impl/IBaseService.java

@@ -26,6 +26,10 @@ public class IBaseService {
        return JwtUtil.getUserId(getToken());
     }
 
+    public String getUserName(){
+        return JwtUtil.getUserName(getToken());
+    }
+
     public Long getRoleId(){
         return JwtUtil.getRoleId(getToken());
     }

+ 2 - 2
gis_common/src/main/java/com/gis/common/util/JwtUtil.java

@@ -126,7 +126,7 @@ public class JwtUtil {
      *
      * @return token中包含的用户名
      */
-    public static String getUsername(String token) {
+    public static String getUserName(String token) {
         DecodedJWT jwt = JWT.decode(token);
         Claim userName = jwt.getClaim("userName");
         Assert.notNull(userName, "token userName is null ");
@@ -276,7 +276,7 @@ public class JwtUtil {
     @Test
     public void testCheckToken(){
         String token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMzExMjMxMTE3OCIsInVzZXJOYW1lIjoiMTMxMTIzMTExNzgiLCJpYXQiOjE2MTM2MjAzNjcsImp0aSI6IjMyYTAwZDNiLTE2ODctNDUzNi04NmIwLWY4OTMzODQzNzNjMiJ9.5sV47Yf0HU4m6u77jmCziR3KhAGfiL5aUKxo57MImTI";
-        String username = getUsername(token);
+        String username = getUserName(token);
         Long userId = getUserId(token);
         System.out.println(username);
         System.out.println("id: " + userId );