UserMembershipCardServiceImpl.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package beilv.usermembershipcard.service.impl;
  2. import beilv.cardpurchaserecord.domain.CardPurchaseRecord;
  3. import beilv.cardpurchaserecord.mapper.CardPurchaseRecordMapper;
  4. import beilv.common.core.text.Convert;
  5. import beilv.common.utils.DateUtils;
  6. import beilv.common.utils.ShiroUtils;
  7. import beilv.common.utils.StringUtils;
  8. import beilv.system.service.ISysDictDataService;
  9. import beilv.usermembershipcard.domain.MemberStream;
  10. import beilv.usermembershipcard.domain.UserMembershipCard;
  11. import beilv.usermembershipcard.mapper.UserMembershipCardMapper;
  12. import beilv.usermembershipcard.service.IUserMembershipCardService;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import java.math.BigDecimal;
  18. import java.math.RoundingMode;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * 用户会员卡Service业务层处理
  23. *
  24. * @author ruoyi
  25. * @date 2025-01-02
  26. */
  27. @Service
  28. public class UserMembershipCardServiceImpl implements IUserMembershipCardService {
  29. @Autowired
  30. private UserMembershipCardMapper userMembershipCardMapper;
  31. @Autowired
  32. private CardPurchaseRecordMapper cardPurchaseRecordMapper;
  33. @Autowired
  34. private ISysDictDataService dictDataService;
  35. /**
  36. * 查询用户会员卡
  37. *
  38. * @param id 用户会员卡主键
  39. * @return 用户会员卡
  40. */
  41. @Override
  42. public UserMembershipCard selectUserMembershipCardById(Long id) {
  43. return userMembershipCardMapper.selectUserMembershipCardById(id);
  44. }
  45. /**
  46. * 查询用户会员卡列表
  47. *
  48. * @param userMembershipCard 用户会员卡
  49. * @return 用户会员卡
  50. */
  51. @Override
  52. public List<UserMembershipCard> selectUserMembershipCardList(UserMembershipCard userMembershipCard) {
  53. List<UserMembershipCard> userMembershipCards = userMembershipCardMapper.selectUserMembershipCardList(userMembershipCard);
  54. for (UserMembershipCard userMembershipCard1 : userMembershipCards) {
  55. userMembershipCard1.setStateLabel(dictDataService.selectDictLabel("card_status",userMembershipCard1.getState()));
  56. userMembershipCard1.setCardTypeLable(dictDataService.selectDictLabel("site_type",userMembershipCard1.getCardType()));
  57. }
  58. return userMembershipCards;
  59. }
  60. /**
  61. * 新增用户会员卡
  62. *
  63. * @param userMembershipCard 用户会员卡
  64. * @return 结果
  65. */
  66. @Override
  67. public int insertUserMembershipCard(UserMembershipCard userMembershipCard) {
  68. userMembershipCard.setCreateTime(DateUtils.getNowDate());
  69. return userMembershipCardMapper.insertUserMembershipCard(userMembershipCard);
  70. }
  71. /**
  72. * 修改用户会员卡
  73. *
  74. * @param userMembershipCard 用户会员卡
  75. * @return 结果
  76. */
  77. @Override
  78. public int updateUserMembershipCard(UserMembershipCard userMembershipCard) {
  79. userMembershipCard.setUpdateTime(DateUtils.getNowDate());
  80. return userMembershipCardMapper.updateUserMembershipCard(userMembershipCard);
  81. }
  82. /**
  83. * 批量删除用户会员卡
  84. *
  85. * @param ids 需要删除的用户会员卡主键
  86. * @return 结果
  87. */
  88. @Override
  89. public int deleteUserMembershipCardByIds(String ids) {
  90. return userMembershipCardMapper.deleteUserMembershipCardByIds(Convert.toStrArray(ids));
  91. }
  92. /**
  93. * 删除用户会员卡信息
  94. *
  95. * @param id 用户会员卡主键
  96. * @return 结果
  97. */
  98. @Override
  99. public int deleteUserMembershipCardById(Long id) {
  100. return userMembershipCardMapper.deleteUserMembershipCardById(id);
  101. }
  102. /*
  103. * 查询流水列表
  104. *
  105. * @author 韩福成
  106. * @date 2025/1/8 上午9:29
  107. */
  108. @Override
  109. public List<Map<String,Object>> getStream(Long id) {
  110. return userMembershipCardMapper.getStream(id);
  111. }
  112. /*
  113. * 新增会员卡流水
  114. *
  115. * @author 韩福成
  116. * @date 2025/1/8 上午9:29
  117. */
  118. @Override
  119. @Transactional
  120. public int addStream(MemberStream memberStream) {
  121. //
  122. UserMembershipCard userMembershipCard1 = userMembershipCardMapper.selectUserMembershipCardById(Long.valueOf(memberStream.getUserCardId()));
  123. if(userMembershipCard1.getRemainingNumber() == 0){
  124. return -1;
  125. }
  126. //增加/扣除会员卡剩余次数(约场-1;退场+1)
  127. UserMembershipCard userMembershipCard = new UserMembershipCard();
  128. userMembershipCard.setId(Long.valueOf(memberStream.getUserCardId()));
  129. userMembershipCard.setRemainingNumber(Integer.valueOf(memberStream.getType()));
  130. userMembershipCardMapper.updateRemainingNumber(userMembershipCard);
  131. //增加流水
  132. memberStream.setCreateTime(DateUtils.getNowDate());
  133. return userMembershipCardMapper.addStream(memberStream);
  134. }
  135. /*
  136. * 新增退卡记录
  137. *
  138. * @author 韩福成
  139. * @date 2025/1/7 上午10:50
  140. */
  141. @Override
  142. @Transactional
  143. public int refundCard(UserMembershipCard userMembershipCard) {
  144. CardPurchaseRecord cardPurchaseRecord = cardPurchaseRecordMapper.selectCardPurchaseRecordById(Long.parseLong(userMembershipCard.getRecordId()));
  145. //使用次数
  146. int useCount = cardPurchaseRecord.getTotalNumber() - userMembershipCard.getRemainingNumber();
  147. //原单价
  148. BigDecimal originalPrice = cardPurchaseRecord.getOriginalPrice().divide(BigDecimal.valueOf(cardPurchaseRecord.getTotalNumber()),2, RoundingMode.HALF_UP);
  149. //使用总价
  150. BigDecimal usePrice = originalPrice.multiply(new BigDecimal(useCount));
  151. if (usePrice.compareTo(cardPurchaseRecord.getMemberPrice())<0){
  152. //退款价格
  153. BigDecimal refundPrice = cardPurchaseRecord.getMemberPrice().subtract(usePrice);
  154. /*调用退款接口*/
  155. }else {
  156. return -1;
  157. }
  158. /*新增退卡记录*/
  159. CardPurchaseRecord record = new CardPurchaseRecord();
  160. BeanUtils.copyProperties(cardPurchaseRecord,record);
  161. record.setId(null);
  162. if(StringUtils.isEmpty(userMembershipCard.getUserId())){
  163. record.setCreateBy(ShiroUtils.getUserId().toString());
  164. }else {
  165. record.setCreateBy(userMembershipCard.getUserId());
  166. }
  167. record.setCreateTime(DateUtils.getNowDate());
  168. record.setType("payment_status_refunded");
  169. record.setTime(DateUtils.getNowDate());
  170. record.setVersion("0");
  171. cardPurchaseRecordMapper.insertCardPurchaseRecord(record);
  172. /*修改用户会员卡*/
  173. userMembershipCard.setState("2");
  174. userMembershipCard.setRemainingNumber(0);
  175. return userMembershipCardMapper.updateUserMembershipCard(userMembershipCard);
  176. }
  177. @Override
  178. public UserMembershipCard selectUserMembershipCardRecordId(String recordId) {
  179. return userMembershipCardMapper.selectUserMembershipCardRecordId(recordId);
  180. }
  181. }