|
@@ -0,0 +1,50 @@
|
|
|
+package com.ruoyi.web.controller.api;
|
|
|
+
|
|
|
+
|
|
|
+import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.market.domain.MarketDrawActivity;
|
|
|
+import com.ruoyi.market.domain.MarketDrawActivityProbability;
|
|
|
+import com.ruoyi.market.domain.vo.DrawVo;
|
|
|
+import com.ruoyi.market.service.MarketDrawActivityService;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiModelProperty;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Random;
|
|
|
+
|
|
|
+@Api(tags = "前端抽奖api管理")
|
|
|
+@RestController
|
|
|
+@RequestMapping("/draw")
|
|
|
+public class DrawApiController {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ MarketDrawActivityService marketDrawActivityService;
|
|
|
+
|
|
|
+ @ApiOperation("发起抽奖")
|
|
|
+ @PostMapping("startDraw")
|
|
|
+ public AjaxResult startDraw(DrawVo drawVo) {
|
|
|
+ MarketDrawActivity drawActivity = marketDrawActivityService.getDrawActivityById(drawVo.getDrawActivityId());
|
|
|
+ String winLottery = drawItem(drawActivity.getProbabilitys());
|
|
|
+ return AjaxResult.success(winLottery);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String drawItem(List<MarketDrawActivityProbability> probabilities) {
|
|
|
+ Random random = new Random();
|
|
|
+ double randomValue = random.nextDouble(); // 0.0到1.0之间的随机数
|
|
|
+ double cumulativeProbability = 0.0;
|
|
|
+
|
|
|
+ for (MarketDrawActivityProbability item : probabilities) {
|
|
|
+ cumulativeProbability += item.getProbability().doubleValue();
|
|
|
+ if (randomValue <= cumulativeProbability) {
|
|
|
+ return item.getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null; // 应该不会到这一步,如果概率总和是1.0
|
|
|
+ }
|
|
|
+}
|