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

+ 4
- 4
controllers/auth.go 查看文件

@@ -39,10 +39,10 @@ func (c *BaseController) authenticate() {
39 39
 
40 40
 // SetTokenExipre 设置 token 过期
41 41
 func (c *BaseController) SetTokenExipre() {
42
-	token := c.Context.Get("token")
43
-	if token != nil {
44
-		c.serv.UpdateTokenExpire(token.(string))
45
-	}
42
+	// token := c.Context.Get("token")
43
+	// if token != nil {
44
+	// 	c.serv.UpdateTokenExpire(token.(string))
45
+	// }
46 46
 
47 47
 	c.Context.Set("token", "")
48 48
 }

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

@@ -9,6 +9,7 @@ import (
9 9
 	"spaceofcheng/services/service/card"
10 10
 	"spaceofcheng/services/utils"
11 11
 	"strings"
12
+	"tolet/models/model"
12 13
 )
13 14
 
14 15
 // CardController 商品
@@ -210,3 +211,25 @@ func (c *CardController) GetCaseUsableCard() {
210 211
 
211 212
 	c.ResponseJSON(cards)
212 213
 }
214
+
215
+// ReceiveCard 卡领取
216
+func (c *CardController) ReceiveCard() {
217
+	id := c.GetString(":id")
218
+	saleid := c.GetString("saleid")
219
+	serialcode := c.GetString("serialcode")
220
+	cust := c.Context.Get("customer").(model.TaCustomer)
221
+
222
+	if cust.Phone == "" {
223
+		c.ResponseError(
224
+			errors.New("用户未登录或绑定"),
225
+			http.StatusNotAcceptable,
226
+		)
227
+	}
228
+
229
+	err := c.serv.ReceiveCard(id, saleid, serialcode)
230
+	if err != nil {
231
+		c.ResponseError(err)
232
+	}
233
+
234
+	c.ResponseJSON("领取成功!")
235
+}

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

@@ -9,6 +9,7 @@ import (
9 9
 	"spaceofcheng/services/service/coupon"
10 10
 	"spaceofcheng/services/utils"
11 11
 	"strings"
12
+	"tolet/models/model"
12 13
 )
13 14
 
14 15
 // CouponController 商品
@@ -219,6 +220,47 @@ func (c *CouponController) GetCaseUsableCoupon() {
219 220
 	if err != nil {
220 221
 		c.ResponseError(err)
221 222
 	}
222
-
223 223
 	c.ResponseJSON(coupons)
224 224
 }
225
+
226
+// ReceiveCoupon 卡领取
227
+func (c *CouponController) ReceiveCoupon() {
228
+	id := c.GetString(":id")
229
+	saleid := c.GetString("saleid")
230
+	serialcode := c.GetString("serialcode")
231
+	cust := c.Context.Get("customer").(model.TaCustomer)
232
+
233
+	if cust.Phone == "" {
234
+		c.ResponseError(
235
+			errors.New("用户未登录或绑定"),
236
+			http.StatusNotAcceptable,
237
+		)
238
+	}
239
+
240
+	err := c.serv.ReceiveCoupon(id, saleid, serialcode)
241
+	if err != nil {
242
+		c.ResponseError(err)
243
+	}
244
+
245
+	c.ResponseJSON("领取成功!")
246
+}
247
+
248
+// ChannelReceiveCoupon 渠道端卡领取
249
+func (c *CouponController) ChannelReceiveCoupon() {
250
+	id := c.GetString(":id")
251
+	cust := c.Context.Get("customer").(model.TaCustomer)
252
+
253
+	if cust.Phone == "" {
254
+		c.ResponseError(
255
+			errors.New("用户未登录或绑定"),
256
+			http.StatusNotAcceptable,
257
+		)
258
+	}
259
+
260
+	err := c.serv.ChannelReceiveCoupon(id)
261
+	if err != nil {
262
+		c.ResponseError(err)
263
+	}
264
+
265
+	c.ResponseJSON("领取成功!")
266
+}

+ 18
- 0
controllers/gymcard/gymcard.go 查看文件

@@ -130,3 +130,21 @@ func (c *GymcardController) VerifyCustomerGymcard() {
130 130
 	}
131 131
 	c.ResponseJSON("核销成功")
132 132
 }
133
+
134
+// GiveGymToCustomer 赠送健身卡给客户
135
+func (c *GymcardController) GiveGymToCustomer() {
136
+	id := c.GetString(":id")
137
+	if id == "" {
138
+		c.ResponseError(errors.New("未指定卡"))
139
+	}
140
+
141
+	uids := c.GetString(":users")
142
+	if uids == "" {
143
+		c.ResponseError(errors.New("未指定赠送人"))
144
+	}
145
+	err := c.dao.GiveCardToCustomer(id, uids)
146
+	if err != nil {
147
+		c.ResponseError(err)
148
+	}
149
+	c.ResponseJSON("赠送成功!")
150
+}

+ 338
- 0
log/common.log 查看文件

@@ -9,3 +9,341 @@
9 9
 		JOIN sys_user_type s ON t.user_id = s.user_id
10 10
 		JOIN td_use' at line 4
11 11
 2018/09/14 18:49:55 [E] 解析 Token 失败: token contains an invalid number of segments
12
+2018/09/14 18:51:10 [E] 解析 Token 失败: token contains an invalid number of segments
13
+2018/09/14 18:51:28 [E] 解析 Token 失败: token contains an invalid number of segments
14
+2018/09/14 18:51:50 [E] 解析 Token 失败: token contains an invalid number of segments
15
+2018/09/14 18:51:57 [E] 解析 Token 失败: token contains an invalid number of segments
16
+2018/09/14 18:52:05 [E] 解析 Token 失败: token contains an invalid number of segments
17
+2018/09/14 18:53:02 [E] 用户没有设置默认案场
18
+2018/09/14 18:56:00 [E] 获取优惠券失败: a pointer to a pointer is not allowed
19
+2018/09/14 18:56:01 [E] 获取优惠券失败: a pointer to a pointer is not allowed
20
+2018/09/14 18:57:23 [E] 获取优惠券失败: Error 1146: Table 'spaceofcheng.ta_coupon_coupon' doesn't exist
21
+2018/09/14 18:57:29 [E] 获取优惠券失败: Error 1146: Table 'spaceofcheng.ta_coupon_coupon' doesn't exist
22
+2018/09/14 18:57:55 [E] 获取优惠券失败: 无优惠券信息
23
+2018/09/14 18:57:56 [E] 获取优惠券失败: 无优惠券信息
24
+2018/09/14 18:59:40 [E] 获取人员信息失败: 您没有权限查看此用户的数据!
25
+2018/09/14 19:03:57 [E] 用户没有设置默认案场
26
+2018/09/14 19:04:01 [E] 用户没有设置默认案场
27
+2018/09/14 19:04:04 [E] 用户没有设置默认案场
28
+2018/09/14 19:04:06 [E] 用户没有设置默认案场
29
+2018/09/14 19:04:08 [E] 用户没有设置默认案场
30
+2018/09/14 19:04:12 [E] 用户没有设置默认案场
31
+2018/09/14 19:04:14 [E] 用户没有设置默认案场
32
+2018/09/14 19:04:15 [E] 用户没有设置默认案场
33
+2018/09/14 19:04:15 [E] 用户没有设置默认案场
34
+2018/09/14 19:04:18 [E] 用户没有设置默认案场
35
+2018/09/14 19:04:31 [E] 用户没有设置默认案场
36
+2018/09/14 19:04:33 [E] 用户没有设置默认案场
37
+2018/09/14 19:04:35 [E] 用户没有设置默认案场
38
+2018/09/14 19:04:49 [E] 用户没有设置默认案场
39
+2018/09/14 19:06:08 [E] 用户没有设置默认案场
40
+2018/09/14 19:06:12 [E] 用户没有设置默认案场
41
+2018/09/14 19:06:12 [E] 用户没有设置默认案场
42
+2018/09/14 19:06:13 [E] 用户没有设置默认案场
43
+2018/09/14 19:06:14 [E] 用户没有设置默认案场
44
+2018/09/14 19:33:44 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
45
+2018/09/14 19:33:44 [E] 获取组织信息失败: 没有查询到机构信息
46
+2018/09/14 19:33:48 [E] 用户没有设置默认案场
47
+2018/09/14 19:33:48 [E] 用户没有设置默认案场
48
+2018/09/14 19:33:48 [E] 用户没有设置默认案场
49
+2018/09/14 19:33:50 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
50
+2018/09/14 19:33:50 [E] 获取组织信息失败: 没有查询到机构信息
51
+2018/09/14 19:33:55 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
52
+2018/09/14 19:33:55 [E] 获取组织信息失败: 没有查询到机构信息
53
+2018/09/14 19:41:54 [E] 用户没有设置默认案场
54
+2018/09/14 19:41:54 [E] 用户没有设置默认案场
55
+2018/09/14 19:41:55 [E] 用户没有设置默认案场
56
+2018/09/14 19:42:03 [E] 用户没有设置默认案场
57
+2018/09/14 19:42:03 [E] 用户没有设置默认案场
58
+2018/09/14 19:42:03 [E] 用户没有设置默认案场
59
+2018/09/14 19:42:44 [E] 用户没有设置默认案场
60
+2018/09/14 19:42:44 [E] 用户没有设置默认案场
61
+2018/09/14 19:42:45 [E] 用户没有设置默认案场
62
+2018/09/14 19:43:42 [E] 用户没有设置默认案场
63
+2018/09/14 19:43:42 [E] 用户没有设置默认案场
64
+2018/09/14 19:43:42 [E] 用户没有设置默认案场
65
+2018/09/14 19:43:57 [E] 用户没有设置默认案场
66
+2018/09/14 19:43:57 [E] 用户没有设置默认案场
67
+2018/09/14 19:43:58 [E] 用户没有设置默认案场
68
+2018/09/14 19:44:47 [E] 用户没有设置默认案场
69
+2018/09/14 19:44:47 [E] 用户没有设置默认案场
70
+2018/09/14 19:44:47 [E] 用户没有设置默认案场
71
+2018/09/14 19:45:28 [E] 用户没有设置默认案场
72
+2018/09/14 19:45:28 [E] 用户没有设置默认案场
73
+2018/09/14 19:45:28 [E] 用户没有设置默认案场
74
+2018/09/14 20:11:26 [E] 用户没有设置默认案场
75
+2018/09/14 20:11:28 [E] 用户没有设置默认案场
76
+2018/09/14 20:11:28 [E] 用户没有设置默认案场
77
+2018/09/14 20:11:39 [E] 用户没有设置默认案场
78
+2018/09/14 20:11:39 [E] 用户没有设置默认案场
79
+2018/09/14 20:11:40 [E] 用户没有设置默认案场
80
+2018/09/14 20:11:42 [E] 用户没有设置默认案场
81
+2018/09/14 20:11:42 [E] 用户没有设置默认案场
82
+2018/09/14 20:11:42 [E] 用户没有设置默认案场
83
+2018/09/14 20:11:43 [E] 用户没有设置默认案场
84
+2018/09/14 20:11:43 [E] 用户没有设置默认案场
85
+2018/09/14 20:11:43 [E] 用户没有设置默认案场
86
+2018/09/14 20:11:52 [E] 用户没有设置默认案场
87
+2018/09/14 20:12:02 [E] 用户没有设置默认案场
88
+2018/09/14 20:13:30 [E] 用户没有设置默认案场
89
+2018/09/14 20:13:30 [E] 用户没有设置默认案场
90
+2018/09/14 20:13:30 [E] 用户没有设置默认案场
91
+2018/09/14 20:13:40 [E] 用户没有设置默认案场
92
+2018/09/14 20:13:40 [E] 用户没有设置默认案场
93
+2018/09/14 20:13:46 [E] 用户没有设置默认案场
94
+2018/09/14 20:13:46 [E] 用户没有设置默认案场
95
+2018/09/14 20:13:46 [E] 用户没有设置默认案场
96
+2018/09/14 20:13:55 [E] 用户没有设置默认案场
97
+2018/09/14 20:14:26 [E] 用户没有设置默认案场
98
+2018/09/14 20:14:29 [E] 用户没有设置默认案场
99
+2018/09/14 20:14:29 [E] 用户没有设置默认案场
100
+2018/09/14 20:14:29 [E] 用户没有设置默认案场
101
+2018/09/14 20:14:30 [E] 用户没有设置默认案场
102
+2018/09/14 20:14:30 [E] 用户没有设置默认案场
103
+2018/09/14 20:14:30 [E] 用户没有设置默认案场
104
+2018/09/14 20:14:36 [E] 用户没有设置默认案场
105
+2018/09/14 20:15:35 [E] 用户没有设置默认案场
106
+2018/09/14 20:15:35 [E] 用户没有设置默认案场
107
+2018/09/14 20:15:35 [E] 用户没有设置默认案场
108
+2018/09/14 20:15:41 [E] 用户没有设置默认案场
109
+2018/09/14 20:15:41 [E] 用户没有设置默认案场
110
+2018/09/14 20:15:42 [E] 用户没有设置默认案场
111
+2018/09/14 20:15:42 [E] 用户没有设置默认案场
112
+2018/09/14 20:15:46 [E] 用户没有设置默认案场
113
+2018/09/14 20:24:55 [E] 用户没有设置默认案场
114
+2018/09/14 20:24:55 [E] 用户没有设置默认案场
115
+2018/09/14 20:24:55 [E] 用户没有设置默认案场
116
+2018/09/14 22:08:53 [E] 用户没有设置默认案场
117
+2018/09/14 22:08:56 [E] 用户没有设置默认案场
118
+2018/09/14 22:08:56 [E] 用户没有设置默认案场
119
+2018/09/14 22:08:57 [E] 用户没有设置默认案场
120
+2018/09/14 22:08:57 [E] 用户没有设置默认案场
121
+2018/09/14 22:08:58 [E] 用户没有设置默认案场
122
+2018/09/14 22:10:27 [E] 用户没有设置默认案场
123
+2018/09/14 22:10:28 [E] 用户没有设置默认案场
124
+2018/09/14 22:10:28 [E] 用户没有设置默认案场
125
+2018/09/14 22:10:30 [E] 用户没有设置默认案场
126
+2018/09/14 22:10:32 [E] 用户没有设置默认案场
127
+2018/09/14 22:10:32 [E] 用户没有设置默认案场
128
+2018/09/14 22:10:36 [E] 用户没有设置默认案场
129
+2018/09/14 22:10:37 [E] 用户没有设置默认案场
130
+2018/09/14 22:10:37 [E] 用户没有设置默认案场
131
+2018/09/14 22:10:39 [E] 用户没有设置默认案场
132
+2018/09/14 22:10:42 [E] 用户没有设置默认案场
133
+2018/09/14 22:10:43 [E] 用户没有设置默认案场
134
+2018/09/14 22:11:18 [E] 用户没有设置默认案场
135
+2018/09/14 22:11:18 [E] 用户没有设置默认案场
136
+2018/09/14 22:11:32 [E] 用户没有设置默认案场
137
+2018/09/14 22:11:48 [E] 用户没有设置默认案场
138
+2018/09/14 22:11:56 [E] 用户没有设置默认案场
139
+2018/09/14 22:11:56 [E] 用户没有设置默认案场
140
+2018/09/14 22:13:30 [E] 用户没有设置默认案场
141
+2018/09/14 22:13:32 [E] 用户没有设置默认案场
142
+2018/09/14 22:13:32 [E] 用户没有设置默认案场
143
+2018/09/14 22:15:12 [E] 用户没有设置默认案场
144
+2018/09/14 22:15:12 [E] 用户没有设置默认案场
145
+2018/09/14 22:15:22 [E] 用户没有设置默认案场
146
+2018/09/14 22:15:23 [E] 用户没有设置默认案场
147
+2018/09/14 22:15:24 [E] 用户没有设置默认案场
148
+2018/09/14 22:15:47 [E] 用户没有设置默认案场
149
+2018/09/14 22:15:47 [E] 用户没有设置默认案场
150
+2018/09/14 22:15:52 [E] 用户没有设置默认案场
151
+2018/09/14 22:15:55 [E] 用户没有设置默认案场
152
+2018/09/14 22:15:55 [E] 用户没有设置默认案场
153
+2018/09/14 22:15:57 [E] 用户没有设置默认案场
154
+2018/09/14 22:15:57 [E] 用户没有设置默认案场
155
+2018/09/14 22:16:05 [E] 用户没有设置默认案场
156
+2018/09/14 22:16:06 [E] 用户没有设置默认案场
157
+2018/09/14 22:16:06 [E] 用户没有设置默认案场
158
+2018/09/14 22:16:08 [E] 用户没有设置默认案场
159
+2018/09/14 22:16:08 [E] 用户没有设置默认案场
160
+2018/09/14 22:16:54 [E] 用户没有设置默认案场
161
+2018/09/14 22:16:54 [E] 用户没有设置默认案场
162
+2018/09/14 22:16:55 [E] 用户没有设置默认案场
163
+2018/09/14 22:17:17 [E] 用户没有设置默认案场
164
+2018/09/14 22:17:17 [E] 用户没有设置默认案场
165
+2018/09/14 22:17:18 [E] 用户没有设置默认案场
166
+2018/09/14 22:17:48 [E] 用户没有设置默认案场
167
+2018/09/14 22:17:48 [E] 用户没有设置默认案场
168
+2018/09/14 22:17:49 [E] 用户没有设置默认案场
169
+2018/09/14 22:18:43 [E] 用户没有设置默认案场
170
+2018/09/14 22:18:43 [E] 用户没有设置默认案场
171
+2018/09/14 22:18:43 [E] 用户没有设置默认案场
172
+2018/09/14 22:19:23 [E] 用户没有设置默认案场
173
+2018/09/14 22:19:23 [E] 用户没有设置默认案场
174
+2018/09/14 22:19:24 [E] 用户没有设置默认案场
175
+2018/09/14 22:19:43 [E] 用户没有设置默认案场
176
+2018/09/14 22:19:43 [E] 用户没有设置默认案场
177
+2018/09/14 22:19:44 [E] 用户没有设置默认案场
178
+2018/09/14 22:20:23 [E] 用户没有设置默认案场
179
+2018/09/14 22:20:24 [E] 用户没有设置默认案场
180
+2018/09/14 22:24:13 [E] 用户没有设置默认案场
181
+2018/09/14 22:24:24 [E] 用户没有设置默认案场
182
+2018/09/14 22:24:31 [E] 用户没有设置默认案场
183
+2018/09/14 22:24:31 [E] 用户没有设置默认案场
184
+2018/09/14 22:27:41 [E] 用户没有设置默认案场
185
+2018/09/14 22:27:41 [E] 用户没有设置默认案场
186
+2018/09/14 22:27:44 [E] 用户没有设置默认案场
187
+2018/09/14 22:27:46 [E] 用户没有设置默认案场
188
+2018/09/14 22:27:47 [E] 用户没有设置默认案场
189
+2018/09/14 22:27:49 [E] 用户没有设置默认案场
190
+2018/09/14 22:27:52 [E] 用户没有设置默认案场
191
+2018/09/14 22:27:53 [E] 用户没有设置默认案场
192
+2018/09/14 22:27:54 [E] 用户没有设置默认案场
193
+2018/09/14 22:27:56 [E] 用户没有设置默认案场
194
+2018/09/14 22:27:56 [E] 用户没有设置默认案场
195
+2018/09/14 22:27:58 [E] 用户没有设置默认案场
196
+2018/09/14 22:28:02 [E] 用户没有设置默认案场
197
+2018/09/14 22:28:03 [E] 用户没有设置默认案场
198
+2018/09/14 22:28:03 [E] 用户没有设置默认案场
199
+2018/09/14 22:28:06 [E] 用户没有设置默认案场
200
+2018/09/14 22:28:06 [E] 用户没有设置默认案场
201
+2018/09/14 22:28:10 [E] 用户没有设置默认案场
202
+2018/09/14 22:28:12 [E] 用户没有设置默认案场
203
+2018/09/14 22:28:12 [E] 用户没有设置默认案场
204
+2018/09/14 22:28:14 [E] 用户没有设置默认案场
205
+2018/09/14 22:28:15 [E] 用户没有设置默认案场
206
+2018/09/14 22:28:24 [E] 用户没有设置默认案场
207
+2018/09/14 22:28:24 [E] 用户没有设置默认案场
208
+2018/09/14 22:28:35 [E] 用户没有设置默认案场
209
+2018/09/14 22:30:28 [E] 用户没有设置默认案场
210
+2018/09/14 22:30:28 [E] 用户没有设置默认案场
211
+2018/09/14 22:30:28 [E] 用户没有设置默认案场
212
+2018/09/14 22:30:30 [E] 用户没有设置默认案场
213
+2018/09/14 22:30:32 [E] 用户没有设置默认案场
214
+2018/09/14 22:30:32 [E] 用户没有设置默认案场
215
+2018/09/14 22:31:11 [E] 用户没有设置默认案场
216
+2018/09/14 22:31:11 [E] 用户没有设置默认案场
217
+2018/09/14 22:31:14 [E] 用户没有设置默认案场
218
+2018/09/14 22:31:14 [E] 用户没有设置默认案场
219
+2018/09/14 22:31:17 [E] 用户没有设置默认案场
220
+2018/09/14 22:31:17 [E] 用户没有设置默认案场
221
+2018/09/14 22:31:17 [E] 用户没有设置默认案场
222
+2018/09/14 22:31:20 [E] 用户没有设置默认案场
223
+2018/09/14 22:31:21 [E] 用户没有设置默认案场
224
+2018/09/14 22:31:21 [E] 用户没有设置默认案场
225
+2018/09/14 22:31:22 [E] 用户没有设置默认案场
226
+2018/09/14 22:31:22 [E] 用户没有设置默认案场
227
+2018/09/14 22:31:22 [E] 用户没有设置默认案场
228
+2018/09/14 22:31:25 [E] 用户没有设置默认案场
229
+2018/09/14 22:31:25 [E] 用户没有设置默认案场
230
+2018/09/14 22:31:31 [E] 用户没有设置默认案场
231
+2018/09/14 22:31:34 [E] 用户没有设置默认案场
232
+2018/09/14 22:31:34 [E] 用户没有设置默认案场
233
+2018/09/14 22:31:51 [E] 用户没有设置默认案场
234
+2018/09/14 22:31:51 [E] 课程截止时间必须大于开始时间!
235
+2018/09/14 22:32:05 [E] 用户没有设置默认案场
236
+2018/09/14 22:32:05 [E] 用户没有设置默认案场
237
+2018/09/14 22:32:05 [E] 用户没有设置默认案场
238
+2018/09/14 22:32:19 [E] 用户没有设置默认案场
239
+2018/09/14 22:32:23 [E] 用户没有设置默认案场
240
+2018/09/14 22:32:24 [E] 用户没有设置默认案场
241
+2018/09/14 22:32:37 [E] 用户没有设置默认案场
242
+2018/09/14 22:32:38 [E] 用户没有设置默认案场
243
+2018/09/14 22:32:45 [E] 用户没有设置默认案场
244
+2018/09/14 22:33:03 [E] 用户没有设置默认案场
245
+2018/09/14 22:33:03 [E] 用户没有设置默认案场
246
+2018/09/14 22:33:10 [E] 用户没有设置默认案场
247
+2018/09/14 22:33:11 [E] 用户没有设置默认案场
248
+2018/09/14 22:33:15 [E] 用户没有设置默认案场
249
+2018/09/14 22:33:15 [E] 用户没有设置默认案场
250
+2018/09/14 22:33:18 [E] 用户没有设置默认案场
251
+2018/09/14 22:33:18 [E] 用户没有设置默认案场
252
+2018/09/14 22:33:35 [E] 用户没有设置默认案场
253
+2018/09/14 22:33:35 [E] 用户没有设置默认案场
254
+2018/09/14 22:33:48 [E] 用户没有设置默认案场
255
+2018/09/14 22:33:50 [E] 用户没有设置默认案场
256
+2018/09/14 22:33:52 [E] 用户没有设置默认案场
257
+2018/09/14 22:33:52 [E] 用户没有设置默认案场
258
+2018/09/14 22:33:54 [E] 用户没有设置默认案场
259
+2018/09/14 22:33:54 [E] 用户没有设置默认案场
260
+2018/09/14 22:33:57 [E] 用户没有设置默认案场
261
+2018/09/14 22:33:58 [E] 用户没有设置默认案场
262
+2018/09/14 22:33:58 [E] 用户没有设置默认案场
263
+2018/09/14 22:33:59 [E] 用户没有设置默认案场
264
+2018/09/14 22:34:02 [E] 用户没有设置默认案场
265
+2018/09/14 22:34:38 [E] 用户没有设置默认案场
266
+2018/09/14 22:34:41 [E] 用户没有设置默认案场
267
+2018/09/14 22:35:24 [E] 用户没有设置默认案场
268
+2018/09/14 22:35:24 [E] 接收优惠券信息失败: parsing time """" as ""2006-01-02T15:04:05Z07:00"": cannot parse """ as "2006"
269
+2018/09/14 22:36:00 [E] 用户没有设置默认案场
270
+2018/09/14 22:36:00 [E] 接收优惠券信息失败: parsing time """" as ""2006-01-02T15:04:05Z07:00"": cannot parse """ as "2006"
271
+2018/09/14 22:39:29 [E] 用户没有设置默认案场
272
+2018/09/14 22:39:36 [E] 用户没有设置默认案场
273
+2018/09/14 22:39:37 [E] 用户没有设置默认案场
274
+2018/09/14 22:39:48 [E] 用户没有设置默认案场
275
+2018/09/14 22:39:49 [E] 用户没有设置默认案场
276
+2018/09/14 22:39:50 [E] 用户没有设置默认案场
277
+2018/09/14 22:39:50 [E] 用户没有设置默认案场
278
+2018/09/14 22:39:51 [E] 用户没有设置默认案场
279
+2018/09/14 22:39:52 [E] 用户没有设置默认案场
280
+2018/09/14 22:39:53 [E] 用户没有设置默认案场
281
+2018/09/14 22:39:53 [E] 用户没有设置默认案场
282
+2018/09/15 11:29:11 [E] 用户没有设置默认案场
283
+2018/09/15 11:29:47 [E] 用户没有设置默认案场
284
+2018/09/15 11:30:22 [E] 用户没有设置默认案场
285
+2018/09/15 11:30:22 [E] 用户没有设置默认案场
286
+2018/09/15 11:30:23 [E] 用户没有设置默认案场
287
+2018/09/15 11:30:23 [E] 用户没有设置默认案场
288
+2018/09/15 11:30:30 [E] 用户没有设置默认案场
289
+2018/09/15 11:30:31 [E] 用户没有设置默认案场
290
+2018/09/15 11:30:31 [E] 用户没有设置默认案场
291
+2018/09/15 11:30:32 [E] 用户没有设置默认案场
292
+2018/09/15 11:30:33 [E] 用户没有设置默认案场
293
+2018/09/15 11:30:33 [E] 用户没有设置默认案场
294
+2018/09/15 11:36:00 [E] 用户没有设置默认案场
295
+2018/09/15 11:36:00 [E] 用户没有设置默认案场
296
+2018/09/15 11:36:10 [E] 用户没有设置默认案场
297
+2018/09/15 11:36:11 [E] 用户没有设置默认案场
298
+2018/09/15 11:36:13 [E] 用户没有设置默认案场
299
+2018/09/15 11:36:13 [E] 用户没有设置默认案场
300
+2018/09/15 11:36:19 [E] 用户没有设置默认案场
301
+2018/09/15 11:36:19 [E] 用户没有设置默认案场
302
+2018/09/15 11:36:50 [E] 用户没有设置默认案场
303
+2018/09/15 11:36:50 [E] 用户没有设置默认案场
304
+2018/09/15 11:36:54 [E] 用户没有设置默认案场
305
+2018/09/15 11:36:54 [E] 用户没有设置默认案场
306
+2018/09/15 11:36:54 [E] 用户没有设置默认案场
307
+2018/09/15 11:37:07 [E] 用户没有设置默认案场
308
+2018/09/15 11:37:08 [E] 用户没有设置默认案场
309
+2018/09/15 11:37:10 [E] 用户没有设置默认案场
310
+2018/09/15 11:37:10 [E] 用户没有设置默认案场
311
+2018/09/15 11:37:10 [E] 用户没有设置默认案场
312
+2018/09/15 11:37:18 [E] 用户没有设置默认案场
313
+2018/09/15 11:37:18 [E] 用户没有设置默认案场
314
+2018/09/15 11:37:23 [E] 用户没有设置默认案场
315
+2018/09/15 11:37:23 [E] 用户没有设置默认案场
316
+2018/09/15 11:37:23 [E] 用户没有设置默认案场
317
+2018/09/15 11:37:32 [E] 用户没有设置默认案场
318
+2018/09/15 11:37:36 [E] 用户没有设置默认案场
319
+2018/09/15 11:45:20 [E] 用户没有设置默认案场
320
+2018/09/15 11:45:22 [E] 用户没有设置默认案场
321
+2018/09/15 11:45:22 [E] 用户没有设置默认案场
322
+2018/09/15 11:46:04 [E] 用户没有设置默认案场
323
+2018/09/15 11:46:04 [E] 用户没有设置默认案场
324
+2018/09/15 11:46:11 [E] 用户没有设置默认案场
325
+2018/09/15 11:46:11 [E] 用户没有设置默认案场
326
+2018/09/15 11:46:16 [E] 用户没有设置默认案场
327
+2018/09/15 11:46:16 [E] 用户没有设置默认案场
328
+2018/09/15 11:46:20 [E] 用户没有设置默认案场
329
+2018/09/15 11:46:23 [E] 用户没有设置默认案场
330
+2018/09/15 11:46:56 [E] 用户没有设置默认案场
331
+2018/09/15 11:47:01 [E] 用户没有设置默认案场
332
+2018/09/15 11:47:25 [E] 用户没有设置默认案场
333
+2018/09/15 11:47:25 [E] 用户没有设置默认案场
334
+2018/09/15 11:47:36 [E] 用户没有设置默认案场
335
+2018/09/15 11:47:36 [E] 用户没有设置默认案场
336
+2018/09/15 13:28:31 [E] 用户没有设置默认案场
337
+2018/09/15 13:28:34 [E] 用户没有设置默认案场
338
+2018/09/15 13:29:21 [E] 用户没有设置默认案场
339
+2018/09/15 13:29:56 [E] 用户没有设置默认案场
340
+2018/09/15 13:30:01 [E] 用户没有设置默认案场
341
+2018/09/15 13:30:04 [E] 用户没有设置默认案场
342
+2018/09/15 13:30:04 [E] 用户没有设置默认案场
343
+2018/09/15 13:30:07 [E] 用户没有设置默认案场
344
+2018/09/15 13:30:10 [E] 用户没有设置默认案场
345
+2018/09/15 13:45:16 [E] 用户没有设置默认案场
346
+2018/09/15 13:45:16 [E] 用户没有设置默认案场
347
+2018/09/15 13:45:18 [E] 用户没有设置默认案场
348
+2018/09/15 13:45:24 [E] 用户没有设置默认案场
349
+2018/09/15 13:45:24 [E] 用户没有设置默认案场

+ 28
- 5
models/card/card.go 查看文件

@@ -10,8 +10,6 @@ import (
10 10
 	"strings"
11 11
 	"time"
12 12
 
13
-	"github.com/astaxie/beego"
14
-
15 13
 	"github.com/go-xorm/xorm"
16 14
 	"github.com/yl10/kit/guid"
17 15
 )
@@ -110,6 +108,13 @@ func (m *CardDAO) AddCard(card *model.TaCouponCard) error {
110 108
 	return nil
111 109
 }
112 110
 
111
+// GetCardInfoByID 获取卡信息
112
+func (m *CardDAO) GetCardInfoByID(cardid string) (*model.TaCouponCard, error) {
113
+	var card = model.TaCouponCard{}
114
+	_, err := m.db.Where("card_id=?", cardid).Get(&card)
115
+	return &card, err
116
+}
117
+
113 118
 // UpdateCard 更新体验卡
114 119
 func (m *CardDAO) UpdateCard(card *model.TaCouponCard, cols []string) error {
115 120
 	if card.CardId == "" {
@@ -218,22 +223,27 @@ func (m *CardDAO) CheckCustCard(custID, CardID string, startDate, endDate time.T
218 223
 type CaseUsableCard struct {
219 224
 	model.TaCouponCard `xorm:"extends"`
220 225
 	CustomerCard       []model.TaCustomerCard
226
+	Share              *model.TaExperienceCardShare
221 227
 }
222 228
 
223 229
 // GetCaseUsableCard 获取案场可用卡信息
224 230
 func (m *CardDAO) GetCaseUsableCard(caseid, userid string, page, pageSize int) ([]CaseUsableCard, error) {
225 231
 	var cards []CaseUsableCard
226 232
 	sql := `select * from ta_coupon_card where case_id=? and status=? and end_date>now() order by create_date limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
227
-	beego.Error(sql)
228 233
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL).Find(&cards)
229
-	if userid != "" {
230
-		for inx, card := range cards {
234
+	for inx, card := range cards {
235
+		if userid != "" {
231 236
 			cCards, err := m.GetCustomerCardByCardAndUser(card.CardId, userid)
232 237
 			if err != nil {
233 238
 				return nil, err
234 239
 			}
235 240
 			cards[inx].CustomerCard = cCards
236 241
 		}
242
+		share, err := m.GetCardShareByCardID(card.CardId)
243
+		if err != nil {
244
+			return nil, err
245
+		}
246
+		cards[inx].Share = share
237 247
 	}
238 248
 	return cards, err
239 249
 }
@@ -349,3 +359,16 @@ func (m *CardDAO) GetCustomerCardByID(id string) (*CustomerCardWithShare, error)
349 359
 	customerCard.Share = share
350 360
 	return customerCard, err
351 361
 }
362
+
363
+// CheckBySerialCode 根据批次码判断
364
+func (m *CardDAO) CheckBySerialCode(cardid, code string) (bool, error) {
365
+	var customerCards []model.TaCustomerCard
366
+	err := m.db.Where("card_id=?", cardid).And("serial_code=?", code).Find(&customerCards)
367
+	if err != nil {
368
+		return false, err
369
+	}
370
+	if len(customerCards) == 0 {
371
+		return true, nil
372
+	}
373
+	return false, nil
374
+}

+ 33
- 13
models/coupon/coupon.go 查看文件

@@ -76,15 +76,15 @@ func (m *CouponDAO) GetCouponInfoByID(id string) (*CouponInfo, error) {
76 76
 	}
77 77
 
78 78
 	// 分享
79
-	share := new(model.TaCouponShare)
80
-	if _, err := m.db.Where("coupon_id=?", id).And("status=?", models.STATUS_NORMAL).Get(share); err != nil {
79
+	share, err := m.GetCouponShareByCouponID(id)
80
+	if err != nil {
81 81
 		return nil, err
82 82
 	}
83 83
 
84 84
 	cp.Targets = targes
85 85
 	cp.Images = imgs
86 86
 	cp.Rules = rules
87
-	cp.Share = *share
87
+	cp.Share = share
88 88
 
89 89
 	return cp, nil
90 90
 }
@@ -293,18 +293,30 @@ func (m *CouponDAO) GetCaseUsableCoupon(caseid, userid string, page, pageSize in
293 293
 	var Coupons []CaseCouponDetail
294 294
 	sql := `select * from ta_coupon where case_id=? and status=? and end_date>now() order by create_date limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
295 295
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL).Find(&Coupons)
296
-	if userid != "" {
297
-		for inx, Coupon := range Coupons {
298
-			cCoupons, err := m.GetCustomerCouponByCouponAndUser(Coupon.CouponId, userid)
296
+	for inx, coupon := range Coupons {
297
+		if userid != "" {
298
+			cCoupons, err := m.GetCustomerCouponByCouponAndUser(coupon.CouponId, userid)
299 299
 			if err != nil {
300 300
 				return nil, err
301 301
 			}
302 302
 			Coupons[inx].CustomerCoupon = cCoupons
303 303
 		}
304
+		share, err := m.GetCouponShareByCouponID(coupon.CouponId)
305
+		if err != nil {
306
+			return nil, err
307
+		}
308
+		Coupons[inx].Share = share
304 309
 	}
305 310
 	return Coupons, err
306 311
 }
307 312
 
313
+// GetCouponShareByCouponID 根据优惠券信息获取分享信息
314
+func (m *CouponDAO) GetCouponShareByCouponID(couponid string) (*model.TaCouponShare, error) {
315
+	var share = model.TaCouponShare{}
316
+	_, err := m.db.Where("coupon_id=?", couponid).Get(&share)
317
+	return &share, err
318
+}
319
+
308 320
 // GetCaseUsableCouponCount 获取案场可用优惠券数量
309 321
 func (m *CouponDAO) GetCaseUsableCouponCount(caseid, userid string) (int, error) {
310 322
 	var Coupons []CaseCouponDetail
@@ -324,8 +336,8 @@ func (m *CouponDAO) GetCustomerCouponByCouponAndUser(couponid, userid string) ([
324 336
 // GetCouponDetail 获取优惠券详情
325 337
 func (m *CouponDAO) GetCouponDetail(couponid string) (*CaseCouponDetail, error) {
326 338
 	var coupon = new(CaseCouponDetail)
327
-	sql := `select * from ta_coupon_Coupon where coupon_id=? and status>?`
328
-	_, err := m.db.Sql(sql, couponid, models.STATUS_DEL).Get(&coupon)
339
+	sql := `select * from ta_coupon where coupon_id=? and status>?`
340
+	_, err := m.db.Sql(sql, couponid, models.STATUS_DEL).Get(coupon)
329 341
 	if err != nil {
330 342
 		return nil, err
331 343
 	}
@@ -408,8 +420,8 @@ func (m *CouponDAO) GetCustomerCouponByID(id string) (*CustomerCouponWithShare,
408 420
 	if err != nil {
409 421
 		return nil, err
410 422
 	}
411
-	share := new(model.TaCouponShare)
412
-	if _, err := m.db.Where("coupon_id=?", id).And("status=?", models.STATUS_NORMAL).Get(share); err != nil {
423
+	share, err := m.GetCouponShareByCouponID(id)
424
+	if err != nil {
413 425
 		return nil, err
414 426
 	}
415 427
 	customerCoupon.Share = share
@@ -460,7 +472,15 @@ func (m *CouponDAO) VerifyCustomerCoupon(id string) error {
460 472
 	return err
461 473
 }
462 474
 
463
-// ReceiveCoupon 领取优惠券
464
-func (m *CouponDAO) ReceiveCoupon(couponid string) {
465
-
475
+// CheckBySerialCode 根据批次码判断
476
+func (m *CouponDAO) CheckBySerialCode(couponid, code string) (bool, error) {
477
+	var customerCoupons []model.TaCustomerCoupon
478
+	err := m.db.Where("coupon_id=?", couponid).And("serial_code=?", code).Find(&customerCoupons)
479
+	if err != nil {
480
+		return false, err
481
+	}
482
+	if len(customerCoupons) == 0 {
483
+		return true, nil
484
+	}
485
+	return false, nil
466 486
 }

+ 2
- 1
models/coupon/types.go 查看文件

@@ -13,7 +13,7 @@ const (
13 13
 // CouponInfo 优惠券信息
14 14
 type CouponInfo struct {
15 15
 	model.TaCoupon `xorm:"extends"`
16
-	Share          model.TaCouponShare
16
+	Share          *model.TaCouponShare
17 17
 	Targets        []model.TaCouponTarget
18 18
 	Images         []model.TaCouponImage
19 19
 	Rules          []model.TaCouponRule
@@ -23,6 +23,7 @@ type CouponInfo struct {
23 23
 type CaseCouponDetail struct {
24 24
 	model.TaCoupon `xorm:"extends"`
25 25
 	CustomerCoupon []model.TaCustomerCoupon
26
+	Share          *model.TaCouponShare
26 27
 }
27 28
 
28 29
 // CustomerCoupon 用户优惠券

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

@@ -278,6 +278,7 @@ func (m *GymcardDAO) SendGymcardToCustomer(gymcard *model.TaGymCard, customerId,
278 278
 	customerGym.Status = models.STATUS_NORMAL
279 279
 	customerGym.SalesId = salesId
280 280
 	customerGym.SalesName = salesName
281
+	customerGym.CardStatus = models.CARD_COUPON_RECEIVED
281 282
 	_, err := m.db.Insert(customerGym)
282 283
 	return &customerGym, err
283 284
 }

+ 2
- 2
npm-debug.log 查看文件

@@ -2,13 +2,13 @@
2 2
 1 verbose cli [ 'D:\\Application\\Node\\node.exe',
3 3
 1 verbose cli   'C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js',
4 4
 1 verbose cli   'run',
5
-1 verbose cli   'build' ]
5
+1 verbose cli   'dev' ]
6 6
 2 info using npm@4.0.5
7 7
 3 info using node@v8.2.1
8 8
 4 verbose stack Error: ENOENT: no such file or directory, open 'E:\GoProject\src\spaceofcheng\services\package.json'
9 9
 5 verbose cwd E:\GoProject\src\spaceofcheng\services
10 10
 6 error Windows_NT 10.0.17134
11
-7 error argv "D:\\Application\\Node\\node.exe" "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
11
+7 error argv "D:\\Application\\Node\\node.exe" "C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "run" "dev"
12 12
 8 error node v8.2.1
13 13
 9 error npm  v4.0.5
14 14
 10 error path E:\GoProject\src\spaceofcheng\services\package.json

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

@@ -178,7 +178,8 @@ func getCommonRoutes() beego.LinkNamespace {
178 178
 		beego.NSRouter("/gymcard/:phone", &gymcard.GymcardController{}, "get:GetCustomerGymByPhone"),
179 179
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "post:SaveGymcard"),
180 180
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "put:SaveGymcard"),
181
-		beego.NSRouter("/gymcard/:customerGymId", &gymcard.GymcardController{}, "put:VerifyCustomerGymcard"),
181
+		beego.NSRouter("/gymcard/:id/to/:users", &gymcard.GymcardController{}, "post:GiveGymToCustomer"),
182
+
182 183
 		// luckdrawlist 抽奖
183 184
 		beego.NSRouter("luckdrawlist", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckdrawList"),
184 185
 		beego.NSRouter("luckdrawlist/:toPhone/:fromPhone", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckShareList"),

+ 2
- 0
routers/wechat.go 查看文件

@@ -56,10 +56,12 @@ func getWechatRoutes() beego.LinkNamespace {
56 56
 		beego.NSRouter("/coupon", &coupon.CouponController{}, "get:GetCaseUsableCoupon"),
57 57
 		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "get:GetCouponByID"),
58 58
 		beego.NSRouter("/coupon/detail/:id", &coupon.CouponController{}, "get:GetCouponWithCustomer"),
59
+		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "post:ReceiveCoupon"),
59 60
 
60 61
 		// 卡
61 62
 		beego.NSRouter("/card", &card.CardController{}, "get:GetCaseUsableCard"),
62 63
 		beego.NSRouter("/card/:id", &card.CardController{}, "get:GetCardByID"),
63 64
 		beego.NSRouter("/card/detail/:id", &card.CardController{}, "get:GetCardWithCustomer"),
65
+		beego.NSRouter("/card/:id", &card.CardController{}, "post:ReceiveCard"),
64 66
 	)
65 67
 }

+ 176
- 9
service/card/card.go 查看文件

@@ -4,6 +4,7 @@ import (
4 4
 	"errors"
5 5
 	"spaceofcheng/services/models"
6 6
 	"spaceofcheng/services/models/card"
7
+	"spaceofcheng/services/models/course"
7 8
 	"spaceofcheng/services/models/customer"
8 9
 	"spaceofcheng/services/models/model"
9 10
 	"spaceofcheng/services/models/system"
@@ -17,19 +18,21 @@ import (
17 18
 
18 19
 // CardServ 系统处理
19 20
 type CardServ struct {
20
-	ctx     *utils.Context
21
-	dao     *card.CardDAO
22
-	custDao *customer.CustomerDAO
23
-	userDao *system.UserDAO
21
+	ctx       *utils.Context
22
+	dao       *card.CardDAO
23
+	custDao   *customer.CustomerDAO
24
+	userDao   *system.UserDAO
25
+	courseDao *course.CourseDAO
24 26
 }
25 27
 
26 28
 // NewCardServ 初始化
27 29
 func NewCardServ(ctx *utils.Context) *CardServ {
28 30
 	return &CardServ{
29
-		ctx:     ctx,
30
-		dao:     card.NewCardDAO(ctx),
31
-		custDao: customer.NewCustomerDAO(ctx),
32
-		userDao: system.NewUserDAO(ctx),
31
+		ctx:       ctx,
32
+		dao:       card.NewCardDAO(ctx),
33
+		custDao:   customer.NewCustomerDAO(ctx),
34
+		userDao:   system.NewUserDAO(ctx),
35
+		courseDao: course.NewCourseDAO(ctx),
33 36
 	}
34 37
 }
35 38
 
@@ -230,6 +233,7 @@ func (s *CardServ) GiveCardTo(from *model.SysUser, to *model.TaCustomer, card *c
230 233
 
231 234
 	// 放入我的卡券
232 235
 	custcard := model.TaCustomerCard{
236
+		CustomerCardId:   utils.GetGUID(),
233 237
 		CardId:           card.CardId,
234 238
 		CustomerCardName: card.CardName,
235 239
 		CustomerId:       to.CustomerId,
@@ -246,9 +250,25 @@ func (s *CardServ) GiveCardTo(from *model.SysUser, to *model.TaCustomer, card *c
246 250
 		return errors.New("保存客户卡失败")
247 251
 	}
248 252
 
253
+	// 加入我的课程信息
254
+	err := s.SaveCustomerCourseByCard(&custcard)
255
+	if err != nil {
256
+		return err
257
+	}
258
+
249 259
 	// TODO
250 260
 	// 券库存处理
251
-
261
+	var cardinfo = model.TaCouponCard{
262
+		CardId:    card.CardId,
263
+		SentCount: card.SentCount + 1,
264
+	}
265
+	cols := []string{
266
+		"sent_count",
267
+	}
268
+	if err := s.dao.UpdateCard(&cardinfo, cols); err != nil {
269
+		utils.LogError("回填体验卡信息失败:", err)
270
+		return errors.New("回填体验卡信息失败!")
271
+	}
252 272
 	return nil
253 273
 }
254 274
 
@@ -359,3 +379,150 @@ func (s *CardServ) GetCaseUsableCard(page, pageSize int) (map[string]interface{}
359 379
 		"page":     page,
360 380
 	}, nil
361 381
 }
382
+
383
+// ReceiveCard 卡领取
384
+func (s *CardServ) ReceiveCard(id, saleid, serialcode string) error {
385
+	if saleid == "" || serialcode == "" {
386
+		return errors.New("参数不全!不允许领取")
387
+	}
388
+
389
+	// 数据校验
390
+	customer := s.ctx.Get("customer").(model.TaCustomer)
391
+	if customer.Phone == "" {
392
+		return errors.New("用户未绑定手机号!")
393
+	}
394
+	if customer.UserId != "" {
395
+		return errors.New("不允许内部人员领取卡券!")
396
+	}
397
+
398
+	card, err := s.dao.GetCardInfoByID(id)
399
+	if err != nil {
400
+		utils.LogError("领取卡获取卡信息失败:", err)
401
+		return errors.New("领取卡失败!")
402
+	}
403
+	if card.TotalCount <= card.SentCount && card.IsOver == 0 {
404
+		return errors.New("卡券已领完!")
405
+	}
406
+	if card.EndDate.Before(time.Now()) {
407
+		return errors.New("卡券已过期")
408
+	}
409
+
410
+	// 销售校验
411
+	saler, err := s.custDao.GetUserByID(saleid)
412
+	if err != nil {
413
+		utils.LogError("领取卡获取销售信息失败:", err)
414
+		return errors.New("领取卡失败!")
415
+	}
416
+	caseinfo, err := s.userDao.GetUserBelongCase(saleid)
417
+	if err != nil {
418
+		utils.LogError("领取卡获取销售案场信息失败:", err)
419
+		return errors.New("领取卡失败!")
420
+	}
421
+	if caseinfo.CaseId != card.CaseId {
422
+		return errors.New("销售不合法!")
423
+	}
424
+
425
+	// 验证码判断
426
+	isok, err := s.dao.CheckBySerialCode(card.CardId, serialcode)
427
+	if err != nil {
428
+		utils.LogError("获取卡批次码判断失败:", err)
429
+		return errors.New("领取卡失败!")
430
+	}
431
+	if !isok {
432
+		return errors.New("该卡已被领取!")
433
+	}
434
+
435
+	// 领取
436
+	var customerCard = model.TaCustomerCard{
437
+		CustomerCardId:   utils.GetGUID(),
438
+		CardId:           card.CardId,
439
+		CustomerCardName: card.CardName,
440
+		CustomerId:       customer.CustomerId,
441
+		SalesId:          saler.UserId,
442
+		SalesName:        saler.UserName,
443
+		StartDate:        card.StartDate,
444
+		EndDate:          card.EndDate,
445
+		CaseId:           card.CaseId,
446
+		OrgId:            card.OrgId,
447
+		SerialCode:       serialcode,
448
+	}
449
+
450
+	err = s.dao.SaveCustomerCard(&customerCard)
451
+	if err != nil {
452
+		utils.LogError("保存用户体验卡信息失败:", err)
453
+		return errors.New("领取卡失败!")
454
+	}
455
+	// 加入我的课程信息
456
+	err = s.SaveCustomerCourseByCard(&customerCard)
457
+	if err != nil {
458
+		return err
459
+	}
460
+	// 回填体验卡信息
461
+	card.SentCount = card.SentCount + 1
462
+	cols := []string{
463
+		"sent_count",
464
+	}
465
+	err = s.dao.UpdateCard(card, cols)
466
+	if err != nil {
467
+		utils.LogError("回填体验卡信息失败:", err)
468
+		return errors.New("领取卡失败!")
469
+	}
470
+	return nil
471
+}
472
+
473
+// SaveCustomerCourseByCard 保存用户的课程信息
474
+func (s *CardServ) SaveCustomerCourseByCard(customerCard *model.TaCustomerCard) error {
475
+	customer, err := s.custDao.GetCustomerByID(customerCard.CustomerId)
476
+	if err != nil {
477
+		utils.LogError("获取客户信息失败:", err)
478
+		return errors.New("获取客户信息失败")
479
+	}
480
+	card, err := s.dao.GetCardByID(customerCard.CardId)
481
+	if err != nil {
482
+		utils.LogError("获取体验卡信息失败:", err)
483
+		return errors.New("领取卡失败!")
484
+	}
485
+	for _, target := range card.Targets {
486
+		course, err := s.courseDao.GetCourseInfo(target.TargetId)
487
+		if err != nil {
488
+			utils.LogError("领取卡时课程获取失败:", err)
489
+			return errors.New("领取卡时课程获取失败!")
490
+		}
491
+		// 我的课程信息
492
+		custCourse := model.TaCustomerCourse{
493
+			CourseId:         course.CourseId,
494
+			CustomerId:       customer.CustomerId,
495
+			OrgId:            card.OrgId,
496
+			CaseId:           card.CaseId,
497
+			CourseName:       course.CourseName,
498
+			LocationId:       course.LocationId,
499
+			Price:            course.Price,
500
+			CourseNum:        course.CourseNum,
501
+			JoinNum:          0,
502
+			CreateDate:       time.Now().Local(),
503
+			CourseObtaimType: models.COURSE_GETBY_CARD,
504
+			SourceId:         customerCard.CustomerCardId,
505
+			IsDone:           models.BOOL_FALSE,
506
+		}
507
+
508
+		custCourseDetails := make([]model.TaCustomerCourseDetail, 0)
509
+
510
+		for _, subCourse := range course.CourseDetail {
511
+			d2 := model.TaCustomerCourseDetail{
512
+				CourseId:     course.CourseId,
513
+				DetailId:     subCourse.DetailId,
514
+				StartDate:    subCourse.BeginDate,
515
+				EndDate:      subCourse.EndDate,
516
+				VerifyStatus: models.VERIFY_USEABLE,
517
+				CaseId:       customerCard.CaseId,
518
+			}
519
+			custCourseDetails = append(custCourseDetails, d2)
520
+		}
521
+
522
+		if err := s.courseDao.SaveCourseOfCustomer(&custCourse, custCourseDetails); err != nil {
523
+			utils.LogError("插入我的课程失败: " + err.Error())
524
+			return errors.New("写入我的课程失败")
525
+		}
526
+	}
527
+	return nil
528
+}

+ 138
- 4
service/coupon/coupon.go 查看文件

@@ -107,7 +107,7 @@ func (s *CouponServ) SaveCoupon(cp *coupon.CouponInfo) error {
107 107
 	share := cp.Share
108 108
 	share.CouponId = cp.CouponId
109 109
 	// cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
110
-	if err := s.dao.SaveCouponShare(&share); err != nil {
110
+	if err := s.dao.SaveCouponShare(share); err != nil {
111 111
 		utils.LogError("保存优惠券分享失败: " + err.Error())
112 112
 		return errors.New("保存优惠券分享失败")
113 113
 	}
@@ -166,7 +166,7 @@ func (s *CouponServ) UpdateCoupon(cp *coupon.CouponInfo) error {
166 166
 	share := cp.Share
167 167
 	share.CouponId = cp.CouponId
168 168
 	cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
169
-	if err := s.dao.UpdateCouponShare(&share, cols); err != nil {
169
+	if err := s.dao.UpdateCouponShare(share, cols); err != nil {
170 170
 		utils.LogError("更新优惠券分享失败: " + err.Error())
171 171
 		return errors.New("更新优惠券分享失败")
172 172
 	}
@@ -408,7 +408,6 @@ func (s *CouponServ) GetCustomerCouponByID(id string) (*coupon.CustomerCouponWit
408 408
 
409 409
 // GetCaseUsableCoupon 获取案场可用券
410 410
 func (s *CouponServ) GetCaseUsableCoupon(page, pageSize int) (map[string]interface{}, error) {
411
-
412 411
 	if pageSize == 0 {
413 412
 		pageSize = service.PAGENUM
414 413
 	}
@@ -424,7 +423,7 @@ func (s *CouponServ) GetCaseUsableCoupon(page, pageSize int) (map[string]interfa
424 423
 		utils.LogError("获取用户信息失败: " + err.Error())
425 424
 		return nil, errors.New("获取用户信息失败")
426 425
 	}
427
-	if len(userTypes) > 0 {
426
+	if len(userTypes) == 0 {
428 427
 		return nil, errors.New("您没有权限查看数据")
429 428
 	}
430 429
 	caseinfo, err := s.userDao.GetUserBelongCase(customer.UserId)
@@ -451,3 +450,138 @@ func (s *CouponServ) GetCaseUsableCoupon(page, pageSize int) (map[string]interfa
451 450
 		"page":     page,
452 451
 	}, nil
453 452
 }
453
+
454
+// ReceiveCoupon 优惠券领取
455
+func (s *CouponServ) ReceiveCoupon(id, saleid, serialcode string) error {
456
+	if saleid == "" || serialcode == "" {
457
+		return errors.New("参数不全!不允许领取")
458
+	}
459
+
460
+	// 数据校验
461
+	customer := s.ctx.Get("customer").(model.TaCustomer)
462
+	if customer.Phone == "" {
463
+		return errors.New("用户未绑定手机号!")
464
+	}
465
+	if customer.UserId != "" {
466
+		return errors.New("不允许内部人员领取优惠券券!")
467
+	}
468
+
469
+	coupon, err := s.dao.GetCouponByID(id)
470
+	if err != nil {
471
+		utils.LogError("领取优惠券获取优惠券信息失败:", err)
472
+		return errors.New("领取优惠券失败!")
473
+	}
474
+	if coupon.TotalCount <= coupon.SentCount && coupon.IsOver == 0 {
475
+		return errors.New("优惠券券已领完!")
476
+	}
477
+	if coupon.EndDate.Before(time.Now()) {
478
+		return errors.New("优惠券券已过期")
479
+	}
480
+
481
+	// 销售校验
482
+	saler, err := s.custDao.GetUserByID(saleid)
483
+	if err != nil {
484
+		utils.LogError("领取优惠券获取销售信息失败:", err)
485
+		return errors.New("领取优惠券失败!")
486
+	}
487
+	caseinfo, err := s.userDao.GetUserBelongCase(saleid)
488
+	if err != nil {
489
+		utils.LogError("领取优惠券获取销售案场信息失败:", err)
490
+		return errors.New("领取优惠券失败!")
491
+	}
492
+	if caseinfo.CaseId != coupon.CaseId {
493
+		return errors.New("销售不合法!")
494
+	}
495
+
496
+	// 验证码判断
497
+	isok, err := s.dao.CheckBySerialCode(coupon.CouponId, serialcode)
498
+	if err != nil {
499
+		utils.LogError("获取优惠券批次码判断失败:", err)
500
+		return errors.New("领取优惠券失败!")
501
+	}
502
+	if !isok {
503
+		return errors.New("该优惠券已被领取!")
504
+	}
505
+
506
+	// 领取
507
+	var customerCoupon = model.TaCustomerCoupon{
508
+		CouponId:           coupon.CouponId,
509
+		CustomerCouponName: coupon.CouponName,
510
+		CustomerId:         customer.CustomerId,
511
+		SalesId:            saler.UserId,
512
+		SalesName:          saler.UserName,
513
+		StartDate:          coupon.StartDate,
514
+		EndDate:            coupon.EndDate,
515
+		CaseId:             coupon.CaseId,
516
+		OrgId:              coupon.OrgId,
517
+		SerialCode:         serialcode,
518
+	}
519
+
520
+	err = s.dao.SaveCustomerCoupon(&customerCoupon)
521
+	if err != nil {
522
+		utils.LogError("保存用户体验优惠券信息失败:", err)
523
+		return errors.New("领取优惠券失败!")
524
+	}
525
+	// 回填体验优惠券信息
526
+	coupon.SentCount = coupon.SentCount + 1
527
+	cols := []string{
528
+		"sent_count",
529
+	}
530
+	err = s.dao.UpdateCoupon(coupon, cols)
531
+	if err != nil {
532
+		utils.LogError("回填体验优惠券信息失败:", err)
533
+		return errors.New("领取优惠券失败!")
534
+	}
535
+	return nil
536
+}
537
+
538
+// ChannelReceiveCoupon 渠道端优惠券领取
539
+func (s *CouponServ) ChannelReceiveCoupon(id string) error {
540
+	// 数据校验
541
+	customer := s.ctx.Get("customer").(model.TaCustomer)
542
+	if customer.Phone == "" {
543
+		return errors.New("用户未绑定手机号!")
544
+	}
545
+	if customer.UserId != "" {
546
+		return errors.New("不允许内部人员领取优惠券券!")
547
+	}
548
+
549
+	coupon, err := s.dao.GetCouponByID(id)
550
+	if err != nil {
551
+		utils.LogError("领取优惠券获取优惠券信息失败:", err)
552
+		return errors.New("领取优惠券失败!")
553
+	}
554
+	if coupon.TotalCount <= coupon.SentCount && coupon.IsOver == 0 {
555
+		return errors.New("优惠券券已领完!")
556
+	}
557
+	if coupon.EndDate.Before(time.Now()) {
558
+		return errors.New("优惠券券已过期")
559
+	}
560
+	// 领取
561
+	var customerCoupon = model.TaCustomerCoupon{
562
+		CouponId:           coupon.CouponId,
563
+		CustomerCouponName: coupon.CouponName,
564
+		CustomerId:         customer.CustomerId,
565
+		StartDate:          coupon.StartDate,
566
+		EndDate:            coupon.EndDate,
567
+		CaseId:             coupon.CaseId,
568
+		OrgId:              coupon.OrgId,
569
+	}
570
+
571
+	err = s.dao.SaveCustomerCoupon(&customerCoupon)
572
+	if err != nil {
573
+		utils.LogError("保存用户体验优惠券信息失败:", err)
574
+		return errors.New("领取优惠券失败!")
575
+	}
576
+	// 回填体验优惠券信息
577
+	coupon.SentCount = coupon.SentCount + 1
578
+	cols := []string{
579
+		"sent_count",
580
+	}
581
+	err = s.dao.UpdateCoupon(coupon, cols)
582
+	if err != nil {
583
+		utils.LogError("回填体验优惠券信息失败:", err)
584
+		return errors.New("领取优惠券失败!")
585
+	}
586
+	return nil
587
+}

+ 31
- 0
service/gymcard/gymcard.go 查看文件

@@ -172,6 +172,9 @@ func (s *GymcardServ) SendGymCardToUser(gymcardId, sysuserId string) (*model.TaC
172 172
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
173 173
 		return nil, errors.New("发送游泳健身卡给客户失败")
174 174
 	}
175
+	if gymCard.TotalCount-gymCard.SentCount < 1 {
176
+		return nil, errors.New("健身卡剩余数量不足!")
177
+	}
175 178
 	sysuser, err = s.cdao.GetUserByID(sysuserId)
176 179
 	if err != nil {
177 180
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
@@ -279,3 +282,31 @@ func (s *GymcardServ) deleteGymCard(gymcardId string) error {
279 282
 	return err
280 283
 
281 284
 }
285
+
286
+// GiveCardToCustomer 赠送健身卡
287
+func (s *GymcardServ) GiveCardToCustomer(gymcardId, uids string) error {
288
+	gymCard, err := s.dao.GetGymcardById(gymcardId)
289
+	if err != nil {
290
+		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
291
+		return errors.New("发送游泳健身卡给客户失败")
292
+	}
293
+	arrUID := strings.Split(uids, ",")
294
+	if gymCard.TotalCount-gymCard.SentCount < len(arrUID) {
295
+		return errors.New("健身卡剩余数量不足!")
296
+	}
297
+
298
+	for _, uid := range arrUID {
299
+		_, err := s.dao.SendGymcardToCustomer(&gymCard.TaGymCard, uid, "", "")
300
+		if err != nil {
301
+			utils.LogError("发送游泳健身卡给客户失败" + err.Error())
302
+			return errors.New("发送游泳健身卡给客户失败")
303
+		}
304
+		gymCard.SentCount = gymCard.SentCount + 1
305
+	}
306
+	err = s.dao.EditGymcard(&gymCard.TaGymCard)
307
+	if err != nil {
308
+		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
309
+		return errors.New("发送游泳健身卡给客户失败")
310
+	}
311
+	return nil
312
+}