zjxpcyc 6 vuotta sitten
vanhempi
commit
ef99d586a2
47 muutettua tiedostoa jossa 2874 lisäystä ja 182 poistoa
  1. 1
    1
      conf/log.conf
  2. 21
    15
      controllers/auth.go
  3. 11
    0
      controllers/cases/case.go
  4. 1
    1
      controllers/cases/signin.go
  5. 4
    0
      controllers/cases/tag.go
  6. 4
    2
      controllers/course/course.go
  7. 9
    0
      controllers/course/order.go
  8. 3
    2
      controllers/customer/customer.go
  9. 6
    2
      controllers/goods/goods.go
  10. 29
    0
      controllers/goods/order.go
  11. 4
    4
      controllers/system/role.go
  12. 6
    12
      controllers/verify/verify.go
  13. 1999
    0
      log/common.log
  14. 7
    3
      models/cases/cases.go
  15. 6
    6
      models/cases/conf.go
  16. 13
    5
      models/cases/signin.go
  17. 8
    0
      models/constant.go
  18. 28
    11
      models/course/course.go
  19. 2
    1
      models/course/order.go
  20. 3
    0
      models/customer/account.go
  21. 34
    0
      models/customer/customer.go
  22. 6
    0
      models/goods/goods.go
  23. 20
    11
      models/goods/orders.go
  24. 2
    0
      models/goods/types.go
  25. 238
    8
      models/gymcard/gymcard.go
  26. 0
    1
      models/model/ta_card_image.go
  27. 0
    1
      models/model/ta_card_share.go
  28. 2
    1
      models/model/ta_checkin_record.go
  29. 0
    1
      models/model/ta_customer_gym.go
  30. 15
    20
      models/model/ta_gym_card.go
  31. 4
    10
      models/system/role.go
  32. 2
    2
      models/system/user.go
  33. 9
    8
      models/verify/verify.go
  34. 4
    0
      routers/common.go
  35. 8
    6
      service/cases/key.go
  36. 1
    1
      service/cases/signin.go
  37. 19
    8
      service/course/course.go
  38. 97
    12
      service/customer/customer.go
  39. 2
    2
      service/goods/goods.go
  40. 20
    0
      service/goods/orders.go
  41. 110
    0
      service/gymcard/gymcard.go
  42. 2
    0
      service/message/cmscase.go
  43. 2
    0
      service/message/message.go
  44. 59
    4
      service/sys.go
  45. 3
    3
      service/system/role.go
  46. 41
    6
      service/user.go
  47. 9
    12
      service/verify/verify.go

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

+ 21
- 15
controllers/auth.go Näytä tiedosto

@@ -135,30 +135,36 @@ func (c *BaseController) authWechat(serv *service.SysServ) {
135 135
 	if !c.needAuth() {
136 136
 		return
137 137
 	}
138
-
139
-	// 未登录或者绑定, 返回 401
138
+	// 未登录或者绑定, 返回 406
140 139
 	if custID == "" && userMap.UserId == "" {
141
-		c.ResponseError(
142
-			errors.New("用户未登录或绑定"),
143
-			http.StatusNotAcceptable,
144
-		)
140
+		// 新增用户信息
141
+		cust, err := serv.SaveNewCustomer(wxDetail, userMap)
142
+		if err != nil {
143
+			c.ResponseError(err)
144
+		}
145
+		custID = cust.CustomerId
146
+		// c.ResponseError(
147
+		// 	errors.New("用户未登录或绑定"),
148
+		// 	http.StatusNotAcceptable,
149
+		// )
145 150
 	}
146 151
 
147 152
 	if custID == "" {
148 153
 		custID = userMap.UserId
149 154
 	}
155
+	if custID != "" {
156
+		if err := serv.SetCustomer(custID); err != nil {
157
+			utils.LogError(err.Error())
150 158
 
151
-	if err := serv.SetCustomer(custID); err != nil {
152
-		utils.LogError(err.Error())
159
+			c.ResponseError(
160
+				errors.New("内部错误, 请重试"),
161
+				http.StatusInternalServerError,
162
+			)
163
+		}
153 164
 
154
-		c.ResponseError(
155
-			errors.New("内部错误, 请重试"),
156
-			http.StatusInternalServerError,
157
-		)
165
+		// 设置 Session
166
+		c.SetSession(SNCustID, custID)
158 167
 	}
159
-
160
-	// 设置 Session
161
-	c.SetSession(SNCustID, custID)
162 168
 }
163 169
 
164 170
 func (c *BaseController) needAuth() bool {

+ 11
- 0
controllers/cases/case.go Näytä tiedosto

@@ -82,6 +82,17 @@ func (c *CaseController) GetOrgCases() {
82 82
 	c.ResponseJSON(res)
83 83
 }
84 84
 
85
+// GetCaseConf 获取案场对应的配置
86
+func (c *CaseController) GetCaseConf() {
87
+	caseid := c.GetString(":caseid")
88
+	conf, err := c.dao.GetCaseConf(caseid, cases.CONFTYPE_GOODS)
89
+	if err != nil {
90
+		utils.LogError("获取案场配置信息失败: " + err.Error())
91
+		c.ResponseError(errors.New("获取案场信息失败!"))
92
+	}
93
+	c.ResponseJSON(conf)
94
+}
95
+
85 96
 // OpenCaseCoffee 开启
86 97
 func (c *CaseController) OpenCaseCoffee() {
87 98
 	caseid := c.GetString(":caseid")

+ 1
- 1
controllers/cases/signin.go Näytä tiedosto

@@ -38,7 +38,7 @@ func (c *SigninController) GetSigninWhere() {
38 38
 	if err != nil {
39 39
 		c.ResponseError(err)
40 40
 	}
41
-
41
+	
42 42
 	c.ResponseJSON(res)
43 43
 }
44 44
 

+ 4
- 0
controllers/cases/tag.go Näytä tiedosto

@@ -10,6 +10,10 @@ func (c *CaseController) GetTagList() {
10 10
 	cases := c.Context.Get("cases").([]model.SysUserCase)
11 11
 	caseIDs := c.GetCaseIDs(cases)
12 12
 
13
+	if caseid == "" {
14
+		caseid = caseIDs
15
+	}
16
+
13 17
 	page, _ := c.GetInt("page")
14 18
 	pageSize, _ := c.GetInt("pagesize")
15 19
 

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

@@ -128,6 +128,7 @@ func (c *CourseController) DelCourseImg() {
128 128
 func (c *CourseController) GetCourseSchedule() {
129 129
 	name := c.GetString("name")
130 130
 	caseids := c.GetString("caseid")
131
+	courseid := c.GetString("courseid")
131 132
 	if caseids == "" {
132 133
 		cases := c.Context.Get("cases").([]model.SysUserCase)
133 134
 		caseids = c.GetCaseIDs(cases)
@@ -135,7 +136,7 @@ func (c *CourseController) GetCourseSchedule() {
135 136
 	date := c.GetString("date")
136 137
 	page, _ := c.GetInt("page")
137 138
 	pageSize, _ := c.GetInt("pagesize")
138
-	list, err := c.serv.GetCourseSchedule(name, caseids, date, page, pageSize)
139
+	list, err := c.serv.GetCourseSchedule(name, caseids, courseid, date, page, pageSize)
139 140
 	if err != nil {
140 141
 		c.ResponseError(err)
141 142
 	}
@@ -146,7 +147,8 @@ func (c *CourseController) GetCourseSchedule() {
146 147
 func (c *CourseController) GetDetails() {
147 148
 	caseid := c.GetString("caseid")
148 149
 	date := c.GetString("date")
149
-	list, err := c.serv.GetDetails(caseid, date)
150
+	courseid := c.GetString("courseid")
151
+	list, err := c.serv.GetDetails(caseid, date, courseid)
150 152
 	if err != nil {
151 153
 		c.ResponseError(err)
152 154
 	}

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

@@ -3,6 +3,7 @@ package course
3 3
 import (
4 4
 	"encoding/json"
5 5
 	"errors"
6
+	"net/http"
6 7
 	"spaceofcheng/services/models/model"
7 8
 	"spaceofcheng/services/utils"
8 9
 )
@@ -30,6 +31,14 @@ func (c *CourseController) PostOrder() {
30 31
 		utils.LogError("下单优惠转换JSON失败: " + err.Error())
31 32
 		c.ResponseError(errors.New("优惠数据格式不正确"))
32 33
 	}
34
+	cust := c.Context.Get("customer").(model.TaCustomer)
35
+
36
+	if cust.Phone == "" {
37
+		c.ResponseError(
38
+			errors.New("用户未登录或绑定"),
39
+			http.StatusNotAcceptable,
40
+		)
41
+	}
33 42
 
34 43
 	if err := c.serv.Orders(&orderInfo, orderCoupon); err != nil {
35 44
 		c.ResponseError(err)

+ 3
- 2
controllers/customer/customer.go Näytä tiedosto

@@ -54,8 +54,9 @@ func (c *CustomerController) GetCustWXByID() {
54 54
 
55 55
 	userMap := userMapRaw.(model.TaUserMapping)
56 56
 
57
-	custID := userMap.UserId
58
-	cust, err := c.serv.GetCustWithWXByID(custID)
57
+	openid := userMap.Openid
58
+	cust, err := c.serv.GetCustUserByOpenID(openid)
59
+	// cust, err := c.serv.GetCustWithWXByID(custID)
59 60
 	if err != nil {
60 61
 		utils.LogError(err)
61 62
 		c.ResponseError(errors.New("获取用户信息失败, 请重试"))

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

@@ -32,11 +32,15 @@ func (c *GoodsController) Constructor() {
32 32
 func (c *GoodsController) GetListByCase() {
33 33
 	page, _ := c.GetInt("page")
34 34
 	pagesize, _ := c.GetInt("pagesize")
35
-	caseID := c.GetString("caseid")
35
+	caseids := c.GetString("caseid")
36 36
 	goodsName := c.GetString("name")
37 37
 	goodsType := c.GetString("type")
38 38
 
39
-	goodsList, cnt, err := c.serv.GetGoodsListPageNavi(goodsName, goodsType, caseID, page, pagesize)
39
+	if caseids == "" {
40
+		cases := c.Context.Get("cases").([]model.SysUserCase)
41
+		caseids = c.GetCaseIDs(cases)
42
+	}
43
+	goodsList, cnt, err := c.serv.GetGoodsListPageNavi(goodsName, goodsType, caseids, page, pagesize)
40 44
 	if err != nil {
41 45
 		c.ResponseError(err)
42 46
 	}

+ 29
- 0
controllers/goods/order.go Näytä tiedosto

@@ -4,6 +4,7 @@ import (
4 4
 	"cdkj-check/models"
5 5
 	"encoding/json"
6 6
 	"errors"
7
+	"net/http"
7 8
 	"spaceofcheng/services/models/model"
8 9
 	"spaceofcheng/services/utils"
9 10
 	"strconv"
@@ -122,6 +123,14 @@ func (c *GoodsController) PostOrder() {
122 123
 		utils.LogError("下单优惠转换JSON失败: " + err.Error())
123 124
 		c.ResponseError(errors.New("优惠数据格式不正确"))
124 125
 	}
126
+	cust := c.Context.Get("customer").(model.TaCustomer)
127
+
128
+	if cust.Phone == "" {
129
+		c.ResponseError(
130
+			errors.New("用户未登录或绑定"),
131
+			http.StatusNotAcceptable,
132
+		)
133
+	}
125 134
 
126 135
 	if err := c.serv.Orders(&orderInfo, orderDetail, orderCoupon); err != nil {
127 136
 		c.ResponseError(err)
@@ -258,3 +267,23 @@ func (c *GoodsController) GetCaseOrdersNum() {
258 267
 	}
259 268
 	c.ResponseJSON(num)
260 269
 }
270
+
271
+// FinishMake 完成制作
272
+func (c *GoodsController) FinishMake() {
273
+	orderid := c.GetString(":id")
274
+	err := c.serv.FinishMake(orderid)
275
+	if err != nil {
276
+		c.ResponseError(err)
277
+	}
278
+	c.ResponseJSON("操作成功!")
279
+}
280
+
281
+// CancelMake 取消制作
282
+func (c *GoodsController) CancelMake() {
283
+	orderid := c.GetString(":id")
284
+	err := c.serv.CancelMake(orderid)
285
+	if err != nil {
286
+		c.ResponseError(err)
287
+	}
288
+	c.ResponseJSON("操作成功!")
289
+}

+ 4
- 4
controllers/system/role.go Näytä tiedosto

@@ -21,14 +21,14 @@ func (c *RoleController) Constructor() {
21 21
 
22 22
 // GetRoleList 获取角色列表
23 23
 func (c *RoleController) GetRoleList() {
24
-	cases := c.Context.Get("cases").([]model.SysUserCase)
25
-	caseIDs := c.GetCaseIDs(cases)
24
+	// cases := c.Context.Get("cases").([]model.SysUserCase)
25
+	// caseIDs := c.GetCaseIDs(cases)
26 26
 	page, _ := c.GetInt("page")
27 27
 	pageSize, _ := c.GetInt("pagesize")
28 28
 	name := c.GetString("name")
29
-	caseid := c.GetString("caseid")
29
+	// caseid := c.GetString("caseid")
30 30
 
31
-	list, err := c.dao.GetRoleList(caseIDs, name, caseid, page, pageSize)
31
+	list, err := c.dao.GetRoleList(name, page, pageSize)
32 32
 	if err != nil {
33 33
 		c.ResponseError(err)
34 34
 	}

+ 6
- 12
controllers/verify/verify.go Näytä tiedosto

@@ -22,14 +22,11 @@ func (c *VerifyController) Constructor() {
22 22
 // GetCustomerCourseDetailListById 根据id获取我的课程详情
23 23
 func (c *VerifyController) GetCustomerCourseDetailListById() {
24 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
-	}
25
+	cases := c.Context.Get("cases").([]model.SysUserCase)
26
+	caseids := c.GetCaseIDs(cases)
30 27
 	page, _ := c.GetInt("page")
31 28
 	pageSize, _ := c.GetInt("pagesize")
32
-	list, err := c.dao.GetCustomerCourseDetailById(customerCourseId, caseid, page, pageSize)
29
+	list, err := c.dao.GetCustomerCourseDetailById(customerCourseId, caseids, page, pageSize)
33 30
 	if err != nil {
34 31
 		c.ResponseError(err)
35 32
 	}
@@ -39,15 +36,12 @@ func (c *VerifyController) GetCustomerCourseDetailListById() {
39 36
 
40 37
 // GetCustomerCourseDetailListBytel 根据手机号获取我的课程详情id
41 38
 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
-	}
39
+	cases := c.Context.Get("cases").([]model.SysUserCase)
40
+	caseids := c.GetCaseIDs(cases)
47 41
 	tel := c.GetString(":tel")
48 42
 	page, _ := c.GetInt("page")
49 43
 	pageSize, _ := c.GetInt("pagesize")
50
-	list, err := c.dao.GetCustomerCourseDetailByTel(tel, caseid, page, pageSize)
44
+	list, err := c.dao.GetCustomerCourseDetailByTel(tel, caseids, page, pageSize)
51 45
 	if err != nil {
52 46
 		c.ResponseError(err)
53 47
 	}

+ 1999
- 0
log/common.log
File diff suppressed because it is too large
Näytä tiedosto


+ 7
- 3
models/cases/cases.go Näytä tiedosto

@@ -132,17 +132,21 @@ type UserCase struct {
132 132
 // GetCaseUserByType 获取案场人员
133 133
 func (m *CaseDAO) GetCaseUserByType(csIDs []string, typeID string) ([]UserCase, error) {
134 134
 	query := `
135
-		SELECT n.user_id, n.real_name as user_name, s.case_id, '' as case_name
135
+			SELECT
136
+			n.user_id,
137
+			n.real_name AS user_name,
138
+			c.case_id,
139
+			'' AS case_name
136 140
 		FROM
137 141
 			td_user_type s
138 142
 		JOIN sys_user_type m ON s.type_id = m.type_id
139 143
 		JOIN sys_user n ON m.user_id = n.user_id
144
+		JOIN sys_user_case c on n.user_id = c.user_id
140 145
 		AND n.status = ?
141 146
 		WHERE
142
-			s.case_id IN ('` + strings.Join(csIDs, "','") + `')
147
+			c.case_id IN ('` + strings.Join(csIDs, "','") + `')
143 148
 		AND s.type_id = ?
144 149
 	`
145
-
146 150
 	var users []UserCase
147 151
 	if err := m.db.SQL(query, models.STATUS_NORMAL, typeID).Find(&users); err != nil {
148 152
 		return nil, err

+ 6
- 6
models/cases/conf.go Näytä tiedosto

@@ -8,15 +8,15 @@ import (
8 8
 
9 9
 // GetConfByCase 获取配置信息
10 10
 func (m *CaseDAO) GetConfByCase(caseid, conftype string) (*model.SysCaseConf, error) {
11
-	var conf = new(model.SysCaseConf)
12
-	has, err := m.db.Where("case_id=?", caseid).And("conf_type=?", conftype).Get(conf)
11
+	var conf []model.SysCaseConf
12
+	err := m.db.Where("case_id=?", caseid).And("conf_type=?", conftype).Find(&conf)
13 13
 	if err != nil {
14 14
 		return nil, err
15 15
 	}
16
-	if !has {
17
-		return nil, err
16
+	if len(conf) > 0 {
17
+		return &conf[0], err
18 18
 	}
19
-	return conf, err
19
+	return nil, err
20 20
 }
21 21
 
22 22
 // SaveCaseConf 保存案场配置信息
@@ -32,6 +32,6 @@ func (m *CaseDAO) UpdateCaseConf(conf model.SysCaseConf) error {
32 32
 	cols := []string{
33 33
 		"status",
34 34
 	}
35
-	_, err := m.db.Cols(cols...).Where("case_id=?", conf.ConfId).And("conf_type=?", conf.ConfType).Update(conf)
35
+	_, err := m.db.Cols(cols...).Where("case_id=?", conf.CaseId).And("conf_type=?", conf.ConfType).Update(conf)
36 36
 	return err
37 37
 }

+ 13
- 5
models/cases/signin.go Näytä tiedosto

@@ -66,18 +66,26 @@ type SigninInfo struct {
66 66
 	var sql string
67 67
 	switch selectType {
68 68
 		case ALL:
69
-			sql = `select * from ta_checkin_record ORDER BY create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
69
+			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id where to_days(tcr.create_date) = to_days(now()) ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
70 70
 		case TODAY:
71
-			sql = `select * from ta_checkin_record where to_days(create_date) = to_days(now()) ORDER BY create_date DESC limit` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
71
+			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id where to_days(tcr.create_date) = to_days(now()) and tcr.case_id='` + caseid + `' ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
72 72
 		case THIS_WEEK:
73
-			sql = `SELECT * FROM ta_checkin_record WHERE YEARWEEK(date_format(create_date,'%Y-%m-%d')) = YEARWEEK(now()) ORDER BY create_date DESC limit` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
73
+			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id WHERE YEARWEEK(date_format(tcr.create_date,'%Y-%m-%d')) = YEARWEEK(now())  and tcr.case_id='` + caseid + `' ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
74 74
 		case THIS_MONTH:
75
-			sql = `SELECT * FROM ta_checkin_record WHERE DATE_FORMAT(create_date,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ORDER BY create_date DESC limit` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
75
+			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id WHERE DATE_FORMAT(tcr.create_date,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') and tcr.case_id='` + caseid + `' ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
76 76
 		case THIS_YEAR:
77
-			sql = `select * from ta_checkin_record where YEAR(create_date)=YEAR(NOW()) ORDER BY create_date DESC limit` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
77
+			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id where YEAR(tcr.create_date)=YEAR(NOW()) and tcr.case_id='` + caseid + `' ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
78 78
 	}
79 79
 	
80 80
 	err := m.db.Sql(sql).Find(&signin)
81
+	// for index := 0; 0 < len(signin); index++ {
82
+	// 	println("用户编号:"+signin[index].UserId+"-")
83
+	// 	if signin[index].UserId == "" {
84
+	// 		signin[index].UserId = "前台用户"
85
+	// 	} else {
86
+	// 		signin[index].UserId = "后台用户"	
87
+	// 	}
88
+	// }
81 89
 	return signin,err
82 90
  }
83 91
 

+ 8
- 0
models/constant.go Näytä tiedosto

@@ -115,3 +115,11 @@ const (
115 115
 	GIVE_GIFT_COUPON = "coupon"
116 116
 	GIVE_GIFT_CARD   = "card"
117 117
 )
118
+
119
+// 游泳健身卡种类
120
+const (
121
+	GYM_CARD_ONCE    = "once"
122
+	GYM_CARD_MONTH   = "month"
123
+	GYM_CARD_QUARTER = "quarter"
124
+	GYM_CARD_YEAR    = "year"
125
+)

+ 28
- 11
models/course/course.go Näytä tiedosto

@@ -249,42 +249,56 @@ type DetailInfo struct {
249 249
 }
250 250
 
251 251
 // GetDetails 获取所有的排课记录
252
-func (m *CourseDAO) GetDetails(caseid, date string) ([]DetailInfo, error) {
252
+func (m *CourseDAO) GetDetails(caseid, date, courseid string) ([]DetailInfo, error) {
253 253
 	var details []DetailInfo
254 254
 
255 255
 	sql := `select a.*,b.course_name,b.status as course_status,c.case_name,c.case_address from ta_course_detail a 
256 256
 	inner join ta_course b on a.course_id=b.course_id 
257 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 + `'`
258
+	and b.status>` + strconv.Itoa(models.STATUS_DEL) + ` and DATE_FORMAT(a.begin_date,'%Y-%m') = '` + date + `'`
259
+
260
+	if courseid != "" {
261
+		sql = sql + ` and a.course_id = '` + courseid + `'`
262
+	} else {
263
+		sql = sql + ` and a.case_id='` + caseid + `'`
264
+	}
259 265
 	err := m.db.Sql(sql).Find(&details)
260 266
 
261
-	// err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("DATE_FORMAT(begin_date,'%Y-%m') = ?", date).Find(&details)
262 267
 	return details, err
263 268
 }
264 269
 
265 270
 // GetCourseSchedule 获取需要排课的记录
266
-func (m *CourseDAO) GetCourseSchedule(name, caseids, date string, page, pageSize int) ([]model.TaCourse, error) {
271
+func (m *CourseDAO) GetCourseSchedule(name, caseids, courseid, date string, page, pageSize int) ([]model.TaCourse, error) {
267 272
 	var courses []model.TaCourse
268 273
 	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And("'" + date + "' BETWEEN begin_date and end_date")
269 274
 	if name != "" {
270 275
 		dao.And("course_name like '%" + name + "%'")
271 276
 	}
272
-	if caseids != "" {
273
-		dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
277
+
278
+	if courseid != "" {
279
+		dao.And("course_id=?", courseid)
280
+	} else {
281
+		if caseids != "" {
282
+			dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
283
+		}
274 284
 	}
275 285
 	err := dao.Desc("create_date").Limit(pageSize, (page-1)*pageSize).Find(&courses)
276 286
 	return courses, err
277 287
 }
278 288
 
279 289
 // GetCourseScheduleCount 获取排课记录数
280
-func (m *CourseDAO) GetCourseScheduleCount(name, caseids, date string) (int, error) {
290
+func (m *CourseDAO) GetCourseScheduleCount(name, caseids, courseid, date string) (int, error) {
281 291
 	var courses []model.TaCourse
282 292
 	dao := m.db.Where("status=?", STATUS_UNPUBLISH).And("schedule_num<course_num").And("'" + date + "' BETWEEN begin_date and end_date")
283 293
 	if name != "" {
284 294
 		dao.And("course_name like '%" + name + "%'")
285 295
 	}
286
-	if caseids != "" {
287
-		dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
296
+	if courseid != "" {
297
+		dao.And("course_id=?", courseid)
298
+	} else {
299
+		if caseids != "" {
300
+			dao.And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
301
+		}
288 302
 	}
289 303
 	err := dao.Find(&courses)
290 304
 	return len(courses), err
@@ -452,6 +466,7 @@ func (m *CourseDAO) SaveCourseOfCustomer(course *model.TaCustomerCourse, details
452 466
 // CustomerCourse 客户课程信息
453 467
 type CustomerCourse struct {
454 468
 	model.TaCustomerCourse `xorm:"extends"`
469
+	CourseImg              string
455 470
 	QrCodeString           string
456 471
 	OrdersNo               string
457 472
 	Details                []model.TaCustomerCourseDetail
@@ -460,7 +475,8 @@ type CustomerCourse struct {
460 475
 // GetCustomerCourse 获取我的课程信息
461 476
 func (m *CourseDAO) GetCustomerCourse(custID string, page, pageSize int) ([]CustomerCourse, error) {
462 477
 	var courses []CustomerCourse
463
-	sql := `select a.*,a.customer_course_id as qr_code_string,b.orders_no from ta_customer_course a 
478
+	sql := `select a.*,a.customer_course_id as qr_code_string,b.orders_no,c.course_img from ta_customer_course a 
479
+	inner join ta_course c on a.course_id=c.course_id
464 480
 	left join ta_course_orders b on a.source_id=b.orders_id
465 481
 	 where a.status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.customer_id='` + custID + `'`
466 482
 	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
@@ -498,7 +514,8 @@ func (m *CourseDAO) GetCustomerCourseDetail(customerCourseID string) ([]model.Ta
498 514
 // GetCustomerCourseByID 获取我的课程信息明细
499 515
 func (m *CourseDAO) GetCustomerCourseByID(id string) (*CustomerCourse, error) {
500 516
 	var courses []CustomerCourse
501
-	sql := `select a.*,a.customer_course_id as qr_code_string,b.orders_no from ta_customer_course a 
517
+	sql := `select a.*,a.customer_course_id as qr_code_string,b.orders_no,c.course_img from ta_customer_course a 
518
+	inner join ta_course c on a.course_id=c.course_id
502 519
 	left join ta_course_orders b on a.source_id=b.orders_id
503 520
 	 where a.status>` + strconv.Itoa(models.STATUS_DEL) + ` and a.customer_course_id='` + id + `'`
504 521
 

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

@@ -17,7 +17,8 @@ func (m *CourseDAO) SaveCourseOrder(order *model.TaCourseOrders) error {
17 17
 	}
18 18
 
19 19
 	// 当前订单号的随机方式 = 时间 + 个人ID
20
-	order.OrdersNo = "C-" + time.Now().Local().Format("20060102150405") + "-" + strings.Join(utils.GUIID2IntString(order.CustomerId), "")
20
+	ordersno := "C-" + time.Now().Local().Format("20060102150405") + "-" + strings.Join(utils.GUIID2IntString(order.CustomerId), "")
21
+	order.OrdersNo = string([]byte(ordersno)[:32])
21 22
 	order.CreateDate = time.Now()
22 23
 	_, err := m.db.Insert(order)
23 24
 	return err

+ 3
- 0
models/customer/account.go Näytä tiedosto

@@ -73,6 +73,9 @@ func (m *CustomerDAO) InsertAccountRecords(rec *model.TaAccountChange) error {
73 73
 
74 74
 		accAmount -= moenyCheng
75 75
 		accPoints -= points
76
+	} else {
77
+		accAmount += moenyCheng
78
+		accPoints += points
76 79
 	}
77 80
 
78 81
 	// 账户不能为负

+ 34
- 0
models/customer/customer.go Näytä tiedosto

@@ -110,6 +110,31 @@ func (m *CustomerDAO) GetCustWithWXByID(custID string) (*CustWithWX, error) {
110 110
 	return &cust, nil
111 111
 }
112 112
 
113
+// GetCustWithWXByOpenID 根据openid获取用户信息
114
+func (m *CustomerDAO) GetCustWithWXByOpenID(openid string) (*CustWithWX, error) {
115
+	if openid == "" {
116
+		return nil, errors.New("获取客户信息失败")
117
+	}
118
+
119
+	cust := CustWithWX{}
120
+	query := `
121
+	SELECT a.*, b.*,b.user_id as map_user
122
+	FROM
123
+		ta_user_mapping a
124
+	LEFT JOIN ta_customer b ON a.user_id = b.customer_id
125
+			AND a.user_type = '` + models.USERMAP_CUSTOMER + `'
126
+			AND a.account_type = '` + models.ACCMAP_WECHAT + `'
127
+		WHERE
128
+			a.openid = ?
129
+	`
130
+
131
+	if _, err := m.db.SQL(query, openid).Get(&cust); err != nil {
132
+		return nil, err
133
+	}
134
+
135
+	return &cust, nil
136
+}
137
+
113 138
 // GetCustomerByPhone 依据手机号获取客户信息
114 139
 func (m *CustomerDAO) GetCustomerByPhone(phone string) (*model.TaCustomer, error) {
115 140
 	custs := []model.TaCustomer{}
@@ -141,6 +166,15 @@ func (m *CustomerDAO) UpdateUserMapping(userMap *model.TaUserMapping, cols []str
141 166
 	return err
142 167
 }
143 168
 
169
+// UpdateCustomer 更新用户信息
170
+func (m *CustomerDAO) UpdateCustomer(customer *model.TaCustomer, cols []string) error {
171
+	if customer.CustomerId == "" {
172
+		return errors.New("用户信息不存在")
173
+	}
174
+	_, err := m.db.Where("customer_id=?", customer.CustomerId).Cols(cols...).Update(customer)
175
+	return err
176
+}
177
+
144 178
 // GetCaseByID 获取案场
145 179
 // func (m *CustomerDAO) GetCaseByID(caseID string) (*model.SysCase, error) {
146 180
 // 	if caseID == "" {

+ 6
- 0
models/goods/goods.go Näytä tiedosto

@@ -93,6 +93,12 @@ func (m *GoodsDAO) GetGoodsListOfCase(caseID string) ([]GoodsWithSpec, error) {
93 93
 	}
94 94
 
95 95
 	for inx, goods := range goodsList {
96
+		imgs, err := m.GetGoodsImgByGoodsID(goods.GoodsId)
97
+		if err != nil {
98
+			return nil, err
99
+		}
100
+		goodsList[inx].Images = imgs
101
+
96 102
 		specs, err := m.GetSpecWithPrice(goods.GoodsId)
97 103
 		if err != nil {
98 104
 			return nil, err

+ 20
- 11
models/goods/orders.go Näytä tiedosto

@@ -46,8 +46,8 @@ func (m *GoodsDAO) SaveOrders(order *model.TaGoodsOrders) error {
46 46
 	order.CouponAmount = "0"
47 47
 
48 48
 	// 当前订单号的随机方式 = 时间 + 个人ID
49
-	order.OrdersNo = "G-" + time.Now().Local().Format("20060102150405") + "-" + strings.Join(utils.GUIID2IntString(order.UserId), "")
50
-
49
+	ordersno := "G-" + time.Now().Local().Format("20060102150405") + "-" + strings.Join(utils.GUIID2IntString(order.UserId), "")
50
+	order.OrdersNo = string([]byte(ordersno)[:32])
51 51
 	if _, err := m.db.Insert(order); err != nil {
52 52
 		utils.LogError("保存订单主记录失败: " + err.Error())
53 53
 
@@ -126,28 +126,28 @@ func (m *GoodsDAO) getCaseByID(caseID string) (*model.SysCase, error) {
126 126
 func (m *GoodsDAO) GetOrdersByCaseID(caseID, userType string, makeStatus []string, orderDate []time.Time, limit []int) ([]OrdersWithGoods, int64, error) {
127 127
 	var orderList []OrdersWithGoods
128 128
 
129
-	query := "select * from ta_goods_orders where case_id = ? and status = ?"
129
+	query := "select a.*,b.area_icon,b.area_icon_white from ta_goods_orders a inner join sys_case_area b on a.area_id=b.area_id where a.case_id = ? and a.status = ?"
130 130
 
131 131
 	// 制作状态
132 132
 	if makeStatus != nil && len(makeStatus) > 0 {
133
-		query += ` and make_status in ('` + strings.Join(makeStatus, "','") + `')`
133
+		query += ` and a.make_status in ('` + strings.Join(makeStatus, "','") + `')`
134 134
 	}
135 135
 
136 136
 	// 用户类型
137 137
 	if userType != "" {
138
-		query += ` and user_type = '` + userType + `'`
138
+		query += ` and a.user_type = '` + userType + `'`
139 139
 	}
140 140
 
141 141
 	// 订单起始时间
142 142
 	if orderDate != nil && len(orderDate) > 0 {
143
-		query += ` and DATE_FORMAT(create_date, '%Y-%m-%d %H:%i') >= '` + orderDate[0].Format("2006-01-02 15:04") + `'`
143
+		query += ` and DATE_FORMAT(a.create_date, '%Y-%m-%d %H:%i') >= '` + orderDate[0].Format("2006-01-02 15:04") + `'`
144 144
 
145 145
 		if len(orderDate) > 1 {
146
-			query += ` and DATE_FORMAT(create_date, '%Y-%m-%d %H:%i') <= '` + orderDate[1].Format("2006-01-02 15:04") + `'`
146
+			query += ` and DATE_FORMAT(a.create_date, '%Y-%m-%d %H:%i') <= '` + orderDate[1].Format("2006-01-02 15:04") + `'`
147 147
 		}
148 148
 	}
149 149
 
150
-	query += " order by create_date asc"
150
+	query += " order by a.create_date asc"
151 151
 
152 152
 	var cnt int64
153 153
 	if limit != nil && len(limit) > 1 {
@@ -189,7 +189,7 @@ func (m *GoodsDAO) GetOrdersByRecord(recordid string) ([]OrdersWithGoods, error)
189 189
 	sql := `select a.*, c.case_name from ta_goods_orders a inner join sys_case_record b on a.case_id=b.case_id and date_format(a.create_date,'%Y-%m')=b.month
190 190
 	inner join sys_case c on a.case_id=c.case_id
191 191
 	where b.record_id='` + recordid +
192
-		`' and a.user_type='` + USERTPE_SALES + `' and b.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
192
+		`' and a.user_type != '` + USERTYPE_CUSTOMER + `' and b.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
193 193
 	err := m.db.Sql(sql).Find(&orderList)
194 194
 	if err != nil {
195 195
 		return nil, err
@@ -210,7 +210,7 @@ func (m *GoodsDAO) GetCustomerOrders(custID string, page, pageSize int) ([]Order
210 210
 	sql := `select a.*, c.case_name from ta_goods_orders a 
211 211
 	inner join sys_case c on a.case_id=c.case_id
212 212
 	where a.user_id='` + custID +
213
-		`' and a.user_type='` + USERTYPE_CUSTOMER + `' and c.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
213
+		`' and c.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
214 214
 	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
215 215
 	err := m.db.Sql(sql).Find(&orderList)
216 216
 	if err != nil {
@@ -232,7 +232,7 @@ func (m *GoodsDAO) GetCustomerOrdersCount(custID string) (int, error) {
232 232
 	sql := `select a.*, c.case_name from ta_goods_orders a 
233 233
 	inner join sys_case c on a.case_id=c.case_id
234 234
 	where a.user_id='` + custID +
235
-		`' and a.user_type='` + USERTYPE_CUSTOMER + `' and c.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
235
+		`' and c.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` and a.status=` + strconv.Itoa(models.STATUS_NORMAL)
236 236
 	err := m.db.Sql(sql).Find(&orderList)
237 237
 	if err != nil {
238 238
 		return 0, err
@@ -253,3 +253,12 @@ func (m *GoodsDAO) GetMonthOrdersCountByCase(caseid string) (int64, error) {
253 253
 	total, err := m.db.Where("case_id = ?", caseid).And("status>"+strconv.Itoa(models.STATUS_DEL)).And("date_format(create_date,'%Y-%m')=date_format(NOW(),'%Y-%m')").SumInt(order, "orders_num")
254 254
 	return total, err
255 255
 }
256
+
257
+// UpdateOrdersMake 更新订单制作状态
258
+func (m *GoodsDAO) UpdateOrdersMake(orders model.TaGoodsOrders) error {
259
+	cols := []string{
260
+		"make_status",
261
+	}
262
+	_, err := m.db.Cols(cols...).Where("orders_id=?", orders.OrdersId).Update(orders)
263
+	return err
264
+}

+ 2
- 0
models/goods/types.go Näytä tiedosto

@@ -42,5 +42,7 @@ type DetailWithType struct {
42 42
 type OrdersWithGoods struct {
43 43
 	model.TaGoodsOrders `xorm:"extends"`
44 44
 	CaseName            string
45
+	AreaIcon            string
46
+	AreaIconWhite       string
45 47
 	Goods               []DetailWithType
46 48
 }

+ 238
- 8
models/gymcard/gymcard.go Näytä tiedosto

@@ -24,9 +24,36 @@ func NewGymcardDAO(ctx *utils.Context) *GymcardDAO {
24 24
 		db:  ctx.DB,
25 25
 	}
26 26
 }
27
-func (m *GymcardDAO) GetGymcard(caseid string, page, pageSize int) ([]model.TaGymCard, error) {
28
-	var gymcard []model.TaGymCard
29
-	sql := `select a.* from ta_gym_card a
27
+
28
+type CustomerGym struct {
29
+	model.TaCustomerGym `xorm:"extends"`
30
+	CardImageUrl        string
31
+	CardShareInfo       string
32
+	CardUseInstruction  string
33
+	CardUseRule         string
34
+}
35
+
36
+type Gymcard struct {
37
+	model.TaGymCard    `xorm:"extends"`
38
+	CardImageUrl       string
39
+	CardShareInfo      string
40
+	CardUseInstruction string
41
+	CardUseRule        string
42
+}
43
+
44
+// GetGymcard 根据案场id获取游泳健身卡列表
45
+func (m *GymcardDAO) GetGymcard(caseid string, page, pageSize int) ([]Gymcard, error) {
46
+	var gymcard []Gymcard
47
+	sql := `SELECT
48
+	a.*,
49
+	b.card_image_url,
50
+	c.card_share_info,
51
+	c.card_use_instruction,
52
+	c.card_use_rule
53
+FROM
54
+	ta_gym_card a
55
+	INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
56
+	INNER JOIN ta_card_share c ON a.gym_card_id = c.gym_card_id
30 57
 	where a.case_id in('` + strings.Replace(caseid, ",", "','", -1) + `')
31 58
 	and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
32 59
 	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
@@ -34,9 +61,41 @@ func (m *GymcardDAO) GetGymcard(caseid string, page, pageSize int) ([]model.TaGy
34 61
 	return gymcard, err
35 62
 }
36 63
 
37
-func (m *GymcardDAO) GetGymcardById(gymcardId string) (*model.TaGymCard, error) {
38
-	var gymcard []model.TaGymCard
39
-	err := m.db.Where("gym_card_id=?", gymcardId).And("status > ?", models.STATUS_DEL).Find(&gymcard)
64
+// GetGymcardCount 根据案场id获取游泳健身卡数量
65
+func (m *GymcardDAO) GetGymcardCount(caseid string) (int, error) {
66
+	var gymcard []Gymcard
67
+	sql := `SELECT
68
+	a.*,
69
+	b.card_image_url,
70
+	c.card_share_info,
71
+	c.card_use_instruction,
72
+	c.card_use_rule
73
+FROM
74
+	ta_gym_card a
75
+	INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
76
+	INNER JOIN ta_card_share c ON a.gym_card_id = c.gym_card_id
77
+	where a.case_id in('` + strings.Replace(caseid, ",", "','", -1) + `')
78
+	and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
79
+	err := m.db.Sql(sql).Find(&gymcard)
80
+	return len(gymcard), err
81
+}
82
+
83
+// GetGymcardById 根据id获取游泳健身卡详情
84
+func (m *GymcardDAO) GetGymcardById(gymcardId string) (*Gymcard, error) {
85
+	var gymcard []Gymcard
86
+	sql := `SELECT
87
+	a.*,
88
+	b.card_image_url,
89
+	c.card_share_info,
90
+	c.card_use_instruction,
91
+	c.card_use_rule
92
+FROM
93
+	ta_gym_card a
94
+	INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
95
+	INNER JOIN ta_card_share c ON a.gym_card_id = c.gym_card_id
96
+	where a.gym_card_id = '` + gymcardId + `'
97
+	and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
98
+	err := m.db.Sql(sql).Find(&gymcard)
40 99
 	if err != nil {
41 100
 		return nil, err
42 101
 	}
@@ -46,16 +105,43 @@ func (m *GymcardDAO) GetGymcardById(gymcardId string) (*model.TaGymCard, error)
46 105
 	return nil, nil
47 106
 }
48 107
 
49
-func (m *GymcardDAO) AddGymCard(gymcard model.TaGymCard) (*model.TaGymCard, error) {
108
+// AddGymcard 新增游泳健身卡
109
+func (m *GymcardDAO) AddGymcard(gymcard model.TaGymCard) (model.TaGymCard, error) {
50 110
 	gymcard.GymCardId = utils.GetGUID()
51 111
 	gymcard.SentCount = 0
52 112
 	gymcard.UsedCount = 0
53 113
 	gymcard.Status = models.STATUS_NORMAL
54 114
 	gymcard.CreateDate = time.Now()
55 115
 	_, err := m.db.Insert(gymcard)
56
-	return &gymcard, err
116
+	return gymcard, err
117
+}
118
+
119
+// AddGymcardImg 新增游泳健身卡图片
120
+func (m *GymcardDAO) AddGymcardImg(gymcardId, imgUrl string) error {
121
+	var cardImg model.TaCardImage
122
+	cardImg.CardImageId = utils.GetGUID()
123
+	cardImg.CardImageUrl = imgUrl
124
+	cardImg.GymCardId = gymcardId
125
+	cardImg.Sort = 1
126
+	cardImg.Status = models.STATUS_NORMAL
127
+	_, err := m.db.Insert(cardImg)
128
+	return err
129
+}
130
+
131
+// AddGymcardShare 新增游泳健身卡分享信息
132
+func (m *GymcardDAO) AddGymcardShare(gymcardId, cardShareInfo, cardUseRule, cardUseInstraction string) error {
133
+	var cardShare model.TaCardShare
134
+	cardShare.CardShareId = utils.GetGUID()
135
+	cardShare.GymCardId = gymcardId
136
+	cardShare.CardShareInfo = cardShareInfo
137
+	cardShare.CardUseInstruction = cardUseInstraction
138
+	cardShare.CardUseRule = cardUseRule
139
+	cardShare.Status = models.STATUS_NORMAL
140
+	_, err := m.db.Insert(cardShare)
141
+	return err
57 142
 }
58 143
 
144
+// DeleteGymcard 删除游泳健身卡
59 145
 func (m *GymcardDAO) DeleteGymcard(gymcardId string) error {
60 146
 	var gymcard = model.TaGymCard{
61 147
 		GymCardId: gymcardId,
@@ -68,6 +154,7 @@ func (m *GymcardDAO) DeleteGymcard(gymcardId string) error {
68 154
 	return err
69 155
 }
70 156
 
157
+// DeleteCardImg 删除健身卡图片
71 158
 func (m *GymcardDAO) DeleteCardImg(gymcardId string) error {
72 159
 	var cardImg = model.TaCardImage{
73 160
 		GymCardId: gymcardId,
@@ -80,3 +167,146 @@ func (m *GymcardDAO) DeleteCardImg(gymcardId string) error {
80 167
 	return err
81 168
 
82 169
 }
170
+
171
+// DeleteCardImg 删除健身卡分享信息
172
+func (m *GymcardDAO) DeleteCardShare(gymcardId string) error {
173
+	var cardShare = model.TaCardShare{
174
+		GymCardId: gymcardId,
175
+		Status:    models.STATUS_DEL,
176
+	}
177
+	var cols = []string{
178
+		"status",
179
+	}
180
+	_, err := m.db.Cols(cols...).Where("gym_card_id = ?", cardShare.GymCardId).Update(cardShare)
181
+	return err
182
+}
183
+
184
+// EditGymcardImg 修改健身卡图片
185
+func (m *GymcardDAO) EditGymcardImg(gymcardId, imgUrl string) error {
186
+	var cardImg = model.TaCardImage{
187
+		GymCardId:    gymcardId,
188
+		CardImageUrl: imgUrl,
189
+	}
190
+	var cols = []string{
191
+		"img_url",
192
+	}
193
+	_, err := m.db.Cols(cols...).Where("gym_card_id = ?", cardImg.GymCardId).Update(cardImg)
194
+	return err
195
+}
196
+
197
+// EditGymcardShare 修改健身卡分享信息
198
+func (m *GymcardDAO) EditGymcardShare(gymcardId, cardShareInfo, cardUseRule, cardUseInstraction string) error {
199
+	var cardShare = model.TaCardShare{
200
+		GymCardId:          gymcardId,
201
+		CardShareInfo:      cardShareInfo,
202
+		CardUseRule:        cardUseRule,
203
+		CardUseInstruction: cardUseInstraction,
204
+	}
205
+	var cols = []string{
206
+		"card_share_info",
207
+		"card_use_rule",
208
+		"card_use_instruction",
209
+	}
210
+	_, err := m.db.Cols(cols...).Where("gym_card_id = ?", cardShare.GymCardId).Update(cardShare)
211
+	return err
212
+}
213
+
214
+// SendGymcardToCustomer 新增用户健身卡
215
+func (m *GymcardDAO) SendGymcardToCustomer(gymcard *model.TaGymCard, customerId string) (*model.TaCustomerGym, error) {
216
+	var customerGym model.TaCustomerGym
217
+	customerGym.CustomerGymId = utils.GetGUID()
218
+	customerGym.CaseId = gymcard.CaseId
219
+	customerGym.CustomerGymName = gymcard.GymCardName
220
+	customerGym.CustomerId = customerId
221
+	customerGym.EndDate = gymcard.EndDate
222
+	customerGym.GymCardId = gymcard.GymCardId
223
+	customerGym.GymType = gymcard.GymTypeId
224
+	customerGym.OrgId = gymcard.OrgId
225
+	customerGym.ReceiveDate = time.Now()
226
+	customerGym.StartDate = gymcard.StartDate
227
+	customerGym.Status = models.STATUS_NORMAL
228
+	_, err := m.db.Insert(customerGym)
229
+	return &customerGym, err
230
+}
231
+
232
+// UpdateCustomerGym 修改用户卡
233
+func (m *GymcardDAO) UpdateCustomerGym(customerGym model.TaCustomerGym) error {
234
+	var cols = []string{
235
+		"start_date",
236
+		"end_date",
237
+		"status",
238
+	}
239
+	_, err := m.db.Cols(cols...).Where("customer_gym_id =?", customerGym.CustomerGymId).Update(customerGym)
240
+	return err
241
+}
242
+
243
+// AddGymcardUsage 新增用户健身卡使用记录
244
+func (m *GymcardDAO) AddGymcardUsage(customerGym model.TaCustomerGym) (*model.TaGymCardUsage, error) {
245
+	var gymcardUsage model.TaGymCardUsage
246
+	gymcardUsage.CustomerGymId = customerGym.CustomerGymId
247
+	gymcardUsage.GymCardUsageId = utils.GetGUID()
248
+	gymcardUsage.UseCaseId = customerGym.CaseId
249
+	gymcardUsage.UseDate = time.Now()
250
+	gymcardUsage.Status = models.STATUS_NORMAL
251
+	_, err := m.db.Insert(gymcardUsage)
252
+	return &gymcardUsage, err
253
+}
254
+
255
+// GetCustomerGymByCustomerId 通过用户id获取用户所有游泳健身卡
256
+func (m *GymcardDAO) GetCustomerGymByCustomerId(customerId string, page, pageSize int) ([]CustomerGym, error) {
257
+	var customerGym []CustomerGym
258
+	sql := `SELECT
259
+	a.*,
260
+	b.card_image_url,
261
+	c.card_share_info,
262
+	c.card_use_instruction,
263
+	c.card_use_rule
264
+FROM
265
+	ta_customer_gym a
266
+INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
267
+INNER JOIN ta_card_share C oN a.gym_card_id = c.gym_card_id
268
+WHERE
269
+	a.customer_id = '` + customerId + `' and a.status >` + strconv.Itoa(models.STATUS_DEL)
270
+	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
271
+	err := m.db.Sql(sql).Find(&customerGym)
272
+	return customerGym, err
273
+}
274
+
275
+// GetCustomerGymCountByCustomerId 通过用户id获取用户所有游泳健身卡数量
276
+func (m *GymcardDAO) GetCustomerGymCountByCustomerId(customerId string) (int, error) {
277
+	var customerGym []CustomerGym
278
+	sql := `SELECT
279
+	a.*,
280
+	b.card_image_url,
281
+	c.card_share_info,
282
+	c.card_use_instruction,
283
+	c.card_use_rule
284
+FROM
285
+	ta_customer_gym a
286
+INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
287
+INNER JOIN ta_card_share C oN a.gym_card_id = c.gym_card_id
288
+WHERE
289
+	a.customer_id = '` + customerId + `' and a.status >` + strconv.Itoa(models.STATUS_DEL)
290
+	err := m.db.Sql(sql).Find(&customerGym)
291
+	return len(customerGym), err
292
+
293
+}
294
+
295
+// GetCustomerGymById 根据id获取用户健身卡详情
296
+func (m *GymcardDAO) GetCustomerGymById(customerCardId string) (CustomerGym, error) {
297
+	var customerGym []CustomerGym
298
+	sql := `SELECT
299
+	a.*,
300
+	b.card_image_url,
301
+	c.card_share_info,
302
+	c.card_use_instruction,
303
+	c.card_use_rule
304
+FROM
305
+	ta_customer_gym a
306
+INNER JOIN ta_card_image b ON a.gym_card_id = b.gym_card_id
307
+INNER JOIN ta_card_share C oN a.gym_card_id = c.gym_card_id
308
+WHERE
309
+	a.customer_gym_id = '` + customerCardId + `' and a.status >` + strconv.Itoa(models.STATUS_DEL)
310
+	err := m.db.Sql(sql).Find(&customerGym)
311
+	return customerGym[0], err
312
+}

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

@@ -3,7 +3,6 @@ package model
3 3
 type TaCardImage struct {
4 4
 	CardImageId  string `xorm:"not null pk VARCHAR(64)"`
5 5
 	GymCardId    string `xorm:"VARCHAR(64)"`
6
-	CardId       string `xorm:"VARCHAR(64)"`
7 6
 	CardImageUrl string `xorm:"TEXT"`
8 7
 	Status       int    `xorm:"SMALLINT(6)"`
9 8
 	Sort         int    `xorm:"INT(11)"`

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

@@ -3,7 +3,6 @@ package model
3 3
 type TaCardShare struct {
4 4
 	CardShareId        string `xorm:"not null pk VARCHAR(64)"`
5 5
 	GymCardId          string `xorm:"VARCHAR(64)"`
6
-	CardId             string `xorm:"VARCHAR(64)"`
7 6
 	CardShareInfo      string `xorm:"TEXT"`
8 7
 	CardUseRule        string `xorm:"TEXT"`
9 8
 	CardUseInstruction string `xorm:"TEXT"`

+ 2
- 1
models/model/ta_checkin_record.go Näytä tiedosto

@@ -17,6 +17,7 @@ type TaCheckinRecord struct {
17 17
    ActivityId    string    `xorm:"VARCHAR(64)"`  
18 18
    ActivityName  string    `xorm:"VARCHAR(64)"`  
19 19
    CreateDate    time.Time `xorm:"DATETIME"`     
20
-   Status        int       `xorm:"SMALLINT(6)"` 
20
+   Status        int       `xorm:"SMALLINT(6)"`
21
+   UserId        string    `xorm:"VARCHAR(64)"`
21 22
    
22 23
 }

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

@@ -13,7 +13,6 @@ type TaCustomerGym struct {
13 13
 	EndDate         time.Time `xorm:"DATETIME"`
14 14
 	Status          int       `xorm:"SMALLINT(6)"`
15 15
 	ReceiveDate     time.Time `xorm:"DATETIME"`
16
-	VerifyDate      time.Time `xorm:"DATETIME"`
17 16
 	GymType         string    `xorm:"VARCHAR(64)"`
18 17
 	CaseId          string    `xorm:"VARCHAR(64)"`
19 18
 	OrgId           string    `xorm:"VARCHAR(64)"`

+ 15
- 20
models/model/ta_gym_card.go Näytä tiedosto

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

+ 4
- 10
models/system/role.go Näytä tiedosto

@@ -26,29 +26,23 @@ func NewRoleDAO(ctx *utils.Context) *RoleDAO {
26 26
 }
27 27
 
28 28
 // GetRoleCount 获取角色总数
29
-func (m *RoleDAO) GetRoleCount(caseids, name, caseid string) (int, error) {
29
+func (m *RoleDAO) GetRoleCount(name string) (int, error) {
30 30
 	var roles []model.SysRole
31
-	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
31
+	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL))
32 32
 	if name != "" {
33 33
 		dao.And("role_name like '%" + name + "%'")
34 34
 	}
35
-	if caseid != "" {
36
-		dao.And("case_id =?", caseid)
37
-	}
38 35
 	err := dao.Find(&roles)
39 36
 	return len(roles), err
40 37
 }
41 38
 
42 39
 // GetRoleList 根据案场获取角色
43
-func (m *RoleDAO) GetRoleList(caseids, name, caseid string, page int, pageSize int) ([]model.SysRole, error) {
40
+func (m *RoleDAO) GetRoleList(name string, page int, pageSize int) ([]model.SysRole, error) {
44 41
 	var roles []model.SysRole
45
-	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')")
42
+	dao := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL))
46 43
 	if name != "" {
47 44
 		dao.And("role_name like '%" + name + "%'")
48 45
 	}
49
-	if caseid != "" {
50
-		dao.And("case_id =?", caseid)
51
-	}
52 46
 	err := dao.Limit(pageSize, (page-1)*pageSize).Desc("create_date").Find(&roles)
53 47
 	return roles, err
54 48
 }

+ 2
- 2
models/system/user.go Näytä tiedosto

@@ -39,7 +39,7 @@ func (m *UserDAO) GetUserList(username, typeid, caseids string, page int, pageSi
39 39
 	sql := `select user.*,c.user_type_names from sys_user user left join (
40 40
 		select a.user_id,GROUP_CONCAT(b.type_name) as user_type_names from sys_user_type a
41 41
 		INNER join td_user_type b on a.type_id = b.type_id
42
-		group by a.user_id) c on user.user_id = c.user_id where 
42
+		group by a.user_id) c on user.user_id = c.user_id where user.user_id != '0' and
43 43
 		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user.user_id in 
44 44
 		(select user_id from sys_user_case where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')))`
45 45
 
@@ -58,7 +58,7 @@ func (m *UserDAO) GetUserCount(username, typeid, caseids string) (int, error) {
58 58
 	sql := `select user.*,c.user_type_names from sys_user user left join (
59 59
 		select a.user_id,GROUP_CONCAT(b.type_name) as user_type_names from sys_user_type a
60 60
 		INNER join td_user_type b on a.type_id = b.type_id
61
-		group by a.user_id) c on user.user_id = c.user_id where 
61
+		group by a.user_id) c on user.user_id = c.user_id where user.user_id != '0' and
62 62
 		(status> ` + strconv.Itoa(models.STATUS_DEL) + ` and user_name like '%` + username + `%' and user.user_id in 
63 63
 		(select user_id from sys_user_case where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')))`
64 64
 

+ 9
- 8
models/verify/verify.go Näytä tiedosto

@@ -4,6 +4,7 @@ import (
4 4
 	"spaceofcheng/services/models/model"
5 5
 	"spaceofcheng/services/utils"
6 6
 	"strconv"
7
+	"strings"
7 8
 
8 9
 	"github.com/go-xorm/xorm"
9 10
 )
@@ -44,7 +45,7 @@ func (m *VerifyDAO) GetCustomerCourseDetailById(id string) (*model.TaCustomerCou
44 45
 }
45 46
 
46 47
 // GetCustomerCourseList 根据我的课程id获取我的课程详情
47
-func (m *VerifyDAO) GetCustomerCourseList(customerCourseId, caseid string, page int, pageSize int) ([]MyCourse, error) {
48
+func (m *VerifyDAO) GetCustomerCourseList(customerCourseId, caseids string, page int, pageSize int) ([]MyCourse, error) {
48 49
 	var courseList []MyCourse
49 50
 	sql := `SELECT
50 51
 	a.*,
@@ -61,14 +62,14 @@ func (m *VerifyDAO) GetCustomerCourseList(customerCourseId, caseid string, page
61 62
 	LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
62 63
 	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
63 64
 	AND a.customer_course_id = '` + customerCourseId + `'
64
-	and b.case_id = '` + caseid + `'`
65
+	and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
65 66
 	sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
66 67
 	err := m.db.Sql(sql).Find(&courseList)
67 68
 	return courseList, err
68 69
 }
69 70
 
70 71
 // GetCustomerCourseListCount 根据我的课程id获取我的课程详情数量
71
-func (m *VerifyDAO) GetCustomerCourseListCount(customerCourseId, caseid string) (int, error) {
72
+func (m *VerifyDAO) GetCustomerCourseListCount(customerCourseId, caseids string) (int, error) {
72 73
 	var courseList []MyCourse
73 74
 	sql := `SELECT
74 75
 	a.*,
@@ -82,7 +83,7 @@ func (m *VerifyDAO) GetCustomerCourseListCount(customerCourseId, caseid string)
82 83
 	INNER JOIN sys_case d ON d.case_id = a.case_id
83 84
 	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
84 85
 	AND a.customer_course_id = '` + customerCourseId + `'
85
-	and b.case_id = '` + caseid + `'`
86
+	and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
86 87
 	err := m.db.Sql(sql).Find(&courseList)
87 88
 	return len(courseList), err
88 89
 }
@@ -99,7 +100,7 @@ func (m *VerifyDAO) UpdateCustomerCourseDetail(customerCourse *model.TaCustomerC
99 100
 }
100 101
 
101 102
 // GetCustomerCourseListByTel 根据客户电话获取我的课程详情
102
-func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseid string, page, pageSize int) ([]MyCourse, error) {
103
+func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseids string, page, pageSize int) ([]MyCourse, error) {
103 104
 	var courseList []MyCourse
104 105
 	sql := `SELECT
105 106
 	a.*,
@@ -117,7 +118,7 @@ func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseid string, page, pageSiz
117 118
 	LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
118 119
 	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
119 120
 	AND e.phone = '` + tel + `'
120
-	and b.case_id='` + caseid + `'`
121
+	and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
121 122
 	sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
122 123
 
123 124
 	err := m.db.Sql(sql).Find(&courseList)
@@ -125,7 +126,7 @@ func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseid string, page, pageSiz
125 126
 }
126 127
 
127 128
 // GetCustomerCourseListByTelCount 根据客户电话获取我的课程详情数量
128
-func (m *VerifyDAO) GetCustomerCourseListByTelCount(tel, caseid string) (int, error) {
129
+func (m *VerifyDAO) GetCustomerCourseListByTelCount(tel, caseids string) (int, error) {
129 130
 	var courseList []MyCourse
130 131
 	sql := `SELECT
131 132
 	a.*,
@@ -140,7 +141,7 @@ FROM
140 141
 	INNER JOIN ta_customer e ON b.customer_id = e.customer_id
141 142
 	WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
142 143
 	AND e.phone = '` + tel + `'
143
-	and b.case_id='` + caseid + `'`
144
+	and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
144 145
 	err := m.db.Sql(sql).Find(&courseList)
145 146
 	return len(courseList), err
146 147
 }

+ 4
- 0
routers/common.go Näytä tiedosto

@@ -121,6 +121,7 @@ func getCommonRoutes() beego.LinkNamespace {
121 121
 		beego.NSRouter("/case/info", &cases.CaseController{}, "post:SaveCase"),
122 122
 		beego.NSRouter("/case/info", &cases.CaseController{}, "put:SaveCase"),
123 123
 		beego.NSRouter("/case/info/:id", &cases.CaseController{}, "delete:DelCase"),
124
+		beego.NSRouter("/case/conf/:caseid", &cases.CaseController{}, "get:GetCaseConf"),
124 125
 		beego.NSRouter("/case/open/:caseid", &cases.CaseController{}, "put:OpenCaseCoffee"),
125 126
 		beego.NSRouter("/case/close/:caseid", &cases.CaseController{}, "put:CloseCaseCoffee"),
126 127
 
@@ -210,6 +211,9 @@ func getCommonRoutes() beego.LinkNamespace {
210 211
 		beego.NSRouter("/order/online/goods", &goods.GoodsController{}, "get:GetOnlineOrder"),
211 212
 		beego.NSRouter("/order/goods/record/:recordid", &goods.GoodsController{}, "get:GetOrdersByRecord"),
212 213
 
214
+		beego.NSRouter("/order/goods/finish/:id", &goods.GoodsController{}, "put:FinishMake"),
215
+		beego.NSRouter("/order/goods/cancel/:id", &goods.GoodsController{}, "put:CancelMake"),
216
+
213 217
 		// 文件
214 218
 		beego.NSRouter("/file", &controllers.BaseController{}, "post:FileUpload"),
215 219
 

+ 8
- 6
service/cases/key.go Näytä tiedosto

@@ -14,14 +14,16 @@ import (
14 14
 func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[string]interface{}, error) {
15 15
 	cases := s.ctx.Get("cases").([]model.SysUserCase)
16 16
 	isdict := false
17
-	for _, value := range cases {
18
-		if caseid == value.CaseId {
19
-			isdict = true
17
+	if caseid != "" {
18
+		for _, value := range cases {
19
+			if caseid == value.CaseId {
20
+				isdict = true
21
+			}
20 22
 		}
21
-	}
22 23
 
23
-	if !isdict {
24
-		return nil, utils.LogError("您没有该案场的权限!")
24
+		if !isdict {
25
+			return nil, utils.LogError("您没有该案场的权限!")
26
+		}
25 27
 	}
26 28
 
27 29
 	if pageSize == 0 {

+ 1
- 1
service/cases/signin.go Näytä tiedosto

@@ -38,7 +38,7 @@ func (s *SigninServ) GetSigninWhere(selectType int,caseid string,page, pageSize
38 38
 	 if len(info) >0 {
39 39
 		total = len(info)
40 40
 	 }
41
-	
41
+
42 42
 	return map[string]interface{}{
43 43
 		"list":     info,
44 44
 		"pagesize": pageSize,

+ 19
- 8
service/course/course.go Näytä tiedosto

@@ -235,6 +235,15 @@ func (s *CourseServ) CoursePublic(courseid string) error {
235 235
 	if info.Status != course.STATUS_UNPUBLISH {
236 236
 		return utils.LogError("当前课程状态异常!请刷新后重试!")
237 237
 	}
238
+	// 获取课程已排课数量
239
+	num, err := s.dao.GetCourseDetailCount(courseid)
240
+	if err != nil {
241
+		utils.LogError("课程发布失败: " + err.Error())
242
+		return errors.New("课程发布失败")
243
+	}
244
+	if info.CourseNum > num {
245
+		return errors.New("请先进行排课,再发布课程!")
246
+	}
238 247
 	err = s.dao.CoursePublic(courseid)
239 248
 	if err != nil {
240 249
 		utils.LogError("课程发布失败: " + err.Error())
@@ -311,7 +320,7 @@ func (s *CourseServ) DelCourseImg(imgid string) error {
311 320
 }
312 321
 
313 322
 // GetCourseSchedule 获取课程排期
314
-func (s *CourseServ) GetCourseSchedule(name, caseids, date string, page, pageSize int) (map[string]interface{}, error) {
323
+func (s *CourseServ) GetCourseSchedule(name, caseids, courseid, date string, page, pageSize int) (map[string]interface{}, error) {
315 324
 	if pageSize == 0 {
316 325
 		pageSize = service.PAGENUM
317 326
 	}
@@ -321,12 +330,13 @@ func (s *CourseServ) GetCourseSchedule(name, caseids, date string, page, pageSiz
321 330
 	if date == "" {
322 331
 		return nil, utils.LogError("请先选择需要排课的日期!")
323 332
 	}
324
-	list, err := s.dao.GetCourseSchedule(name, caseids, date, page, pageSize)
333
+
334
+	list, err := s.dao.GetCourseSchedule(name, caseids, courseid, date, page, pageSize)
325 335
 	if err != nil {
326 336
 		utils.LogError("获取课程排期失败: " + err.Error())
327 337
 		return nil, errors.New("获取课程排期失败")
328 338
 	}
329
-	total, err := s.dao.GetCourseScheduleCount(name, caseids, date)
339
+	total, err := s.dao.GetCourseScheduleCount(name, caseids, courseid, date)
330 340
 	if err != nil {
331 341
 		utils.LogError("获取课程排期失败: " + err.Error())
332 342
 		return nil, errors.New("获取课程排期失败")
@@ -341,14 +351,14 @@ func (s *CourseServ) GetCourseSchedule(name, caseids, date string, page, pageSiz
341 351
 }
342 352
 
343 353
 // GetDetails 获取所有排课
344
-func (s *CourseServ) GetDetails(caseid, date string) ([]course.DetailInfo, error) {
345
-	if caseid == "" {
354
+func (s *CourseServ) GetDetails(caseid, date, courseid string) ([]course.DetailInfo, error) {
355
+	if courseid == "" && caseid == "" {
346 356
 		return nil, utils.LogError("请先选择案场!")
347 357
 	}
348 358
 	if date == "" {
349 359
 		return nil, utils.LogError("请选择需要查看的月份!")
350 360
 	}
351
-	details, err := s.dao.GetDetails(caseid, date)
361
+	details, err := s.dao.GetDetails(caseid, date, courseid)
352 362
 	if err != nil {
353 363
 		utils.LogError("获取排期信息失败: " + err.Error())
354 364
 		return nil, errors.New("获取排期信息失败")
@@ -507,7 +517,8 @@ func (s *CourseServ) GetCustomerCourse(page, pageSize int) (map[string]interface
507 517
 	if page == 0 {
508 518
 		page = 1
509 519
 	}
510
-	cust := s.ctx.Get("customer").(model.TaCustomer)
520
+	customer := s.ctx.Get("customer")
521
+	cust := customer.(model.TaCustomer)
511 522
 	list, err := s.dao.GetCustomerCourse(cust.CustomerId, page, pageSize)
512 523
 	if err != nil {
513 524
 		utils.LogError("获取课程信息失败: " + err.Error())
@@ -518,13 +529,13 @@ func (s *CourseServ) GetCustomerCourse(page, pageSize int) (map[string]interface
518 529
 		utils.LogError("获取课程信息失败: " + err.Error())
519 530
 		return nil, errors.New("获取课程信息失败")
520 531
 	}
521
-
522 532
 	return map[string]interface{}{
523 533
 		"list":     list,
524 534
 		"pagesize": pageSize,
525 535
 		"pagenum":  total,
526 536
 		"page":     page,
527 537
 	}, nil
538
+
528 539
 }
529 540
 
530 541
 // GetCustomerCourseByID 获取我的课程明细

+ 97
- 12
service/customer/customer.go Näytä tiedosto

@@ -47,6 +47,17 @@ func (s *CustomerServ) GetCustWithWXByID(custID string) (*customer.CustWithWX, e
47 47
 	return cust, nil
48 48
 }
49 49
 
50
+// GetCustUserByOpenID 根据openid获取用户信息
51
+func (s *CustomerServ) GetCustUserByOpenID(openid string) (*customer.CustWithWX, error) {
52
+	cust, err := s.dao.GetCustWithWXByOpenID(openid)
53
+	if err != nil {
54
+		utils.LogError(err.Error())
55
+		return nil, err
56
+	}
57
+
58
+	return cust, nil
59
+}
60
+
50 61
 // GetCustUserByID 获取用户信息(自定义内容)
51 62
 func (s *CustomerServ) GetCustUserByID(userID string) (*UserProfile, error) {
52 63
 	user, err := s.dao.GetUserByID(userID)
@@ -98,16 +109,33 @@ func (s *CustomerServ) BindWechatUser(userMap *model.TaUserMapping, phone string
98 109
 		}
99 110
 
100 111
 		wxInfo := wxInfoRaw.(map[string]interface{})
101
-		newCust, err := s.SaveNewCustomer(wxInfo, "", "", user.UserId)
112
+		// 更新用户手机号码信息及userid信息
113
+		openid := wxInfo["openid"].(string)
114
+		customer, err := s.dao.GetCustWithWXByOpenID(openid)
115
+		newCust := model.TaCustomer{
116
+			CustomerId: customer.CustomerId,
117
+			Phone:      user.Phone,
118
+			UserId:     user.UserId,
119
+		}
120
+		err = s.dao.UpdateCustomer(&newCust, []string{
121
+			"phone",
122
+			"user_id",
123
+		})
102 124
 		if err != nil {
103 125
 			utils.LogError(err.Error())
104 126
 			return nil, err
105 127
 		}
106
-		cust = newCust
107
-	}
108 128
 
109
-	if cust.Status != models.STATUS_NORMAL {
110
-		return nil, errors.New("用户状态不正确")
129
+		// newCust, err := s.SaveNewCustomer(wxInfo, "", "", user.Phone, user.UserId)
130
+		// if err != nil {
131
+		// 	utils.LogError(err.Error())
132
+		// 	return nil, err
133
+		// }
134
+		cust = &newCust
135
+	} else {
136
+		if cust.Status != models.STATUS_NORMAL {
137
+			return nil, errors.New("用户状态不正确")
138
+		}
111 139
 	}
112 140
 
113 141
 	// triggerRegiteEvent 触发注册事件
@@ -119,7 +147,8 @@ func (s *CustomerServ) BindWechatUser(userMap *model.TaUserMapping, phone string
119 147
 
120 148
 	// 更新用户映射信息
121 149
 	userMap.UserId = cust.CustomerId
122
-	if err := s.dao.UpdateUserMapping(userMap, []string{"user_id"}); err != nil {
150
+	userMap.UserType = models.USERMAP_USER
151
+	if err := s.dao.UpdateUserMapping(userMap, []string{"user_id", "user_type"}); err != nil {
123 152
 		utils.LogError("更新用户映射信息失败:" + err.Error())
124 153
 		return nil, errors.New("映射用户信息失败")
125 154
 	}
@@ -143,17 +172,69 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
143 172
 		}
144 173
 
145 174
 		wxInfo := wxInfoRaw.(map[string]interface{})
146
-		newCust, err := s.SaveNewCustomer(wxInfo, caseID, userID, "")
175
+
176
+		// 更新用户手机号码信息及userid信息
177
+		openid := wxInfo["openid"].(string)
178
+		customer, err := s.dao.GetCustWithWXByOpenID(openid)
179
+		newCust := model.TaCustomer{
180
+			CustomerId: customer.CustomerId,
181
+			Phone:      phone,
182
+		}
183
+		// 校验案场信息
184
+		if caseID != "" {
185
+			cs, err := s.casedao.GetCaseByID(caseID)
186
+			if err != nil {
187
+				utils.LogError(err.Error())
188
+				return nil, err
189
+			}
190
+
191
+			if cs == nil || cs.Status == models.STATUS_DEL {
192
+				return nil, errors.New("系统无该推荐案场")
193
+			}
194
+
195
+			newCust.OrgId = cs.OrgId
196
+			newCust.RecommendCase = cs.CaseId
197
+		}
198
+
199
+		// 校验推荐人
200
+		if userID != "" {
201
+			ar, err := s.dao.GetUserByID(userID)
202
+			if err != nil {
203
+				utils.LogError(err.Error())
204
+				return nil, err
205
+			}
206
+
207
+			if ar == nil || ar.Status == models.STATUS_DEL {
208
+				return nil, errors.New("系统无该推荐人")
209
+			}
210
+
211
+			newCust.OrgId = ar.OrgId
212
+			newCust.RecommendId = ar.UserId
213
+			newCust.RecommendName = ar.RealName
214
+		}
215
+
216
+		err = s.dao.UpdateCustomer(&newCust, []string{
217
+			"phone",
218
+			"recommend_id",
219
+			"recommend_case",
220
+			"recommend_name",
221
+		})
147 222
 		if err != nil {
148 223
 			utils.LogError(err.Error())
149 224
 			return nil, err
150 225
 		}
151 226
 
152
-		cust = newCust
153
-	}
227
+		// newCust, err := s.SaveNewCustomer(wxInfo, caseID, userID, phone, "")
228
+		// if err != nil {
229
+		// 	utils.LogError(err.Error())
230
+		// 	return nil, err
231
+		// }
154 232
 
155
-	if cust.Status != models.STATUS_NORMAL {
156
-		return nil, errors.New("用户状态不正确")
233
+		cust = &newCust
234
+	} else {
235
+		if cust.Status != models.STATUS_NORMAL {
236
+			return nil, errors.New("用户状态不正确")
237
+		}
157 238
 	}
158 239
 
159 240
 	// 如果客户ID 与映射表中一致, 说明已经绑定过了
@@ -175,7 +256,7 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
175 256
 }
176 257
 
177 258
 // SaveNewCustomer 新增客户
178
-func (s *CustomerServ) SaveNewCustomer(wxInfo map[string]interface{}, caseID, arID, userID string) (*model.TaCustomer, error) {
259
+func (s *CustomerServ) SaveNewCustomer(wxInfo map[string]interface{}, caseID, arID, phone, userID string) (*model.TaCustomer, error) {
179 260
 	if caseID == "" && arID == "" && userID == "" {
180 261
 		return nil, errors.New("新增信息失败, 无法确认人员类型")
181 262
 	}
@@ -190,11 +271,15 @@ func (s *CustomerServ) SaveNewCustomer(wxInfo map[string]interface{}, caseID, ar
190 271
 		sexInt = 1 // 默认男性
191 272
 	}
192 273
 
274
+	org := s.ctx.Get("org").(model.SysOrg)
275
+
193 276
 	cust := model.TaCustomer{
194 277
 		CustomerName: nickyName,
195 278
 		Name:         nickyName,
196 279
 		Sex:          sexInt,
197 280
 		Headimgurl:   headimgurl,
281
+		Phone:        phone,
282
+		OrgId:        org.OrgId,
198 283
 	}
199 284
 
200 285
 	// 校验案场信息

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

@@ -47,7 +47,7 @@ func (s *GoodsServ) GetListByCase(id string) ([]goods.GoodsWithSpec, error) {
47 47
 
48 48
 // GetGoodsListPageNavi 获取商品列表
49 49
 // 前端 - 非统计部分
50
-func (s *GoodsServ) GetGoodsListPageNavi(name, typeID, caseID string, page, pagesize int) ([]goods.GoodsWithSpec, int64, error) {
50
+func (s *GoodsServ) GetGoodsListPageNavi(name, typeID, caseids string, page, pagesize int) ([]goods.GoodsWithSpec, int64, error) {
51 51
 	if page < 1 {
52 52
 		page = 1
53 53
 	}
@@ -57,7 +57,7 @@ func (s *GoodsServ) GetGoodsListPageNavi(name, typeID, caseID string, page, page
57 57
 
58 58
 	offset := (page - 1) * pagesize
59 59
 
60
-	res, cnt, err := s.dao.GetGoodsListPageNavi(strings.ToLower(name), typeID, caseID, []int{pagesize, offset})
60
+	res, cnt, err := s.dao.GetGoodsListPageNavi(strings.ToLower(name), typeID, caseids, []int{pagesize, offset})
61 61
 	if err != nil {
62 62
 		utils.LogError("获取商品列表失败: " + err.Error())
63 63
 		return nil, 0, errors.New("获取列表失败, 请重试")

+ 20
- 0
service/goods/orders.go Näytä tiedosto

@@ -445,3 +445,23 @@ func (s *GoodsServ) GetCaseOrdersNum(caseid string) (map[string]interface{}, err
445 445
 		"monthtotal": monthtotal,
446 446
 	}, nil
447 447
 }
448
+
449
+// FinishMake 完成制作
450
+func (s *GoodsServ) FinishMake(id string) error {
451
+	var orders = model.TaGoodsOrders{
452
+		OrdersId:   id,
453
+		MakeStatus: goods.MAKESTATUS_FINISHED,
454
+	}
455
+	err := s.dao.UpdateOrdersMake(orders)
456
+	return err
457
+}
458
+
459
+// CancelMake 取消制作
460
+func (s *GoodsServ) CancelMake(id string) error {
461
+	var orders = model.TaGoodsOrders{
462
+		OrdersId:   id,
463
+		MakeStatus: goods.MAKESTATUS_CANCEL,
464
+	}
465
+	err := s.dao.UpdateOrdersMake(orders)
466
+	return err
467
+}

+ 110
- 0
service/gymcard/gymcard.go Näytä tiedosto

@@ -0,0 +1,110 @@
1
+package gymcard
2
+
3
+import (
4
+	"errors"
5
+	"spaceofcheng/services/models/gymcard"
6
+	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/service"
8
+	"spaceofcheng/services/utils"
9
+)
10
+
11
+// GymcardServ 系统处理
12
+type GymcardServ struct {
13
+	ctx *utils.Context
14
+	dao *gymcard.GymcardDAO
15
+}
16
+
17
+// NewGymcardServ 初始化
18
+func NewGymcardServ(ctx *utils.Context) *GymcardServ {
19
+	return &GymcardServ{
20
+		ctx: ctx,
21
+		dao: gymcard.NewGymcardDAO(ctx),
22
+	}
23
+}
24
+func (s *GymcardServ) GetGymcardList(caseid string, page, pageSize int) (map[string]interface{}, error) {
25
+	if pageSize == 0 {
26
+		pageSize = service.PAGENUM
27
+	}
28
+	gymcard, err := s.dao.GetGymcard(caseid, page, pageSize)
29
+	if err != nil {
30
+		utils.LogError("获取健身卡列表失败:" + err.Error())
31
+		return nil, errors.New("获取健身卡列表失败")
32
+	}
33
+	total, err := s.dao.GetGymcardCount(caseid)
34
+	if err != nil {
35
+		utils.LogError("获取健身卡列表失败:" + err.Error())
36
+		return nil, errors.New("获取健身卡列表失败")
37
+	}
38
+	return map[string]interface{}{
39
+		"list":     gymcard,
40
+		"pageSize": pageSize,
41
+		"pagenum":  total,
42
+		"page":     page,
43
+	}, nil
44
+}
45
+func (s *GymcardServ) GetCustomerGymBycustomerId(customerId string, page, pageSize int) (map[string]interface{}, error) {
46
+	if pageSize == 0 {
47
+		pageSize = service.PAGENUM
48
+	}
49
+	customerGym, err := s.dao.GetCustomerGymByCustomerId(customerId, page, pageSize)
50
+	if err != nil {
51
+		utils.LogError("获取健身卡列表失败:" + err.Error())
52
+		return nil, errors.New("获取健身卡列表失败")
53
+	}
54
+	total, err := s.dao.GetCustomerGymCountByCustomerId(customerId)
55
+	if err != nil {
56
+		utils.LogError("获取健身卡列表失败:" + err.Error())
57
+		return nil, errors.New("获取健身卡列表失败")
58
+	}
59
+	return map[string]interface{}{
60
+		"list":     customerGym,
61
+		"pageSize": pageSize,
62
+		"pagenum":  total,
63
+		"page":     page,
64
+	}, nil
65
+}
66
+func (s *GymcardServ) GetGymcardDetailByIdZ(gymcardId string) (*gymcard.Gymcard, error) {
67
+	gymcard, err := s.dao.GetGymcardById(gymcardId)
68
+	if err != nil {
69
+		utils.LogError("获取健身卡详情失败" + err.Error())
70
+		return nil, errors.New("获取健身卡详情失败")
71
+	}
72
+	return gymcard, nil
73
+}
74
+
75
+func (s *GymcardServ) SaveGymcard(newGym gymcard.Gymcard) (*gymcard.Gymcard, error) {
76
+	var newGymCard model.TaGymCard
77
+	var cardGym model.TaGymCard
78
+	var err error
79
+	if newGym.GymCardId == "" {
80
+		newGymCard = newGym.TaGymCard
81
+		cardGym, err = s.dao.AddGymcard(newGymCard)
82
+		err = s.dao.AddGymcardImg(newGym.GymCardId, newGym.CardImageUrl)
83
+		newGym.TaGymCard = cardGym
84
+		err = s.dao.AddGymcardShare(newGym.GymCardId, newGym.CardShareInfo, newGym.CardUseRule, newGym.CardUseInstruction)
85
+	} else {
86
+		err = s.dao.EditGymcardImg(newGym.GymCardId, newGym.CardImageUrl)
87
+		err = s.dao.EditGymcardShare(newGym.GymCardId, newGym.CardShareInfo, newGym.CardUseRule, newGym.CardUseInstruction)
88
+	}
89
+	if err != nil {
90
+		utils.LogError("保存健身卡信息失败" + err.Error())
91
+		return nil, errors.New("保存健身卡信息失败")
92
+	}
93
+	return &newGym, nil
94
+}
95
+
96
+func (s *GymcardServ) SendGymCardToUser(customerId, gymcardId string) (*model.TaCustomerGym, error) {
97
+	var customerGym *model.TaCustomerGym
98
+	gymCard, err := s.dao.GetGymcardById(gymcardId)
99
+	if err != nil {
100
+		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
101
+		return nil, errors.New("发送游泳健身卡给客户失败")
102
+	}
103
+	customerGym, err = s.dao.SendGymcardToCustomer(gymCard, customerId)
104
+	if err != nil {
105
+		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
106
+		return nil, errors.New("发送游泳健身卡给客户失败")
107
+	}
108
+	return customerGym, nil
109
+
110
+}

+ 2
- 0
service/message/cmscase.go Näytä tiedosto

@@ -136,6 +136,8 @@ func (s *MessageServ) SaveCmsCase(cmscase model.TaCmsCase, courseids, imgs, deta
136 136
 	// }
137 137
 
138 138
 	if cmscase.CmsCaseId == "" {
139
+		org := s.ctx.Get("org").(model.SysOrg)
140
+		cmscase.OrgId = org.OrgId
139 141
 		newInfo, err = s.dao.AddCmsCase(cmscase)
140 142
 	} else {
141 143
 		err = s.dao.UpdateCmsCase(cmscase)

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

@@ -75,6 +75,8 @@ func (s *MessageServ) GetCmsInfoByID(id string) (*model.TaCmsInfo, error) {
75 75
 // SaveCmsInfo 保存消息信息
76 76
 func (s *MessageServ) SaveCmsInfo(cmsinfo model.TaCmsInfo) (*model.TaCmsInfo, error) {
77 77
 	if cmsinfo.InfoId == "" {
78
+		org := s.ctx.Get("org").(model.SysOrg)
79
+		cmsinfo.OrgId = org.OrgId
78 80
 		newcmsinfo, err := s.dao.AddCmsInfo(cmsinfo)
79 81
 		if err != nil {
80 82
 			utils.LogError("保存信息失败: " + err.Error())

+ 59
- 4
service/sys.go Näytä tiedosto

@@ -4,8 +4,10 @@ import (
4 4
 	"encoding/json"
5 5
 	"errors"
6 6
 	"spaceofcheng/services/models"
7
+	"spaceofcheng/services/models/customer"
7 8
 	"spaceofcheng/services/models/model"
8 9
 	"spaceofcheng/services/utils"
10
+	"strconv"
9 11
 
10 12
 	"github.com/astaxie/beego"
11 13
 )
@@ -16,15 +18,17 @@ const (
16 18
 
17 19
 // SysServ 系统处理
18 20
 type SysServ struct {
19
-	ctx *utils.Context
20
-	dao *models.SysDAO
21
+	ctx         *utils.Context
22
+	dao         *models.SysDAO
23
+	customerdao *customer.CustomerDAO
21 24
 }
22 25
 
23 26
 // NewSysServ 初始化
24 27
 func NewSysServ(ctx *utils.Context) *SysServ {
25 28
 	return &SysServ{
26
-		ctx: ctx,
27
-		dao: models.NewSysDAO(ctx),
29
+		ctx:         ctx,
30
+		dao:         models.NewSysDAO(ctx),
31
+		customerdao: customer.NewCustomerDAO(ctx),
28 32
 	}
29 33
 }
30 34
 
@@ -68,6 +72,57 @@ func (s *SysServ) SetCustomer(id string) error {
68 72
 	return nil
69 73
 }
70 74
 
75
+// SaveNewCustomer 新增用户
76
+func (s *SysServ) SaveNewCustomer(wxInfo map[string]interface{}, userMap *model.TaUserMapping) (*model.TaCustomer, error) {
77
+	// 微信相关字段
78
+	nickyName := wxInfo["nickname"].(string)
79
+	sex := wxInfo["sex"].(string)
80
+	headimgurl := wxInfo["headimgurl"].(string)
81
+
82
+	sexInt, _ := strconv.Atoi(sex)
83
+	if sexInt == 0 {
84
+		sexInt = 1 // 默认男性
85
+	}
86
+
87
+	org := s.ctx.Get("org").(model.SysOrg)
88
+
89
+	cust := model.TaCustomer{
90
+		CustomerName: nickyName,
91
+		Name:         nickyName,
92
+		Sex:          sexInt,
93
+		Headimgurl:   headimgurl,
94
+		OrgId:        org.OrgId,
95
+	}
96
+
97
+	if err := s.customerdao.SaveCustomer(&cust); err != nil {
98
+		utils.LogError("更新客户信息失败: " + err.Error())
99
+		return nil, errors.New("更新客户信息失败")
100
+	}
101
+
102
+	account := new(model.TaCustomerAccount)
103
+	account.CustomerId = cust.CustomerId
104
+	account.CustomerName = cust.CustomerName
105
+	account.OrgId = cust.OrgId
106
+	account.Amount = "0"
107
+	account.Points = "0"
108
+	account.PayedAmount = "0"
109
+	account.PayedPoints = "0"
110
+
111
+	if err := s.customerdao.SaveAccount(account); err != nil {
112
+		utils.LogError("插入账户信息失败: " + err.Error())
113
+		return nil, errors.New("更新客户信息失败")
114
+	}
115
+
116
+	// 更新映射表信息
117
+	userMap.UserId = cust.CustomerId
118
+	if err := s.customerdao.UpdateUserMapping(userMap, []string{"user_id"}); err != nil {
119
+		utils.LogError("更新用户映射信息失败:" + err.Error())
120
+		return nil, errors.New("映射用户信息失败")
121
+	}
122
+
123
+	return &cust, nil
124
+}
125
+
71 126
 // CheckWechatUserMapping 校验并更新客户信息
72 127
 // 如果不存在, 则插入新数据
73 128
 func (s *SysServ) CheckWechatUserMapping(user map[string]interface{}) (*model.TaUserMapping, error) {

+ 3
- 3
service/system/role.go Näytä tiedosto

@@ -23,19 +23,19 @@ func NewRoleServ(ctx *utils.Context) *RoleServ {
23 23
 }
24 24
 
25 25
 // GetRoleList 获取Role列表
26
-func (s *RoleServ) GetRoleList(caseids, name, caseid string, page, pageSize int) (map[string]interface{}, error) {
26
+func (s *RoleServ) GetRoleList(name string, page, pageSize int) (map[string]interface{}, error) {
27 27
 	if pageSize == 0 {
28 28
 		pageSize = service.PAGENUM
29 29
 	}
30 30
 	if page == 0 {
31 31
 		page = 1
32 32
 	}
33
-	roles, err := s.dao.GetRoleList(caseids, name, caseid, page, pageSize)
33
+	roles, err := s.dao.GetRoleList(name, page, pageSize)
34 34
 	if err != nil {
35 35
 		utils.LogError("获取角色列表失败: " + err.Error())
36 36
 		return nil, errors.New("获取角色列表失败")
37 37
 	}
38
-	total, err := s.dao.GetRoleCount(caseids, name, caseid)
38
+	total, err := s.dao.GetRoleCount(name)
39 39
 	if err != nil {
40 40
 		utils.LogError("获取角色列表失败: " + err.Error())
41 41
 		return nil, errors.New("获取角色列表失败")

+ 41
- 6
service/user.go Näytä tiedosto

@@ -4,6 +4,7 @@ import (
4 4
 	"errors"
5 5
 	"spaceofcheng/services/models"
6 6
 	"spaceofcheng/services/models/cases"
7
+	"spaceofcheng/services/models/customer"
7 8
 	"spaceofcheng/services/models/model"
8 9
 	"spaceofcheng/services/models/system"
9 10
 	"spaceofcheng/services/utils"
@@ -14,17 +15,19 @@ import (
14 15
 
15 16
 // UserServ 系统处理
16 17
 type UserServ struct {
17
-	ctx     *utils.Context
18
-	dao     *system.UserDAO
19
-	casedao *cases.CaseDAO
18
+	ctx         *utils.Context
19
+	dao         *system.UserDAO
20
+	casedao     *cases.CaseDAO
21
+	customerdao *customer.CustomerDAO
20 22
 }
21 23
 
22 24
 // NewUserServ 初始化
23 25
 func NewUserServ(ctx *utils.Context) *UserServ {
24 26
 	return &UserServ{
25
-		ctx:     ctx,
26
-		dao:     system.NewUserDAO(ctx),
27
-		casedao: cases.NewCaseDAO(ctx),
27
+		ctx:         ctx,
28
+		dao:         system.NewUserDAO(ctx),
29
+		casedao:     cases.NewCaseDAO(ctx),
30
+		customerdao: customer.NewCustomerDAO(ctx),
28 31
 	}
29 32
 }
30 33
 
@@ -208,6 +211,38 @@ func (s *UserServ) SaveUser(user system.SysUserForm) (*model.SysUser, error) {
208 211
 		return nil, err
209 212
 	}
210 213
 	newUSer.Pwd = ""
214
+
215
+	// 保存用户后判断用户是否在客户表中,如果存在,更新
216
+	cust, err := s.customerdao.GetCustomerByPhone(newUSer.Phone)
217
+	if err != nil {
218
+		utils.LogError(err.Error())
219
+		return nil, err
220
+	}
221
+	if cust != nil {
222
+		cust.UserId = newUSer.UserId
223
+		err = s.customerdao.UpdateCustomer(cust, []string{
224
+			"user_id",
225
+		})
226
+		if err != nil {
227
+			utils.LogError(err.Error())
228
+			return nil, err
229
+		}
230
+		// 更新用户映射信息
231
+		customerMap, err := s.customerdao.GetCustWithWXByID(cust.CustomerId)
232
+		if err != nil {
233
+			utils.LogError(err.Error())
234
+			return nil, err
235
+		}
236
+		var userMap = model.TaUserMapping{
237
+			UserId:    cust.CustomerId,
238
+			UserType:  models.USERMAP_USER,
239
+			MappingId: customerMap.MappingId,
240
+		}
241
+		if err := s.dao.UpdateUserMapping(&userMap, []string{"user_id", "user_type"}); err != nil {
242
+			utils.LogError("更新用户映射信息失败:" + err.Error())
243
+			return nil, errors.New("映射用户信息失败")
244
+		}
245
+	}
211 246
 	return newUSer, err
212 247
 }
213 248
 

+ 9
- 12
service/verify/verify.go Näytä tiedosto

@@ -28,23 +28,23 @@ func NewVerifyServ(ctx *utils.Context) *VerifyServ {
28 28
 }
29 29
 
30 30
 // GetCustomerCourseDetailById 根据ID获取当日可核销课程
31
-func (s *VerifyServ) GetCustomerCourseDetailById(id, caseid string, page, pageSize int) (map[string]interface{}, error) {
32
-	if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
33
-		return nil, err
34
-	}
31
+func (s *VerifyServ) GetCustomerCourseDetailById(id, caseids string, page, pageSize int) (map[string]interface{}, error) {
32
+	// if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
33
+	// 	return nil, err
34
+	// }
35 35
 	if pageSize == 0 {
36 36
 		pageSize = service.PAGENUM
37 37
 	}
38 38
 	if page == 0 {
39 39
 		page = 1
40 40
 	}
41
-	customerDetail, err := s.dao.GetCustomerCourseList(id, caseid, page, pageSize)
41
+	customerDetail, err := s.dao.GetCustomerCourseList(id, caseids, page, pageSize)
42 42
 	if err != nil {
43 43
 		utils.LogError("获取列表失败: " + err.Error())
44 44
 		return nil, errors.New("获取列表失败")
45 45
 	}
46 46
 	customerId := customerDetail[0].CustomerId
47
-	total, err := s.dao.GetCustomerCourseListCount(id, caseid)
47
+	total, err := s.dao.GetCustomerCourseListCount(id, caseids)
48 48
 	if err != nil {
49 49
 		utils.LogError("获取列表失败: " + err.Error())
50 50
 		return nil, errors.New("获取列表失败")
@@ -65,23 +65,20 @@ func (s *VerifyServ) GetCustomerCourseDetailById(id, caseid string, page, pageSi
65 65
 }
66 66
 
67 67
 // GetCustomerCourseDetailByTel根据电话号码获取当日可核销课程
68
-func (s *VerifyServ) GetCustomerCourseDetailByTel(tel, caseid string, page, pageSize int) (map[string]interface{}, error) {
69
-	if err := utils.NewAuthEngine(s.ctx).CheckCase(caseid); err != nil {
70
-		return nil, err
71
-	}
68
+func (s *VerifyServ) GetCustomerCourseDetailByTel(tel, caseids string, page, pageSize int) (map[string]interface{}, error) {
72 69
 	if pageSize == 0 {
73 70
 		pageSize = service.PAGENUM
74 71
 	}
75 72
 	if page == 0 {
76 73
 		page = 1
77 74
 	}
78
-	customerDetail, err := s.dao.GetCustomerCourseListByTel(tel, caseid, page, pageSize)
75
+	customerDetail, err := s.dao.GetCustomerCourseListByTel(tel, caseids, page, pageSize)
79 76
 	if err != nil {
80 77
 		utils.LogError("获取列表失败: " + err.Error())
81 78
 		return nil, errors.New("获取列表失败")
82 79
 	}
83 80
 	customerId := customerDetail[0].CustomerId
84
-	total, err := s.dao.GetCustomerCourseListByTelCount(tel, caseid)
81
+	total, err := s.dao.GetCustomerCourseListByTelCount(tel, caseids)
85 82
 	if err != nil {
86 83
 		utils.LogError("获取列表失败: " + err.Error())
87 84
 		return nil, errors.New("获取列表失败")