大转盘 领取奖励修改

提现 修改
任务中心 记录 领取记录 是否可领取
This commit is contained in:
2024-12-09 11:05:08 +08:00
parent 02dd3b4587
commit 03526f7c4a
16 changed files with 311 additions and 125 deletions

View File

@@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.taskCenter.entity.TaskCenter;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TaskCenterDao extends BaseMapper<TaskCenter> {
//大转盘任务
List<TaskCenter> queryTaskDiscCenter(Long userId);
}

View File

@@ -0,0 +1,11 @@
package com.sqx.modules.taskCenter.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TaskCenterRecordDao extends BaseMapper<TaskCenterRecord> {
}

View File

@@ -0,0 +1,45 @@
package com.sqx.modules.taskCenter.entity;
import java.util.Date;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.Data;
/**
* 任务领取记录(TaskCenterRecord)表实体类
*
* @author ww
* @since 2024-12-07 17:40:56
*/
@Data
@TableName("task_center_record")
@ApiModel(value = "任务领取记录 实体类")
public class TaskCenterRecord extends Model<TaskCenterRecord> {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("任务Id")
private Long taskId;
@ApiModelProperty("奖励名称")
private String name;
@ApiModelProperty("奖励类型 1 金豆 2 现金 3 4 5")
private Integer type;
@ApiModelProperty("${column.comment}")
private Long targetId;
@ApiModelProperty("数量")
private Integer number;
@ApiModelProperty("${column.comment}")
private Date createTime;
@ApiModelProperty("${column.comment}")
private Date updateTime;
}

View File

@@ -0,0 +1,19 @@
package com.sqx.modules.taskCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import java.util.Map;
public interface TaskCenterRecordService extends IService<TaskCenterRecord> {
/**
* 统计 用户领取过的任务
* @param userId
* @param taskId
* @param time 时间条件 不传为全部订单 格式 yyyy-MM-dd HH:mm:ss
* @return
*/
Integer countTaskNum(Long userId,Long taskId,String time);
}

View File

@@ -10,8 +10,10 @@ import java.util.Map;
public interface TaskCenterService extends IService<TaskCenter> {
Result queryTaskCenter(Integer page, Integer limit, Long userId);
Result taskReceive(Long userId,Long id);
Result queryTaskCenter(Integer page, Integer limit, Long userId);
Result taskReceive(Long userId, Long id);
int countTaskDisc(Long userId);
}

View File

@@ -0,0 +1,23 @@
package com.sqx.modules.taskCenter.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.modules.taskCenter.dao.TaskCenterRecordDao;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import com.sqx.modules.taskCenter.service.TaskCenterRecordService;
import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
@Service
public class TaskCenterRecordServiceImpl extends ServiceImpl<TaskCenterRecordDao, TaskCenterRecord> implements TaskCenterRecordService {
@Override
public Integer countTaskNum(Long userId, Long taskId, String time) {
return baseMapper.selectCount(new QueryWrapper<TaskCenterRecord>().eq("user_id", userId).eq("task_id", taskId).lt("create_time", time));
}
}

View File

@@ -1,6 +1,7 @@
package com.sqx.modules.taskCenter.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,25 +9,24 @@ import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserMoneyDetails;
import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.course.entity.CourseUser;
import com.sqx.modules.orders.service.OrdersService;
import com.sqx.modules.taskCenter.dao.TaskCenterDao;
import com.sqx.modules.taskCenter.entity.TaskCenter;
import com.sqx.modules.taskCenter.entity.TaskCenterRecord;
import com.sqx.modules.taskCenter.entity.TaskCenterReward;
import com.sqx.modules.taskCenter.service.TaskCenterRecordService;
import com.sqx.modules.taskCenter.service.TaskCenterRewardService;
import com.sqx.modules.taskCenter.service.TaskCenterService;
import com.sqx.modules.userSign.entity.UserSignRecord;
import com.sqx.modules.userSign.service.UserSignRecordService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter> implements TaskCenterService {
@@ -38,13 +38,16 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
@Autowired
private TaskCenterRewardService taskCenterRewardService;
@Autowired
private TaskCenterRecordService recordService;
@Autowired
private UserMoneyService userMoneyService;
@Autowired
private UserMoneyDetailsService userMoneyDetailsService;
@Override
public Result queryTaskCenter(Integer page, Integer limit, Long userId) {
//任务
IPage<TaskCenter> taskPage = baseMapper.selectPage(new Page<>(page, limit), new QueryWrapper<TaskCenter>().orderByDesc("sort"));
IPage<TaskCenter> taskPage = baseMapper.selectPage(new Page<>(page, limit), new QueryWrapper<TaskCenter>().eq("show", 1).orderByDesc("sort"));
boolean todaySign = true;
//月 签到记录
QueryWrapper<UserSignRecord> signWrapper = new QueryWrapper<>();
@@ -57,17 +60,17 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
if (s.getType() == 2) {
if (s.getNumber().equals(1)) {
Integer dayOrderNum = ordersService.countOrderNum(userId, DateUtil.today() + " 00:00:00");
if (dayOrderNum < 3) {
if (dayOrderNum < 3 || recordService.countTaskNum(userId, s.getId(), DateUtil.today() + " 00:00:00") > 0) {
s.setDisabled(false);
todaySign = false;
}
} else {
if (todaySign) {
if (signRecordList.size() < (s.getNumber().intValue() - 1)) {
if ((signRecordList.size() < (s.getNumber().intValue() - 1)) || recordService.countTaskNum(userId, s.getId(), DateUtil.beginOfMonth(new Date()).toString()) > 0) {
s.setDisabled(false);
}
} else {
if (signRecordList.size() < s.getNumber().intValue()) {
if ((signRecordList.size() < s.getNumber().intValue()) || recordService.countTaskNum(userId, s.getId(), DateUtil.beginOfMonth(new Date()).toString()) > 0) {
s.setDisabled(false);
}
}
@@ -90,54 +93,101 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
List<UserSignRecord> signRecordList = signRecordService.list(signWrapper);
if (taskCenter.getType().equals(2)) {
if (taskCenter.getType() == 2) {
Integer dayOrderNum = ordersService.countOrderNum(userId, DateUtil.today() + " 00:00:00");
if (taskCenter.getNumber().equals(1)) {
if (dayOrderNum < 3) {
Integer dayOrderNum = ordersService.countOrderNum(userId, DateUtil.today() + " 00:00:00");
if (taskCenter.getNumber().equals(1)) {
UserSignRecord yesterday = signRecordService.getOne(new QueryWrapper<UserSignRecord>().eq("user_id", userId).eq("sign_day",
DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd")));
UserSignRecord signRecord = new UserSignRecord();
if (yesterday != null && yesterday.getDay() != null) {
signRecord.setDay(yesterday.getDay() + 1);
} else {
signRecord.setDay(1);
}
signRecord.setUserId(userId);
signRecord.setSignDay(DateUtil.today());
signRecord.setCreateTime(new Date());
if (dayOrderNum < 3) {
return Result.error("领取失败,未达成领取条件");
}
if (recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.today() + " 00:00:00") > 0) {
return Result.error("不可重复领取");
}
signRecordService.save(signRecord);
} else {
if (dayOrderNum > 2) {
if (signRecordList.size() < (taskCenter.getNumber().intValue() - 1)) {
return Result.error("领取失败,未达成领取条件");
}
} else {
if (dayOrderNum > 2) {
if (signRecordList.size() < (taskCenter.getNumber().intValue() - 1)) {
return Result.error("领取失败,未达成领取条件");
}
} else {
if (signRecordList.size() < taskCenter.getNumber().intValue()) {
return Result.error("领取失败,未达成领取条件");
}
if (recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.today() + " 00:00:00") > 0) {
return Result.error("不可重复领取");
}
} else {
if (signRecordList.size() < taskCenter.getNumber().intValue()) {
return Result.error("领取失败,未达成领取条件");
}
if (recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.today() + " 00:00:00") > 0) {
return Result.error("不可重复领取");
}
}
}
}
List<TaskCenterRecord> records = new ArrayList<>();
Long targetId = null;
QueryWrapper<TaskCenterReward> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("task_id",id);
queryWrapper.eq("task_id", id);
List<TaskCenterReward> list = taskCenterRewardService.list(queryWrapper);
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setClassify(8);
userMoneyDetails.setUserId(userId);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date()));
userMoneyDetails.setTitle("任务中心");
userMoneyDetails.setState(2);
userMoneyDetails.setType(1);
for (TaskCenterReward reward : list) {
userMoneyDetails.setMoney(new BigDecimal(reward.getNumber()));
switch (reward.getType()){
switch (reward.getType()) {
case 1:
userMoneyDetails.setContent(taskCenter.getTitle()+"任务完成,金豆奖励" + reward.getNumber());
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());
userMoneyService.updateMoney(1, userId, reward.getNumber());
userMoneyDetailsService.save(userMoneyDetails1);
targetId = userMoneyDetails1.getId();
break;
case 2:
userMoneyDetails.setContent(taskCenter.getTitle()+"任务完成,现金奖励" + reward.getNumber());
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());
userMoneyService.updateAmount(1, userId, reward.getNumber());
userMoneyDetailsService.save(userMoneyDetails2);
targetId = userMoneyDetails2.getId();
break;
default:
break;
}
TaskCenterRecord record = new TaskCenterRecord();
record.setUserId(userId);
record.setTaskId(id);
record.setType(reward.getType());
record.setNumber(reward.getNumber());
record.setName(taskCenter.getTitle() + ":" + record.getName());
record.setTargetId(targetId);
records.add(record);
}
userMoneyDetailsService.save(userMoneyDetails);
recordService.saveBatch(records);
return Result.success();
}
@Override
public int countTaskDisc(Long userId) {
//TaskCenter的number为大转盘次数
List<TaskCenter> taskCenters = baseMapper.queryTaskDiscCenter(userId);
//大转盘任务 校验 次数
return 0;
}
}