1、操作层
package com.dragonwu.controller;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dragonwu.domain.SysUser;
import com.dragonwu.model.R;
import com.dragonwu.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Arrays;
@Api(tags = "员工管理")
@RequestMapping("/users")
@RestController
public class SysUserController {
@Autowired
private SysUserService sysUserService ;
@GetMapping
@ApiImplicitParams({
@ApiImplicitParam(name = "current" ,value = "当前页") ,
@ApiImplicitParam(name = "size" ,value = "每页显示的条数") ,
@ApiImplicitParam(name = "mobile" ,value = "员工的手机号码") ,
@ApiImplicitParam(name = "fullname" ,value = "员工的全名称") ,
})
@PreAuthorize("hasAuthority('sys_user_query')")
public R<Page<SysUser>> findByPage(@ApiIgnore Page<SysUser> page ,String mobile ,String fullname){
page.addOrder(OrderItem.desc("last_update_time")) ;
Page<SysUser> pageData = sysUserService.findByPage(page,mobile ,fullname) ;
return R.ok(pageData) ;
}
@PostMapping
@ApiOperation(value = "新增员工")
@ApiImplicitParams({
@ApiImplicitParam(name = "sysUser" ,value = "sysUser 的json数据")
})
@PreAuthorize("hasAuthority('sys_user_create')")
public R addUser(@RequestBody SysUser sysUser){
Long userId = Long.valueOf(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());
sysUser.setCreateBy(userId);
boolean isOk = sysUserService.addUser(sysUser) ;
if(isOk){
return R.ok() ;
}
return R.fail("新增失败") ;
}
@PostMapping("/delete")
@ApiOperation(value = "删除用户")
@PreAuthorize("hasAuthority('sys_user_delete')")
public R deleteUser( @RequestBody Long ids[] ){
boolean b = sysUserService.removeByIds(Arrays.asList(ids));
if(b){
return R.ok() ;
}
return R.fail() ;
}
}
2、服务层
package com.dragonwu.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dragonwu.domain.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
import java.io.Serializable;
import java.util.Collection;
public interface SysUserService extends IService<SysUser>{
/**
* 分页查询员工
* @param page
* 分页参数
* @param mobile
* 员工的手机号
* @param fullname
* 员工的全名称
* @return
*/
Page<SysUser> findByPage(Page<SysUser> page, String mobile, String fullname);
/**
* 新增员工
* @param sysUser
* @return
*/
boolean addUser(SysUser sysUser);
}
实现类
package com.dragonwu.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dragonwu.domain.SysUser;
import com.dragonwu.domain.SysUserRole;
import com.dragonwu.mapper.SysUserMapper;
import com.dragonwu.service.SysUserRoleService;
import com.dragonwu.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService{
@Autowired
private SysUserRoleService sysUserRoleService ;
/**
* 分页查询员工
*
* @param page 分页参数
* @param mobile 员工的手机号
* @param fullname 员工的全名称
* @return
*/
@Override
public Page<SysUser> findByPage(Page<SysUser> page, String mobile, String fullname) {
Page<SysUser> pageData = page(page,
new LambdaQueryWrapper<SysUser>()
.like(!StringUtils.isEmpty(mobile), SysUser::getMobile, mobile)
.like(!StringUtils.isEmpty(fullname), SysUser::getFullname, fullname)
);
List<SysUser> records = pageData.getRecords();
if(!CollectionUtils.isEmpty(records)){
for (SysUser record : records) {
List<SysUserRole> userRoles = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, record.getId()));
if(!CollectionUtils.isEmpty(userRoles)){
record.setRole_strings(
userRoles.stream().
map(sysUserRole -> sysUserRole.getRoleId().toString())
.collect(Collectors.joining(",")));
}
}
}
return pageData;
}
/**
* 新增员工
*
* @param sysUser
* @return
*/
@Override
@Transactional
public boolean addUser(SysUser sysUser) {
// 1 用户的密码
String password = sysUser.getPassword();
// 用户的角色Ids
String role_strings = sysUser.getRole_strings();
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(password); // 加密密码
sysUser.setPassword(encode); // 设置密码
boolean save = super.save(sysUser);
if(save){
// 给用户新增角色数据
if(!StringUtils.isEmpty(role_strings)){
String[] roleIds = role_strings.split(",");
List<SysUserRole> sysUserRoleList = new ArrayList<>(roleIds.length) ;
for (String roleId : roleIds) {
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setRoleId(Long.valueOf(roleId));
sysUserRole.setUserId(sysUser.getId());
sysUserRoleList.add(sysUserRole) ;
}
sysUserRoleService.saveBatch(sysUserRoleList) ;
}
}
return save;
}
@Override
public boolean removeByIds(Collection<? extends Serializable> idList) {
boolean b = super.removeByIds(idList);
sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId,idList)) ;
return b;
}
}
3、实体类
package com.dragonwu.domain;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springside.modules.utils.base.annotation.NotNull;
/**
* 平台用户
*/
@ApiModel(value="com-dragonwu-domain-SysUser")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_user")
public class SysUser {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键")
private Long id;
/**
* 账号
*/
@TableField(value = "username")
@ApiModelProperty(value="账号")
@NotNull
private String username;
/**
* 密码
*/
@TableField(value = "password")
@ApiModelProperty(value="密码")
@NotNull
private String password;
/**
* 姓名
*/
@TableField(value = "fullname")
@ApiModelProperty(value="姓名")
private String fullname;
/**
* 手机号
*/
@TableField(value = "mobile")
@ApiModelProperty(value="手机号")
@NotNull
private String mobile;
/**
* 邮箱
*/
@TableField(value = "email")
@ApiModelProperty(value="邮箱")
@NotNull
private String email;
/**
* 状态 0-无效; 1-有效;
*/
@TableField(value = "status")
@ApiModelProperty(value="状态 0-无效; 1-有效;")
private Byte status;
/**
* 创建人
*/
@TableField(value = "create_by")
@ApiModelProperty(value="创建人")
private Long createBy;
/**
* 修改人
*/
@TableField(value = "modify_by",fill = FieldFill.UPDATE)
@ApiModelProperty(value="修改人")
private Long modifyBy;
/**
* 创建时间
*/
@TableField(value = "created",fill = FieldFill.INSERT)
@ApiModelProperty(value="创建时间")
private Date created;
/**
* 修改时间
*/
@TableField(value = "last_update_time",fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value="修改时间")
private Date lastUpdateTime;
@ApiModelProperty(value = "角色的IDS")
@TableField(exist = false)
private String role_strings ;
}
package com.dragonwu.domain;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 用户角色配置
*/
@ApiModel(value="com-dragonwu-domain-SysUserRole")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "sys_user_role")
public class SysUserRole {
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value="主键")
private Long id;
/**
* 角色ID
*/
@TableField(value = "role_id")
@ApiModelProperty(value="角色ID")
private Long roleId;
/**
* 用户ID
*/
@TableField(value = "user_id")
@ApiModelProperty(value="用户ID")
private Long userId;
/**
* 创建人
*/
@TableField(value = "create_by")
@ApiModelProperty(value="创建人")
private Long createBy;
/**
* 修改人
*/
@TableField(value = "modify_by",fill = FieldFill.UPDATE)
@ApiModelProperty(value="修改人")
private Long modifyBy;
/**
* 创建时间
*/
@TableField(value = "created",fill = FieldFill.INSERT)
@ApiModelProperty(value="创建时间")
private Date created;
/**
* 修改时间
*/
@TableField(value = "last_update_time",fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value="修改时间")
private Date lastUpdateTime;
}