Commit 66e41680 authored by 万成波's avatar 万成波

积分模块

parent 84996912
......@@ -9,7 +9,17 @@ import lombok.Data;
* @createTime 2025-08-29 17:23:29 星期五
*/
@Data
public class PointsDetailDTO {
public class PointsDetail {
/**
* 用户名
*/
private String userName;
/**
* 积分
*/
private int points;
/**
* 明细名称
......
......@@ -2,7 +2,7 @@ package com.tangguo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsUserPoints;
import com.tangguo.domain.dto.PointsDetailDTO;
import com.tangguo.domain.dto.PointsDetail;
import java.util.List;
......@@ -51,20 +51,16 @@ public interface IBbsUserPointsService extends IService<BbsUserPoints> {
/**
* 增加用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
void incrUserPoints(String userName, int points, PointsDetailDTO detail);
void incrUserPoints(PointsDetail detail);
/**
* 扣减用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
void decrUserPoints(String userName, int points, PointsDetailDTO detail);
void decrUserPoints(PointsDetail detail);
}
......@@ -5,7 +5,7 @@ import com.tangguo.common.exception.ServiceException;
import com.tangguo.domain.BbsPointsGoods;
import com.tangguo.domain.BbsUserPoints;
import com.tangguo.domain.BbsUserPointsExchange;
import com.tangguo.domain.dto.PointsDetailDTO;
import com.tangguo.domain.dto.PointsDetail;
import com.tangguo.mapper.BbsUserPointsExchangeMapper;
import com.tangguo.service.IBbsPointsGoodsService;
import com.tangguo.service.IBbsUserPointsExchangeService;
......@@ -85,11 +85,13 @@ public class BbsUserPointsExchangeServiceImpl extends ServiceImpl<BbsUserPointsE
this.pointsGoodsService.incrGoodsSales(goodsId, 1);
// 扣减用户积分
PointsDetailDTO detail = new PointsDetailDTO();
PointsDetail detail = new PointsDetail();
detail.setUserName(userName);
detail.setPoints(exchangePoints);
detail.setDetailName(dbGoods.getName());
detail.setDetailCode(dbGoods.getCode());
detail.setDescription(String.format("用户【%s】兑换积分商品【%s-%s】", userName, dbGoods.getName(), dbGoods.getCode()));
this.userPointsService.decrUserPoints(userName, exchangePoints, detail);
this.userPointsService.decrUserPoints(detail);
// 添加兑换记录
BbsUserPointsExchange addExchange = new BbsUserPointsExchange();
......
......@@ -6,12 +6,11 @@ import com.tangguo.common.exception.ServiceException;
import com.tangguo.common.utils.SecurityUtils;
import com.tangguo.domain.BbsUserPoints;
import com.tangguo.domain.BbsUserPointsDetail;
import com.tangguo.domain.dto.PointsDetailDTO;
import com.tangguo.domain.dto.PointsDetail;
import com.tangguo.mapper.BbsUserPointsMapper;
import com.tangguo.service.IBbsUserPointsDetailService;
import com.tangguo.service.IBbsUserPointsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
......@@ -82,10 +81,12 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
@Override
public void addUserPoints(BbsUserPoints points) {
String userName = points.getUserName();
PointsDetailDTO detail = new PointsDetailDTO();
PointsDetail detail = new PointsDetail();
detail.setUserName(userName);
detail.setPoints(points.getIncrOrDecrPoints());
detail.setDetailName("后台手动增加");
detail.setDescription(String.format("管理员【%s】后台手动增加用户【%s】积分", SecurityUtils.getUsername(), userName));
this.incrUserPoints(userName, points.getIncrOrDecrPoints(), detail);
this.incrUserPoints(detail);
}
......@@ -98,24 +99,24 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
@Override
public void deleteUserPoints(BbsUserPoints points) {
String userName = points.getUserName();
PointsDetailDTO detail = new PointsDetailDTO();
PointsDetail detail = new PointsDetail();
detail.setUserName(userName);
detail.setPoints(points.getIncrOrDecrPoints());
detail.setDetailName("后台手动扣减");
detail.setDescription(String.format("管理员【%s】后台手动扣减用户【%s】积分", SecurityUtils.getUsername(), userName));
this.decrUserPoints(userName, points.getIncrOrDecrPoints(), detail);
this.decrUserPoints(detail);
}
/**
* 增加用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
@Override
public void incrUserPoints(String userName, int points, PointsDetailDTO detail) {
synchronized (userName.intern()) {
this.userPointsServiceImpl.execIncrUserPoints(userName, points, detail);
public void incrUserPoints(PointsDetail detail) {
synchronized (detail.getUserName().intern()) {
this.userPointsServiceImpl.privIncrUserPoints(detail);
}
}
......@@ -123,14 +124,12 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
/**
* 扣减用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
@Override
public void decrUserPoints(String userName, int points, PointsDetailDTO detail) {
synchronized (userName.intern()) {
this.userPointsServiceImpl.execDecrUserPoints(userName, points, detail);
public void decrUserPoints(PointsDetail detail) {
synchronized (detail.getUserName().intern()) {
this.userPointsServiceImpl.privDecrUserPoints(detail);
}
}
......@@ -138,17 +137,17 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
/**
* 增加用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
@Transactional(rollbackFor = Exception.class)
public void execIncrUserPoints(String userName, int points, PointsDetailDTO detail) {
public void privIncrUserPoints(PointsDetail detail) {
int points = detail.getPoints();
if (points < 1) {
throw new ServiceException("增加用户积分失败,增加的积分分值不能小于0。");
}
// 更新用户积分
String userName = detail.getUserName();
BbsUserPoints userPoints = this.userPointsServiceImpl.getUserPoints(userName);
Integer currentPoints = userPoints.getCurrentPoints();
int incrCurrentPoints = currentPoints + points;
......@@ -172,17 +171,17 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
/**
* 扣减用户积分
*
* @param userName 用户名
* @param points 积分
* @param detail 积分明细
*/
@Transactional(rollbackFor = Exception.class)
public void execDecrUserPoints(String userName, int points, PointsDetailDTO detail) {
public void privDecrUserPoints(PointsDetail detail) {
int points = detail.getPoints();
if (points < 1) {
throw new ServiceException("扣减用户积分失败,扣减的积分分值不能小于0。");
}
// 更新用户积分
String userName = detail.getUserName();
BbsUserPoints userPoints = this.userPointsServiceImpl.getUserPoints(userName);
Integer currentPoints = userPoints.getCurrentPoints();
if (points > currentPoints) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment