From 71ff32998e103d5a43175011c0454827a7353af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 2 Jan 2025 20:51:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=89=A7=E9=9B=86=E5=91=A8?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sqx/modules/course/entity/Course.java | 1 + .../modules/course/service/CourseService.java | 4 ++++ .../service/impl/CourseServiceImpl.java | 22 ++++++++++++++----- .../sqx/modules/job/task/TempOrdersTask.java | 11 +++++++++- .../modules/redisService/RedisService.java | 4 ++++ .../redisService/impl/RedisServiceImpl.java | 19 ++++++++++++++++ 6 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sqx/modules/course/entity/Course.java b/src/main/java/com/sqx/modules/course/entity/Course.java index 9eba627e..2fc6d4a7 100644 --- a/src/main/java/com/sqx/modules/course/entity/Course.java +++ b/src/main/java/com/sqx/modules/course/entity/Course.java @@ -333,6 +333,7 @@ public class Course implements Serializable { @TableField(exist = false) private Integer isCollect; private Integer weekView; + private Integer weekPay; public Course() {} } diff --git a/src/main/java/com/sqx/modules/course/service/CourseService.java b/src/main/java/com/sqx/modules/course/service/CourseService.java index 85932b6d..8c5db2e5 100644 --- a/src/main/java/com/sqx/modules/course/service/CourseService.java +++ b/src/main/java/com/sqx/modules/course/service/CourseService.java @@ -63,4 +63,8 @@ public interface CourseService extends IService { Result getRedEnvelopeTips(Long userId); + /** + * 增加短剧周支付次数 + */ + void incrWeekPayCount(Long courseId); } diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java index 4a68dd00..daa0d227 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseServiceImpl.java @@ -9,16 +9,15 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import com.sqx.common.utils.DateUtils; -import com.sqx.common.utils.PageUtils; -import com.sqx.common.utils.RedisUtils; -import com.sqx.common.utils.Result; +import com.sqx.common.utils.*; import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.utils.JwtUtils; @@ -34,6 +33,7 @@ import com.sqx.modules.course.service.CourseService; import com.sqx.modules.course.service.CourseUserService; import com.sqx.modules.course.vo.CourseIn; import com.sqx.modules.orders.service.OrdersService; +import com.sqx.modules.redisService.RedisService; import com.sqx.modules.search.service.AppSearchService; import com.sqx.modules.utils.EasyPoi.ExcelUtils; import com.sqx.modules.utils.HttpClientUtil; @@ -74,13 +74,15 @@ public class CourseServiceImpl extends ServiceImpl implements private JwtUtils jwtUtils; @Autowired private CourseUserService courseUserService; + private final RedisService redisService; private final InviteAchievementService inviteAchievementService; @Resource private RedisUtils redisUtils; - public CourseServiceImpl(InviteAchievementService inviteAchievementService) { + public CourseServiceImpl(RedisService redisService, InviteAchievementService inviteAchievementService) { + this.redisService = redisService; this.inviteAchievementService = inviteAchievementService; } @@ -1288,4 +1290,14 @@ public class CourseServiceImpl extends ServiceImpl implements return Result.success().put("data", data); } + + @Override + public void incrWeekPayCount(Long courseId) { + if (ApiAccessLimitUtil.isAccessAllowed("setWeekPayCount", courseId.toString(), 1, 600)) { + int count = redisService.getCourseWeekPayCount(courseId); + update(null, new LambdaUpdateWrapper() + .eq(Course::getCourseId, courseId) + .set(Course::getWeekPay, count)); + } + } } diff --git a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java index e7ff4779..b4bd34ef 100644 --- a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java @@ -19,6 +19,7 @@ import com.sqx.modules.app.service.UserService; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.complet.entity.CompletAward; import com.sqx.modules.complet.service.CompletAwardService; +import com.sqx.modules.course.service.CourseService; import com.sqx.modules.invite.dao.InviteDao; import com.sqx.modules.invite.entity.Invite; import com.sqx.modules.invite.service.InviteService; @@ -75,11 +76,13 @@ public class TempOrdersTask { @Value("${spring.profiles.active}") private String profiles; private final InviteAchievementService inviteAchievementService; + private final CourseService courseService; private Logger logger = LoggerFactory.getLogger(getClass()); - public TempOrdersTask(InviteAchievementService inviteAchievementService) { + public TempOrdersTask(InviteAchievementService inviteAchievementService, CourseService courseService) { this.inviteAchievementService = inviteAchievementService; + this.courseService = courseService; } @@ -170,9 +173,15 @@ public class TempOrdersTask { ThreadUtil.sleep(1000); activities(user, byUser); }); + ThreadUtil.execAsync(() -> { inviteService.updateInvite(byUser, DateUtil.now(), user.getUserId(), order.getPayMoney()); }); + + //增加剧集支付次数 + ThreadUtil.execAsync(() -> { + courseService.incrWeekPayCount(order.getCourseId()); + }); //Map map = inviteService.updateInvite(byUser, DateUtil.now(), user.getUserId(), order.getPayMoney()); // Object oneUserId = map.get("oneUserId"); // if (oneUserId != null) { diff --git a/src/main/java/com/sqx/modules/redisService/RedisService.java b/src/main/java/com/sqx/modules/redisService/RedisService.java index a2f59e7e..04cf4d0d 100644 --- a/src/main/java/com/sqx/modules/redisService/RedisService.java +++ b/src/main/java/com/sqx/modules/redisService/RedisService.java @@ -23,4 +23,8 @@ public interface RedisService { boolean isSetUserState(long userId); int getCourseWeekViewCount(long courseId); + + int getCourseWeekPayCount(long courseId); + + } diff --git a/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java b/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java index 5220de18..78a45775 100644 --- a/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java +++ b/src/main/java/com/sqx/modules/redisService/impl/RedisServiceImpl.java @@ -310,4 +310,23 @@ public class RedisServiceImpl implements RedisService { redisUtils.set(key, i, -1); return i; } + + @Override + public int getCourseWeekPayCount(long courseId) { + String key = "course:payCount:" + courseId; + String info = redisUtils.get(key); + if (StrUtil.isBlank(info)) { + // 获取当前时间 + DateTime now = DateUtil.date(); + // 获取下周一的日期 + DateTime nextMonday = DateUtil.nextWeek(); + // 计算距离下周一还有多少秒 + long seconds = nextMonday.getTime() - now.getTime(); + redisUtils.set(key, 1, seconds); + return 1; + } + int i = Integer.parseInt(info) + 1; + redisUtils.set(key, i, -1); + return i; + } }