浏览代码

Merge branch '2.1.0' of http://git.ycjcjy.com/SpaceOfCheng/services into 2.1.0

zjxpcyc 6 年前
父节点
当前提交
ae71aa4216

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

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

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

@@ -38,7 +38,10 @@ func (c *CardController) ListByCase() {
38 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 45
 	if err != nil {
43 46
 		c.ResponseError(err)
44 47
 	}

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

@@ -39,7 +39,10 @@ func (c *CouponController) ListByCase() {
39 39
 		pagesize = 10
40 40
 	}
41 41
 
42
-	list, total, err := c.serv.GetCouponList(caseID, page, pagesize)
42
+	sendtype := c.GetString("sendtype")
43
+	usetype := c.GetString("usetype")
44
+
45
+	list, total, err := c.serv.GetCouponList(caseID, sendtype, usetype, page, pagesize)
43 46
 	if err != nil {
44 47
 		c.ResponseError(err)
45 48
 	}

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

@@ -1,6 +1,7 @@
1 1
 package luckdraw
2 2
 
3 3
 import (
4
+	"encoding/json"
4 5
 	"errors"
5 6
 	"net/http"
6 7
 	"spaceofcheng/services/controllers"
@@ -10,6 +11,8 @@ import (
10 11
 	"spaceofcheng/services/models/model"
11 12
 	"spaceofcheng/services/service/luckdraw"
12 13
 	"spaceofcheng/services/utils"
14
+
15
+	"github.com/astaxie/beego"
13 16
 )
14 17
 
15 18
 // LuckdrawController 应用
@@ -92,10 +95,16 @@ func (c *LuckDrawController) GetLuckDrawByID() {
92 95
 
93 96
 // SaveLuckDraw 保存抽奖信息
94 97
 func (c *LuckDrawController) SaveLuckDraw() {
98
+	jsnStr := c.GetString("info")
99
+	if jsnStr == "" {
100
+		c.ResponseError(errors.New("未接收到保存内容"))
101
+	}
95 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 105
 		c.ResponseError(err)
98 106
 	}
107
+	beego.Error(info)
99 108
 	newinfo, err := c.serv.SaveLuckDraw(&info)
100 109
 	if err != nil {
101 110
 		c.ResponseError(err)

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

@@ -215,3 +215,14 @@ const (
215 215
 	FLASH_VALIDATE_DAYS = "days"
216 216
 	FLASH_VALIDATE_DATE = "date"
217 217
 )
218
+
219
+const (
220
+	COUPONCARD_USETYPE_LUCKDRAW = "luckdraw"
221
+	COUPONCARD_USETYPE_SYS      = "sysactive"
222
+)
223
+
224
+const (
225
+	// 送券
226
+	ActGiveCoupon = "giveCoupon"
227
+	ActGiveCard   = "giveCard"
228
+)

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

@@ -54,7 +54,15 @@ func (m *LuckDrawDao) GetLuckDrawList(caseids, name, status string, page, pageSi
54 54
 		dao.And("name like '%" + name + "%'")
55 55
 	}
56 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 67
 	err := dao.Desc("create_date").Limit(pageSize, (page-1)*pageSize).Find(&luckdraws)
60 68
 	return luckdraws, err
@@ -244,13 +252,14 @@ func (m *LuckDrawDao) SaveLuckDrawImgs(imgs []model.TaLuckdrawImg, luckdrawid st
244 252
 }
245 253
 
246 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 256
 	for inx, d := range defaults {
249 257
 		if d.DefaultId == "" {
250 258
 			defaults[inx].DefaultId = utils.GetGUID()
251 259
 			defaults[inx].Status = models.STATUS_NORMAL
252 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 265
 	_, err := m.db.Insert(defaults)
@@ -264,15 +273,19 @@ func (m *LuckDrawDao) SaveLuckDrawPrizes(prizes []PrizeWithDefaults, luckdraw *m
264 273
 		if prize.Id == "" {
265 274
 			prizes[inx].LuckdrawId = luckdraw.Id
266 275
 			prizes[inx].Id = utils.GetGUID()
276
+			prizes[inx].Remainder = prize.Stock
267 277
 			prizes[inx].Status = models.STATUS_NORMAL
268 278
 		}
269 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 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 289
 			if err != nil {
277 290
 				return err
278 291
 			}
@@ -309,6 +322,33 @@ func (m *LuckDrawDao) SavePrizeDetail(prize model.TaLuckdrawPrize) error {
309 322
 				Status:  models.STATUS_NORMAL,
310 323
 			}
311 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 353
 		m.db.Insert(details)
314 354
 	}

+ 1
- 0
models/model/sys_activity_action.go 查看文件

@@ -6,4 +6,5 @@ type SysActivityAction struct {
6 6
 	ActiveType   string `xorm:"comment('赠送还是取消赠送之类的') VARCHAR(5)"`
7 7
 	ResourceType string `xorm:"VARCHAR(20)"`
8 8
 	ResourceDesc string `xorm:"VARCHAR(500)"`
9
+	ResourceId   string `xorm:"VARCHAR(500)"`
9 10
 }

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

@@ -40,7 +40,7 @@ func NewCardServ(ctx *utils.Context) *CardServ {
40 40
 }
41 41
 
42 42
 // GetCardList 获取卡列表
43
-func (s *CardServ) GetCardList(caseID string, pagenavi ...int) ([]model.TaCouponCard, int64, error) {
43
+func (s *CardServ) GetCardList(caseID, sendtype, usetype string, pagenavi ...int) ([]model.TaCouponCard, int64, error) {
44 44
 	filters := []string{}
45 45
 	if caseID != "" {
46 46
 		if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
@@ -66,6 +66,19 @@ func (s *CardServ) GetCardList(caseID string, pagenavi ...int) ([]model.TaCoupon
66 66
 			"case_id in ('" + strings.Join(caseIDs, "','") + "')",
67 67
 		}
68 68
 	}
69
+	if sendtype != "" {
70
+		filters = append(filters, "send_type='"+sendtype+"'")
71
+		if usetype != "" {
72
+			switch usetype {
73
+			case models.COUPONCARD_USETYPE_LUCKDRAW:
74
+				filters = append(filters, "card_id not in (select resource_id from sys_activity_action where active_type='"+models.ActGiveCard+"') and used_count=0")
75
+				break
76
+			case models.COUPONCARD_USETYPE_SYS:
77
+				filters = append(filters, "card_id not in (select coupon_card_id from ta_luckdraw_record where coupon_card_type='"+models.PRIZE_TYPE_CARD+"') and used_count=0")
78
+				break
79
+			}
80
+		}
81
+	}
69 82
 
70 83
 	limit := utils.GetPageNaviLimit(pagenavi...)
71 84
 	res, total, err := s.dao.GetCardList(filters, limit)

+ 14
- 1
service/coupon/coupon.go 查看文件

@@ -34,7 +34,7 @@ func NewCouponServ(ctx *utils.Context) *CouponServ {
34 34
 }
35 35
 
36 36
 // GetCouponList 获取优惠券列表
37
-func (s *CouponServ) GetCouponList(caseID string, pagenavi ...int) ([]model.TaCoupon, int64, error) {
37
+func (s *CouponServ) GetCouponList(caseID, sendtype, usetype string, pagenavi ...int) ([]model.TaCoupon, int64, error) {
38 38
 	filters := []string{}
39 39
 
40 40
 	if caseID != "" {
@@ -61,6 +61,19 @@ func (s *CouponServ) GetCouponList(caseID string, pagenavi ...int) ([]model.TaCo
61 61
 			"case_id in ('" + strings.Join(caseIDs, "','") + "')",
62 62
 		}
63 63
 	}
64
+	if sendtype != "" {
65
+		filters = append(filters, "send_type='"+sendtype+"'")
66
+		if usetype != "" {
67
+			switch usetype {
68
+			case models.COUPONCARD_USETYPE_LUCKDRAW:
69
+				filters = append(filters, "coupon_id not in (select resource_id from sys_activity_action where active_type='"+models.ActGiveCoupon+"') and used_count=0")
70
+				break
71
+			case models.COUPONCARD_USETYPE_SYS:
72
+				filters = append(filters, "coupon_id not in (select coupon_card_id from ta_luckdraw_record where coupon_card_type='"+models.PRIZE_TYPE_COUPON+"') and used_count=0")
73
+				break
74
+			}
75
+		}
76
+	}
64 77
 
65 78
 	limit := utils.GetPageNaviLimit(pagenavi...)
66 79
 	res, total, err := s.dao.GetCouponList(filters, limit)

+ 2
- 2
service/marketing/marketing.go 查看文件

@@ -102,7 +102,7 @@ func (s *MarketingServ) SaveMarketing(activity model.SysActivity, activeType, re
102 102
 	if activeType == events.ActGiveCard {
103 103
 		cardID := res["giftValue"].(string)
104 104
 		if cardID == "" {
105
-			return nil, nil, errors.New("未指定赠送内容")
105
+			return nil, nil, errors.New("未指定赠送内容")
106 106
 		}
107 107
 	}
108 108
 
@@ -127,7 +127,7 @@ func (s *MarketingServ) SaveMarketing(activity model.SysActivity, activeType, re
127 127
 	woke.ActiveType = activeType
128 128
 	woke.ResourceDesc = resourceDesc
129 129
 	woke.ResourceType = "占位符"
130
-
130
+	woke.ResourceId = res["giftValue"].(string)
131 131
 	// 存储 活动动作
132 132
 	newWoke, err = s.wdao.AddWork(woke)
133 133
 	if err != nil {