Ver código fonte

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

wangfei 6 anos atrás
pai
commit
0eeb56d3a5

+ 1
- 0
models/constant.go Ver arquivo

@@ -170,4 +170,5 @@ const (
170 170
 // 二维码类型
171 171
 const (
172 172
 	QRCODE_TYPE_COURSE = "course"
173
+	QRCODE_TYPE_PRIZE  = "prize"
173 174
 )

+ 0
- 14
models/course/course.go Ver arquivo

@@ -2,7 +2,6 @@ package course
2 2
 
3 3
 import (
4 4
 	"errors"
5
-	"math/rand"
6 5
 	"spaceofcheng/services/models"
7 6
 	"spaceofcheng/services/models/model"
8 7
 	"spaceofcheng/services/utils"
@@ -532,19 +531,6 @@ func (m *CourseDAO) SaveCustomerCourseQrcode(qrcode *model.TaCustomerCourseQrcod
532 531
 	return err
533 532
 }
534 533
 
535
-// GenerateQRCode 生成二维码数字
536
-func (m *CourseDAO) GenerateQRCode() string {
537
-	var temp1 int = rand.Intn(9)*87 + 11
538
-	var temp2 int = rand.Intn(9)*89 + 13
539
-	nano := time.Now().UnixNano()
540
-	var nanostr string = strconv.FormatInt(nano, 10)
541
-	var temp3 string = nanostr[11:]
542
-	var temp4 string = "6"
543
-	var temp5 int = rand.Intn(9)*7 + 17
544
-	var code string = "66" + strconv.Itoa(temp1) + temp4 + strconv.Itoa(temp2) + temp3 + strconv.Itoa(temp5)
545
-	return code
546
-}
547
-
548 534
 // CustomerCourse 客户课程信息
549 535
 type CustomerCourse struct {
550 536
 	model.TaCustomerCourse `xorm:"extends"`

+ 16
- 5
models/luckdraw/luckdraw.go Ver arquivo

@@ -30,6 +30,10 @@ type LuckDraw struct {
30 30
 	model.TaLuckdraw `xorm:"extends"`
31 31
 	Prizes           []model.TaLuckdrawPrize
32 32
 }
33
+type LuckInfo struct {
34
+	model.TaLuckdrawRecord `xorm:"extends"`
35
+	CustomerQrcode         string
36
+}
33 37
 
34 38
 // GetLuckDraw 获取抽奖信息
35 39
 func (m *LuckDrawDao) GetLuckDraw(id string) (*LuckDraw, error) {
@@ -321,7 +325,7 @@ func (m *LuckDrawDao) UpdatePrizeDetail(detail model.TaPrizeDetail) error {
321 325
 }
322 326
 
323 327
 // UpdateRecord 核销更新抽奖记录表
324
-func (m *LuckDrawDao) UpdateRecord(record *model.TaLuckdrawRecord) error {
328
+func (m *LuckDrawDao) UpdateRecord(record *LuckInfo) error {
325 329
 	record.Status = models.STATUS_NORMAL
326 330
 	record.WriteoffDate = time.Now()
327 331
 	cols := []string{
@@ -396,10 +400,17 @@ func (m *LuckDrawDao) GetRecordByLuckDraw(luckdrawid string) ([]model.TaLuckdraw
396 400
 }
397 401
 
398 402
 // GetRecordByID 获取抽奖记录明细
399
-func (m *LuckDrawDao) GetRecordByID(id string) (*model.TaLuckdrawRecord, error) {
400
-	var record model.TaLuckdrawRecord
401
-	_, err := m.db.Where("id=?", id).Get(&record)
402
-	return &record, err
403
+func (m *LuckDrawDao) GetRecordByID(id string) (*LuckInfo, error) {
404
+	var record []LuckInfo
405
+	sql := `SELECT
406
+	a.*,
407
+	b.customer_qrcode 
408
+FROM
409
+	ta_luckdraw_record a
410
+	LEFT JOIN ta_customer_course_qrcode b ON a.id = b.customer_course_id
411
+	where a.id = '` + id + `'`
412
+	err := m.db.Sql(sql).Find(record)
413
+	return &record[0], err
403 414
 }
404 415
 
405 416
 // SaveLuckDrawShareData 保存用户分享信息

+ 1
- 1
service/card/card.go Ver arquivo

@@ -590,7 +590,7 @@ func (s *CardServ) SaveCustomerCourseByCard(customerCard *model.TaCustomerCard)
590 590
 			CustomerCourseId: customerCourseId,
591 591
 			QrcodeType:       models.QRCODE_TYPE_COURSE,
592 592
 			CreateDate:       time.Now(),
593
-			CustomerQrcode:   s.courseDao.GenerateQRCode(),
593
+			CustomerQrcode:   utils.GenerateQRCode(),
594 594
 			Status:           models.STATUS_NORMAL,
595 595
 		}
596 596
 		err = s.courseDao.SaveCustomerCourseQrcode(&custQrcode)

+ 1
- 1
service/course/order.go Ver arquivo

@@ -378,7 +378,7 @@ func (s *CourseServ) SaveOrder(order *model.TaCourseOrders, course *course.Cours
378 378
 	}
379 379
 	custQRCode := model.TaCustomerCourseQrcode{
380 380
 		CustomerCourseId: customerCourseId,
381
-		CustomerQrcode:   s.dao.GenerateQRCode(),
381
+		CustomerQrcode:   utils.GenerateQRCode(),
382 382
 		CreateDate:       time.Now(),
383 383
 		Status:           models.STATUS_NORMAL,
384 384
 		QrcodeType:       models.QRCODE_TYPE_COURSE,

+ 4
- 4
service/customer/customer.go Ver arquivo

@@ -244,15 +244,15 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
244 244
 		}
245 245
 	}
246 246
 
247
+	// triggerRegiteEvent 触发注册事件
248
+	evtEngID := utils.EngineIDBy(cust.OrgId, cust.RecommendCase)
249
+	utils.EventEngineBus(evtEngID).EmitEvent(events.EvtRegiste, *cust)
250
+
247 251
 	// 如果客户ID 与映射表中一致, 说明已经绑定过了
248 252
 	if cust.CustomerId == userMap.UserId {
249 253
 		return cust, nil
250 254
 	}
251 255
 
252
-	// triggerRegiteEvent 触发注册事件
253
-	evtEngID := utils.EngineIDBy(cust.OrgId, cust.RecommendCase)
254
-	utils.EventEngineBus(evtEngID).EmitEvent(events.EvtRegiste, *cust)
255
-
256 256
 	// 更新用户映射信息
257 257
 	userMap.UserId = cust.CustomerId
258 258
 	if err := s.dao.UpdateUserMapping(userMap, []string{"user_id"}); err != nil {

+ 5
- 1
service/events/giveCoupon.go Ver arquivo

@@ -14,6 +14,8 @@ import (
14 14
 // giveCoupon 赠送卡券
15 15
 // Event.Payload.customer  = model.TaCustomer
16 16
 var giveCoupon = func(e tinyevent.Event) error {
17
+	utils.LogInfo("开始卡券赠送操作...")
18
+
17 19
 	hasDBError := false
18 20
 	ctx := NewContext()
19 21
 	defer DestroyContext(ctx, hasDBError)
@@ -29,6 +31,8 @@ var giveCoupon = func(e tinyevent.Event) error {
29 31
 	caseID := cust.RecommendCase
30 32
 	orgID := cust.OrgId
31 33
 
34
+	utils.LogInfo("被赠送人: " + cust.CustomerId)
35
+
32 36
 	query := `
33 37
 		SELECT
34 38
 			t.*
@@ -39,7 +43,7 @@ var giveCoupon = func(e tinyevent.Event) error {
39 43
 			s.org_id = ?
40 44
 		AND s.case_id = ?
41 45
 		AND s.status = ?
42
-		AND s.active_type = ?
46
+		AND s.activity_type = ?
43 47
 	`
44 48
 
45 49
 	var acts []model.SysActivityAction

+ 25
- 7
service/luckdraw/luckdraw.go Ver arquivo

@@ -2,22 +2,27 @@ package luckdraw
2 2
 
3 3
 import (
4 4
 	"errors"
5
+	"spaceofcheng/services/models"
6
+	"spaceofcheng/services/models/course"
5 7
 	"spaceofcheng/services/models/luckdraw"
6 8
 	"spaceofcheng/services/models/model"
7 9
 	"spaceofcheng/services/utils"
10
+	"time"
8 11
 )
9 12
 
10 13
 // LuckdrawServ 系统处理
11 14
 type LuckdrawServ struct {
12
-	ctx *utils.Context
13
-	dao *luckdraw.LuckDrawDao
15
+	ctx       *utils.Context
16
+	dao       *luckdraw.LuckDrawDao
17
+	courseDAO *course.CourseDAO
14 18
 }
15 19
 
16 20
 // NewLuckdrawServ 初始化
17 21
 func NewLuckdrawServ(ctx *utils.Context) *LuckdrawServ {
18 22
 	return &LuckdrawServ{
19
-		ctx: ctx,
20
-		dao: luckdraw.NewDAO(ctx),
23
+		ctx:       ctx,
24
+		dao:       luckdraw.NewDAO(ctx),
25
+		courseDAO: course.NewCourseDAO(ctx),
21 26
 	}
22 27
 }
23 28
 
@@ -123,8 +128,21 @@ func (s *LuckdrawServ) SaveRecord(record model.TaLuckdrawRecord) (*model.TaLuckd
123 128
 		utils.LogError("保存抽奖记录失败: " + err.Error())
124 129
 		return nil, errors.New("保存抽奖记录失败")
125 130
 	}
126
-	return newRecord, nil
127 131
 
132
+	custQRCode := model.TaCustomerCourseQrcode{
133
+		CustomerCourseId: newRecord.Id,
134
+		CustomerQrcode:   utils.GenerateQRCode(),
135
+		CreateDate:       time.Now(),
136
+		Status:           models.STATUS_NORMAL,
137
+		QrcodeType:       models.QRCODE_TYPE_PRIZE,
138
+	}
139
+
140
+	if err := s.courseDAO.SaveCustomerCourseQrcode(&custQRCode); err != nil {
141
+		utils.LogError("插入中奖二维码失败: " + err.Error())
142
+		return nil, errors.New("写入中奖二维码失败")
143
+	}
144
+
145
+	return newRecord, nil
128 146
 }
129 147
 
130 148
 func (s *LuckdrawServ) GetPrizeDetail(prizeid string) ([]model.TaPrizeDetail, error) {
@@ -145,7 +163,7 @@ func (s *LuckdrawServ) UpdatePrizeDetail(detail model.TaPrizeDetail) error {
145 163
 	return nil
146 164
 }
147 165
 
148
-func (s *LuckdrawServ) UpdateRecord(record *model.TaLuckdrawRecord) error {
166
+func (s *LuckdrawServ) UpdateRecord(record *luckdraw.LuckInfo) error {
149 167
 	err := s.dao.UpdateRecord(record)
150 168
 	if err != nil {
151 169
 		utils.LogError("核销更新抽奖记录表失败: " + err.Error())
@@ -209,7 +227,7 @@ func (s *LuckdrawServ) GetRecordByLuckDraw(luckdrawid string) ([]model.TaLuckdra
209 227
 	return record, nil
210 228
 }
211 229
 
212
-func (s *LuckdrawServ) GetRecordByID(id string) (*model.TaLuckdrawRecord, error) {
230
+func (s *LuckdrawServ) GetRecordByID(id string) (*luckdraw.LuckInfo, error) {
213 231
 	record, err := s.dao.GetRecordByID(id)
214 232
 	if err != nil {
215 233
 		utils.LogError("获取抽奖记录明细失败: " + err.Error())

+ 13
- 5
service/luckdrawlist/luckdrawlist.go Ver arquivo

@@ -4,6 +4,7 @@ import (
4 4
 	"errors"
5 5
 	"spaceofcheng/services/models/luckdrawlist"
6 6
 	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/models/verify"
7 8
 	"spaceofcheng/services/utils"
8 9
 	"strings"
9 10
 
@@ -12,15 +13,17 @@ import (
12 13
 
13 14
 // LuckdrawlistServ 系统处理
14 15
 type LuckdrawlistServ struct {
15
-	ctx *utils.Context
16
-	dao *luckdrawlist.LuckdrawDAO
16
+	ctx       *utils.Context
17
+	dao       *luckdrawlist.LuckdrawDAO
18
+	verifyDao *verify.VerifyDAO
17 19
 }
18 20
 
19 21
 // NewLuckdrawlistServ 初始化
20 22
 func NewLuckdrawlistServ(ctx *utils.Context) *LuckdrawlistServ {
21 23
 	return &LuckdrawlistServ{
22
-		ctx: ctx,
23
-		dao: luckdrawlist.NewLuckdrawDAO(ctx),
24
+		ctx:       ctx,
25
+		dao:       luckdrawlist.NewLuckdrawDAO(ctx),
26
+		verifyDao: verify.NewVerifyDAO(ctx),
24 27
 	}
25 28
 }
26 29
 func (s *LuckdrawlistServ) GetLuckShareList(caseID, fromPhone, toPhone string, pagenavi ...int) ([]model.TaShareLuckyRecord, int64, error) {
@@ -95,7 +98,12 @@ func (s *LuckdrawlistServ) GetLuckdrawList(caseID string, pagenavi ...int) ([]lu
95 98
 
96 99
 }
97 100
 
98
-func (s *LuckdrawlistServ) GetVerifyList(luckdrawId, caseIDs string) (*luckdrawlist.Luckdraw, error) {
101
+func (s *LuckdrawlistServ) GetVerifyList(qrcode, caseIDs string) (*luckdrawlist.Luckdraw, error) {
102
+	luckdrawId, err := s.verifyDao.GetCustomerCourseIdByQrcode(qrcode)
103
+	if err != nil {
104
+		utils.LogError("查询抽奖列表失败: " + err.Error())
105
+		return nil, errors.New("查询抽奖列表失败")
106
+	}
99 107
 	luckdraw, err := s.dao.GetLuckdrawById(luckdrawId, caseIDs)
100 108
 	if err != nil {
101 109
 		utils.LogError("查询抽奖列表失败: " + err.Error())

+ 2
- 0
utils/event.go Ver arquivo

@@ -53,6 +53,8 @@ func ResetEventEngineBus(id string) *EventEngine {
53 53
 
54 54
 // EmitEvent 执行事件
55 55
 func (t EventEngine) EmitEvent(evt string, payload interface{}) {
56
+	LogInfo("触发事件: "+evt, payload)
57
+
56 58
 	e := tinyevent.Event{
57 59
 		Name:    evt,
58 60
 		Payload: payload,

+ 17
- 0
utils/log.go Ver arquivo

@@ -75,6 +75,23 @@ func LogError(v ...interface{}) error {
75 75
 	return nil
76 76
 }
77 77
 
78
+// LogInfo Info 日志
79
+func LogInfo(v ...interface{}) {
80
+	log := instances["common"]
81
+
82
+	if len(v) > 0 {
83
+		firstV := v[0]
84
+		leftV := v[1:]
85
+
86
+		switch msg := firstV.(type) {
87
+		case string:
88
+			log.Info(msg, leftV...)
89
+		default:
90
+			log.Info("Unknown message type", leftV...)
91
+		}
92
+	}
93
+}
94
+
78 95
 // GetDefaultLogger 获取默认 logger
79 96
 func GetDefaultLogger() *logs.BeeLogger {
80 97
 	log := instances["common"]

+ 15
- 0
utils/utils.go Ver arquivo

@@ -2,9 +2,11 @@ package utils
2 2
 
3 3
 import (
4 4
 	"encoding/base64"
5
+	"math/rand"
5 6
 	"net/http"
6 7
 	"strconv"
7 8
 	"strings"
9
+	"time"
8 10
 )
9 11
 
10 12
 // 客户端类型
@@ -126,3 +128,16 @@ func GetPageNaviLimit(params ...int) []int {
126 128
 		(page - 1) * pagesize,
127 129
 	}
128 130
 }
131
+
132
+// GenerateQRCode 生成二维码数字
133
+func GenerateQRCode() string {
134
+	var temp1 int = rand.Intn(9)*87 + 11
135
+	var temp2 int = rand.Intn(9)*89 + 13
136
+	nano := time.Now().UnixNano()
137
+	var nanostr string = strconv.FormatInt(nano, 10)
138
+	var temp3 string = nanostr[11:]
139
+	var temp4 string = "6"
140
+	var temp5 int = rand.Intn(9)*7 + 17
141
+	var code string = "66" + strconv.Itoa(temp1) + temp4 + strconv.Itoa(temp2) + temp3 + strconv.Itoa(temp5)
142
+	return code
143
+}