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

积分模块

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