wangfei пре 6 година
родитељ
комит
df8fdc312e

+ 1
- 1
conf/log.conf Прегледај датотеку

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

+ 168
- 0
controllers/card/card.go Прегледај датотеку

@@ -0,0 +1,168 @@
1
+package card
2
+
3
+import (
4
+	"encoding/json"
5
+	"errors"
6
+	"net/http"
7
+	"spaceofcheng/services/controllers"
8
+	cardModel "spaceofcheng/services/models/card"
9
+	"spaceofcheng/services/service/card"
10
+	"spaceofcheng/services/utils"
11
+	"strings"
12
+)
13
+
14
+// CardController 商品
15
+type CardController struct {
16
+	serv *card.CardServ
17
+	controllers.BaseController
18
+}
19
+
20
+// Constructor 初始化 Controller
21
+// @Title Constructor
22
+// @Description 初始化 Controller, 系统自动调用
23
+func (c *CardController) Constructor() {
24
+	c.serv = card.NewCardServ(c.Context)
25
+}
26
+
27
+// ListByCase 获取卡列表
28
+func (c *CardController) ListByCase() {
29
+	caseid := c.GetString("caseid")
30
+	page, _ := c.GetInt("page")
31
+	pagesize, _ := c.GetInt("pagesize")
32
+	if page < 0 {
33
+		page = 1
34
+	}
35
+
36
+	if pagesize <= 0 {
37
+		pagesize = 10
38
+	}
39
+
40
+	list, total, err := c.serv.GetCardList(caseid, page, pagesize)
41
+	if err != nil {
42
+		c.ResponseError(err)
43
+	}
44
+
45
+	c.ResponseJSON(map[string]interface{}{
46
+		"list":     list,
47
+		"page":     page,
48
+		"pagesize": pagesize,
49
+		"pagenum":  total,
50
+	})
51
+}
52
+
53
+// GetCardByIDForAdmin 获取卡
54
+// 管理端
55
+func (c *CardController) GetCardByIDForAdmin() {
56
+	id := c.GetString(":id")
57
+	if id == "" {
58
+		c.ResponseError(errors.New("未指定卡"))
59
+	}
60
+
61
+	card, err := c.serv.GetCardByIDWithCheck(id)
62
+	if err != nil {
63
+		c.ResponseError(err)
64
+	}
65
+
66
+	c.ResponseJSON(map[string]interface{}{
67
+		"Card": card,
68
+	})
69
+}
70
+
71
+// GetCardByID 获取卡
72
+// 微信端
73
+func (c *CardController) GetCardByID() {
74
+	id := c.GetString(":id")
75
+	if id == "" {
76
+		c.ResponseError(errors.New("未指定卡"))
77
+	}
78
+
79
+	card, err := c.serv.GetCardByID(id)
80
+	if err != nil {
81
+		c.ResponseError(err)
82
+	}
83
+
84
+	c.ResponseJSON(map[string]interface{}{
85
+		"Card": card,
86
+	})
87
+}
88
+
89
+// SaveCard 保存卡
90
+func (c *CardController) SaveCard() {
91
+	jsnStr := c.GetString("info")
92
+	if jsnStr == "" {
93
+		c.ResponseError(errors.New("未接收到保存内容"))
94
+	}
95
+
96
+	card := cardModel.CardInfo{}
97
+
98
+	if err := json.Unmarshal([]byte(jsnStr), &card); err != nil {
99
+		utils.LogError("接收卡信息失败: " + err.Error())
100
+		c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError)
101
+	}
102
+
103
+	// TODO
104
+	// 校验各字段不能为空
105
+
106
+	// 入库
107
+	card.CardId = ""
108
+	if err := c.serv.SaveCard(&card); err != nil {
109
+		c.ResponseError(err)
110
+	}
111
+
112
+	c.ResponseJSON(map[string]interface{}{
113
+		"Card": card,
114
+	})
115
+}
116
+
117
+// UpdateCard 更新卡
118
+func (c *CardController) UpdateCard() {
119
+	jsnStr := c.GetString("info")
120
+	if jsnStr == "" {
121
+		c.ResponseError(errors.New("未接收到更新内容"))
122
+	}
123
+
124
+	id := c.GetString(":id")
125
+	if id == "" {
126
+		c.ResponseError(errors.New("未指定卡"))
127
+	}
128
+
129
+	card := cardModel.CardInfo{}
130
+
131
+	if err := json.Unmarshal([]byte(jsnStr), &card); err != nil {
132
+		utils.LogError("接收卡信息失败: " + err.Error())
133
+		c.ResponseError(errors.New("接收参数失败"), http.StatusInternalServerError)
134
+	}
135
+
136
+	// TODO
137
+	// 校验各字段不能为空
138
+
139
+	// 入库
140
+	card.CardId = id
141
+	if err := c.serv.UpdateCard(&card); err != nil {
142
+		c.ResponseError(err)
143
+	}
144
+
145
+	c.ResponseJSON(map[string]interface{}{
146
+		"Card": card,
147
+	})
148
+}
149
+
150
+// GiveCard 赠送卡
151
+func (c *CardController) GiveCard() {
152
+	id := c.GetString(":id")
153
+	if id == "" {
154
+		c.ResponseError(errors.New("未指定卡"))
155
+	}
156
+
157
+	uids := c.GetString(":users")
158
+	if uids == "" {
159
+		c.ResponseError(errors.New("未指定赠送人"))
160
+	}
161
+
162
+	err := c.serv.GiveCard(id, strings.Split(uids, ","))
163
+	if err != nil {
164
+		c.ResponseError(err)
165
+	}
166
+
167
+	c.ResponseJSON("ok")
168
+}

+ 5
- 1
controllers/customer/customer.go Прегледај датотеку

@@ -25,10 +25,14 @@ func (c *CustomerController) Constructor() {
25 25
 // CustWXList 获取客户列表
26 26
 func (c *CustomerController) CustWXList() {
27 27
 	phone := c.GetString("phone")
28
+	username := c.GetString("username")
29
+	recommendname := c.GetString("recommendname")
30
+	begindate := c.GetString("begindate")
31
+	enddate := c.GetString("enddate")
28 32
 	page, _ := c.GetInt("page")
29 33
 	pageSize, _ := c.GetInt("pagesize")
30 34
 
31
-	custList, total, err := c.serv.GetCustWithWXList(phone, page, pageSize)
35
+	custList, total, err := c.serv.GetCustWithWXList(phone, username, recommendname, begindate, enddate, page, pageSize)
32 36
 	if err != nil {
33 37
 		utils.LogError("获取客户列表失败: " + err.Error())
34 38
 		c.ResponseError(

+ 38
- 0
controllers/user/user.go Прегледај датотеку

@@ -247,3 +247,41 @@ func (c *UserController) GetUserByTel() {
247 247
 	}
248 248
 	c.ResponseJSON(user)
249 249
 }
250
+
251
+// GetForbidUsers 获取所有禁止人员信息
252
+func (c *UserController) GetForbidUsers() {
253
+	caseid := c.GetString("caseid")
254
+	if caseid == "" {
255
+		c.ResponseError(errors.New("没有案场信息"))
256
+	}
257
+	users, err := c.dao.GetForbidUsers(caseid)
258
+	if err != nil {
259
+		utils.LogError("获取禁止人员信息失败: " + err.Error())
260
+		c.ResponseError(errors.New("获取禁止人员信息失败"))
261
+	}
262
+	c.ResponseJSON(users)
263
+}
264
+
265
+// SaveForbidUser 保存禁止人员信息
266
+func (c *UserController) SaveForbidUser() {
267
+	userid := c.GetString(":userid")
268
+	forbidtype := c.GetString(":type")
269
+	err := c.dao.SaveForbidUser(userid, forbidtype)
270
+	if err != nil {
271
+		utils.LogError("保存禁止人员信息失败: " + err.Error())
272
+		c.ResponseError(errors.New("保存禁止人员信息失败"))
273
+	}
274
+	c.ResponseJSON("操作成功")
275
+}
276
+
277
+// OpenForbidUser 开启禁止人员
278
+func (c *UserController) OpenForbidUser() {
279
+	userid := c.GetString(":userid")
280
+	forbidtype := c.GetString(":type")
281
+	err := c.dao.OpenForbidUser(userid, forbidtype)
282
+	if err != nil {
283
+		utils.LogError("开启禁止人员信息失败: " + err.Error())
284
+		c.ResponseError(errors.New("开启禁止人员信息失败"))
285
+	}
286
+	c.ResponseJSON("操作成功")
287
+}

+ 667
- 0
log/common.log Прегледај датотеку

@@ -3663,3 +3663,670 @@
3663 3663
 2018/09/12 14:27:38 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
3664 3664
 2018/09/12 14:27:38 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_0QjgwowdSGInKdwbrmtbkXrv6GoHX0tx6D0z56rH8acNnHqeB0NgY4tzJ4KFVi7YxnIBH9ZMnePZVbpKUMJBJ0uZp3RPnjz3ughGkbP_weau5lL_3Mbs3Xrrsi6_sXkPUesmk1P9eN767-oSFIQcAJAMPX","expires_in":7200})
3665 3665
 2018/09/12 14:27:38 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_0QjgwowdSGInKdwbrmtbkXrv6GoHX0tx6D0z56rH8acNnHqeB0NgY4tzJ4KFVi7YxnIBH9ZMnePZVbpKUMJBJ0uZp3RPnjz3ughGkbP_weau5lL_3Mbs3Xrrsi6_sXkPUesmk1P9eN767-oSFIQcAJAMPX expires_in:7200])
3666
+2018/09/12 18:34:04 [E] 用户没有设置默认案场
3667
+2018/09/12 18:37:00 [E] 用户没有设置默认案场
3668
+2018/09/12 18:37:01 [E] 用户没有设置默认案场
3669
+2018/09/12 18:37:20 [E] 用户没有设置默认案场
3670
+2018/09/12 18:37:20 [E] 接收优惠券信息失败: json: cannot unmarshal number into Go struct field CouponInfo.Price of type string
3671
+2018/09/12 18:38:11 [E] 用户没有设置默认案场
3672
+2018/09/12 18:38:13 [E] 用户没有设置默认案场
3673
+2018/09/12 18:38:13 [E] 接收优惠券信息失败: json: cannot unmarshal string into Go struct field CouponInfo.ValidDays of type int
3674
+2018/09/12 18:39:29 [E] 用户没有设置默认案场
3675
+2018/09/12 18:39:33 [E] 用户没有设置默认案场
3676
+2018/09/12 18:44:29 [E] 用户没有设置默认案场
3677
+2018/09/12 18:44:31 [E] 用户没有设置默认案场
3678
+2018/09/12 18:44:33 [E] 用户没有设置默认案场
3679
+2018/09/12 18:44:33 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
3680
+2018/09/12 18:44:33 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_rwF3wq1hLuTfjPgZxrEBuww0pRQQc71V6Q1orhZVeg7X0SblLUNKGIQmA0RsH3FJK_8viF9dxZgYTO67G624vfhMrgeumsm6r3CA9RhfHYzK48uDkF4dviptxQ0JQVbAGAYFK","expires_in":7200})
3681
+2018/09/12 18:44:33 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_rwF3wq1hLuTfjPgZxrEBuww0pRQQc71V6Q1orhZVeg7X0SblLUNKGIQmA0RsH3FJK_8viF9dxZgYTO67G624vfhMrgeumsm6r3CA9RhfHYzK48uDkF4dviptxQ0JQVbAGAYFK expires_in:7200])
3682
+2018/09/12 18:44:35 [E] 用户没有设置默认案场
3683
+2018/09/12 18:44:35 [E] 保存优惠券分享失败: 无优惠券分享信息
3684
+2018/09/12 18:48:14 [E] 用户没有设置默认案场
3685
+2018/09/12 18:48:15 [E] 用户没有设置默认案场
3686
+2018/09/12 18:48:17 [E] 用户没有设置默认案场
3687
+2018/09/12 18:48:18 [E] 用户没有设置默认案场
3688
+2018/09/12 18:48:18 [E] 保存优惠券分享失败: 无优惠券分享信息
3689
+2018/09/12 18:49:58 [E] 用户没有设置默认案场
3690
+2018/09/12 18:49:59 [E] 用户没有设置默认案场
3691
+2018/09/12 18:50:00 [E] 用户没有设置默认案场
3692
+2018/09/12 18:50:01 [E] 用户没有设置默认案场
3693
+2018/09/12 18:51:07 [E] 用户没有设置默认案场
3694
+2018/09/12 18:51:11 [E] 用户没有设置默认案场
3695
+2018/09/12 18:51:13 [E] 用户没有设置默认案场
3696
+2018/09/12 18:51:14 [E] 用户没有设置默认案场
3697
+2018/09/12 18:51:14 [E] 保存优惠券关联内容失败: Error 1054: Unknown column 'coupon_id' in 'where clause'
3698
+2018/09/12 18:54:23 [E] 用户没有设置默认案场
3699
+2018/09/12 18:54:25 [E] 用户没有设置默认案场
3700
+2018/09/12 18:54:26 [E] 用户没有设置默认案场
3701
+2018/09/12 18:54:28 [E] 用户没有设置默认案场
3702
+2018/09/12 18:54:28 [E] 保存优惠券关联内容失败: Error 1406: Data too long for column 'target_type' at row 1
3703
+2018/09/12 18:56:45 [E] 用户没有设置默认案场
3704
+2018/09/12 18:56:52 [E] 用户没有设置默认案场
3705
+2018/09/12 18:56:54 [E] 用户没有设置默认案场
3706
+2018/09/12 18:56:55 [E] 用户没有设置默认案场
3707
+2018/09/12 18:56:56 [E] 用户没有设置默认案场
3708
+2018/09/12 18:56:56 [E] 保存优惠券关联内容失败: Error 1062: Duplicate entry 'dae9fcf2-9b84-4280-9266-e0a0f684e51f-01ae1f3c-168c-48ba-bbff-066' for key 'PRIMARY'
3709
+2018/09/12 18:57:42 [E] 用户没有设置默认案场
3710
+2018/09/12 18:57:42 [E] 保存优惠券关联内容失败: Error 1062: Duplicate entry 'dae9fcf2-9b84-4280-9266-e0a0f684e51f' for key 'PRIMARY'
3711
+2018/09/12 18:57:47 [E] 用户没有设置默认案场
3712
+2018/09/12 18:57:47 [E] 保存优惠券关联内容失败: Error 1062: Duplicate entry 'dae9fcf2-9b84-4280-9266-e0a0f684e51f' for key 'PRIMARY'
3713
+2018/09/12 18:59:36 [E] 用户没有设置默认案场
3714
+2018/09/12 18:59:45 [E] 用户没有设置默认案场
3715
+2018/09/12 18:59:47 [E] 用户没有设置默认案场
3716
+2018/09/12 18:59:48 [E] 用户没有设置默认案场
3717
+2018/09/12 18:59:49 [E] 用户没有设置默认案场
3718
+2018/09/12 19:01:57 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
3719
+2018/09/12 19:01:57 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_09EZp439xydHB6Ew0PPAYHxIhZyWrOOQWxBbVZDC_MYiX9G9-9njqzM1AJZE5hoTZ0m81s4q8e4hgb8sDrbDeTLWxn_t3CTBKpS6qnDiWiAL8j9-_wqRbGbK9rSzkdCa_Nlq4Wuv-sK99jolUCKgACAGOW","expires_in":7200})
3720
+2018/09/12 19:01:57 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_09EZp439xydHB6Ew0PPAYHxIhZyWrOOQWxBbVZDC_MYiX9G9-9njqzM1AJZE5hoTZ0m81s4q8e4hgb8sDrbDeTLWxn_t3CTBKpS6qnDiWiAL8j9-_wqRbGbK9rSzkdCa_Nlq4Wuv-sK99jolUCKgACAGOW expires_in:7200])
3721
+2018/09/12 19:03:01 [E] 用户没有设置默认案场
3722
+2018/09/12 19:03:03 [E] 用户没有设置默认案场
3723
+2018/09/12 19:03:04 [E] 用户没有设置默认案场
3724
+2018/09/12 19:03:06 [E] 用户没有设置默认案场
3725
+2018/09/12 19:03:08 [E] 用户没有设置默认案场
3726
+2018/09/12 19:05:52 [E] 用户没有设置默认案场
3727
+2018/09/12 19:05:54 [E] 用户没有设置默认案场
3728
+2018/09/12 19:09:06 [E] 用户没有设置默认案场
3729
+2018/09/12 19:09:07 [E] 用户没有设置默认案场
3730
+2018/09/12 19:10:55 [E] 用户没有设置默认案场
3731
+2018/09/12 19:11:08 [E] 用户没有设置默认案场
3732
+2018/09/12 19:11:08 [E] 用户没有设置默认案场
3733
+2018/09/12 19:11:58 [E] 用户没有设置默认案场
3734
+2018/09/12 19:11:58 [E] 用户没有设置默认案场
3735
+2018/09/12 19:14:08 [E] 用户没有设置默认案场
3736
+2018/09/12 19:15:05 [E] 用户没有设置默认案场
3737
+2018/09/12 19:15:05 [E] 用户没有设置默认案场
3738
+2018/09/12 19:15:12 [E] 用户没有设置默认案场
3739
+2018/09/12 19:17:11 [E] 用户没有设置默认案场
3740
+2018/09/12 19:17:38 [E] 用户没有设置默认案场
3741
+2018/09/12 19:17:38 [E] 用户没有设置默认案场
3742
+2018/09/12 19:18:09 [E] 用户没有设置默认案场
3743
+2018/09/12 19:19:22 [E] 用户没有设置默认案场
3744
+2018/09/12 19:19:23 [E] 用户没有设置默认案场
3745
+2018/09/12 19:20:26 [E] 用户没有设置默认案场
3746
+2018/09/12 19:20:26 [E] 用户没有设置默认案场
3747
+2018/09/12 19:21:00 [E] 用户没有设置默认案场
3748
+2018/09/12 19:21:01 [E] 用户没有设置默认案场
3749
+2018/09/12 19:21:02 [E] 用户没有设置默认案场
3750
+2018/09/12 19:21:02 [E] 用户没有设置默认案场
3751
+2018/09/12 19:21:02 [E] 用户没有设置默认案场
3752
+2018/09/12 19:21:02 [E] 用户没有设置默认案场
3753
+2018/09/12 19:21:03 [E] 用户没有设置默认案场
3754
+2018/09/12 19:21:03 [E] 用户没有设置默认案场
3755
+2018/09/12 19:21:03 [E] 用户没有设置默认案场
3756
+2018/09/12 19:21:03 [E] 用户没有设置默认案场
3757
+2018/09/12 19:21:03 [E] 用户没有设置默认案场
3758
+2018/09/12 19:22:05 [E] 用户没有设置默认案场
3759
+2018/09/12 19:22:08 [E] 用户没有设置默认案场
3760
+2018/09/12 19:22:12 [E] 用户没有设置默认案场
3761
+2018/09/12 19:22:18 [E] 用户没有设置默认案场
3762
+2018/09/12 19:22:24 [E] 用户没有设置默认案场
3763
+2018/09/12 19:22:29 [E] 用户没有设置默认案场
3764
+2018/09/12 19:22:30 [E] 用户没有设置默认案场
3765
+2018/09/12 19:27:33 [E] 用户没有设置默认案场
3766
+2018/09/12 19:27:35 [E] 用户没有设置默认案场
3767
+2018/09/12 19:28:33 [E] 用户没有设置默认案场
3768
+2018/09/12 19:28:36 [E] 用户没有设置默认案场
3769
+2018/09/12 19:29:02 [E] 用户没有设置默认案场
3770
+2018/09/12 19:29:03 [E] 用户没有设置默认案场
3771
+2018/09/12 19:29:07 [E] 用户没有设置默认案场
3772
+2018/09/12 19:29:08 [E] 用户没有设置默认案场
3773
+2018/09/12 19:29:09 [E] 用户没有设置默认案场
3774
+2018/09/12 19:29:14 [E] 用户没有设置默认案场
3775
+2018/09/12 19:29:16 [E] 用户没有设置默认案场
3776
+2018/09/12 19:29:17 [E] 用户没有设置默认案场
3777
+2018/09/12 19:29:22 [E] 用户没有设置默认案场
3778
+2018/09/12 19:32:43 [E] 用户没有设置默认案场
3779
+2018/09/12 19:32:45 [E] 用户没有设置默认案场
3780
+2018/09/12 19:33:06 [E] 用户没有设置默认案场
3781
+2018/09/12 19:33:44 [E] 用户没有设置默认案场
3782
+2018/09/12 19:34:26 [E] 用户没有设置默认案场
3783
+2018/09/12 19:34:28 [E] 用户没有设置默认案场
3784
+2018/09/12 19:34:30 [E] 用户没有设置默认案场
3785
+2018/09/12 19:35:49 [E] 用户没有设置默认案场
3786
+2018/09/12 19:35:49 [E] 用户没有设置默认案场
3787
+2018/09/12 19:36:06 [E] 用户没有设置默认案场
3788
+2018/09/12 19:37:28 [E] 用户没有设置默认案场
3789
+2018/09/12 19:37:28 [E] 用户没有设置默认案场
3790
+2018/09/12 19:39:23 [E] 用户没有设置默认案场
3791
+2018/09/12 19:39:44 [E] 用户没有设置默认案场
3792
+2018/09/12 19:39:57 [E] 用户没有设置默认案场
3793
+2018/09/12 19:39:57 [E] 用户没有设置默认案场
3794
+2018/09/12 19:40:23 [E] 用户没有设置默认案场
3795
+2018/09/12 19:40:23 [E] 用户没有设置默认案场
3796
+2018/09/12 19:41:24 [E] 用户没有设置默认案场
3797
+2018/09/12 19:41:25 [E] 用户没有设置默认案场
3798
+2018/09/12 19:41:34 [E] 用户没有设置默认案场
3799
+2018/09/12 19:41:45 [E] 用户没有设置默认案场
3800
+2018/09/12 19:42:34 [E] 用户没有设置默认案场
3801
+2018/09/12 19:42:41 [E] 用户没有设置默认案场
3802
+2018/09/12 19:42:41 [E] 用户没有设置默认案场
3803
+2018/09/12 19:43:17 [E] 用户没有设置默认案场
3804
+2018/09/12 19:43:26 [E] 用户没有设置默认案场
3805
+2018/09/12 19:43:42 [E] 用户没有设置默认案场
3806
+2018/09/12 19:43:42 [E] 用户没有设置默认案场
3807
+2018/09/12 19:45:21 [E] 用户没有设置默认案场
3808
+2018/09/12 19:45:23 [E] 用户没有设置默认案场
3809
+2018/09/12 19:45:24 [E] 用户没有设置默认案场
3810
+2018/09/12 19:45:24 [E] 用户没有设置默认案场
3811
+2018/09/12 19:45:37 [E] 用户没有设置默认案场
3812
+2018/09/12 19:45:38 [E] 用户没有设置默认案场
3813
+2018/09/12 19:45:38 [E] 用户没有设置默认案场
3814
+2018/09/12 19:45:50 [E] 用户没有设置默认案场
3815
+2018/09/12 19:45:51 [E] 用户没有设置默认案场
3816
+2018/09/12 19:45:51 [E] 用户没有设置默认案场
3817
+2018/09/12 19:47:14 [E] 用户没有设置默认案场
3818
+2018/09/12 19:47:16 [E] 用户没有设置默认案场
3819
+2018/09/12 19:47:17 [E] 用户没有设置默认案场
3820
+2018/09/12 19:47:17 [E] 用户没有设置默认案场
3821
+2018/09/12 19:49:12 [E] 用户没有设置默认案场
3822
+2018/09/12 19:49:14 [E] 用户没有设置默认案场
3823
+2018/09/12 19:49:15 [E] 用户没有设置默认案场
3824
+2018/09/12 19:49:16 [E] 用户没有设置默认案场
3825
+2018/09/12 19:50:23 [E] 用户没有设置默认案场
3826
+2018/09/12 19:50:24 [E] 用户没有设置默认案场
3827
+2018/09/12 19:50:26 [E] 用户没有设置默认案场
3828
+2018/09/12 19:50:26 [E] 用户没有设置默认案场
3829
+2018/09/12 19:51:37 [E] 用户没有设置默认案场
3830
+2018/09/12 19:51:38 [E] 用户没有设置默认案场
3831
+2018/09/12 19:51:39 [E] 用户没有设置默认案场
3832
+2018/09/12 19:51:39 [E] 用户没有设置默认案场
3833
+2018/09/12 19:52:00 [E] 用户没有设置默认案场
3834
+2018/09/12 19:52:00 [E] 用户没有设置默认案场
3835
+2018/09/12 19:53:02 [E] 用户没有设置默认案场
3836
+2018/09/12 19:53:03 [E] 用户没有设置默认案场
3837
+2018/09/12 19:53:11 [E] 用户没有设置默认案场
3838
+2018/09/12 19:53:13 [E] 用户没有设置默认案场
3839
+2018/09/12 19:53:16 [E] 用户没有设置默认案场
3840
+2018/09/12 19:53:30 [E] 用户没有设置默认案场
3841
+2018/09/12 19:53:30 [E] 用户没有设置默认案场
3842
+2018/09/12 19:53:30 [E] 用户没有设置默认案场
3843
+2018/09/12 19:55:03 [E] 用户没有设置默认案场
3844
+2018/09/12 19:55:03 [E] 用户没有设置默认案场
3845
+2018/09/12 19:57:35 [E] 用户没有设置默认案场
3846
+2018/09/12 19:57:35 [E] 用户没有设置默认案场
3847
+2018/09/12 19:57:57 [E] 用户没有设置默认案场
3848
+2018/09/12 19:57:57 [E] 保存优惠券图片失败: Error 1062: Duplicate entry 'c940ace8-36db-41e3-99ab-d112c14ce7ad' for key 'PRIMARY'
3849
+2018/09/12 19:59:33 [E] 用户没有设置默认案场
3850
+2018/09/12 19:59:33 [E] 用户没有设置默认案场
3851
+2018/09/12 20:00:31 [E] 用户没有设置默认案场
3852
+2018/09/12 20:00:31 [E] 用户没有设置默认案场
3853
+2018/09/12 20:00:31 [E] 用户没有设置默认案场
3854
+2018/09/12 20:01:05 [E] 用户没有设置默认案场
3855
+2018/09/12 20:01:05 [E] 用户没有设置默认案场
3856
+2018/09/12 20:01:11 [E] 用户没有设置默认案场
3857
+2018/09/12 20:01:11 [E] 更新优惠券图片失败: Error 1062: Duplicate entry 'c940ace8-36db-41e3-99ab-d112c14ce7ad' for key 'PRIMARY'
3858
+2018/09/12 20:03:33 [E] 用户没有设置默认案场
3859
+2018/09/12 20:03:33 [E] 用户没有设置默认案场
3860
+2018/09/12 20:03:33 [E] 用户没有设置默认案场
3861
+2018/09/12 20:03:36 [E] 用户没有设置默认案场
3862
+2018/09/12 20:03:38 [E] 用户没有设置默认案场
3863
+2018/09/12 20:03:41 [E] 用户没有设置默认案场
3864
+2018/09/12 20:03:42 [E] 用户没有设置默认案场
3865
+2018/09/12 20:03:47 [E] 用户没有设置默认案场
3866
+2018/09/12 20:03:49 [E] 用户没有设置默认案场
3867
+2018/09/12 20:08:05 [E] 用户没有设置默认案场
3868
+2018/09/12 20:08:10 [E] 用户没有设置默认案场
3869
+2018/09/12 20:08:13 [E] 用户没有设置默认案场
3870
+2018/09/12 20:08:18 [E] 用户没有设置默认案场
3871
+2018/09/12 20:08:29 [E] 用户没有设置默认案场
3872
+2018/09/12 20:08:31 [E] 用户没有设置默认案场
3873
+2018/09/12 20:09:39 [E] 用户没有设置默认案场
3874
+2018/09/12 20:09:40 [E] 用户没有设置默认案场
3875
+2018/09/12 20:10:04 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
3876
+2018/09/12 20:10:04 [E] 获取组织信息失败: 没有查询到机构信息
3877
+2018/09/12 20:10:04 [E] 用户没有设置默认案场
3878
+2018/09/12 20:10:34 [E] 用户没有设置默认案场
3879
+2018/09/12 20:10:34 [E] 用户没有设置默认案场
3880
+2018/09/12 20:16:15 [E] 用户没有设置默认案场
3881
+2018/09/12 20:16:15 [E] 用户没有设置默认案场
3882
+2018/09/12 20:16:15 [E] 用户没有设置默认案场
3883
+2018/09/12 20:16:38 [E] 用户没有设置默认案场
3884
+2018/09/12 20:16:38 [E] 用户没有设置默认案场
3885
+2018/09/12 20:16:38 [E] 用户没有设置默认案场
3886
+2018/09/12 20:18:00 [E] 用户没有设置默认案场
3887
+2018/09/12 20:18:00 [E] 用户没有设置默认案场
3888
+2018/09/12 20:18:00 [E] 用户没有设置默认案场
3889
+2018/09/12 20:18:23 [E] 用户没有设置默认案场
3890
+2018/09/12 20:18:25 [E] 用户没有设置默认案场
3891
+2018/09/12 20:18:27 [E] 用户没有设置默认案场
3892
+2018/09/12 20:18:27 [E] 用户没有设置默认案场
3893
+2018/09/12 20:18:28 [E] 用户没有设置默认案场
3894
+2018/09/12 20:19:43 [E] 用户没有设置默认案场
3895
+2018/09/12 20:19:43 [E] 用户没有设置默认案场
3896
+2018/09/12 20:19:44 [E] 用户没有设置默认案场
3897
+2018/09/12 20:23:16 [E] 用户没有设置默认案场
3898
+2018/09/12 20:23:16 [E] 用户没有设置默认案场
3899
+2018/09/12 20:23:16 [E] 用户没有设置默认案场
3900
+2018/09/12 20:23:56 [E] 用户没有设置默认案场
3901
+2018/09/12 20:23:56 [E] 用户没有设置默认案场
3902
+2018/09/12 20:23:56 [E] 用户没有设置默认案场
3903
+2018/09/12 20:23:56 [E] 用户没有设置默认案场
3904
+2018/09/12 20:24:15 [E] 用户没有设置默认案场
3905
+2018/09/12 20:24:15 [E] 用户没有设置默认案场
3906
+2018/09/12 20:24:15 [E] 用户没有设置默认案场
3907
+2018/09/12 20:24:33 [E] 用户没有设置默认案场
3908
+2018/09/12 20:24:33 [E] 用户没有设置默认案场
3909
+2018/09/12 20:24:33 [E] 用户没有设置默认案场
3910
+2018/09/12 20:25:09 [E] 用户没有设置默认案场
3911
+2018/09/12 20:25:12 [E] 用户没有设置默认案场
3912
+2018/09/12 20:25:14 [E] 用户没有设置默认案场
3913
+2018/09/12 20:25:14 [E] 用户没有设置默认案场
3914
+2018/09/12 20:25:15 [E] 用户没有设置默认案场
3915
+2018/09/12 20:26:42 [E] 用户没有设置默认案场
3916
+2018/09/12 20:26:42 [E] 用户没有设置默认案场
3917
+2018/09/12 20:26:43 [E] 用户没有设置默认案场
3918
+2018/09/12 20:26:43 [E] 用户没有设置默认案场
3919
+2018/09/12 20:26:50 [E] 用户没有设置默认案场
3920
+2018/09/12 20:27:15 [E] 用户没有设置默认案场
3921
+2018/09/12 20:27:15 [E] 用户没有设置默认案场
3922
+2018/09/12 20:27:16 [E] 用户没有设置默认案场
3923
+2018/09/12 20:27:18 [E] 用户没有设置默认案场
3924
+2018/09/12 20:27:18 [E] 用户没有设置默认案场
3925
+2018/09/12 20:27:18 [E] 用户没有设置默认案场
3926
+2018/09/12 20:27:48 [E] 用户没有设置默认案场
3927
+2018/09/12 20:28:14 [E] 用户没有设置默认案场
3928
+2018/09/12 20:28:16 [E] 用户没有设置默认案场
3929
+2018/09/12 20:28:18 [E] 用户没有设置默认案场
3930
+2018/09/12 20:28:18 [E] 用户没有设置默认案场
3931
+2018/09/12 20:28:18 [E] 用户没有设置默认案场
3932
+2018/09/12 20:28:20 [E] 用户没有设置默认案场
3933
+2018/09/12 20:28:23 [E] 用户没有设置默认案场
3934
+2018/09/12 20:28:34 [E] 用户没有设置默认案场
3935
+2018/09/12 20:28:44 [E] 用户没有设置默认案场
3936
+2018/09/12 20:28:45 [E] 用户没有设置默认案场
3937
+2018/09/12 20:28:59 [E] 用户没有设置默认案场
3938
+2018/09/12 20:28:59 [E] 用户没有设置默认案场
3939
+2018/09/12 20:28:59 [E] 用户没有设置默认案场
3940
+2018/09/12 20:29:08 [E] 用户没有设置默认案场
3941
+2018/09/12 20:29:34 [E] 用户没有设置默认案场
3942
+2018/09/12 20:39:24 [E] 用户没有设置默认案场
3943
+2018/09/12 20:39:27 [E] 用户没有设置默认案场
3944
+2018/09/12 20:39:28 [E] 用户没有设置默认案场
3945
+2018/09/12 20:39:29 [E] 用户没有设置默认案场
3946
+2018/09/12 20:39:29 [E] 用户没有设置默认案场
3947
+2018/09/12 20:40:26 [E] 用户没有设置默认案场
3948
+2018/09/12 20:40:26 [E] 用户没有设置默认案场
3949
+2018/09/12 20:40:27 [E] 用户没有设置默认案场
3950
+2018/09/12 20:40:27 [E] 用户没有设置默认案场
3951
+2018/09/12 20:40:27 [E] 获取优惠券失败: Error 1054: Unknown column 't.coupon_type_id' in 'on clause'
3952
+2018/09/12 20:41:41 [E] 用户没有设置默认案场
3953
+2018/09/12 20:41:43 [E] 用户没有设置默认案场
3954
+2018/09/12 20:41:44 [E] 用户没有设置默认案场
3955
+2018/09/12 20:41:45 [E] 用户没有设置默认案场
3956
+2018/09/12 20:41:45 [E] 用户没有设置默认案场
3957
+2018/09/12 20:41:49 [E] 用户没有设置默认案场
3958
+2018/09/12 20:41:50 [E] 用户没有设置默认案场
3959
+2018/09/12 20:41:59 [E] 用户没有设置默认案场
3960
+2018/09/12 20:41:59 [E] 用户没有设置默认案场
3961
+2018/09/12 20:41:59 [E] 用户没有设置默认案场
3962
+2018/09/12 20:42:07 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
3963
+2018/09/12 20:42:07 [E] 获取组织信息失败: 没有查询到机构信息
3964
+2018/09/12 20:42:07 [E] 用户没有设置默认案场
3965
+2018/09/12 20:42:14 [E] 用户没有设置默认案场
3966
+2018/09/12 20:44:08 [E] 用户没有设置默认案场
3967
+2018/09/12 20:44:08 [E] 用户没有设置默认案场
3968
+2018/09/12 20:47:17 [E] 用户没有设置默认案场
3969
+2018/09/12 20:47:17 [E] 用户没有设置默认案场
3970
+2018/09/12 20:47:21 [E] 用户没有设置默认案场
3971
+2018/09/12 20:48:13 [E] 用户没有设置默认案场
3972
+2018/09/12 21:05:07 [E] 用户没有设置默认案场
3973
+2018/09/12 21:05:10 [E] 用户没有设置默认案场
3974
+2018/09/12 21:07:42 [E] 用户没有设置默认案场
3975
+2018/09/12 21:07:44 [E] 用户没有设置默认案场
3976
+2018/09/12 21:07:44 [E] 用户没有设置默认案场
3977
+2018/09/12 21:07:50 [E] 用户没有设置默认案场
3978
+2018/09/12 21:12:30 [E] 用户没有设置默认案场
3979
+2018/09/12 21:12:32 [E] 用户没有设置默认案场
3980
+2018/09/12 21:12:33 [E] 用户没有设置默认案场
3981
+2018/09/12 21:20:54 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
3982
+2018/09/12 21:20:54 [E] 获取组织信息失败: 没有查询到机构信息
3983
+2018/09/12 21:20:54 [E] 用户没有设置默认案场
3984
+2018/09/12 21:23:31 [E] 用户没有设置默认案场
3985
+2018/09/12 21:23:33 [E] 用户没有设置默认案场
3986
+2018/09/12 21:23:34 [E] 用户没有设置默认案场
3987
+2018/09/12 21:24:35 [E] 用户没有设置默认案场
3988
+2018/09/12 21:24:41 [E] 用户没有设置默认案场
3989
+2018/09/12 21:24:44 [E] 用户没有设置默认案场
3990
+2018/09/12 21:24:48 [E] 用户没有设置默认案场
3991
+2018/09/12 21:24:51 [E] 用户没有设置默认案场
3992
+2018/09/12 21:24:54 [E] 用户没有设置默认案场
3993
+2018/09/12 21:33:38 [E] 用户没有设置默认案场
3994
+2018/09/12 21:33:40 [E] 用户没有设置默认案场
3995
+2018/09/12 21:33:40 [E] 用户没有设置默认案场
3996
+2018/09/12 21:33:42 [E] 用户没有设置默认案场
3997
+2018/09/12 21:33:42 [E] 用户没有设置默认案场
3998
+2018/09/12 21:34:26 [E] 用户没有设置默认案场
3999
+2018/09/12 21:34:26 [E] 用户没有设置默认案场
4000
+2018/09/12 21:34:49 [E] 用户没有设置默认案场
4001
+2018/09/12 21:34:49 [E] 用户没有设置默认案场
4002
+2018/09/12 21:34:50 [E] 用户没有设置默认案场
4003
+2018/09/12 21:34:50 [E] 用户没有设置默认案场
4004
+2018/09/12 21:34:54 [E] 用户没有设置默认案场
4005
+2018/09/12 21:34:54 [E] 用户没有设置默认案场
4006
+2018/09/12 21:35:41 [E] 用户没有设置默认案场
4007
+2018/09/12 21:35:41 [E] 用户没有设置默认案场
4008
+2018/09/12 21:36:12 [E] 用户没有设置默认案场
4009
+2018/09/12 21:36:12 [E] 用户没有设置默认案场
4010
+2018/09/12 21:36:16 [E] 用户没有设置默认案场
4011
+2018/09/12 21:36:17 [E] 用户没有设置默认案场
4012
+2018/09/12 21:36:19 [E] 用户没有设置默认案场
4013
+2018/09/12 21:36:19 [E] 用户没有设置默认案场
4014
+2018/09/12 21:36:40 [E] 用户没有设置默认案场
4015
+2018/09/12 21:36:40 [E] 用户没有设置默认案场
4016
+2018/09/12 21:36:45 [E] 用户没有设置默认案场
4017
+2018/09/12 21:36:45 [E] 用户没有设置默认案场
4018
+2018/09/12 21:36:45 [E] 用户没有设置默认案场
4019
+2018/09/12 21:36:46 [E] 用户没有设置默认案场
4020
+2018/09/12 21:36:47 [E] 用户没有设置默认案场
4021
+2018/09/12 21:37:32 [E] 用户没有设置默认案场
4022
+2018/09/12 21:37:32 [E] 用户没有设置默认案场
4023
+2018/09/12 21:37:32 [E] 用户没有设置默认案场
4024
+2018/09/12 21:37:34 [E] 用户没有设置默认案场
4025
+2018/09/12 21:37:34 [E] 用户没有设置默认案场
4026
+2018/09/12 21:37:45 [E] 用户没有设置默认案场
4027
+2018/09/12 21:37:45 [E] 用户没有设置默认案场
4028
+2018/09/12 21:40:34 [E] 用户没有设置默认案场
4029
+2018/09/12 21:40:34 [E] 用户没有设置默认案场
4030
+2018/09/12 21:40:42 [E] 用户没有设置默认案场
4031
+2018/09/12 21:40:43 [E] 用户没有设置默认案场
4032
+2018/09/12 21:40:55 [E] 用户没有设置默认案场
4033
+2018/09/12 21:40:55 [E] 用户没有设置默认案场
4034
+2018/09/12 21:41:02 [E] 用户没有设置默认案场
4035
+2018/09/12 21:41:03 [E] 用户没有设置默认案场
4036
+2018/09/12 21:42:39 [E] 用户没有设置默认案场
4037
+2018/09/12 21:42:39 [E] 用户没有设置默认案场
4038
+2018/09/12 21:42:39 [E] 用户没有设置默认案场
4039
+2018/09/12 21:43:05 [E] 用户没有设置默认案场
4040
+2018/09/12 21:43:11 [E] 用户没有设置默认案场
4041
+2018/09/12 21:43:12 [E] 用户没有设置默认案场
4042
+2018/09/12 21:43:16 [E] 用户没有设置默认案场
4043
+2018/09/12 21:43:16 [E] 获取客户列表失败: Error 1054: Unknown column 't.user_name' in 'where clause'
4044
+2018/09/12 21:43:47 [E] 用户没有设置默认案场
4045
+2018/09/12 21:43:47 [E] 用户没有设置默认案场
4046
+2018/09/12 21:44:11 [E] 用户没有设置默认案场
4047
+2018/09/12 21:44:13 [E] 用户没有设置默认案场
4048
+2018/09/12 21:44:15 [E] 用户没有设置默认案场
4049
+2018/09/12 21:44:15 [E] 用户没有设置默认案场
4050
+2018/09/12 21:44:16 [E] 用户没有设置默认案场
4051
+2018/09/12 21:44:18 [E] 用户没有设置默认案场
4052
+2018/09/12 21:44:18 [E] 获取客户列表失败: sql: statement expects 4 inputs; got 2
4053
+2018/09/12 21:44:59 [E] 用户没有设置默认案场
4054
+2018/09/12 21:45:01 [E] 用户没有设置默认案场
4055
+2018/09/12 21:45:04 [E] 用户没有设置默认案场
4056
+2018/09/12 21:45:06 [E] 用户没有设置默认案场
4057
+2018/09/12 21:45:08 [E] 用户没有设置默认案场
4058
+2018/09/12 21:45:09 [E] 用户没有设置默认案场
4059
+2018/09/12 21:45:09 [E] 用户没有设置默认案场
4060
+2018/09/12 21:45:11 [E] 用户没有设置默认案场
4061
+2018/09/12 21:45:12 [E] 用户没有设置默认案场
4062
+2018/09/12 21:45:14 [E] 用户没有设置默认案场
4063
+2018/09/12 21:45:14 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4064
+2018/09/12 21:45:14 [E] 获取组织信息失败: 没有查询到机构信息
4065
+2018/09/12 21:45:14 [E] 用户没有设置默认案场
4066
+2018/09/12 21:45:17 [E] 用户没有设置默认案场
4067
+2018/09/12 21:45:22 [E] 用户没有设置默认案场
4068
+2018/09/12 21:45:45 [E] 用户没有设置默认案场
4069
+2018/09/12 21:45:49 [E] 用户没有设置默认案场
4070
+2018/09/12 21:46:03 [E] 用户没有设置默认案场
4071
+2018/09/12 21:46:03 [E] 用户没有设置默认案场
4072
+2018/09/12 21:46:05 [E] 用户没有设置默认案场
4073
+2018/09/12 21:46:05 [E] 用户没有设置默认案场
4074
+2018/09/12 21:46:06 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4075
+2018/09/12 21:46:06 [E] 获取组织信息失败: 没有查询到机构信息
4076
+2018/09/12 21:46:06 [E] 用户没有设置默认案场
4077
+2018/09/12 21:46:28 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4078
+2018/09/12 21:46:28 [E] 获取组织信息失败: 没有查询到机构信息
4079
+2018/09/12 21:46:28 [E] 用户没有设置默认案场
4080
+2018/09/12 21:46:35 [E] 用户没有设置默认案场
4081
+2018/09/12 21:48:10 [E] 用户没有设置默认案场
4082
+2018/09/12 21:48:15 [E] 用户没有设置默认案场
4083
+2018/09/12 21:48:52 [E] 用户没有设置默认案场
4084
+2018/09/12 21:48:52 [E] 用户没有设置默认案场
4085
+2018/09/12 21:48:56 [E] 用户没有设置默认案场
4086
+2018/09/12 21:48:56 [E] 用户没有设置默认案场
4087
+2018/09/12 21:48:58 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4088
+2018/09/12 21:48:58 [E] 获取组织信息失败: 没有查询到机构信息
4089
+2018/09/12 21:48:58 [E] 用户没有设置默认案场
4090
+2018/09/12 21:49:13 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4091
+2018/09/12 21:49:13 [E] 获取组织信息失败: 没有查询到机构信息
4092
+2018/09/12 21:49:13 [E] 用户没有设置默认案场
4093
+2018/09/12 21:49:17 [E] 用户没有设置默认案场
4094
+2018/09/12 21:51:19 [E] 用户没有设置默认案场
4095
+2018/09/12 21:51:19 [E] 用户没有设置默认案场
4096
+2018/09/12 21:51:26 [E] 用户没有设置默认案场
4097
+2018/09/12 21:51:26 [E] 用户没有设置默认案场
4098
+2018/09/12 21:51:26 [E] 用户没有设置默认案场
4099
+2018/09/12 21:51:28 [E] 用户没有设置默认案场
4100
+2018/09/12 21:51:29 [E] 用户没有设置默认案场
4101
+2018/09/12 21:51:30 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4102
+2018/09/12 21:51:30 [E] 获取组织信息失败: 没有查询到机构信息
4103
+2018/09/12 21:51:30 [E] 用户没有设置默认案场
4104
+2018/09/12 21:56:03 [E] 用户没有设置默认案场
4105
+2018/09/12 21:56:06 [E] 用户没有设置默认案场
4106
+2018/09/12 21:56:07 [E] 用户没有设置默认案场
4107
+2018/09/12 21:56:07 [E] 用户没有设置默认案场
4108
+2018/09/12 21:56:43 [E] 用户没有设置默认案场
4109
+2018/09/12 21:56:46 [E] 用户没有设置默认案场
4110
+2018/09/12 21:56:47 [E] 用户没有设置默认案场
4111
+2018/09/12 21:56:50 [E] 用户没有设置默认案场
4112
+2018/09/12 21:57:03 [E] 用户没有设置默认案场
4113
+2018/09/12 21:57:03 [E] 用户没有设置默认案场
4114
+2018/09/12 21:57:07 [E] 用户没有设置默认案场
4115
+2018/09/12 21:57:07 [E] 用户没有设置默认案场
4116
+2018/09/12 21:57:07 [E] 用户没有设置默认案场
4117
+2018/09/12 21:57:27 [E] 用户没有设置默认案场
4118
+2018/09/12 21:57:46 [E] 用户没有设置默认案场
4119
+2018/09/12 21:57:46 [E] 用户没有设置默认案场
4120
+2018/09/12 21:57:49 [E] 用户没有设置默认案场
4121
+2018/09/12 21:58:09 [E] 用户没有设置默认案场
4122
+2018/09/12 21:58:09 [E] 用户没有设置默认案场
4123
+2018/09/12 21:58:58 [E] 用户没有设置默认案场
4124
+2018/09/12 21:59:00 [E] 用户没有设置默认案场
4125
+2018/09/12 21:59:30 [E] 用户没有设置默认案场
4126
+2018/09/12 21:59:30 [E] 用户没有设置默认案场
4127
+2018/09/12 22:01:11 [E] 用户没有设置默认案场
4128
+2018/09/12 22:01:15 [E] 用户没有设置默认案场
4129
+2018/09/12 22:01:15 [E] 用户没有设置默认案场
4130
+2018/09/12 22:01:18 [E] 用户没有设置默认案场
4131
+2018/09/12 22:01:58 [E] 用户没有设置默认案场
4132
+2018/09/12 22:03:08 [E] 用户没有设置默认案场
4133
+2018/09/12 22:03:10 [E] 用户没有设置默认案场
4134
+2018/09/12 22:05:22 [E] 用户没有设置默认案场
4135
+2018/09/12 22:05:28 [E] 用户没有设置默认案场
4136
+2018/09/12 22:05:53 [E] 用户没有设置默认案场
4137
+2018/09/12 22:06:24 [E] 用户没有设置默认案场
4138
+2018/09/12 22:06:29 [E] 用户没有设置默认案场
4139
+2018/09/12 22:06:32 [E] 用户没有设置默认案场
4140
+2018/09/12 22:06:34 [E] 用户没有设置默认案场
4141
+2018/09/12 22:07:06 [E] 用户没有设置默认案场
4142
+2018/09/12 22:07:09 [E] 用户没有设置默认案场
4143
+2018/09/12 22:07:11 [E] 用户没有设置默认案场
4144
+2018/09/12 22:07:13 [E] 用户没有设置默认案场
4145
+2018/09/12 22:07:18 [E] 用户没有设置默认案场
4146
+2018/09/12 22:07:18 [E] 用户没有设置默认案场
4147
+2018/09/12 22:16:46 [E] 用户没有设置默认案场
4148
+2018/09/12 22:16:49 [E] 用户没有设置默认案场
4149
+2018/09/12 22:16:51 [E] 用户没有设置默认案场
4150
+2018/09/12 22:16:54 [E] 用户没有设置默认案场
4151
+2018/09/12 22:16:57 [E] 用户没有设置默认案场
4152
+2018/09/12 22:17:14 [E] 用户没有设置默认案场
4153
+2018/09/12 22:17:41 [E] 用户没有设置默认案场
4154
+2018/09/12 22:17:44 [E] 用户没有设置默认案场
4155
+2018/09/12 22:17:46 [E] 用户没有设置默认案场
4156
+2018/09/12 22:17:48 [E] 用户没有设置默认案场
4157
+2018/09/12 22:17:48 [E] 用户没有设置默认案场
4158
+2018/09/12 22:19:01 [E] 用户没有设置默认案场
4159
+2018/09/12 22:19:04 [E] 用户没有设置默认案场
4160
+2018/09/12 22:19:06 [E] 用户没有设置默认案场
4161
+2018/09/12 22:19:08 [E] 用户没有设置默认案场
4162
+2018/09/12 22:19:08 [E] 用户没有设置默认案场
4163
+2018/09/12 22:20:07 [E] 用户没有设置默认案场
4164
+2018/09/12 22:20:11 [E] 用户没有设置默认案场
4165
+2018/09/12 22:20:14 [E] 用户没有设置默认案场
4166
+2018/09/12 22:20:15 [E] 用户没有设置默认案场
4167
+2018/09/12 22:23:37 [E] 用户没有设置默认案场
4168
+2018/09/12 22:23:39 [E] 用户没有设置默认案场
4169
+2018/09/12 22:23:40 [E] 用户没有设置默认案场
4170
+2018/09/12 22:23:40 [E] 用户没有设置默认案场
4171
+2018/09/12 22:24:02 [E] 用户没有设置默认案场
4172
+2018/09/12 22:24:02 [E] 用户没有设置默认案场
4173
+2018/09/13 09:12:42 [E] 用户没有设置默认案场
4174
+2018/09/13 09:12:49 [E] 用户没有设置默认案场
4175
+2018/09/13 09:12:50 [E] 用户没有设置默认案场
4176
+2018/09/13 09:12:53 [E] 用户没有设置默认案场
4177
+2018/09/13 09:12:54 [E] 用户没有设置默认案场
4178
+2018/09/13 09:12:54 [E] 用户没有设置默认案场
4179
+2018/09/13 09:21:17 [E] 用户没有设置默认案场
4180
+2018/09/13 09:21:17 [E] 用户没有设置默认案场
4181
+2018/09/13 09:21:23 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4182
+2018/09/13 09:21:23 [E] 获取组织信息失败: 没有查询到机构信息
4183
+2018/09/13 09:21:23 [E] 用户没有设置默认案场
4184
+2018/09/13 09:21:51 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4185
+2018/09/13 09:21:51 [E] 获取组织信息失败: 没有查询到机构信息
4186
+2018/09/13 09:21:51 [E] 用户没有设置默认案场
4187
+2018/09/13 09:21:58 [E] 用户没有设置默认案场
4188
+2018/09/13 09:38:08 [E] 用户没有设置默认案场
4189
+2018/09/13 09:38:10 [E] 用户没有设置默认案场
4190
+2018/09/13 09:38:11 [E] 用户没有设置默认案场
4191
+2018/09/13 09:38:12 [E] 用户没有设置默认案场
4192
+2018/09/13 09:38:13 [E] 用户没有设置默认案场
4193
+2018/09/13 09:38:13 [E] 用户没有设置默认案场
4194
+2018/09/13 09:38:15 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4195
+2018/09/13 09:38:15 [E] 获取组织信息失败: 没有查询到机构信息
4196
+2018/09/13 09:38:15 [E] 用户没有设置默认案场
4197
+2018/09/13 09:38:24 [E] 用户没有设置默认案场
4198
+2018/09/13 09:38:24 [E] 用户没有设置默认案场
4199
+2018/09/13 09:38:33 [E] 用户没有设置默认案场
4200
+2018/09/13 09:38:33 [E] 用户没有设置默认案场
4201
+2018/09/13 09:38:43 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4202
+2018/09/13 09:38:43 [E] 获取组织信息失败: 没有查询到机构信息
4203
+2018/09/13 09:38:43 [E] 用户没有设置默认案场
4204
+2018/09/13 09:38:46 [E] 用户没有设置默认案场
4205
+2018/09/13 09:40:43 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4206
+2018/09/13 09:40:43 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_0fbz78PO8zxIzJ414086B3EM6kLFogtl3F9p9ubMjUEAjOg3SvS-Qcp_6sFHPpkgtJI2MG1x0Vsp4yDfZMUyjPT1Y3g0O8l9hu3p8pi3nVSOpnBsTglBqZYL_1ILMQhAIAXYC","expires_in":7200})
4207
+2018/09/13 09:40:43 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_0fbz78PO8zxIzJ414086B3EM6kLFogtl3F9p9ubMjUEAjOg3SvS-Qcp_6sFHPpkgtJI2MG1x0Vsp4yDfZMUyjPT1Y3g0O8l9hu3p8pi3nVSOpnBsTglBqZYL_1ILMQhAIAXYC expires_in:7200])
4208
+2018/09/13 09:41:11 [E] 用户没有设置默认案场
4209
+2018/09/13 09:41:12 [E] 用户没有设置默认案场
4210
+2018/09/13 09:41:25 [E] 用户没有设置默认案场
4211
+2018/09/13 09:41:56 [E] 用户没有设置默认案场
4212
+2018/09/13 09:41:56 [E] 用户没有设置默认案场
4213
+2018/09/13 09:41:58 [E] 用户没有设置默认案场
4214
+2018/09/13 09:41:58 [E] 用户没有设置默认案场
4215
+2018/09/13 09:42:47 [E] 用户没有设置默认案场
4216
+2018/09/13 09:42:47 [E] 用户没有设置默认案场
4217
+2018/09/13 09:42:50 [E] 用户没有设置默认案场
4218
+2018/09/13 09:42:50 [E] 用户没有设置默认案场
4219
+2018/09/13 09:42:52 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4220
+2018/09/13 09:42:52 [E] 获取组织信息失败: 没有查询到机构信息
4221
+2018/09/13 09:42:52 [E] 用户没有设置默认案场
4222
+2018/09/13 09:43:08 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4223
+2018/09/13 09:43:08 [E] 获取组织信息失败: 没有查询到机构信息
4224
+2018/09/13 09:43:08 [E] 用户没有设置默认案场
4225
+2018/09/13 09:43:13 [E] 解密 Base64 字串失败: illegal base64 data at input byte 0
4226
+2018/09/13 09:43:13 [E] 获取组织信息失败: 没有查询到机构信息
4227
+2018/09/13 09:43:13 [E] 用户没有设置默认案场
4228
+2018/09/13 09:43:18 [E] 用户没有设置默认案场
4229
+2018/09/13 09:45:24 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4230
+2018/09/13 09:45:24 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_kdZaxjGuRt-Lc6uzmvJ-cE-eUeTWCChtdGO-cWsbx62pvFvWXAnpV6y3dQlRzsmx3oM_TCbJrNSd-zc9yExs1JXdk44FzkodVF7MEFGQSpxdsNJkY4Acb18L5270m3_hd17609K57J3y7bl5ZAOhAFAGHV","expires_in":7200})
4231
+2018/09/13 09:45:24 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_kdZaxjGuRt-Lc6uzmvJ-cE-eUeTWCChtdGO-cWsbx62pvFvWXAnpV6y3dQlRzsmx3oM_TCbJrNSd-zc9yExs1JXdk44FzkodVF7MEFGQSpxdsNJkY4Acb18L5270m3_hd17609K57J3y7bl5ZAOhAFAGHV expires_in:7200])
4232
+2018/09/13 09:45:26 [E] 获取健身卡列表失败:Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 12
4233
+2018/09/13 09:45:31 [E] 获取健身卡列表失败:Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 12
4234
+2018/09/13 09:45:45 [E] 获取健身卡列表失败:Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 12
4235
+2018/09/13 09:47:33 [E] 用户没有设置默认案场
4236
+2018/09/13 09:47:35 [E] 用户没有设置默认案场
4237
+2018/09/13 09:47:36 [E] 用户没有设置默认案场
4238
+2018/09/13 09:47:37 [E] 用户没有设置默认案场
4239
+2018/09/13 09:47:37 [E] 用户没有设置默认案场
4240
+2018/09/13 09:48:18 [E] 用户没有设置默认案场
4241
+2018/09/13 09:51:00 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4242
+2018/09/13 09:51:01 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_qLMLMfPhTgyOKafVlISttRph0ziRpLqWhLJizxmWYRtSqZaCbV53efP97sLnviDCOD6y3TO9LEKLHEfY9tSZ4o93j7xuxMtVHGzf5C2SDGeyDxtIxdAafutYdcMGG2cz-D5boYrGM40mc_gGXEAcAJAGNJ","expires_in":7200})
4243
+2018/09/13 09:51:01 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_qLMLMfPhTgyOKafVlISttRph0ziRpLqWhLJizxmWYRtSqZaCbV53efP97sLnviDCOD6y3TO9LEKLHEfY9tSZ4o93j7xuxMtVHGzf5C2SDGeyDxtIxdAafutYdcMGG2cz-D5boYrGM40mc_gGXEAcAJAGNJ expires_in:7200])
4244
+2018/09/13 09:52:17 [E] 用户没有设置默认案场
4245
+2018/09/13 09:52:19 [E] 用户没有设置默认案场
4246
+2018/09/13 09:52:20 [E] 用户没有设置默认案场
4247
+2018/09/13 09:52:20 [E] 用户没有设置默认案场
4248
+2018/09/13 09:52:21 [E] 用户没有设置默认案场
4249
+2018/09/13 09:54:25 [E] 用户没有设置默认案场
4250
+2018/09/13 09:54:26 [E] 用户没有设置默认案场
4251
+2018/09/13 09:54:27 [E] 用户没有设置默认案场
4252
+2018/09/13 09:54:28 [E] 用户没有设置默认案场
4253
+2018/09/13 09:54:29 [E] 用户没有设置默认案场
4254
+2018/09/13 09:55:05 [E] 用户没有设置默认案场
4255
+2018/09/13 09:55:37 [E] 用户没有设置默认案场
4256
+2018/09/13 09:55:39 [E] 用户没有设置默认案场
4257
+2018/09/13 09:55:39 [E] 用户没有设置默认案场
4258
+2018/09/13 09:55:40 [E] 用户没有设置默认案场
4259
+2018/09/13 09:55:40 [E] 用户没有设置默认案场
4260
+2018/09/13 09:55:41 [E] 用户没有设置默认案场
4261
+2018/09/13 09:55:41 [E] 接收卡信息失败: json: cannot unmarshal string into Go struct field CardInfo.Price of type float32
4262
+2018/09/13 09:57:08 [E] 用户没有设置默认案场
4263
+2018/09/13 09:57:08 [E] 接收卡信息失败: json: cannot unmarshal string into Go struct field CardInfo.Price of type float32
4264
+2018/09/13 09:57:16 [E] 用户没有设置默认案场
4265
+2018/09/13 09:57:18 [E] 用户没有设置默认案场
4266
+2018/09/13 09:57:19 [E] 用户没有设置默认案场
4267
+2018/09/13 09:57:19 [E] 用户没有设置默认案场
4268
+2018/09/13 09:57:20 [E] 用户没有设置默认案场
4269
+2018/09/13 09:57:20 [E] 保存优惠券失败: Error 1054: Unknown column 'share_description' in 'field list'
4270
+2018/09/13 09:57:50 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4271
+2018/09/13 09:57:51 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_jEnNaMzzshOZGwhj94odWyxn0xLwS_-9HvVko19IBW37jb9B44HLKJltN5dDUnLe4gaCtewYdfgluvE0z1LpmyX7wEM4rGo8x0Gu2HfT-igPbyNomUmTPo42tngZCEhAHAJMO","expires_in":7200})
4272
+2018/09/13 09:57:51 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_jEnNaMzzshOZGwhj94odWyxn0xLwS_-9HvVko19IBW37jb9B44HLKJltN5dDUnLe4gaCtewYdfgluvE0z1LpmyX7wEM4rGo8x0Gu2HfT-igPbyNomUmTPo42tngZCEhAHAJMO expires_in:7200])
4273
+2018/09/13 09:58:50 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4274
+2018/09/13 09:58:50 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_uIU7e-XLIsVRjn979zRLjKz7qgb7MCnlyogvQVDGuInDWtf4fv7DlQP4BScUrX3sbgjUG3GHsnfX6nENyVfggRIhnSOD5gdnJ0nWhtTPMYspyq7TKead9JGdU_9mbwO7xOF655XLDBQAZ4ldGGRjADACCN","expires_in":7200})
4275
+2018/09/13 09:58:50 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_uIU7e-XLIsVRjn979zRLjKz7qgb7MCnlyogvQVDGuInDWtf4fv7DlQP4BScUrX3sbgjUG3GHsnfX6nENyVfggRIhnSOD5gdnJ0nWhtTPMYspyq7TKead9JGdU_9mbwO7xOF655XLDBQAZ4ldGGRjADACCN expires_in:7200])
4276
+2018/09/13 09:59:04 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4277
+2018/09/13 09:59:04 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_7T_UTFTcXc0dBU5x9zRLjKz7qgb7MCnlyogvQVDGuInDWtf4fv7DlQP4BSfDEuSwcG5kubYgBunTrl5TuBOXMXFLKexDfeLlOqIH7JfaXyKPJxbeYufvgN_ZkiNulhgMOFO6ROe9PRyqw4dvDXAjADAHBE","expires_in":7200})
4278
+2018/09/13 09:59:04 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_7T_UTFTcXc0dBU5x9zRLjKz7qgb7MCnlyogvQVDGuInDWtf4fv7DlQP4BSfDEuSwcG5kubYgBunTrl5TuBOXMXFLKexDfeLlOqIH7JfaXyKPJxbeYufvgN_ZkiNulhgMOFO6ROe9PRyqw4dvDXAjADAHBE])
4279
+2018/09/13 09:59:07 [E] 用户没有设置默认案场
4280
+2018/09/13 09:59:10 [E] 用户没有设置默认案场
4281
+2018/09/13 09:59:11 [E] 用户没有设置默认案场
4282
+2018/09/13 09:59:11 [E] 用户没有设置默认案场
4283
+2018/09/13 09:59:12 [E] 用户没有设置默认案场
4284
+2018/09/13 10:03:11 [E] 用户没有设置默认案场
4285
+2018/09/13 10:03:11 [E] 用户没有设置默认案场
4286
+2018/09/13 10:04:04 [E] 用户没有设置默认案场
4287
+2018/09/13 10:04:04 [E] 用户没有设置默认案场
4288
+2018/09/13 10:04:10 [E] 用户没有设置默认案场
4289
+2018/09/13 10:06:59 [E] 用户没有设置默认案场
4290
+2018/09/13 10:07:03 [E] 用户没有设置默认案场
4291
+2018/09/13 10:07:03 [E] 用户没有设置默认案场
4292
+2018/09/13 10:09:29 [E] 用户没有设置默认案场
4293
+2018/09/13 10:09:31 [E] 用户没有设置默认案场
4294
+2018/09/13 10:10:14 [E] 用户没有设置默认案场
4295
+2018/09/13 10:10:16 [E] 用户没有设置默认案场
4296
+2018/09/13 10:11:34 [E] 用户没有设置默认案场
4297
+2018/09/13 10:11:36 [E] 用户没有设置默认案场
4298
+2018/09/13 10:12:14 [E] 用户没有设置默认案场
4299
+2018/09/13 10:12:16 [E] 用户没有设置默认案场
4300
+2018/09/13 10:17:19 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4301
+2018/09/13 10:17:19 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_bNGv8xr_wfwXwG10Zyjvca0UIbYlLWH2LICN32RZRoCDVnS11bBtQ08LJjBrqB_q6JpgO9t1VKRqNvSKTeSRr3BNWo37K70gbexBjcQw9aBF7jJ9LJIcjxqHcVQPB0B91ZopvLUIDtQqrfV0LOBfAGAPSF","expires_in":7200})
4302
+2018/09/13 10:17:19 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_bNGv8xr_wfwXwG10Zyjvca0UIbYlLWH2LICN32RZRoCDVnS11bBtQ08LJjBrqB_q6JpgO9t1VKRqNvSKTeSRr3BNWo37K70gbexBjcQw9aBF7jJ9LJIcjxqHcVQPB0B91ZopvLUIDtQqrfV0LOBfAGAPSF expires_in:7200])
4303
+2018/09/13 10:22:27 [E] 用户没有设置默认案场
4304
+2018/09/13 10:22:29 [E] 用户没有设置默认案场
4305
+2018/09/13 10:23:27 [E] 用户没有设置默认案场
4306
+2018/09/13 10:23:28 [E] 用户没有设置默认案场
4307
+2018/09/13 10:23:48 [E] 用户没有设置默认案场
4308
+2018/09/13 10:23:50 [E] 用户没有设置默认案场
4309
+2018/09/13 10:25:07 [E] 用户没有设置默认案场
4310
+2018/09/13 10:25:13 [E] 用户没有设置默认案场
4311
+2018/09/13 10:25:27 [E] 用户没有设置默认案场
4312
+2018/09/13 10:25:29 [E] 用户没有设置默认案场
4313
+2018/09/13 10:26:00 [E] 用户没有设置默认案场
4314
+2018/09/13 10:26:02 [E] 用户没有设置默认案场
4315
+2018/09/13 10:26:03 [E] 用户没有设置默认案场
4316
+2018/09/13 10:26:04 [E] 用户没有设置默认案场
4317
+2018/09/13 10:26:31 [E] 用户没有设置默认案场
4318
+2018/09/13 10:26:33 [E] 用户没有设置默认案场
4319
+2018/09/13 10:26:33 [E] 用户没有设置默认案场
4320
+2018/09/13 10:26:34 [E] 用户没有设置默认案场
4321
+2018/09/13 10:28:05 [E] 用户没有设置默认案场
4322
+2018/09/13 10:28:06 [E] 用户没有设置默认案场
4323
+2018/09/13 10:28:07 [E] 用户没有设置默认案场
4324
+2018/09/13 10:28:08 [E] 用户没有设置默认案场
4325
+2018/09/13 10:28:09 [E] 用户没有设置默认案场
4326
+2018/09/13 10:28:22 [E] 用户没有设置默认案场
4327
+2018/09/13 10:28:25 [E] 用户没有设置默认案场
4328
+2018/09/13 10:28:26 [E] 用户没有设置默认案场
4329
+2018/09/13 10:28:26 [E] 用户没有设置默认案场
4330
+2018/09/13 10:28:32 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
4331
+2018/09/13 10:28:32 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_qTd81arrjL3zUZbFm64pd7NjpuQF7JyWKwJqk8OWq5W25wwRPIlBlRO2uLHpJ7PAp9N4h2y1mIRzvNf4J5IsvwCDSyV2P7flFytQwxQ8YkXKM0DY78zusB83JhNQxTGAAMsSjOH7u0U6FK9JDWYhAIAPIK","expires_in":7200})
4332
+2018/09/13 10:28:32 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_qTd81arrjL3zUZbFm64pd7NjpuQF7JyWKwJqk8OWq5W25wwRPIlBlRO2uLHpJ7PAp9N4h2y1mIRzvNf4J5IsvwCDSyV2P7flFytQwxQ8YkXKM0DY78zusB83JhNQxTGAAMsSjOH7u0U6FK9JDWYhAIAPIK expires_in:7200])

+ 182
- 11
models/card/card.go Прегледај датотеку

@@ -1,13 +1,17 @@
1 1
 package card
2 2
 
3 3
 import (
4
-	"jcjy/demo/models"
4
+	"errors"
5
+	"fmt"
6
+	"spaceofcheng/services/models"
5 7
 	"spaceofcheng/services/models/model"
6 8
 	"spaceofcheng/services/utils"
7 9
 	"strconv"
8 10
 	"strings"
11
+	"time"
9 12
 
10 13
 	"github.com/go-xorm/xorm"
14
+	"github.com/yl10/kit/guid"
11 15
 )
12 16
 
13 17
 // CardDAO 当前数据库操作对象
@@ -25,18 +29,185 @@ func NewCardDAO(ctx *utils.Context) *CardDAO {
25 29
 }
26 30
 
27 31
 // CardInfo 卡
28
-// type CardInfo struct {
29
-// 	model.TaCouponCard `xorm:"extends"`
30
-// 	Images             []model.TaExperienceCardVerification
31
-// 	Target             []model
32
-// }
32
+type CardInfo struct {
33
+	model.TaCouponCard `xorm:"extends"`
34
+	Images             []model.TaExperienceCardImage
35
+	Targets            []model.TaCouponCardTarget
36
+	Share              *model.TaExperienceCardShare
37
+}
33 38
 
34 39
 // GetCardList 获取卡列表
35
-func (m *CardDAO) GetCardList(caseids string, page, pageSize int) ([]model.TaCouponCard, error) {
36
-	var cards []model.TaCouponCard
37
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").Limit(pageSize, (page-1)*pageSize).Find(&cards)
38
-	return cards, err
40
+func (m *CardDAO) GetCardList(filters []string, limit []int) ([]model.TaCouponCard, int64, error) {
41
+	var cds []model.TaCouponCard
42
+
43
+	filterString := ""
44
+	if len(filters) > 0 {
45
+		filterString = strings.Join(filters, " and ")
46
+		filterString += " and "
47
+	}
48
+
49
+	sql := `select * from ta_coupon_card where %s status > ` + strconv.Itoa(models.STATUS_DEL) + ` order by create_date desc`
50
+
51
+	total, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&cds, fmt.Sprintf(sql, filterString), limit)
52
+	if err != nil {
53
+		return nil, 0, err
54
+	}
55
+
56
+	return cds, total, nil
39 57
 }
40 58
 
41 59
 // GetCardByID 获取卡明细
42
-// func (m *CardDAO) GetCardByID(cardid string)
60
+func (m *CardDAO) GetCardByID(cardid string) (*CardInfo, error) {
61
+	var card []CardInfo
62
+	sql := `select * from ta_coupon_card where card_id=? and status>` + strconv.Itoa(models.STATUS_DEL)
63
+
64
+	err := m.db.Sql(sql, cardid).Find(&card)
65
+	if err != nil {
66
+		return nil, err
67
+	}
68
+	if len(card) == 0 {
69
+		return nil, nil
70
+	}
71
+	imgs, err := m.GetCardImgsByCardID(cardid)
72
+	if err != nil {
73
+		return nil, err
74
+	}
75
+	card[0].Images = imgs
76
+	targets, err := m.GetCardTargetByCardID(cardid)
77
+	if err != nil {
78
+		return nil, err
79
+	}
80
+	card[0].Targets = targets
81
+	share, err := m.GetCardShareByCardID(cardid)
82
+	if err != nil {
83
+		return nil, err
84
+	}
85
+	card[0].Share = share
86
+	return &card[0], err
87
+}
88
+
89
+// AddCard 新增卡信息
90
+func (m *CardDAO) AddCard(card *model.TaCouponCard) error {
91
+	if card.CardId == "" {
92
+		card.CardId = guid.NewGUIDString()
93
+	}
94
+
95
+	userRaw := m.ctx.Get("user")
96
+	if userRaw != nil {
97
+		user := userRaw.(model.SysUser)
98
+		card.CreateUser = user.UserId
99
+	}
100
+
101
+	card.Status = models.STATUS_NORMAL
102
+	card.CreateDate = time.Now().Local()
103
+
104
+	if _, err := m.db.Insert(card); err != nil {
105
+		return err
106
+	}
107
+
108
+	return nil
109
+}
110
+
111
+// UpdateCard 更新优惠券
112
+func (m *CardDAO) UpdateCard(card *model.TaCouponCard, cols []string) error {
113
+	if card.CardId == "" {
114
+		return errors.New("无卡信息")
115
+	}
116
+
117
+	if _, err := m.db.Cols(cols...).Where("card_id=?", card.CardId).Update(card); err != nil {
118
+		return err
119
+	}
120
+
121
+	return nil
122
+}
123
+
124
+// DeleteCard 删除卡
125
+func (m *CardDAO) DeleteCard(id string) error {
126
+	if id == "" {
127
+		return errors.New("无卡信息")
128
+	}
129
+
130
+	card := model.TaCouponCard{
131
+		CardId: id,
132
+		Status: models.STATUS_DEL,
133
+	}
134
+
135
+	if err := m.UpdateCard(&card, []string{"status"}); err != nil {
136
+		return err
137
+	}
138
+
139
+	return nil
140
+}
141
+
142
+// SaveCustomerCard 保存用户卡
143
+func (m *CardDAO) SaveCustomerCard(card *model.TaCustomerCard) error {
144
+	if card.CustomerCardId == "" {
145
+		card.CustomerCardId = guid.NewGUIDString()
146
+	}
147
+
148
+	card.Status = models.STATUS_NORMAL
149
+
150
+	if _, err := m.db.Insert(card); err != nil {
151
+		return err
152
+	}
153
+
154
+	return nil
155
+}
156
+
157
+// SaveCustomerCards 保存用户卡
158
+func (m *CardDAO) SaveCustomerCards(cards []model.TaCustomerCard) error {
159
+	for i := range cards {
160
+		if cards[i].CustomerCardId == "" {
161
+			cards[i].CustomerCardId = guid.NewGUIDString()
162
+		}
163
+
164
+		cards[i].Status = models.STATUS_NORMAL
165
+	}
166
+
167
+	if _, err := m.db.Insert(cards); err != nil {
168
+		return err
169
+	}
170
+
171
+	return nil
172
+}
173
+
174
+// CheckCustCard 检查客户是否已经有了该卡券
175
+// 如果用户有了卡券, 但是用过了,或者卡券过期了,仍然可以再次拥有
176
+func (m *CardDAO) CheckCustCard(custID, CardID string, startDate, endDate time.Time) ([]model.TaCustomerCard, error) {
177
+	var cps []model.TaCustomerCard
178
+	query := `
179
+		SELECT
180
+			*
181
+		FROM
182
+			ta_customer_card t
183
+		WHERE
184
+			t.card_id = ?
185
+		AND t.customer_id = ?
186
+		AND t.status = ?
187
+		AND (
188
+			(t.start_date BETWEEN ? AND ?)
189
+			OR (t.end_date BETWEEN ? AND ?)
190
+			OR (
191
+				t.start_date <= ?
192
+				AND t.end_date >= ?
193
+			)
194
+		)
195
+	`
196
+
197
+	if err := m.db.SQL(
198
+		query,
199
+		CardID,
200
+		models.STATUS_NORMAL,
201
+		custID,
202
+		startDate,
203
+		endDate,
204
+		startDate,
205
+		endDate,
206
+		startDate,
207
+		endDate,
208
+	).Find(&cps); err != nil {
209
+		return nil, err
210
+	}
211
+
212
+	return cps, nil
213
+}

+ 42
- 0
models/card/image.go Прегледај датотеку

@@ -0,0 +1,42 @@
1
+package card
2
+
3
+import (
4
+	"jcjy/demo/models"
5
+	"spaceofcheng/services/models/model"
6
+	"strconv"
7
+
8
+	"github.com/yl10/kit/guid"
9
+)
10
+
11
+// GetCardImgsByCardID 根据卡id获取卡图片
12
+func (m *CardDAO) GetCardImgsByCardID(cardid string) ([]model.TaExperienceCardImage, error) {
13
+	var imgs []model.TaExperienceCardImage
14
+	err := m.db.Where("card_id=?", cardid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&imgs)
15
+	return imgs, err
16
+}
17
+
18
+// UpdateImages 更新图片 -- 插入或者更新
19
+func (m *CardDAO) UpdateImages(imgs []model.TaExperienceCardImage, cardID string) error {
20
+	if imgs == nil || len(imgs) == 0 {
21
+		return nil
22
+	}
23
+
24
+	for i := range imgs {
25
+		imgs[i].CardId = cardID
26
+
27
+		if imgs[i].CardImageId == "" {
28
+			imgs[i].CardImageId = guid.NewGUIDString()
29
+		}
30
+	}
31
+
32
+	sql := `delete from ta_experience_card_image where card_id=?`
33
+	if _, err := m.db.Exec(sql, cardID); err != nil {
34
+		return err
35
+	}
36
+
37
+	if _, err := m.db.Insert(imgs); err != nil {
38
+		return err
39
+	}
40
+
41
+	return nil
42
+}

+ 44
- 0
models/card/share.go Прегледај датотеку

@@ -0,0 +1,44 @@
1
+package card
2
+
3
+import (
4
+	"errors"
5
+	"jcjy/demo/models"
6
+	"spaceofcheng/services/models/model"
7
+
8
+	"github.com/yl10/kit/guid"
9
+)
10
+
11
+// GetCardShareByCardID 根据卡id获取体验卡对应的分享信息
12
+func (m *CardDAO) GetCardShareByCardID(cardid string) (*model.TaExperienceCardShare, error) {
13
+	var share = model.TaExperienceCardShare{}
14
+	_, err := m.db.Where("card_id=?", cardid).Get(&share)
15
+	return &share, err
16
+}
17
+
18
+// SaveCardShare 保存卡分享信息
19
+func (m *CardDAO) SaveCardShare(card *model.TaExperienceCardShare) error {
20
+	if card.CardShareId == "" {
21
+		card.CardShareId = guid.NewGUIDString()
22
+	}
23
+
24
+	card.Status = models.STATUS_NORMAL
25
+
26
+	if _, err := m.db.Insert(card); err != nil {
27
+		return err
28
+	}
29
+
30
+	return nil
31
+}
32
+
33
+// UpdateCardShare 更新卡分享信息
34
+func (m *CardDAO) UpdateCardShare(card *model.TaExperienceCardShare, cols []string) error {
35
+	if card.CardShareId == "" {
36
+		return errors.New("无卡分享信息")
37
+	}
38
+
39
+	if _, err := m.db.Cols(cols...).Where("card_share_id=?", card.CardShareId).Update(card); err != nil {
40
+		return err
41
+	}
42
+
43
+	return nil
44
+}

+ 42
- 0
models/card/target.go Прегледај датотеку

@@ -0,0 +1,42 @@
1
+package card
2
+
3
+import (
4
+	"errors"
5
+	"spaceofcheng/services/models/model"
6
+)
7
+
8
+// GetCardTargetByCardID 根据卡id获取体验卡对应的目标信息
9
+func (m *CardDAO) GetCardTargetByCardID(cardid string) ([]model.TaCouponCardTarget, error) {
10
+	var targets []model.TaCouponCardTarget
11
+	err := m.db.Where("card_id=?", cardid).Find(&targets)
12
+	return targets, err
13
+}
14
+
15
+// UpdateTarget 更新关联内容 -- 插入或者更新
16
+func (m *CardDAO) UpdateTarget(targets []model.TaCouponCardTarget, cardID string) error {
17
+	if targets == nil || len(targets) == 0 {
18
+		return nil
19
+	}
20
+
21
+	for i := range targets {
22
+		if targets[i].TargetId == "" {
23
+			return errors.New("关联内容不能为空")
24
+		}
25
+
26
+		// TODO
27
+		// 校验关联内容是否有效
28
+
29
+		targets[i].CardId = cardID
30
+	}
31
+
32
+	// var delTargets []model.TaCouponTarget
33
+	sql := `delete from ta_coupon_card_target where card_id='` + cardID + `'`
34
+	if _, err := m.db.Exec(sql); err != nil {
35
+		return err
36
+	}
37
+	if _, err := m.db.Insert(targets); err != nil {
38
+		return err
39
+	}
40
+
41
+	return nil
42
+}

+ 9
- 7
models/coupon/coupon.go Прегледај датотеку

@@ -6,6 +6,7 @@ import (
6 6
 	"spaceofcheng/services/models"
7 7
 	"spaceofcheng/services/models/model"
8 8
 	"spaceofcheng/services/utils"
9
+	"strconv"
9 10
 	"strings"
10 11
 	"time"
11 12
 
@@ -45,12 +46,11 @@ func (m *CouponDAO) GetCouponInfoByID(id string) (*CouponInfo, error) {
45 46
 
46 47
 	query := `
47 48
 		SELECT
48
-			t.*, s.coupon_type_name
49
+			*
49 50
 		FROM
50
-			ta_coupon t
51
-		LEFT JOIN td_coupon_type s ON t.coupon_type_id = s.coupon_type_id
51
+			ta_coupon
52 52
 		WHERE
53
-			t.coupon_id = ?
53
+			coupon_id = ?
54 54
 	`
55 55
 
56 56
 	if _, err := m.db.SQL(query, id).Get(cp); err != nil {
@@ -99,7 +99,7 @@ func (m *CouponDAO) GetCouponList(filters []string, limit []int) ([]model.TaCoup
99 99
 		filterString += " and "
100 100
 	}
101 101
 
102
-	sql := `select * from ta_coupon where %s status = 1 order by create_date desc`
102
+	sql := `select * from ta_coupon where %s status > ` + strconv.Itoa(models.STATUS_DEL) + ` order by create_date desc`
103 103
 
104 104
 	total, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&cps, fmt.Sprintf(sql, filterString), limit)
105 105
 	if err != nil {
@@ -121,6 +121,9 @@ func (m *CouponDAO) SaveCoupon(cp *model.TaCoupon) error {
121 121
 		cp.CreateUser = user.UserId
122 122
 	}
123 123
 
124
+	org := m.ctx.Get("org").(model.SysOrg)
125
+	cp.OrgId = org.OrgId
126
+
124 127
 	cp.Status = models.STATUS_NORMAL
125 128
 	cp.CreateDate = time.Now().Local()
126 129
 
@@ -216,12 +219,11 @@ func (m *CouponDAO) CheckCustCoupon(custID, couponID string, startDate, endDate
216 219
 			)
217 220
 		)
218 221
 	`
219
-
220 222
 	if err := m.db.SQL(
221 223
 		query,
222 224
 		couponID,
223
-		models.STATUS_NORMAL,
224 225
 		custID,
226
+		models.STATUS_NORMAL,
225 227
 		startDate,
226 228
 		endDate,
227 229
 		startDate,

+ 3
- 2
models/coupon/image.go Прегледај датотеку

@@ -20,8 +20,9 @@ func (m *CouponDAO) UpdateImages(imgs []model.TaCouponImage, couponID string) er
20 20
 		}
21 21
 	}
22 22
 
23
-	var delImgs []model.TaCouponImage
24
-	if _, err := m.db.Where("coupon_id=?", couponID).Delete(&delImgs); err != nil {
23
+	// var delImgs []model.TaCouponImage
24
+	sql := `delete from ta_coupon_image where coupon_id=?`
25
+	if _, err := m.db.Exec(sql, couponID); err != nil {
25 26
 		return err
26 27
 	}
27 28
 

+ 3
- 3
models/coupon/target.go Прегледај датотеку

@@ -22,11 +22,11 @@ func (m *CouponDAO) UpdateTarget(targets []model.TaCouponTarget, couponID string
22 22
 		targets[i].CouponId = couponID
23 23
 	}
24 24
 
25
-	var delTargets []model.TaCouponTarget
26
-	if _, err := m.db.Where("coupon_id=?", couponID).Delete(&delTargets); err != nil {
25
+	// var delTargets []model.TaCouponTarget
26
+	sql := `delete from ta_coupon_target where coupon_id='` + couponID + `'`
27
+	if _, err := m.db.Exec(sql); err != nil {
27 28
 		return err
28 29
 	}
29
-
30 30
 	if _, err := m.db.Insert(targets); err != nil {
31 31
 		return err
32 32
 	}

+ 1
- 2
models/coupon/types.go Прегледај датотеку

@@ -12,8 +12,7 @@ const (
12 12
 
13 13
 // CouponInfo 优惠券信息
14 14
 type CouponInfo struct {
15
-	model.TaCoupon
16
-	CouponTypeName string
15
+	model.TaCoupon `xorm:"extends"`
17 16
 	Share          model.TaCouponShare
18 17
 	Targets        []model.TaCouponTarget
19 18
 	Images         []model.TaCouponImage

+ 27
- 4
models/customer/customer.go Прегледај датотеку

@@ -27,7 +27,7 @@ func NewCustomerDAO(ctx *utils.Context) *CustomerDAO {
27 27
 }
28 28
 
29 29
 // CustWithWXList 客户列表
30
-func (m *CustomerDAO) CustWithWXList(phone string, page ...int) ([]CustWithWX, int64, error) {
30
+func (m *CustomerDAO) CustWithWXList(phone, username, recommendname, begindate, enddate string, page ...int) ([]CustWithWX, int64, error) {
31 31
 	org := m.ctx.Get("org").(model.SysOrg)
32 32
 
33 33
 	if phone == "" {
@@ -36,6 +36,18 @@ func (m *CustomerDAO) CustWithWXList(phone string, page ...int) ([]CustWithWX, i
36 36
 		phone = "%" + phone + "%"
37 37
 	}
38 38
 
39
+	if username == "" {
40
+		username = "%"
41
+	} else {
42
+		username = "%" + username + "%"
43
+	}
44
+
45
+	if recommendname == "" {
46
+		recommendname = "%"
47
+	} else {
48
+		recommendname = "%" + recommendname + "%"
49
+	}
50
+
39 51
 	pageNum := 10
40 52
 	if m.ctx.Get("pageNum") != nil {
41 53
 		pageNum = m.ctx.Get("pageNum").(int)
@@ -67,15 +79,26 @@ func (m *CustomerDAO) CustWithWXList(phone string, page ...int) ([]CustWithWX, i
67 79
 			AND s.account_type = '` + models.ACCMAP_WECHAT + `'
68 80
 		WHERE
69 81
 			t.phone like ?
82
+			AND t.customer_name like ?
83
+			AND t.recommend_name like ?
70 84
 		AND t.status > ?
71
-		AND t.org_id = '` + org.OrgId + `'
72
-		ORDER BY
85
+		AND t.org_id = '` + org.OrgId + `'`
86
+
87
+	if begindate != "" {
88
+		query = query + ` AND t.create_date>'` + begindate + `'`
89
+	}
90
+
91
+	if enddate != "" {
92
+		query = query + ` AND t.create_date<'` + begindate + `'`
93
+	}
94
+
95
+	query = query + ` ORDER BY
73 96
 			t.create_date DESC
74 97
 	`
75 98
 
76 99
 	var cust []CustWithWX
77 100
 
78
-	cnt, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&cust, query, []int{pageNum, offset}, phone, models.STATUS_DEL)
101
+	cnt, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&cust, query, []int{pageNum, offset}, phone, username, recommendname, models.STATUS_DEL)
79 102
 	if err != nil {
80 103
 		return nil, 0, err
81 104
 	}

+ 20
- 20
models/model/ta_coupon.go Прегледај датотеку

@@ -5,24 +5,24 @@ import (
5 5
 )
6 6
 
7 7
 type TaCoupon struct {
8
-	CouponId     string    `xorm:"not null pk VARCHAR(64)"`
9
-	CouponName   string    `xorm:"VARCHAR(255)"`
10
-	CouponTypeId string    `xorm:"VARCHAR(64)"`
11
-	SendType     string    `xorm:"comment('case 案场 channel渠道') VARCHAR(50)"`
12
-	VideoUrl     string    `xorm:"TEXT"`
13
-	CoverUrl     string    `xorm:"TEXT"`
14
-	Price        string    `xorm:"DECIMAL(64)"`
15
-	IsAll        int       `xorm:"TINYINT(1)"`
16
-	StartDate    time.Time `xorm:"DATETIME"`
17
-	EndDate      time.Time `xorm:"DATETIME"`
18
-	ValidDays    int       `xorm:"INT(11)"`
19
-	TotalCount   int       `xorm:"INT(11)"`
20
-	SentCount    int       `xorm:"INT(11)"`
21
-	UsedCount    int       `xorm:"INT(11)"`
22
-	Status       int       `xorm:"comment('0未发布 1发布 2过期') SMALLINT(6)"`
23
-	CaseId       string    `xorm:"VARCHAR(64)"`
24
-	OrgId        string    `xorm:"VARCHAR(64)"`
25
-	CreateDate   time.Time `xorm:"DATETIME"`
26
-	CreateUser   string    `xorm:"VARCHAR(64)"`
27
-	IsOver       int       `xorm:"TINYINT(1)"`
8
+	CouponId   string    `xorm:"not null pk VARCHAR(64)"`
9
+	CouponName string    `xorm:"VARCHAR(255)"`
10
+	CouponType string    `xorm:"VARCHAR(20)"`
11
+	SendType   string    `xorm:"comment('case 案场 channel渠道') VARCHAR(50)"`
12
+	VideoUrl   string    `xorm:"TEXT"`
13
+	CoverUrl   string    `xorm:"TEXT"`
14
+	Price      string    `xorm:"DECIMAL(64)"`
15
+	IsAll      int       `xorm:"TINYINT(1)"`
16
+	StartDate  time.Time `xorm:"DATETIME"`
17
+	EndDate    time.Time `xorm:"DATETIME"`
18
+	ValidDays  int       `xorm:"INT(11)"`
19
+	TotalCount int       `xorm:"INT(11)"`
20
+	SentCount  int       `xorm:"INT(11)"`
21
+	UsedCount  int       `xorm:"INT(11)"`
22
+	Status     int       `xorm:"comment('0未发布 1发布 2过期') SMALLINT(6)"`
23
+	CaseId     string    `xorm:"VARCHAR(64)"`
24
+	OrgId      string    `xorm:"VARCHAR(64)"`
25
+	CreateDate time.Time `xorm:"DATETIME"`
26
+	CreateUser string    `xorm:"VARCHAR(64)"`
27
+	IsOver     int       `xorm:"TINYINT(1)"`
28 28
 }

+ 17
- 19
models/model/ta_coupon_card.go Прегледај датотеку

@@ -5,23 +5,21 @@ import (
5 5
 )
6 6
 
7 7
 type TaCouponCard struct {
8
-	CardId           string    `xorm:"not null pk VARCHAR(64)"`
9
-	SendType         int       `xorm:"comment('0案场 1渠道') SMALLINT(6)"`
10
-	VideoUrl         string    `xorm:"TEXT"`
11
-	CoverUrl         string    `xorm:"TEXT"`
12
-	Price            float32   `xorm:"FLOAT(64)"`
13
-	StartDate        time.Time `xorm:"DATETIME"`
14
-	EndDate          time.Time `xorm:"DATETIME"`
15
-	ShareDescription string    `xorm:"VARCHAR(255)"`
16
-	RuleDescription  string    `xorm:"VARCHAR(400)"`
17
-	UseDescription   string    `xorm:"TEXT"`
18
-	TotalCount       int       `xorm:"INT(11)"`
19
-	SentCount        int       `xorm:"INT(11)"`
20
-	UsedCount        int       `xorm:"INT(11)"`
21
-	Status           int       `xorm:"comment('0未发布 1发布 2过期') SMALLINT(6)"`
22
-	CaseId           string    `xorm:"VARCHAR(64)"`
23
-	OrgId            string    `xorm:"VARCHAR(64)"`
24
-	CreateDate       time.Time `xorm:"DATETIME"`
25
-	CreateUser       string    `xorm:"VARCHAR(64)"`
26
-	IsOver           int       `xorm:"TINYINT(1)"`
8
+	CardId     string    `xorm:"not null pk VARCHAR(64)"`
9
+	CardName   string    `xorm:"VARCHAR(50)"`
10
+	SendType   string    `xorm:"comment('case 案场 channel渠道') VARCHAR(50)"`
11
+	VideoUrl   string    `xorm:"TEXT"`
12
+	CoverUrl   string    `xorm:"TEXT"`
13
+	Price      string    `xorm:"DECIMAL(64)"`
14
+	StartDate  time.Time `xorm:"DATETIME"`
15
+	EndDate    time.Time `xorm:"DATETIME"`
16
+	TotalCount int       `xorm:"INT(11)"`
17
+	SentCount  int       `xorm:"INT(11)"`
18
+	UsedCount  int       `xorm:"INT(11)"`
19
+	Status     int       `xorm:"comment('0未发布 1发布 2过期') SMALLINT(6)"`
20
+	CaseId     string    `xorm:"VARCHAR(64)"`
21
+	OrgId      string    `xorm:"VARCHAR(64)"`
22
+	CreateDate time.Time `xorm:"DATETIME"`
23
+	CreateUser string    `xorm:"VARCHAR(64)"`
24
+	IsOver     int       `xorm:"TINYINT(1)"`
27 25
 }

+ 1
- 1
models/model/ta_coupon_target.go Прегледај датотеку

@@ -2,7 +2,7 @@ package model
2 2
 
3 3
 type TaCouponTarget struct {
4 4
 	TargetId   string `xorm:"not null pk VARCHAR(64)"`
5
-	TargetType string `xorm:"not null pk VARCHAR(20)"`
5
+	TargetType string `xorm:"not null pk VARCHAR(64)"`
6 6
 	CouponId   string `xorm:"VARCHAR(64)"`
7 7
 	TargetName string `xorm:"VARCHAR(255)"`
8 8
 }

+ 1
- 0
models/model/ta_forbid_user.go Прегледај датотеку

@@ -13,4 +13,5 @@ type TaForbidUser struct {
13 13
 	EndDate    time.Time `xorm:"DATETIME"`
14 14
 	Status     int       `xorm:"SMALLINT(6)"`
15 15
 	CreateDate time.Time `xorm:"DATETIME"`
16
+	CaseId     string    `xorm:"VARCHAR(64)"`
16 17
 }

+ 0
- 7
models/model/td_coupon_type.go Прегледај датотеку

@@ -1,7 +0,0 @@
1
-package model
2
-
3
-type TdCouponType struct {
4
-	CouponTypeId   string `xorm:"not null pk VARCHAR(64)"`
5
-	CouponTypeName string `xorm:"VARCHAR(128)"`
6
-	OrgId          string `xorm:"VARCHAR(64)"`
7
-}

+ 42
- 11
models/system/user.go Прегледај датотеку

@@ -250,6 +250,13 @@ func (m *UserDAO) SaveUserTag(userid, tagids string) error {
250 250
 	return err
251 251
 }
252 252
 
253
+// GetUserBelongCase 获取用户默认案场
254
+func (m *UserDAO) GetUserBelongCase(userid string) (model.SysUserCase, error) {
255
+	var usercase model.SysUserCase
256
+	_, err := m.db.Where("is_belong=1").And("user_id=?", userid).Get(&usercase)
257
+	return usercase, err
258
+}
259
+
253 260
 // DelUserBelongCase 删除用户的所属案场
254 261
 func (m *UserDAO) DelUserBelongCase(userid string) error {
255 262
 	sql := "delete from sys_user_case where is_belong=1 and user_id='" + userid + "'"
@@ -411,17 +418,6 @@ func (m *UserDAO) GetUserWithTypeByID(userID string) ([]UserWithType, error) {
411 418
 	return userTypes, nil
412 419
 }
413 420
 
414
-// GetForbidUserByUserID 查询禁用人员
415
-func (m *UserDAO) GetForbidUserByUserID(userID string) ([]model.TaForbidUser, error) {
416
-	var fbUsers []model.TaForbidUser
417
-
418
-	if err := m.db.Where("user_id=?", userID).Find(&fbUsers); err != nil {
419
-		return nil, err
420
-	}
421
-
422
-	return fbUsers, nil
423
-}
424
-
425 421
 // CheckUserPhone 用户电话重复校验
426 422
 func (m *UserDAO) CheckUserPhone(userid, phone, orgid string) (bool, error) {
427 423
 	var users []model.SysUser
@@ -455,3 +451,38 @@ func (m *UserDAO) CheckUserName(userid, username, orgid string) (bool, error) {
455 451
 	}
456 452
 	return true, nil
457 453
 }
454
+
455
+// GetForbidUsers 获取所有禁止人员信息
456
+func (m *UserDAO) GetForbidUsers(caseid string) ([]model.TaForbidUser, error) {
457
+	var forbiduser []model.TaForbidUser
458
+	err := m.db.Where("case_id=?", caseid).And("end_date > NOW()").And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&forbiduser)
459
+	return forbiduser, err
460
+}
461
+
462
+// GetForbidUserByUserID 获取禁止人员信息
463
+func (m *UserDAO) GetForbidUserByUserID(userid string) ([]model.TaForbidUser, error) {
464
+	var forbiduser []model.TaForbidUser
465
+	err := m.db.Where("user_id=?", userid).And("(end_date is null or end_date > NOW())").And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&forbiduser)
466
+	return forbiduser, err
467
+}
468
+
469
+// SaveForbidUser 保存禁止人员信息
470
+func (m *UserDAO) SaveForbidUser(forbid *model.TaForbidUser) error {
471
+	forbid.BeginDate = time.Now().Local()
472
+	forbid.Status = models.STATUS_NORMAL
473
+	forbid.ForbidId = utils.GetGUID()
474
+	_, err := m.db.Insert(forbid)
475
+	return err
476
+}
477
+
478
+// OpenForbidUser 取消禁止信息
479
+func (m *UserDAO) OpenForbidUser(forbid *model.TaForbidUser) error {
480
+	forbid.EndDate = time.Now().Local()
481
+	forbid.Status = models.STATUS_DEL
482
+	var col = []string{
483
+		"end_date",
484
+		"status",
485
+	}
486
+	_, err := m.db.Cols(col...).Where("forbid_id=?", forbid.ForbidId).Update(forbid)
487
+	return err
488
+}

+ 9
- 0
routers/common.go Прегледај датотеку

@@ -2,6 +2,7 @@ package routers
2 2
 
3 3
 import (
4 4
 	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/controllers/card"
5 6
 	"spaceofcheng/services/controllers/cases"
6 7
 	"spaceofcheng/services/controllers/channel"
7 8
 	"spaceofcheng/services/controllers/coupon"
@@ -226,9 +227,17 @@ func getCommonRoutes() beego.LinkNamespace {
226 227
 		// 优惠券
227 228
 		beego.NSRouter("/coupon", &coupon.CouponController{}, "get:ListByCase"),
228 229
 		beego.NSRouter("/coupon", &coupon.CouponController{}, "post:SaveCoupon"),
230
+		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "get:GetCouponByIDForAdmin"),
229 231
 		beego.NSRouter("/coupon/:id", &coupon.CouponController{}, "put:UpdateCoupon"),
230 232
 		beego.NSRouter("/coupon/:id/to/:users", &coupon.CouponController{}, "post:GiveCoupon"),
231 233
 
234
+		// 卡
235
+		beego.NSRouter("/card", &card.CardController{}, "get:ListByCase"),
236
+		beego.NSRouter("/card", &card.CardController{}, "post:SaveCard"),
237
+		beego.NSRouter("/card/:id", &card.CardController{}, "get:GetCardByIDForAdmin"),
238
+		beego.NSRouter("/card/:id", &card.CardController{}, "put:UpdateCard"),
239
+		beego.NSRouter("/card/:id/to/:users", &card.CardController{}, "post:GiveCard"),
240
+
232 241
 		// 文件
233 242
 		beego.NSRouter("/file", &controllers.BaseController{}, "post:FileUpload"),
234 243
 

+ 5
- 0
routers/wechat.go Прегледај датотеку

@@ -36,5 +36,10 @@ func getWechatRoutes() beego.LinkNamespace {
36 36
 		beego.NSRouter("/gymcard", &gymcard.GymcardController{}, "get:GetGymcardListByCustomerId"),
37 37
 		beego.NSRouter("/gymcard/:customerGymId", &gymcard.GymcardController{}, "get:GetCustomerGymDetailById"),
38 38
 		beego.NSRouter("/gymcard/:gymcardId/:sysuserId", &gymcard.GymcardController{}, "post:SendGymToCustomer"),
39
+
40
+		// 禁止人员
41
+		beego.NSRouter("/user/forbid", &user.UserController{}, "get:GetForbidUsers"),
42
+		beego.NSRouter("/user/forbid/:userid/:type", &user.UserController{}, "post:SaveForbidUser"),
43
+		beego.NSRouter("/user/forbid/:userid/:type", &user.UserController{}, "put:OpenForbidUser"),
39 44
 	)
40 45
 }

+ 276
- 0
service/card/card.go Прегледај датотеку

@@ -0,0 +1,276 @@
1
+package card
2
+
3
+import (
4
+	"errors"
5
+	"spaceofcheng/services/models"
6
+	"spaceofcheng/services/models/card"
7
+	"spaceofcheng/services/models/customer"
8
+	"spaceofcheng/services/models/model"
9
+	"spaceofcheng/services/utils"
10
+	"strings"
11
+	"time"
12
+
13
+	"github.com/yl10/kit/guid"
14
+)
15
+
16
+// CardServ 系统处理
17
+type CardServ struct {
18
+	ctx     *utils.Context
19
+	dao     *card.CardDAO
20
+	custDao *customer.CustomerDAO
21
+}
22
+
23
+// NewCardServ 初始化
24
+func NewCardServ(ctx *utils.Context) *CardServ {
25
+	return &CardServ{
26
+		ctx:     ctx,
27
+		dao:     card.NewCardDAO(ctx),
28
+		custDao: customer.NewCustomerDAO(ctx),
29
+	}
30
+}
31
+
32
+// GetCardList 获取卡列表
33
+func (s *CardServ) GetCardList(caseID string, pagenavi ...int) ([]model.TaCouponCard, int64, error) {
34
+	filters := []string{}
35
+	if caseID != "" {
36
+		if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
37
+			return nil, 0, err
38
+		}
39
+
40
+		filters = []string{
41
+			"case_id='" + caseID + "'",
42
+		}
43
+	} else {
44
+		casesRaw := s.ctx.Get("cases")
45
+		if casesRaw == nil {
46
+			return nil, 0, errors.New("请设置过滤案场")
47
+		}
48
+
49
+		cases := casesRaw.([]model.SysUserCase)
50
+		caseIDs := []string{}
51
+		for _, cs := range cases {
52
+			caseIDs = append(caseIDs, cs.CaseId)
53
+		}
54
+
55
+		filters = []string{
56
+			"case_id in ('" + strings.Join(caseIDs, "','") + "')",
57
+		}
58
+	}
59
+
60
+	limit := utils.GetPageNaviLimit(pagenavi...)
61
+	res, total, err := s.dao.GetCardList(filters, limit)
62
+	if err != nil {
63
+		utils.LogError("查询卡列表失败: " + err.Error())
64
+		return nil, 0, errors.New("查询卡列表失败")
65
+	}
66
+
67
+	return res, total, nil
68
+}
69
+
70
+// EditCard 编辑卡 , 没有则新增
71
+func (s *CardServ) EditCard(card *card.CardInfo) error {
72
+	if card.CardId == "" {
73
+		return s.SaveCard(card)
74
+	} else {
75
+		return s.UpdateCard(card)
76
+	}
77
+}
78
+
79
+// SaveCard 保存卡
80
+// 字段校验没有在此函数中设置
81
+func (s *CardServ) SaveCard(cd *card.CardInfo) error {
82
+	if cd.CaseId == "" {
83
+		return errors.New("未指定案场")
84
+	}
85
+
86
+	cd.CardId = guid.NewGUIDString()
87
+
88
+	// 保存主信息
89
+	cardMain := cd.TaCouponCard
90
+	if err := s.dao.AddCard(&cardMain); err != nil {
91
+		utils.LogError("保存卡失败: " + err.Error())
92
+		return errors.New("保存卡失败")
93
+	}
94
+
95
+	// 保存图片
96
+	if err := s.dao.UpdateImages(cd.Images, cd.CardId); err != nil {
97
+		utils.LogError("保存卡图片失败: " + err.Error())
98
+		return errors.New("保存卡图片失败")
99
+	}
100
+
101
+	// 保存分享
102
+	share := cd.Share
103
+	share.CardId = cd.CardId
104
+	if err := s.dao.SaveCardShare(share); err != nil {
105
+		utils.LogError("保存卡分享失败: " + err.Error())
106
+		return errors.New("保存卡分享失败")
107
+	}
108
+
109
+	// 保存关联内容
110
+	if err := s.dao.UpdateTarget(cd.Targets, cd.CardId); err != nil {
111
+		utils.LogError("保存卡关联内容失败: " + err.Error())
112
+		return errors.New("保存卡关联内容失败")
113
+	}
114
+
115
+	return nil
116
+}
117
+
118
+// UpdateCard 更新卡
119
+// 字段校验没有在此函数中设置
120
+func (s *CardServ) UpdateCard(cd *card.CardInfo) error {
121
+	if cd.CaseId == "" {
122
+		return errors.New("未指定案场")
123
+	}
124
+
125
+	if cd.CardId == "" {
126
+		return errors.New("未指定卡")
127
+	}
128
+
129
+	// 更新主信息
130
+	cardMain := cd.TaCouponCard
131
+	if err := s.dao.UpdateCard(&cardMain, []string{"Card_name"}); err != nil {
132
+		utils.LogError("更新卡失败: " + err.Error())
133
+		return errors.New("更新卡失败")
134
+	}
135
+
136
+	// 更新图片
137
+	if err := s.dao.UpdateImages(cd.Images, cd.CardId); err != nil {
138
+		utils.LogError("更新卡图片失败: " + err.Error())
139
+		return errors.New("更新卡图片失败")
140
+	}
141
+
142
+	// 更新分享
143
+	share := cd.Share
144
+	share.CardId = cd.CardId
145
+	cols := []string{"Card_share_info", "use_rule", "use_instruction"}
146
+	if err := s.dao.UpdateCardShare(share, cols); err != nil {
147
+		utils.LogError("更新卡分享失败: " + err.Error())
148
+		return errors.New("更新卡分享失败")
149
+	}
150
+
151
+	// 关联内容 规则 不允许更新
152
+	return nil
153
+}
154
+
155
+// GiveCard 赠送卡券
156
+func (s *CardServ) GiveCard(CardID string, uids []string) error {
157
+	// 当前用户
158
+	userRaw := s.ctx.Get("user")
159
+	if userRaw == nil {
160
+		return errors.New("当前人员信息不正确, 请重试")
161
+	}
162
+	user := userRaw.(model.SysUser)
163
+
164
+	card, err := s.dao.GetCardByID(CardID)
165
+	if err != nil {
166
+		utils.LogError("获取卡失败: " + err.Error())
167
+		return errors.New("校验卡失败")
168
+	}
169
+
170
+	// 案场
171
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(card.CaseId); err != nil {
172
+		return err
173
+	}
174
+
175
+	// 卡必须状态正常
176
+	if card == nil || card.CardId == "" || card.Status != models.STATUS_NORMAL {
177
+		return errors.New("卡已失效或者不存在")
178
+	}
179
+
180
+	for _, uid := range uids {
181
+		// 获取客户信息
182
+		cust, err := s.custDao.GetCustomerByID(uid)
183
+		if err != nil {
184
+			utils.LogError("查询客户信息失败: " + err.Error())
185
+			return errors.New("校验客户信息失败")
186
+		}
187
+
188
+		if err := s.GiveCardTo(&user, cust, card); err != nil {
189
+			return err
190
+		}
191
+	}
192
+
193
+	return nil
194
+}
195
+
196
+// GiveCardTo 赠送卡
197
+// 本方法会被多出调用, 方法内使用 Context 将是不安全的
198
+func (s *CardServ) GiveCardTo(from *model.SysUser, to *model.TaCustomer, card *card.CardInfo) error {
199
+	if from.UserId == "" {
200
+		return errors.New("必须指定赠送人")
201
+	}
202
+
203
+	if to.CustomerId == "" {
204
+		return errors.New("必须指定接收人")
205
+	}
206
+
207
+	// 卡必须状态正常
208
+	if card.CardId == "" || card.Status != models.STATUS_NORMAL {
209
+		return errors.New("卡已失效或者不存在")
210
+	}
211
+
212
+	// 计算卡券有效期
213
+	startDate := card.StartDate
214
+	endDate := card.EndDate
215
+
216
+	// 检查用户是否已经有了该券
217
+	custcardS, err := s.dao.CheckCustCard(to.CustomerId, card.CardId, startDate, endDate)
218
+	if err != nil {
219
+		utils.LogError("校验客户卡失败: " + err.Error())
220
+		return errors.New("校验客户卡失败")
221
+	}
222
+
223
+	if custcardS != nil && len(custcardS) > 0 {
224
+		return errors.New("客户 " + to.CustomerName + " 已经拥有该券")
225
+	}
226
+
227
+	// 放入我的卡券
228
+	custcard := model.TaCustomerCard{
229
+		CardId:           card.CardId,
230
+		CustomerCardName: card.CardName,
231
+		CustomerId:       to.CustomerId,
232
+		StartDate:        startDate,
233
+		EndDate:          endDate,
234
+		ReceiveDate:      time.Now().Local(),
235
+		CaseId:           card.CaseId,
236
+		OrgId:            card.OrgId,
237
+	}
238
+
239
+	// 入库
240
+	if err := s.dao.SaveCustomerCards([]model.TaCustomerCard{custcard}); err != nil {
241
+		utils.LogError("保存客户卡失败: " + err.Error())
242
+		return errors.New("保存客户卡失败")
243
+	}
244
+
245
+	// TODO
246
+	// 券库存处理
247
+
248
+	return nil
249
+}
250
+
251
+// GetCardByID 获取卡
252
+// 未进行权限校验, 非安全的
253
+func (s *CardServ) GetCardByID(cardID string) (*card.CardInfo, error) {
254
+	card, err := s.dao.GetCardByID(cardID)
255
+	if err != nil {
256
+		utils.LogError("获取卡失败: " + err.Error())
257
+		return nil, errors.New("校验卡失败")
258
+	}
259
+
260
+	return card, nil
261
+}
262
+
263
+// GetCardByIDWithCheck 获取卡
264
+func (s *CardServ) GetCardByIDWithCheck(cardID string) (*card.CardInfo, error) {
265
+	card, err := s.dao.GetCardByID(cardID)
266
+	if err != nil {
267
+		utils.LogError("获取卡失败: " + err.Error())
268
+		return nil, errors.New("校验卡失败")
269
+	}
270
+
271
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(card.CaseId); err != nil {
272
+		return nil, err
273
+	}
274
+
275
+	return card, nil
276
+}

+ 41
- 9
service/coupon/coupon.go Прегледај датотеку

@@ -10,6 +10,8 @@ import (
10 10
 	"strings"
11 11
 	"time"
12 12
 
13
+	"github.com/astaxie/beego"
14
+
13 15
 	"github.com/yl10/kit/guid"
14 16
 )
15 17
 
@@ -102,8 +104,8 @@ func (s *CouponServ) SaveCoupon(cp *coupon.CouponInfo) error {
102 104
 	// 保存分享
103 105
 	share := cp.Share
104 106
 	share.CouponId = cp.CouponId
105
-	cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
106
-	if err := s.dao.UpdateCouponShare(&share, cols); err != nil {
107
+	// cols := []string{"coupon_share_info", "use_rule", "use_instruction"}
108
+	if err := s.dao.SaveCouponShare(&share); err != nil {
107 109
 		utils.LogError("保存优惠券分享失败: " + err.Error())
108 110
 		return errors.New("保存优惠券分享失败")
109 111
 	}
@@ -136,7 +138,18 @@ func (s *CouponServ) UpdateCoupon(cp *coupon.CouponInfo) error {
136 138
 
137 139
 	// 更新主信息
138 140
 	cpMain := cp.TaCoupon
139
-	if err := s.dao.UpdateCoupon(&cpMain, []string{"coupon_name"}); err != nil {
141
+	if err := s.dao.UpdateCoupon(&cpMain, []string{"coupon_name",
142
+		"coupon_type",
143
+		"send_type",
144
+		"video_url",
145
+		"cover_url",
146
+		"price",
147
+		"is_all",
148
+		"start_date",
149
+		"end_date",
150
+		"valid_days",
151
+		"total_count",
152
+		"case_id"}); err != nil {
140 153
 		utils.LogError("更新优惠券失败: " + err.Error())
141 154
 		return errors.New("更新优惠券失败")
142 155
 	}
@@ -156,7 +169,18 @@ func (s *CouponServ) UpdateCoupon(cp *coupon.CouponInfo) error {
156 169
 		return errors.New("更新优惠券分享失败")
157 170
 	}
158 171
 
159
-	// 关联内容 规则 不允许更新
172
+	// 保存关联内容
173
+	if err := s.dao.UpdateTarget(cp.Targets, cp.CouponId); err != nil {
174
+		utils.LogError("保存优惠券关联内容失败: " + err.Error())
175
+		return errors.New("保存优惠券关联内容失败")
176
+	}
177
+
178
+	// 保存规则
179
+	if err := s.dao.UpdateRule(cp.Rules, cp.CouponId); err != nil {
180
+		utils.LogError("保存优惠券规则失败: " + err.Error())
181
+		return errors.New("保存优惠券规则失败")
182
+	}
183
+
160 184
 	return nil
161 185
 }
162 186
 
@@ -181,7 +205,7 @@ func (s *CouponServ) GiveCoupon(couponID string, uids []string) error {
181 205
 	}
182 206
 
183 207
 	// 优惠券必须状态正常
184
-	if cp != nil || cp.CouponId == "" || cp.Status != models.STATUS_NORMAL {
208
+	if cp == nil || cp.CouponId == "" || cp.Status != models.STATUS_NORMAL {
185 209
 		return errors.New("优惠券已失效或者不存在")
186 210
 	}
187 211
 
@@ -231,6 +255,10 @@ func (s *CouponServ) GiveCouponTo(from *model.SysUser, to *model.TaCustomer, cp
231 255
 		}
232 256
 	}
233 257
 
258
+	if cp.TotalCount < cp.SentCount+1 {
259
+		return errors.New("券已经没有库存!")
260
+	}
261
+
234 262
 	// 计算卡券有效期
235 263
 	startDate := cp.StartDate
236 264
 	endDate := cp.EndDate
@@ -246,7 +274,7 @@ func (s *CouponServ) GiveCouponTo(from *model.SysUser, to *model.TaCustomer, cp
246 274
 		utils.LogError("校验客户优惠券失败: " + err.Error())
247 275
 		return errors.New("校验客户优惠券失败")
248 276
 	}
249
-
277
+	beego.Error(custCPS)
250 278
 	if custCPS != nil && len(custCPS) > 0 {
251 279
 		return errors.New("客户 " + to.CustomerName + " 已经拥有该券")
252 280
 	}
@@ -288,7 +316,11 @@ func (s *CouponServ) GiveCouponTo(from *model.SysUser, to *model.TaCustomer, cp
288 316
 
289 317
 	// TODO
290 318
 	// 券库存处理
291
-
319
+	cp.SentCount = cp.SentCount + 1
320
+	if err := s.dao.UpdateCoupon(cp, []string{"sent_count"}); err != nil {
321
+		utils.LogError("更新优惠券库存失败: " + err.Error())
322
+		return errors.New("更新优惠券库存失败")
323
+	}
292 324
 	return nil
293 325
 }
294 326
 
@@ -305,8 +337,8 @@ func (s *CouponServ) GetCouponByID(cpID string) (*model.TaCoupon, error) {
305 337
 }
306 338
 
307 339
 // GetCouponByIDWithCheck 获取优惠券
308
-func (s *CouponServ) GetCouponByIDWithCheck(cpID string) (*model.TaCoupon, error) {
309
-	cp, err := s.dao.GetCouponByID(cpID)
340
+func (s *CouponServ) GetCouponByIDWithCheck(cpID string) (*coupon.CouponInfo, error) {
341
+	cp, err := s.dao.GetCouponInfoByID(cpID)
310 342
 	if err != nil {
311 343
 		utils.LogError("获取优惠券失败: " + err.Error())
312 344
 		return nil, errors.New("校验优惠券失败")

+ 2
- 2
service/customer/customer.go Прегледај датотеку

@@ -29,8 +29,8 @@ func NewCustomerServ(ctx *utils.Context) *CustomerServ {
29 29
 }
30 30
 
31 31
 // GetCustWithWXList 获取客户列表
32
-func (s *CustomerServ) GetCustWithWXList(phone string, page ...int) ([]customer.CustWithWX, int64, error) {
33
-	return s.dao.CustWithWXList(phone, page...)
32
+func (s *CustomerServ) GetCustWithWXList(phone, username, recommendname, begindate, enddate string, page ...int) ([]customer.CustWithWX, int64, error) {
33
+	return s.dao.CustWithWXList(phone, username, recommendname, begindate, enddate, page...)
34 34
 }
35 35
 
36 36
 // GetCustWithWXByID 获取客户列表

+ 99
- 0
service/user.go Прегледај датотеку

@@ -408,3 +408,102 @@ func (s *UserServ) GetUserByTel(tel string) (*model.SysUser, error) {
408 408
 	user, err := s.dao.GetUserByPhone(tel)
409 409
 	return user, err
410 410
 }
411
+
412
+// GetForbidUsers 获取所有禁止人员信息
413
+func (s *UserServ) GetForbidUsers(caseid string) ([]model.TaForbidUser, error) {
414
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
415
+		return nil, err
416
+	}
417
+	users, err := s.dao.GetForbidUsers(caseid)
418
+	return users, err
419
+}
420
+
421
+// SaveForbidUser 保存禁止人员信息
422
+func (s *UserServ) SaveForbidUser(userid string, forbidtype string) error {
423
+	user, err := s.dao.GetUserByID(userid)
424
+	if err != nil {
425
+		return err
426
+	}
427
+	if user.Status != models.STATUS_NORMAL {
428
+		return errors.New("设置的用户状态异常!不允许操作!")
429
+	}
430
+
431
+	usercase, err := s.dao.GetUserBelongCase(userid)
432
+	if err != nil {
433
+		return err
434
+	}
435
+	if usercase.CaseId == "" {
436
+		return errors.New("用户不存在所属案场!不允许操作!")
437
+	}
438
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(usercase.CaseId); err != nil {
439
+		return err
440
+	}
441
+	fibUsers, err := s.dao.GetForbidUserByUserID(userid)
442
+	if err != nil {
443
+		return err
444
+	}
445
+	if fibUsers != nil && len(fibUsers) > 0 {
446
+		for _, u := range fibUsers {
447
+			if u.ForbidType == forbidtype && u.Status == models.STATUS_NORMAL {
448
+				return errors.New("当前人员已经被禁止!不允许重复禁止")
449
+			}
450
+		}
451
+	}
452
+
453
+	var usertype = ""
454
+	if len(user.UserType) > 0 {
455
+		usertype = user.UserType[0].TypeId
456
+	}
457
+
458
+	var forbiduser = model.TaForbidUser{
459
+		UserId:     user.UserId,
460
+		UserType:   usertype,
461
+		ForbidType: forbidtype,
462
+		CaseId:     usercase.CaseId,
463
+	}
464
+
465
+	err = s.dao.SaveForbidUser(&forbiduser)
466
+	return err
467
+}
468
+
469
+// OpenForbidUser 开启禁止人员
470
+func (s *UserServ) OpenForbidUser(userid string, forbidtype string) error {
471
+	user, err := s.dao.GetUserByID(userid)
472
+	if err != nil {
473
+		return err
474
+	}
475
+	if user.Status != models.STATUS_NORMAL {
476
+		return errors.New("设置的用户状态异常!不允许操作!")
477
+	}
478
+
479
+	usercase, err := s.dao.GetUserBelongCase(userid)
480
+	if err != nil {
481
+		return err
482
+	}
483
+	if usercase.CaseId == "" {
484
+		return errors.New("用户不存在所属案场!不允许操作!")
485
+	}
486
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(usercase.CaseId); err != nil {
487
+		return err
488
+	}
489
+	fibUsers, err := s.dao.GetForbidUserByUserID(userid)
490
+	if err != nil {
491
+		return err
492
+	}
493
+	var ishas = false
494
+	var forbiduser = model.TaForbidUser{}
495
+	if fibUsers != nil && len(fibUsers) > 0 {
496
+		for _, u := range fibUsers {
497
+			if u.ForbidType == forbidtype && u.Status == models.STATUS_NORMAL {
498
+				ishas = true
499
+				forbiduser = u
500
+			}
501
+		}
502
+	}
503
+
504
+	if !ishas {
505
+		return errors.New("用户没有被关闭的功能!")
506
+	}
507
+	err = s.dao.OpenForbidUser(&forbiduser)
508
+	return err
509
+}