|
|
@@ -0,0 +1,85 @@
|
|
|
+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();
|
|
|
+ }
|
|
|
+}
|