zjxpcyc 6 år sedan
förälder
incheckning
1417f1f814

+ 14
- 17
controllers/cases/signin.go Visa fil

@@ -1,8 +1,8 @@
1 1
 package cases
2 2
 
3 3
 import (
4
-	"errors"
5 4
 	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6 6
 	"spaceofcheng/services/service/cases"
7 7
 )
8 8
 
@@ -21,27 +21,24 @@ func (c *SigninController) Constructor() {
21 21
 
22 22
 // GetOrgCases 获取机构案场
23 23
 /**
24
-	 条件:
25
-					 selectType: 今天,本周,本月,今年,全部
26
-					 caseid: 案场ID
24
+ 条件:
25
+				 selectType: 今天,本周,本月,今年,全部
26
+				 caseid: 案场ID
27 27
 */
28 28
 func (c *SigninController) GetSigninWhere() {
29
-	org := c.GetString("org")
30
-	selectType,err := c.GetInt("selectType")
31
-	page,err := c.GetInt("page")
32
-	pageSize,err := c.GetInt("pageSize")
33
-
34
-	if org == "" {
35
-		c.ResponseError(errors.New("未确定机构"))
29
+	selectType, err := c.GetInt("selectType")
30
+	page, err := c.GetInt("page")
31
+	pageSize, err := c.GetInt("pageSize")
32
+
33
+	caseids := c.GetString("caseid")
34
+	if caseids == "" {
35
+		cases := c.Context.Get("cases").([]model.SysUserCase)
36
+		caseids = c.GetCaseIDs(cases)
36 37
 	}
37
-	res, err := c.dao.GetSigninWhere(selectType,org,page,pageSize)
38
+	res, err := c.dao.GetSigninWhere(selectType, caseids, page, pageSize)
38 39
 	if err != nil {
39 40
 		c.ResponseError(err)
40 41
 	}
41
-	
42
+
42 43
 	c.ResponseJSON(res)
43 44
 }
44
-
45
-
46
-
47
-

+ 114
- 0
controllers/gymcard/gymcard.go Visa fil

@@ -0,0 +1,114 @@
1
+package gymcard
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	gym "spaceofcheng/services/models/gymcard"
6
+	"spaceofcheng/services/models/model"
7
+	"spaceofcheng/services/service/gymcard"
8
+)
9
+
10
+// GymcardController 信息
11
+type GymcardController struct {
12
+	dao *gymcard.GymcardServ
13
+	controllers.BaseController
14
+}
15
+
16
+// Constructor 初始化 Controller
17
+// @Title Constructor
18
+// @Description 初始化 Controller, 系统自动调用
19
+func (c *GymcardController) Constructor() {
20
+	c.dao = gymcard.NewGymcardServ(c.Context)
21
+}
22
+
23
+// GetGymcardList 后台获取游泳健身卡列表
24
+func (c *GymcardController) GetGymcardList() {
25
+	caseIDs := c.GetString("caseid")
26
+	if caseIDs == "" {
27
+		cases := c.Context.Get("cases").([]model.SysUserCase)
28
+		caseIDs = c.GetCaseIDs(cases)
29
+	}
30
+	page, _ := c.GetInt("page")
31
+	pageSize, _ := c.GetInt("pagesize")
32
+	list, err := c.dao.GetGymcardList(caseIDs, page, pageSize)
33
+	if err != nil {
34
+		c.ResponseError(err)
35
+	}
36
+	c.ResponseJSON(list)
37
+}
38
+
39
+// GetGymcardListByCustomerId 根据客户id获取C端客户所有的健身卡
40
+func (c *GymcardController) GetGymcardListByCustomerId() {
41
+	page, _ := c.GetInt("page")
42
+	pageSize, _ := c.GetInt("pagesize")
43
+	list, err := c.dao.GetCustomerGymBycustomerId(page, pageSize)
44
+	if err != nil {
45
+		c.ResponseError(err)
46
+	}
47
+	c.ResponseJSON(list)
48
+}
49
+
50
+// GetGymcardDetailbyId 根据游泳健身卡ID获取游泳健身卡详情
51
+func (c *GymcardController) GetGymcardDetailbyId() {
52
+	id := c.GetString("gymcardId")
53
+	gymcard, err := c.dao.GetGymcardDetailById(id)
54
+	if err != nil {
55
+		c.ResponseError(err)
56
+	}
57
+	c.ResponseJSON(gymcard)
58
+}
59
+
60
+// GetCustomerGymDetailById 根据客户健身卡ID获取客户健身卡详情
61
+func (c *GymcardController) GetCustomerGymDetailById() {
62
+	id := c.GetString("customerGymId")
63
+	customerGym, err := c.dao.GetCustomerGymDetailById(id)
64
+	if err != nil {
65
+		c.ResponseError(err)
66
+	}
67
+	c.ResponseJSON(customerGym)
68
+}
69
+
70
+// GetCustomerGymByPhone 根据客户手机获取客户可用的游泳健身卡
71
+func (c *GymcardController) GetCustomerGymByPhone() {
72
+	phone := c.GetString("phone")
73
+	customerGym, err := c.dao.GetCustomerGymByPhone(phone)
74
+	if err != nil {
75
+		c.ResponseError(err)
76
+	}
77
+	c.ResponseJSON(customerGym)
78
+}
79
+
80
+// SaveGymcard 保存游泳健身卡
81
+func (c *GymcardController) SaveGymcard() {
82
+	gymCard := gym.Gymcard{}
83
+	if err := c.ParseForm(&gymCard); err != nil {
84
+		c.ResponseError(err)
85
+	}
86
+	newGymcard, err := c.dao.SaveGymcard(gymCard)
87
+	if err != nil {
88
+		c.ResponseError(err)
89
+	}
90
+	c.ResponseJSON(newGymcard)
91
+}
92
+
93
+// SendGymToCustomer 客户领卡
94
+func (c *GymcardController) SendGymToCustomer() {
95
+	gymcardId := c.GetString("gymcardId")
96
+	sysuserId := c.GetString("sysuserId")
97
+	customerGym, err := c.dao.SendGymCardToUser(gymcardId, sysuserId)
98
+	if err != nil {
99
+		c.ResponseError(err)
100
+	}
101
+	c.ResponseJSON(customerGym)
102
+}
103
+
104
+// VerifyCustomerGymcard 核销客户健身卡
105
+func (c *GymcardController) VerifyCustomerGymcard() {
106
+	cases := c.Context.Get("cases").([]model.SysUserCase)
107
+	caseids := c.GetCaseIDs(cases)
108
+	customerGymId := c.GetString("customerGymId")
109
+	err := c.dao.UpdateCustomerGym(customerGymId, caseids)
110
+	if err != nil {
111
+		c.ResponseError(err)
112
+	}
113
+	c.ResponseJSON("核销成功")
114
+}

+ 3062
- 22
log/common.log
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 36
- 35
models/cases/signin.go Visa fil

@@ -3,28 +3,30 @@ package cases
3 3
 import (
4 4
 	"spaceofcheng/services/models/model"
5 5
 	"spaceofcheng/services/utils"
6
-	"github.com/go-xorm/xorm"
7 6
 	"strconv"
7
+	"strings"
8
+
9
+	"github.com/go-xorm/xorm"
8 10
 )
9 11
 
10 12
 // 时间范围
11 13
 const (
12
-	ALL 				= -1 // 全部
13
-	TODAY 			= 0 // 今天
14
-	THIS_WEEK 	= 1 // 本周
15
-	THIS_MONTH 	= 2 // 本月
16
-	THIS_YEAR  	= 3 // 今年
14
+	ALL        = -1 // 全部
15
+	TODAY      = 0  // 今天
16
+	THIS_WEEK  = 1  // 本周
17
+	THIS_MONTH = 2  // 本月
18
+	THIS_YEAR  = 3  // 今年
17 19
 )
18 20
 
19 21
 // 星期
20 22
 const (
21
-	MONDAY      = 1 // 星期一
22
-	TUESDAY			= 2 // 星期二
23
-	WEDNESDAY   = 3 // 星期三
24
-	THURSDAY		= 4 // 星期四
25
-	FRIDAY			= 5 // 星期五
26
-	SATURDAY		= 6 // 星期六
27
-	SUNDAY			= 7 // 星期天
23
+	MONDAY    = 1 // 星期一
24
+	TUESDAY   = 2 // 星期二
25
+	WEDNESDAY = 3 // 星期三
26
+	THURSDAY  = 4 // 星期四
27
+	FRIDAY    = 5 // 星期五
28
+	SATURDAY  = 6 // 星期六
29
+	SUNDAY    = 7 // 星期天
28 30
 )
29 31
 
30 32
 // CaseDAO 当前数据库操作对象
@@ -43,7 +45,7 @@ func NewSigninDAO(ctx *utils.Context) *SigninDAO {
43 45
 
44 46
 // CaseInfo 案场
45 47
 type SigninInfo struct {
46
-	model.TaCheckinRecord  `xorm:"extends"`
48
+	model.TaCheckinRecord `xorm:"extends"`
47 49
 	//CreateUserName string
48 50
 }
49 51
 
@@ -61,36 +63,35 @@ type SigninInfo struct {
61 63
 
62 64
 
63 65
  **/
64
- func (m *SigninDAO) GetSigninWhere(selectType int,caseid string,page, pageSize int)([] SigninInfo,error){
66
+func (m *SigninDAO) GetSigninWhere(selectType int, caseid string, page, pageSize int) ([]SigninInfo, error) {
65 67
 	var signin []SigninInfo
66 68
 	var sql string
67 69
 	switch selectType {
68
-		case ALL:
69
-			sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
70
-		case TODAY:
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
-		case THIS_WEEK:
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
-		case THIS_MONTH:
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
-		case THIS_YEAR:
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)
70
+	case ALL:
71
+		sql = `select tcr.*,user_id from ta_checkin_record tcr LEFT JOIN ta_customer tc on tcr.customer_id = tc.customer_id where tcr.case_id in ('` +
72
+			strings.Replace(caseid, ",", "','", -1) + `') ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
73
+	case TODAY:
74
+		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 in ('` +
75
+			strings.Replace(caseid, ",", "','", -1) + `') ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
76
+	case THIS_WEEK:
77
+		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 in ('` +
78
+			strings.Replace(caseid, ",", "','", -1) + `') ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
79
+	case THIS_MONTH:
80
+		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 in ('` +
81
+			strings.Replace(caseid, ",", "','", -1) + `') ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
82
+	case THIS_YEAR:
83
+		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 in ('` +
84
+			strings.Replace(caseid, ",", "','", -1) + `') ORDER BY tcr.create_date DESC limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
78 85
 	}
79
-	
86
+
80 87
 	err := m.db.Sql(sql).Find(&signin)
81 88
 	// for index := 0; 0 < len(signin); index++ {
82 89
 	// 	println("用户编号:"+signin[index].UserId+"-")
83 90
 	// 	if signin[index].UserId == "" {
84 91
 	// 		signin[index].UserId = "前台用户"
85 92
 	// 	} else {
86
-	// 		signin[index].UserId = "后台用户"	
93
+	// 		signin[index].UserId = "后台用户"
87 94
 	// 	}
88 95
 	// }
89
-	return signin,err
90
- }
91
-
92
-
93
- 
94
-
95
-
96
-
96
+	return signin, err
97
+}

+ 18
- 0
models/gymcard/gymcard.go Visa fil

@@ -180,6 +180,15 @@ func (m *GymcardDAO) DeleteCardShare(gymcardId string) error {
180 180
 	_, err := m.db.Cols(cols...).Where("gym_card_id = ?", cardShare.GymCardId).Update(cardShare)
181 181
 	return err
182 182
 }
183
+func (m *GymcardDAO) EditGymcard(gymcard *model.TaGymCard) error {
184
+	var cols = []string{
185
+		"sent_count",
186
+		"used_count",
187
+		"status",
188
+	}
189
+	_, err := m.db.Cols(cols...).Where("gym_card_id = ?", gymcard.GymCardId).Update(gymcard)
190
+	return err
191
+}
183 192
 
184 193
 // EditGymcardImg 修改健身卡图片
185 194
 func (m *GymcardDAO) EditGymcardImg(gymcardId, imgUrl string) error {
@@ -329,3 +338,12 @@ WHERE
329 338
 	err := m.db.Sql(sql).Find(&customerGym)
330 339
 	return customerGym[0], err
331 340
 }
341
+
342
+// AddGiveRecord 新增赠送记录
343
+func (m *GymcardDAO) AddGiveRecord(giveRecord *model.TaCouponGiveRecord) error {
344
+	giveRecord.CreateDate = time.Now()
345
+	giveRecord.RecId = utils.GetGUID()
346
+	giveRecord.GiftType = models.GIVE_GIFT_GYM
347
+	_, err := m.db.Insert(giveRecord)
348
+	return err
349
+}

+ 1
- 0
models/model/ta_coupon_give_record.go Visa fil

@@ -13,4 +13,5 @@ type TaCouponGiveRecord struct {
13 13
 	ToName     string    `xorm:"VARCHAR(255)"`
14 14
 	CreateDate time.Time `xorm:"DATETIME"`
15 15
 	Remark     string    `xorm:"VARCHAR(255)"`
16
+	CaseId     string    `xorm:"VARCHAR(64)"`
16 17
 }

+ 1
- 0
models/model/ta_customer.go Visa fil

@@ -18,4 +18,5 @@ type TaCustomer struct {
18 18
 	CreateDate    time.Time `xorm:"DATETIME"`
19 19
 	Status        int       `xorm:"SMALLINT(6)"`
20 20
 	UserId        string    `xorm:"VARCHAR(64)"`
21
+	BindingDate   time.Time `xorm:"DATETIME"`
21 22
 }

+ 110
- 0
models/statistics/statistics.go Visa fil

@@ -0,0 +1,110 @@
1
+package statistics
2
+
3
+import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/utils"
7
+	"strconv"
8
+	"strings"
9
+
10
+	"github.com/go-xorm/xorm"
11
+)
12
+
13
+// StatisticsDAO 当前数据库操作对象
14
+type StatisticsDAO struct {
15
+	ctx *utils.Context
16
+	db  *xorm.Session
17
+}
18
+
19
+// NewStatisticsDAO New Inst
20
+func NewStatisticsDAO(ctx *utils.Context) *StatisticsDAO {
21
+	return &StatisticsDAO{
22
+		ctx: ctx,
23
+		db:  ctx.DB,
24
+	}
25
+}
26
+
27
+// GetCustomerCount 获取会员总数
28
+func (m *StatisticsDAO) GetCustomerCount(orgid string) (int, error) {
29
+	var customers []model.TaCustomer
30
+	err := m.db.Where("org_id=?", orgid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&customers)
31
+	if err != nil {
32
+		return 0, err
33
+	}
34
+	return len(customers), nil
35
+}
36
+
37
+// GetCourseOrderCount 获取课程预约总量
38
+func (m *StatisticsDAO) GetCourseOrderCount(caseids string) (int64, error) {
39
+	var courses = new(model.TaCustomerCourse)
40
+	total, err := m.db.Where("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").And("status>"+strconv.Itoa(models.STATUS_DEL)).SumInt(courses, "course_num")
41
+	if err != nil {
42
+		return 0, err
43
+	}
44
+	return total, nil
45
+}
46
+
47
+// GetGoodsOrderCount 获取商品下单总量
48
+func (m *StatisticsDAO) GetGoodsOrderCount(caseids string) (int64, error) {
49
+	var goodsorder = new(model.TaGoodsOrders)
50
+	total, err := m.db.Where("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").And("status>"+strconv.Itoa(models.STATUS_DEL)).SumInt(goodsorder, "orders_num")
51
+	if err != nil {
52
+		return 0, err
53
+	}
54
+	return total, nil
55
+}
56
+
57
+// GetCustomerCountByDate 根据时间获取新增会员数量
58
+func (m *StatisticsDAO) GetCustomerCountByDate(caseids, begindate, enddate string) (int, error) {
59
+	var customers []model.TaCustomer
60
+	err := m.db.Where("recommend_case in ('" + strings.Replace(caseids, ",", "','", -1) + "')").And("binding_date BETWEEN '" + begindate + "' AND '" + enddate + "'").And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&customers)
61
+	if err != nil {
62
+		return 0, err
63
+	}
64
+	return len(customers), nil
65
+}
66
+
67
+// GetCoursesCountByDate 根据时间获取课程数
68
+func (m *StatisticsDAO) GetCoursesCountByDate(caseids, begindate, enddate string) (int, error) {
69
+	var details []model.TaCourseDetail
70
+	sql := `select a.* from ta_course_detail a inner join ta_course b on a.course_id=b.course_id where b.status=` + strconv.Itoa(models.STATUS_NORMAL)
71
+	sql += ` and a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and a.begin_date  BETWEEN '` + begindate + `' AND '` + enddate + `'`
72
+	err := m.db.Sql(sql).Find(&details)
73
+	if err != nil {
74
+		return 0, err
75
+	}
76
+	return len(details), nil
77
+}
78
+
79
+// GetCourseOrderCountByDate 根据时间获取课程预约数量
80
+func (m *StatisticsDAO) GetCourseOrderCountByDate(caseids, begindate, enddate string) (int64, error) {
81
+	courses := new(model.TaCustomerCourse)
82
+	total, err := m.db.Where("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").And("status>"+strconv.Itoa(models.STATUS_DEL)).And("create_date BETWEEN '"+begindate+"' AND '"+enddate+"'").SumInt(courses, "course_num")
83
+	if err != nil {
84
+		return 0, err
85
+	}
86
+	return total, nil
87
+}
88
+
89
+// GetCourseVerifyCountByDate 根据时间获取课程核销人数
90
+func (m *StatisticsDAO) GetCourseVerifyCountByDate(caseids, begindate, enddate string) ([]model.TaCourseVerifcation, error) {
91
+	var courseVerify []model.TaCourseVerifcation
92
+	err := m.db.Where("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").And("status>" + strconv.Itoa(models.STATUS_DEL)).And("create_date BETWEEN '" + begindate + "' AND '" + enddate + "'").Find(&courseVerify)
93
+	return courseVerify, err
94
+}
95
+
96
+// GetGymVerifyCountByDate 根据时间获取健身卡核销人数
97
+func (m *StatisticsDAO) GetGymVerifyCountByDate(caseids, begindate, enddate string) ([]model.TaGymCardUsage, error) {
98
+	var gyms []model.TaGymCardUsage
99
+	err := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("use_case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").And("create_date BETWEEN '" + begindate + "' AND '" + enddate + "'").Find(&gyms)
100
+	return gyms, err
101
+}
102
+
103
+// GetGoodsOrderCountByDate 根据时间获取商品下单
104
+func (m *StatisticsDAO) GetGoodsOrderCountByDate(caseids, begindate, enddate string) ([]model.TaGoodsOrders, error) {
105
+	var goodsorder []model.TaGoodsOrders
106
+	err := m.db.Where("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").And("create_date BETWEEN '" + begindate + "' AND '" + enddate + "'").And("status>" + strconv.Itoa(models.STATUS_DEL)).Find(&goodsorder)
107
+	return goodsorder, err
108
+}
109
+
110
+//

+ 8
- 2
service/cases/cases.go Visa fil

@@ -72,10 +72,16 @@ func (s *CaseServ) SaveCase(caseinfo model.SysCase) (*model.SysCase, error) {
72 72
 	var newInfo *model.SysCase
73 73
 	var err error
74 74
 	if caseinfo.CaseName == "" {
75
-		return nil, errors.New("案场名称不能为空!")
75
+		return nil, errors.New("请填写案场名称!")
76
+	}
77
+	if caseinfo.CaseAddress == "" {
78
+		return nil, errors.New("请填写案场地址!")
79
+	}
80
+	if caseinfo.CaseIcon == "" {
81
+		return nil, errors.New("请上传案场图片!")
76 82
 	}
77 83
 	if caseinfo.Coordinate == "" {
78
-		return nil, errors.New("案场经纬度不能为空!")
84
+		return nil, errors.New("案场在地图上的位置不明确,请在地图上抓取地址获取经纬度!")
79 85
 	}
80 86
 
81 87
 	if caseinfo.CaseId == "" {

+ 19
- 22
service/cases/signin.go Visa fil

@@ -1,43 +1,44 @@
1 1
 package cases
2 2
 
3 3
 import (
4
-  "spaceofcheng/services/models/cases"
4
+	"spaceofcheng/services/models/cases"
5 5
 	"spaceofcheng/services/utils"
6
+
6 7
 	"github.com/astaxie/beego"
7 8
 )
8 9
 
9 10
 // SigninServ 系统处理
10 11
 type SigninServ struct {
11
-	ctx     *utils.Context
12
-	dao     *cases.SigninDAO
12
+	ctx *utils.Context
13
+	dao *cases.SigninDAO
13 14
 }
14 15
 
15 16
 // NewSigninServ 初始化
16
-func NewSigninServ(ctx *utils.Context) *SigninServ{
17
+func NewSigninServ(ctx *utils.Context) *SigninServ {
17 18
 	return &SigninServ{
18 19
 		ctx: ctx,
19 20
 		dao: cases.NewSigninDAO(ctx),
20 21
 	}
21 22
 }
22 23
 
23
-//GetSigninWhere 
24
+//GetSigninWhere
24 25
 /**
25
-	GetSigninWhere 根据条件查询签到记录
26
-			 条件:
27
-					 selectType: 今天,本周,本月,今年,全部
28
-					 caseid: 案场ID
26
+GetSigninWhere 根据条件查询签到记录
27
+		 条件:
28
+				 selectType: 今天,本周,本月,今年,全部
29
+				 caseid: 案场ID
29 30
 */
30
-func (s *SigninServ) GetSigninWhere(selectType int,caseid string,page, pageSize int)( map[string]interface{},error){
31
+func (s *SigninServ) GetSigninWhere(selectType int, caseids string, page, pageSize int) (map[string]interface{}, error) {
31 32
 
32
-	 info,err := s.dao.GetSigninWhere(selectType,caseid,page, pageSize)
33
-	 var total int
34
-	 if err != nil {
35
-			beego.Error(err)
36
-			return nil,err
37
-	 }
38
-	 if len(info) >0 {
33
+	info, err := s.dao.GetSigninWhere(selectType, caseids, page, pageSize)
34
+	var total int
35
+	if err != nil {
36
+		beego.Error(err)
37
+		return nil, err
38
+	}
39
+	if len(info) > 0 {
39 40
 		total = len(info)
40
-	 }
41
+	}
41 42
 
42 43
 	return map[string]interface{}{
43 44
 		"list":     info,
@@ -46,7 +47,3 @@ func (s *SigninServ) GetSigninWhere(selectType int,caseid string,page, pageSize
46 47
 		"page":     page,
47 48
 	}, err
48 49
 }
49
-
50
-
51
-
52
-

+ 5
- 2
service/customer/customer.go Visa fil

@@ -9,6 +9,7 @@ import (
9 9
 	"spaceofcheng/services/service/events"
10 10
 	"spaceofcheng/services/utils"
11 11
 	"strconv"
12
+	"time"
12 13
 )
13 14
 
14 15
 // CustomerServ 系统处理
@@ -178,8 +179,9 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
178 179
 		openid := wxInfo["openid"].(string)
179 180
 		customer, err := s.dao.GetCustWithWXByOpenID(openid)
180 181
 		newCust := model.TaCustomer{
181
-			CustomerId: customer.CustomerId,
182
-			Phone:      phone,
182
+			CustomerId:  customer.CustomerId,
183
+			Phone:       phone,
184
+			BindingDate: time.Now(),
183 185
 		}
184 186
 		// 校验案场信息
185 187
 		if caseID != "" {
@@ -219,6 +221,7 @@ func (s *CustomerServ) BindWechatCust(userMap *model.TaUserMapping, phone, caseI
219 221
 			"recommend_id",
220 222
 			"recommend_case",
221 223
 			"recommend_name",
224
+			"binding_date",
222 225
 		})
223 226
 		if err != nil {
224 227
 			utils.LogError(err.Error())

+ 78
- 11
service/gymcard/gymcard.go Visa fil

@@ -3,6 +3,7 @@ package gymcard
3 3
 import (
4 4
 	"errors"
5 5
 	"spaceofcheng/services/models"
6
+	"spaceofcheng/services/models/customer"
6 7
 	"spaceofcheng/services/models/gymcard"
7 8
 	"spaceofcheng/services/models/model"
8 9
 	"spaceofcheng/services/service"
@@ -12,17 +13,21 @@ import (
12 13
 
13 14
 // GymcardServ 系统处理
14 15
 type GymcardServ struct {
15
-	ctx *utils.Context
16
-	dao *gymcard.GymcardDAO
16
+	ctx  *utils.Context
17
+	dao  *gymcard.GymcardDAO
18
+	cdao *customer.CustomerDAO
17 19
 }
18 20
 
19 21
 // NewGymcardServ 初始化
20 22
 func NewGymcardServ(ctx *utils.Context) *GymcardServ {
21 23
 	return &GymcardServ{
22
-		ctx: ctx,
23
-		dao: gymcard.NewGymcardDAO(ctx),
24
+		ctx:  ctx,
25
+		dao:  gymcard.NewGymcardDAO(ctx),
26
+		cdao: customer.NewCustomerDAO(ctx),
24 27
 	}
25 28
 }
29
+
30
+// GetGymcardList 根据案场id获取健身卡列表
26 31
 func (s *GymcardServ) GetGymcardList(caseid string, page, pageSize int) (map[string]interface{}, error) {
27 32
 	if pageSize == 0 {
28 33
 		pageSize = service.PAGENUM
@@ -44,16 +49,19 @@ func (s *GymcardServ) GetGymcardList(caseid string, page, pageSize int) (map[str
44 49
 		"page":     page,
45 50
 	}, nil
46 51
 }
47
-func (s *GymcardServ) GetCustomerGymBycustomerId(customerId string, page, pageSize int) (map[string]interface{}, error) {
52
+
53
+// GetCustomerGymBycustomerId 根据客户id获取客户所有健身卡列表
54
+func (s *GymcardServ) GetCustomerGymBycustomerId(page, pageSize int) (map[string]interface{}, error) {
55
+	customer := s.ctx.Get("customer").(model.TaCustomer)
48 56
 	if pageSize == 0 {
49 57
 		pageSize = service.PAGENUM
50 58
 	}
51
-	customerGym, err := s.dao.GetCustomerGymByCustomerId(customerId, page, pageSize)
59
+	customerGym, err := s.dao.GetCustomerGymByCustomerId(customer.CustomerId, page, pageSize)
52 60
 	if err != nil {
53 61
 		utils.LogError("获取健身卡列表失败:" + err.Error())
54 62
 		return nil, errors.New("获取健身卡列表失败")
55 63
 	}
56
-	total, err := s.dao.GetCustomerGymCountByCustomerId(customerId)
64
+	total, err := s.dao.GetCustomerGymCountByCustomerId(customer.CustomerId)
57 65
 	if err != nil {
58 66
 		utils.LogError("获取健身卡列表失败:" + err.Error())
59 67
 		return nil, errors.New("获取健身卡列表失败")
@@ -65,7 +73,19 @@ func (s *GymcardServ) GetCustomerGymBycustomerId(customerId string, page, pageSi
65 73
 		"page":     page,
66 74
 	}, nil
67 75
 }
68
-func (s *GymcardServ) GetGymcardDetailByIdZ(gymcardId string) (*gymcard.Gymcard, error) {
76
+
77
+// GetCustomerGymByPhone 根据用户手机号获取用户健身卡列表
78
+func (s *GymcardServ) GetCustomerGymByPhone(phone string) ([]gymcard.CustomerGym, error) {
79
+	customerGym, err := s.dao.GetCustomerGymByPhone(phone)
80
+	if err != nil {
81
+		utils.LogError("获取健身卡列表失败:" + err.Error())
82
+		return nil, errors.New("获取健身卡列表失败")
83
+	}
84
+	return customerGym, nil
85
+}
86
+
87
+// GetGymcardDetailById 根据id获取健身卡详情
88
+func (s *GymcardServ) GetGymcardDetailById(gymcardId string) (*gymcard.Gymcard, error) {
69 89
 	gymcard, err := s.dao.GetGymcardById(gymcardId)
70 90
 	if err != nil {
71 91
 		utils.LogError("获取健身卡详情失败" + err.Error())
@@ -74,6 +94,17 @@ func (s *GymcardServ) GetGymcardDetailByIdZ(gymcardId string) (*gymcard.Gymcard,
74 94
 	return gymcard, nil
75 95
 }
76 96
 
97
+// GetCustomerGymDetailById 根据id获取客户健身卡详情
98
+func (s *GymcardServ) GetCustomerGymDetailById(customerGymId string) (*gymcard.CustomerGym, error) {
99
+	customerGym, err := s.dao.GetCustomerGymById(customerGymId)
100
+	if err != nil {
101
+		utils.LogError("获取健身卡详情失败" + err.Error())
102
+		return nil, errors.New("获取健身卡详情失败")
103
+	}
104
+	return &customerGym, err
105
+}
106
+
107
+// SaveGymcard 保存游泳健身卡
77 108
 func (s *GymcardServ) SaveGymcard(newGym gymcard.Gymcard) (*gymcard.Gymcard, error) {
78 109
 	var newGymCard model.TaGymCard
79 110
 	var cardGym model.TaGymCard
@@ -95,28 +126,59 @@ func (s *GymcardServ) SaveGymcard(newGym gymcard.Gymcard) (*gymcard.Gymcard, err
95 126
 	return &newGym, nil
96 127
 }
97 128
 
98
-func (s *GymcardServ) SendGymCardToUser(customerId, gymcardId string) (*model.TaCustomerGym, error) {
129
+// SendGymCardToUser 给客户发卡
130
+func (s *GymcardServ) SendGymCardToUser(gymcardId, sysuserId string) (*model.TaCustomerGym, error) {
99 131
 	var customerGym *model.TaCustomerGym
132
+	customer := s.ctx.Get("customer").(model.TaCustomer)
133
+	var sysuser *model.SysUser
134
+	var sendRecord *model.TaCouponGiveRecord
100 135
 	gymCard, err := s.dao.GetGymcardById(gymcardId)
101 136
 	if err != nil {
102 137
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
103 138
 		return nil, errors.New("发送游泳健身卡给客户失败")
104 139
 	}
105
-	customerGym, err = s.dao.SendGymcardToCustomer(&gymCard.TaGymCard, customerId)
140
+	gymCard.SentCount = gymCard.SentCount + 1
141
+	customerGym, err = s.dao.SendGymcardToCustomer(&gymCard.TaGymCard, customer.CustomerId)
106 142
 	if err != nil {
107 143
 		utils.LogError("发送游泳健身卡给客户失败" + err.Error())
108 144
 		return nil, errors.New("发送游泳健身卡给客户失败")
109 145
 	}
146
+	sysuser, err = s.cdao.GetUserByID(sysuserId)
147
+	if err != nil {
148
+		utils.LogError("记录发健身卡记录失败" + err.Error())
149
+		return nil, errors.New("记录发健身卡记录失败")
150
+	}
151
+	sendRecord.FromId = sysuser.UserId
152
+	sendRecord.FromName = sysuser.RealName
153
+	sendRecord.GiftId = gymCard.GymCardId
154
+	sendRecord.GiftName = gymCard.GymCardName
155
+	sendRecord.ToId = customer.CustomerId
156
+	sendRecord.ToName = customer.CustomerName
157
+	err = s.dao.AddGiveRecord(sendRecord)
158
+	if err != nil {
159
+		utils.LogError("记录发健身卡记录失败" + err.Error())
160
+		return nil, errors.New("记录发健身卡记录失败")
161
+	}
162
+	err = s.dao.EditGymcard(&gymCard.TaGymCard)
163
+	if err != nil {
164
+		utils.LogError("记录发健身卡记录失败" + err.Error())
165
+		return nil, errors.New("记录发健身卡记录失败")
166
+	}
110 167
 	return customerGym, nil
111 168
 }
112 169
 
113
-func (s *GymcardServ) UpdateCustomerGym(customerGymId string) error {
170
+// UpdateCustomerGym 核销游泳健身卡
171
+func (s *GymcardServ) UpdateCustomerGym(customerGymId, caseid string) error {
114 172
 	var gymCard *gymcard.Gymcard
115 173
 	customerGym, err := s.dao.GetCustomerGymById(customerGymId)
116 174
 	if err != nil {
117 175
 		utils.LogError("核销游泳健身卡失败" + err.Error())
118 176
 		return errors.New("核销游泳健身卡失败")
119 177
 	}
178
+	if caseid != customerGym.CaseId {
179
+		utils.LogError("核销游泳健身卡失败")
180
+		return errors.New("您的健身卡不在本案场")
181
+	}
120 182
 	gymCard, err = s.dao.GetGymcardById(customerGym.GymCardId)
121 183
 	if err != nil {
122 184
 		utils.LogError("核销游泳健身卡失败" + err.Error())
@@ -151,6 +213,11 @@ func (s *GymcardServ) UpdateCustomerGym(customerGymId string) error {
151 213
 		utils.LogError("核销游泳健身卡失败" + err.Error())
152 214
 		return errors.New("核销游泳健身卡失败")
153 215
 	}
216
+	err = s.dao.EditGymcard(&gymCard.TaGymCard)
217
+	if err != nil {
218
+		utils.LogError("核销游泳健身卡失败" + err.Error())
219
+		return errors.New("核销游泳健身卡失败")
220
+	}
154 221
 	err = s.dao.AddGymcardUsage(customerGym.TaCustomerGym)
155 222
 	return err
156 223