diff --git a/backend-adminend/src/views/marketing/integral/integralLog/index.vue b/backend-adminend/src/views/marketing/integral/integralLog/index.vue index db8417a..44980b1 100644 --- a/backend-adminend/src/views/marketing/integral/integralLog/index.vue +++ b/backend-adminend/src/views/marketing/integral/integralLog/index.vue @@ -3,85 +3,102 @@ - - - - {{ item.text }} - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + - + - - - - - - - + + + + + {{ scope.row.nickName || '-' }} + + + + + + + {{ scope.row.type === 1 ? '+' : '-' }}{{ scope.row.integral }} + + + + + + + + {{ linkTypeFilter(scope.row.linkType) }} + + + + + + + {{ statusFilter(scope.row.status) }} + + + + + + {{ scope.row.mark || '-' }} + + + + @@ -89,78 +106,129 @@ - + diff --git a/backend/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java b/backend/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java index 32b811e..d393354 100644 --- a/backend/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java +++ b/backend/crmeb-common/src/main/java/com/zbkj/common/constants/IntegralRecordConstants.java @@ -14,42 +14,42 @@ package com.zbkj.common.constants; */ public class IntegralRecordConstants { - /** 佣金记录类型—增加 */ + /** 积分记录类型—增加 */ public static final Integer INTEGRAL_RECORD_TYPE_ADD = 1; - /** 佣金记录类型—扣减 */ + /** 积分记录类型—扣减 */ public static final Integer INTEGRAL_RECORD_TYPE_SUB = 2; - /** 佣金记录状态—创建 */ + /** 积分记录状态—创建 */ public static final Integer INTEGRAL_RECORD_STATUS_CREATE = 1; - /** 佣金记录状态—冻结期 */ + /** 积分记录状态—冻结期 */ public static final Integer INTEGRAL_RECORD_STATUS_FROZEN = 2; - /** 佣金记录状态—完成 */ + /** 积分记录状态—完成 */ public static final Integer INTEGRAL_RECORD_STATUS_COMPLETE = 3; - /** 佣金记录状态—失效(订单退款) */ + /** 积分记录状态—失效(订单退款) */ public static final Integer INTEGRAL_RECORD_STATUS_INVALIDATION = 4; - /** 佣金记录关联类型—订单 */ + /** 积分记录关联类型—订单 */ public static final String INTEGRAL_RECORD_LINK_TYPE_ORDER = "order"; - /** 佣金记录关联类型—签到 */ + /** 积分记录关联类型—签到 */ public static final String INTEGRAL_RECORD_LINK_TYPE_SIGN = "sign"; - /** 佣金记录关联类型—系统后台 */ + /** 积分记录关联类型—系统后台 */ public static final String INTEGRAL_RECORD_LINK_TYPE_SYSTEM = "system"; - /** 佣金记录标题—用户订单付款成功 */ + /** 积分记录标题—用户订单付款成功 */ public static final String BROKERAGE_RECORD_TITLE_ORDER = "用户订单付款成功"; - /** 佣金记录标题—签到经验奖励 */ + /** 积分记录标题—签到积分奖励 */ public static final String BROKERAGE_RECORD_TITLE_SIGN = "签到积分奖励"; - /** 佣金记录标题—后台积分操作 */ + /** 积分记录标题—后台积分操作 */ public static final String BROKERAGE_RECORD_TITLE_SYSTEM = "后台积分操作"; - /** 佣金记录标题—订单退款 */ + /** 积分记录标题—订单退款 */ public static final String BROKERAGE_RECORD_TITLE_REFUND = "订单退款"; } diff --git a/backend/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java b/backend/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java index 0ccc593..e6fdc73 100644 --- a/backend/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java +++ b/backend/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserIntegralRecordServiceImpl.java @@ -73,22 +73,18 @@ public class UserIntegralRecordServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); lqw.eq(UserIntegralRecord::getUid, uid); lqw.eq(UserIntegralRecord::getLinkId, orderNo); - lqw.in(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_CREATE, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + lqw.in(UserIntegralRecord::getStatus, IntegralRecordConstants.INTEGRAL_RECORD_STATUS_CREATE, + IntegralRecordConstants.INTEGRAL_RECORD_STATUS_FROZEN, + IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); List recordList = dao.selectList(lqw); if (CollUtil.isEmpty(recordList)) { return recordList; } - for (int i = 0; i < recordList.size();) { - UserIntegralRecord record = recordList.get(i); - if (record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD)) { - if (record.getStatus().equals(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE)) { - recordList.remove(i); - continue; - } - } - i++; - } - return recordList; + // 过滤掉已完成的增加类型记录 + return recordList.stream() + .filter(record -> !(record.getType().equals(IntegralRecordConstants.INTEGRAL_RECORD_TYPE_ADD) + && record.getStatus().equals(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE))) + .collect(Collectors.toList()); } /** @@ -101,26 +97,45 @@ public class UserIntegralRecordServiceImpl extends ServiceImpl> userRecordMap = thawList.stream() + .collect(Collectors.groupingBy(UserIntegralRecord::getUid)); + + for (Map.Entry> entry : userRecordMap.entrySet()) { + Integer uid = entry.getKey(); + List userRecords = entry.getValue(); + + User user = userService.getById(uid); if (ObjectUtil.isNull(user)) { - continue ; + logger.warn("积分解冻—用户不存在,uid = {}", uid); + continue; } - record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); - // 计算积分余额 - Integer balance = (user.getIntegral() != null ? user.getIntegral() : BigDecimal.ZERO).add(record.getIntegral()).intValue(); - record.setBalance(balance); - record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); - - // 解冻 + + // 批量事务处理同一用户的积分解冻 Boolean execute = transactionTemplate.execute(e -> { - updateById(record); - userService.operationIntegral(record.getUid(), record.getIntegral(), user.getIntegral(), "add"); + Integer currentIntegral = user.getIntegral(); + for (UserIntegralRecord record : userRecords) { + record.setStatus(IntegralRecordConstants.INTEGRAL_RECORD_STATUS_COMPLETE); + // 计算积分余额 + Integer balance = (currentIntegral != null ? currentIntegral : BigDecimal.ZERO) + .add(record.getIntegral()).intValue(); + record.setBalance(balance); + record.setUpdateTime(cn.hutool.core.date.DateUtil.date()); + updateById(record); + + // 更新用户积分 + userService.operationIntegral(uid, record.getIntegral(), currentIntegral, "add"); + currentIntegral = balance; // 更新当前积分供下一条记录计算 + } return Boolean.TRUE; }); + if (!execute) { - logger.error(StrUtil.format("积分解冻处理—解冻出错,记录id = {}", record.getId())); + logger.error(StrUtil.format("积分解冻处理—批量解冻出错,用户uid = {},记录数 = {}", + uid, userRecords.size())); + } else { + logger.info("积分解冻成功—用户uid = {},解冻记录数 = {}", uid, userRecords.size()); } } }