UserServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.jkcredit.invoice.hub.service.user;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.jkcredit.invoice.hub.constant.CommonConstant;
  6. import com.jkcredit.invoice.hub.constant.ExceptionMessage;
  7. import com.jkcredit.invoice.hub.mapper.UserMapper;
  8. import com.jkcredit.invoice.hub.model.dto.user.UserDto;
  9. import com.jkcredit.invoice.hub.model.po.user.UserPo;
  10. import com.jkcredit.invoice.hub.model.vo.user.UserVO;
  11. import com.jkcredit.invoice.hub.service.base.BaseService;
  12. import com.jkcredit.invoice.hub.spi.lang.exception.ServiceException;
  13. import com.jkcredit.invoice.hub.util.AssertUtils;
  14. import com.jkcredit.invoice.hub.util.BeanUtil;
  15. import com.jkcredit.invoice.hub.util.CommonUtil;
  16. import com.jkcredit.invoice.hub.util.EncodeUtil;
  17. import io.netty.util.internal.StringUtil;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.beans.BeanUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.data.redis.core.RedisTemplate;
  22. import org.springframework.security.crypto.bcrypt.BCrypt;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.web.bind.annotation.RequestParam;
  26. import javax.annotation.Resource;
  27. import java.util.Date;
  28. import java.util.Optional;
  29. /**
  30. * @description:
  31. * @author: xusonglin
  32. * @create: 2020/1/2 10:01
  33. * @version: V1.0
  34. **/
  35. @Slf4j
  36. @Service
  37. @Transactional(readOnly = true)
  38. public class UserServiceImpl extends BaseService implements UserService {
  39. @Resource
  40. UserMapper userMapper;
  41. @Autowired
  42. private RedisTemplate redisTemplate;
  43. @Override
  44. public Optional<UserPo> getUserByUserName(String userName) {
  45. return userMapper.getUserByUserName(userName);
  46. }
  47. @Override
  48. public UserVO getUserById(Long id) throws ServiceException {
  49. UserVO userVo = new UserVO();
  50. UserPo userPo = userMapper.selectById(id);
  51. if (userPo != null) {
  52. BeanUtils.copyProperties(userPo, userVo);
  53. } else {
  54. throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
  55. }
  56. return userVo;
  57. }
  58. @Override
  59. public IPage<UserVO> getAllUsers(Page page, UserDto userDto) {
  60. // 数据库中查出的po分页集合
  61. IPage<UserPo> users = userMapper.getUsersPage(page, userDto);
  62. return users.convert(this::convert);
  63. }
  64. private UserVO convert(UserPo po) {
  65. UserVO vo = new UserVO();
  66. BeanUtils.copyProperties(po, vo);
  67. // 将数据库存储的decimal转double
  68. if (po.getPrice() != null) {
  69. vo.setPrice(CommonUtil.parseDouble(po.getPrice()));
  70. }
  71. if (po.getBalance() != null) {
  72. vo.setBalance(CommonUtil.parseDouble(po.getBalance()));
  73. }
  74. return vo;
  75. }
  76. @Override
  77. @Transactional(rollbackFor = ServiceException.class)
  78. public void saveUser(UserDto userDto) {
  79. validate(userDto);
  80. UserPo userPo = new UserPo();
  81. BeanUtil.copyProperties(userPo, userDto);
  82. userPo.setAppSecret(EncodeUtil.getAppSecret(userDto.getAppKey()));
  83. userPo.setCreateTime(new Date());
  84. userPo.setPassword(BCrypt.hashpw(userDto.getPassword(), BCrypt.gensalt()));
  85. try {
  86. userMapper.insert(userPo);
  87. } catch (Exception e) {
  88. log.error("新增用户失败,失败原因:{}", e.getMessage());
  89. throw new ServiceException("新增用户失败");
  90. }
  91. }
  92. @Override
  93. @Transactional(rollbackFor = ServiceException.class)
  94. public Boolean updateUser(@RequestParam UserDto userDto) {
  95. validate(userDto);
  96. UserPo userPo = userMapper.getUserById(userDto.getId());
  97. // todo 此方法需要完善,完善后不需要逐行if判断
  98. AssertUtils.assertNotNull(userPo, CommonConstant.USER_NOT_EXIST);
  99. if (!StringUtil.isNullOrEmpty(userDto.getPassword())) {
  100. userPo.setPassword(BCrypt.hashpw(userDto.getPassword(), BCrypt.gensalt()));
  101. }
  102. if (!StringUtil.isNullOrEmpty(userDto.getCompany())) {
  103. userPo.setCompany(userDto.getCompany());
  104. }
  105. if (!StringUtil.isNullOrEmpty(userDto.getContactName())) {
  106. userPo.setContactName(userDto.getContactName());
  107. }
  108. if (!StringUtil.isNullOrEmpty(userDto.getTelephone())) {
  109. userPo.setTelephone(userDto.getTelephone());
  110. }
  111. if (userDto.getPrice() != null) {
  112. userPo.setPrice(userDto.getPrice());
  113. }
  114. if (userDto.getStatus() != null) {
  115. userPo.setStatus(userDto.getStatus());
  116. }
  117. userPo.setUpdateTime(new Date());
  118. if (userMapper.updateById(userPo) == 1) {
  119. JSONObject jsonObject = new JSONObject();
  120. jsonObject.put("appSecret", userPo.getAppSecret());
  121. jsonObject.put("userId", userPo.getId().toString());
  122. jsonObject.put("status", userPo.getStatus().toString());
  123. redisTemplate.opsForValue().set(CommonConstant.INVOICE_HUB_USER_APPKEY + userPo.getAppKey(), jsonObject);
  124. return true;
  125. } else {
  126. return false;
  127. }
  128. }
  129. @Override
  130. @Transactional(rollbackFor = ServiceException.class)
  131. public void deleteUser(Long id) {
  132. UserPo userPo = userMapper.getUserById(id);
  133. if (userPo == null) {
  134. throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
  135. } else {
  136. userPo.setActivated(CommonConstant.ACTIVATED_DELETED);
  137. try {
  138. userMapper.updateById(userPo);
  139. } catch (Exception e) {
  140. log.error("删除用户失败,失败原因:{}", e.getMessage());
  141. throw new ServiceException("删除用户失败");
  142. }
  143. }
  144. }
  145. @Override
  146. public UserPo getUserByAppKey(String appKey) {
  147. return userMapper.getUserByAppKey(appKey);
  148. }
  149. @Override
  150. public UserDto getUser(Long id) {
  151. UserDto userDto = new UserDto();
  152. UserPo userPo = userMapper.getUserById(id);
  153. if (userPo != null) {
  154. BeanUtils.copyProperties(userPo, userDto);
  155. } else {
  156. throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
  157. }
  158. return userDto;
  159. }
  160. }