会员管理-积分余额:支持小数点后3位,修复用户列表积分不显示
- 后台:UserOperateIntegralMoneyRequest.integralValue 改为 BigDecimal,支持3位小数 - 后台:UserServiceImpl 积分操作逻辑改为 BigDecimal,支持小数 - 后台:UserResponse.integral 改为 BigDecimal,修复 BeanUtils 复制导致列表积分不显示 - 前端:积分输入框增加 precision=3、step=0.001,支持3位小数输入 Made-with: Cursor
This commit is contained in:
@@ -40,6 +40,7 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -227,11 +228,13 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateIntegralMoney(UserOperateIntegralMoneyRequest request) {
|
||||
if (ObjectUtil.isNull(request.getMoneyValue()) || ObjectUtil.isNull(request.getIntegralValue())) {
|
||||
if (ObjectUtil.isNull(request.getMoneyValue()) && ObjectUtil.isNull(request.getIntegralValue())) {
|
||||
throw new CrmebException("至少输入一个金额");
|
||||
}
|
||||
if (request.getMoneyValue().compareTo(BigDecimal.ZERO) < 1 && request.getIntegralValue() <= 0) {
|
||||
throw new CrmebException("修改值不能等小于等于0");
|
||||
boolean moneyValid = request.getMoneyValue() != null && request.getMoneyValue().compareTo(BigDecimal.ZERO) > 0;
|
||||
boolean integralValid = request.getIntegralValue() != null && request.getIntegralValue().compareTo(BigDecimal.ZERO) > 0;
|
||||
if (!moneyValid && !integralValid) {
|
||||
throw new CrmebException("修改值不能小于等于0");
|
||||
}
|
||||
|
||||
User user = getById(request.getUid());
|
||||
@@ -250,16 +253,16 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
|
||||
}
|
||||
}
|
||||
|
||||
if (request.getIntegralType().equals(2) && request.getIntegralValue() != 0) {
|
||||
if (request.getIntegralType().equals(2) && request.getIntegralValue() != null && request.getIntegralValue().compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal integral = user.getIntegral() != null ? user.getIntegral() : BigDecimal.ZERO;
|
||||
if (integral.subtract(BigDecimal.valueOf(request.getIntegralValue())).compareTo(BigDecimal.ZERO) < 0) {
|
||||
if (integral.subtract(request.getIntegralValue()).compareTo(BigDecimal.ZERO) < 0) {
|
||||
throw new CrmebException("积分扣减后不能小于0");
|
||||
}
|
||||
}
|
||||
if (request.getIntegralType().equals(1) && request.getIntegralValue() != 0) {
|
||||
if (request.getIntegralType().equals(1) && request.getIntegralValue() != null && request.getIntegralValue().compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal integral = user.getIntegral() != null ? user.getIntegral() : BigDecimal.ZERO;
|
||||
if (integral.add(BigDecimal.valueOf(request.getIntegralValue())).compareTo(BigDecimal.valueOf(99999999)) > 0) {
|
||||
throw new CrmebException("积分添加后不能大于99999999");
|
||||
if (integral.add(request.getIntegralValue()).compareTo(new BigDecimal("99999999.999")) > 0) {
|
||||
throw new CrmebException("积分添加后不能大于99999999.999");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,28 +298,29 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
|
||||
}
|
||||
}
|
||||
|
||||
// 处理积分
|
||||
if (request.getIntegralValue() > 0) {
|
||||
// 处理积分(支持小数点后3位)
|
||||
if (request.getIntegralValue() != null && request.getIntegralValue().compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal integralValue = request.getIntegralValue().setScale(3, RoundingMode.HALF_UP);
|
||||
// 生成记录
|
||||
UserIntegralRecord integralRecord = new UserIntegralRecord();
|
||||
integralRecord.setUid(user.getUid());
|
||||
integralRecord.setLinkType(IntegralRecordConstants.INTEGRAL_RECORD_LINK_TYPE_SYSTEM);
|
||||
integralRecord.setTitle(IntegralRecordConstants.BROKERAGE_RECORD_TITLE_SYSTEM);
|
||||
integralRecord.setIntegral(BigDecimal.valueOf(request.getIntegralValue()));
|
||||
integralRecord.setIntegral(integralValue);
|
||||
integralRecord.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE);
|
||||
if (request.getIntegralType() == 1) {// 增加
|
||||
integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD);
|
||||
BigDecimal userIntegral = user.getIntegral() != null ? user.getIntegral() : BigDecimal.ZERO;
|
||||
integralRecord.setBalance(userIntegral.add(BigDecimal.valueOf(request.getIntegralValue())).intValue());
|
||||
integralRecord.setMark(StrUtil.format("后台操作增加了{}积分", request.getIntegralValue()));
|
||||
integralRecord.setBalance(userIntegral.add(integralValue).setScale(0, RoundingMode.HALF_UP).intValue());
|
||||
integralRecord.setMark(StrUtil.format("后台操作增加了{}积分", integralValue));
|
||||
|
||||
operationIntegral(user.getUid(), BigDecimal.valueOf(request.getIntegralValue()), user.getIntegral(), "add");
|
||||
operationIntegral(user.getUid(), integralValue, user.getIntegral(), "add");
|
||||
} else {
|
||||
integralRecord.setType(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_SUB);
|
||||
BigDecimal userIntegral = user.getIntegral() != null ? user.getIntegral() : BigDecimal.ZERO;
|
||||
integralRecord.setBalance(userIntegral.subtract(BigDecimal.valueOf(request.getIntegralValue())).intValue());
|
||||
integralRecord.setMark(StrUtil.format("后台操作减少了{}积分", request.getIntegralValue()));
|
||||
operationIntegral(user.getUid(), BigDecimal.valueOf(request.getIntegralValue()), user.getIntegral(), "sub");
|
||||
integralRecord.setBalance(userIntegral.subtract(integralValue).setScale(0, RoundingMode.HALF_UP).intValue());
|
||||
integralRecord.setMark(StrUtil.format("后台操作减少了{}积分", integralValue));
|
||||
operationIntegral(user.getUid(), integralValue, user.getIntegral(), "sub");
|
||||
}
|
||||
userIntegralRecordService.save(integralRecord);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user