فهرست منبع

add access user manager

木子李·De 4 سال پیش
والد
کامیت
a990603d67

+ 102 - 0
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/AccessUserController.java

@@ -0,0 +1,102 @@
+
+package com.anjiplus.template.gaea.business.modules.accessuser.controller;
+
+import com.anji.plus.gaea.annotation.Permission;
+import com.anji.plus.gaea.bean.ResponseBean;
+import com.anji.plus.gaea.curd.controller.GaeaBaseController;
+import com.anji.plus.gaea.curd.service.GaeaBaseService;
+import com.anji.plus.gaea.holder.UserContentHolder;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.GaeaUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUser;
+import com.anjiplus.template.gaea.business.modules.accessuser.service.AccessUserService;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.AccessUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.param.AccessUserParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import io.swagger.annotations.Api;
+
+import java.util.Map;
+
+/**
+* @desc 用户管理 controller
+* @author 木子李·De <lide1202@hotmail.com>
+* @date 2019-02-17 08:50:11.902
+**/
+@RestController
+@Api(tags = "用户管理管理")
+@RequestMapping("/accessUser")
+@Permission(code = "userManage", name = "用户管理")
+public class AccessUserController extends GaeaBaseController<AccessUserParam, AccessUser, AccessUserDto> {
+
+    @Autowired
+    private AccessUserService accessUserService;
+
+    @Override
+    public GaeaBaseService<AccessUserParam, AccessUser> getService() {
+        return accessUserService;
+    }
+
+    @Override
+    public AccessUser getEntity() {
+        return new AccessUser();
+    }
+
+    @Override
+    public AccessUserDto getDTO() {
+        return new AccessUserDto();
+    }
+
+
+    /**
+     * 获取用户的角色树
+     * @return
+     */
+    @Permission( code = "grantRole", name = "分配角色")
+    @GetMapping("/roleTree/{loginName}")
+    public ResponseBean getRoleTree(@PathVariable("loginName")String loginName){
+        String operator = UserContentHolder.getContext().getUsername();
+        Map map = accessUserService.getRoleTree(loginName, operator);
+        return responseSuccessWithData(map);
+    }
+
+    /**
+     * 保存用户的角色树
+     * @return
+     */
+    @Permission( code = "grantRole", name = "分配角色")
+    @PostMapping("/saveRoleTree")
+    public ResponseBean saveRoleTree(@RequestBody AccessUserDto dto){
+        Boolean data = accessUserService.saveRoleTree(dto);
+        return responseSuccessWithData(data);
+    }
+
+
+    /**
+     * 重置密码
+     * @param dto
+     * @return
+     */
+    @Permission( code = "resetPassword", name = "重置密码")
+    @PostMapping({"/resetPassword"})
+    public ResponseBean resetPassword(@RequestBody @Validated GaeaUserDto dto) {
+        Boolean data = accessUserService.resetPassword(dto);
+        return responseSuccessWithData(data);
+    }
+
+    /**
+     * 简单实现登录
+     * @param dto
+     * @return
+     */
+    @PostMapping({"/login"})
+    public ResponseBean login(@RequestBody @Validated GaeaUserDto dto) {
+        return responseSuccessWithData(accessUserService.login(dto));
+    }
+
+}

+ 48 - 0
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/entity/AccessUser.java

@@ -0,0 +1,48 @@
+
+package com.anjiplus.template.gaea.business.modules.accessuser.dao.entity;
+
+import lombok.Data;
+import com.anji.plus.gaea.curd.entity.GaeaBaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import javax.validation.constraints.*;
+import java.util.Date;
+/**
+* @description 用户管理 entity
+* @author 木子李·De <lide1202@hotmail.com>
+* @date 2019-02-17 08:50:11.902
+**/
+@TableName(value="access_user")
+@Data
+public class AccessUser extends GaeaBaseEntity {
+
+    /**  登录名 */
+    private String loginName;
+
+    /** 密码 */
+    private String password;
+
+    /** 真实用户 */
+    private String realName;
+
+    /** 手机号码 */
+    private String phone;
+
+    /** 用户邮箱 */
+    private String email;
+
+    /** 备注 */
+    private String remark;
+
+    /** 0--已禁用 1--已启用  DIC_NAME=ENABLE_FLAG */
+    private Integer enableFlag;
+
+    /**  0--未删除 1--已删除 DIC_NAME=DEL_FLAG */
+    private Integer deleteFlag;
+
+    /** 最后一次登录IP */
+    private String lastLoginIp;
+
+    /** 最后一次登陆时间 */
+    private Date lastLoginTime;
+
+}

+ 44 - 0
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java

@@ -0,0 +1,44 @@
+
+package com.anjiplus.template.gaea.business.modules.accessuser.service;
+
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.AccessUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.GaeaUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUser;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.param.AccessUserParam;
+import com.anji.plus.gaea.curd.service.GaeaBaseService;
+
+import java.util.Map;
+
+/**
+* @desc AccessUser 用户管理服务接口
+* @author 木子李·De <lide1202@hotmail.com>
+* @date 2019-02-17 08:50:11.902
+**/
+public interface AccessUserService extends GaeaBaseService<AccessUserParam, AccessUser> {
+
+    /** 获取用户的角色树
+     * @param loginName 被操作的对象
+     * @param operator 当前登录者
+     * @return
+     */
+    Map getRoleTree(String loginName, String operator);
+
+
+    /** 保存用户的角色树
+     * @param accessUserDto
+     * @return
+     */
+    Boolean saveRoleTree(AccessUserDto accessUserDto);
+
+    /** 重置密码
+     * @param gaeaUserDto
+     * @return
+     */
+    Boolean resetPassword(GaeaUserDto gaeaUserDto);
+
+    /** 用户登录
+     * @param gaeaUserDto
+     * @return
+     */
+    Map login(GaeaUserDto gaeaUserDto);
+}

+ 158 - 0
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java

@@ -0,0 +1,158 @@
+
+package com.anjiplus.template.gaea.business.modules.accessuser.service.impl;
+
+import com.anji.plus.gaea.bean.TreeNode;
+import com.anji.plus.gaea.cache.CacheHelper;
+import com.anji.plus.gaea.exception.BusinessExceptionBuilder;
+import com.anji.plus.gaea.utils.GaeaBeanUtils;
+import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper;
+import com.anji.plus.gaea.utils.GaeaUtils;
+import com.anji.plus.gaea.utils.JwtBean;
+import com.anjiplus.template.gaea.business.code.ResponseCode;
+import com.anjiplus.template.gaea.business.modules.accessrole.dao.AccessRoleMapper;
+import com.anjiplus.template.gaea.business.modules.accessrole.dao.entity.AccessRole;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.AccessUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.GaeaUserDto;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.AccessUserRoleMapper;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUser;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUserRole;
+import com.anjiplus.template.gaea.business.modules.accessuser.service.AccessUserService;
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.AccessUserMapper;
+import com.anjiplus.template.gaea.business.util.MD5Util;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.collect.Maps;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+* @desc AccessUser 用户管理服务实现
+* @author 木子李·De <lide1202@hotmail.com>
+* @date 2019-02-17 08:50:11.902
+**/
+@Service
+public class AccessUserServiceImpl implements AccessUserService {
+
+    @Autowired
+    private AccessRoleMapper accessRoleMapper;
+
+    @Autowired
+    private AccessUserMapper accessUserMapper;
+
+    @Autowired
+    private AccessUserRoleMapper accessUserRoleMapper;
+
+    @Override
+    public GaeaBaseMapper<AccessUser> getMapper() {
+      return accessUserMapper;
+    }
+
+    @Autowired
+    private JwtBean jwtBean;
+
+    @Autowired
+    private CacheHelper cacheHelper;
+
+    @Override
+    public Map getRoleTree(String loginName, String operator) {
+        Map<String, Object> result = new HashMap<String, Object>();
+        List<TreeNode> treeData = new ArrayList<>();
+        List checkedKeys = new ArrayList();
+
+        // 角色树
+        LambdaQueryWrapper<AccessRole> roleQuery = Wrappers.lambdaQuery();
+        roleQuery.select(AccessRole::getRoleCode, AccessRole::getRoleName);
+        // 按operator去筛选role 后面再加where
+        List<AccessRole> roleList = accessRoleMapper.selectList(roleQuery);
+        if(roleList == null || roleList.isEmpty()){
+            result.put("treeData", treeData);
+            result.put("checkedKeys", checkedKeys);
+            return result;
+        }
+        treeData = roleList.stream().map(role -> {
+            TreeNode treeNode = new TreeNode();
+            treeNode.setId(role.getRoleCode());
+            treeNode.setLabel(role.getRoleName());
+            return treeNode;
+        }).collect(Collectors.toList());
+
+        // 该用户已保存的角色
+        LambdaQueryWrapper<AccessUserRole> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(AccessUserRole::getRoleCode)
+                .eq(AccessUserRole::getLoginName, loginName);
+        checkedKeys = accessUserRoleMapper.selectObjs(queryWrapper);
+
+        result.put("treeData", treeData);
+        result.put("checkedKeys", checkedKeys);
+        return result;
+    }
+
+    @Override
+    public Boolean saveRoleTree(AccessUserDto accessUserDto) {
+        // 校验
+        String loginName = accessUserDto.getLoginName();
+        List<String> roleCodeList = accessUserDto.getRoleCodeList();
+        if(StringUtils.isBlank(loginName)){
+            throw BusinessExceptionBuilder.build(ResponseCode.Not_Empty, loginName);
+        }
+        if(roleCodeList == null || roleCodeList.isEmpty()){
+            throw BusinessExceptionBuilder.build(ResponseCode.Not_Empty, roleCodeList);
+        }
+
+        // 先清除该用户已保存的角色
+        LambdaQueryWrapper<AccessUserRole> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(AccessUserRole::getLoginName, loginName);
+        accessUserRoleMapper.delete(wrapper);
+
+        // 保存勾选的角色
+        roleCodeList.stream().forEach(roleCode -> {
+            AccessUserRole accessUserRole = new AccessUserRole();
+            accessUserRole.setLoginName(loginName);
+            accessUserRole.setRoleCode(roleCode);
+            accessUserRoleMapper.insert(accessUserRole);
+        });
+        return true;
+    }
+
+    @Override
+    public Boolean resetPassword(GaeaUserDto gaeaUserDto) {
+        return false;
+    }
+
+    @Override
+    public Map login(GaeaUserDto gaeaUserDto) {
+
+        String loginName = gaeaUserDto.getLoginName();
+        String password = gaeaUserDto.getPassword();
+        //1.判断用户是否存在
+        LambdaQueryWrapper<AccessUser> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(AccessUser::getLoginName, loginName);
+        AccessUser accessUser = accessUserMapper.selectOne(wrapper);
+        if (null == accessUser || !accessUser.getPassword().equals(MD5Util.encrypt(password))) {
+            throw BusinessExceptionBuilder.build(ResponseCode.LOGIN_ERROR);
+        }
+
+        Map<String, String> map = Maps.newHashMap();
+
+        //将登录信息缓存,默认一小时
+        if (cacheHelper.exist(loginName)) {
+            map.put("token", cacheHelper.stringGet(loginName));
+            map.put("loginName", loginName);
+        } else {
+            String uuid = GaeaUtils.UUID();
+            String token = jwtBean.createToken(loginName, uuid);
+            cacheHelper.stringSetExpire(loginName, token, 3600);
+            map.put("token", token);
+            map.put("loginName", loginName);
+        }
+
+        return map;
+    }
+}