Merge branch 'test' into dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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("短剧不存在");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user