UserInfoServiceImpl.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package com.xy.service;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.json.JSONUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.metadata.IPage;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.github.yitter.idgen.YitIdHelper;
  9. import com.xy.annotation.Lock;
  10. import com.xy.config.WebMqttConfig;
  11. import com.xy.dto.SysWorkUser.AddDto;
  12. import com.xy.dto.SysWorkUser.DelDto;
  13. import com.xy.dto.SysWorkUser.UpdateDto;
  14. import com.xy.dto.UserInfoDto;
  15. import com.xy.entity.UserInfo;
  16. import com.xy.mapper.UserInfoMapper;
  17. import com.xy.utils.*;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.AllArgsConstructor;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.PostMapping;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import java.util.List;
  27. import static com.xy.utils.Beans.copy;
  28. import static com.xy.utils.PlusBeans.toIPage;
  29. import static com.xy.utils.PlusBeans.toPageBean;
  30. /**
  31. * <p>
  32. * 用户表 服务实现类
  33. * </p>
  34. *
  35. * @author lijin
  36. * @since 2023-01-12
  37. */
  38. @Slf4j
  39. @Service
  40. @AllArgsConstructor
  41. @Api(tags = "用户表")
  42. public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
  43. private SysWorkUserService sysWorkUserService;
  44. private WebMqttConfig webMqttConfig;
  45. @Override
  46. @ApiOperation("集合查询")
  47. public R<List<UserInfoDto.Vo>> list(UserInfoDto.SelectListDto selectList) {
  48. List<Long> userIds = selectList.getUserIds();
  49. UserInfoDto.Vo userVo = selectList.getUserVo();
  50. LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  51. if (userVo != null) {
  52. lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList.getUserVo(), UserInfo.class).build();
  53. }
  54. lambdaQueryWrapper.in(CollUtil.isNotEmpty(userIds), UserInfo::getUserId, userIds);
  55. List<UserInfo> list = list(lambdaQueryWrapper);
  56. return R.ok(copy(UserInfoDto.Vo.class, list));
  57. }
  58. @Override
  59. @ApiOperation("对象查询")
  60. public R<UserInfoDto.Vo> obj(UserInfoDto.Vo vo) {
  61. LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, UserInfo.class).build();
  62. List<UserInfo> list = list(lambdaQueryWrapper);
  63. if (Emptys.check(list)) {
  64. return R.ok(copy(UserInfoDto.Vo.class, list.get(0)));
  65. }
  66. return R.ok();
  67. }
  68. @PostMapping("page")
  69. @ApiOperation("分页查询")
  70. public R<PageBean<UserInfoDto.Vo>> page(@RequestBody UserInfoDto.Page page) {
  71. PageBean pageBean = page.getPage();
  72. LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, UserInfo.class)
  73. .like(UserInfo::getTel, page.getTel())
  74. .like(UserInfo::getMail, page.getMail())
  75. .like(UserInfo::getUnionid, page.getUnionid())
  76. .ge(UserInfo::getCreateTime, page.getBeginCreateTime())
  77. .le(UserInfo::getCreateTime, page.getEndCreateTime())
  78. .build()
  79. .eq(!AuthorizeUtils.authByData(page.getSysId()), UserInfo::getCreateUser, AuthorizeUtils.getLoginId(Long.class))
  80. .orderByDesc(!Emptys.check(pageBean.getOrders()), UserInfo::getCreateTime);
  81. IPage<UserInfo> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  82. return R.ok(toPageBean(UserInfoDto.Vo.class, iPage));
  83. }
  84. @Override
  85. @ApiOperation("添加")
  86. @Lock(value = "save.tel", prefix = "user_save_")
  87. public R<UserInfoDto.Vo> save(UserInfoDto.Save save) {
  88. //添加权限用户
  89. AddDto addDto = copy(AddDto.class, save)
  90. .setEmail(save.getMail())
  91. .setPhone(save.getTel())
  92. .setRoleIds(save.getRoleIds())
  93. .setAccount(save.getAccount());
  94. R<Long> register = sysWorkUserService.register(addDto);
  95. if (register.getCode() != R.Enum.SUCCESS.getCode()) {
  96. return R.fail(register.getMsg());
  97. }
  98. Long authorizeUserId = register.getData();
  99. //添加用户
  100. Long loginId = AuthorizeUtils.getLoginId(Long.class);
  101. UserInfo saveInfo = copy(UserInfo.class, save)
  102. .createUserTime(loginId)
  103. .setUserId(YitIdHelper.nextId())
  104. .setAuthorizeUserId(authorizeUserId)
  105. .createUserTime(loginId);
  106. save(saveInfo);
  107. return R.ok(copy(UserInfoDto.Vo.class, saveInfo));
  108. }
  109. @Override
  110. @ApiOperation("修改")
  111. @Lock(value = "update.userId", prefix = "user_update_")
  112. public R update(UserInfoDto.Update update) {
  113. log.info("权限用户信息修改请求:{}", JSONUtil.toJsonPrettyStr(update));
  114. UserInfo byId = getById(update.getUserId());
  115. String account = update.getAccount();
  116. if (StrUtil.isNotEmpty(update.getTel())) {
  117. if (!update.getTel().equals(byId.getTel())) {
  118. long count = count(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getTel, update.getTel()));
  119. if (count > 0) {
  120. return R.fail("手机已存在");
  121. }
  122. }
  123. }
  124. if (StrUtil.isNotEmpty(update.getMail())) {
  125. if (!byId.getMail().equals(update.getMail())) {
  126. long count = count(new LambdaQueryWrapper<UserInfo>().eq(UserInfo::getMail, update.getMail()));
  127. if (count > 0) {
  128. return R.fail("邮箱已存在");
  129. }
  130. }
  131. }
  132. UserInfo updateInfo = copy(UserInfo.class, update)
  133. .updateUserTime(AuthorizeUtils.getLoginId(Long.class));
  134. UserInfo u = getById(update.getUserId());
  135. //修改权限用户
  136. if (Emptys.check(update.getTel()) || Emptys.check(update.getMail()) || Emptys.check(update.getStatus()) || Emptys.check(update.getPassword())) {
  137. UpdateDto updateDto = new UpdateDto()
  138. .setId(u.getAuthorizeUserId())
  139. .setAccount(account)
  140. .setPhone(update.getTel())
  141. .setEmail(update.getMail())
  142. .setPassword(update.getPassword())
  143. .setStatus(update.getStatus())
  144. .setRoleIds(update.getRoleIds());
  145. log.info("权限用户信息修改:{}", JSONUtil.toJsonPrettyStr(updateDto));
  146. sysWorkUserService.update(updateDto);
  147. }
  148. //修改用户
  149. updateById(updateInfo);
  150. return R.ok();
  151. }
  152. @ApiOperation("删除用户")
  153. @Override
  154. public R del(@RequestBody @Validated UserInfoDto.DelDto dto) {
  155. //sys_work_user 权限用户表
  156. R r = sysWorkUserService.del(copy(DelDto.class, dto));
  157. if (R.Enum.SUCCESS.getCode() != r.getCode()) {
  158. return R.fail(r.getMsg());
  159. }
  160. //user_info 用户表
  161. return R.ok(removeBatchByIds(dto.getId()));
  162. }
  163. @PostMapping("webUserMqtt")
  164. @ApiOperation("获取用户mqtt信息")
  165. public R<UserInfoDto.WebUserMqttVo> webUserMqtt(@RequestBody @Validated UserInfoDto.WebUserMqtt webUserMqtt) {
  166. Long loginId = AuthorizeUtils.getLoginId(Long.class);
  167. Integer type = webUserMqtt.getType();
  168. UserInfoDto.WebUserMqttVo webUserMqttVo = new UserInfoDto.WebUserMqttVo()
  169. .setUsername(webMqttConfig.getUsername())
  170. .setPassword(webMqttConfig.getPassword());
  171. WebMqttConfig.Protocol protocol = webMqttConfig.getProtocol();
  172. WebMqttConfig.Topic topic = webMqttConfig.getTopic();
  173. if (type == 1) {
  174. webUserMqttVo.setUrl(protocol.getPcUrl() + webMqttConfig.getIp())
  175. .setPort(webMqttConfig.getWsPort())
  176. .setClientTopic(topic.getPrefix() + topic.getPcManagePrefix() + loginId);
  177. } else if (type == 2) {
  178. webUserMqttVo.setUrl(protocol.getWxsUrl() + webMqttConfig.getIp())
  179. .setPort(webMqttConfig.getWssPort())
  180. .setClientTopic(topic.getPrefix() + topic.getWxCPrefix() + loginId);
  181. } else if (type == 3) {
  182. webUserMqttVo.setUrl(protocol.getAlisUrl() + webMqttConfig.getIp())
  183. .setPort(webMqttConfig.getWssPort())
  184. .setClientTopic(topic.getPrefix() + topic.getAlisCPrefix() + loginId);
  185. }
  186. return R.ok(webUserMqttVo);
  187. }
  188. @ApiOperation("修改微信信息")
  189. @Override
  190. public R updateByWechat(UserInfoDto.UpdateByWechat dto) {
  191. updateById(copy(UserInfo.class, dto));
  192. return R.ok();
  193. }
  194. @ApiOperation("修改支付宝信息")
  195. @Override
  196. public R updateByAli(UserInfoDto.UpdateByAli dto) {
  197. updateById(copy(UserInfo.class, dto));
  198. return R.ok();
  199. }
  200. }