785834757 2 hónapja
szülő
commit
cfde9d849d

+ 6 - 0
market/src/main/java/com/ruoyi/market/domain/MarketDrawActivity.java

@@ -1,6 +1,7 @@
 package com.ruoyi.market.domain;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
@@ -9,6 +10,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @TableName("market_draw_activity")
@@ -19,6 +21,7 @@ public class MarketDrawActivity {
     private String name;
 
     @ApiModelProperty("抽奖描述")
+    @TableField(value = "`desc`")
     private String desc;
 
     @ApiModelProperty("人天 限制抽奖次数")
@@ -36,4 +39,7 @@ public class MarketDrawActivity {
     @ApiModelProperty("模板id")
     private String templateId;
 
+    @TableField(exist = false)
+    private List<MarketDrawActivityProbability> probabilitys;
+
 }

+ 12 - 2
market/src/main/java/com/ruoyi/market/domain/MarketDrawTemplate.java

@@ -2,9 +2,13 @@ package com.ruoyi.market.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -16,19 +20,25 @@ public class MarketDrawTemplate {
 
     private String id;
 
-
+    @ApiModelProperty("模版名称")
     private String templateName;
 
+    @ApiModelProperty("模版描述")
     private String templateDesc;
 
+    @ApiModelProperty("模版奖项数量")
     private String templateDrawNumber;
 
+    @ApiModelProperty("模版小程序页面地址")
     private String templateAppletPage;
 
+    @ApiModelProperty("模版小程序页面图片")
     private String templateDemoImg;
 
-    private Date createTime;
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
 
+    @ApiModelProperty("创建人")
     private String createBy;
 
 }

+ 14 - 0
market/src/main/java/com/ruoyi/market/domain/vo/DrawVo.java

@@ -0,0 +1,14 @@
+package com.ruoyi.market.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class DrawVo {
+
+    @ApiModelProperty("活动id")
+    private String drawActivityId;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+}

+ 4 - 0
market/src/main/java/com/ruoyi/market/service/MarketDrawActivityProbabilityService.java

@@ -3,6 +3,10 @@ package com.ruoyi.market.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.market.domain.MarketDrawActivityProbability;
 
+import java.util.List;
+
 public interface MarketDrawActivityProbabilityService extends IService<MarketDrawActivityProbability> {
 
+    public List<MarketDrawActivityProbability> getProbabilitysByDrawActivityId(String drawActivityId);
+
 }

+ 2 - 0
market/src/main/java/com/ruoyi/market/service/MarketDrawActivityService.java

@@ -24,4 +24,6 @@ public interface MarketDrawActivityService extends IService<MarketDrawActivity>
      * @return
      */
     boolean addDrawActivity(DrawActivitySaveVo drawActivitySaveVo);
+
+    MarketDrawActivity getDrawActivityById(String drawActivityId);
 }

+ 7 - 0
market/src/main/java/com/ruoyi/market/service/impl/MarketDrawActivityProbabilityServiceImpl.java

@@ -12,10 +12,17 @@ import com.ruoyi.market.service.MarketDrawActivityProbabilityService;
 import com.ruoyi.market.service.MarketDrawTemplateService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Objects;
 
 @Service
 public class MarketDrawActivityProbabilityServiceImpl extends ServiceImpl<MarketDrawActivityProbabilityMapper, MarketDrawActivityProbability>
         implements MarketDrawActivityProbabilityService {
 
+    @Override
+    public List<MarketDrawActivityProbability> getProbabilitysByDrawActivityId(String drawActivityId) {
+        LambdaQueryWrapper<MarketDrawActivityProbability>  queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MarketDrawActivityProbability::getDrawId,drawActivityId);
+        return this.list(queryWrapper);
+    }
 }

+ 9 - 0
market/src/main/java/com/ruoyi/market/service/impl/MarketDrawActivityServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Objects;
 
 @Service
@@ -83,4 +84,12 @@ public class MarketDrawActivityServiceImpl extends ServiceImpl<MarketDrawActivit
         this.save(drawActivitySaveVo.getDrawActivity());
         return true;
     }
+
+    @Override
+    public MarketDrawActivity getDrawActivityById(String drawActivityId) {
+        MarketDrawActivity drawActivity = this.getById(drawActivityId);
+        List<MarketDrawActivityProbability> probabilitysByDrawActivityId = marketDrawActivityProbabilityService.getProbabilitysByDrawActivityId(drawActivityId);
+        drawActivity.setProbabilitys(probabilitysByDrawActivityId);
+        return drawActivity;
+    }
 }

+ 50 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DrawApiController.java

@@ -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
+    }
+}

+ 19 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/callback/CallBackController.java

@@ -0,0 +1,19 @@
+package com.ruoyi.web.controller.callback;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "前端回调管理")
+@RestController
+@RequestMapping("/callback")
+public class CallBackController {
+
+    @ApiOperation("抽奖回调")
+    @PostMapping("drawCallback")
+    public void drawCallback(){
+
+    }
+}

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/market/DrawActivityController.java

@@ -32,20 +32,20 @@ public class DrawActivityController {
 
 
     @ApiOperation("获取活动抽奖列表")
-    @PostMapping("获取活动抽奖列表")
+    @PostMapping("getDrawActivityList")
     public AjaxResult getDrawActivityPage(@RequestBody DrawActivityQueryVo drawActivityQueryVo) {
         Page page = drawActivityQueryVo.getPage();
         return AjaxResult.success(marketDrawActivityService.getDrawActivityPage(page,drawActivityQueryVo));
     }
 
     @ApiOperation("添加活动抽奖")
-    @PostMapping("添加活动抽奖")
+    @PostMapping("addDrawActivity")
     public AjaxResult addDrawActivity(@RequestBody DrawActivitySaveVo drawActivitySaveVo) {
         return AjaxResult.success(marketDrawActivityService.addDrawActivity(drawActivitySaveVo));
     }
 
     @ApiOperation("删除活动抽奖")
-    @PostMapping("删除活动抽奖")
+    @PostMapping("delDrawActivity")
     public AjaxResult delDrawActivity(@RequestBody MarketDrawActivity marketDrawActivity){
         return null;
     }

+ 3 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/market/DrawTemplateController.java

@@ -10,6 +10,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDateTime;
+
 
 /**
  * 抽奖 controller
@@ -41,6 +43,7 @@ public class DrawTemplateController {
     @ApiOperation("添加模板抽奖")
     @PostMapping(value = "addDrawTemplate")
     public AjaxResult addDrawTemplate(@RequestBody MarketDrawTemplate marketDrawTemplate) {
+        marketDrawTemplate.setCreateTime(LocalDateTime.now());
         return AjaxResult.success(marketDrawTemplateService.save(marketDrawTemplate));
     }
 
@@ -55,6 +58,4 @@ public class DrawTemplateController {
         return AjaxResult.success(marketDrawTemplateService.updateById(marketDrawTemplate));
     }
 
-
-
 }