Selaa lähdekoodia

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

zjxpcyc 6 vuotta sitten
vanhempi
commit
57293b08b0

+ 1
- 1
conf/log.conf Näytä tiedosto

@@ -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"

+ 2
- 2
controllers/course/order.go Näytä tiedosto

@@ -15,7 +15,7 @@ func (c *CourseController) PostOrder() {
15 15
 	}
16 16
 
17 17
 	// 订单优惠券
18
-	coupon := c.GetString("coupon")
18
+	coupons := c.GetString("coupons")
19 19
 
20 20
 	//
21 21
 	var orderInfo model.TaCourseOrders
@@ -26,7 +26,7 @@ func (c *CourseController) PostOrder() {
26 26
 		c.ResponseError(errors.New("下单数据格式不正确"))
27 27
 	}
28 28
 
29
-	if err := json.Unmarshal([]byte(coupon), &orderCoupon); err != nil {
29
+	if err := json.Unmarshal([]byte(coupons), &orderCoupon); err != nil {
30 30
 		utils.LogError("下单优惠转换JSON失败: " + err.Error())
31 31
 		c.ResponseError(errors.New("优惠数据格式不正确"))
32 32
 	}

+ 2
- 2
controllers/goods/goods.go Näytä tiedosto

@@ -80,7 +80,7 @@ func (c *GoodsController) UpdateGoods() {
80 80
 	gds := model.TaGoods{}
81 81
 	if err := c.ParseForm(&gds); err != nil {
82 82
 		utils.LogError("接收商品参数失败: " + err.Error())
83
-		c.ResponseError(errors.New("接收商品参数失败"))
83
+		c.ResponseError(errors.New("接收商品参数失败1"))
84 84
 	}
85 85
 
86 86
 	// 图片
@@ -91,7 +91,7 @@ func (c *GoodsController) UpdateGoods() {
91 91
 	specsJSON := c.GetString("specs")
92 92
 	if err := json.Unmarshal([]byte(specsJSON), &specs); err != nil {
93 93
 		utils.LogError("接收商品参数失败: " + err.Error())
94
-		c.ResponseError(errors.New("接收商品参数失败"))
94
+		c.ResponseError(errors.New("接收商品参数失败2"))
95 95
 	}
96 96
 
97 97
 	goodsID := c.GetString(":id")

+ 124
- 0
controllers/marketing/marketing.go Näytä tiedosto

@@ -0,0 +1,124 @@
1
+package marketing
2
+
3
+import(
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/service/marketing"
6
+	"spaceofcheng/services/models/model"
7
+)
8
+
9
+
10
+// CourseController 商品
11
+type MarketingController struct {
12
+	serv *marketing.MarketingServ
13
+	controllers.BaseController
14
+}
15
+
16
+// Constructor 初始化 Controller
17
+// @Title Constructor
18
+// @Description 初始化 Controller, 系统自动调用
19
+func (c *MarketingController) Constructor() {
20
+	c.serv = marketing.NewMarketingServ(c.Context)
21
+}
22
+
23
+// 获取 营销活动列表
24
+func (c *MarketingController) GetMarketingList(){
25
+	page, _ := c.GetInt("page")
26
+	pageSize, _ := c.GetInt("pagesize")
27
+
28
+	marketings, err := c.serv.GetMarketingList(page,pageSize)
29
+	if err != nil {
30
+		c.ResponseError(err)
31
+	}
32
+	c.ResponseJSON(marketings)
33
+
34
+}
35
+
36
+// SaveMarketing 保存营销活动
37
+func (c *MarketingController) SaveMarketing() {
38
+	marketing := model.SysActivity{}
39
+
40
+	// 获取值
41
+	activityName := c.GetString("activityName")
42
+	activityType := c.GetString("activityType")
43
+	resourceDesc := c.GetString("resourceDesc") // 活动描述
44
+
45
+	// 赋值
46
+	marketing.ActivityName = activityName
47
+	marketing.ActivityType = activityType
48
+
49
+	newInfo,_, err := c.serv.SaveMarketing(marketing,resourceDesc)
50
+	if err != nil {
51
+		c.ResponseError(err)
52
+	}
53
+
54
+	c.ResponseJSON(newInfo)
55
+}
56
+
57
+
58
+// GetMarketingById 根据activityId查询
59
+func (c *MarketingController) GetMarketingById(){
60
+	 activityId := c.GetString("activityId")
61
+
62
+	 info,err :=	c.serv.GetMarketingById(activityId)
63
+	 if err != nil {
64
+		c.ResponseError(err)
65
+	}
66
+
67
+	c.ResponseJSON(info)
68
+}
69
+
70
+// UpdateMarketing 修改数据
71
+func (c *MarketingController) UpdateMarketing(){
72
+	activity := model.SysActivity{}
73
+
74
+	// 获取值
75
+	activityName := c.GetString("activityName")
76
+	activityType := c.GetString("activityType")
77
+	
78
+	// 赋值
79
+	activity.ActivityName = activityName
80
+	activity.ActivityType = activityType
81
+	
82
+	err := c.serv.UpdateMarketing(activity)
83
+	if err != nil {
84
+		c.ResponseError(err)
85
+	}
86
+	c.ResponseJSON("操作成功!")
87
+}
88
+
89
+// DelMarketing 删除
90
+func (c *MarketingController) DelMarketing(){
91
+	activityId := c.GetString("activityId")
92
+	err := c.serv.DelMarketing(activityId)
93
+	if err != nil {
94
+		c.ResponseError(err)
95
+	}
96
+	c.ResponseJSON("操作成功!")
97
+}
98
+
99
+// DelMarketing 正常
100
+func (c *MarketingController) DelMarketingNormal(){
101
+	activityId := c.GetString("activityId")
102
+	err := c.serv.DelMarketingNormal(activityId)
103
+	if err != nil {
104
+		c.ResponseError(err)
105
+	}
106
+	c.ResponseJSON("操作成功!")
107
+}
108
+
109
+// DelMarketing 停用
110
+func (c *MarketingController) DelMarketingDisable(){
111
+	activityId := c.GetString("activityId")
112
+	err := c.serv.DelMarketingDisable(activityId)
113
+	if err != nil {
114
+		c.ResponseError(err)
115
+	}
116
+	c.ResponseJSON("操作成功!")
117
+}
118
+
119
+
120
+
121
+
122
+
123
+
124
+

+ 2
- 2
controllers/user/user.go Näytä tiedosto

@@ -79,8 +79,8 @@ func (c *UserController) GetUserList() {
79 79
 func (c *UserController) GetUserTypes() {
80 80
 	// cases := c.Context.Get("cases").([]model.SysUserCase)
81 81
 	// caseIDs := c.GetCaseIDs(cases)
82
-	orgid := c.GetString(":org")
83
-	usertypes, err := c.dao.GetUserTypes(orgid)
82
+	org := c.Context.Get("org").(model.SysOrg)
83
+	usertypes, err := c.dao.GetUserTypes(org.OrgId)
84 84
 	if err != nil {
85 85
 		c.ResponseError(err)
86 86
 	}

+ 95
- 0
controllers/verify/verify.go Näytä tiedosto

@@ -0,0 +1,95 @@
1
+package verify
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service/verify"
7
+)
8
+
9
+// CaseController 信息
10
+type VerifyController struct {
11
+	dao *verify.VerifyServ
12
+	controllers.BaseController
13
+}
14
+
15
+// Constructor 初始化 Controller
16
+// @Title Constructor
17
+// @Description 初始化 Controller, 系统自动调用
18
+func (c *VerifyController) Constructor() {
19
+	c.dao = verify.NewVerifyServ(c.Context)
20
+}
21
+
22
+// GetCustomerCourseDetailListById 根据id获取我的课程详情
23
+func (c *VerifyController) GetCustomerCourseDetailListById() {
24
+	customerCourseId := c.GetString(":customerCourseId")
25
+	caseid := c.GetString("caseid")
26
+	if caseid == "" {
27
+		caseinfo := c.Context.Get("currentCase").(model.SysUserCase)
28
+		caseid = caseinfo.CaseId
29
+	}
30
+	page, _ := c.GetInt("page")
31
+	pageSize, _ := c.GetInt("pagesize")
32
+	list, err := c.dao.GetCustomerCourseDetailById(customerCourseId, caseid, page, pageSize)
33
+	if err != nil {
34
+		c.ResponseError(err)
35
+	}
36
+	c.ResponseJSON(list)
37
+
38
+}
39
+
40
+// GetCustomerCourseDetailListBytel 根据手机号获取我的课程详情id
41
+func (c *VerifyController) GetCustomerCourseDetailListBytel() {
42
+	caseid := c.GetString("caseid")
43
+	if caseid == "" {
44
+		caseinfo := c.Context.Get("currentCase").(model.SysUserCase)
45
+		caseid = caseinfo.CaseId
46
+	}
47
+	tel := c.GetString(":tel")
48
+	page, _ := c.GetInt("page")
49
+	pageSize, _ := c.GetInt("pagesize")
50
+	list, err := c.dao.GetCustomerCourseDetailByTel(tel, caseid, page, pageSize)
51
+	if err != nil {
52
+		c.ResponseError(err)
53
+	}
54
+	c.ResponseJSON(list)
55
+
56
+}
57
+
58
+// VerifyCourse核销我的课程详情
59
+func (c *VerifyController) VerifyCourse() {
60
+	sysUser := c.Context.Get("user").(model.SysUser)
61
+	userId := sysUser.UserId
62
+	customerDetailId := c.GetString(":customerDetailId")
63
+	customerCourseDetail, err := c.dao.GetCustomerCourseDetailByDetailId(customerDetailId)
64
+	if err != nil {
65
+		c.ResponseError(err)
66
+	}
67
+
68
+	customerCourse, err := c.dao.GetCustomerCourseByDetailId(customerCourseDetail.CustomerDetailId)
69
+	if err != nil {
70
+		c.ResponseError(err)
71
+	}
72
+	if customerCourse.CourseObtaimType == "card" {
73
+		customerCard, err := c.dao.GetCustomerCardByDetailId(customerCourseDetail.CustomerDetailId)
74
+		if err != nil {
75
+			c.ResponseError(err)
76
+		}
77
+		if customerCard.VerifyStatus == "usable" {
78
+			customerCard.VerifyStatus = "used"
79
+			err := c.dao.UpdateCustomerCard(customerCard)
80
+			if err != nil {
81
+				c.ResponseError(err)
82
+			}
83
+		}
84
+	}
85
+	err = c.dao.UpdateCustomerCourse(customerCourse)
86
+	if err != nil {
87
+		c.ResponseError(err)
88
+	}
89
+	err = c.dao.UpdateCustomerCourseDetail(customerCourseDetail, userId)
90
+	if err != nil {
91
+		c.ResponseError(err)
92
+	}
93
+	c.ResponseJSON("核销成功")
94
+
95
+}

+ 0
- 22
log/common.2018-08-19.log Näytä tiedosto

@@ -1,22 +0,0 @@
1
-2018/08/19 11:00:44 [E] 用户登录失败: 账户不存在
2
-2018/08/19 11:02:08 [E] 用户登录失败: 账户不存在
3
-2018/08/19 11:02:30 [E] 用户登录失败: 账户不存在
4
-2018/08/19 11:04:13 [E] 用户登录失败: 账户不存在
5
-2018/08/19 11:04:23 [E] 用户登录失败: 账户不存在
6
-2018/08/19 11:04:53 [E] 用户登录失败: 账户不存在
7
-2018/08/19 12:40:59 [E] 用户登录失败: 账户不存在
8
-2018/08/19 12:41:32 [E] 用户登录失败: 账户不存在
9
-2018/08/19 12:53:00 [E] 用户登录失败: 账户不存在
10
-2018/08/19 12:53:39 [E] 用户登录失败: 账户不存在
11
-2018/08/19 12:53:59 [E] 用户登录失败: 账户不存在
12
-2018/08/19 12:56:51 [E] 用户登录失败: 账户不存在
13
-2018/08/19 12:57:10 [E] 用户登录失败: 账户不存在
14
-2018/08/19 12:58:27 [E] 用户登录失败: 账户不存在
15
-2018/08/19 13:00:08 [E] 用户登录失败: 账户不存在
16
-2018/08/19 13:33:36 [E] 用户登录失败: 账户不存在
17
-2018/08/19 13:51:39 [E] 用户登录失败: 账户不存在
18
-2018/08/19 13:51:48 [E] 用户登录失败: 账户不存在
19
-2018/08/19 13:52:14 [E] 用户登录失败: 用户密码不正确
20
-2018/08/19 13:52:14 [E] 用户登录失败: 账户不存在
21
-2018/08/19 13:52:20 [E] 用户登录失败: 账户不存在
22
-2018/08/19 13:52:27 [E] 用户登录失败: 账户不存在

+ 0
- 27
log/common.2018-08-23.log Näytä tiedosto

@@ -1,27 +0,0 @@
1
-2018/08/20 15:27:18 [E] 获取客户列表失败: sql: converting Exec argument $1 type: unsupported type []interface {}, a slice of interface
2
-2018/08/20 15:36:51 [E] 获取客户列表失败: sql: converting Exec argument $1 type: unsupported type []interface {}, a slice of interface
3
-2018/08/20 15:37:19 [E] 获取客户列表失败: sql: converting Exec argument $1 type: unsupported type []interface {}, a slice of interface
4
-2018/08/20 15:44:30 [E] 获取客户列表失败: Error 1248: Every derived table must have its own alias
5
-2018/08/20 15:46:35 [E] 获取客户列表失败: Error 1248: Every derived table must have its own alias
6
-2018/08/20 15:49:09 [E] 获取客户列表失败: Error 1060: Duplicate column name 'user_id'
7
-2018/08/20 15:57:45 [E] 获取客户列表失败: sql: statement expects 2 inputs; got 1
8
-2018/08/20 19:25:08 [E] 短信发送失败: 400 
9
-2018/08/20 19:27:58 [E] 短信发送失败: 400 
10
-2018/08/20 19:28:52 [E] 短信发送失败: 400 
11
-2018/08/21 13:38:17 [E] 用户没有设置默认案场
12
-2018/08/21 13:38:17 [E] 您没有该案场的权限!
13
-2018/08/21 13:39:04 [E] 用户没有设置默认案场
14
-2018/08/21 13:39:04 [E] 您没有该案场的权限!
15
-2018/08/21 13:39:09 [E] 用户没有设置默认案场
16
-2018/08/21 13:39:09 [E] 您没有该案场的权限!
17
-2018/08/21 13:39:24 [E] 用户没有设置默认案场
18
-2018/08/21 13:39:24 [E] 您没有该案场的权限!
19
-2018/08/21 13:41:04 [E] 用户没有设置默认案场
20
-2018/08/21 13:41:04 [E] 您没有该案场的权限!
21
-2018/08/21 14:26:22 [E] 用户登录失败: dial tcp 192.168.0.62:3306: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
22
-2018/08/21 14:27:06 [E] 用户登录失败: dial tcp 192.168.0.62:3306: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
23
-2018/08/23 19:57:03 [E] 获取人员映射账户失败: Params type error
24
-2018/08/23 19:58:00 [E] 获取人员映射账户失败: Params type error
25
-2018/08/23 19:58:39 [E] 获取人员映射账户失败: Params type error
26
-2018/08/23 20:03:16 [E] 获取人员映射账户失败: Params type error
27
-2018/08/23 20:05:14 [E] 获取人员映射账户失败: Params type error

+ 0
- 7
log/common.2018-08-24.log Näytä tiedosto

@@ -1,7 +0,0 @@
1
-2018/08/24 09:40:16 [E] 验证码 - 17714208769 : 648633
2
-2018/08/24 10:53:37 [E] 获取人员映射账户失败: Error 1205: Lock wait timeout exceeded; try restarting transaction
3
-2018/08/24 10:54:58 [E] 获取人员映射账户失败: Error 1205: Lock wait timeout exceeded; try restarting transaction
4
-2018/08/24 10:55:03 [E] 获取人员映射账户失败: Error 1205: Lock wait timeout exceeded; try restarting transaction
5
-2018/08/24 10:55:42 [E] 获取人员映射账户失败: Error 1205: Lock wait timeout exceeded; try restarting transaction
6
-2018/08/24 10:55:46 [E] 获取人员映射账户失败: Error 1205: Lock wait timeout exceeded; try restarting transaction
7
-2018/08/24 11:30:58 [E] 更新用户映射信息失败:Params type error

+ 0
- 0
log/common.2018-08-25.log Näytä tiedosto


+ 118
- 0
log/common.2018-09-05.log Näytä tiedosto

@@ -0,0 +1,118 @@
1
+2018/08/26 09:37:50 [E] 查询微信配置失败: Error 1054: Unknown column 'rmark' in 'field list'
2
+2018/08/26 09:38:37 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
3
+2018/08/26 09:38:37 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_-Lg_RS71-apY79btcVmfgOoi47yZER01vtlROS4cXfqgIRfbPkzUPTwvZz6w0DlHMJIk7h-xISGUwZ0Tosff1sEpcfhNiBLw6zvr-l9zpi-tp2N6hJY7QM4uExMIZTSOixTUS9uHKOiK7trvUZWdAIAHMJ","expires_in":7200})
4
+2018/08/26 09:38:37 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_-Lg_RS71-apY79btcVmfgOoi47yZER01vtlROS4cXfqgIRfbPkzUPTwvZz6w0DlHMJIk7h-xISGUwZ0Tosff1sEpcfhNiBLw6zvr-l9zpi-tp2N6hJY7QM4uExMIZTSOixTUS9uHKOiK7trvUZWdAIAHMJ])
5
+2018/08/26 09:44:13 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
6
+2018/08/26 09:44:13 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_2REPD5yYQxrGgfgH94odWyxn0xLwS_-9HvVko999_vYdApibljI1UuhMYohVkLz84IMkGEyf9BpSFWbR9oH3qJffwFnjb-f3XVDXjuuGRPpFU5q3acQ1-8Q5PzEXWZdAJAGFI","expires_in":7200})
7
+2018/08/26 09:44:13 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_2REPD5yYQxrGgfgH94odWyxn0xLwS_-9HvVko999_vYdApibljI1UuhMYohVkLz84IMkGEyf9BpSFWbR9oH3qJffwFnjb-f3XVDXjuuGRPpFU5q3acQ1-8Q5PzEXWZdAJAGFI expires_in:7200])
8
+2018/08/26 09:45:32 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
9
+2018/08/26 09:45:32 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_xTyy-6CTPuz4gw7CzuHQhZ73GnK1IL_KpzT9EgUTUX4qSgdqH0ZEgNMxhavJY-kMsaHN15owtkQe0dlf9kfE7Cl0PvCmC9OPc5PiJhflZ2NAAiZp84sKHp81FDsTSBeAHAYXG","expires_in":7200})
10
+2018/08/26 09:45:32 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_xTyy-6CTPuz4gw7CzuHQhZ73GnK1IL_KpzT9EgUTUX4qSgdqH0ZEgNMxhavJY-kMsaHN15owtkQe0dlf9kfE7Cl0PvCmC9OPc5PiJhflZ2NAAiZp84sKHp81FDsTSBeAHAYXG expires_in:7200])
11
+2018/08/26 09:49:08 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
12
+2018/08/26 09:49:09 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_K6k5JNOBeMpIe_gitC04i233yiyA6yh1smV1feyiUQTk6010b98PU3X67e8KCvaCjTR0HmjrttsTJLrtzg54TwKnGLE-UgV7NDMMhp4u2r2V56ghJDZ5-7xlC9SxvTkIu0nmQAfAif3ktCULIQZeADAVDM","expires_in":7200})
13
+2018/08/26 09:49:09 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_K6k5JNOBeMpIe_gitC04i233yiyA6yh1smV1feyiUQTk6010b98PU3X67e8KCvaCjTR0HmjrttsTJLrtzg54TwKnGLE-UgV7NDMMhp4u2r2V56ghJDZ5-7xlC9SxvTkIu0nmQAfAif3ktCULIQZeADAVDM expires_in:7200])
14
+2018/08/26 09:50:11 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
15
+2018/08/26 09:50:11 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_Dm3oaLYTAMFOsaxzn6Sm-liedNbNRUDD0lZuCSUHfVFWry9R7oXyyLDXGOsDR6XO_cAReWZ0KBgituizW20oxfHHq8ezj0iiUveePrL03Cml6x7R0WkzMOiNGcXmyzo3Igh3r8QhGK2WfuwOMVQfAAAHQL","expires_in":7200})
16
+2018/08/26 09:50:11 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_Dm3oaLYTAMFOsaxzn6Sm-liedNbNRUDD0lZuCSUHfVFWry9R7oXyyLDXGOsDR6XO_cAReWZ0KBgituizW20oxfHHq8ezj0iiUveePrL03Cml6x7R0WkzMOiNGcXmyzo3Igh3r8QhGK2WfuwOMVQfAAAHQL expires_in:7200])
17
+2018/08/26 09:51:59 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
18
+2018/08/26 09:51:59 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_B0bGSFxdnZK5KT9wzuHQhZ73GnK1IL_KpzT9EvI_ZHhdHbiwSy9FiEfhct77uI_1Brx6kBu3SklukBzw2BnWBk-Q52pYYIb9NpZELzJVR8tzWWbPWD9Tc36StP7FmdpzG1y9UrT4A3idUIDfVRGgAEAZVK","expires_in":7200})
19
+2018/08/26 09:51:59 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_B0bGSFxdnZK5KT9wzuHQhZ73GnK1IL_KpzT9EvI_ZHhdHbiwSy9FiEfhct77uI_1Brx6kBu3SklukBzw2BnWBk-Q52pYYIb9NpZELzJVR8tzWWbPWD9Tc36StP7FmdpzG1y9UrT4A3idUIDfVRGgAEAZVK expires_in:7200])
20
+2018/08/26 09:52:26 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
21
+2018/08/26 09:52:26 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_JaO07aaK8Vbt8mVhb88JC_57VjUKFd0UxQUL0TVMKNF0DUrcHPt4tjZjaeF3K1UI0NPOyNqYytzPg5YfIeSfDowMBreC86pigfPIXZrwlqspCOddE5QtTmD8uGQZ7_VhX0aHegYT8Iy-dSupBNQcAFAPBE","expires_in":7200})
22
+2018/08/26 09:52:26 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_JaO07aaK8Vbt8mVhb88JC_57VjUKFd0UxQUL0TVMKNF0DUrcHPt4tjZjaeF3K1UI0NPOyNqYytzPg5YfIeSfDowMBreC86pigfPIXZrwlqspCOddE5QtTmD8uGQZ7_VhX0aHegYT8Iy-dSupBNQcAFAPBE expires_in:7200])
23
+2018/08/26 09:52:52 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
24
+2018/08/26 09:52:52 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_W_Xh9756zIW8jFK4bRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkROLC6iU7zSqQxcPQQz-NsBHfFaK9Ol1HliVvIg8efKZGrfBwXva0asAn0OnU869MNfv5-EtNzJl_talvZ7N2twBOBfAEAVIV","expires_in":7200})
25
+2018/08/26 09:52:52 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_W_Xh9756zIW8jFK4bRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkROLC6iU7zSqQxcPQQz-NsBHfFaK9Ol1HliVvIg8efKZGrfBwXva0asAn0OnU869MNfv5-EtNzJl_talvZ7N2twBOBfAEAVIV])
26
+2018/08/26 09:53:06 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
27
+2018/08/26 09:53:06 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_x8W4tYHqT6-xw2KZbRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkTiPc6vNMq046pPpyHg_ksa0ELjakenatHGtKfyBPLppB1hTwdcpghc5Z8QmY5upPqR37Epw0HfFweotkLnljJiOEOfAEAXNX","expires_in":7200})
28
+2018/08/26 09:53:06 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_x8W4tYHqT6-xw2KZbRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkTiPc6vNMq046pPpyHg_ksa0ELjakenatHGtKfyBPLppB1hTwdcpghc5Z8QmY5upPqR37Epw0HfFweotkLnljJiOEOfAEAXNX expires_in:7200])
29
+2018/08/26 09:54:43 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
30
+2018/08/26 09:54:44 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_PK1MfsKJTJBSyulyKvLRHiorDM-9wwzYsyPyvpnEpTQgtpnYsMM6AwA9DcpV5vq0REYd69l3WhYQ1_0AOZcTW7GKQaAxLmxj47IBXdxLScTYi4l-8ZtP6ZmS96kFROeAGAJVS","expires_in":7200})
31
+2018/08/26 09:54:44 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_PK1MfsKJTJBSyulyKvLRHiorDM-9wwzYsyPyvpnEpTQgtpnYsMM6AwA9DcpV5vq0REYd69l3WhYQ1_0AOZcTW7GKQaAxLmxj47IBXdxLScTYi4l-8ZtP6ZmS96kFROeAGAJVS expires_in:7200])
32
+2018/08/26 09:56:04 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
33
+2018/08/26 09:56:04 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_igGxdtw6AzmfTOu9cIlzH2dMOQRu-NPQ0Pm92NS4Hm9llCRTrFHsaxQb0etiAjOuQBL7_ep7csgPjvyNWEEZGOZ28akNtaDQD1ApoYYeAihI58iUra270dbdmO8MNEfAGAWXO","expires_in":7200})
34
+2018/08/26 09:56:04 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_igGxdtw6AzmfTOu9cIlzH2dMOQRu-NPQ0Pm92NS4Hm9llCRTrFHsaxQb0etiAjOuQBL7_ep7csgPjvyNWEEZGOZ28akNtaDQD1ApoYYeAihI58iUra270dbdmO8MNEfAGAWXO expires_in:7200])
35
+2018/08/26 10:01:23 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
36
+2018/08/26 10:01:23 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_ho3BftxaKmrGQie6QrTSheSWuAj8XAN8wpjERCj2FB00PWVCksSlu-X-3yVreKXyMZiE9TKDHdpFRJ4TwWiWKC6Bn7nwuF38emI9H3YKw41aq4OzdCHxSpeswgkiUTmGyyLdUBTGvBg3LrgbQUQaACACGC","expires_in":7200})
37
+2018/08/26 10:01:23 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_ho3BftxaKmrGQie6QrTSheSWuAj8XAN8wpjERCj2FB00PWVCksSlu-X-3yVreKXyMZiE9TKDHdpFRJ4TwWiWKC6Bn7nwuF38emI9H3YKw41aq4OzdCHxSpeswgkiUTmGyyLdUBTGvBg3LrgbQUQaACACGC])
38
+2018/08/26 10:03:00 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
39
+2018/08/26 10:03:00 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_mPkwKKOyg1_TrG55P9WmMf-uZJq9ElASxwnCi3kwUmH6i2JfpZRszI-vThMJ8p2BZ155si1rJiD9T1OMphQ2LlU4mVJK2VylENa49ZYKq1nman7AQKmmUhQQf1NF61dSpJzwWL1YcmtxdswWPEWcAFAGVN","expires_in":7200})
40
+2018/08/26 10:03:00 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_mPkwKKOyg1_TrG55P9WmMf-uZJq9ElASxwnCi3kwUmH6i2JfpZRszI-vThMJ8p2BZ155si1rJiD9T1OMphQ2LlU4mVJK2VylENa49ZYKq1nman7AQKmmUhQQf1NF61dSpJzwWL1YcmtxdswWPEWcAFAGVN expires_in:7200])
41
+2018/08/26 10:03:34 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
42
+2018/08/26 10:03:37 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
43
+2018/08/26 10:03:37 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_pDrce0TWVtCLO-krXhdBpI73YPmDSHDuiZldQlc0KhV3MDE9JEF9fhiCft8VbdEtodGzPVCL0_HE1pGlJ8SPI64yDhihRsrgkw7gh8tUnzSXlax1SqATFixZjSN6ufmekVUwX1lTNaQxz74BDSNaAHAYNI","expires_in":7200})
44
+2018/08/26 10:03:37 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_pDrce0TWVtCLO-krXhdBpI73YPmDSHDuiZldQlc0KhV3MDE9JEF9fhiCft8VbdEtodGzPVCL0_HE1pGlJ8SPI64yDhihRsrgkw7gh8tUnzSXlax1SqATFixZjSN6ufmekVUwX1lTNaQxz74BDSNaAHAYNI expires_in:7200])
45
+2018/08/26 10:06:33 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
46
+2018/08/26 10:06:33 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_DZoFCC4yhlTyAkYxNIDuR2xRUAWJHPruJFOqDuEV3D5d1DdqVNkCznwmzs340F7K4wM5CiXND7hySR6ljElUYYPdZq_LrWW-g-Q5SzsRT6RRelYmhu4yRe8J8cBBg_ElkEbervWfr1DBlstvZOHaAIADSL","expires_in":7200})
47
+2018/08/26 10:06:33 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_DZoFCC4yhlTyAkYxNIDuR2xRUAWJHPruJFOqDuEV3D5d1DdqVNkCznwmzs340F7K4wM5CiXND7hySR6ljElUYYPdZq_LrWW-g-Q5SzsRT6RRelYmhu4yRe8J8cBBg_ElkEbervWfr1DBlstvZOHaAIADSL expires_in:7200])
48
+2018/08/26 10:08:42 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
49
+2018/08/26 10:08:43 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_96NNB_wLDEFTiOTGTmi9TkQvj1AiAe3lQIQWnbQIohFWbJ5DduY27W7k_Acaf8CUKq-N1Bl9yorRUuG690EDGHwBuA5tpkg3fAvrnn50VNEmTbtaNN3H22dcMu5eqxZIAtptEs_n5SRPXBfXOKIcACABXV","expires_in":7200})
50
+2018/08/26 10:08:43 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_96NNB_wLDEFTiOTGTmi9TkQvj1AiAe3lQIQWnbQIohFWbJ5DduY27W7k_Acaf8CUKq-N1Bl9yorRUuG690EDGHwBuA5tpkg3fAvrnn50VNEmTbtaNN3H22dcMu5eqxZIAtptEs_n5SRPXBfXOKIcACABXV expires_in:7200])
51
+2018/08/26 10:28:46 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
52
+2018/08/26 10:28:47 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_tfSozSKyxf6tttaz0yd2aut_EFTLarqBafPHq9AIARgmCTZL471kN1LURN4Fkklongv4QIwKWMKPgiDc0Lz_2UrwBmbDWFsr_CsKoXMewVTLbjcPRMzVwps-bgL865o-ivCgAv_1lk9AZ92BFPFeAFAYIY","expires_in":7200})
53
+2018/08/26 10:28:47 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_tfSozSKyxf6tttaz0yd2aut_EFTLarqBafPHq9AIARgmCTZL471kN1LURN4Fkklongv4QIwKWMKPgiDc0Lz_2UrwBmbDWFsr_CsKoXMewVTLbjcPRMzVwps-bgL865o-ivCgAv_1lk9AZ92BFPFeAFAYIY expires_in:7200])
54
+2018/08/26 10:36:16 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
55
+2018/08/26 10:36:16 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_Bgp4G3PY317x9UpbQOS6uPUvYLON3hDKHhqdyhD0TB_S4qUw5Kps-GnjTBABV8fU0Fq5JZkiTeXHHCLXnolcWgx3lMMy736Q_UU2hWVRHoiVTR7WRe08Yg3p2_OxIS43-bhf5ZZ1Pq1vpla5PDDfABACQQ","expires_in":7200})
56
+2018/08/26 10:36:16 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_Bgp4G3PY317x9UpbQOS6uPUvYLON3hDKHhqdyhD0TB_S4qUw5Kps-GnjTBABV8fU0Fq5JZkiTeXHHCLXnolcWgx3lMMy736Q_UU2hWVRHoiVTR7WRe08Yg3p2_OxIS43-bhf5ZZ1Pq1vpla5PDDfABACQQ expires_in:7200])
57
+2018/08/26 10:37:08 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
58
+2018/08/26 10:37:08 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_7OsVSwADwqEcwqQKNIDuR2xRUAWJHPruJFOqDlmHgDjknD0fdU94o7ndqas3U5aNtlfiNoovlsA4RLjUmqIMGf0vTlCFBjQ_M8L-N-i1jlcQiugyXFDRWsui1CUIG_9gW7gCdS1LUybkGRE4ZCIcABAEHN","expires_in":7200})
59
+2018/08/26 10:37:08 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_7OsVSwADwqEcwqQKNIDuR2xRUAWJHPruJFOqDlmHgDjknD0fdU94o7ndqas3U5aNtlfiNoovlsA4RLjUmqIMGf0vTlCFBjQ_M8L-N-i1jlcQiugyXFDRWsui1CUIG_9gW7gCdS1LUybkGRE4ZCIcABAEHN expires_in:7200])
60
+2018/08/26 10:48:19 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
61
+2018/08/26 10:48:20 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_kgQXjSoiSNu6r7VNYRaB7Jkvc6MyxsgqlfRp0GD3t4U9VVRlLLteA1jq_4IZBAVt3zYLiacrmsTJLR2nD9qb99yUWfPaLFP8NBTDPvu4cFYbNFHmOBMUJwVW9lVEaPm_2kQY1tnqcmFRpa6uKOGeABAFJB","expires_in":7200})
62
+2018/08/26 10:48:20 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_kgQXjSoiSNu6r7VNYRaB7Jkvc6MyxsgqlfRp0GD3t4U9VVRlLLteA1jq_4IZBAVt3zYLiacrmsTJLR2nD9qb99yUWfPaLFP8NBTDPvu4cFYbNFHmOBMUJwVW9lVEaPm_2kQY1tnqcmFRpa6uKOGeABAFJB expires_in:7200])
63
+2018/08/26 10:57:38 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
64
+2018/08/26 10:57:38 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_IuDEV53CHWkI4PMqWBMNgMuHx4Y6f7UP5MD90PRncFeGPK9Ri00Zbf6d-IvnUZ3FEhCN7bkwGK9wJPJGXu-RY5J91Cpr_OII7IZhVYPjtdLWuBIPzkcq28gKfxTRlSQTCQXGc3_khJMAJrNIDUThAGAGXW","expires_in":7200})
65
+2018/08/26 10:57:38 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_IuDEV53CHWkI4PMqWBMNgMuHx4Y6f7UP5MD90PRncFeGPK9Ri00Zbf6d-IvnUZ3FEhCN7bkwGK9wJPJGXu-RY5J91Cpr_OII7IZhVYPjtdLWuBIPzkcq28gKfxTRlSQTCQXGc3_khJMAJrNIDUThAGAGXW expires_in:7200])
66
+2018/08/26 10:58:56 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
67
+2018/08/26 10:58:56 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_j6hv2N3bFx7qKu-zMWqgXQqP5f3C1fi5MKw7aVmOU27p7NHWfiwleuTzzhyuccc9zfejZJV9s615X9pGZo2swrUQa_R4b3jFxn7OLuA3jDgBBUQwvIv578aeNjgLLVfAIAUUE","expires_in":7200})
68
+2018/08/26 10:58:56 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_j6hv2N3bFx7qKu-zMWqgXQqP5f3C1fi5MKw7aVmOU27p7NHWfiwleuTzzhyuccc9zfejZJV9s615X9pGZo2swrUQa_R4b3jFxn7OLuA3jDgBBUQwvIv578aeNjgLLVfAIAUUE expires_in:7200])
69
+2018/08/26 15:20:02 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
70
+2018/08/26 15:20:03 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_BWujCeV9M2yUp5tsJpx7FaGHTMbuGAJ0c3XHxCrkY7-Ro9tiu-cAJNx45PdkiNe5SfTZrW7ZhHXz36VnZ8HYzN6arFiFgloLHh9qJIb9_sIqFAgi2NPApcOm16BXEF4GY7KDOza67EWofM1jIQIgABAUCU","expires_in":7200})
71
+2018/08/26 15:20:03 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_BWujCeV9M2yUp5tsJpx7FaGHTMbuGAJ0c3XHxCrkY7-Ro9tiu-cAJNx45PdkiNe5SfTZrW7ZhHXz36VnZ8HYzN6arFiFgloLHh9qJIb9_sIqFAgi2NPApcOm16BXEF4GY7KDOza67EWofM1jIQIgABAUCU expires_in:7200])
72
+2018/08/26 16:17:50 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
73
+2018/08/26 16:17:50 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_hezlnSFBORaBwf5SdwfaSZEoGO35hkS4XL7D2SKqDSUwryGZpP6lFh9fVUDjFQzwv0oH3wZnP5ANT4rE1nQEeBgZTHIPo5Qzu5KpHhVFQNc_0bb6XGAFm-ugPf9iKI2tVA4SIfILsf6VunDeLZUeAAAVJE","expires_in":7200})
74
+2018/08/26 16:17:50 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_hezlnSFBORaBwf5SdwfaSZEoGO35hkS4XL7D2SKqDSUwryGZpP6lFh9fVUDjFQzwv0oH3wZnP5ANT4rE1nQEeBgZTHIPo5Qzu5KpHhVFQNc_0bb6XGAFm-ugPf9iKI2tVA4SIfILsf6VunDeLZUeAAAVJE expires_in:7200])
75
+2018/09/05 14:05:44.496 [E]  不存在营销信息!
76
+2018/09/05 16:08:13.236 [E]  没有对应的营销活动
77
+2018/09/05 20:46:22 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
78
+2018/09/05 20:46:22 [E] 获取组织信息失败: 没有查询到机构信息
79
+2018/09/05 20:46:22 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
80
+2018/09/05 20:46:22 [E] 下单转换JSON失败: json: cannot unmarshal number into Go struct field TaCourseOrders.CustomerId of type string
81
+2018/09/05 20:46:22 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_40wwMDxnHi_pYFr00yd2aut_EFTLarqBafPHqwv8R183qUqb_YaeFDTKjy41RrX3fcayrs1zAx5M_6V9ZD3sDSlU-y6F6AUbjV9EPZKOwIASwWYXHIjgt0sFtaWVB0WGhgDUSTKjiN-xejmBZGFcACAQXW","expires_in":7200})
82
+2018/09/05 20:46:22 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_40wwMDxnHi_pYFr00yd2aut_EFTLarqBafPHqwv8R183qUqb_YaeFDTKjy41RrX3fcayrs1zAx5M_6V9ZD3sDSlU-y6F6AUbjV9EPZKOwIASwWYXHIjgt0sFtaWVB0WGhgDUSTKjiN-xejmBZGFcACAQXW])
83
+2018/09/05 20:47:15 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
84
+2018/09/05 20:47:15 [E] 获取组织信息失败: 没有查询到机构信息
85
+2018/09/05 20:47:17 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
86
+2018/09/05 20:47:17 [E] 获取组织信息失败: 没有查询到机构信息
87
+2018/09/05 20:47:17 [E] 下单优惠转换JSON失败: unexpected end of JSON input
88
+2018/09/05 20:48:57 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
89
+2018/09/05 20:48:57 [E] 获取组织信息失败: 没有查询到机构信息
90
+2018/09/05 20:48:57 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
91
+2018/09/05 20:48:58 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_cODCqx4ygv6jVXcnJpx7FaGHTMbuGAJ0c3XHxHJvQHXHMcBcaodYjJY5tRxxoe2Gsd0-sIBbBj-q0CgP4zyVQamH4N5Y7ea4MaPEMRdM52tJMfsGeDrmO1679DHdpl-gxcPMGdTSgm_Sn5SHNLLcAFAQOO","expires_in":7200})
92
+2018/09/05 20:48:58 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_cODCqx4ygv6jVXcnJpx7FaGHTMbuGAJ0c3XHxHJvQHXHMcBcaodYjJY5tRxxoe2Gsd0-sIBbBj-q0CgP4zyVQamH4N5Y7ea4MaPEMRdM52tJMfsGeDrmO1679DHdpl-gxcPMGdTSgm_Sn5SHNLLcAFAQOO expires_in:7200])
93
+2018/09/05 20:49:18 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
94
+2018/09/05 20:49:18 [E] 获取组织信息失败: 没有查询到机构信息
95
+2018/09/05 20:49:23 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
96
+2018/09/05 20:49:23 [E] 获取组织信息失败: 没有查询到机构信息
97
+2018/09/05 20:49:27 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
98
+2018/09/05 20:49:27 [E] 获取组织信息失败: 没有查询到机构信息
99
+2018/09/05 20:49:44 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
100
+2018/09/05 20:49:44 [E] 获取组织信息失败: 没有查询到机构信息
101
+2018/09/05 20:50:00 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
102
+2018/09/05 20:50:00 [E] 获取组织信息失败: 没有查询到机构信息
103
+2018/09/05 20:50:00 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
104
+2018/09/05 20:50:01 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_Kx2YTe2o_Xlqu7XwXF_SmuGSs0pzMKdzTxBVOrdW9Y406UB_OAbuy181N3cqFQVOoZodH7DHkEddPsPgIPU2vlxzXwkW3W5yafkaNSYtFWE80lWE4u8-HpRsU2pSqlplcPZH4hkcqMDFbuJ3NAUaAHAJWQ","expires_in":7200})
105
+2018/09/05 20:50:01 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_Kx2YTe2o_Xlqu7XwXF_SmuGSs0pzMKdzTxBVOrdW9Y406UB_OAbuy181N3cqFQVOoZodH7DHkEddPsPgIPU2vlxzXwkW3W5yafkaNSYtFWE80lWE4u8-HpRsU2pSqlplcPZH4hkcqMDFbuJ3NAUaAHAJWQ])
106
+2018/09/05 20:50:06 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
107
+2018/09/05 20:50:06 [E] 获取组织信息失败: 没有查询到机构信息
108
+2018/09/05 20:50:10 [E] 解密 Base64 字串失败: illegal base64 data at input byte 1
109
+2018/09/05 20:50:10 [E] 获取组织信息失败: 没有查询到机构信息
110
+2018/09/05 20:50:45 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
111
+2018/09/05 20:50:45 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_JBzudKpFiCtAdYE0Rouc5sin8BHZTUcYQXNEZsXSd7xj7A9OfXnnywRVpAcdwjR2-Bz6OzGkl3lfVl23L7XvGYVU8dj3cjI8qLLW93vaXgz1qE3dPhDt2xqHTTYOv8Ajh4rofEGTmnXP9iX1UAXaAGADJG","expires_in":7200})
112
+2018/09/05 20:50:45 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_JBzudKpFiCtAdYE0Rouc5sin8BHZTUcYQXNEZsXSd7xj7A9OfXnnywRVpAcdwjR2-Bz6OzGkl3lfVl23L7XvGYVU8dj3cjI8qLLW93vaXgz1qE3dPhDt2xqHTTYOv8Ajh4rofEGTmnXP9iX1UAXaAGADJG expires_in:7200])
113
+2018/09/05 20:55:30 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
114
+2018/09/05 20:55:30 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_xvcEAyP8v3zEDtsbWm__3tPL-9QqCmyCudjbChDCB9R-KjLf6T4SKjItQO9to77IfBUy96-2z36i3YKKgpDFTFOA8lNQ6ao81nyrzPkwdhtWV8UHrZctadS1rN6uIm0NHzY353OMLIitxWuBKWFcAGAAMV","expires_in":7200})
115
+2018/09/05 20:55:30 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_xvcEAyP8v3zEDtsbWm__3tPL-9QqCmyCudjbChDCB9R-KjLf6T4SKjItQO9to77IfBUy96-2z36i3YKKgpDFTFOA8lNQ6ao81nyrzPkwdhtWV8UHrZctadS1rN6uIm0NHzY353OMLIitxWuBKWFcAGAAMV expires_in:7200])
116
+2018/09/05 22:55:30 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
117
+2018/09/05 22:55:30 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_t_RW2B_Cdc9JwXZWF5oX2-mKsE_NyyL3FclnDrUGboPVRbdDUOKiATUMBPxpfReVAFildW2ChpcVFmo9fR0OAVQCMEE0JYO4kFNN4nVTBKjDr7ih0YnhHn54Ttkrc6vbiiTGfOGJZGgVN1ZAAOBhAIADRE","expires_in":7200})
118
+2018/09/05 22:55:30 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_t_RW2B_Cdc9JwXZWF5oX2-mKsE_NyyL3FclnDrUGboPVRbdDUOKiATUMBPxpfReVAFildW2ChpcVFmo9fR0OAVQCMEE0JYO4kFNN4nVTBKjDr7ih0YnhHn54Ttkrc6vbiiTGfOGJZGgVN1ZAAOBhAIADRE expires_in:7200])

+ 19
- 74
log/common.log Näytä tiedosto

@@ -1,74 +1,19 @@
1
-2018/08/26 09:37:50 [E] 查询微信配置失败: Error 1054: Unknown column 'rmark' in 'field list'
2
-2018/08/26 09:38:37 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
3
-2018/08/26 09:38:37 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_-Lg_RS71-apY79btcVmfgOoi47yZER01vtlROS4cXfqgIRfbPkzUPTwvZz6w0DlHMJIk7h-xISGUwZ0Tosff1sEpcfhNiBLw6zvr-l9zpi-tp2N6hJY7QM4uExMIZTSOixTUS9uHKOiK7trvUZWdAIAHMJ","expires_in":7200})
4
-2018/08/26 09:38:37 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_-Lg_RS71-apY79btcVmfgOoi47yZER01vtlROS4cXfqgIRfbPkzUPTwvZz6w0DlHMJIk7h-xISGUwZ0Tosff1sEpcfhNiBLw6zvr-l9zpi-tp2N6hJY7QM4uExMIZTSOixTUS9uHKOiK7trvUZWdAIAHMJ])
5
-2018/08/26 09:44:13 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
6
-2018/08/26 09:44:13 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_2REPD5yYQxrGgfgH94odWyxn0xLwS_-9HvVko999_vYdApibljI1UuhMYohVkLz84IMkGEyf9BpSFWbR9oH3qJffwFnjb-f3XVDXjuuGRPpFU5q3acQ1-8Q5PzEXWZdAJAGFI","expires_in":7200})
7
-2018/08/26 09:44:13 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_2REPD5yYQxrGgfgH94odWyxn0xLwS_-9HvVko999_vYdApibljI1UuhMYohVkLz84IMkGEyf9BpSFWbR9oH3qJffwFnjb-f3XVDXjuuGRPpFU5q3acQ1-8Q5PzEXWZdAJAGFI expires_in:7200])
8
-2018/08/26 09:45:32 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
9
-2018/08/26 09:45:32 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_xTyy-6CTPuz4gw7CzuHQhZ73GnK1IL_KpzT9EgUTUX4qSgdqH0ZEgNMxhavJY-kMsaHN15owtkQe0dlf9kfE7Cl0PvCmC9OPc5PiJhflZ2NAAiZp84sKHp81FDsTSBeAHAYXG","expires_in":7200})
10
-2018/08/26 09:45:32 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_xTyy-6CTPuz4gw7CzuHQhZ73GnK1IL_KpzT9EgUTUX4qSgdqH0ZEgNMxhavJY-kMsaHN15owtkQe0dlf9kfE7Cl0PvCmC9OPc5PiJhflZ2NAAiZp84sKHp81FDsTSBeAHAYXG expires_in:7200])
11
-2018/08/26 09:49:08 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
12
-2018/08/26 09:49:09 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_K6k5JNOBeMpIe_gitC04i233yiyA6yh1smV1feyiUQTk6010b98PU3X67e8KCvaCjTR0HmjrttsTJLrtzg54TwKnGLE-UgV7NDMMhp4u2r2V56ghJDZ5-7xlC9SxvTkIu0nmQAfAif3ktCULIQZeADAVDM","expires_in":7200})
13
-2018/08/26 09:49:09 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_K6k5JNOBeMpIe_gitC04i233yiyA6yh1smV1feyiUQTk6010b98PU3X67e8KCvaCjTR0HmjrttsTJLrtzg54TwKnGLE-UgV7NDMMhp4u2r2V56ghJDZ5-7xlC9SxvTkIu0nmQAfAif3ktCULIQZeADAVDM expires_in:7200])
14
-2018/08/26 09:50:11 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
15
-2018/08/26 09:50:11 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_Dm3oaLYTAMFOsaxzn6Sm-liedNbNRUDD0lZuCSUHfVFWry9R7oXyyLDXGOsDR6XO_cAReWZ0KBgituizW20oxfHHq8ezj0iiUveePrL03Cml6x7R0WkzMOiNGcXmyzo3Igh3r8QhGK2WfuwOMVQfAAAHQL","expires_in":7200})
16
-2018/08/26 09:50:11 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_Dm3oaLYTAMFOsaxzn6Sm-liedNbNRUDD0lZuCSUHfVFWry9R7oXyyLDXGOsDR6XO_cAReWZ0KBgituizW20oxfHHq8ezj0iiUveePrL03Cml6x7R0WkzMOiNGcXmyzo3Igh3r8QhGK2WfuwOMVQfAAAHQL expires_in:7200])
17
-2018/08/26 09:51:59 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
18
-2018/08/26 09:51:59 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_B0bGSFxdnZK5KT9wzuHQhZ73GnK1IL_KpzT9EvI_ZHhdHbiwSy9FiEfhct77uI_1Brx6kBu3SklukBzw2BnWBk-Q52pYYIb9NpZELzJVR8tzWWbPWD9Tc36StP7FmdpzG1y9UrT4A3idUIDfVRGgAEAZVK","expires_in":7200})
19
-2018/08/26 09:51:59 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_B0bGSFxdnZK5KT9wzuHQhZ73GnK1IL_KpzT9EvI_ZHhdHbiwSy9FiEfhct77uI_1Brx6kBu3SklukBzw2BnWBk-Q52pYYIb9NpZELzJVR8tzWWbPWD9Tc36StP7FmdpzG1y9UrT4A3idUIDfVRGgAEAZVK expires_in:7200])
20
-2018/08/26 09:52:26 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
21
-2018/08/26 09:52:26 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_JaO07aaK8Vbt8mVhb88JC_57VjUKFd0UxQUL0TVMKNF0DUrcHPt4tjZjaeF3K1UI0NPOyNqYytzPg5YfIeSfDowMBreC86pigfPIXZrwlqspCOddE5QtTmD8uGQZ7_VhX0aHegYT8Iy-dSupBNQcAFAPBE","expires_in":7200})
22
-2018/08/26 09:52:26 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_JaO07aaK8Vbt8mVhb88JC_57VjUKFd0UxQUL0TVMKNF0DUrcHPt4tjZjaeF3K1UI0NPOyNqYytzPg5YfIeSfDowMBreC86pigfPIXZrwlqspCOddE5QtTmD8uGQZ7_VhX0aHegYT8Iy-dSupBNQcAFAPBE expires_in:7200])
23
-2018/08/26 09:52:52 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
24
-2018/08/26 09:52:52 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_W_Xh9756zIW8jFK4bRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkROLC6iU7zSqQxcPQQz-NsBHfFaK9Ol1HliVvIg8efKZGrfBwXva0asAn0OnU869MNfv5-EtNzJl_talvZ7N2twBOBfAEAVIV","expires_in":7200})
25
-2018/08/26 09:52:52 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_W_Xh9756zIW8jFK4bRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkROLC6iU7zSqQxcPQQz-NsBHfFaK9Ol1HliVvIg8efKZGrfBwXva0asAn0OnU869MNfv5-EtNzJl_talvZ7N2twBOBfAEAVIV])
26
-2018/08/26 09:53:06 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
27
-2018/08/26 09:53:06 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_x8W4tYHqT6-xw2KZbRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkTiPc6vNMq046pPpyHg_ksa0ELjakenatHGtKfyBPLppB1hTwdcpghc5Z8QmY5upPqR37Epw0HfFweotkLnljJiOEOfAEAXNX","expires_in":7200})
28
-2018/08/26 09:53:06 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_x8W4tYHqT6-xw2KZbRxCsoQiUV0j-zAfNmXR38hdAk10_MDRh15cOJkDRkTiPc6vNMq046pPpyHg_ksa0ELjakenatHGtKfyBPLppB1hTwdcpghc5Z8QmY5upPqR37Epw0HfFweotkLnljJiOEOfAEAXNX expires_in:7200])
29
-2018/08/26 09:54:43 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
30
-2018/08/26 09:54:44 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_PK1MfsKJTJBSyulyKvLRHiorDM-9wwzYsyPyvpnEpTQgtpnYsMM6AwA9DcpV5vq0REYd69l3WhYQ1_0AOZcTW7GKQaAxLmxj47IBXdxLScTYi4l-8ZtP6ZmS96kFROeAGAJVS","expires_in":7200})
31
-2018/08/26 09:54:44 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_PK1MfsKJTJBSyulyKvLRHiorDM-9wwzYsyPyvpnEpTQgtpnYsMM6AwA9DcpV5vq0REYd69l3WhYQ1_0AOZcTW7GKQaAxLmxj47IBXdxLScTYi4l-8ZtP6ZmS96kFROeAGAJVS expires_in:7200])
32
-2018/08/26 09:56:04 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
33
-2018/08/26 09:56:04 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_igGxdtw6AzmfTOu9cIlzH2dMOQRu-NPQ0Pm92NS4Hm9llCRTrFHsaxQb0etiAjOuQBL7_ep7csgPjvyNWEEZGOZ28akNtaDQD1ApoYYeAihI58iUra270dbdmO8MNEfAGAWXO","expires_in":7200})
34
-2018/08/26 09:56:04 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_igGxdtw6AzmfTOu9cIlzH2dMOQRu-NPQ0Pm92NS4Hm9llCRTrFHsaxQb0etiAjOuQBL7_ep7csgPjvyNWEEZGOZ28akNtaDQD1ApoYYeAihI58iUra270dbdmO8MNEfAGAWXO expires_in:7200])
35
-2018/08/26 10:01:23 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
36
-2018/08/26 10:01:23 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_ho3BftxaKmrGQie6QrTSheSWuAj8XAN8wpjERCj2FB00PWVCksSlu-X-3yVreKXyMZiE9TKDHdpFRJ4TwWiWKC6Bn7nwuF38emI9H3YKw41aq4OzdCHxSpeswgkiUTmGyyLdUBTGvBg3LrgbQUQaACACGC","expires_in":7200})
37
-2018/08/26 10:01:23 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_ho3BftxaKmrGQie6QrTSheSWuAj8XAN8wpjERCj2FB00PWVCksSlu-X-3yVreKXyMZiE9TKDHdpFRJ4TwWiWKC6Bn7nwuF38emI9H3YKw41aq4OzdCHxSpeswgkiUTmGyyLdUBTGvBg3LrgbQUQaACACGC])
38
-2018/08/26 10:03:00 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
39
-2018/08/26 10:03:00 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_mPkwKKOyg1_TrG55P9WmMf-uZJq9ElASxwnCi3kwUmH6i2JfpZRszI-vThMJ8p2BZ155si1rJiD9T1OMphQ2LlU4mVJK2VylENa49ZYKq1nman7AQKmmUhQQf1NF61dSpJzwWL1YcmtxdswWPEWcAFAGVN","expires_in":7200})
40
-2018/08/26 10:03:00 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_mPkwKKOyg1_TrG55P9WmMf-uZJq9ElASxwnCi3kwUmH6i2JfpZRszI-vThMJ8p2BZ155si1rJiD9T1OMphQ2LlU4mVJK2VylENa49ZYKq1nman7AQKmmUhQQf1NF61dSpJzwWL1YcmtxdswWPEWcAFAGVN expires_in:7200])
41
-2018/08/26 10:03:34 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
42
-2018/08/26 10:03:37 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
43
-2018/08/26 10:03:37 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_pDrce0TWVtCLO-krXhdBpI73YPmDSHDuiZldQlc0KhV3MDE9JEF9fhiCft8VbdEtodGzPVCL0_HE1pGlJ8SPI64yDhihRsrgkw7gh8tUnzSXlax1SqATFixZjSN6ufmekVUwX1lTNaQxz74BDSNaAHAYNI","expires_in":7200})
44
-2018/08/26 10:03:37 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_pDrce0TWVtCLO-krXhdBpI73YPmDSHDuiZldQlc0KhV3MDE9JEF9fhiCft8VbdEtodGzPVCL0_HE1pGlJ8SPI64yDhihRsrgkw7gh8tUnzSXlax1SqATFixZjSN6ufmekVUwX1lTNaQxz74BDSNaAHAYNI expires_in:7200])
45
-2018/08/26 10:06:33 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
46
-2018/08/26 10:06:33 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_DZoFCC4yhlTyAkYxNIDuR2xRUAWJHPruJFOqDuEV3D5d1DdqVNkCznwmzs340F7K4wM5CiXND7hySR6ljElUYYPdZq_LrWW-g-Q5SzsRT6RRelYmhu4yRe8J8cBBg_ElkEbervWfr1DBlstvZOHaAIADSL","expires_in":7200})
47
-2018/08/26 10:06:33 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_DZoFCC4yhlTyAkYxNIDuR2xRUAWJHPruJFOqDuEV3D5d1DdqVNkCznwmzs340F7K4wM5CiXND7hySR6ljElUYYPdZq_LrWW-g-Q5SzsRT6RRelYmhu4yRe8J8cBBg_ElkEbervWfr1DBlstvZOHaAIADSL expires_in:7200])
48
-2018/08/26 10:08:42 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
49
-2018/08/26 10:08:43 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_96NNB_wLDEFTiOTGTmi9TkQvj1AiAe3lQIQWnbQIohFWbJ5DduY27W7k_Acaf8CUKq-N1Bl9yorRUuG690EDGHwBuA5tpkg3fAvrnn50VNEmTbtaNN3H22dcMu5eqxZIAtptEs_n5SRPXBfXOKIcACABXV","expires_in":7200})
50
-2018/08/26 10:08:43 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_96NNB_wLDEFTiOTGTmi9TkQvj1AiAe3lQIQWnbQIohFWbJ5DduY27W7k_Acaf8CUKq-N1Bl9yorRUuG690EDGHwBuA5tpkg3fAvrnn50VNEmTbtaNN3H22dcMu5eqxZIAtptEs_n5SRPXBfXOKIcACABXV expires_in:7200])
51
-2018/08/26 10:28:46 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
52
-2018/08/26 10:28:47 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_tfSozSKyxf6tttaz0yd2aut_EFTLarqBafPHq9AIARgmCTZL471kN1LURN4Fkklongv4QIwKWMKPgiDc0Lz_2UrwBmbDWFsr_CsKoXMewVTLbjcPRMzVwps-bgL865o-ivCgAv_1lk9AZ92BFPFeAFAYIY","expires_in":7200})
53
-2018/08/26 10:28:47 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_tfSozSKyxf6tttaz0yd2aut_EFTLarqBafPHq9AIARgmCTZL471kN1LURN4Fkklongv4QIwKWMKPgiDc0Lz_2UrwBmbDWFsr_CsKoXMewVTLbjcPRMzVwps-bgL865o-ivCgAv_1lk9AZ92BFPFeAFAYIY expires_in:7200])
54
-2018/08/26 10:36:16 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
55
-2018/08/26 10:36:16 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_Bgp4G3PY317x9UpbQOS6uPUvYLON3hDKHhqdyhD0TB_S4qUw5Kps-GnjTBABV8fU0Fq5JZkiTeXHHCLXnolcWgx3lMMy736Q_UU2hWVRHoiVTR7WRe08Yg3p2_OxIS43-bhf5ZZ1Pq1vpla5PDDfABACQQ","expires_in":7200})
56
-2018/08/26 10:36:16 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_Bgp4G3PY317x9UpbQOS6uPUvYLON3hDKHhqdyhD0TB_S4qUw5Kps-GnjTBABV8fU0Fq5JZkiTeXHHCLXnolcWgx3lMMy736Q_UU2hWVRHoiVTR7WRe08Yg3p2_OxIS43-bhf5ZZ1Pq1vpla5PDDfABACQQ expires_in:7200])
57
-2018/08/26 10:37:08 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
58
-2018/08/26 10:37:08 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_7OsVSwADwqEcwqQKNIDuR2xRUAWJHPruJFOqDlmHgDjknD0fdU94o7ndqas3U5aNtlfiNoovlsA4RLjUmqIMGf0vTlCFBjQ_M8L-N-i1jlcQiugyXFDRWsui1CUIG_9gW7gCdS1LUybkGRE4ZCIcABAEHN","expires_in":7200})
59
-2018/08/26 10:37:08 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_7OsVSwADwqEcwqQKNIDuR2xRUAWJHPruJFOqDlmHgDjknD0fdU94o7ndqas3U5aNtlfiNoovlsA4RLjUmqIMGf0vTlCFBjQ_M8L-N-i1jlcQiugyXFDRWsui1CUIG_9gW7gCdS1LUybkGRE4ZCIcABAEHN expires_in:7200])
60
-2018/08/26 10:48:19 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
61
-2018/08/26 10:48:20 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_kgQXjSoiSNu6r7VNYRaB7Jkvc6MyxsgqlfRp0GD3t4U9VVRlLLteA1jq_4IZBAVt3zYLiacrmsTJLR2nD9qb99yUWfPaLFP8NBTDPvu4cFYbNFHmOBMUJwVW9lVEaPm_2kQY1tnqcmFRpa6uKOGeABAFJB","expires_in":7200})
62
-2018/08/26 10:48:20 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_kgQXjSoiSNu6r7VNYRaB7Jkvc6MyxsgqlfRp0GD3t4U9VVRlLLteA1jq_4IZBAVt3zYLiacrmsTJLR2nD9qb99yUWfPaLFP8NBTDPvu4cFYbNFHmOBMUJwVW9lVEaPm_2kQY1tnqcmFRpa6uKOGeABAFJB expires_in:7200])
63
-2018/08/26 10:57:38 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
64
-2018/08/26 10:57:38 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_IuDEV53CHWkI4PMqWBMNgMuHx4Y6f7UP5MD90PRncFeGPK9Ri00Zbf6d-IvnUZ3FEhCN7bkwGK9wJPJGXu-RY5J91Cpr_OII7IZhVYPjtdLWuBIPzkcq28gKfxTRlSQTCQXGc3_khJMAJrNIDUThAGAGXW","expires_in":7200})
65
-2018/08/26 10:57:38 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_IuDEV53CHWkI4PMqWBMNgMuHx4Y6f7UP5MD90PRncFeGPK9Ri00Zbf6d-IvnUZ3FEhCN7bkwGK9wJPJGXu-RY5J91Cpr_OII7IZhVYPjtdLWuBIPzkcq28gKfxTRlSQTCQXGc3_khJMAJrNIDUThAGAGXW expires_in:7200])
66
-2018/08/26 10:58:56 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
67
-2018/08/26 10:58:56 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_j6hv2N3bFx7qKu-zMWqgXQqP5f3C1fi5MKw7aVmOU27p7NHWfiwleuTzzhyuccc9zfejZJV9s615X9pGZo2swrUQa_R4b3jFxn7OLuA3jDgBBUQwvIv578aeNjgLLVfAIAUUE","expires_in":7200})
68
-2018/08/26 10:58:56 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_j6hv2N3bFx7qKu-zMWqgXQqP5f3C1fi5MKw7aVmOU27p7NHWfiwleuTzzhyuccc9zfejZJV9s615X9pGZo2swrUQa_R4b3jFxn7OLuA3jDgBBUQwvIv578aeNjgLLVfAIAUUE expires_in:7200])
69
-2018/08/26 15:20:02 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
70
-2018/08/26 15:20:03 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_BWujCeV9M2yUp5tsJpx7FaGHTMbuGAJ0c3XHxCrkY7-Ro9tiu-cAJNx45PdkiNe5SfTZrW7ZhHXz36VnZ8HYzN6arFiFgloLHh9qJIb9_sIqFAgi2NPApcOm16BXEF4GY7KDOza67EWofM1jIQIgABAUCU","expires_in":7200})
71
-2018/08/26 15:20:03 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_BWujCeV9M2yUp5tsJpx7FaGHTMbuGAJ0c3XHxCrkY7-Ro9tiu-cAJNx45PdkiNe5SfTZrW7ZhHXz36VnZ8HYzN6arFiFgloLHh9qJIb9_sIqFAgi2NPApcOm16BXEF4GY7KDOza67EWofM1jIQIgABAUCU expires_in:7200])
72
-2018/08/26 16:17:50 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
73
-2018/08/26 16:17:50 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_hezlnSFBORaBwf5SdwfaSZEoGO35hkS4XL7D2SKqDSUwryGZpP6lFh9fVUDjFQzwv0oH3wZnP5ANT4rE1nQEeBgZTHIPo5Qzu5KpHhVFQNc_0bb6XGAFm-ugPf9iKI2tVA4SIfILsf6VunDeLZUeAAAVJE","expires_in":7200})
74
-2018/08/26 16:17:50 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_hezlnSFBORaBwf5SdwfaSZEoGO35hkS4XL7D2SKqDSUwryGZpP6lFh9fVUDjFQzwv0oH3wZnP5ANT4rE1nQEeBgZTHIPo5Qzu5KpHhVFQNc_0bb6XGAFm-ugPf9iKI2tVA4SIfILsf6VunDeLZUeAAAVJE expires_in:7200])
1
+2018/09/06 00:55:30 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
2
+2018/09/06 00:55:31 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_kGO2m4o8zKJ3gsMJZyjvca0UIbYlLWH2LICN32aHM_FWndndUtbu34yKWCFl6ZsTz1aOU1hkIThtzE9-zlua3unqWpSWsAksqPkACepBBrg3GvG12z3XFne7pqTDYiFt1NFaRYIY8chIebf_LXTdABAWIE","expires_in":7200})
3
+2018/09/06 00:55:31 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_kGO2m4o8zKJ3gsMJZyjvca0UIbYlLWH2LICN32aHM_FWndndUtbu34yKWCFl6ZsTz1aOU1hkIThtzE9-zlua3unqWpSWsAksqPkACepBBrg3GvG12z3XFne7pqTDYiFt1NFaRYIY8chIebf_LXTdABAWIE expires_in:7200])
4
+2018/09/06 02:55:34 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
5
+2018/09/06 02:55:34 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_aR4DB2OqIdEfP4JJnJDeSpgzotgSdNS5Vf2aZSVy5E7DNXVx1L_mB6YqHaa7ZiKR_rL6o0WrprpqjbwIQc5cIn2BrsGw1aATXZ10aX2uOnYZz-H6IveV2iBctqediWKkUvHk_RUu_5Oz1ioTGRYdAEAWHO","expires_in":7200})
6
+2018/09/06 02:55:34 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_aR4DB2OqIdEfP4JJnJDeSpgzotgSdNS5Vf2aZSVy5E7DNXVx1L_mB6YqHaa7ZiKR_rL6o0WrprpqjbwIQc5cIn2BrsGw1aATXZ10aX2uOnYZz-H6IveV2iBctqediWKkUvHk_RUu_5Oz1ioTGRYdAEAWHO expires_in:7200])
7
+2018/09/06 04:55:34 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
8
+2018/09/06 04:55:34 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_b4rZ-khuDu-W1D6NR8XrOWIrmE3-ZsK0ek_a8Nu_jF0qRX77WawUfzuLA_jfEXK-ar0-MvWW56TTbNHTxJBiuaYeqZXRxEBhhTFAIiCwOUNVhKRUv20HEiDXWxUtARHuhwMWLrq-5RpSR4kWUNEaAFABUL","expires_in":7200})
9
+2018/09/06 04:55:34 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_b4rZ-khuDu-W1D6NR8XrOWIrmE3-ZsK0ek_a8Nu_jF0qRX77WawUfzuLA_jfEXK-ar0-MvWW56TTbNHTxJBiuaYeqZXRxEBhhTFAIiCwOUNVhKRUv20HEiDXWxUtARHuhwMWLrq-5RpSR4kWUNEaAFABUL])
10
+2018/09/06 06:55:34 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
11
+2018/09/06 06:55:35 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_9QbvqB6jescI5Bo9mzNBGgnkIi9oOXCa9C8mUchk9QW3m7tNujZrRWyyNzj0az0bITcMUuZv1Z-zzGijPG_CwqEoQDGRnLaSBdkrrleAUx_E39Yq5FywHsnZ3V_JggU6f3qK75Web3xS8UuRSHTjAAAGVH","expires_in":7200})
12
+2018/09/06 06:55:35 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_9QbvqB6jescI5Bo9mzNBGgnkIi9oOXCa9C8mUchk9QW3m7tNujZrRWyyNzj0az0bITcMUuZv1Z-zzGijPG_CwqEoQDGRnLaSBdkrrleAUx_E39Yq5FywHsnZ3V_JggU6f3qK75Web3xS8UuRSHTjAAAGVH expires_in:7200])
13
+2018/09/06 08:55:35 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
14
+2018/09/06 08:55:35 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_PqDN-Jr9h-T_WNXormtbkXrv6GoHX0tx6D0z52ItI6GGvhP76ZCVBxIIOlddFvQrch-ayrCOhjOYPU8PeR2ME_UaSoHX0QHST1KgtKpK_J4SQwE0JuIusnBg3UbQ9MjIPVTemQiSCrqIyKp7AJGaAIASBY","expires_in":7200})
15
+2018/09/06 08:55:35 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[access_token:13_PqDN-Jr9h-T_WNXormtbkXrv6GoHX0tx6D0z52ItI6GGvhP76ZCVBxIIOlddFvQrch-ayrCOhjOYPU8PeR2ME_UaSoHX0QHST1KgtKpK_J4SQwE0JuIusnBg3UbQ9MjIPVTemQiSCrqIyKp7AJGaAIASBY expires_in:7200])
16
+2018/09/06 08:59:42 [I] 请求远程接口: %!(EXTRA string=https://api.weixin.qq.com/cgi-bin/token?appid=wx7320287e057bbeee&grant_type=client_credential&secret=6e844dc2ade439545c47569ba1707673)
17
+2018/09/06 08:59:42 [E] 获取课程信息失败: a pointer to a pointer is not allowed
18
+2018/09/06 08:59:42 [I] 远程请求结果:%!(EXTRA string={"access_token":"13_M_kvI_z4pOqAS1IOxrEBuww0pRQQc71V6Q1orhkJL7Nxt91N34sELesVttpgb575SNGF36NA08CfuEOxoxCbjL2ugqCle9NG4wdBdtjfa_YwOUJ2AD0g63LmRtcAAAbAAAJJJ","expires_in":7200})
19
+2018/09/06 08:59:42 [I] 接口返回结果: %!(EXTRA map[string]interface {}=map[expires_in:7200 access_token:13_M_kvI_z4pOqAS1IOxrEBuww0pRQQc71V6Q1orhkJL7Nxt91N34sELesVttpgb575SNGF36NA08CfuEOxoxCbjL2ugqCle9NG4wdBdtjfa_YwOUJ2AD0g63LmRtcAAAbAAAJJJ])

+ 49
- 17
models/course/course.go Näytä tiedosto

@@ -194,10 +194,16 @@ func (m *CourseDAO) DelCourseImg(imgid string) error {
194 194
 	return err
195 195
 }
196 196
 
197
+// TagDetail 标签
198
+type TagDetail struct {
199
+	model.TaCourseTag `xorm:"extends"`
200
+	TagName           string
201
+}
202
+
197 203
 // CourseDetail 课程详情
198 204
 type CourseDetail struct {
199 205
 	model.TaCourse `xorm:"extends"`
200
-	CourseTags     []model.TaCourseTag
206
+	CourseTags     []TagDetail
201 207
 	CourseImgs     []model.TaCourseImg
202 208
 	CourseDetail   []model.TaCourseDetail
203 209
 	CaseInfo       *model.SysCase
@@ -205,16 +211,25 @@ type CourseDetail struct {
205 211
 
206 212
 // GetCourseInfo 获取课程详情
207 213
 func (m *CourseDAO) GetCourseInfo(courseid string) (*CourseDetail, error) {
208
-	var courses []CourseDetail
214
+	course := new(CourseDetail)
209 215
 	sql := `select * from ta_course where course_id='` + courseid + `'`
210
-	err := m.db.Sql(sql).Find(&courses)
216
+	has, err := m.db.Sql(sql).Get(&course)
211 217
 	if err != nil {
212 218
 		return nil, err
213 219
 	}
214
-	if len(courses) > 0 {
215
-		return &courses[0], nil
220
+
221
+	if !has {
222
+		return nil, nil
216 223
 	}
217
-	return nil, nil
224
+
225
+	details, err := m.GetCourseDetail(courseid)
226
+	if err != nil {
227
+		return nil, err
228
+	}
229
+
230
+	course.CourseDetail = details
231
+
232
+	return course, nil
218 233
 }
219 234
 
220 235
 // GetCourseDetail 获取课程明细
@@ -224,36 +239,52 @@ func (m *CourseDAO) GetCourseDetail(courseid string) ([]model.TaCourseDetail, er
224 239
 	return details, err
225 240
 }
226 241
 
242
+// DetailInfo 排课记录
243
+type DetailInfo struct {
244
+	model.TaCourseDetail `xorm:"extends"`
245
+	CourseStatus         int
246
+	CourseName           string
247
+	CaseName             string
248
+	CaseAddress          string
249
+}
250
+
227 251
 // GetDetails 获取所有的排课记录
228
-func (m *CourseDAO) GetDetails(caseid, date string) ([]model.TaCourseDetail, error) {
229
-	var details []model.TaCourseDetail
230
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("DATE_FORMAT(begin_date,'%Y-%m') = ?", date).Find(&details)
252
+func (m *CourseDAO) GetDetails(caseid, date string) ([]DetailInfo, error) {
253
+	var details []DetailInfo
254
+
255
+	sql := `select a.*,b.course_name,b.status as course_status,c.case_name,c.case_address from ta_course_detail a 
256
+	inner join ta_course b on a.course_id=b.course_id 
257
+	inner join sys_case c on a.case_id=c.case_id where a.status>` + strconv.Itoa(models.STATUS_DEL) + `
258
+	and b.status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.case_id='` + caseid + `' and DATE_FORMAT(a.begin_date,'%Y-%m') = '` + date + `'`
259
+	err := m.db.Sql(sql).Find(&details)
260
+
261
+	// err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("DATE_FORMAT(begin_date,'%Y-%m') = ?", date).Find(&details)
231 262
 	return details, err
232 263
 }
233 264
 
234 265
 // GetCourseSchedule 获取需要排课的记录
235 266
 func (m *CourseDAO) GetCourseSchedule(name, caseids, date string, page, pageSize int) ([]model.TaCourse, error) {
236 267
 	var courses []model.TaCourse
237
-	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And(date + " BETWEEN begin_date and end_date")
268
+	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And("'" + date + "' BETWEEN begin_date and end_date")
238 269
 	if name != "" {
239 270
 		dao.And("course_name like '%" + name + "%'")
240 271
 	}
241 272
 	if caseids != "" {
242
-		dao.And("caseids in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
273
+		dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
243 274
 	}
244
-	err := dao.OrderBy("create_date").Limit(pageSize, (page-1)*pageSize).Find(&courses)
275
+	err := dao.Desc("create_date").Limit(pageSize, (page-1)*pageSize).Find(&courses)
245 276
 	return courses, err
246 277
 }
247 278
 
248 279
 // GetCourseScheduleCount 获取排课记录数
249 280
 func (m *CourseDAO) GetCourseScheduleCount(name, caseids, date string) (int, error) {
250 281
 	var courses []model.TaCourse
251
-	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And(date + " BETWEEN begin_date and end_date")
282
+	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And("'" + date + "' BETWEEN begin_date and end_date")
252 283
 	if name != "" {
253 284
 		dao.And("course_name like '%" + name + "%'")
254 285
 	}
255 286
 	if caseids != "" {
256
-		dao.And("caseids in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
287
+		dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
257 288
 	}
258 289
 	err := dao.Find(&courses)
259 290
 	return len(courses), err
@@ -319,9 +350,10 @@ func (m *CourseDAO) SaveCourseTag(coursetags []model.TaCourseTag) error {
319 350
 }
320 351
 
321 352
 // GetCourseTag 获取课程对应标签
322
-func (m *CourseDAO) GetCourseTag(courseid string) ([]model.TaCourseTag, error) {
323
-	var coursetags []model.TaCourseTag
324
-	err := m.db.Where("course_id=?", courseid).Find(&coursetags)
353
+func (m *CourseDAO) GetCourseTag(courseid string) ([]TagDetail, error) {
354
+	var coursetags []TagDetail
355
+	sql := `select a.*,b.tag_name from ta_course_tag a inner join td_course_tag b on a.tag_id=b.tag_id where a.course_id='` + courseid + `'`
356
+	err := m.db.Sql(sql).Find(&coursetags)
325 357
 	return coursetags, err
326 358
 }
327 359
 

+ 2
- 0
models/course/tag.go Näytä tiedosto

@@ -5,6 +5,7 @@ import (
5 5
 	"spaceofcheng/services/models/model"
6 6
 	"spaceofcheng/services/utils"
7 7
 	"strconv"
8
+	"time"
8 9
 )
9 10
 
10 11
 // GetTagsList 获取标签列表
@@ -31,6 +32,7 @@ func (m *CourseDAO) GetTagsCount(orgid string) (int, error) {
31 32
 func (m *CourseDAO) AddCourseTag(tag model.TdCourseTag) (*model.TdCourseTag, error) {
32 33
 	tag.TagId = utils.GetGUID()
33 34
 	tag.Status = models.STATUS_NORMAL
35
+	tag.CreateDate = time.Now()
34 36
 	_, err := m.db.Insert(tag)
35 37
 	return &tag, err
36 38
 }

+ 33
- 12
models/goods/goods.go Näytä tiedosto

@@ -5,6 +5,8 @@ import (
5 5
 	"spaceofcheng/services/models"
6 6
 	"spaceofcheng/services/models/model"
7 7
 	"spaceofcheng/services/utils"
8
+	"strconv"
9
+	"strings"
8 10
 	"time"
9 11
 
10 12
 	"github.com/yl10/kit/guid"
@@ -32,43 +34,49 @@ func (m *GoodsDAO) GetGoodsListPageNavi(name, typeID, caseID string, limit []int
32 34
 	sql := `
33 35
 		SELECT *
34 36
 		FROM
35
-			ta_goods t
37
+			ta_goods
36 38
 		WHERE
37
-			t.case_id = ?
39
+			case_id in ('` + strings.Replace(caseID, ",", "','", -1) + `')
38 40
 	`
39 41
 
40 42
 	if name != "" {
41 43
 		sql += `
42
-			AND LOWER(t.goods_name) LIKE '%` + name + `%'
44
+			AND goods_name LIKE '%` + name + `%'
43 45
 		`
44 46
 	}
45 47
 
46 48
 	if typeID != "" {
47 49
 		sql += `
48
-			AND t.type_id = '` + typeID + `'
50
+			AND type_id = '` + typeID + `'
49 51
 		`
50 52
 	}
51 53
 
52 54
 	sql += `		
53
-		AND t.status > ?
55
+		AND status > ` + strconv.Itoa(models.STATUS_DEL) + `
54 56
 		ORDER BY
55
-			t.type_id,
56
-			t.create_date
57
+			type_id,
58
+			create_date
57 59
 	`
58 60
 
61
+	// sql += ` limit ` + strconv.Itoa(limit[0]) + ` OFFSET ` + strconv.Itoa(limit[1])
62
+
59 63
 	var goodsList []GoodsWithSpec
60
-	cnt, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&goodsList, sql, limit, caseID, models.STATUS_DEL)
64
+	cnt, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&goodsList, sql, limit)
61 65
 	if err != nil {
62 66
 		return nil, 0, err
63 67
 	}
64
-
65 68
 	for inx, goods := range goodsList {
66 69
 		specs, err := m.GetSpecWithPrice(goods.GoodsId)
67 70
 		if err != nil {
68 71
 			return nil, 0, err
69 72
 		}
70
-
71 73
 		goodsList[inx].Specs = specs
74
+
75
+		imgs, err := m.GetGoodsImgByGoodsID(goods.GoodsId)
76
+		if err != nil {
77
+			return nil, 0, err
78
+		}
79
+		goodsList[inx].Images = imgs
72 80
 	}
73 81
 
74 82
 	return goodsList, cnt, nil
@@ -98,9 +106,9 @@ func (m *GoodsDAO) GetGoodsListOfCase(caseID string) ([]GoodsWithSpec, error) {
98 106
 
99 107
 // GetSpecWithPrice 获取商品规格 含 金额
100 108
 func (m *GoodsDAO) GetSpecWithPrice(goodsID string) ([]SpecWithPrice, error) {
101
-	sql := `SELECT * FROM td_spec t
109
+	sql := `SELECT t.*,s.goods_price FROM td_spec t
102 110
 		JOIN ta_goods_spec s ON t.spec_id = s.spec_id
103
-		WHERE t.status = ? AND s.goods_id = ?
111
+		WHERE t.status > ? AND s.goods_id = ?
104 112
 	`
105 113
 
106 114
 	var specs []SpecWithPrice
@@ -162,9 +170,15 @@ func (m *GoodsDAO) GetGoodsWithSpecByID(id string) (*GoodsWithSpec, error) {
162 170
 		return nil, err
163 171
 	}
164 172
 
173
+	imgs, err := m.GetGoodsImgByGoodsID(id)
174
+	if err != nil {
175
+		return nil, err
176
+	}
177
+
165 178
 	return &GoodsWithSpec{
166 179
 		TaGoods: *goods,
167 180
 		Specs:   specs,
181
+		Images:  imgs,
168 182
 	}, nil
169 183
 }
170 184
 
@@ -293,3 +307,10 @@ func (m *GoodsDAO) DeleteGoods(id string) error {
293 307
 
294 308
 	return nil
295 309
 }
310
+
311
+// GetGoodsImgByGoodsID 根据商品ID获取商品图片信息
312
+func (m *GoodsDAO) GetGoodsImgByGoodsID(goodsid string) ([]model.TaGoodsImg, error) {
313
+	var goodsimg []model.TaGoodsImg
314
+	err := m.db.Where("goods_id=?", goodsid).Find(&goodsimg)
315
+	return goodsimg, err
316
+}

+ 5
- 4
models/goods/types.go Näytä tiedosto

@@ -14,20 +14,21 @@ const (
14 14
 
15 15
 // SpecWithPrice 规格价格
16 16
 type SpecWithPrice struct {
17
-	model.TdSpec `xorm."extends"`
17
+	model.TdSpec `xorm:"extends"`
18 18
 	GoodsPrice   string `xorm:"DECIMAL(8,2)"`
19 19
 }
20 20
 
21 21
 // GoodsWithSpec 含规格商品
22 22
 type GoodsWithSpec struct {
23
-	model.TaGoods `xorm."extends"`
23
+	model.TaGoods `xorm:"extends"`
24 24
 	Specs         []SpecWithPrice
25
+	Images        []model.TaGoodsImg
25 26
 }
26 27
 
27 28
 // GoodsWithPrice 含规格商品
28 29
 type GoodsWithPrice struct {
29
-	model.TaGoods     `xorm."extends"`
30
-	model.TaGoodsSpec `xorm."extends"`
30
+	model.TaGoods     `xorm:"extends"`
31
+	model.TaGoodsSpec `xorm:"extends"`
31 32
 }
32 33
 
33 34
 // OrdersWithGoods 订单列表

+ 153
- 0
models/marketing/marketing.go Näytä tiedosto

@@ -0,0 +1,153 @@
1
+package marketing
2
+
3
+import(
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/utils"
6
+	"strconv"
7
+	"time"
8
+	"github.com/go-xorm/xorm"
9
+)
10
+
11
+// 活动类型
12
+const (
13
+	NEW_ACTIVITIES = 0 // 注册赠券
14
+
15
+)
16
+
17
+// 状态
18
+const (
19
+	DELETE = -1 // 删除
20
+	NORMAL = 0 // 正常
21
+	DISABLE = 1 // 停用
22
+
23
+)
24
+
25
+// 赠券卡券
26
+const (
27
+	drink = 1 // 饮品通用卷
28
+	course = 2 // 课程通用卷
29
+	petty_diplomat = 3 // 小小外交官通用卷
30
+)
31
+
32
+// GoodsDAO 当前数据库操作对象
33
+type MarketingDAO struct {
34
+	ctx *utils.Context
35
+	db  *xorm.Session
36
+}
37
+
38
+// NewMarketingDAO New Inst
39
+func NewMarketingDAO(ctx *utils.Context) *MarketingDAO {
40
+	return &MarketingDAO{
41
+		ctx: ctx,
42
+		db:  ctx.DB,
43
+	}
44
+}
45
+
46
+// MarketingInfo 课程
47
+type MarketingInfo struct {
48
+	model.SysActivity `xorm:"extends"`
49
+	Actions []model.SysActivityAction
50
+}
51
+
52
+// GetMarketingList 查询所有
53
+func (m *MarketingDAO) GetMarketingList(page int, pageSize int) ([]MarketingInfo ,error){
54
+
55
+	var news []MarketingInfo
56
+	sql := `select * from sys_activity new order by new.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
57
+	err := m.db.Sql(sql).Find(&news)
58
+	return news, err
59
+
60
+}
61
+
62
+// GetMarketingCount 获取总数
63
+func (m *MarketingDAO) GetMarketingCount()(int64, error){
64
+	var total []int64
65
+	sql := `select count(*) as total from sys_activity`
66
+	err := m.db.Sql(sql).Cols("total").Find(&total)
67
+	if err!=nil{
68
+
69
+	}
70
+	return total[0], err
71
+}
72
+
73
+
74
+// AddMarketing 添加
75
+func (m *MarketingDAO) AddMarketing(activity *model.SysActivity) (*model.SysActivity, error) {
76
+	activity.ActivityId = utils.GetGUID()
77
+	activity.CreateDate = time.Now()
78
+	//activity.Status = models.STATUS_NORMAL
79
+	activity.Status = NORMAL // 状态为正常
80
+	org := m.ctx.Get("org").(model.SysOrg)
81
+	activity.OrgId = org.OrgId
82
+	caseinfo := m.ctx.Get("currentCase").(model.SysCase)
83
+	activity.CaseId = caseinfo.CaseId
84
+	//activity.CaseId = user.
85
+
86
+	_, err := m.db.Insert(activity)
87
+
88
+	// // 添加活动动作数据
89
+	// var new model.SysActivityAction
90
+	// new.ActionId = activity.ActivityId
91
+	// new.ActiveType = activity.ActivityType
92
+	return activity, err
93
+}
94
+
95
+
96
+// GetMarketingById 根据ID查询活动营销
97
+func (m *MarketingDAO) GetMarketingById(activityId string) (*model.SysActivity,error){
98
+
99
+	var activity []model.SysActivity
100
+	err := m.db.Where("activity_id=?",activityId).Find(&activity)
101
+	if err != nil {
102
+		return nil, err
103
+	}
104
+	if len(activity) >0 {
105
+		return &activity[0],nil
106
+	}
107
+	return nil,nil
108
+	
109
+}
110
+
111
+// DelMarketing 修改状态 营销活动(删除,启用,停用)
112
+/**
113
+ *	DELETE = -1 // 删除
114
+		NORMAL = 0 // 正常
115
+		DISABLE = 1 // 停用
116
+ **/
117
+func (m *MarketingDAO) DelMarketing(activityId string,status int) error {
118
+
119
+	var info = model.SysActivity{
120
+		ActivityId: activityId,
121
+		// Status:   models.STATUS_DEL,
122
+		Status:   status,
123
+	}
124
+	var cols = []string{
125
+		"status",
126
+	}
127
+	_, err := m.db.Cols(cols...).Where("activity_id=?", activityId).Update(info)
128
+	return err
129
+}
130
+
131
+
132
+// UpdateMarketing 修改 营销活动
133
+func (m *MarketingDAO) UpdateMarketing(activity model.SysActivity) error {
134
+	// var cols = []string{
135
+	// 	"activity_name",
136
+	// 	"activity_type",
137
+	// 	"case_id",
138
+	// 	"org_id",
139
+	// 	"case_id",
140
+	// }
141
+
142
+	var cols = []string{
143
+		"activity_name",
144
+		"activity_type",
145
+	}
146
+	_, err := m.db.Cols(cols...).Where("action_id=?", activity.ActivityId).Update(activity)
147
+	return err
148
+}
149
+
150
+
151
+
152
+
153
+

+ 52
- 0
models/marketing/work.go Näytä tiedosto

@@ -0,0 +1,52 @@
1
+package marketing
2
+
3
+import(
4
+	"spaceofcheng/services/models/model"
5
+	"spaceofcheng/services/utils"
6
+	"github.com/go-xorm/xorm"
7
+)
8
+
9
+// WorkDAO 当前数据库操作对象
10
+type WorkDAO struct {
11
+	ctx *utils.Context
12
+	db *xorm.Session
13
+}
14
+
15
+// NewMarketingDAO New Inst
16
+func NewWorkDAO(ctx *utils.Context) *WorkDAO {
17
+	return &WorkDAO{
18
+		ctx: ctx,
19
+		db:  ctx.DB,
20
+	}
21
+}
22
+
23
+// WrokInfo 活动动作
24
+type WrokInfo struct {
25
+	model.SysActivityAction `xorm:"extends"`
26
+	CourseType     string
27
+}
28
+
29
+// 添加 活动动作
30
+func (m *WorkDAO) AddWork(action *model.SysActivityAction) (*model.SysActivityAction,error){
31
+	action.ActionId = utils.GetGUID()
32
+	_,err := m.db.Insert(&action)
33
+
34
+	return action,err
35
+
36
+}
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+

+ 13
- 10
models/message/cmscase.go Näytä tiedosto

@@ -2,6 +2,7 @@ package message
2 2
 
3 3
 import (
4 4
 	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/course"
5 6
 	"spaceofcheng/services/models/model"
6 7
 	"spaceofcheng/services/utils"
7 8
 	"strconv"
@@ -9,8 +10,6 @@ import (
9 10
 	"time"
10 11
 
11 12
 	"github.com/astaxie/beego"
12
-
13
-	"github.com/go-xorm/builder"
14 13
 )
15 14
 
16 15
 // CmsCaseInfo 项目专题
@@ -60,14 +59,15 @@ func (m *MessageDAO) GetCmsCaseListCount(name, caseids string) (int, error) {
60 59
 // CmsCase 项目详情
61 60
 type CmsCase struct {
62 61
 	model.TaCmsCase `xorm:"extends"`
63
-	Courses         []model.TaCourse
62
+	CaseAddress     string
63
+	Courses         []course.CourseDetail
64 64
 	CmsCaseImgs     []model.TaCmsCaseImage
65 65
 }
66 66
 
67 67
 // GetCmsCaseByID 获取项目专题详情
68 68
 func (m *MessageDAO) GetCmsCaseByID(cmscaseid string) (*CmsCase, error) {
69 69
 	var cases []CmsCase
70
-	sql := `select * from ta_cms_case where cms_case_id='` + cmscaseid + `' and status>` + strconv.Itoa(models.STATUS_DEL)
70
+	sql := `select a.*,b.case_address from ta_cms_case a inner join sys_case b on a.case_id=b.case_id where a.cms_case_id='` + cmscaseid + `' and b.status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.status>` + strconv.Itoa(models.STATUS_DEL)
71 71
 	err := m.db.Sql(sql).Find(&cases)
72 72
 	if err != nil {
73 73
 		beego.Error(err)
@@ -80,9 +80,11 @@ func (m *MessageDAO) GetCmsCaseByID(cmscaseid string) (*CmsCase, error) {
80 80
 }
81 81
 
82 82
 // GetCoursesByCmsCase 根据项目专题ID获取课程信息
83
-func (m *MessageDAO) GetCoursesByCmsCase(cmscaseid string) ([]model.TaCourse, error) {
84
-	var course []model.TaCourse
85
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).In("course_id", builder.Select("course_id").From("ta_cms_case_course").Where(builder.Eq{"cms_case_id": cmscaseid})).Find(&course)
83
+func (m *MessageDAO) GetCoursesByCmsCase(cmscaseid string) ([]course.CourseDetail, error) {
84
+	var course []course.CourseDetail
85
+	sql := `select a.* from ta_course a inner join ta_cms_case_course b on a.course_id=b.course_id where a.status>` + strconv.Itoa(models.STATUS_DEL) + ` and b.cms_case_id = ?`
86
+
87
+	err := m.db.Sql(sql, cmscaseid).Find(&course)
86 88
 	return course, err
87 89
 }
88 90
 
@@ -94,9 +96,10 @@ func (m *MessageDAO) GetCmsCaseImgs(cmscaseid string) ([]model.TaCmsCaseImage, e
94 96
 }
95 97
 
96 98
 // GetCourseByCaseID 根据案场ID获取所有的课程信息
97
-func (m *MessageDAO) GetCourseByCaseID(caseid string) ([]model.TaCourse, error) {
98
-	var course []model.TaCourse
99
-	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("case_id=?", caseid).Find(&course)
99
+func (m *MessageDAO) GetCourseByCaseID(caseid string) ([]course.CourseDetail, error) {
100
+	var course []course.CourseDetail
101
+	sql := `select * from ta_course where status>` + strconv.Itoa(models.STATUS_DEL) + ` and case_id=?`
102
+	err := m.db.Sql(sql, caseid).Find(&course)
100 103
 	return course, err
101 104
 }
102 105
 

+ 0
- 3
models/model/ta_customer_card.go Näytä tiedosto

@@ -11,9 +11,6 @@ type TaCustomerCard struct {
11 11
 	CustomerId       string    `xorm:"VARCHAR(64)"`
12 12
 	StartDate        time.Time `xorm:"DATETIME"`
13 13
 	EndDate          time.Time `xorm:"DATETIME"`
14
-	CourseNum        int       `xorm:"INT(11)"`
15
-	JoinNum          int       `xorm:"INT(11)"`
16
-	CardState        string    `xorm:"VARCHAR(64)"`
17 14
 	Status           int       `xorm:"SMALLINT(6)"`
18 15
 	ReceiveDate      time.Time `xorm:"DATETIME"`
19 16
 	VerifyDate       time.Time `xorm:"DATETIME"`

+ 1
- 0
models/model/ta_customer_course.go Näytä tiedosto

@@ -11,6 +11,7 @@ type TaCustomerCourse struct {
11 11
 	OrgId            string    `xorm:"VARCHAR(64)"`
12 12
 	CaseId           string    `xorm:"VARCHAR(64)"`
13 13
 	CourseName       string    `xorm:"VARCHAR(50)"`
14
+	LocationId       string    `xorm:"VARCHAR(64)"`
14 15
 	Price            string    `xorm:"DECIMAL(8,2)"`
15 16
 	CourseNum        int       `xorm:"INT(11)"`
16 17
 	JoinNum          int       `xorm:"INT(11)"`

+ 139
- 232
models/verify/verify.go Näytä tiedosto

@@ -1,11 +1,9 @@
1 1
 package verify
2 2
 
3 3
 import (
4
-	"spaceofcheng/services/models"
5 4
 	"spaceofcheng/services/models/model"
6 5
 	"spaceofcheng/services/utils"
7 6
 	"strconv"
8
-	"time"
9 7
 
10 8
 	"github.com/go-xorm/xorm"
11 9
 )
@@ -24,267 +22,176 @@ func NewVerifyDAO(ctx *utils.Context) *VerifyDAO {
24 22
 	}
25 23
 }
26 24
 
27
-type verifyCourse struct {
28
-	targetId     string
29
-	caseId       string
30
-	caseName     string
31
-	locationName string
32
-	courseName   string
33
-	detailName   string
34
-	beginDate    time.Time
35
-	endDate      time.Time
36
-	courseType   string
25
+type MyCourse struct {
26
+	model.TaCustomerCourseDetail `xorm:"extends"`
27
+	CaseName                     string
28
+	CourseName                   string
29
+	DetailName                   string
30
+	LocationName                 string
31
+	CustomerId                   string
37 32
 }
38 33
 
39
-func (m *VerifyDAO) GetExperienceCardVerifyList(customerCardId string, page, pageSize int) ([]verifyCourse, error) {
40
-	var course []verifyCourse
41
-	sql := `SELECT
42
-	a.target_id,
43
-	g.case_name,
44
-	c.card_id,
45
-	f.location_name,
46
-	e.course_name,
47
-	d.detail_name,
48
-	d.begin_date,
49
-	d.end_date,
50
-	'card' as courseType 
51
-FROM
52
-	ta_coupon_card_target a
53
-	INNER JOIN ta_coupon_card b ON a.card_id = b.card_id
54
-	INNER JOIN ta_customer_card c ON c.card_id = b.card_id
55
-	INNER JOIN ta_course_detail d ON d.detail_id = a.detail_id
56
-	INNER JOIN ta_course e ON d.course_id = e.course_id
57
-	INNER JOIN td_cms_image_location f ON e.location_id = f.location_id
58
-	INNER JOIN sys_case g ON g.case_id = c.case_id 
59
-WHERE
60
-	DATE_FORMAT( d.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
61
-	AND c.customer_card_id = ` + customerCardId
62
-	sql = sql + " limit  " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
63
-	err := m.db.Sql(sql).Find(&course)
64
-	return course, err
34
+func (m *VerifyDAO) GetCustomerCourseDetailById(id string) (*model.TaCustomerCourseDetail, error) {
35
+	var customerCourseDerail []model.TaCustomerCourseDetail
36
+	err := m.db.Where("customer_detail_id =?", id).Find(&customerCourseDerail)
37
+	if err != nil {
38
+		return nil, err
39
+	}
40
+	if len(customerCourseDerail) > 0 {
41
+		return &customerCourseDerail[0], nil
42
+	}
43
+	return nil, nil
65 44
 }
66 45
 
67
-func (m *VerifyDAO) GetExperienceCardVerifyListCount(customerCardId string) (int, error) {
68
-	var course []verifyCourse
46
+// GetCustomerCourseList 根据我的课程id获取我的课程详情
47
+func (m *VerifyDAO) GetCustomerCourseList(customerCourseId, caseid string, page int, pageSize int) ([]MyCourse, error) {
48
+	var courseList []MyCourse
69 49
 	sql := `SELECT
70
-	a.target_id,
71
-	g.case_name,
72
-	c.card_id,
50
+	a.*,
51
+	d.case_name,
52
+	b.course_name,	
53
+	c.detail_name,
73 54
 	f.location_name,
74
-	e.course_name,
75
-	d.detail_name,
76
-	d.begin_date,
77
-	d.end_date,
78
-	'card' as courseType 
79
-FROM
80
-	ta_coupon_card_target a
81
-	INNER JOIN ta_coupon_card b ON a.card_id = b.card_id
82
-	INNER JOIN ta_customer_card c ON c.card_id = b.card_id
83
-	INNER JOIN ta_course_detail d ON d.detail_id = a.detail_id
84
-	INNER JOIN ta_course e ON d.course_id = e.course_id
85
-	INNER JOIN td_cms_image_location f ON e.location_id = f.location_id
86
-	INNER JOIN sys_case g ON g.case_id = c.case_id 
87
-WHERE
88
-	DATE_FORMAT( d.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
89
-	AND c.customer_card_id = ` + customerCardId
90
-	err := m.db.Sql(sql).Find(&course)
91
-	return len(course), err
55
+	b.customer_id
56
+	FROM
57
+	ta_customer_course_detail a
58
+	INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
59
+	INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
60
+	INNER JOIN sys_case d ON d.case_id = a.case_id
61
+	LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
62
+	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
63
+	AND a.customer_course_id = '` + customerCourseId + `'
64
+	and b.case_id = '` + caseid + `'`
65
+	sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
66
+	err := m.db.Sql(sql).Find(&courseList)
67
+	return courseList, err
92 68
 }
93 69
 
94
-func (m *VerifyDAO) GetOrderCourseList(courseOrderId string, page, pageSize int) ([]verifyCourse, error) {
95
-	var course []verifyCourse
70
+// GetCustomerCourseListCount 根据我的课程id获取我的课程详情数量
71
+func (m *VerifyDAO) GetCustomerCourseListCount(customerCourseId, caseid string) (int, error) {
72
+	var courseList []MyCourse
96 73
 	sql := `SELECT
97
-	a.orders_detail_id AS target_id,
98
-	b.case_id,
99
-	f.case_name,
100
-	e.location_name,
101
-	c.course_name,
102
-	d.detail_name,
103
-	a.begin_date,
104
-	a.end_date,
105
-	'order' as courseType
106
-FROM
107
-	ta_course_orders_detail a
108
-	INNER JOIN ta_course_orders b ON a.orders_id = b.orders_id
109
-	INNER JOIN ta_course c ON b.course_id = c.course_id
110
-	INNER JOIN ta_course_detail d ON a.course_detail_id = d.detail_id
111
-	INNER JOIN td_cms_image_location e ON e.location_id = c.location_id
112
-	INNER JOIN sys_case f ON b.case_id = f.case_id 
113
-WHERE
114
-	DATE_FORMAT( a.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
115
-	AND b.orders_id = ` + courseOrderId
116
-	sql = sql + " limit  " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
117
-	err := m.db.Sql(sql).Find(&course)
118
-	return course, err
119
-
74
+	a.*,
75
+	d.case_name,
76
+	b.course_name,	
77
+	c.detail_name
78
+	FROM
79
+	ta_customer_course_detail a
80
+	INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
81
+	INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
82
+	INNER JOIN sys_case d ON d.case_id = a.case_id
83
+	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
84
+	AND a.customer_course_id = '` + customerCourseId + `'
85
+	and b.case_id = '` + caseid + `'`
86
+	err := m.db.Sql(sql).Find(&courseList)
87
+	return len(courseList), err
120 88
 }
121 89
 
122
-func (m *VerifyDAO) GetOrderCourseListCount(courseOrderId string) (int, error) {
123
-	var course []verifyCourse
124
-	sql := `SELECT
125
-	a.orders_detail_id AS target_id,
126
-	b.case_id,
127
-	f.case_name,
128
-	e.location_name,
129
-	c.course_name,
130
-	d.detail_name,
131
-	a.begin_date,
132
-	a.end_date,
133
-	'order' as courseType
134
-FROM
135
-	ta_course_orders_detail a
136
-	INNER JOIN ta_course_orders b ON a.orders_id = b.orders_id
137
-	INNER JOIN ta_course c ON b.course_id = c.course_id
138
-	INNER JOIN ta_course_detail d ON a.course_detail_id = d.detail_id
139
-	INNER JOIN td_cms_image_location e ON e.location_id = c.location_id
140
-	INNER JOIN sys_case f ON b.case_id = f.case_id 
141
-WHERE
142
-	DATE_FORMAT( a.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
143
-	AND b.orders_id = ` + courseOrderId
144
-	err := m.db.Sql(sql).Find(&course)
145
-	return len(course), err
90
+// UpdateCustomerCourseDetail 更新我的课程详情
91
+func (m *VerifyDAO) UpdateCustomerCourseDetail(customerCourse *model.TaCustomerCourseDetail) error {
92
+	var cols = []string{
93
+		"verify_status",
94
+		"verify_date",
95
+		"verify_user",
96
+	}
97
+	_, err := m.db.Cols(cols...).Where("customer_detail_id=?", customerCourse.CustomerDetailId).Update(customerCourse)
98
+	return err
146 99
 }
147 100
 
148
-func (m *VerifyDAO) GetCourseListByTel(tel string, page, pageSize int) ([]verifyCourse, error) {
149
-	var course []verifyCourse
101
+// GetCustomerCourseListByTel 根据客户电话获取我的课程详情
102
+func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseid string, page, pageSize int) ([]MyCourse, error) {
103
+	var courseList []MyCourse
150 104
 	sql := `SELECT
151
-	a.target_id,
152
-	g.case_name,
153
-	c.card_id,
154
-	f.location_name,
155
-	e.course_name,
156
-	d.detail_name,
157
-	d.begin_date,
158
-	d.end_date,
159
-	'card' as courseType 
160
-FROM
161
-	ta_coupon_card_target a
162
-	INNER JOIN ta_coupon_card b ON a.card_id = b.card_id
163
-	INNER JOIN ta_customer_card c ON c.card_id = b.card_id
164
-	INNER JOIN ta_course_detail d ON d.detail_id = a.detail_id
165
-	INNER JOIN ta_course e ON d.course_id = e.course_id
166
-	INNER JOIN td_cms_image_location f ON e.location_id = f.location_id
167
-	INNER JOIN sys_case g ON g.case_id = c.case_id 
168
-	INNER JOIN ta_customer h ON c.customer_id = h.customer_id
169
-WHERE
170
-	DATE_FORMAT( d.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
171
-	AND h.phone = ` + tel + `
172
-	union all
173
-	SELECT
174
-	a.orders_detail_id AS target_id,
175
-	b.case_id,
176
-	f.case_name,
177
-	e.location_name,
178
-	c.course_name,
179
-	d.detail_name,
180
-	a.begin_date,
181
-	a.end_date,
182
-	'order' as courseType
183
-FROM
184
-	ta_course_orders_detail a
185
-	INNER JOIN ta_course_orders b ON a.orders_id = b.orders_id
186
-	INNER JOIN ta_course c ON b.course_id = c.course_id
187
-	INNER JOIN ta_course_detail d ON a.course_detail_id = d.detail_id
188
-	INNER JOIN td_cms_image_location e ON e.location_id = c.location_id
189
-	INNER JOIN sys_case f ON b.case_id = f.case_id 
190
-	INNER JOIN ta_customer g ON b.customer_id = g.customer_id
191
-WHERE
192
-	DATE_FORMAT( a.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
193
-	AND g.phone = ` + tel
194
-	sql = sql + " limit  " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
195
-	err := m.db.Sql(sql).Find(&course)
196
-	return course, err
105
+	a.*,
106
+	d.case_name,
107
+	b.course_name,
108
+	c.detail_name,
109
+	b.customer_id,
110
+	f.location_name
111
+	FROM
112
+	ta_customer_course_detail a
113
+	INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
114
+	INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
115
+	INNER JOIN sys_case d ON d.case_id = a.case_id
116
+	INNER JOIN ta_customer e ON b.customer_id = e.customer_id
117
+	LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
118
+	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
119
+	AND e.phone = '` + tel + `'
120
+	and b.case_id='` + caseid + `'`
121
+	sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
122
+
123
+	err := m.db.Sql(sql).Find(&courseList)
124
+	return courseList, err
197 125
 }
198 126
 
199
-func (m *VerifyDAO) GetCourseListByTelCount(tel string) (int, error) {
200
-	var course []verifyCourse
127
+// GetCustomerCourseListByTelCount 根据客户电话获取我的课程详情数量
128
+func (m *VerifyDAO) GetCustomerCourseListByTelCount(tel, caseid string) (int, error) {
129
+	var courseList []MyCourse
201 130
 	sql := `SELECT
202
-	a.target_id,
203
-	g.case_name,
204
-	c.card_id,
205
-	f.location_name,
206
-	e.course_name,
207
-	d.detail_name,
208
-	d.begin_date,
209
-	d.end_date,
210
-	'card' as courseType 
131
+	a.*,
132
+	d.case_name,
133
+	b.course_name,
134
+	c.detail_name
211 135
 FROM
212
-	ta_coupon_card_target a
213
-	INNER JOIN ta_coupon_card b ON a.card_id = b.card_id
214
-	INNER JOIN ta_customer_card c ON c.card_id = b.card_id
215
-	INNER JOIN ta_course_detail d ON d.detail_id = a.detail_id
216
-	INNER JOIN ta_course e ON d.course_id = e.course_id
217
-	INNER JOIN td_cms_image_location f ON e.location_id = f.location_id
218
-	INNER JOIN sys_case g ON g.case_id = c.case_id 
219
-	INNER JOIN ta_customer h ON c.customer_id = h.customer_id
220
-WHERE
221
-	DATE_FORMAT( d.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' )
222
-	AND h.phone = ` + tel + `
223
-	union all
224
-	SELECT
225
-	a.orders_detail_id AS target_id,
226
-	b.case_id,
227
-	f.case_name,
228
-	e.location_name,
229
-	c.course_name,
230
-	d.detail_name,
231
-	a.begin_date,
232
-	a.end_date,
233
-	'order' as courseType
234
-FROM
235
-	ta_course_orders_detail a
236
-	INNER JOIN ta_course_orders b ON a.orders_id = b.orders_id
237
-	INNER JOIN ta_course c ON b.course_id = c.course_id
238
-	INNER JOIN ta_course_detail d ON a.course_detail_id = d.detail_id
239
-	INNER JOIN td_cms_image_location e ON e.location_id = c.location_id
240
-	INNER JOIN sys_case f ON b.case_id = f.case_id 
241
-	INNER JOIN ta_customer g ON b.customer_id = g.customer_id
242
-WHERE
243
-	DATE_FORMAT( a.begin_date, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' )
244
-	AND g.phone = ` + tel
245
-	err := m.db.Sql(sql).Find(&course)
246
-	return len(course), err
136
+	ta_customer_course_detail a
137
+	INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
138
+	INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
139
+	INNER JOIN sys_case d ON d.case_id = a.case_id
140
+	INNER JOIN ta_customer e ON b.customer_id = e.customer_id
141
+	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
142
+	AND e.phone = '` + tel + `'
143
+	and b.case_id='` + caseid + `'`
144
+	err := m.db.Sql(sql).Find(&courseList)
145
+	return len(courseList), err
247 146
 }
248 147
 
249
-func (m *VerifyDAO) AddExperienceCardVerification(verify model.TaExperienceCardVerification) (*model.TaExperienceCardVerification, error) {
250
-	verify.ExperienceCardVerifyTime = time.Now()
251
-	verify.Status = models.STATUS_NORMAL
252
-	verify.ExperienceCardVerifyId = utils.GetGUID()
253
-	_, err := m.db.Insert(verify)
254
-	return &verify, err
255
-}
256
-
257
-func (m *VerifyDAO) updateExperienceCardTarget(verify model.TaCouponCardTarget) error {
148
+// UpdateCustomerCard 更新客户体验卡
149
+func (m *VerifyDAO) UpdateCustomerCard(customerCard *model.TaCustomerCard) error {
258 150
 	var cols = []string{
259
-		"card_state",
260
-	}
261
-	_, err := m.db.Cols(cols...).Where("target_id=?", verify.TargetId).Update(verify)
262
-	return err
263
-}
264
-
265
-func (m *VerifyDAO) updateCustomerExperienceCard(verify model.TaCustomerCard) error {
266
-	var cols = []string{
267
-		"card_state",
268
-		"join_num",
269 151
 		"verify_date",
152
+		"verify_status",
270 153
 	}
271
-	_, err := m.db.Cols(cols...).Where("customer_card_id=?", verify.CustomerCardId).Update(verify)
154
+	_, err := m.db.Cols(cols...).Where("customer_card_id=?", customerCard.CustomerCardId).Update(customerCard)
272 155
 	return err
273 156
 }
274 157
 
275
-func (m *VerifyDAO) updateCustomerOrderCourse(verify model.TaCourseOrders) error {
158
+// UpdateCustomerCourse 更新我的课程
159
+func (m *VerifyDAO) UpdateCustomerCourse(customerCourse *model.TaCustomerCourse) error {
276 160
 	var cols = []string{
277 161
 		"join_num",
162
+		"is_done",
278 163
 	}
279
-	_, err := m.db.Cols(cols...).Where("orders_id = ?", verify.OrdersId).Update(verify)
164
+	_, err := m.db.Cols(cols...).Where("customer_course_id=?", customerCourse.CustomerCourseId).Update(customerCourse)
280 165
 	return err
281 166
 }
282 167
 
283
-func (m *VerifyDAO) AddOrdersVerification(verify model.TaCourseVerifcation) (*model.TaCourseVerifcation, error) {
284
-	verify.CreateDate = time.Now()
285
-	verify.VerifcationId = utils.GetGUID()
286
-	verify.Status = models.STATUS_NORMAL
287
-	_, err := m.db.Insert(verify)
288
-	return &verify, err
168
+// GetCustomerCardByDetailId 根据我的课程详情ID查询用户体验卡
169
+func (m *VerifyDAO) GetCustomerCardByDetailId(detailId string) (*model.TaCustomerCard, error) {
170
+	var customerCard []model.TaCustomerCard
171
+	sql := `SELECT
172
+	a.* 
173
+FROM
174
+	ta_customer_card a
175
+	INNER JOIN ta_customer_course b ON a.customer_card_id = b.source_id 
176
+	
177
+	INNER JOIN ta_customer_course_detail c ON c.customer_course_id = b.customer_course_id
178
+WHERE  b.course_obtaim_type = 'card'
179
+and  c.customer_detail_id = '` + detailId + `'`
180
+	err := m.db.Sql(sql).Find(&customerCard)
181
+	return &customerCard[0], err
182
+
183
+}
289 184
 
185
+// GetCustomerCourseByDetailId 根据我的课程详情ID查询我的课程
186
+func (m *VerifyDAO) GetCustomerCourseByDetailId(detailId string) (*model.TaCustomerCourse, error) {
187
+	var customerCard []model.TaCustomerCourse
188
+	sql := `SELECT
189
+	a.* 
190
+FROM
191
+	ta_customer_course a
192
+	INNER JOIN ta_customer_course_detail b ON a.customer_course_id = b.customer_course_id 
193
+WHERE
194
+	b.customer_detail_id = '` + detailId + `'`
195
+	err := m.db.Sql(sql).Find(&customerCard)
196
+	return &customerCard[0], err
290 197
 }

+ 21
- 3
routers/common.go Näytä tiedosto

@@ -10,7 +10,9 @@ import (
10 10
 	"spaceofcheng/services/controllers/message"
11 11
 	"spaceofcheng/services/controllers/system"
12 12
 	"spaceofcheng/services/controllers/user"
13
+	"spaceofcheng/services/controllers/verify"
13 14
 	"spaceofcheng/services/controllers/vipcard"
15
+	"spaceofcheng/services/controllers/marketing"
14 16
 
15 17
 	"github.com/astaxie/beego"
16 18
 )
@@ -151,6 +153,11 @@ func getCommonRoutes() beego.LinkNamespace {
151 153
 		beego.NSRouter("/vipcard", &vipcard.VipcardController{}, "post:AddVipCard"),
152 154
 		beego.NSRouter("/vipcard/:vipCardChildCode", &vipcard.VipcardController{}, "put:UserCharge"),
153 155
 
156
+		// courseVerify 核销课程
157
+		beego.NSRouter("/verify/course/code/:customerCourseId", &verify.VerifyController{}, "get:GetCustomerCourseDetailListById"),
158
+		beego.NSRouter("/verify/course/tel/:tel", &verify.VerifyController{}, "get:GetCustomerCourseDetailListBytel"),
159
+		beego.NSRouter("/verify/course/:customerDetailId", &verify.VerifyController{}, "put:VerifyCourse"),
160
+
154 161
 		// role 角色
155 162
 		beego.NSRouter("/role", &system.RoleController{}, "get:GetRoleList"),
156 163
 		beego.NSRouter("/role/:roleid", &system.RoleController{}, "get:GetRoleByID"),
@@ -171,7 +178,7 @@ func getCommonRoutes() beego.LinkNamespace {
171 178
 		beego.NSRouter("/course", &course.CourseController{}, "put:SaveCourse"),
172 179
 		beego.NSRouter("/course/:courseid", &course.CourseController{}, "delete:DeleteCourse"),
173 180
 		beego.NSRouter("/course/:courseid/public", &course.CourseController{}, "put:CoursePublic"),
174
-		beego.NSRouter("/course/:courseid/unpublic", &course.CourseController{}, "get:CourseUnPublic"),
181
+		beego.NSRouter("/course/:courseid/unpublic", &course.CourseController{}, "put:CourseUnPublic"),
175 182
 		beego.NSRouter("/courseimg/:courseid", &course.CourseController{}, "get:GetCourseImgs"),
176 183
 		beego.NSRouter("/courseimg", &course.CourseController{}, "post:SaveCourseImg"),
177 184
 		beego.NSRouter("/courseimg", &course.CourseController{}, "put:SaveCourseImg"),
@@ -185,10 +192,10 @@ func getCommonRoutes() beego.LinkNamespace {
185 192
 
186 193
 		// 商品
187 194
 		beego.NSRouter("/goods", &goods.GoodsController{}, "get:GetListByCase"),
188
-		beego.NSRouter("/goods/:id", &goods.GoodsController{}, "get:UpdateGoods"),
195
+		beego.NSRouter("/goods/:id", &goods.GoodsController{}, "get:GetGoodsByID"),
189 196
 		beego.NSRouter("/goods", &goods.GoodsController{}, "post:UpdateGoods"),
190 197
 		beego.NSRouter("/goods/:id", &goods.GoodsController{}, "put:UpdateGoods"),
191
-		beego.NSRouter("/goods/:id", &goods.GoodsController{}, "delete:UpdateGoods"),
198
+		beego.NSRouter("/goods/:id", &goods.GoodsController{}, "delete:DeleteGoods"),
192 199
 
193 200
 		// 商品订单
194 201
 		beego.NSRouter("/order/goods", &goods.GoodsController{}, "get:GetOrderList"),
@@ -202,5 +209,16 @@ func getCommonRoutes() beego.LinkNamespace {
202 209
 
203 210
 		// 系统相关
204 211
 		beego.NSRouter("/system/init", &user.UserController{}, "get:GetEnvVars"),
212
+
213
+
214
+		// 营销活动
215
+		beego.NSRouter("/marketing/list",&marketing.MarketingController{},"get:GetMarketingList"),
216
+		beego.NSRouter("/marketing/add",&marketing.MarketingController{},"get:SaveMarketing"),
217
+		beego.NSRouter("/marketing/:activityId",&marketing.MarketingController{},"get:GetMarketingById"),
218
+		beego.NSRouter("/marketing/update",&marketing.MarketingController{},"get:UpdateMarketing"),
219
+		beego.NSRouter("/marketing/normal/:activityId",&marketing.MarketingController{},"get:DelMarketingNormal"),
220
+		beego.NSRouter("/marketing/disable/:activityId",&marketing.MarketingController{},"get:DelMarketingDisable"),
221
+		beego.NSRouter("/marketing/delete/:activityId",&marketing.MarketingController{},"get:DelMarketing"),
222
+
205 223
 	)
206 224
 }

+ 51
- 47
routers/guest.go Näytä tiedosto

@@ -1,47 +1,51 @@
1
-package routers
2
-
3
-import (
4
-	"spaceofcheng/services/controllers"
5
-	"spaceofcheng/services/controllers/cases"
6
-	"spaceofcheng/services/controllers/course"
7
-	"spaceofcheng/services/controllers/customer"
8
-	"spaceofcheng/services/controllers/goods"
9
-	"spaceofcheng/services/controllers/message"
10
-	"spaceofcheng/services/controllers/user"
11
-
12
-	"github.com/astaxie/beego"
13
-)
14
-
15
-func getGuestRoutes() beego.LinkNamespace {
16
-	prefix := beego.AppConfig.String("api::guest")
17
-
18
-	return beego.NSNamespace(prefix,
19
-		// cms
20
-		beego.NSRouter("/cms/info", &message.MessageController{}, "get:GetCmsInfoByLocation"),
21
-		beego.NSRouter("/cms/img", &message.MessageController{}, "get:GetImgByLocation"),
22
-		beego.NSRouter("/cms/news", &message.MessageController{}, "get:GetNewsByLocation"),
23
-		beego.NSRouter("/cms/case", &message.MessageController{}, "get:GetCmsCaseList"),
24
-		beego.NSRouter("/cms/location", &message.MessageController{}, "get:GetLocations"),
25
-		beego.NSRouter("/cms/course", &course.CourseController{}, "get:GetCourseByLocation"),
26
-
27
-		// 案场
28
-		beego.NSRouter("/case", &cases.CaseController{}, "get:GetOrgCases"),
29
-
30
-		// 商品制作状态
31
-		beego.NSRouter("/dict/order/makestatus", &goods.GoodsController{}, "get:GetMakeStatus"),
32
-
33
-		// 商品
34
-		beego.NSRouter("/goods", &goods.GoodsController{}, "get:GetListForWechat"),
35
-
36
-		// 验证码 获取, 校验
37
-		beego.NSRouter("/captcha", &controllers.BaseController{}, "get:SendCaptcha"),
38
-		beego.NSRouter("/captcha", &controllers.BaseController{}, "post:ValidCaptcha"),
39
-
40
-		// 微信 登录, 注册
41
-		beego.NSRouter("/wxsignin", &customer.CustomerController{}, "post:SignIn"),
42
-		beego.NSRouter("/wxsignup", &customer.CustomerController{}, "post:SignUp"),
43
-
44
-		// 登录
45
-		beego.NSRouter("/signin", &user.UserController{}, "post:SignIn"),
46
-	)
47
-}
1
+package routers
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/controllers/cases"
6
+	"spaceofcheng/services/controllers/course"
7
+	"spaceofcheng/services/controllers/customer"
8
+	"spaceofcheng/services/controllers/goods"
9
+	"spaceofcheng/services/controllers/message"
10
+	"spaceofcheng/services/controllers/user"
11
+
12
+	"github.com/astaxie/beego"
13
+)
14
+
15
+func getGuestRoutes() beego.LinkNamespace {
16
+	prefix := beego.AppConfig.String("api::guest")
17
+
18
+	return beego.NSNamespace(prefix,
19
+		// cms
20
+		beego.NSRouter("/cms/info", &message.MessageController{}, "get:GetCmsInfoByLocation"),
21
+		beego.NSRouter("/cms/img", &message.MessageController{}, "get:GetImgByLocation"),
22
+		beego.NSRouter("/cms/news", &message.MessageController{}, "get:GetNewsByLocation"),
23
+		beego.NSRouter("/cms/case", &message.MessageController{}, "get:GetCmsCaseList"),
24
+		beego.NSRouter("/cms/location", &message.MessageController{}, "get:GetLocations"),
25
+		beego.NSRouter("/cms/course", &course.CourseController{}, "get:GetCourseByLocation"),
26
+		beego.NSRouter("/cms/case/:cmscaseid", &message.MessageController{}, "get:GetCmsCaseByID"),
27
+
28
+		// 课程
29
+		beego.NSRouter("/course/:courseid", &course.CourseController{}, "get:GetCourseByID"),
30
+
31
+		// 案场
32
+		beego.NSRouter("/case", &cases.CaseController{}, "get:GetOrgCases"),
33
+
34
+		// 商品制作状态
35
+		beego.NSRouter("/dict/order/makestatus", &goods.GoodsController{}, "get:GetMakeStatus"),
36
+
37
+		// 商品
38
+		beego.NSRouter("/goods", &goods.GoodsController{}, "get:GetListForWechat"),
39
+
40
+		// 验证码 获取, 校验
41
+		beego.NSRouter("/captcha", &controllers.BaseController{}, "get:SendCaptcha"),
42
+		beego.NSRouter("/captcha", &controllers.BaseController{}, "post:ValidCaptcha"),
43
+
44
+		// 微信 登录, 注册
45
+		beego.NSRouter("/wxsignin", &customer.CustomerController{}, "post:SignIn"),
46
+		beego.NSRouter("/wxsignup", &customer.CustomerController{}, "post:SignUp"),
47
+
48
+		// 登录
49
+		beego.NSRouter("/signin", &user.UserController{}, "post:SignIn"),
50
+	)
51
+}

+ 3
- 3
service/course/course.go Näytä tiedosto

@@ -134,7 +134,7 @@ func (s *CourseServ) SaveCourse(course model.TaCourse, tagids string) (*model.Ta
134 134
 	if course.BeginDate.IsZero() || course.EndDate.IsZero() {
135 135
 		return nil, utils.LogError("课程时间不允许为空!")
136 136
 	}
137
-	if course.EndDate.After(course.BeginDate) {
137
+	if !course.EndDate.After(course.BeginDate) {
138 138
 		return nil, utils.LogError("截止时间必须大于开始时间!")
139 139
 	}
140 140
 	if tagids == "" {
@@ -176,7 +176,7 @@ func (s *CourseServ) SaveCourse(course model.TaCourse, tagids string) (*model.Ta
176 176
 			tagid = newtag.TagId
177 177
 		}
178 178
 		var coursetag = model.TaCourseTag{
179
-			CourseId: course.CourseId,
179
+			CourseId: newInfo.CourseId,
180 180
 			TagId:    tagid,
181 181
 		}
182 182
 		courseTags = append(courseTags, coursetag)
@@ -306,7 +306,7 @@ func (s *CourseServ) GetCourseSchedule(name, caseids, date string, page, pageSiz
306 306
 }
307 307
 
308 308
 // GetDetails 获取所有排课
309
-func (s *CourseServ) GetDetails(caseid, date string) ([]model.TaCourseDetail, error) {
309
+func (s *CourseServ) GetDetails(caseid, date string) ([]course.DetailInfo, error) {
310 310
 	if caseid == "" {
311 311
 		return nil, utils.LogError("请先选择案场!")
312 312
 	}

+ 2
- 0
service/course/order.go Näytä tiedosto

@@ -33,6 +33,7 @@ func (s *CourseServ) Orders(
33 33
 		couseOrder.PayType = models.CONSUME_COUPON
34 34
 	}
35 35
 
36
+	// TODO
36 37
 	// 校验案场
37 38
 	// caseID := couseOrder.CaseId
38 39
 	// if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
@@ -245,6 +246,7 @@ func (s *CourseServ) SaveOrder(order *model.TaCourseOrders, coupons []model.TaCo
245 246
 		OrgId:            order.OrgId,
246 247
 		CaseId:           order.CaseId,
247 248
 		CourseName:       course.CourseName,
249
+		LocationId:       course.LocationId,
248 250
 		Price:            course.Price,
249 251
 		CourseNum:        course.CourseNum,
250 252
 		JoinNum:          0,

+ 177
- 0
service/marketing/marketing.go Näytä tiedosto

@@ -0,0 +1,177 @@
1
+package marketing
2
+
3
+import(
4
+	"spaceofcheng/services/models/marketing"
5
+	"spaceofcheng/services/utils"
6
+	"spaceofcheng/services/service"
7
+	"spaceofcheng/services/models/model"
8
+	"github.com/astaxie/beego"
9
+)
10
+
11
+// MarketingServ 系统处理
12
+type MarketingServ struct {
13
+	ctx     *utils.Context
14
+	dao     *marketing.MarketingDAO
15
+	wdao    *marketing.WorkDAO
16
+}
17
+
18
+// NewMarketingServ 初始化
19
+func NewMarketingServ(ctx *utils.Context) *MarketingServ {
20
+	return &MarketingServ{
21
+		ctx:     ctx,
22
+		dao:     marketing.NewMarketingDAO(ctx),
23
+	}
24
+}
25
+
26
+// GetCustWithWXList 获取客户列表
27
+func (s *MarketingServ) GetMarketingList(page int, pageSize int) (map[string]interface{}, error) {
28
+
29
+	if pageSize == 0 {
30
+		pageSize = service.PAGENUM
31
+	}
32
+	if page == 0 {
33
+		page = 1
34
+	}
35
+
36
+	list,err := s.dao.GetMarketingList(page,pageSize)
37
+	if err != nil {
38
+		beego.Error(err)
39
+		return nil, err
40
+	}
41
+
42
+	total, err := s.dao.GetMarketingCount()
43
+
44
+	return map[string]interface{}{
45
+		"list":     list,
46
+		"pagesize": pageSize,
47
+		"pagenum":  total,
48
+		"page":     page,
49
+	}, err
50
+}
51
+
52
+// 保存 营销活动
53
+/**
54
+	* resource_desc 活动描述
55
+	*/
56
+func (s *MarketingServ) SaveMarketing(activity model.SysActivity,resourceDesc string) (*model.SysActivity,*model.SysActivityAction, error) {
57
+
58
+	var newInfo *model.SysActivity
59
+	var newWoke *model.SysActivityAction
60
+
61
+	var err error
62
+	// 存储 营销活动
63
+	newInfo,err = s.dao.AddMarketing(&activity)
64
+	if err != nil {
65
+		return nil,nil, err
66
+	}
67
+	
68
+	woke := model.SysActivityAction{}
69
+	woke.ActivityId = newInfo.ActivityId
70
+	woke.ActiveType = newInfo.ActivityType
71
+	woke.ResourceDesc = resourceDesc
72
+
73
+	// 存储 活动动作
74
+	newWoke,err = s.wdao.AddWork(&woke)
75
+	if err != nil {
76
+		return nil,nil, err
77
+	}
78
+
79
+	return newInfo,newWoke,err
80
+
81
+}
82
+
83
+// GetMarketingById 根据ID查询数据
84
+func (s *MarketingServ) GetMarketingById(activityId string) (*model.SysActivity,error){
85
+
86
+	if activityId == "" {
87
+		return nil,utils.LogError("不存在营销信息!")
88
+	}
89
+
90
+	info,err:= s.dao.GetMarketingById(activityId)
91
+	if err != nil {
92
+		return nil, err
93
+	}
94
+	if info == nil {
95
+		return nil,utils.LogError("不存在营销信息!")
96
+	}
97
+	if info.Status == marketing.DELETE {
98
+		return nil, utils.LogError("营销信息已被删除!")
99
+	}
100
+
101
+	return info,err
102
+
103
+}
104
+
105
+// DelMarketing 删除 根据ID删除数据
106
+func (s *MarketingServ) DelMarketing(activityId string) error {
107
+
108
+	if activityId == "" {
109
+		return utils.LogError("没有对应的营销活动")
110
+	}
111
+
112
+	info,err := s.dao.GetMarketingById(activityId)
113
+	if err != nil {
114
+		return err
115
+	}
116
+	// 判断状态是否被删除
117
+	if info.Status == marketing.DELETE {
118
+		return utils.LogError("营销状态异常")
119
+	}
120
+	err = s.dao.DelMarketing(activityId,marketing.DELETE)
121
+	return err;
122
+
123
+}
124
+
125
+// DelMarketing  根据ID 修改状态为 正常
126
+func (s *MarketingServ) DelMarketingNormal(activityId string) error {
127
+
128
+	if activityId == "" {
129
+		return utils.LogError("没有对应的营销活动")
130
+	}
131
+
132
+	info,err := s.dao.GetMarketingById(activityId)
133
+	if err != nil {
134
+		return err
135
+	}
136
+	// 判断状态是否已经是正常
137
+	if info.Status == marketing.NORMAL {
138
+		return utils.LogError("营销状态异常")
139
+	}
140
+	err = s.dao.DelMarketing(activityId,marketing.NORMAL)
141
+	return err;
142
+
143
+}
144
+
145
+// DelMarketing  根据ID 修改状态为 停用
146
+func (s *MarketingServ) DelMarketingDisable(activityId string) error {
147
+
148
+	if activityId == "" {
149
+		return utils.LogError("没有对应的营销活动")
150
+	}
151
+
152
+	info,err := s.dao.GetMarketingById(activityId)
153
+	if err != nil {
154
+		return err
155
+	}
156
+	// 判断状态是否已经是停用
157
+	if info.Status == marketing.DISABLE {
158
+		return utils.LogError("营销状态异常")
159
+	}
160
+	err = s.dao.DelMarketing(activityId,marketing.DISABLE)
161
+	return err;
162
+
163
+}
164
+
165
+
166
+// UpdateMarketing 修改 营销活动
167
+func (s *MarketingServ) UpdateMarketing(activity model.SysActivity) error {
168
+	if activity.ActivityId == "" {
169
+		return utils.LogError("没有对应的营销活动")
170
+	}
171
+	err := s.dao.UpdateMarketing(activity)
172
+	return err
173
+}
174
+
175
+
176
+
177
+

+ 46
- 0
service/marketing/work.go Näytä tiedosto

@@ -0,0 +1,46 @@
1
+package marketing
2
+
3
+
4
+import(
5
+	"spaceofcheng/services/models/marketing"
6
+	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/utils"
8
+
9
+)
10
+
11
+
12
+// MarketingServ 系统处理
13
+type WorkServ struct {
14
+	ctx     *utils.Context
15
+	dao     *marketing.WorkDAO
16
+}
17
+
18
+// NewMarketingServ 初始化
19
+func NewWorkServ(ctx *utils.Context) *WorkServ {
20
+	return &WorkServ{
21
+		ctx:     ctx,
22
+		dao:     marketing.NewWorkDAO(ctx),
23
+	}
24
+}
25
+
26
+// 保存 Work
27
+func (s *WorkServ) SaveWork(work *model.SysActivityAction)  (*model.SysActivityAction, error){
28
+		var newInfo *model.SysActivityAction
29
+		if work.ActivityId == "" {
30
+			return nil, utils.LogError("营销编号为空!")
31
+		}
32
+		
33
+		newInfo,err := s.dao.AddWork(work)
34
+		
35
+		if err != nil {
36
+			return nil, err
37
+		}
38
+
39
+		return newInfo,nil
40
+
41
+}
42
+
43
+
44
+
45
+
46
+

+ 39
- 16
service/message/cmscase.go Näytä tiedosto

@@ -2,6 +2,7 @@ package message
2 2
 
3 3
 import (
4 4
 	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/course"
5 6
 	"spaceofcheng/services/models/message"
6 7
 	"spaceofcheng/services/models/model"
7 8
 	"spaceofcheng/services/service"
@@ -63,24 +64,46 @@ func (s *MessageServ) GetCmsCasesByID(cmscaseid string) (*message.CmsCase, error
63 64
 		beego.Error(err)
64 65
 		return nil, err
65 66
 	}
66
-	var course []model.TaCourse
67
-	if info.IsAllCourse == 1 {
68
-		course, err = s.dao.GetCourseByCaseID(info.CaseId)
69
-	} else {
70
-		course, err = s.dao.GetCoursesByCmsCase(info.CmsCaseId)
71
-	}
72
-	if err != nil {
73
-		beego.Error(err)
74
-		return nil, err
75
-	}
76
-	info.Courses = course
67
+	if info != nil {
68
+		var courses []course.CourseDetail
69
+		if info.IsAllCourse == 1 {
70
+			courses, err = s.dao.GetCourseByCaseID(info.CaseId)
71
+		} else {
72
+			courses, err = s.dao.GetCoursesByCmsCase(info.CmsCaseId)
73
+		}
74
+		if err != nil {
75
+			beego.Error(err)
76
+			return nil, err
77
+		}
77 78
 
78
-	imgs, err := s.dao.GetCmsCaseImgs(info.CmsCaseId)
79
-	if err != nil {
80
-		beego.Error(err)
81
-		return nil, err
79
+		for inx, course := range courses {
80
+			tags, err := s.coursedao.GetCourseTag(course.CourseId)
81
+			if err != nil {
82
+				return nil, err
83
+			}
84
+			courses[inx].CourseTags = tags
85
+			details, err := s.coursedao.GetCourseDetail(course.CourseId)
86
+			if err != nil {
87
+				return nil, err
88
+			}
89
+			courses[inx].CourseDetail = details
90
+			imgs, err := s.coursedao.GetCourseImgs(course.CourseId)
91
+			if err != nil {
92
+				return nil, err
93
+			}
94
+			courses[inx].CourseImgs = imgs
95
+		}
96
+
97
+		info.Courses = courses
98
+
99
+		imgs, err := s.dao.GetCmsCaseImgs(info.CmsCaseId)
100
+		if err != nil {
101
+			beego.Error(err)
102
+			return nil, err
103
+		}
104
+		info.CmsCaseImgs = imgs
82 105
 	}
83
-	info.CmsCaseImgs = imgs
106
+
84 107
 	return info, nil
85 108
 }
86 109
 

+ 7
- 4
service/message/message.go Näytä tiedosto

@@ -1,6 +1,7 @@
1 1
 package message
2 2
 
3 3
 import (
4
+	"spaceofcheng/services/models/course"
4 5
 	"spaceofcheng/services/models/message"
5 6
 	"spaceofcheng/services/models/model"
6 7
 	"spaceofcheng/services/service"
@@ -11,15 +12,17 @@ import (
11 12
 
12 13
 // MessageServ 系统处理
13 14
 type MessageServ struct {
14
-	ctx *utils.Context
15
-	dao *message.MessageDAO
15
+	ctx       *utils.Context
16
+	dao       *message.MessageDAO
17
+	coursedao *course.CourseDAO
16 18
 }
17 19
 
18 20
 // NewMessageServ 初始化
19 21
 func NewMessageServ(ctx *utils.Context) *MessageServ {
20 22
 	return &MessageServ{
21
-		ctx: ctx,
22
-		dao: message.NewMessageDAO(ctx),
23
+		ctx:       ctx,
24
+		dao:       message.NewMessageDAO(ctx),
25
+		coursedao: course.NewCourseDAO(ctx),
23 26
 	}
24 27
 }
25 28
 

+ 162
- 0
service/verify/verify.go Näytä tiedosto

@@ -0,0 +1,162 @@
1
+package verify
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/customer"
6
+	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/models/verify"
8
+	"spaceofcheng/services/service"
9
+	"spaceofcheng/services/utils"
10
+	"time"
11
+
12
+	"github.com/astaxie/beego"
13
+)
14
+
15
+// CaseServ 系统处理
16
+type VerifyServ struct {
17
+	ctx  *utils.Context
18
+	dao  *verify.VerifyDAO
19
+	cdao *customer.CustomerDAO
20
+}
21
+
22
+// NewVerifyServ 初始化
23
+func NewVerifyServ(ctx *utils.Context) *VerifyServ {
24
+	return &VerifyServ{
25
+		ctx:  ctx,
26
+		dao:  verify.NewVerifyDAO(ctx),
27
+		cdao: customer.NewCustomerDAO(ctx),
28
+	}
29
+}
30
+
31
+// GetCustomerCourseDetailById 根据ID获取当日可核销课程
32
+func (s *VerifyServ) GetCustomerCourseDetailById(id, caseid string, page, pageSize int) (map[string]interface{}, error) {
33
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
34
+		return nil, err
35
+	}
36
+	if pageSize == 0 {
37
+		pageSize = service.PAGENUM
38
+	}
39
+	if page == 0 {
40
+		page = 1
41
+	}
42
+	customerDetail, err := s.dao.GetCustomerCourseList(id, caseid, page, pageSize)
43
+	if err != nil {
44
+		beego.Error(err)
45
+		return nil, err
46
+	}
47
+	customerId := customerDetail[0].CustomerId
48
+	total, err := s.dao.GetCustomerCourseListCount(id, caseid)
49
+	if err != nil {
50
+		beego.Error(err)
51
+		return nil, err
52
+	}
53
+	beego.Error(customerId)
54
+	customer, err := s.cdao.GetCustomerByID(customerId)
55
+	if err != nil {
56
+		beego.Error(err)
57
+		return nil, err
58
+	}
59
+	return map[string]interface{}{
60
+		"list":         customerDetail,
61
+		"pagesize":     pageSize,
62
+		"pagenum":      total,
63
+		"page":         page,
64
+		"customerInfo": customer,
65
+	}, err
66
+}
67
+
68
+// GetCustomerCourseDetailByTel根据电话号码获取当日可核销课程
69
+func (s *VerifyServ) GetCustomerCourseDetailByTel(tel, caseid string, page, pageSize int) (map[string]interface{}, error) {
70
+	if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
71
+		return nil, err
72
+	}
73
+	if pageSize == 0 {
74
+		pageSize = service.PAGENUM
75
+	}
76
+	if page == 0 {
77
+		page = 1
78
+	}
79
+	customerDetail, err := s.dao.GetCustomerCourseListByTel(tel, caseid, page, pageSize)
80
+	if err != nil {
81
+		beego.Error(err)
82
+		return nil, err
83
+	}
84
+	customerId := customerDetail[0].CustomerId
85
+	total, err := s.dao.GetCustomerCourseListByTelCount(tel, caseid)
86
+	if err != nil {
87
+		beego.Error(err)
88
+		return nil, err
89
+	}
90
+	customer, err := s.cdao.GetCustomerByID(customerId)
91
+	if err != nil {
92
+		beego.Error(err)
93
+		return nil, err
94
+	}
95
+	return map[string]interface{}{
96
+		"list":         customerDetail,
97
+		"pagesize":     pageSize,
98
+		"pagenum":      total,
99
+		"page":         page,
100
+		"customerInfo": customer,
101
+	}, err
102
+
103
+}
104
+func (s *VerifyServ) GetCustomerCourseDetailByDetailId(id string) (*model.TaCustomerCourseDetail, error) {
105
+	customerDetail, err := s.dao.GetCustomerCourseDetailById(id)
106
+	return customerDetail, err
107
+}
108
+
109
+// UpdateCustomerCourseDetail更新我的课程详情
110
+func (s *VerifyServ) UpdateCustomerCourseDetail(customerDetail *model.TaCustomerCourseDetail, userid string) error {
111
+	var err error
112
+	customerDetail.VerifyDate = time.Now()
113
+	customerDetail.VerifyUser = userid
114
+	if time.Now().After(customerDetail.EndDate) {
115
+		customerDetail.VerifyStatus = "late"
116
+	} else {
117
+		customerDetail.VerifyStatus = "used"
118
+	}
119
+	err = s.dao.UpdateCustomerCourseDetail(customerDetail)
120
+	return err
121
+}
122
+
123
+// UpdateCustomerCard 更新我的体验卡
124
+func (s *VerifyServ) UpdateCustomerCard(customerCard *model.TaCustomerCard) error {
125
+	var err error
126
+	customerCard.VerifyDate = time.Now()
127
+	err = s.dao.UpdateCustomerCard(customerCard)
128
+	return err
129
+
130
+}
131
+
132
+// UpdateCustomerCourse 更新我的课程
133
+func (s *VerifyServ) UpdateCustomerCourse(customerCourse *model.TaCustomerCourse) error {
134
+	var err error
135
+	customerCourse.JoinNum = customerCourse.JoinNum + 1
136
+	if customerCourse.JoinNum >= customerCourse.CourseNum {
137
+		customerCourse.IsDone = models.BOOL_TRUE
138
+	}
139
+	err = s.dao.UpdateCustomerCourse(customerCourse)
140
+	return err
141
+
142
+}
143
+
144
+// GetCustomerCardByDetailId 根据我的课程详情id获取体验卡
145
+func (s *VerifyServ) GetCustomerCardByDetailId(detailId string) (*model.TaCustomerCard, error) {
146
+	customerCard, err := s.dao.GetCustomerCardByDetailId(detailId)
147
+	if err != nil {
148
+		beego.Error(err)
149
+		return nil, err
150
+	}
151
+	return customerCard, err
152
+}
153
+
154
+// GetCustomerCourseByDetailId 根据我的课程详情id获取我的课程
155
+func (s *VerifyServ) GetCustomerCourseByDetailId(detailId string) (*model.TaCustomerCourse, error) {
156
+	customerCourse, err := s.dao.GetCustomerCourseByDetailId(detailId)
157
+	if err != nil {
158
+		beego.Error(err)
159
+		return nil, err
160
+	}
161
+	return customerCourse, err
162
+}