From 33409b404f360b462de1cf794c522f5bc6755d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=98=A5=E4=BA=91?= <1994398261@qq.com> Date: Tue, 2 Dec 2025 22:10:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WeChatMessageServiceImpl.java | 4 +- .../base/controller/BaseConfigController.java | 4 +- .../impl/BusiNoticeSignServiceImpl.java | 8 +- .../controller/MemberPointsController.java | 16 +++ .../member/mapper/MemberPointsMapper.java | 14 ++ .../member/service/IMemberPointsService.java | 3 + .../service/impl/MemberCardServiceImpl.java | 1 - .../service/impl/MemberPointsServiceImpl.java | 136 +++++++++++++++--- .../src/main/resources/application-druid.yml | 8 +- 9 files changed, 167 insertions(+), 27 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java index 529679e..ad5c1e8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/WeChatMessageServiceImpl.java @@ -137,8 +137,8 @@ public class WeChatMessageServiceImpl implements IWeChatMessageService { String platformName = baseCategoryService.selectByCode(busiNotice.getPlatformCode()).get(0).getTitle(); String res="通告快接\n" + "【"+platformName+"】【"+busiNotice.getTitle()+"】\n" + - "招募人数:"+(busiNotice.getNeedNum()==null?"无上限":busiNotice.getNeedNum()+"名\n") + - "通告明细:"+busiNotice.getDetail()+"\n" + + "招募人数:"+(busiNotice.getNeedNum()==null?"无上限":busiNotice.getNeedNum()+"名") +"\n"+ + "通告明细:"+busiNotice.getDetail().replace("
","\n")+"\n" + "三方报名链接:"+busiNotice.getThirdUrl()+"\n" + "大量小红书、B站、抖音、快手、微博高质量通告!\n"; contentMessage.append(res); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseConfigController.java index 6bf90a9..59b62ef 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseConfigController.java @@ -30,7 +30,7 @@ import com.ruoyi.common.core.page.TableDataInfo; /** * 基础配置-账户配置、小程序配置的内容Controller - * + * * @author vinjor-m * @date 2025-03-17 */ @@ -120,7 +120,7 @@ public class BaseConfigController extends BaseController LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(BaseConfig::getCode,code); List list = baseConfigService.list(queryWrapper); if(list.isEmpty()){ - error("未查询到相关配置!"); + return error("未查询到相关配置!"); } return AjaxResult.ok(list.get(0).getJsonStr()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java index 39ad7fe..964fbe4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiNoticeSignServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.busi.service.impl; +import java.util.Date; import java.util.List; import cn.hutool.core.collection.CollectionUtil; @@ -117,8 +118,11 @@ public class BusiNoticeSignServiceImpl extends ServiceImpl().eq(BusiNotice::getId, appNoticeSign.getNoticeId()).ge(BusiNotice::getCreateTime, DateUtils.getNowDate().getTime() - 86400000)) == 50) { + // 修改为正确的逻辑:统计通告发布后24小时内报名人数 + if (this.count(new LambdaQueryWrapper() + .eq(BusiNoticeSign::getNoticeId, appNoticeSign.getNoticeId()) + .le(BusiNoticeSign::getCreateTime, new Date(busiNotice.getCreateTime().getTime() + 86400000))) == 50) { + String point = sysConfigService.selectConfigByKey("goodNotice"); if (StringUtils.isNotEmpty(point) && Integer.parseInt(point) > 0) { MemberPoints memberPoints = new MemberPoints(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java index fa0f1d9..1ca7a19 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/controller/MemberPointsController.java @@ -3,6 +3,7 @@ package com.ruoyi.member.controller; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -48,6 +49,21 @@ public class MemberPointsController extends BaseController { return success(list); } + @GetMapping("/jsFEN") + @Anonymous + public AjaxResult jsFEN(@RequestParam(name = "userId") Long userId) { + memberPointsService.jsFEN(userId); + return success(); + } + + @GetMapping("/rightJsFEN") + @Anonymous + public AjaxResult rightJsFEN() { + memberPointsService.rightJsFEN(); + return success(); + } + + /** * 分页查询积分变动明细 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java index 1bcc79a..fb9aed1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/mapper/MemberPointsMapper.java @@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.member.domain.MemberPoints; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 博主积分变动明细Mapper接口 @@ -28,4 +31,15 @@ public interface MemberPointsMapper extends BaseMapper { IPage queryListPage(@Param("userId") Long userId, Page page); IPage adminList(@Param("memberPoints") MemberPoints memberPoints, Page page); + + + @Select("SELECT SUM(points) FROM dl_member_points WHERE user_id = #{userId} AND status = '01' AND del_flag = 0 AND type = '1'") + Double sumAddPointsByUser(@Param("userId") Long userId); + + @Select("SELECT SUM(points) FROM dl_member_points WHERE user_id = #{userId} AND status = '01' AND del_flag = 0 AND type = '2'") + Double sumReducePointsByUser(@Param("userId") Long userId); + + @Select("SELECT user_id FROM dl_member_points group by user_id") + List getPointsUserIds(); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java index 8daa84a..b15b0f5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/IMemberPointsService.java @@ -25,6 +25,9 @@ public interface IMemberPointsService extends IService { * @date 15:24 2025/3/29 **/ IPage queryListPage(Long userId, Page page); + public void jsFEN(Long userId); + public void rightJsFEN(); + IPage adminList(MemberPoints memberPoints, Page page); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberCardServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberCardServiceImpl.java index cfd61a0..a4e2588 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberCardServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/member/service/impl/MemberCardServiceImpl.java @@ -130,7 +130,6 @@ public class MemberCardServiceImpl extends ServiceImpl + * @author PQZ + * @date 15:24 2025/3/29 + **/ + @Override + public void jsFEN(Long userId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag,0); + lambdaQueryWrapper.eq(MemberPoints::getUserId,userId); + lambdaQueryWrapper.eq(MemberPoints::getStatus,"01"); + lambdaQueryWrapper.orderByAsc(DlBaseEntity::getCreateTime); + List memberPoints = memberPointsMapper.selectList(lambdaQueryWrapper); + Double score =0d; + int i = 0; + Double errorAdd = 0d; + Double errorSub = 0d; + for (MemberPoints memberPoint : memberPoints) { + if (i>0){ + if ("1".equals(memberPoint.getType())) { + if (memberPoint.getBalance()!=memberPoints.get(i-1).getBalance()+ memberPoint.getPoints()){ + errorAdd += memberPoint.getPoints(); + } + + } else { + if (memberPoint.getBalance()!=memberPoints.get(i-1).getBalance()-memberPoint.getPoints()){ + errorSub += memberPoint.getPoints(); + } + } + } + + if ("1".equals(memberPoint.getType())) { + + score += memberPoint.getPoints(); + + + } else { + score -= memberPoint.getPoints(); + + } + i++; + } + System.out.println("错误---"+errorSub); + System.out.println("错误++++"+errorAdd); + System.out.println("score"+score); + } + + + + /** + * 修复后的积分余额计算方法 + * + * @author PQZ + * @date 15:24 2025/3/29 + **/ + @Override + public void rightJsFEN() { + // 开启线程(建议使用线程池替代直接new Thread) + new Thread(() -> { + List pointsUserIds = memberPointsMapper.getPointsUserIds(); + for (Long userId : pointsUserIds) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag, 0) + .eq(MemberPoints::getUserId, userId) + .eq(MemberPoints::getStatus, "01") + .orderByAsc(DlBaseEntity::getCreateTime); + List memberPoints = memberPointsMapper.selectList(lambdaQueryWrapper); + + // 修复:正确计算余额 + for (int i = 0; i < memberPoints.size(); i++) { + MemberPoints memberPoint = memberPoints.get(i); + if (i == 0) { + // 第一条记录,余额等于积分 + memberPoint.setBalance(memberPoint.getPoints()); + } else { + // 后续记录,基于前一条记录的余额计算 + MemberPoints previousPoint = memberPoints.get(i - 1); + if ("1".equals(memberPoint.getType())) { + // 增加积分 + memberPoint.setBalance(previousPoint.getBalance() + memberPoint.getPoints()); + } else { + // 减少积分 + memberPoint.setBalance(previousPoint.getBalance() - memberPoint.getPoints()); + } + } + } + // 批量更新 + if (!memberPoints.isEmpty()) { + this.updateBatchById(memberPoints); + } + } + }).start(); + } + + @Override public IPage adminList(MemberPoints memberPoints, Page page) { return memberPointsMapper.adminList(memberPoints,page); @@ -82,7 +180,7 @@ public class MemberPointsServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper - .eq(MemberPoints::getUserId,userId) - .eq(MemberPoints::getStatus,"01") - .orderByDesc(DlBaseEntity::getCreateTime); - List list = list(lambdaQueryWrapper); - if (list.isEmpty()){ - return 0; - } else { - return list.get(0).getBalance(); + Double addSum = memberPointsMapper.sumAddPointsByUser(userId); + Double reduceSum = memberPointsMapper.sumReducePointsByUser(userId); + if (addSum == null) { + addSum = 0.0; } + if (reduceSum == null) { + reduceSum = 0.0; + } + // 返回差值作为最终余额 + return addSum - reduceSum; } + + /** * 获取积分 * @@ -133,6 +232,7 @@ public class MemberPointsServiceImpl extends ServiceImpl wrapper.eq(MemberPoints::getType,"1").lt(MemberPoints::getCreateTime, new Date(System.currentTimeMillis() - 86400000L)).or().eq(MemberPoints::getType,"2")) .orderByDesc(DlBaseEntity::getCreateTime); List list = list(lambdaQueryWrapper); @@ -144,7 +244,8 @@ public class MemberPointsServiceImpl extends ServiceImpl memberPointsList = list.stream().filter(wrapper -> "2".equals(wrapper.getType())).filter(wrapper -> wrapper.getCreateTime().after(memberPoints.getCreateTime())).collect(Collectors.toList()); //计算出可提现的积分 - return memberPoints.getBalance() - memberPointsList.stream().mapToDouble(MemberPoints::getPoints).sum(); + double canWithdraw = memberPoints.getBalance() - memberPointsList.stream().mapToDouble(MemberPoints::getPoints).sum(); + return Math.min(canWithdraw, getBloggerBalance(userId)); } } @@ -244,4 +345,7 @@ public class MemberPointsServiceImpl extends ServiceImpl