Merge branch 'test' into dev

This commit is contained in:
2024-12-09 15:39:34 +08:00
14 changed files with 275 additions and 63 deletions

View File

@@ -98,14 +98,12 @@ public class AppCourseController extends AbstractController {
return courseService.selectWxVideoUrl(wxCourseDetailsIds);
}
@Login
@GetMapping("/viewCourse")
@ApiOperation("查看短剧")
public Result viewCourse(@RequestAttribute Long userId,
@ApiParam("短剧id") Long courseId,
public Result viewCourse(@ApiParam("短剧id") Long courseId,
@ApiParam("剧集id") Long courseDetailsId,
@ApiParam("统计类型start 开始end 结束") String type) {
return courseService.viewCourse(userId, courseId, courseDetailsId, type);
return courseService.viewCourse(courseId, courseDetailsId, type);
}
}

View File

@@ -59,7 +59,7 @@ public interface CourseService extends IService<Course> {
Result courseListExcelIn(MultipartFile file) throws IOException;
Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type);
Result viewCourse(Long courseId, Long courseDetailsId, String type);
Result getRedEnvelopeTips(Long userId);

View File

@@ -1235,7 +1235,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, Course> implements
}
@Override
public Result viewCourse(Long userId, Long courseId, Long courseDetailsId, String type) {
public Result viewCourse(Long courseId, Long courseDetailsId, String type) {
Course course = baseMapper.selectById(courseId);
if(course==null){
return Result.error("短剧不存在");

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.util.concurrent.RateLimiter;
import com.sqx.common.annotation.Debounce;
import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login;
@@ -42,6 +43,7 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
@Slf4j
@RestController
@@ -59,9 +61,6 @@ public class DiscSpinningController {
private final CashOutService cashOutService;
private final TaskCenterService taskCenterService;
// 以id为键对应的RateLimiter实例为值用于不同id的防抖控制
private static final ConcurrentHashMap<Long, RateLimiter> rateLimiterMap = new ConcurrentHashMap<>();
@Autowired
public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService,
@@ -196,29 +195,23 @@ public class DiscSpinningController {
draws(amount, orderId, userId, maps == null || maps.get("source") == null ? "order" : maps.get("source").toString()));
}
@PostMapping("/app/discSpinning/receive")
@ApiOperation("大转盘奖项领取")
@Debounce(interval = 3000, value = "#receive.id")
@PostMapping("/app/discSpinning/receive")
public Result receive(@RequestBody DiscSpinningRecord receive) {
// 每秒允许0.6次操作
RateLimiter rateLimiter = rateLimiterMap.computeIfAbsent(receive.getId(), k -> RateLimiter.create(0.6));
if (rateLimiter.tryAcquire()) {
CompletableFuture.runAsync(() -> {
DiscSpinningRecord record = recordService.getById(receive.getId());
CompletableFuture.runAsync(() -> {
receiveAsync(record);
});
});
return Result.success();
}
return Result.error("操作过于频繁,请稍后再试");
DiscSpinningRecord record = recordService.getById(receive.getId());
CompletableFuture.runAsync(() -> {
receiveAsync(record);
});
return Result.success();
}
@Transactional
public void receiveAsync(DiscSpinningRecord receive) {
UserEntity userInfo = userService.queryByUserId(receive.getUserId());
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
receive.getUserId(),null,null,"[现金大转盘]",5,1,2,
receive.getNumber(),"现金红包奖励" + receive.getNumber() + "");
receive.getUserId(), null, null, "[现金大转盘]", 5, 1, 2,
receive.getNumber(), "现金红包奖励" + receive.getNumber() + "");
userMoneyDetailsService.save(userMoneyDetails);
receive.setTarget("2");
receive.setTargetId(userMoneyDetails.getId());
@@ -247,8 +240,8 @@ public class DiscSpinningController {
cashOut.setCreateAt(DateUtil.now());
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
userInfo.getUserId(),null,null,"[现金大转盘]",4,2,1,
new BigDecimal(money),"现金红包自动提现" + money + "");
userInfo.getUserId(), null, null, "[现金大转盘]", 4, 2, 1,
new BigDecimal(money), "现金红包自动提现" + money + "");
userMoneyDetailsService.save(userMoneyDetails);
//减去余额 钱
userMoneyService.updateAmount(2, userInfo.getUserId(), money);

View File

@@ -1,6 +1,7 @@
package com.sqx.modules.pay.controller.app;
import com.sqx.common.annotation.Debounce;
import com.sqx.common.utils.PageUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login;
@@ -44,6 +45,7 @@ public class AppCashController {
@Login
@GetMapping(value = "/withdraw")
@Debounce(interval = 3000, value = "#userId")
@ApiOperation("发起提现 余额 金钱")
public Result withdraw(@RequestAttribute("userId") Long userId, Double amount) {
return cashOutService.withdraw(userId, amount, false);

View File

@@ -124,6 +124,7 @@ public class WuyouController {
if (cashOut != null) {
if ("2".equals(notifyDto.getStatus())) {
cashOut.setState(1);
cashOut.setOutAt(DateUtil.now());
} else {
cashOut.setState(2);
cashOut.setRefund(notifyDto.getMsg());

View File

@@ -2,6 +2,7 @@ package com.sqx.modules.taskCenter.controller;
import cn.hutool.core.date.DateUtil;
import com.sqx.common.annotation.Debounce;
import com.sqx.modules.app.annotation.Login;
import com.sqx.modules.taskCenter.entity.TaskCenter;
import com.sqx.modules.taskCenter.service.TaskCenterService;
@@ -80,6 +81,7 @@ public class TaskCenterController {
@ApiImplicitParam(name = "id", value = "任务id", dataTypeClass = Long.class),
})
@ApiOperation("App 任务中心 领取")
@Debounce(interval = 1000, value = "#userId")
public Result taskReceive(@ApiIgnore @RequestAttribute("userId") Long userId,Long id) {
return taskCenterService.taskReceive(userId,id);
}

View File

@@ -53,6 +53,8 @@ public class TaskCenter extends Model<TaskCenter> {
@ApiModelProperty("是否开启 0否1是")
private Integer shows;
@TableField(exist = false)
private Integer discNumber;
@TableField(exist = false)
private boolean disabled = true;

View File

@@ -139,29 +139,19 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
for (TaskCenterReward reward : list) {
switch (reward.getType()) {
case 1:
UserMoneyDetails userMoneyDetails1 = new UserMoneyDetails();
userMoneyDetails1.setClassify(8);
userMoneyDetails1.setUserId(userId);
userMoneyDetails1.setCreateTime(DateUtil.now());
userMoneyDetails1.setTitle("任务中心");
userMoneyDetails1.setState(2);
userMoneyDetails1.setType(1);
userMoneyDetails1.setMoney(new BigDecimal(reward.getNumber()));
userMoneyDetails1.setContent(taskCenter.getTitle() + "任务完成,金豆奖励" + reward.getNumber());
UserMoneyDetails userMoneyDetails1 = new UserMoneyDetails(
userId, null, null, "[任务中心]", 8, 1, 2,
new BigDecimal(reward.getNumber()), taskCenter.getTitle() + "任务完成,金豆奖励" + reward.getNumber());
userMoneyService.updateMoney(1, userId, reward.getNumber());
userMoneyDetailsService.save(userMoneyDetails1);
targetId = userMoneyDetails1.getId();
break;
case 2:
UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails();
userMoneyDetails2.setClassify(8);
userMoneyDetails2.setUserId(userId);
userMoneyDetails2.setCreateTime(DateUtil.now());
userMoneyDetails2.setTitle("任务中心");
userMoneyDetails2.setState(2);
userMoneyDetails2.setType(1);
userMoneyDetails2.setMoney(new BigDecimal(reward.getNumber()));
userMoneyDetails2.setContent(taskCenter.getTitle() + "任务完成,现金奖励" + reward.getNumber());
UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(
userId, null, null, "[任务中心]", 8, 1, 2,
new BigDecimal(reward.getNumber()), taskCenter.getTitle() + "任务完成,现金奖励" + reward.getNumber());
userMoneyService.updateAmount(1, userId, reward.getNumber());
userMoneyDetailsService.save(userMoneyDetails2);
targetId = userMoneyDetails2.getId();
@@ -184,10 +174,38 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
@Override
public int countTaskDisc(Long userId) {
//月 签到记录
QueryWrapper<UserSignRecord> signWrapper = new QueryWrapper<>();
signWrapper.eq("user_id", userId);
signWrapper.lt("sign_day", DateUtil.format(new Date(), "yyyy-MM") + "-00");
signWrapper.orderByAsc("create_time");
List<UserSignRecord> signRecordList = signRecordService.list(signWrapper);
//TaskCenter的number为大转盘次数
List<TaskCenter> taskCenters = baseMapper.queryTaskDiscCenter(userId);
//大转盘任务 校验 次数
return 0;
int countTaskDisc = 0;
Integer dayOrderNum = ordersService.countOrderNum(userId, DateUtil.today() + " 00:00:00");
for (TaskCenter taskCenter : taskCenters) {
if (taskCenter.getType().equals(2)) {
if (taskCenter.getNumber().equals(1)) {
if (dayOrderNum > 2 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.today() + " 00:00:00") < 1) {
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
}
} else {
if (dayOrderNum > 2) {
if (signRecordList.size() - taskCenter.getNumber().intValue() >= -1 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
}
} else {
if (signRecordList.size() - taskCenter.getNumber().intValue() >= 0 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
}
}
}
}
}
return countTaskDisc;
}
}