Procházet zdrojové kódy

Merge branch 'yun-group-buy' of k.zhang/duoduo into yun-test

k.zhang před 4 měsíci
rodič
revize
5cc2181070

+ 1 - 0
apis/shanghu/base.go

@@ -79,5 +79,6 @@ func InitShangHuRouter(engine *gin.RouterGroup) {
 		activeV1.POST("/active/config/info", ActiveConfigInfo)          //活动详情
 		activeV1.POST("/active/draw/product/list", DrawProductList)     //奖品列表
 		activeV1.POST("/active/group/buy/list", GroupBuyList)           //拼团列表
+		// 中奖
 	}
 }

+ 23 - 1
apis/shanghu/merchant.active.config.go

@@ -15,6 +15,7 @@ import (
 func ActiveConfigCreate(c *gin.Context) {
 	var inData models.CreateActiveConfigRequest
 	var sqlData shanghu.MerchantActiveConfig
+	var drawProduct shanghu.MerchantActiveDrawProduct
 
 	err := c.ShouldBindJSON(&inData)
 	if err != nil {
@@ -22,7 +23,28 @@ func ActiveConfigCreate(c *gin.Context) {
 		return
 	}
 
-	//校验总概率
+	if inData.DrawMode != 0 {
+		if len(inData.DrawId) <= 0 {
+			app.Error(c, 500, errors.New("奖品未配置"), "奖品未配置")
+			return
+		}
+		//校验总概率 总概率相加不能大于100
+		drawList, _, err := drawProduct.GetDrawProductListById(inData.DrawId)
+		if err != nil {
+			app.Error(c, 500, err, err.Error())
+			return
+		}
+
+		sumOdds := 0
+
+		for _, v := range drawList {
+			sumOdds = sumOdds + v.DrawOdds
+		}
+		if sumOdds != 100 {
+			app.Error(c, 500, errors.New("配置的总中奖率不满100%"), "配置的总中奖率不满100%")
+			return
+		}
+	}
 
 	if inData.GroupBuyMode == 0 && inData.DrawMode == 0 {
 		app.Error(c, 500, errors.New("请选择抽奖与开团"), "请选择抽奖与开团")

+ 5 - 0
apis/shanghu/merchant.active.draw.product.go

@@ -30,6 +30,11 @@ func DrawProductCreate(c *gin.Context) {
 		return
 	}
 
+	if inData.DrawOdds >= 100 {
+		app.Error(c, 500, errors.New("中奖率不能大于100"), "中奖率不能大于100")
+
+	}
+
 	//if !inData.DrawOdds.GreaterThan(decimal.NewFromFloat(0)) {
 	//	app.Error(c, 500, errors.New("中奖率需要大于0"), "中奖率需要大于0")
 	//	return

+ 15 - 0
models/shanghu/merchant.active.draw.product.go

@@ -86,3 +86,18 @@ func (m *MerchantActiveDrawProduct) GetDrawProductListByOpenId(pageSize int, pag
 	table.Count(&count)
 	return doc, count, nil
 }
+
+// 中奖商品列表
+func (m *MerchantActiveDrawProduct) GetDrawProductListById(idList []int64) ([]MerchantActiveDrawProduct, int, error) {
+	var doc []MerchantActiveDrawProduct
+
+	table := orm.ShMysql.Table(m.TableName())
+
+	table = table.Where("id in (?) ", idList)
+	var count int
+	if err := table.Select("*").Order("id desc").Find(&doc).Error; err != nil {
+		return nil, 0, err
+	}
+	table.Count(&count)
+	return doc, count, nil
+}