TWxUserServiceImpl.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.ylx.massage.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.ylx.massage.domain.TWxUser;
  7. import com.ylx.massage.domain.dto.QueryWxUserDTO;
  8. import com.ylx.massage.domain.vo.TWxUserVo;
  9. import com.ylx.massage.mapper.TWxUserMapper;
  10. import com.ylx.massage.service.TWxUserService;
  11. import com.ylx.shopingfundsdetail.service.ShoppingFundsDetailService;
  12. import com.ylx.shoppingfunds.domain.dto.MyShoppingFundsUpdateDto;
  13. import com.ylx.shoppingfunds.domain.vo.MyShoppingFundsQueryVo;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import javax.annotation.Resource;
  18. import java.math.BigDecimal;
  19. /**
  20. * 服务实现类
  21. */
  22. @Service
  23. public class TWxUserServiceImpl extends ServiceImpl<TWxUserMapper, TWxUser> implements TWxUserService {
  24. @Resource(name = "shoppingFundsDetailService")
  25. private ShoppingFundsDetailService shoppingFundsDetailService;
  26. @Override
  27. public TWxUser getByOpenId(String openId) {
  28. LambdaQueryWrapper<TWxUser> wrapper = new LambdaQueryWrapper<>();
  29. wrapper.eq(TWxUser::getcOpenid,openId);
  30. return getOne(wrapper);
  31. }
  32. @Override
  33. public TWxUser getByPhone(String phone) {
  34. LambdaQueryWrapper<TWxUser> wrapper = new LambdaQueryWrapper<>();
  35. wrapper.eq(TWxUser::getcPhone, phone);
  36. return getOne(wrapper);
  37. }
  38. @Override
  39. public Page<TWxUserVo> getUserList(Page<TWxUserVo> page, QueryWxUserDTO queryWxUserDTO) {
  40. if (queryWxUserDTO == null) {
  41. queryWxUserDTO = new QueryWxUserDTO();
  42. }
  43. if(StringUtils.isNotBlank(queryWxUserDTO.getStartTime())){
  44. //开始时间添加00:00:00
  45. queryWxUserDTO.setStartTime(queryWxUserDTO.getStartTime()+" 00:00:00");
  46. }
  47. if(StringUtils.isNotBlank(queryWxUserDTO.getEndTime())){
  48. //结束时间添加23:59:59
  49. queryWxUserDTO.setEndTime(queryWxUserDTO.getEndTime()+" 23:59:59");
  50. }
  51. return baseMapper.selectTWxUserList(page, queryWxUserDTO);
  52. }
  53. @Override
  54. public boolean bindPhone(String openId, String phone) {
  55. TWxUser user = getByOpenId(openId);
  56. if (user == null) {
  57. return false;
  58. }
  59. user.setcPhone(phone);
  60. return updateById(user);
  61. }
  62. @Override
  63. public TWxUser phoneLogin(String phone) {
  64. // 根据手机号查询用户
  65. TWxUser user = getByPhone(phone);
  66. // 如果用户不存在,则创建新用户
  67. if (user == null) {
  68. user = new TWxUser();
  69. user.setcPhone(phone);
  70. // 设置默认角色为普通用户
  71. user.setRole(0);
  72. //设置默认头像
  73. user.setcIcon("https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
  74. //设置默认昵称
  75. user.setcNickName("用户"+phone.substring(7,11));
  76. save(user);
  77. }
  78. return user;
  79. }
  80. /**
  81. * 查询我的购物金余额
  82. * @param userId
  83. * @return
  84. */
  85. @Override
  86. public MyShoppingFundsQueryVo queryMyShoppingFunds(String userId) {
  87. TWxUser user = this.getById(userId);
  88. if (ObjectUtil.isNull(user)) {
  89. throw new IllegalArgumentException("参数有误,用户不存在");
  90. }
  91. MyShoppingFundsQueryVo myShoppingFundsVo = new MyShoppingFundsQueryVo();
  92. myShoppingFundsVo.setWxUserId(user.getId());
  93. myShoppingFundsVo.setDBalance(user.getdBalance());
  94. return myShoppingFundsVo;
  95. }
  96. /**
  97. * 更新我的购物金余额
  98. * @param userId
  99. * @param amount
  100. * @param expenseType
  101. */
  102. @Override
  103. @Transactional(rollbackFor = Exception.class)
  104. public void updateMyShoppingFunds(String userId, BigDecimal amount, Integer expenseType) {
  105. TWxUser user = this.getById(userId);
  106. if (ObjectUtil.isNull(user)){
  107. throw new IllegalArgumentException("参数有误,用户不存在");
  108. }
  109. //表示购卡
  110. if(expenseType.equals(0)){
  111. user.setdBalance(user.getdBalance().add(amount));
  112. }else if(expenseType.equals(1)){
  113. //表示消费购物金
  114. if(user.getdBalance().compareTo(amount)<0) {
  115. throw new IllegalArgumentException("参数有误,余额不足");
  116. }
  117. user.setdBalance(user.getdBalance().subtract(amount));
  118. }
  119. this.updateById(user);
  120. }
  121. }