抽奖金额修改

订单笔数统计 只统计支付宝支付
增加 一次性任务 新人福利 领取1元
This commit is contained in:
2024-12-11 15:47:47 +08:00
parent b36abdd513
commit 2f73eb9032
11 changed files with 170 additions and 65 deletions

View File

@@ -15,7 +15,9 @@ import com.sqx.modules.app.service.UserService;
import com.sqx.modules.common.entity.CommonInfo;
import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.discSpinning.entity.DiscSpinning;
import com.sqx.modules.discSpinning.entity.DiscSpinningAmount;
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningAmountService;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.sqx.modules.discSpinning.service.DiscSpinningService;
import com.sqx.modules.orders.entity.Orders;
@@ -47,9 +49,10 @@ import java.util.concurrent.CompletableFuture;
public class DiscSpinningController {
private final DiscSpinningService discSpinningService;
private final DiscSpinningRecordService recordService;
private final DiscSpinningAmountService amountService;
private final CommonInfoService commonRepository;
private final OrdersService ordersService;
private final DiscSpinningRecordService recordService;
private final UserMoneyService userMoneyService;
private final UserMoneyDetailsService userMoneyDetailsService;
private final UserService userService;
@@ -62,10 +65,11 @@ public class DiscSpinningController {
UserMoneyDetailsService userMoneyDetailsService, CashOutService cashOutService,
OrdersService ordersService, DiscSpinningRecordService recordService,
UserMoneyService userMoneyService, UserService userService,
TaskCenterService taskCenterService
TaskCenterService taskCenterService, DiscSpinningAmountService amountService
) {
this.commonRepository = commonRepository;
this.discSpinningService = discSpinningService;
this.amountService = amountService;
this.ordersService = ordersService;
this.recordService = recordService;
this.userMoneyService = userMoneyService;
@@ -273,34 +277,22 @@ public class DiscSpinningController {
randomDouble = random.nextDouble();
} while (randomDouble == 0);
BigDecimal randomNum = new BigDecimal(randomDouble).multiply(new BigDecimal(10000)).divide(new BigDecimal(100));
List<DiscSpinningAmount> amounts = amountService.list(new QueryWrapper<DiscSpinningAmount>().eq("status",1).orderByAsc("max_amount"));
for (DiscSpinning prize : prizes) {
if (randomNum.compareTo(prize.getNumber()) < 0) {
if (prize.getType() == 2) {
int maxAmount = Integer.parseInt(commonRepository.findOne(900).getValue());
double resultAmount = 0;
//从0 到 80-amount 直接 取 多个区间 数值越小 概率越大
if (prize.getType() == 2) {
double baseRandom = random.nextDouble();
if (baseRandom < 0.8) {
// 0.8到0.82范围内概率最大这里示例以当前订单金额为基础模拟类似0.8的情况)
resultAmount = random.nextDouble() * 0.02;
} else if (baseRandom < 0.9) {
// 0.82 - 0.85范围概率小一些
resultAmount = 0.02 + (random.nextDouble() * 0.03);
} else if (baseRandom < 0.95) {
// 0.85 - 0.9概率更小
resultAmount = 0.05 + (random.nextDouble() * 0.05);
} else if (baseRandom < 0.97) {
// 0.9 - 1概率更小
resultAmount = 0.1 + (random.nextDouble() * 0.1);
} else if (baseRandom < 0.99) {
//1 - 1.3 概率更小
resultAmount = 0.2 + (random.nextDouble() * 0.3);
double baseAmount = 0;
for (DiscSpinningAmount amount : amounts) {
if (baseRandom < amount.getRandom()) {
resultAmount = baseAmount + random.nextDouble() * (amount.getMaxAmont() - baseAmount);
}
baseAmount = amount.getMaxAmont();
}
// else {
// // 1.3 - 控制最大金额为80
// resultAmount = 1 + (random.nextDouble() * (maxAmount - 1));
// }
if (resultAmount == 0) {
resultAmount = 0.01;
}

View File

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

View File

@@ -0,0 +1,34 @@
package com.sqx.modules.discSpinning.entity;
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;
/**
* 现金红包 抽奖配置(DiscSpinningAmount)表实体类
*
* @author ww
* @since 2024-12-11 14:59:01
*/
@Data
@TableName("disc_spinning_amount")
@ApiModel(value = "现金红包 抽奖配置 实体类")
public class DiscSpinningAmount extends Model<DiscSpinningAmount> {
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("描述")
private String name;
@ApiModelProperty("0-1 小于 多少为该奖励")
private Double random;
@ApiModelProperty("最大金额")
private Double maxAmont;
private Integer status;
}

View File

@@ -0,0 +1,11 @@
package com.sqx.modules.discSpinning.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.modules.discSpinning.entity.DiscSpinningAmount;
import java.util.Map;
public interface DiscSpinningAmountService extends IService<DiscSpinningAmount> {
}

View File

@@ -0,0 +1,19 @@
package com.sqx.modules.discSpinning.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.modules.discSpinning.dao.DiscSpinningAmountDao;
import com.sqx.modules.discSpinning.entity.DiscSpinningAmount;
import com.sqx.modules.discSpinning.service.DiscSpinningAmountService;
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 DiscSpinningAmountServiceImpl extends ServiceImpl<DiscSpinningAmountDao, DiscSpinningAmount> implements DiscSpinningAmountService {
}