更新会员成长值 不对

订单退款 全额 部分 问题
This commit is contained in:
2025-12-25 18:02:31 +08:00
parent c6102dd4b4
commit d70546f55e
6 changed files with 92 additions and 20 deletions

View File

@@ -65,4 +65,9 @@ public class MkPointsConfigServiceImpl extends ServiceImpl<MkPointsConfigMapper,
mkPointsUserService.alterPoints(null, shopUser.getId(), orderInfo.getShopId(), PointsConstant.ADD,
awardPoints.intValue(), orderInfo.getId(), StrUtil.format("消费¥{}送{}积分", payAmount, awardPoints.intValue()));
}
@Override
public void removeConsumeAwardPoints(Long shopId, Long userId, Long orderId, String orderNo) {
mkPointsUserService.removePointByOrder(shopId, userId, orderId, orderNo, "订单退款扣除赠送积分");
}
}

View File

@@ -168,4 +168,49 @@ public class MkPointsUserServiceImpl extends ServiceImpl<MkPointsUserMapper, MkP
acUserMsgService.addUserMsg(msg);
return record.getId();
}
@Override
@Transactional
public void removePointByOrder(Long shopId, Long userId, Long orderId, String orderNo, String reason) {
MkPointsUser pointsUser = getPointsUser(shopId, null, userId);
MkPointsUserRecord one = pointsUserRecordService.getOne(query()
.eq(MkPointsUserRecord::getMkPointsUserId, pointsUser.getId())
.eq(MkPointsUserRecord::getShopId, shopId)
.eq(MkPointsUserRecord::getSourceId, orderId.toString())
.eq(MkPointsUserRecord::getFloatType, PointsConstant.ADD.getValue())
.orderBy(MkPointsUserRecord::getId, true)
);
if (one == null) {
return;
}
Long floatPoints = Math.abs(one.getFloatPoints());
pointsUser.setPointBalance(pointsUser.getPointBalance() - floatPoints);
saveOrUpdate(pointsUser);
MkPointsUserRecord record = MkPointsUserRecord.builder()
.mkPointsUserId(pointsUser.getId())
.shopId(pointsUser.getShopId())
.shopUserId(pointsUser.getShopUserId())
.floatType(PointsConstant.SUB.getValue())
.floatPoints(floatPoints)
.balancePoints(pointsUser.getPointBalance())
.sourceId(orderId.toString())
.content(reason)
.build();
boolean save = pointsUserRecordService.save(record);
if (!save) {
throw new CzgException("积分操作失败,积分记录保存失败");
}
AcUserMsg msg = new AcUserMsg()
.setUserId(pointsUser.getUserId())
.setShopId(shopId)
.setSourceId(orderId)
.setSourceType("order")
.setType("points")
.setReadStatus(0)
.setTitle("积分扣除")
.setContent(StrUtil.format("订单退款积分扣除提醒:{} 积分已扣除,订单号:{}", floatPoints, orderNo));
acUserMsgService.addUserMsg(msg);
}
}

View File

@@ -120,12 +120,12 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
break;
case "ORDER":
conditionMap.put("ORDER", orderInfoService.count(query().eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUserInfo.getUserId())
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) >= Integer.parseInt(item.getValue()));
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())) >= Integer.parseInt(item.getValue()));
break;
case "COST_AMOUNT":
conditionMap.put("COST_AMOUNT", orderInfoService.getOneAs(query().select("IFNULL(sum(pay_amount), 0) as total_amount ").eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUserInfo.getUserId())
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()), BigDecimal.class)
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()), BigDecimal.class)
.compareTo(new BigDecimal(item.getValue())) >= 0);
break;
@@ -309,6 +309,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
return false;
}
ShopUser upShopUser = new ShopUser();
upShopUser.setId(shopUser.getId());
if (shopUser.getExperience() == null) {
upShopUser.setExperience(0L);
}