Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
5b4fb7a983
|
|
@ -1,5 +1,6 @@
|
|||
package com.sqx.modules.discSpinning.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sqx.common.annotation.Debounce;
|
||||
|
|
@ -20,6 +21,7 @@ import io.swagger.annotations.*;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import reactor.util.annotation.Nullable;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
|
@ -55,9 +57,35 @@ public class DiscSpinningController {
|
|||
|
||||
@PostMapping("/discSpinning/insertDiscSpinning")
|
||||
@ApiOperation("添加大转盘")
|
||||
@Transactional
|
||||
public Result insertDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
||||
discSpinning.setCreateTime(DateUtils.format(new Date()));
|
||||
discSpinning.setNumber(discSpinning.getOdds());
|
||||
discSpinningService.save(discSpinning);
|
||||
|
||||
List<DiscSpinning> prizes = discSpinningService.list(new QueryWrapper<DiscSpinning>().eq("disc_type",discSpinning.getDiscType()).orderByAsc("type", "id"));
|
||||
BigDecimal number = BigDecimal.ZERO;
|
||||
List<DiscSpinning> prizesResult = new ArrayList<>();
|
||||
for (DiscSpinning prize : prizes) {
|
||||
if (discSpinning.getId().equals(prize.getId())) {
|
||||
number = prize.getNumber().add(discSpinning.getOdds().subtract(prize.getOdds()));
|
||||
discSpinning.setNumber(number);
|
||||
prize.setOdds(discSpinning.getOdds());
|
||||
prizesResult.add(discSpinning);
|
||||
} else if (number.compareTo(BigDecimal.ZERO) > 0) {
|
||||
number = number.add(prize.getOdds());
|
||||
prize.setNumber(number);
|
||||
prizesResult.add(prize);
|
||||
}
|
||||
}
|
||||
BigDecimal totalOdds = prizes.stream()
|
||||
.map(DiscSpinning::getOdds)
|
||||
.filter(Objects::nonNull)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
if (totalOdds.compareTo(new BigDecimal(100)) > 0) {
|
||||
return Result.error("中奖概率总和 不可超过100");
|
||||
}
|
||||
discSpinningService.updateBatchById(prizesResult);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +98,7 @@ public class DiscSpinningController {
|
|||
@PostMapping("/discSpinning/updateDiscSpinning")
|
||||
@ApiOperation("修改大转盘")
|
||||
public Result updateDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
||||
List<DiscSpinning> prizes = discSpinningService.list(new QueryWrapper<DiscSpinning>().orderByAsc("type", "id"));
|
||||
List<DiscSpinning> prizes = discSpinningService.list(new QueryWrapper<DiscSpinning>().eq("disc_type",discSpinning.getDiscType()).orderByAsc("type", "id"));
|
||||
BigDecimal number = BigDecimal.ZERO;
|
||||
List<DiscSpinning> prizesResult = new ArrayList<>();
|
||||
for (DiscSpinning prize : prizes) {
|
||||
|
|
@ -105,21 +133,20 @@ public class DiscSpinningController {
|
|||
|
||||
@GetMapping("/app/discSpinning/selectDiscSpinning")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "type", value = "`1`普通转盘 `2`任务转盘", dataTypeClass = String.class, paramType = "body"),
|
||||
@ApiImplicitParam(name = "source", value = "1 普通转盘 2 周任务转盘 3 月任务转盘", dataTypeClass = Integer.class),
|
||||
})
|
||||
@ApiOperation("查询大转盘")
|
||||
public Result selectDiscSpinning(@RequestParam(required = false, defaultValue = "1") Integer type) {
|
||||
public Result selectDiscSpinning(@RequestParam(required = false, defaultValue = "1") Integer source) {
|
||||
return Result.success().put("data", discSpinningService.page(new Page<>(1, 20),
|
||||
new QueryWrapper<DiscSpinning>().eq("disc_type", type).orderByAsc("disc_type", "odds")));
|
||||
new QueryWrapper<DiscSpinning>().eq("disc_type", source).orderByAsc("disc_type", "odds")));
|
||||
}
|
||||
|
||||
|
||||
//14232
|
||||
@Login
|
||||
@GetMapping("/app/discSpinning/drawCount")
|
||||
@ApiOperation("获取大转盘抽奖次数")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "source", value = "`task`任务拉起抽奖 或者 `order` 订单拉起抽奖", dataTypeClass = String.class, paramType = "body"),
|
||||
@ApiImplicitParam(name = "source", value = "`1` 订单拉起抽奖 `2` 周任务拉起抽奖 `3` 月任务拉起抽奖", dataTypeClass = String.class, paramType = "body"),
|
||||
})
|
||||
@ApiResponses({
|
||||
@ApiResponse(code = 200, message = "{\"sum\":\"总抽奖次数\",\"count\":\"剩余抽奖次数\"}"),
|
||||
|
|
@ -128,9 +155,9 @@ public class DiscSpinningController {
|
|||
Map<String, Object> map = new HashMap<>();
|
||||
int drawCount = Integer.parseInt(commonRepository.findOne(901).getValue());
|
||||
map.put("sum", drawCount);
|
||||
if (maps != null && maps.containsKey("source") && "task".equals(maps.get("source"))) {
|
||||
if (maps != null && maps.containsKey("source") && !"1".equals(maps.get("source"))) {
|
||||
//任务可抽奖次数
|
||||
map.put("count", taskCenterService.countTaskDisc(userId));
|
||||
map.put("count", taskCenterService.countTaskDisc(userId,maps.get("source").toString()));
|
||||
} else {
|
||||
int i = recordService.countDraw(userId);
|
||||
if (drawCount - i > 0) {
|
||||
|
|
@ -145,28 +172,33 @@ public class DiscSpinningController {
|
|||
@Login
|
||||
@GetMapping("/app/discSpinning/draw")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "source", value = "`task`任务拉起抽奖 或者 `order` 订单拉起抽奖", dataTypeClass = String.class, paramType = "body"),
|
||||
@ApiImplicitParam(name = "source", value = "1 普通转盘 2 周任务转盘 3 月任务转盘", dataTypeClass = String.class, paramType = "body"),
|
||||
})
|
||||
@ApiOperation("抽取大转盘")
|
||||
public Result draw(@ApiIgnore @RequestAttribute("userId") Long userId, @Nullable @ApiIgnore @RequestBody Map maps) {
|
||||
double amount = 0;
|
||||
int discType = 1;
|
||||
Long orderId = null;
|
||||
Integer i = recordService.countDraw(userId);
|
||||
if (maps == null || !maps.containsKey("source") || !"task".equals(maps.get("source"))) {
|
||||
if (maps == null || !maps.containsKey("source") || !"1".equals(maps.get("source"))) {
|
||||
//任务抽奖
|
||||
int drawCount = Integer.parseInt(commonRepository.findOne(901).getValue());
|
||||
if (i != null && i >= drawCount) {
|
||||
return Result.error("当日可抽奖次数已超限");
|
||||
}
|
||||
Orders orders = ordersService.selectOrdersByDay(userId);
|
||||
amount = orders.getPayMoney().doubleValue();
|
||||
orderId = orders.getOrdersId();
|
||||
if (orders == null) {
|
||||
return Result.error("无可抽奖机会");
|
||||
}
|
||||
amount = orders.getPayMoney().doubleValue();
|
||||
orderId = orders.getOrdersId();
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(maps) && maps.containsKey("source")) {
|
||||
discType = Integer.parseInt(maps.get("source").toString());
|
||||
|
||||
}
|
||||
return new Result().put("data",
|
||||
discSpinningService.draws(i == null ? 1 : i + 1, amount, orderId, userId, maps == null || maps.get("source") == null ? "order" : maps.get("source").toString()));
|
||||
discSpinningService.draws(i == null ? 1 : i + 1, amount, orderId, userId, discType));
|
||||
}
|
||||
|
||||
@ApiOperation("大转盘奖项领取")
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ public class DiscSpinning extends Model<DiscSpinning> {
|
|||
private String url;
|
||||
//描述
|
||||
private String name;
|
||||
//1 普通转盘 2 周任务转盘 3 月任务转盘
|
||||
private Integer discType;
|
||||
//类型 1谢谢惠顾 2 红包 9 其它
|
||||
private Integer type;
|
||||
//数值
|
||||
private BigDecimal number;
|
||||
//红包金额比例
|
||||
private BigDecimal ratio;
|
||||
//中奖概率
|
||||
private BigDecimal odds;
|
||||
//创建时间
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class DiscSpinningRecord extends Model<DiscSpinningRecord> {
|
|||
}
|
||||
|
||||
public DiscSpinningRecord(String name, Long orderId, Long userId, Integer type, BigDecimal number,
|
||||
String drawDay, String createTime, String source) {
|
||||
String drawDay, String createTime, Integer source) {
|
||||
this.name = name;
|
||||
this.userId = userId;
|
||||
this.orderId = orderId;
|
||||
|
|
@ -55,8 +55,20 @@ public class DiscSpinningRecord extends Model<DiscSpinningRecord> {
|
|||
this.number = number;
|
||||
this.drawDay = drawDay;
|
||||
this.createTime = createTime;
|
||||
if (StringUtils.isNotBlank(source)) {
|
||||
this.source = source;
|
||||
if (source != null) {
|
||||
switch (source) {
|
||||
case 1:
|
||||
this.source = "order";
|
||||
break;
|
||||
case 2:
|
||||
this.source = "taskW";
|
||||
break;
|
||||
case 3:
|
||||
this.source = "taskM";
|
||||
break;
|
||||
default:
|
||||
this.source = source.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
|||
public interface DiscSpinningService extends IService<DiscSpinning> {
|
||||
|
||||
//抽奖
|
||||
DiscSpinningRecord draws(int drawCount, double orderAmount, Long orderId, Long userId, String source);
|
||||
DiscSpinningRecord draws(int drawCount, double orderAmount, Long orderId, Long userId, Integer source);
|
||||
|
||||
//领奖
|
||||
void receiveAsync(DiscSpinningRecord receive);
|
||||
|
|
|
|||
|
|
@ -167,9 +167,9 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public DiscSpinningRecord draws(int drawCount, double orderAmount, Long orderId, Long userId, String source) {
|
||||
public DiscSpinningRecord draws(int drawCount, double orderAmount, Long orderId, Long userId, Integer source) {
|
||||
DiscSpinning result = new DiscSpinning("谢谢惠顾", 1, null);
|
||||
List<DiscSpinning> prizes = baseMapper.selectList(new QueryWrapper<DiscSpinning>().eq("disc_type", "order".equals(source) ? 1 : 2).orderByAsc("odds"));
|
||||
List<DiscSpinning> prizes = baseMapper.selectList(new QueryWrapper<DiscSpinning>().eq("disc_type", source).orderByAsc("odds"));
|
||||
|
||||
Random random = new Random();
|
||||
double randomDouble;
|
||||
|
|
@ -212,12 +212,14 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
|
|||
}
|
||||
result = new DiscSpinning(prize.getName(), 2, new BigDecimal(resultAmount).setScale(2, RoundingMode.HALF_UP));
|
||||
break;
|
||||
} else {
|
||||
if (source != 1) {
|
||||
result = prize;
|
||||
}
|
||||
}
|
||||
// else {
|
||||
// result = prize;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
DiscSpinningRecord record = new DiscSpinningRecord(result.getName(), orderId, userId, result.getType(),
|
||||
result.getNumber(), DateUtils.formatYMD(new Date()), DateUtils.format(new Date()), source);
|
||||
recordService.save(record);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ public interface TaskCenterService extends IService<TaskCenter> {
|
|||
|
||||
Result taskReceive(Long userId, Long id);
|
||||
|
||||
int countTaskDisc(Long userId);
|
||||
int countTaskDisc(Long userId,String type);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ 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.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -70,7 +71,7 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
|
|||
} else if (recordService.countTaskNum(userId, s.getId(), DateUtil.today() + " 00:00:00") > 0) {
|
||||
s.setButtonTitle("已领取");
|
||||
s.setNumber(null);
|
||||
s.setDisabled(false);
|
||||
// s.setDisabled(false);
|
||||
} else {
|
||||
s.setDiscNumber(0);
|
||||
s.setNumber(null);
|
||||
|
|
@ -226,7 +227,10 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
|
|||
}
|
||||
|
||||
@Override
|
||||
public int countTaskDisc(Long userId) {
|
||||
public int countTaskDisc(Long userId, String type) {
|
||||
if (StringUtils.isBlank(type) || "1".equals(type)) {
|
||||
return 0;
|
||||
}
|
||||
//月 签到记录
|
||||
QueryWrapper<UserSignRecord> signWrapper = new QueryWrapper<>();
|
||||
signWrapper.eq("user_id", userId);
|
||||
|
|
@ -245,16 +249,27 @@ public class TaskCenterServiceImpl extends ServiceImpl<TaskCenterDao, TaskCenter
|
|||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
}
|
||||
} else {
|
||||
if (dayOrderNum > 2) {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= -1 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
if ("2".equals(type) && taskCenter.getNumber().intValue() > 1 && taskCenter.getNumber().intValue() < 8) {
|
||||
if (dayOrderNum > 2) {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= -1 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
}
|
||||
} else {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= 0 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= 0 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
} else if ("3".equals(type) && taskCenter.getNumber().intValue() > 7 && taskCenter.getNumber().intValue() < 32) {
|
||||
if (dayOrderNum > 2) {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= -1 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
}
|
||||
} else {
|
||||
if (signCount - taskCenter.getNumber().intValue() >= 0 && recordService.countTaskNum(userId, taskCenter.getId(), DateUtil.beginOfMonth(new Date()).toString()) < 1) {
|
||||
countTaskDisc = countTaskDisc + taskCenter.getDiscNumber();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue