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