| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package com.ydtech.modules.admin.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.modules.admin.dao.SysPrizeDao;
- import com.ydtech.modules.admin.model.SysPrize;
- import com.ydtech.modules.admin.model.SysWinningRecord;
- import com.ydtech.modules.admin.model.po.SysUserAccount;
- import com.ydtech.modules.admin.service.SysPrizeService;
- import com.ydtech.modules.admin.service.SysUserAccountService;
- import com.ydtech.modules.admin.service.SysWinningRecordService;
- import com.ydtech.modules.base.controller.BaseController;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.List;
- import java.util.Random;
- @Service
- public class SysPrizeServiceImpl extends ServiceImpl<SysPrizeDao, SysPrize> implements SysPrizeService {
- @Resource
- private SysPrizeService sysPrizeService;
- @Resource
- private SysWinningRecordService sysWinningRecordService;
- @Resource
- private SysUserAccountService sysUserAccountService;
- public String getPrize() {
- List<SysPrize> list = sysPrizeService.list();
- double totalProbability = 0.0;
- for (SysPrize prize : list) {
- totalProbability += prize.getProbability();
- }
- Random random = new Random();
- double rand = random.nextDouble() * totalProbability;
- double cumulativeProbability = 0.0;
- for (SysPrize prize : list) {
- cumulativeProbability += prize.getProbability();
- if (rand < cumulativeProbability) {
- if (prize.getWinTimes() > 0) {
- prize.setWinTimes(prize.getWinTimes() - 1);
- sysPrizeService.updateById(prize);
- //根据userId查询人员账户相关信息 将中奖金额直接加到账户推广佣金
- LambdaQueryWrapper<SysUserAccount> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysUserAccount::getUserId, BaseController.getUser().getId());
- SysUserAccount sysUserAccount = sysUserAccountService.getOne(queryWrapper);
- sysUserAccount.setPromotion(sysUserAccount.getPromotion().add(prize.getPrizeName()));
- sysUserAccountService.updateById(sysUserAccount);
- //生成中奖记录
- SysWinningRecord sysWinningRecord = new SysWinningRecord();
- sysWinningRecord.setPrizeId(prize.getId());
- sysWinningRecord.setPrizeName(prize.getPrizeName().toString());
- sysWinningRecord.setUserId(BaseController.getUser().getId());
- sysWinningRecord.setUserName(BaseController.getUser().getName());
- sysWinningRecord.setCreateTime(new Date());
- sysWinningRecordService.save(sysWinningRecord);
- return prize.getId();
- } else {
- return "奖品数量不足";
- }
- }
- }
- return "您的抽奖机会已用完";
- }
- public String getVipPrize() {
- LambdaQueryWrapper<SysPrize> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysPrize::getId, "1784766525696987137");
- SysPrize sysPrize = sysPrizeService.getOne(queryWrapper);
- sysPrize.setWinTimes(sysPrize.getWinTimes() - 1);
- //生成中奖记录
- SysWinningRecord sysWinningRecord = new SysWinningRecord();
- sysWinningRecord.setPrizeId(sysPrize.getId());
- sysWinningRecord.setPrizeName(sysPrize.getPrizeName().toString());
- sysWinningRecord.setUserId(BaseController.getUser().getId());
- sysWinningRecord.setUserName(BaseController.getUser().getName());
- sysWinningRecord.setCreateTime(new Date());
- sysWinningRecordService.save(sysWinningRecord);
- return sysPrize.getId();
- }
- }
|