UserInfoServiceImpl.java 7.2 KB

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