博主信息
博文 98
粉丝 1
评论 0
访问量 84348
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
RBAC原则设计Friday权限管理系统(4)
阿杰
原创
320人浏览过

用户表接口

1、用户列表(模糊查询、分页)

  • SysUserVo
  1. package edu.friday.model.vo;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import com.fasterxml.jackson.annotation.JsonProperty;
  4. import lombok.AllArgsConstructor;
  5. import lombok.Data;
  6. import lombok.NoArgsConstructor;
  7. import javax.validation.constraints.Email;
  8. import javax.validation.constraints.NotBlank;
  9. import javax.validation.constraints.Size;
  10. import java.io.Serializable;
  11. import java.util.Date;
  12. @Data
  13. @NoArgsConstructor
  14. @AllArgsConstructor
  15. public class SysUserVo implements Serializable {
  16. //作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
  17. private static final long serialVersionUID = 1L;
  18. private Long userId;
  19. @NotBlank(message = "用户账号不能为空")
  20. @Size(min = 0,max = 30,message = "用户账号长度不能超过30个字符")
  21. private String userName;
  22. @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
  23. private String nickName;
  24. @Email(message = "邮箱格式不正确")
  25. @Size(min = 0,max = 50,message = "邮箱长度不能超过50个字符")
  26. private String email;
  27. @Size(min = 0,max = 11,message = "手机号码长度不能超过11个字符")
  28. private String phonenumber;
  29. private String sex;
  30. private String userType;
  31. private String avatar;
  32. @JsonProperty
  33. private String password;
  34. private String salt;
  35. private String status;
  36. private String delFlag;
  37. private String loginIp;
  38. private Date loginDate;
  39. private String createBy;
  40. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  41. private Date createTime;
  42. private String updateBy;
  43. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  44. private Date updateTime;
  45. private String remark;
  46. public SysUserVo(Long userId) {
  47. this.userId = userId;
  48. }
  49. public boolean isAdmin(){
  50. return isAdmin(this.userId);
  51. }
  52. public static boolean isAdmin(Long userId){
  53. return userId != null && userId == 1L;
  54. }
  55. }
  • pom.xml
  1. <!-- 数据验证所需 -->
  2. <dependency>
  3. <groupId>javax.validation</groupId>
  4. <artifactId>validation-api</artifactId>
  5. <version>2.0.1.Final</version>
  6. </dependency>

  1. /**
  2. * 用户列表(模糊查询username,phonenumber/分页)
  3. * */
  4. @GetMapping("/listPage")
  5. public TableDataInfo list2(SysUserVo user, Pageable page){
  6. int pageNum = page.getPageNumber() - 1;
  7. pageNum = Math.max(0, pageNum);
  8. page = PageRequest.of(pageNum,page.getPageSize());
  9. return sysUserService.selectUserList2(user, page);
  10. }

  1. /**
  2. * 用户表 业务层接口
  3. * */
  4. public interface SysUserService {
  5. List<SysUser> selectUserList();
  6. TableDataInfo selectUserList2(SysUserVo user, Pageable page);
  7. }
  1. /**
  2. * 用户表 业务层
  3. * */
  4. @Service
  5. public class SysUserServiceImpl implements SysUserService {
  6. @Autowired
  7. SysUserRepository sysUserRepository;
  8. /**
  9. * 显示所有用户列表
  10. * */
  11. @Override
  12. public List<SysUser> selectUserList() {
  13. return sysUserRepository.findAll();
  14. }
  15. /**
  16. * 用户列表(模糊查询 + 分页)
  17. * */
  18. @Override
  19. public TableDataInfo selectUserList2(SysUserVo user, Pageable page) {
  20. SysUser sysUser = new SysUser();
  21. BeanUtils.copyPropertiesIgnoreEmpty(user, sysUser);
  22. // sysUser.setDelFlag("0");
  23. ExampleMatcher exampleMatcher = ExampleMatcher.matching()
  24. .withMatcher("userName",ExampleMatcher.GenericPropertyMatchers.contains())
  25. .withMatcher("phonenumber",ExampleMatcher.GenericPropertyMatchers.contains())
  26. .withMatcher("status",ExampleMatcher.GenericPropertyMatchers.contains());
  27. Example<SysUser> example = Example.of(sysUser,exampleMatcher);
  28. Page<SysUser> rs = sysUserRepository.findAll(example,page);
  29. return TableDataInfo.success(rs.toList(),rs.getTotalElements());
  30. }
  31. }

  • 总结


2、新增用户

  1. /**
  2. * 新增用户
  3. * */
  4. @PostMapping
  5. public RestResult add(@RequestBody SysUserVo user){
  6. if(UserConstants.NOT_UNIQUE.equals(sysUserService.checkUserNameUnique(user.getUserName()))){
  7. return RestResult.error("新增用户'"+user.getUserName()+"'失败,登录账号已存在");
  8. } else if(UserConstants.NOT_UNIQUE.equals(sysUserService.checkPhoneUnique(user))){
  9. return RestResult.error("新增用户'"+user.getUserName()+"'失败,手机号码已存在");
  10. } else if(UserConstants.NOT_UNIQUE.equals(sysUserService.checkEmailUnique(user))){
  11. return RestResult.error("新增用户'"+user.getUserName()+"'失败,邮箱账号已存在");
  12. }
  13. user.setCreateBy("system");
  14. boolean flag = sysUserService.insertUser(user);
  15. return toAjax(flag?1:0);//extends BaseController
  16. }

  1. /**
  2. * 用户表 业务层接口
  3. * */
  4. public interface SysUserService {
  5. List<SysUser> selectUserList();
  6. TableDataInfo selectUserList2(SysUserVo user, Pageable page);
  7. String checkUserNameUnique(String userName);
  8. String checkPhoneUnique(SysUserVo userInfo);
  9. String checkEmailUnique(SysUserVo userInfo);
  10. boolean insertUser(SysUserVo user);
  11. }
  1. /**
  2. * 用户表 业务层
  3. * */
  4. @Service
  5. public class SysUserServiceImpl implements SysUserService {
  6. @Override
  7. public String checkUserNameUnique(String userName) {
  8. SysUser sysUser = new SysUser();
  9. sysUser.setUserName(userName);
  10. return count(sysUser);
  11. }
  12. @Override
  13. public String checkPhoneUnique(SysUserVo userInfo) {
  14. SysUser user = new SysUser();
  15. // BeanUtils.copyProperties(userInfo,user);
  16. user.setUserId(userInfo.getUserId());
  17. user.setPhonenumber(userInfo.getPhonenumber());
  18. return checkUnique(user);
  19. }
  20. @Override
  21. public String checkEmailUnique(SysUserVo userInfo) {
  22. SysUser user = new SysUser();
  23. // BeanUtils.copyProperties(userInfo,user);
  24. user.setUserId(userInfo.getUserId());
  25. user.setEmail(userInfo.getEmail());
  26. return checkUnique(user);
  27. }
  28. public String count(SysUser sysUser){
  29. Example<SysUser> example = Example.of(sysUser);
  30. long count = sysUserRepository.count(example);
  31. if(count > 0){
  32. return UserConstants.NOT_UNIQUE;
  33. }
  34. return UserConstants.UNIQUE;
  35. }
  36. public String checkUnique(SysUser user){
  37. Long userId = StringUtils.isNull(user.getUserId())?-1L:user.getUserId();
  38. Example<SysUser> example = Example.of(user);
  39. SysUser info = findOne(example);
  40. System.out.println(info);
  41. if(StringUtils.isNotNull(info) &&info.getUserId().longValue() != userId.longValue()){
  42. return UserConstants.NOT_UNIQUE;
  43. }
  44. return UserConstants.UNIQUE;
  45. }
  46. public SysUser findOne(Example<SysUser> example){
  47. List<SysUser> list = sysUserRepository.findAll(example,PageRequest.of(0,1)).toList();
  48. if(list.isEmpty()){
  49. return null;
  50. }
  51. return list.get(0);
  52. }
  53. }

  1. /**
  2. * @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。
  3. * */
  4. @Override
  5. @Transactional
  6. public boolean insertUser(SysUserVo user) {
  7. SysUser sysUser = new SysUser();
  8. BeanUtils.copyProperties(user,sysUser);
  9. sysUser.setDelFlag("0");
  10. // 新增用户信息
  11. sysUserRepository.save(sysUser);
  12. user.setUserId(sysUser.getUserId());
  13. // 新增用户与角色管理
  14. insertUserRole(user);
  15. return null != sysUser.getUserId();
  16. }
  17. /**
  18. * 新增用户角色信息
  19. *
  20. * @param user 用户信息
  21. * */
  22. public int insertUserRole(SysUserVo user){
  23. Long[] roles = user.getRoleIds();
  24. if(StringUtils.isNull(roles) || roles.length == 0){
  25. return 0;
  26. }
  27. Long[] userIds = new Long[roles.length];
  28. Arrays.fill(userIds,user.getUserId());
  29. return sysUserRepository.batchInsertUserRole(userIds,roles);
  30. }

  1. public class SysUserCustomRepositoryImpl implements SysUserCustomRepository {
  2. // 用于与持久性上下文(数据库)进行交互。
  3. // 更为特定于JPA,通常在JPA或Hibernate等ORM框架的应用中使用。
  4. @PersistenceContext
  5. private EntityManager entityManager;
  6. @Override
  7. public int batchInsertUserRole(Long[] userIds, Long[] roles) {
  8. int length = Math.min(userIds.length,roles.length);
  9. StringBuffer sql = new StringBuffer();
  10. sql.append(" insert into sys_user_role(user_id, role_id) values ");
  11. sql.append(SqlUtil.getBatchInsertSqlStr(length,2));
  12. Query query = entityManager.createNativeQuery(sql.toString());
  13. int paramIndex = 1;
  14. for (int i = 0; i < length; i++) {
  15. query.setParameter(paramIndex++,userIds[i]);
  16. query.setParameter(paramIndex++,roles[i]);
  17. }
  18. return query.executeUpdate();
  19. }
  20. }

- 运行结果

(1)账号已存在

(2)手机号已存在

(3)邮箱已存在

(4)添加成功

数据表生成对应数据

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学