瀏覽代碼

bug修改

wangfei 6 年之前
父節點
當前提交
919afb22ad

+ 39
- 0
controllers/card/record.go 查看文件

@@ -0,0 +1,39 @@
1
+package card
2
+
3
+import (
4
+	"spaceofcheng/services/service/card"
5
+	"spaceofcheng/services/controllers"
6
+)
7
+
8
+
9
+// RecordController 商品
10
+type RecordController struct {
11
+	serv *card.RecordServ
12
+	controllers.BaseController
13
+}
14
+
15
+// Constructor 初始化 Controller
16
+// @Title Constructor
17
+// @Description 初始化 Controller, 系统自动调用
18
+func (c *RecordController) Constructor() {
19
+	c.serv = card.NewRecordServ(c.Context)
20
+}
21
+
22
+// ListByCase 获取卡列表
23
+func (c *RecordController) GetRecordList() {
24
+
25
+	person := c.GetString("referrer")
26
+	startDate := c.GetString("startDate")
27
+	endDate := c.GetString("endDate")
28
+	page, _ := c.GetInt("page")
29
+	pagesize, _ := c.GetInt("pagesize")
30
+
31
+	res,err := c.serv.GetRecordList(startDate,endDate,person,page,pagesize)
32
+
33
+	if err != nil {
34
+		c.ResponseError(err)
35
+	}
36
+	c.ResponseJSON(res)
37
+
38
+}
39
+

+ 12
- 1
controllers/cases/key.go 查看文件

@@ -1,6 +1,8 @@
1 1
 package cases
2 2
 
3
-import "spaceofcheng/services/models/model"
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+)
4 6
 
5 7
 // GetKeyList 获取钥匙列表
6 8
 func (c *CaseController) GetKeyList() {
@@ -68,6 +70,15 @@ func (c *CaseController) LockKeyByPhone() {
68 70
 		c.ResponseError(err)
69 71
 	}
70 72
 	c.ResponseJSON("绑定成功!")
73
+}
74
+func (c *CaseController) LockKeyVerify() {
75
+	customerId := c.GetString("customerid")
76
+	keyId := c.GetString(":keyid")
77
+	err := c.dao.LockKeyVerify(keyId, customerId)
78
+	if err != nil {
79
+		c.ResponseError(err)
80
+	}
81
+	c.ResponseJSON("绑定成功!")
71 82
 
72 83
 }
73 84
 

+ 73
- 0
models/card/record.go 查看文件

@@ -0,0 +1,73 @@
1
+package card
2
+
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+	"github.com/go-xorm/xorm"
6
+	"spaceofcheng/services/utils"
7
+	"strconv"
8
+)
9
+
10
+
11
+// RecordDAO 当前数据库操作对象
12
+type RecordDAO struct {
13
+	ctx *utils.Context
14
+	db  *xorm.Session
15
+}
16
+
17
+// NewRecordDAO New Inst
18
+func NewRecordDAO(ctx *utils.Context) *RecordDAO {
19
+	return &RecordDAO{
20
+		ctx: ctx,
21
+		db:  ctx.DB,
22
+	}
23
+}
24
+
25
+// RecordInfo 卡
26
+type RecordInfo struct {
27
+	model.TaCouponGiveRecord `xorm:"extends"`
28
+	CustomerName string
29
+	Phone string
30
+	RecommendName string
31
+}
32
+
33
+// getRecordList 根据条件查询赠送记录
34
+func (c *RecordDAO) GetRecordList(startDate string, endDate string, person string,page int,pageSize int) ([]RecordInfo, error) {
35
+	var info []RecordInfo
36
+
37
+	sql := "select tc.customer_name,tc.phone,tc.recommend_name,tgr.* from ta_coupon_give_record tgr LEFT JOIN ta_customer tc on tgr.to_id = tc.customer_id"
38
+	
39
+	if startDate != "" || endDate != "" || person != "" {
40
+		sql = sql + ` WHERE`
41
+	}
42
+
43
+	// 传入了开始时间的时候
44
+	if startDate != "" {
45
+		sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') >= DATE_FORMAT('` + startDate + `','%Y-%m-%d')`
46
+	}
47
+	// 传入了结束时间的时候
48
+	if endDate != "" {
49
+		// 传入了开始时间的时候,添加 and
50
+		if startDate != "" {
51
+			sql = sql + ` and`
52
+		}
53
+		sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') <= DATE_FORMAT('` + endDate + `','%Y-%m-%d')`
54
+	}
55
+	
56
+	if person != "" {
57
+		// 传入了 开始时间 或者 结束时间 的时候,添加 and
58
+		if startDate != "" || endDate != "" {
59
+			sql = sql + ` and`
60
+		}
61
+		sql = sql + ` tc.recommend_name like '%` + person + `%'`
62
+	}
63
+
64
+	sql = sql + ` ORDER BY tgr.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
65
+
66
+	err := c.db.SQL(sql).Find(&info)
67
+	if err != nil {
68
+		return nil,err
69
+	}
70
+
71
+	return info,err
72
+
73
+}

+ 13
- 7
models/cases/key.go 查看文件

@@ -31,10 +31,10 @@ func (m *CaseDAO) GetKeysByCase(caseids, num string, page, pageSize int) ([]Case
31 31
 			s.customer_name
32 32
 		FROM
33 33
 			ta_case_key t
34
-		LEFT JOIN ta_case_key_use s ON t.key_id = s.key_id AND s.status != ?
34
+		LEFT JOIN ta_case_key_use s ON t.key_id = s.key_id AND s.return_date IS NULL 
35 35
 		WHERE
36 36
 			t.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')
37
-		AND t.status > ?
37
+			AND t.STATUS > ?
38 38
 	`
39 39
 
40 40
 	if num != "" {
@@ -43,8 +43,8 @@ func (m *CaseDAO) GetKeysByCase(caseids, num string, page, pageSize int) ([]Case
43 43
 
44 44
 	offset := (page - 1) * pageSize
45 45
 	query += " order by lock_no asc LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa(offset)
46
-
47
-	err := m.db.SQL(query, models.STATUS_NORMAL, models.STATUS_DEL).Find(&keys)
46
+	beego.Error(query)
47
+	err := m.db.SQL(query, models.STATUS_DEL).Find(&keys)
48 48
 	return keys, err
49 49
 }
50 50
 
@@ -160,6 +160,8 @@ func (m *CaseDAO) GetKeyByNum(caseid string, beginnum, endnum int) ([]model.TaCa
160 160
 	err := m.db.Sql(sql).Find(&keys)
161 161
 	return keys, err
162 162
 }
163
+
164
+// CustomerIsBind 用户是否已经绑定钥匙
163 165
 func (m *CaseDAO) CustomerIsBind(customerid string) (int, error) {
164 166
 	var count []model.TaCaseKey
165 167
 	sql := `SELECT
@@ -169,8 +171,12 @@ FROM
169 171
 	ta_case_key a
170 172
 	INNER JOIN ta_case_key_use b ON a.key_id = b.key_id 
171 173
 WHERE
172
-	b.customer_id =?
174
+	b.customer_id = '` + customerid + `'
173 175
 	and b.return_date is null`
174
-	err := m.db.Sql(sql, customerid).Find(&count)
175
-	return len(count), err
176
+	beego.Error(sql)
177
+	err := m.db.Sql(sql).Find(&count)
178
+	if len(count) > 0 {
179
+		return len(count), err
180
+	}
181
+	return 0, err
176 182
 }

+ 14
- 0
models/model/ta_customer_course_qrcode.go 查看文件

@@ -0,0 +1,14 @@
1
+package model
2
+
3
+import (
4
+	"time"
5
+)
6
+
7
+type TaCustomerCourseQrcode struct {
8
+	CustomerQrcode   string    `xorm:"not null pk VARCHAR(64)"`
9
+	CustomerCourseId string    `xorm:"VARCHAR(64)"`
10
+	QrcodeType       string    `xorm:"VARCHAR(32)"`
11
+	CreateDate       time.Time `xorm:"DATETIME"`
12
+	InvalidDate      time.Time `xorm:"DATETIME"`
13
+	Status           int       `xorm:"SMALLINT(6)"`
14
+}

+ 1
- 1
models/statistics/other.go 查看文件

@@ -46,7 +46,7 @@ func (m *StatisticsDAO) GetDashboardSetting(userID string, userTypes []string) (
46 46
 	sql := `
47 47
 		SELECT DISTINCT
48 48
 			t.comp_id,
49
-			min(t.group) AS 'group',
49
+			t.group,
50 50
 			s.comp_name,
51 51
 			s.comp_type,
52 52
 			s.type_name

+ 16
- 0
models/verify/verify.go 查看文件

@@ -1,6 +1,8 @@
1 1
 package verify
2 2
 
3 3
 import (
4
+	"errors"
5
+	"spaceofcheng/services/models"
4 6
 	"spaceofcheng/services/models/model"
5 7
 	"spaceofcheng/services/utils"
6 8
 	"strconv"
@@ -191,3 +193,17 @@ WHERE
191 193
 	err := m.db.Sql(sql).Find(&customerCard)
192 194
 	return &customerCard[0], err
193 195
 }
196
+
197
+// GetCustomerCourseIdByQrcode 根据QRcode
198
+func (m *VerifyDAO) GetCustomerCourseIdByQrcode(qrcode string) (string, error) {
199
+	var customerQrcode []model.TaCustomerCourseQrcode
200
+	err := m.db.Where("customer_qrcode = ?", qrcode).And("status > ?", models.STATUS_DEL).Find(&customerQrcode)
201
+	if err != nil {
202
+		return "", err
203
+	}
204
+	if len(customerQrcode) > 0 {
205
+		return customerQrcode[0].CustomerCourseId, nil
206
+	}
207
+	return "", errors.New("无效二维码")
208
+
209
+}

+ 8
- 1
routers/common.go 查看文件

@@ -137,7 +137,8 @@ func getCommonRoutes() beego.LinkNamespace {
137 137
 
138 138
 		// casekey 案场钥匙
139 139
 		beego.NSRouter("/case/key", &cases.CaseController{}, "get:GetKeyList"),
140
-		beego.NSRouter("/case/key/:phone/:keyid", &cases.CaseController{}, "get:GetKeyList"),
140
+		beego.NSRouter("/case/key/:phone/:keyid", &cases.CaseController{}, "post:LockKeyByPhone"),
141
+		beego.NSRouter("/verify/case/key/:keyid/:customerid", &cases.CaseController{}, "post:LockKeyVerify"),
141 142
 		beego.NSRouter("/case/key", &cases.CaseController{}, "post:AddKeys"),
142 143
 		beego.NSRouter("/case/key/:keyid/:customerid/:customername", &cases.CaseController{}, "post:LockKey"),
143 144
 		beego.NSRouter("/case/unlock/:keyid", &cases.CaseController{}, "put:UnLockKey"),
@@ -260,6 +261,8 @@ func getCommonRoutes() beego.LinkNamespace {
260 261
 		beego.NSRouter("/card/:id", &card.CardController{}, "get:GetCardByIDForAdmin"),
261 262
 		beego.NSRouter("/card/:id", &card.CardController{}, "put:UpdateCard"),
262 263
 		beego.NSRouter("/card/:id/to/:users", &card.CardController{}, "post:GiveCard"),
264
+		// 赠送记录
265
+		beego.NSRouter("/card/record", &card.RecordController{}, "get:GetRecordList"),
263 266
 
264 267
 		// 文件
265 268
 		beego.NSRouter("/file", &controllers.BaseController{}, "post:FileUpload"),
@@ -303,5 +306,9 @@ func getCommonRoutes() beego.LinkNamespace {
303 306
 		beego.NSRouter("/statistics/cardcouponused/excel", &statistics.StatisticsController{}, "get:CardCouponUsedStatisticsExcel"),
304 307
 		beego.NSRouter("/statistics/cardcouponverify", &statistics.StatisticsController{}, "get:CardCouponVerifyStatistics"),
305 308
 		beego.NSRouter("/statistics/cardcouponverify/excel", &statistics.StatisticsController{}, "get:CardCouponVerifyStatisticsExcel"),
309
+
310
+		
311
+
312
+
306 313
 	)
307 314
 }

+ 44
- 0
service/card/record.go 查看文件

@@ -0,0 +1,44 @@
1
+package card
2
+
3
+import (
4
+	"spaceofcheng/services/models/card"
5
+	"spaceofcheng/services/utils"
6
+)
7
+
8
+// RecordServ 系统处理
9
+type RecordServ struct {
10
+	ctx       *utils.Context
11
+	dao       *card.RecordDAO
12
+}
13
+
14
+// NewRecordServ 初始化
15
+func NewRecordServ(ctx *utils.Context) *RecordServ {
16
+	return &RecordServ{
17
+		ctx:       ctx,
18
+		dao:       card.NewRecordDAO(ctx),
19
+	}
20
+}
21
+
22
+// 查询赠送记录
23
+func (s *RecordServ) GetRecordList(startDate string, endDate string, person string,page int,pageSize int) (map[string]interface{}, error) {
24
+
25
+	 info,err := s.dao.GetRecordList(startDate, endDate, person, page, pageSize)
26
+	 var total int
27
+	 if err != nil {
28
+		 return nil,err
29
+	 }
30
+
31
+	 if len(info) > 0 {
32
+		total = len(info)
33
+	}
34
+
35
+	return map[string]interface{}{
36
+		"list":     info,
37
+		"pagesize": pageSize,
38
+		"pagenum":  total,
39
+		"page":     page,
40
+	}, err
41
+
42
+}
43
+
44
+

+ 35
- 4
service/cases/key.go 查看文件

@@ -83,15 +83,17 @@ func (s *CaseServ) AddKeys(orgid, caseid string, beginnum, endnum int) error {
83 83
 
84 84
 // LockKeyByPhone 根据手机号绑定钥匙
85 85
 func (s *CaseServ) LockKeyByPhone(phone, keyId string) error {
86
-	var count int = 0
87 86
 	customer, err := s.customerdao.GetCustomerByPhone(phone)
88 87
 	if err != nil {
89 88
 		utils.LogError("根据手机号绑定钥匙失败: " + err.Error())
90 89
 		return errors.New("根据手机号绑定钥匙失败")
91 90
 	}
92
-	count, err = s.dao.CustomerIsBind(customer.CustomerId)
93
-	if err != nil {
94
-		utils.LogError("绑定钥匙失败: " + err.Error())
91
+	if customer == nil {
92
+		return errors.New("非注册用户不可绑定")
93
+	}
94
+	count, err1 := s.dao.CustomerIsBind(customer.CustomerId)
95
+	if err1 != nil {
96
+		utils.LogError("绑定钥匙失败: " + err1.Error())
95 97
 		return errors.New("绑定钥匙失败")
96 98
 	}
97 99
 	if count > 0 {
@@ -149,6 +151,35 @@ func (s *CaseServ) LockKey(keyId, customerId, customerName string) error {
149 151
 	return nil
150 152
 }
151 153
 
154
+// LockKeyVerify 二维码核销绑定钥匙
155
+func (s *CaseServ) LockKeyVerify(keyId, customerId string) error {
156
+	customer, err := s.customerdao.GetCustomerByID(customerId)
157
+	if err != nil {
158
+		utils.LogError("绑定钥匙失败: " + err.Error())
159
+		return errors.New("绑定钥匙失败")
160
+	}
161
+	count, err := s.dao.CustomerIsBind(customerId)
162
+	if err != nil {
163
+		utils.LogError("绑定钥匙失败: " + err.Error())
164
+		return errors.New("绑定钥匙失败")
165
+	}
166
+	if count > 0 {
167
+		return errors.New("用户已绑定钥匙,不可重复绑定")
168
+	}
169
+	err = s.dao.BindKeyToUser(keyId, customerId, customer.CustomerName)
170
+	if err != nil {
171
+		utils.LogError("绑定钥匙失败: " + err.Error())
172
+		return errors.New("绑定钥匙失败")
173
+	}
174
+	err = s.dao.UpdateKeyState(keyId, 1)
175
+	if err != nil {
176
+		utils.LogError("绑定钥匙失败: " + err.Error())
177
+		return errors.New("绑定钥匙失败")
178
+	}
179
+	return nil
180
+
181
+}
182
+
152 183
 // DelKey 刪除
153 184
 func (s *CaseServ) DelKey(keyid string) error {
154 185
 	use, err := s.dao.GetCurrentKey(keyid)

+ 6
- 1
service/verify/verify.go 查看文件

@@ -38,6 +38,11 @@ func (s *VerifyServ) GetCustomerCourseDetailById(id, caseids string, page, pageS
38 38
 	if page == 0 {
39 39
 		page = 1
40 40
 	}
41
+	// id, err := s.dao.GetCustomerCourseIdByQrcode(qrcode)
42
+	// if err != nil {
43
+	// 	utils.LogError("获取列表失败: " + err.Error())
44
+	// 	return nil, errors.New("获取列表失败")
45
+	// }
41 46
 	customerDetail, err := s.dao.GetCustomerCourseList(id, caseids, page, pageSize)
42 47
 	if err != nil {
43 48
 		utils.LogError("获取列表失败: " + err.Error())
@@ -81,7 +86,7 @@ func (s *VerifyServ) GetCustomerCourseDetailByTel(tel, caseids string, page, pag
81 86
 		return nil, errors.New("获取课程列表失败")
82 87
 	}
83 88
 	if len(customerDetail) == 0 {
84
-		return nil, nil
89
+		return nil, errors.New("今日无可核销课程")
85 90
 	}
86 91
 	customerID := customerDetail[0].CustomerId
87 92
 	total, err := s.dao.GetCustomerCourseListByTelCount(tel, caseids)