wangfei 6 年前
父节点
当前提交
da5b963da1
共有 6 个文件被更改,包括 81 次插入10 次删除
  1. 1
    1
      conf/log.conf
  2. 4
    1
      controllers/card/card.go
  3. 10
    1
      controllers/luckdraw/luckdraw.go
  4. 5
    0
      models/constant.go
  5. 46
    6
      models/luckdraw/luckdraw.go
  6. 15
    1
      service/card/card.go

+ 1
- 1
conf/log.conf 查看文件

1
 [common]
1
 [common]
2
-filename="E:\\GoProjects\\src\\spaceofcheng\\services\\log\\common.log"
2
+filename="E:\\GoProject\\src\\spaceofcheng\\services\\log\\common.log"
3
 # log level "emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"
3
 # log level "emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"
4
 level="debug"
4
 level="debug"

+ 4
- 1
controllers/card/card.go 查看文件

38
 		pagesize = 10
38
 		pagesize = 10
39
 	}
39
 	}
40
 
40
 
41
-	list, total, err := c.serv.GetCardList(caseid, page, pagesize)
41
+	sendtype := c.GetString("sendtype")
42
+	usetype := c.GetString("usetype")
43
+
44
+	list, total, err := c.serv.GetCardList(caseid, sendtype, usetype, page, pagesize)
42
 	if err != nil {
45
 	if err != nil {
43
 		c.ResponseError(err)
46
 		c.ResponseError(err)
44
 	}
47
 	}

+ 10
- 1
controllers/luckdraw/luckdraw.go 查看文件

1
 package luckdraw
1
 package luckdraw
2
 
2
 
3
 import (
3
 import (
4
+	"encoding/json"
4
 	"errors"
5
 	"errors"
5
 	"net/http"
6
 	"net/http"
6
 	"spaceofcheng/services/controllers"
7
 	"spaceofcheng/services/controllers"
10
 	"spaceofcheng/services/models/model"
11
 	"spaceofcheng/services/models/model"
11
 	"spaceofcheng/services/service/luckdraw"
12
 	"spaceofcheng/services/service/luckdraw"
12
 	"spaceofcheng/services/utils"
13
 	"spaceofcheng/services/utils"
14
+
15
+	"github.com/astaxie/beego"
13
 )
16
 )
14
 
17
 
15
 // LuckdrawController 应用
18
 // LuckdrawController 应用
92
 
95
 
93
 // SaveLuckDraw 保存抽奖信息
96
 // SaveLuckDraw 保存抽奖信息
94
 func (c *LuckDrawController) SaveLuckDraw() {
97
 func (c *LuckDrawController) SaveLuckDraw() {
98
+	jsnStr := c.GetString("info")
99
+	if jsnStr == "" {
100
+		c.ResponseError(errors.New("未接收到保存内容"))
101
+	}
95
 	info := luckdrawModel.LuckDrawInfo{}
102
 	info := luckdrawModel.LuckDrawInfo{}
96
-	if err := c.ParseForm(&info); err != nil {
103
+	if err := json.Unmarshal([]byte(jsnStr), &info); err != nil {
104
+		utils.LogError("抽奖数据转换失败: " + err.Error())
97
 		c.ResponseError(err)
105
 		c.ResponseError(err)
98
 	}
106
 	}
107
+	beego.Error(info)
99
 	newinfo, err := c.serv.SaveLuckDraw(&info)
108
 	newinfo, err := c.serv.SaveLuckDraw(&info)
100
 	if err != nil {
109
 	if err != nil {
101
 		c.ResponseError(err)
110
 		c.ResponseError(err)

+ 5
- 0
models/constant.go 查看文件

215
 	FLASH_VALIDATE_DAYS = "days"
215
 	FLASH_VALIDATE_DAYS = "days"
216
 	FLASH_VALIDATE_DATE = "date"
216
 	FLASH_VALIDATE_DATE = "date"
217
 )
217
 )
218
+
219
+const (
220
+	COUPONCARD_USETYPE_LUCKDRAW = "luckdraw"
221
+	COUPONCARD_USETYPE_SYS      = "sysactive"
222
+)

+ 46
- 6
models/luckdraw/luckdraw.go 查看文件

54
 		dao.And("name like '%" + name + "%'")
54
 		dao.And("name like '%" + name + "%'")
55
 	}
55
 	}
56
 	if status != "" {
56
 	if status != "" {
57
-		dao.And("status=?", status)
57
+		query := `status=?`
58
+		switch status {
59
+		case strconv.Itoa(models.STATUS_NORMAL):
60
+			query = query + " and end_date>now()"
61
+			break
62
+		case strconv.Itoa(models.STATUS_EXPIRE):
63
+			query = "(" + query + " or end_date<=now())"
64
+		}
65
+		dao.And(query, status)
58
 	}
66
 	}
59
 	err := dao.Desc("create_date").Limit(pageSize, (page-1)*pageSize).Find(&luckdraws)
67
 	err := dao.Desc("create_date").Limit(pageSize, (page-1)*pageSize).Find(&luckdraws)
60
 	return luckdraws, err
68
 	return luckdraws, err
244
 }
252
 }
245
 
253
 
246
 // SaveLuckDrawDefault 保存内定信息
254
 // SaveLuckDrawDefault 保存内定信息
247
-func (m *LuckDrawDao) SaveLuckDrawDefault(defaults []model.TaPrizeDefault, luckdrawid string) error {
255
+func (m *LuckDrawDao) SaveLuckDrawDefault(defaults []model.TaPrizeDefault, prize model.TaLuckdrawPrize) error {
248
 	for inx, d := range defaults {
256
 	for inx, d := range defaults {
249
 		if d.DefaultId == "" {
257
 		if d.DefaultId == "" {
250
 			defaults[inx].DefaultId = utils.GetGUID()
258
 			defaults[inx].DefaultId = utils.GetGUID()
251
 			defaults[inx].Status = models.STATUS_NORMAL
259
 			defaults[inx].Status = models.STATUS_NORMAL
252
 			defaults[inx].CreateDate = time.Now()
260
 			defaults[inx].CreateDate = time.Now()
253
-			defaults[inx].LuckdrawId = luckdrawid
261
+			defaults[inx].LuckdrawId = prize.LuckdrawId
262
+			defaults[inx].PrizeId = prize.Id
254
 		}
263
 		}
255
 	}
264
 	}
256
 	_, err := m.db.Insert(defaults)
265
 	_, err := m.db.Insert(defaults)
264
 		if prize.Id == "" {
273
 		if prize.Id == "" {
265
 			prizes[inx].LuckdrawId = luckdraw.Id
274
 			prizes[inx].LuckdrawId = luckdraw.Id
266
 			prizes[inx].Id = utils.GetGUID()
275
 			prizes[inx].Id = utils.GetGUID()
276
+			prizes[inx].Remainder = prize.Stock
267
 			prizes[inx].Status = models.STATUS_NORMAL
277
 			prizes[inx].Status = models.STATUS_NORMAL
268
 		}
278
 		}
269
 		if prize.PrizeType == models.PRIZE_TYPE_COUPONCARD {
279
 		if prize.PrizeType == models.PRIZE_TYPE_COUPONCARD {
270
-			m.SavePrizeDetail(prize.TaLuckdrawPrize)
280
+			err := m.SavePrizeDetail(prizes[inx].TaLuckdrawPrize)
281
+			if err != nil {
282
+				return err
283
+			}
271
 		}
284
 		}
272
-		saveprizes = append(saveprizes, prize.TaLuckdrawPrize)
285
+		saveprizes = append(saveprizes, prizes[inx].TaLuckdrawPrize)
273
 		// 保存内定信息
286
 		// 保存内定信息
274
 		if luckdraw.IsInternalDefault == models.BOOL_TRUE {
287
 		if luckdraw.IsInternalDefault == models.BOOL_TRUE {
275
-			err := m.SaveLuckDrawDefault(prize.Defaults, prizes[inx].Id)
288
+			err := m.SaveLuckDrawDefault(prize.Defaults, prizes[inx].TaLuckdrawPrize)
276
 			if err != nil {
289
 			if err != nil {
277
 				return err
290
 				return err
278
 			}
291
 			}
309
 				Status:  models.STATUS_NORMAL,
322
 				Status:  models.STATUS_NORMAL,
310
 			}
323
 			}
311
 			details = append(details, d)
324
 			details = append(details, d)
325
+			i = i + 1
326
+		}
327
+		m.db.Insert(details)
328
+	} else {
329
+		var card model.TaCouponCard
330
+		_, err := m.db.Where("card_id=?", prize.CouponCardId).Get(&card)
331
+		if err != nil {
332
+			beego.Error(err)
333
+			return err
334
+		}
335
+		if card.UsedCount > 0 {
336
+			return errors.New("卡券已被使用!不允许保存!")
337
+		}
338
+		var details []model.TaPrizeDetail
339
+		i := 0
340
+		for i < card.TotalCount {
341
+			unix := time.Now().UnixNano()
342
+			random := utils.GetRand(5) + strconv.Itoa(int(unix))
343
+			url := `/` + prize.CouponCardId + `/` + beego.AppConfig.String("defaultShareUserID") + `/` + prize.CouponCardType + `/` + random + `/receive`
344
+			var d = model.TaPrizeDetail{
345
+				Id:      utils.GetGUID(),
346
+				PrizeId: prize.Id,
347
+				Url:     beego.AppConfig.String("clientShareURL") + url,
348
+				Status:  models.STATUS_NORMAL,
349
+			}
350
+			details = append(details, d)
351
+			i = i + 1
312
 		}
352
 		}
313
 		m.db.Insert(details)
353
 		m.db.Insert(details)
314
 	}
354
 	}

+ 15
- 1
service/card/card.go 查看文件

10
 	"spaceofcheng/services/models/model"
10
 	"spaceofcheng/services/models/model"
11
 	"spaceofcheng/services/models/system"
11
 	"spaceofcheng/services/models/system"
12
 	"spaceofcheng/services/service"
12
 	"spaceofcheng/services/service"
13
+	"spaceofcheng/services/service/events"
13
 	"spaceofcheng/services/utils"
14
 	"spaceofcheng/services/utils"
14
 	"strings"
15
 	"strings"
15
 	"time"
16
 	"time"
40
 }
41
 }
41
 
42
 
42
 // GetCardList 获取卡列表
43
 // GetCardList 获取卡列表
43
-func (s *CardServ) GetCardList(caseID string, pagenavi ...int) ([]model.TaCouponCard, int64, error) {
44
+func (s *CardServ) GetCardList(caseID, sendtype, usetype string, pagenavi ...int) ([]model.TaCouponCard, int64, error) {
44
 	filters := []string{}
45
 	filters := []string{}
45
 	if caseID != "" {
46
 	if caseID != "" {
46
 		if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
47
 		if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
66
 			"case_id in ('" + strings.Join(caseIDs, "','") + "')",
67
 			"case_id in ('" + strings.Join(caseIDs, "','") + "')",
67
 		}
68
 		}
68
 	}
69
 	}
70
+	if sendtype != "" {
71
+		filters = append(filters, "send_type='"+sendtype+"'")
72
+		if usetype != "" {
73
+			switch usetype {
74
+			case models.COUPONCARD_USETYPE_LUCKDRAW:
75
+				filters = append(filters, "card_id not in (select resource_id from sys_activity_action where active_type='"+events.ActGiveCoupon+"')")
76
+				break
77
+			case models.COUPONCARD_USETYPE_SYS:
78
+				filters = append(filters, "card_id not in (select coupon_card_id from ta_luckdraw_record where coupon_card_type='"+models.PRIZE_TYPE_CARD+"')")
79
+				break
80
+			}
81
+		}
82
+	}
69
 
83
 
70
 	limit := utils.GetPageNaviLimit(pagenavi...)
84
 	limit := utils.GetPageNaviLimit(pagenavi...)
71
 	res, total, err := s.dao.GetCardList(filters, limit)
85
 	res, total, err := s.dao.GetCardList(filters, limit)