UserController.java 9.36 KB
package com.server.web.controller;

import com.server.shiro.context.PermissionManage;
import com.server.shiro.persistent.bean.*;
import com.server.shiro.persistent.repository.MenuRepository;
import com.server.shiro.persistent.repository.RoleRepository;
import com.server.shiro.persistent.repository.UserRepository;
import com.server.shiro.persistent.service.SysRoleService;
import com.server.shiro.persistent.service.UserService;
import com.server.utils.MD5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 后台用户管理
 */
@RestController
@RequestMapping(BaseController.OSS_NAMESPACE + "/user")
public class UserController extends BaseController {

    @Autowired
    UserRepository userRepository;

    @Autowired
    MenuRepository menuRepository;

    @Autowired
    RoleRepository roleRepository;

    @Autowired
    UserService userService;

    @Autowired
    SysRoleService sysRoleService;

    @Autowired
    PermissionManage permissionManage;
    /**
     * 添加修改用户信息
     * @param id
     * @param username
     * @param password
     * @param realname
     * @param phone
     * @param remarks
     * @param status
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/save", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:save")
    public Map<String,Object> save(@RequestParam(defaultValue = "-1") long id,
                           @RequestParam String username,
                           @RequestParam(defaultValue = "") String password,
                           @RequestParam String realname,
                           @RequestParam String phone,
                           @RequestParam(defaultValue = "") String remarks,
                           @RequestParam long status,
                           @RequestParam int departmentId) {
            try {
                SysUser user = null;
                if(id == -1){  //添加
                    user = userRepository.getByUsernameIs(username);
                    if(user != null){
                        return error("-1", "用户名已存在", "");
                    }
                    user = new SysUser();
                    user.setCreateTime(new Date());
                }else{  //修改
                    user = userRepository.findOne(id);
                    if (user == null) {
                        return error("-1", "用户不存在", "");
                    }
                }
                user.setUsername(username);
                user.setPhone(phone);
                if((StringUtils.hasText(password))){
                    user.setPassword(MD5.md5(MD5.md5(password)));
                }
                user.setRealname(realname);
                user.setStatus(status);
                user.setRemarks(remarks);
                userRepository.save(user);
                permissionManage.reloadPermission();
                return success("成功");
            } catch (Exception e) {
                e.printStackTrace();
                return error("-1", "添加用户异常", "");
            }
    }

    /**
     * 查询用户信息
     * @param id
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/findOne",  method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:info")
    public Map<String,Object> findOne(@RequestParam long id) {
        try {
            SysUser user =  userRepository.findOne(id);
            return success(user);
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "添加用户异常", "");
        }
    }

    /**
     * 用户列表
     * @param request
     * @param userQuery
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/queryUserList", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
    public Map<String,Object> queryUserList(HttpServletRequest request,SysUserQuery userQuery){
        try{
            return success(userService.findSysUserPage(getPageable(request),userQuery));
        }catch (Exception e){
            e.printStackTrace();
            return  error("-1", "操作失败", "");
        }
    }

    /**
     * 用户模块列表
     * @param id
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/menuList", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:menuList")
    public Map<String,Object> menuList(@RequestParam long id) {
        try {
            SysUser user = userRepository.findOne(id); //查询选中用户
            List<SysMenu> list = menuRepository.findAll();
            List<UserMenuModel> menuList = userService.getMenu(user,list);
            return success(menuList);
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "添加用户异常", "");
        }
    }

    /**
     * 获取用户角色列表
     * @param id
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/roleList", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:roleList")
    public Map<String,Object> roleList(HttpServletRequest request, long id,SysRoleQuery roleQuery) {
        try {
            SysUser user = userRepository.findOne(id); //查询选中用户
            Page<SysRole> rolePage = sysRoleService.findSysRolePage(getPageable(request),roleQuery);
            return success(rolePage);
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "添加用户异常", "");
        }
    }

    /**
     * 获取当前用户所有角色ID
     * @param id
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getUserRole", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
    public Map<String,Object> getUserRole(@RequestParam long id) {
        try {
            SysUser user = userRepository.findOne(id); //查询选中用户
            String roles = "";
            for (SysRole role:user.getRoles()){
                roles+=role.getId()+",";
            }
            return success(roles);
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "添加用户异常", "");
        }
    }

    /**
     * 用户分配模块
     * @param id
     * @param menus
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/saveUserMenu", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:saveMenu")
    public Map<String,Object> saveUserMenu(@RequestParam long id,@RequestParam String menus) {
        try {
            SysUser user = userRepository.findOne(id); //查询选中用户
            String menu [] = menus.split(",");
            Set<SysMenu> menuSet = user.getMenus();
            menuSet.clear();
            for (String m :menu){
                SysMenu sysMenu = menuRepository.findOne(new Long(m));
                menuSet.add(sysMenu);
            }
            user.setMenus(menuSet);
            userRepository.save(user);
            return success("成功");
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "用户分配模块异常", "");
        }
    }

    /**
     * 用户分配角色
     * @param id
     * @param roles
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/saveUserRole", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:saveRole")
    public Map<String,Object> saveUserRole(@RequestParam long id,@RequestParam String roles) {
        try {
            SysUser user = userRepository.findOne(id); //查询选中用户
            String role [] = roles.split(",");
            Set<SysRole> roleSet = user.getRoles();
            roleSet.clear();
            for (String r :role){
                SysRole sysRole = roleRepository.findOne(new Long(r));
                roleSet.add(sysRole);
            }
            user.setRoles(roleSet);
            userRepository.save(user);
            return success("成功");
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "用户分配角色异常", "");
        }
    }

    /**
     * 修改用户密码
     * @param password
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/updatePassword", method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json")
//    @RequiresPermissions("user:save")
    public Map<String,Object> updatePassword(@RequestParam String password) {
        try {
            SysUser sysUser =  getSysUser();
            SysUser user = userRepository.findOne(sysUser.getId());
            user.setPassword(MD5.md5(MD5.md5(password)));
            userRepository.save(user);
            return success("成功");
        } catch (Exception e) {
            e.printStackTrace();
            return error("-1", "添加用户异常", "");
        }
    }

    public static void main(String[] args) {
        System.out.println(MD5.md5(MD5.md5("V2tPg0.wgJ4")));
    }
}