| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package com.cyksj.service.user.impl;
- import com.cyksj.mapper.DistributeOrdersDeductPointsRecordMapper;
- import com.cyksj.mapper.UserMapper;
- import com.cyksj.model.entity.DistributeOrdersDeductPointsRecord;
- import com.cyksj.model.entity.User;
- import com.cyksj.service.user.UserBenefitsService;
- import lombok.RequiredArgsConstructor;
- import org.springframework.dao.DuplicateKeyException;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- /*
- *项目名: netflix
- *文件名: UserBenefitsServiceImpl
- *创建者: JavaZou
- *创建时间:2023/5/18 16:06
- */
- @Service
- @RequiredArgsConstructor
- public class UserBenefitsServiceImpl implements UserBenefitsService {
- private final UserMapper userMapper;
- private final DistributeOrdersDeductPointsRecordMapper distributeOrdersDeductPointsRecordMapper;
- @Override
- public void deductDistributePoints(Long orderId, Long userId, BigDecimal deductPoints) {
- while (true) {
- User user = userMapper.selectById(userId);
- if (user == null) break;
- BigDecimal points = user.getPoints();
- Integer success = userMapper.subPointsNegative(userId, points, deductPoints);
- if (success == 1){
- //记录积分已发送后,退款后扣除积分记录
- deductPointsRecord(orderId, userId, deductPoints);
- break;
- }
- }
- }
- @Override
- public void addDistributePoints(Long userId, BigDecimal addPoints) {
- while (true) {
- User user = userMapper.selectById(userId);
- if (user == null) break;
- BigDecimal points = user.getPoints();
- Integer success = userMapper.updatePoints(user.getId(), points, addPoints);
- if (success == 1) break;
- }
- }
- @Override
- public void addUserBalance(Long userId, BigDecimal addBalance) {
- while (true) {
- User user = userMapper.selectById(userId);
- if (user == null) break;
- BigDecimal balance = user.getBalance();
- Integer success = userMapper.addUserBalance(user.getId(), balance, addBalance);
- if (success == 1) break;
- }
- }
- @Override
- public void deductUserBalance(Long userId, BigDecimal subBalance) {
- while (true) {
- User user = userMapper.selectById(userId);
- if (user == null) break;
- BigDecimal balance = user.getBalance();
- Integer success = userMapper.deductUserBalance(user.getId(), balance, subBalance);
- if (success == 1) break;
- }
- }
- public void deductPointsRecord(Long orderId, Long userId, BigDecimal deductPoints) {
- try {
- DistributeOrdersDeductPointsRecord record = new DistributeOrdersDeductPointsRecord();
- record.setOrderId(orderId);
- record.setUserId(userId);
- record.setDeductPoints(deductPoints);
- distributeOrdersDeductPointsRecordMapper.insert(record);
- } catch (DuplicateKeyException e) {
- }
- }
- }
|