Vue前端项目-用户管理-增删改(下)

目录

 

1、查询字典数据

2、查询参数配置(如初始化密码)

3、查询部门下拉树

4、查询用户信息

5、新增、修改和删除用户


1、查询字典数据

前端 api:

// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
  return request({
    url: '/system/dict/data/dictType/' + dictType,
    method: 'get'
  })
}

Controller 层:

package com.ruoyi.project.system.controller;

/**
 * 数据字典信息
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/dict/data")
public class SysDictDataController extends BaseController {
    @Resource
    private ISysDictDataService dictDataService;
    /**
     * 根据字典类型查询字典数据信息
     */
    @GetMapping(value = "/dictType/{dictType}")
    public AjaxResult dictType(@PathVariable String dictType)
    {
        return AjaxResult.success(dictDataService.selectDictDataByType(dictType));
    }
}

Service 接口层:

package com.ruoyi.project.system.service;

import com.ruoyi.project.system.domain.SysDictData;

import java.util.List;

/**
 * 字典 业务层
 *
 * @author ruoyi
 */
public interface ISysDictDataService {

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据集合信息
     */
    public List selectDictDataByType(String dictType);

}

Service 实现类层

package com.ruoyi.project.system.service.impl;

/**
 * 字典 业务层处理
 *
 * @author ruoyi
 */
@Service
public class SysDictDataServiceImpl implements ISysDictDataService {
    @Resource
    private SysDictDataMapper dictDataMapper;

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据集合信息
     */
    @Override
    public List selectDictDataByType(String dictType) {
        return dictDataMapper.selectDictDataByType(dictType);
    }

}

Mapper 接口层:

package com.ruoyi.project.system.mapper;

/**
 * 字典表 数据层
 *
 * @author ruoyi
 */
public interface SysDictDataMapper {

    /**
     * 根据字典类型查询字典数据
     *
     * @param dictType 字典类型
     * @return 字典数据集合信息
     */
    public List selectDictDataByType(String dictType);

}

Mapper 映射文件:

创建 resources / mybatis / system / SysDictDataMapper.xml 文件





    
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
        select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark
		from sys_dict_data
    

    

2、查询参数配置(如初始化密码)

前端 API : 

// 根据参数键名查询参数值
export function getConfigKey(configKey) {
  return request({
    url: '/system/config/configKey/' + configKey,
    method: 'get'
  })
}

Controller 层:

package com.ruoyi.project.system.controller;

/**
 * 参数配置 信息操作处理
 *
 * @author ruoyi
 */

@RestController
@RequestMapping("/system/config")
public class SysConfigController extends BaseController {

    @Resource
    private ISysConfigService configService;

    /**
     * 根据参数键名查询参数值
     */
    @GetMapping(value = "/configKey/{configKey}")
    public AjaxResult getConfigKey(@PathVariable String configKey) {
        return AjaxResult.success(configService.selectConfigByKey(configKey));
    }
}

Service 接口层:

package com.ruoyi.project.system.service;

/**
 * 参数配置 服务层
 *
 * @author ruoyi
 */
public interface ISysConfigService {

    /**
     * 根据键名查询参数配置信息
     *
     * @param configKey 参数键名
     * @return 参数键值
     */
    public String selectConfigByKey(String configKey);
}

Service 接口实现类层:

package com.ruoyi.project.system.service.impl;

/**
 * 参数配置 服务层实现
 *
 * @author ruoyi
 */
@Service
public class SysConfigServiceImpl implements ISysConfigService {
    @Resource
    private SysConfigMapper configMapper;

    /**
     * 根据键名查询参数配置信息
     *
     * @param configKey 参数key
     * @return 参数键值
     */
    @Override
    public String selectConfigByKey(String configKey) {
        SysConfig config = new SysConfig();
        config.setConfigKey(configKey);
        SysConfig retConfig = configMapper.selectConfig(config);
        return StringUtils.isNotNull(retConfig) ? retConfig.getConfigValue() : "";
    }
}

SysConfig 实体类: 

package com.ruoyi.project.system.domain;

/**
 * 参数配置表 sys_config
 *
 * @author ruoyi
 */
public class SysConfig extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 参数主键 */
    private Long configId;

    /** 参数名称 */
    private String configName;

    /** 参数键名 */
    private String configKey;

    /** 参数键值 */
    private String configValue;

    /** 系统内置(Y是 N否) */
    private String configType;

    public Long getConfigId()
    {
        return configId;
    }

    public void setConfigId(Long configId)
    {
        this.configId = configId;
    }

    public String getConfigName()
    {
        return configName;
    }

    public void setConfigName(String configName)
    {
        this.configName = configName;
    }

    public String getConfigKey()
    {
        return configKey;
    }

    public void setConfigKey(String configKey)
    {
        this.configKey = configKey;
    }

    public String getConfigValue()
    {
        return configValue;
    }

    public void setConfigValue(String configValue)
    {
        this.configValue = configValue;
    }

    public String getConfigType()
    {
        return configType;
    }

    public void setConfigType(String configType)
    {
        this.configType = configType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("configId", getConfigId())
                .append("configName", getConfigName())
                .append("configKey", getConfigKey())
                .append("configValue", getConfigValue())
                .append("configType", getConfigType())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}

Mapper接口层:

package com.ruoyi.project.system.mapper;

public interface SysConfigMapper {

    /**
     * 查询参数配置信息
     *
     * @param config 参数配置信息
     * @return 参数配置信息
     */
    public SysConfig selectConfig(SysConfig config);

}

Mapper 映射文件:

创建 resources / mybatis / system / SysConfigMapper.xml 文件





    
        
        
        
        
        
        
        
        
        
    

    
        select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark
		from sys_config
    

    
    
        
            
                and config_id = #{configId}
            
            
                and config_key = #{configKey}
            
        
    

    

3、查询部门下拉树

前端 API :

// 查询部门下拉树结构
export function treeselect() {
  return request({
    url: '/system/dept/treeselect',
    method: 'get'
  })
}

Controller 层:

package com.ruoyi.project.system.controller;
/**
 * 部门信息
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/dept")
public class SysDeptController extends BaseController {
    @Resource
    private ISysDeptService deptService;

    /**
     * 获取部门下拉树列表
     */
    @GetMapping("/treeselect")
    public AjaxResult treeselect(SysDept dept) {
        List depts = deptService.selectDeptList(dept);
        return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
    }

}

Service 接口层:

package com.ruoyi.project.system.service;

/**
 * 部门管理 服务层
 *
 * @author ruoyi
 */
public interface ISysDeptService {

    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    public List selectDeptList(SysDept dept);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param depts 部门列表
     * @return 下拉树结构列表
     */
    public List buildDeptTreeSelect(List depts);
}

Service 实现类:

package com.ruoyi.project.system.service.impl;
/**
 * 部门管理 服务实现
 *
 * @author ruoyi
 */
@Service
public class SysDeptServiceImpl implements ISysDeptService {
    @Resource
    private SysDeptMapper deptMapper;

    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    @Override
    public List selectDeptList(SysDept dept) {
        return deptMapper.selectDeptList(dept);
    }

    /**
     * 构建前端所需要下拉树结构
     *
     * @param depts 部门列表
     * @return 下拉树结构列表
     */
    @Override
    public List buildDeptTreeSelect(List depts) {
        List deptTrees = buildDeptTree(depts);
        return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
    }

    /**
     * 构建前端所需要树结构
     *
     * @param depts 部门列表
     * @return 树结构列表
     */
    public List buildDeptTree(List depts) {
        List returnList = new ArrayList();
        List tempList = new ArrayList();
        for (SysDept dept : depts) {
            tempList.add(dept.getDeptId());
        }
        for (Iterator iterator = depts.iterator(); iterator.hasNext(); ) {
            SysDept dept = (SysDept) iterator.next();
            // 如果是顶级节点, 遍历该父节点的所有子节点
            if (!tempList.contains(dept.getParentId())) {
                recursionFn(depts, dept);
                returnList.add(dept);
            }
        }
        if (returnList.isEmpty()) {
            returnList = depts;
        }
        return returnList;
    }

    /**
     * 递归列表
     */
    private void recursionFn(List list, SysDept t) {
        // 得到子节点列表
        List childList = getChildList(list, t);
        t.setChildren(childList);
        for (SysDept tChild : childList) {
            if (hasChild(list, tChild)) {
                // 判断是否有子节点
                Iterator it = childList.iterator();
                while (it.hasNext()) {
                    SysDept n = (SysDept) it.next();
                    recursionFn(list, n);
                }
            }
        }
    }

    /**
     * 得到子节点列表
     */
    private List getChildList(List list, SysDept t) {
        List tlist = new ArrayList();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            SysDept n = (SysDept) it.next();
            if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) {
                tlist.add(n);
            }
        }
        return tlist;
    }

    /**
     * 判断是否有子节点
     */
    private boolean hasChild(List list, SysDept t) {
        return getChildList(list, t).size() > 0 ? true : false;
    }


}

Mapper 接口:

package com.ruoyi.project.system.mapper;

import com.ruoyi.project.system.domain.SysDept;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 部门管理 数据层
 *
 * @author ruoyi
 */
public interface SysDeptMapper {
    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    public List selectDeptList(SysDept dept);
}

Mapper 映射文件:

创建 resources / mybatis / system / SysDeptMapper.xml 文件





    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
        from sys_dept d
    

    

4、查询用户信息

前端 API 接口:

// 查询用户详细
export function getUser(userId) {
  return request({
    url: '/system/user/' + praseStrEmpty(userId),
    method: 'get'
  })
}

Controller 层: 

package com.ruoyi.project.system.controller;
/**
 * 用户信息
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
    @Resource
    private ISysUserService userService;
    @Resource
    private ISysRoleService roleService;
    @Resource
    private ISysPostService postService;

    /**
     * 根据用户编号获取详细信息
     */
    @GetMapping(value = {"/", "/{userId}"})
    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
        AjaxResult ajax = AjaxResult.success();
        ajax.put("roles", roleService.selectRoleAll());
        ajax.put("posts", postService.selectPostAll());
        if (StringUtils.isNotNull(userId)) {
            ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId));
            ajax.put("postIds", postService.selectPostListByUserId(userId));
            ajax.put("roleIds", roleService.selectRoleListByUserId(userId));
        }
        return ajax;
    }
}

其中: AjaxResult.DATA_TAG 的值为 "data"

Service 层:

ISysRoleService 接口: 

package com.ruoyi.project.system.service;

/**
 * 角色业务层
 *
 * @author ruoyi
 */
public interface ISysRoleService {
    /**
     * 查询所有角色
     *
     * @return 角色列表
     */
    public List selectRoleAll();

    /**
     * 根据用户ID获取角色选择框列表
     *
     * @param userId 用户ID
     * @return 选中角色ID列表
     */
    public List selectRoleListByUserId(Long userId);
}

ISysRoleService 接口实现类: 

package com.ruoyi.project.system.service.impl;

/**
 * 角色 业务层处理
 *
 * @author ruoyi
 */
@Service
public class SysRoleServiceImpl implements ISysRoleService {
    @Resource
    private SysRoleMapper roleMapper;

    /**
     * 查询所有角色
     *
     * @return 角色列表
     */
    public List selectRoleAll() {
        return roleMapper.selectRoleAll();
    }

    /**
     * 根据用户ID获取角色选择框列表
     *
     * @param userId 用户ID
     * @return 选中角色ID列表
     */
    public List selectRoleListByUserId(Long userId) {
        return roleMapper.selectRoleListByUserId(userId);
    }

}
SysRoleMapper 接口:
package com.ruoyi.project.system.mapper;
/**
 * 角色表 数据层
 *
 * @author ruoyi
 */
public interface SysRoleMapper {

    /**
     * 查询所有角色
     *
     * @return 角色列表
     */
    public List selectRoleAll();
    /**
     * 根据用户ID获取角色选择框列表
     *
     * @param userId 用户ID
     * @return 选中角色ID列表
     */
    public List selectRoleListByUserId(Long userId);
}

Mapper 映射文件:

创建 resources / mybatis / system / SysRoleMapper.xml 文件





	
		
		
		
		
		
		
		
		
		
		
		
		
	
	
	
	    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope,
            r.status, r.del_flag, r.create_time, r.remark 
        from sys_role r
	        left join sys_user_role ur on ur.role_id = r.role_id
	        left join sys_user u on u.user_id = ur.user_id
	        left join sys_dept d on u.dept_id = d.dept_id
    

	
	

 

ISysPostService 接口:

package com.ruoyi.project.system.service;

/**
 * 岗位信息 服务层
 *
 * @author ruoyi
 */
public interface ISysPostService {
    /**
     * 查询所有岗位
     *
     * @return 岗位列表
     */
    public List selectPostAll();

     /**
     * 根据用户ID获取岗位选择框列表
     *
     * @param userId 用户ID
     * @return 选中岗位ID列表
     */
    public List selectPostListByUserId(Long userId);

}

ISysPostService 接口实现类:

package com.ruoyi.project.system.service.impl;

/**
 * 岗位信息 服务层处理
 *
 * @author ruoyi
 */
@Service
public class SysPostServiceImpl implements ISysPostService {
    @Resource
    private SysPostMapper postMapper;


    /**
     * 查询所有岗位
     *
     * @return 岗位列表
     */
    @Override
    public List selectPostAll() {
        return postMapper.selectPostAll();
    }

    /**
     * 根据用户ID获取岗位选择框列表
     *
     * @param userId 用户ID
     * @return 选中岗位ID列表
     */
    public List selectPostListByUserId(Long userId) {
        return postMapper.selectPostListByUserId(userId);
    }
}
SysPostMapper 接口
package com.ruoyi.project.system.mapper;

/**
 * 岗位信息 数据层
 *
 * @author ruoyi
 */
public interface SysPostMapper {

    /**
     * 查询所有岗位
     *
     * @return 岗位列表
     */
    public List selectPostAll();
    /**
     * 根据用户ID获取岗位选择框列表
     *
     * @param userId 用户ID
     * @return 选中岗位ID列表
     */
    public List selectPostListByUserId(Long userId);

}

Mapper 映射文件:

创建 resources / mybatis / system / SysPostMapper.xml 文件





    
        
        
        
        
        
        
        
        
        
        
    

    
        select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark
		from sys_post
    

    
    

ISysUserService 接口:
package com.ruoyi.project.system.service;

import com.ruoyi.project.system.domain.SysUser;

import java.util.List;

/**
 * 用户 业务层
 *
 * @author ruoyi
 */
public interface ISysUserService {

     /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    public SysUser selectUserById(Long userId);

}

ISysUserService 接口实现类:

package com.ruoyi.project.system.service.impl;

/**
 * 用户 业务层处理
 *
 * @author ruoyi
 */
@Service
public class SysUserServiceImpl implements ISysUserService {
    @Resource
    private SysUserMapper userMapper;

     /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    @Override
    public SysUser selectUserById(Long userId) {
        return userMapper.selectUserById(userId);
    }
}
SysUserMapper 接口:
package com.ruoyi.project.system.mapper;

public interface SysUserMapper {

     /**
     * 通过用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户对象信息
     */
    public SysUser selectUserById(Long userId);
}

Mapper 映射文件:

创建 resources / mybatis / system / SysUserMapper.xml 文件





    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    
	
	
        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
        d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
        from sys_user u
		    left join sys_dept d on u.dept_id = d.dept_id
		    left join sys_user_role ur on u.user_id = ur.user_id
		    left join sys_role r on r.role_id = ur.role_id
    
	
	
	
 

5、新增、修改和删除用户

前端 API :

// 新增用户
export function addUser(data) {
  return request({
    url: '/system/user',
    method: 'post',
    data: data
  })
}

// 修改用户
export function updateUser(data) {
  return request({
    url: '/system/user',
    method: 'put',
    data: data
  })
}
 
// 删除用户
export function delUser(userId) {
  return request({
    url: '/system/user/' + userId,
    method: 'delete'
  })
}

Controller 层: 

package com.ruoyi.project.system.controller;
/**
 * 用户信息
 *
 * @author ruoyi
 */
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
    @Resource
    private ISysUserService userService;

    /**
     * 新增用户
     */
    @PostMapping
    public AjaxResult add(@Validated @RequestBody SysUser user) {
        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) {
            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
        } else if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
        } else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
        }
        user.setCreateBy(SecurityUtils.getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        return toAjax(userService.insertUser(user));
    }

    /**
     * 修改用户
     */
    @PutMapping
    public AjaxResult edit(@Validated @RequestBody SysUser user) {
        userService.checkUserAllowed(user);
        if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
        } else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
        }
        user.setUpdateBy(SecurityUtils.getUsername());
        return toAjax(userService.updateUser(user));
    }

    /**
     * 删除用户
     */
    @DeleteMapping("/{userIds}")
    public AjaxResult remove(@PathVariable Long[] userIds) {
        return toAjax(userService.deleteUserByIds(userIds));
    }
}

由于篇幅原因,后面的部分也不需要弄出来了

 

 

你可能感兴趣的:(Spring,Boot,用户管理,若依项目-用户管理,SpringBoot增删改查)