From b22df417e0bc423c788b013feaad686531d69eed Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 08 一月 2025 09:51:37 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java | 106 ++++++++++++++++++++++++---------------------------- 1 files changed, 49 insertions(+), 57 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java index 05b2c91..8223d51 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java @@ -15,6 +15,7 @@ import com.ruoyi.account.vo.UserPointDetailVO; import com.ruoyi.account.vo.UserPointStatistics; import com.ruoyi.account.vo.UserPointVO; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.PhoneNumberValidator; import com.ruoyi.common.security.service.TokenService; @@ -29,6 +30,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Collections; import java.util.List; import java.util.Map; @@ -53,6 +55,11 @@ private VipSettingService vipSettingService; @Resource private PointSettingService pointSettingService; + @Resource + private UserPointService userPointService; + + + @Override public UserPointVO getUserPoint(Long userId) { @@ -61,7 +68,7 @@ UserPointVO userPointVO = new UserPointVO(); userPointVO.setTotalPoint(appUser.getTotalPoint()); - userPointVO.setConsumePoint(appUser.getLavePoint()); + userPointVO.setConsumePoint(appUser.getAvailablePoint()); userPointVO.setShopPoint(appUser.getShopPoint()); userPointVO.setSharePoint(appUser.getSharePoint()); userPointVO.setPullNewPoint(appUser.getTotalInvitePoint()); @@ -76,13 +83,14 @@ List<UserPoint> userPointList = list(new LambdaQueryWrapper<UserPoint>() .between(startTime != null, UserPoint::getCreateTime, startTime, endTime) .eq(type != null, UserPoint::getType, type) - .eq(UserPoint::getAppUserId, userId)); + .eq(UserPoint::getAppUserId, userId).orderByDesc(UserPoint::getCreateTime)); if (CollectionUtil.isNotEmpty(userPointList)) { return userPointList.stream().map(p -> { UserPointDetailVO userPointDetailVO = new UserPointDetailVO(); userPointDetailVO.setType(p.getType()); userPointDetailVO.setVariablePoint(p.getVariablePoint()); - userPointDetailVO.setCreateTime(p.getCreateTime()); + String format = p.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + userPointDetailVO.setCreateTime(format); return userPointDetailVO; }).collect(Collectors.toList()); } @@ -92,9 +100,9 @@ @Override @Transactional - public void transferPoint(BigDecimal point, String phone) { + public R transferPoint(Integer point, String phone) { if (!PhoneNumberValidator.isValidChinaPhoneNumber(phone)) { - throw new ServiceException("无效的电话号码"); + return R.fail("无效的电话号码"); } LoginUser loginUserApplet = tokenService.getLoginUserApplet(); @@ -102,82 +110,66 @@ VipSetting vipSetting = vipSettingService.getVipSettingByUserId(userid); if (vipSetting == null) { - throw new ServiceException("VIP 设置未找到"); + return R.fail("VIP 设置未找到"); } if (vipSetting.getId() == 0 && vipSetting.getVipGiftRole() == 0) { - throw new ServiceException("转赠积分权限未开启"); + return R.fail("转赠积分权限未开启"); } AppUser appUser = appUserService.getById(userid); if (appUser == null) { - throw new ServiceException("用户未找到"); + return R.fail("用户未找到"); } PointSetting pointSetting = pointSettingService.getPointSettingByAppUserId(userid); if (pointSetting == null) { - throw new ServiceException("积分设置未找到"); + return R.fail("积分设置未找到"); } // 可转赠积分总数 - long adjustedPoint = getAdjustedPoint(pointSetting, appUser); - - if (point.compareTo(new BigDecimal(adjustedPoint)) > 0) { - throw new ServiceException("转赠积分不足"); + Integer transferablePoint = appUser.getTransferablePoint(); + if (point > transferablePoint) { + return R.fail("转赠积分不足"); } AppUser appUserForPhoe = appUserService.getOne(new LambdaQueryWrapper<AppUser>() .eq(AppUser::getPhone, phone)); if (appUserForPhoe == null) { - throw new ServiceException("目标用户未找到"); + return R.fail("目标用户未找到"); } - - appUserForPhoe.setLavePoint(appUserForPhoe.getLavePoint() + point.intValue()); - appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point.intValue()); + Integer lavePoint1 = appUserForPhoe.getLavePoint(); + appUserForPhoe.setLavePoint(appUserForPhoe.getLavePoint() + point); + appUserForPhoe.setTotalPoint(appUserForPhoe.getTotalPoint() + point); + appUserForPhoe.setTransferablePoint(transferablePoint + point); + appUserForPhoe.setAvailablePoint(appUserForPhoe.getAvailablePoint() + point); appUserService.updateById(appUserForPhoe); + //构建积分流水记录 + UserPoint userPoint = new UserPoint(); + userPoint.setType(12); + userPoint.setHistoricalPoint(lavePoint1); + userPoint.setVariablePoint(point); + userPoint.setBalance(appUserForPhoe.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUserForPhoe.getId()); + userPointService.save(userPoint); Integer lavePoint = appUser.getLavePoint(); - appUser.setLavePoint(lavePoint - point.intValue()); + appUser.setLavePoint(lavePoint - point); Integer totalPoint = appUser.getTotalPoint(); - appUser.setTotalPoint(totalPoint - point.intValue()); + appUser.setTotalPoint(totalPoint - point); + appUser.setTransferablePoint(appUser.getTransferablePoint() - point); + appUser.setAvailablePoint(appUser.getAvailablePoint() - point); appUserService.updateById(appUser); - log.info("积分转赠完成,用户ID: {}, 新积分: {}", appUserForPhoe.getId(), appUserForPhoe.getLavePoint()); + //构建积分流水记录 + userPoint = new UserPoint(); + userPoint.setType(13); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(point); + userPoint.setBalance(appUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser.getId()); + userPointService.save(userPoint); + return R.ok(); } - - /** - * 获取可转赠积分 - * @param pointSetting 积分设置 - * @param appUser 用户 - */ - private long getAdjustedPoint(PointSetting pointSetting, AppUser appUser) { - if (pointSetting == null || appUser == null) { - throw new ServiceException("pointSetting和appUser不能为空"); - } - - long transferPoint = 0; - - transferPoint += calculatePoint(pointSetting.getBuyPointGift(), appUser.getShopPoint(), pointSetting.getBuyPoint()); - transferPoint += calculatePoint(pointSetting.getSharePointGift(), appUser.getSharePoint(), pointSetting.getSharePoint()); - transferPoint += calculatePoint(pointSetting.getShopSharePointGift(), appUser.getShopSharePoint(), pointSetting.getShopSharePoint()); - transferPoint += calculatePoint(pointSetting.getShopPointGift(), appUser.getShopAchievementPoint(), pointSetting.getShopPoint()); - transferPoint += calculatePoint(pointSetting.getPersonPointGift(), appUser.getTotalPerformancePoint(), pointSetting.getPersonPoint()); - transferPoint += calculatePoint(pointSetting.getGetNewPointGift(), appUser.getTotalInvitePoint(), pointSetting.getGetNewPoint()); - transferPoint += calculatePoint(pointSetting.getGetRegisPointGift(), appUser.getTotalRegisterPoint(), pointSetting.getRegisPoint()); - transferPoint += calculatePoint(pointSetting.getWorkPointGift(), appUser.getTotalSharePoint() + appUser.getTotalSignPoint() + appUser.getTotalHourPoint(), pointSetting.getWorkPoint()); - - return transferPoint; - } - - private long calculatePoint(Integer settingValue, double userValue, double pointValue) { - if (settingValue == 1) { - try { - double result = userValue * (pointValue / 100.0); - return Math.round(result); - } catch (ArithmeticException e) { - return 0; - } - } - return 0; - } - @Override -- Gitblit v1.7.1