hjl
2024-06-18 aaa3384609da2dfb7d6788a2a2b3d92a2bff0813
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.ruoyi.user.service.impl;
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.admin.api.entity.Prize;
import com.ruoyi.user.entity.Order;
import com.ruoyi.user.mapper.OrderMapper;
import com.ruoyi.user.service.OrderService;
import org.springframework.stereotype.Service;
 
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
 
/**
 * <p>
 * 订单管理 服务实现类
 * </p>
 *
 * @author hjl
 * @since 2024-06-07
 */
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
    @Override
    public Object obtainAllowance(List<Prize> prizeList) {
        // 过滤中奖概率为空的奖品
        List<Prize> prizes = prizeList.stream().filter(data -> data.getProbability() != 0).collect(Collectors.toList());
        // 转盘逻辑
        double sum = prizes.stream().map(Prize::getProbability).mapToDouble(Double::doubleValue).sum();
        Prize result = null;
        for (Prize prize : prizes) {
            double item = prize.getProbability() / sum;
            // 随机数对象
            Random random = new Random();
            // 生成一个介于0到1之间的随机小数
            double randomDouble = random.nextDouble();
            if (item <= randomDouble) {
                result = prize;
                break;
            }
        }
        // 抽中的商品
        return result;
    }
}