UserInfoServiceImpl.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.xy.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.github.yitter.idgen.YitIdHelper;
  6. import com.xy.annotation.Lock;
  7. import com.xy.dto.SysWorkUser.AddDto;
  8. import com.xy.dto.SysWorkUser.UpdateDto;
  9. import com.xy.dto.UserInfoDto;
  10. import com.xy.entity.UserInfo;
  11. import com.xy.mapper.UserInfoMapper;
  12. import com.xy.utils.*;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.util.StringUtils;
  18. import org.springframework.web.bind.annotation.PostMapping;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import java.util.List;
  21. import java.util.StringJoiner;
  22. import static com.xy.utils.Beans.copy;
  23. import static com.xy.utils.PlusBeans.toIPage;
  24. import static com.xy.utils.PlusBeans.toPageBean;
  25. /**
  26. * <p>
  27. * 用户表 服务实现类
  28. * </p>
  29. *
  30. * @author lijin
  31. * @since 2023-01-12
  32. */
  33. @Service
  34. @AllArgsConstructor
  35. @Api(tags = "用户表")
  36. public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
  37. private SysWorkUserService sysWorkUserService;
  38. @Override
  39. @ApiOperation("对象查询")
  40. public R<UserInfoDto.Vo> obj(UserInfoDto.Vo vo) {
  41. LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, UserInfo.class)
  42. .like(UserInfo::getSysIds, vo.getSysIds())
  43. .build();
  44. List<UserInfo> list = list(lambdaQueryWrapper);
  45. if (Emptys.check(list)) {
  46. return R.ok(copy(UserInfoDto.Vo.class, list.get(0)));
  47. }
  48. return R.ok();
  49. }
  50. @PostMapping("page")
  51. @ApiOperation("分页查询")
  52. public R<PageBean<UserInfoDto.Vo>> page(@RequestBody UserInfoDto.Page page) {
  53. PageBean pageBean = page.getPage();
  54. LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, UserInfo.class)
  55. .like(UserInfo::getTel, page.getTel())
  56. .like(UserInfo::getMail, page.getMail())
  57. .like(UserInfo::getUnionid, page.getUnionid())
  58. .like(UserInfo::getSysIds, page.getSysIds())
  59. .ge(UserInfo::getCreateTime, page.getBeginCreateTime())
  60. .le(UserInfo::getCreateTime, page.getEndCreateTime())
  61. .build()
  62. .orderByDesc(!Emptys.check(pageBean.getOrders()), UserInfo::getCreateTime);
  63. IPage<UserInfo> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  64. return R.ok(toPageBean(UserInfoDto.Vo.class, iPage));
  65. }
  66. @Override
  67. @ApiOperation("添加")
  68. @Lock(value = "save.tel", prefix = "user_save_")
  69. public R<UserInfoDto.Vo> save(UserInfoDto.Save save) {
  70. //校验
  71. UserInfo userInfo = getOne(new LambdaQueryWrapper<UserInfo>()
  72. .eq(UserInfo::getTel, save.getTel())
  73. .or()
  74. .eq(UserInfo::getMail, save.getMail())
  75. .or()
  76. .eq(UserInfo::getUnionid, save.getUnionid())
  77. .or()
  78. .eq(UserInfo::getAuthorizeUserId, save.getAuthorizeUserId())
  79. );
  80. if (userInfo != null) {
  81. return R.fail(R.Enum.USER_EXIST.getCode(), R.Enum.USER_EXIST.getMsg(), copy(UserInfoDto.Vo.class, userInfo));
  82. }
  83. //添加权限用户
  84. AddDto addDto = copy(AddDto.class, save)
  85. .setEmail(save.getMail())
  86. .setPhone(save.getTel())
  87. .setAccount(save.getTel());
  88. Long authorizeUserId = sysWorkUserService.register(addDto).getData();
  89. if (!Emptys.check(authorizeUserId)) {
  90. return R.fail("新增权限用户失败");
  91. }
  92. //添加用户
  93. UserInfo saveInfo = copy(UserInfo.class, save).createUserTime(AuthorizeUtils.getLoginId(Long.class))
  94. .setUserId(YitIdHelper.nextId())
  95. .setAuthorizeUserId(authorizeUserId)
  96. .createUserTime(AuthorizeUtils.getLoginId(Long.class));
  97. save(saveInfo);
  98. return R.ok(copy(UserInfoDto.Vo.class, saveInfo));
  99. }
  100. @Override
  101. @ApiOperation("修改")
  102. @Lock(value = "update.userId", prefix = "user_update_")
  103. public R update(UserInfoDto.Update update) {
  104. UserInfo byId = getById(update.getUserId());
  105. if (!StringUtils.isEmpty(update.getTel())) {
  106. if (!byId.getTel().equals(update.getTel())) {
  107. long count = count(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getTel, update.getTel()));
  108. if (count > 0) {
  109. return R.fail("手机号已存在");
  110. }
  111. }
  112. }
  113. if (!StringUtils.isEmpty(update.getMail())) {
  114. if (!byId.getMail().equals(update.getMail())) {
  115. long count = count(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getTel, update.getMail()));
  116. if (count > 0) {
  117. return R.fail("邮箱已存在");
  118. }
  119. }
  120. }
  121. //系统累加
  122. if (Emptys.check(update.getSysIds())) {
  123. update.setSysIds(byId.getSysIds().indexOf(update.getSysIds()) == -1 ? new StringJoiner(",").add(byId.getSysIds()).add(update.getSysIds()).toString() : null);
  124. }
  125. UserInfo updateInfo = copy(UserInfo.class, update).updateUserTime(AuthorizeUtils.getLoginId(Long.class));
  126. //修改权限用户
  127. if (Emptys.check(update.getTel()) || Emptys.check(update.getMail()) || Emptys.check(update.getStatus()) || Emptys.check(update.getPassword())) {
  128. UpdateDto updateDto = new UpdateDto()
  129. .setId(byId.getAuthorizeUserId())
  130. .setPhone(update.getTel())
  131. .setEmail(update.getMail())
  132. .setAccount(update.getTel())
  133. .setPassword(update.getPassword())
  134. .setStatus(update.getStatus());
  135. sysWorkUserService.update(updateDto);
  136. }
  137. //修改用户
  138. updateById(updateInfo);
  139. return R.ok();
  140. }
  141. }