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

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

39
 
39
 
40
 // SetTokenExipre 设置 token 过期
40
 // SetTokenExipre 设置 token 过期
41
 func (c *BaseController) SetTokenExipre() {
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
 	c.Context.Set("token", "")
47
 	c.Context.Set("token", "")
48
 }
48
 }

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

9
 	"spaceofcheng/services/service/card"
9
 	"spaceofcheng/services/service/card"
10
 	"spaceofcheng/services/utils"
10
 	"spaceofcheng/services/utils"
11
 	"strings"
11
 	"strings"
12
+	"tolet/models/model"
12
 )
13
 )
13
 
14
 
14
 // CardController 商品
15
 // CardController 商品
210
 
211
 
211
 	c.ResponseJSON(cards)
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
 	"spaceofcheng/services/service/coupon"
9
 	"spaceofcheng/services/service/coupon"
10
 	"spaceofcheng/services/utils"
10
 	"spaceofcheng/services/utils"
11
 	"strings"
11
 	"strings"
12
+	"tolet/models/model"
12
 )
13
 )
13
 
14
 
14
 // CouponController 商品
15
 // CouponController 商品
219
 	if err != nil {
220
 	if err != nil {
220
 		c.ResponseError(err)
221
 		c.ResponseError(err)
221
 	}
222
 	}
222
-
223
 	c.ResponseJSON(coupons)
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
 	}
130
 	}
131
 	c.ResponseJSON("核销成功")
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
 		JOIN sys_user_type s ON t.user_id = s.user_id
9
 		JOIN sys_user_type s ON t.user_id = s.user_id
10
 		JOIN td_use' at line 4
10
 		JOIN td_use' at line 4
11
 2018/09/14 18:49:55 [E] 解析 Token 失败: token contains an invalid number of segments
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
 	"strings"
10
 	"strings"
11
 	"time"
11
 	"time"
12
 
12
 
13
-	"github.com/astaxie/beego"
14
-
15
 	"github.com/go-xorm/xorm"
13
 	"github.com/go-xorm/xorm"
16
 	"github.com/yl10/kit/guid"
14
 	"github.com/yl10/kit/guid"
17
 )
15
 )
110
 	return nil
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
 // UpdateCard 更新体验卡
118
 // UpdateCard 更新体验卡
114
 func (m *CardDAO) UpdateCard(card *model.TaCouponCard, cols []string) error {
119
 func (m *CardDAO) UpdateCard(card *model.TaCouponCard, cols []string) error {
115
 	if card.CardId == "" {
120
 	if card.CardId == "" {
218
 type CaseUsableCard struct {
223
 type CaseUsableCard struct {
219
 	model.TaCouponCard `xorm:"extends"`
224
 	model.TaCouponCard `xorm:"extends"`
220
 	CustomerCard       []model.TaCustomerCard
225
 	CustomerCard       []model.TaCustomerCard
226
+	Share              *model.TaExperienceCardShare
221
 }
227
 }
222
 
228
 
223
 // GetCaseUsableCard 获取案场可用卡信息
229
 // GetCaseUsableCard 获取案场可用卡信息
224
 func (m *CardDAO) GetCaseUsableCard(caseid, userid string, page, pageSize int) ([]CaseUsableCard, error) {
230
 func (m *CardDAO) GetCaseUsableCard(caseid, userid string, page, pageSize int) ([]CaseUsableCard, error) {
225
 	var cards []CaseUsableCard
231
 	var cards []CaseUsableCard
226
 	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)
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
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL).Find(&cards)
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
 			cCards, err := m.GetCustomerCardByCardAndUser(card.CardId, userid)
236
 			cCards, err := m.GetCustomerCardByCardAndUser(card.CardId, userid)
232
 			if err != nil {
237
 			if err != nil {
233
 				return nil, err
238
 				return nil, err
234
 			}
239
 			}
235
 			cards[inx].CustomerCard = cCards
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
 	return cards, err
248
 	return cards, err
239
 }
249
 }
349
 	customerCard.Share = share
359
 	customerCard.Share = share
350
 	return customerCard, err
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
 	}
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
 		return nil, err
81
 		return nil, err
82
 	}
82
 	}
83
 
83
 
84
 	cp.Targets = targes
84
 	cp.Targets = targes
85
 	cp.Images = imgs
85
 	cp.Images = imgs
86
 	cp.Rules = rules
86
 	cp.Rules = rules
87
-	cp.Share = *share
87
+	cp.Share = share
88
 
88
 
89
 	return cp, nil
89
 	return cp, nil
90
 }
90
 }
293
 	var Coupons []CaseCouponDetail
293
 	var Coupons []CaseCouponDetail
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)
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
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL).Find(&Coupons)
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
 			if err != nil {
299
 			if err != nil {
300
 				return nil, err
300
 				return nil, err
301
 			}
301
 			}
302
 			Coupons[inx].CustomerCoupon = cCoupons
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
 	return Coupons, err
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
 // GetCaseUsableCouponCount 获取案场可用优惠券数量
320
 // GetCaseUsableCouponCount 获取案场可用优惠券数量
309
 func (m *CouponDAO) GetCaseUsableCouponCount(caseid, userid string) (int, error) {
321
 func (m *CouponDAO) GetCaseUsableCouponCount(caseid, userid string) (int, error) {
310
 	var Coupons []CaseCouponDetail
322
 	var Coupons []CaseCouponDetail
324
 // GetCouponDetail 获取优惠券详情
336
 // GetCouponDetail 获取优惠券详情
325
 func (m *CouponDAO) GetCouponDetail(couponid string) (*CaseCouponDetail, error) {
337
 func (m *CouponDAO) GetCouponDetail(couponid string) (*CaseCouponDetail, error) {
326
 	var coupon = new(CaseCouponDetail)
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
 	if err != nil {
341
 	if err != nil {
330
 		return nil, err
342
 		return nil, err
331
 	}
343
 	}
408
 	if err != nil {
420
 	if err != nil {
409
 		return nil, err
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
 		return nil, err
425
 		return nil, err
414
 	}
426
 	}
415
 	customerCoupon.Share = share
427
 	customerCoupon.Share = share
460
 	return err
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
 // CouponInfo 优惠券信息
13
 // CouponInfo 优惠券信息
14
 type CouponInfo struct {
14
 type CouponInfo struct {
15
 	model.TaCoupon `xorm:"extends"`
15
 	model.TaCoupon `xorm:"extends"`
16
-	Share          model.TaCouponShare
16
+	Share          *model.TaCouponShare
17
 	Targets        []model.TaCouponTarget
17
 	Targets        []model.TaCouponTarget
18
 	Images         []model.TaCouponImage
18
 	Images         []model.TaCouponImage
19
 	Rules          []model.TaCouponRule
19
 	Rules          []model.TaCouponRule
23
 type CaseCouponDetail struct {
23
 type CaseCouponDetail struct {
24
 	model.TaCoupon `xorm:"extends"`
24
 	model.TaCoupon `xorm:"extends"`
25
 	CustomerCoupon []model.TaCustomerCoupon
25
 	CustomerCoupon []model.TaCustomerCoupon
26
+	Share          *model.TaCouponShare
26
 }
27
 }
27
 
28
 
28
 // CustomerCoupon 用户优惠券
29
 // CustomerCoupon 用户优惠券

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

278
 	customerGym.Status = models.STATUS_NORMAL
278
 	customerGym.Status = models.STATUS_NORMAL
279
 	customerGym.SalesId = salesId
279
 	customerGym.SalesId = salesId
280
 	customerGym.SalesName = salesName
280
 	customerGym.SalesName = salesName
281
+	customerGym.CardStatus = models.CARD_COUPON_RECEIVED
281
 	_, err := m.db.Insert(customerGym)
282
 	_, err := m.db.Insert(customerGym)
282
 	return &customerGym, err
283
 	return &customerGym, err
283
 }
284
 }

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

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

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

178
 		beego.NSRouter("/gymcard/:phone", &gymcard.GymcardController{}, "get:GetCustomerGymByPhone"),
178
 		beego.NSRouter("/gymcard/:phone", &gymcard.GymcardController{}, "get:GetCustomerGymByPhone"),
179
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "post:SaveGymcard"),
179
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "post:SaveGymcard"),
180
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "put:SaveGymcard"),
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
 		// luckdrawlist 抽奖
183
 		// luckdrawlist 抽奖
183
 		beego.NSRouter("luckdrawlist", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckdrawList"),
184
 		beego.NSRouter("luckdrawlist", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckdrawList"),
184
 		beego.NSRouter("luckdrawlist/:toPhone/:fromPhone", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckShareList"),
185
 		beego.NSRouter("luckdrawlist/:toPhone/:fromPhone", &luckdrawlist.LuckdrawlistController{}, "get:GetLuckShareList"),

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

56
 		beego.NSRouter("/coupon", &coupon.CouponController{}, "get:GetCaseUsableCoupon"),
56
 		beego.NSRouter("/coupon", &coupon.CouponController{}, "get:GetCaseUsableCoupon"),
57
 		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "get:GetCouponByID"),
57
 		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "get:GetCouponByID"),
58
 		beego.NSRouter("/coupon/detail/:id", &coupon.CouponController{}, "get:GetCouponWithCustomer"),
58
 		beego.NSRouter("/coupon/detail/:id", &coupon.CouponController{}, "get:GetCouponWithCustomer"),
59
+		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "post:ReceiveCoupon"),
59
 
60
 
60
 		// 卡
61
 		// 卡
61
 		beego.NSRouter("/card", &card.CardController{}, "get:GetCaseUsableCard"),
62
 		beego.NSRouter("/card", &card.CardController{}, "get:GetCaseUsableCard"),
62
 		beego.NSRouter("/card/:id", &card.CardController{}, "get:GetCardByID"),
63
 		beego.NSRouter("/card/:id", &card.CardController{}, "get:GetCardByID"),
63
 		beego.NSRouter("/card/detail/:id", &card.CardController{}, "get:GetCardWithCustomer"),
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
 	"errors"
4
 	"errors"
5
 	"spaceofcheng/services/models"
5
 	"spaceofcheng/services/models"
6
 	"spaceofcheng/services/models/card"
6
 	"spaceofcheng/services/models/card"
7
+	"spaceofcheng/services/models/course"
7
 	"spaceofcheng/services/models/customer"
8
 	"spaceofcheng/services/models/customer"
8
 	"spaceofcheng/services/models/model"
9
 	"spaceofcheng/services/models/model"
9
 	"spaceofcheng/services/models/system"
10
 	"spaceofcheng/services/models/system"
17
 
18
 
18
 // CardServ 系统处理
19
 // CardServ 系统处理
19
 type CardServ struct {
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
 // NewCardServ 初始化
28
 // NewCardServ 初始化
27
 func NewCardServ(ctx *utils.Context) *CardServ {
29
 func NewCardServ(ctx *utils.Context) *CardServ {
28
 	return &CardServ{
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
 
233
 
231
 	// 放入我的卡券
234
 	// 放入我的卡券
232
 	custcard := model.TaCustomerCard{
235
 	custcard := model.TaCustomerCard{
236
+		CustomerCardId:   utils.GetGUID(),
233
 		CardId:           card.CardId,
237
 		CardId:           card.CardId,
234
 		CustomerCardName: card.CardName,
238
 		CustomerCardName: card.CardName,
235
 		CustomerId:       to.CustomerId,
239
 		CustomerId:       to.CustomerId,
246
 		return errors.New("保存客户卡失败")
250
 		return errors.New("保存客户卡失败")
247
 	}
251
 	}
248
 
252
 
253
+	// 加入我的课程信息
254
+	err := s.SaveCustomerCourseByCard(&custcard)
255
+	if err != nil {
256
+		return err
257
+	}
258
+
249
 	// TODO
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
 	return nil
272
 	return nil
253
 }
273
 }
254
 
274
 
359
 		"page":     page,
379
 		"page":     page,
360
 	}, nil
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
 	share := cp.Share
107
 	share := cp.Share
108
 	share.CouponId = cp.CouponId
108
 	share.CouponId = cp.CouponId
109
 	// cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
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
 		utils.LogError("保存优惠券分享失败: " + err.Error())
111
 		utils.LogError("保存优惠券分享失败: " + err.Error())
112
 		return errors.New("保存优惠券分享失败")
112
 		return errors.New("保存优惠券分享失败")
113
 	}
113
 	}
166
 	share := cp.Share
166
 	share := cp.Share
167
 	share.CouponId = cp.CouponId
167
 	share.CouponId = cp.CouponId
168
 	cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
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
 		utils.LogError("更新优惠券分享失败: " + err.Error())
170
 		utils.LogError("更新优惠券分享失败: " + err.Error())
171
 		return errors.New("更新优惠券分享失败")
171
 		return errors.New("更新优惠券分享失败")
172
 	}
172
 	}
408
 
408
 
409
 // GetCaseUsableCoupon 获取案场可用券
409
 // GetCaseUsableCoupon 获取案场可用券
410
 func (s *CouponServ) GetCaseUsableCoupon(page, pageSize int) (map[string]interface{}, error) {
410
 func (s *CouponServ) GetCaseUsableCoupon(page, pageSize int) (map[string]interface{}, error) {
411
-
412
 	if pageSize == 0 {
411
 	if pageSize == 0 {
413
 		pageSize = service.PAGENUM
412
 		pageSize = service.PAGENUM
414
 	}
413
 	}
424
 		utils.LogError("获取用户信息失败: " + err.Error())
423
 		utils.LogError("获取用户信息失败: " + err.Error())
425
 		return nil, errors.New("获取用户信息失败")
424
 		return nil, errors.New("获取用户信息失败")
426
 	}
425
 	}
427
-	if len(userTypes) > 0 {
426
+	if len(userTypes) == 0 {
428
 		return nil, errors.New("您没有权限查看数据")
427
 		return nil, errors.New("您没有权限查看数据")
429
 	}
428
 	}
430
 	caseinfo, err := s.userDao.GetUserBelongCase(customer.UserId)
429
 	caseinfo, err := s.userDao.GetUserBelongCase(customer.UserId)
451
 		"page":     page,
450
 		"page":     page,
452
 	}, nil
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
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
172
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
173
 		return nil, errors.New("发送游泳健身卡给客户失败")
173
 		return nil, errors.New("发送游泳健身卡给客户失败")
174
 	}
174
 	}
175
+	if gymCard.TotalCount-gymCard.SentCount < 1 {
176
+		return nil, errors.New("健身卡剩余数量不足!")
177
+	}
175
 	sysuser, err = s.cdao.GetUserByID(sysuserId)
178
 	sysuser, err = s.cdao.GetUserByID(sysuserId)
176
 	if err != nil {
179
 	if err != nil {
177
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
180
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
279
 	return err
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
+}