最新修改

This commit is contained in:
朱春云 2025-12-02 22:10:58 +08:00
parent 048ec0d0be
commit 33409b404f
9 changed files with 167 additions and 27 deletions

View File

@ -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("<br>","\n")+"\n" +
"三方报名链接:"+busiNotice.getThirdUrl()+"\n" +
"大量小红书、B站、抖音、快手、微博高质量通告\n";
contentMessage.append(res);

View File

@ -120,7 +120,7 @@ public class BaseConfigController extends BaseController
LambdaQueryWrapper<BaseConfig> queryWrapper = new LambdaQueryWrapper<BaseConfig>().eq(BaseConfig::getCode,code);
List<BaseConfig> list = baseConfigService.list(queryWrapper);
if(list.isEmpty()){
error("未查询到相关配置!");
return error("未查询到相关配置!");
}
return AjaxResult.ok(list.get(0).getJsonStr());
}

View File

@ -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<BusiNoticeSignMapper,
try {
MemberUserVO tgz = memberUserService.queryByUserId(busiNotice.getUserId(), "01");
if (StringUtils.isNotEmpty(tgz.getIdentityType()) && tgz.getIdentityType().equals("05")) {
//判断距离通告发布24小时内报名人数是否达到50人
if (noticeMapper.selectCount(new LambdaQueryWrapper<BusiNotice>().eq(BusiNotice::getId, appNoticeSign.getNoticeId()).ge(BusiNotice::getCreateTime, DateUtils.getNowDate().getTime() - 86400000)) == 50) {
// 修改为正确的逻辑统计通告发布后24小时内报名人数
if (this.count(new LambdaQueryWrapper<BusiNoticeSign>()
.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();

View File

@ -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();
}
/**
* 分页查询积分变动明细
*

View File

@ -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<MemberPoints> {
IPage<MemberPoints> queryListPage(@Param("userId") Long userId, Page<MemberPoints> page);
IPage<MemberPoints> adminList(@Param("memberPoints") MemberPoints memberPoints, Page<MemberPoints> 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<Long> getPointsUserIds();
}

View File

@ -25,6 +25,9 @@ public interface IMemberPointsService extends IService<MemberPoints> {
* @date 15:24 2025/3/29
**/
IPage<MemberPoints> queryListPage(Long userId, Page<MemberPoints> page);
public void jsFEN(Long userId);
public void rightJsFEN();
IPage<MemberPoints> adminList(MemberPoints memberPoints, Page<MemberPoints> page);

View File

@ -130,7 +130,6 @@ public class MemberCardServiceImpl extends ServiceImpl<MemberCardMapper, MemberC
.eq(MemberCard::getCardId, cardId)
.eq(MemberCard::getUserId, userId)
.eq(DlBaseEntity::getDelFlag, 0)
.lt(MemberCard::getStartDate, time)
.ge(MemberCard::getEndDate, time)
.orderByDesc(MemberCard::getEndDate);
return list(lambdaQueryWrapper);

View File

@ -16,10 +16,7 @@ import io.lettuce.core.LMoveArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -50,6 +47,107 @@ public class MemberPointsServiceImpl extends ServiceImpl<MemberPointsMapper, Mem
return memberPointsMapper.queryListPage(userId,page);
}
/**
* 分页查询积分变动明细
*
* @param userId 用户id
* @param page 分页参数
* @return com.baomidou.mybatisplus.core.metadata.IPage<com.ruoyi.member.domain.MemberPoints>
* @author PQZ
* @date 15:24 2025/3/29
**/
@Override
public void jsFEN(Long userId) {
LambdaQueryWrapper<MemberPoints> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag,0);
lambdaQueryWrapper.eq(MemberPoints::getUserId,userId);
lambdaQueryWrapper.eq(MemberPoints::getStatus,"01");
lambdaQueryWrapper.orderByAsc(DlBaseEntity::getCreateTime);
List<MemberPoints> 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<Long> pointsUserIds = memberPointsMapper.getPointsUserIds();
for (Long userId : pointsUserIds) {
LambdaQueryWrapper<MemberPoints> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag, 0)
.eq(MemberPoints::getUserId, userId)
.eq(MemberPoints::getStatus, "01")
.orderByAsc(DlBaseEntity::getCreateTime);
List<MemberPoints> 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<MemberPoints> adminList(MemberPoints memberPoints, Page<MemberPoints> page) {
return memberPointsMapper.adminList(memberPoints,page);
@ -82,7 +180,7 @@ public class MemberPointsServiceImpl extends ServiceImpl<MemberPointsMapper, Mem
memberPoints.setBalance(memberPoints.getPoints());
} else {
//如果有记录则取最新记录中的剩余值进行计算后得出新值
double oldBalance = list.get(0).getBalance();
double oldBalance = getBloggerBalance(memberPoints.getUserId());
double newBalance;
if ("1".equals(memberPoints.getType())) {
newBalance = oldBalance + memberPoints.getPoints();
@ -105,20 +203,21 @@ public class MemberPointsServiceImpl extends ServiceImpl<MemberPointsMapper, Mem
**/
@Override
public double getBloggerBalance(Long userId) {
LambdaQueryWrapper<MemberPoints> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper
.eq(MemberPoints::getUserId,userId)
.eq(MemberPoints::getStatus,"01")
.orderByDesc(DlBaseEntity::getCreateTime);
List<MemberPoints> 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<MemberPointsMapper, Mem
lambdaQueryWrapper
.eq(MemberPoints::getUserId,userId)
.eq(MemberPoints::getStatus,"01")
.eq(DlBaseEntity::getDelFlag,0)
.and(wrapper -> wrapper.eq(MemberPoints::getType,"1").lt(MemberPoints::getCreateTime, new Date(System.currentTimeMillis() - 86400000L)).or().eq(MemberPoints::getType,"2"))
.orderByDesc(DlBaseEntity::getCreateTime);
List<MemberPoints> list = list(lambdaQueryWrapper);
@ -144,7 +244,8 @@ public class MemberPointsServiceImpl extends ServiceImpl<MemberPointsMapper, Mem
//在获取在最新一条记录createtime后 type等于2的全部数据
List<MemberPoints> 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<MemberPointsMapper, Mem
// 组合成订单编号
return "JFTX" + timestamp + String.format("%03d", randomNum);
}
}

View File

@ -6,10 +6,10 @@ spring:
druid:
# 主库数据源
master:
# url: jdbc:mysql://124.222.105.7:3306/dl_notice?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://82.156.161.160:3306/dl_notice?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dl_notice
password: 123456
url: jdbc:mysql://1.92.99.15:3306/dl_notice?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#url: jdbc:mysql://127.0.0.1:3306/dl_notice?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: qqzcy@1014
# 从库数据源
slave:
# 从数据源开关/默认关闭