UserServiceImpl.java 5.1 KB

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