zjxpcyc 6 vuotta sitten
vanhempi
commit
7f0ba853b1

+ 2
- 2
conf/db.conf Näytä tiedosto

@@ -5,8 +5,8 @@ db_type      = mysql
5 5
 con_protocol = tcp
6 6
 
7 7
 ; 数据库地址,可以使用IP
8
-# db_addr      = 192.168.0.122
9
-db_addr      = localhost
8
+db_addr      = 192.168.0.122
9
+# db_addr      = localhost
10 10
 
11 11
 ; 端口
12 12
 db_port      = 3306

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

@@ -1,6 +1,8 @@
1 1
 package cases
2 2
 
3
-import "spaceofcheng/services/models/model"
3
+import (
4
+	"spaceofcheng/services/models/model"
5
+)
4 6
 
5 7
 // GetCaseUserByCase 根据案场获取用户信息
6 8
 func (c *CaseController) GetCaseUserByCase() {
@@ -59,3 +61,17 @@ func (c *CaseController) DelCaseUser() {
59 61
 	}
60 62
 	c.ResponseJSON("删除成功!")
61 63
 }
64
+
65
+// GetCaseUserType 获取案场人员类型
66
+func (c *CaseController) GetCaseUserType() {
67
+	orgid := c.GetString("orgid")
68
+	if orgid == "" {
69
+		org := c.Context.Get("org").(model.SysOrg)
70
+		orgid = org.OrgId
71
+	}
72
+	types, err := c.dao.GetUserType(orgid)
73
+	if err != nil {
74
+		c.ResponseError(err)
75
+	}
76
+	c.ResponseJSON(types)
77
+}

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

@@ -6,7 +6,7 @@ import "spaceofcheng/services/models/model"
6 6
 func (c *CourseController) GetCourseTagsByPage() {
7 7
 	orgid := c.GetString("orgid")
8 8
 	if orgid == "" {
9
-		org := c.Context.Get("org").(*model.SysOrg)
9
+		org := c.Context.Get("org").(model.SysOrg)
10 10
 		orgid = org.OrgId
11 11
 	}
12 12
 	page, _ := c.GetInt("page")
@@ -22,7 +22,7 @@ func (c *CourseController) GetCourseTagsByPage() {
22 22
 func (c *CourseController) GetCourseTags() {
23 23
 	orgid := c.GetString("orgid")
24 24
 	if orgid == "" {
25
-		org := c.Context.Get("org").(*model.SysOrg)
25
+		org := c.Context.Get("org").(model.SysOrg)
26 26
 		orgid = org.OrgId
27 27
 	}
28 28
 	tags, err := c.dao.GetCourseTags(orgid)

+ 2
- 1
controllers/message/news.go Näytä tiedosto

@@ -10,7 +10,8 @@ func (c *MessageController) GetNews() {
10 10
 	page, _ := c.GetInt("page")
11 11
 	pageSize, _ := c.GetInt("pagesize")
12 12
 	locationid := c.GetString("locationid")
13
-	news, err := c.dao.GetNewsList(locationid, org.OrgId, page, pageSize)
13
+	title := c.GetString("title")
14
+	news, err := c.dao.GetNewsList(locationid, title, org.OrgId, page, pageSize)
14 15
 	if err != nil {
15 16
 		c.ResponseError(err)
16 17
 	}

+ 77
- 0
controllers/vipcard/vipcard.go Näytä tiedosto

@@ -0,0 +1,77 @@
1
+package vipcard
2
+
3
+import (
4
+	"spaceofcheng/services/controllers"
5
+	"spaceofcheng/services/models/model"
6
+	"spaceofcheng/services/service/vipcard"
7
+	"time"
8
+)
9
+
10
+// CaseController 信息
11
+type VipcardController struct {
12
+	dao *vipcard.VipcardServ
13
+	controllers.BaseController
14
+}
15
+
16
+// Constructor 初始化 Controller
17
+// @Title Constructor
18
+// @Description 初始化 Controller, 系统自动调用
19
+func (c *VipcardController) Constructor() {
20
+	c.dao = vipcard.NewVipcardServ(c.Context)
21
+}
22
+
23
+// GetVipList 获取VIP卡列表
24
+func (c *VipcardController) GetVipList() {
25
+	cases := c.Context.Get("cases").([]model.SysUserCase)
26
+	caseId := c.GetCaseIDs(cases)
27
+	page, _ := c.GetInt("page")
28
+	pageSize, _ := c.GetInt("pagesize")
29
+	list, err := c.dao.GetVipChild(caseId, page, pageSize)
30
+	if err != nil {
31
+		c.ResponseError(err)
32
+	}
33
+	c.ResponseJSON(list)
34
+}
35
+
36
+// AddVipCard 新增VIP卡
37
+func (c *VipcardController) AddVipCard() {
38
+	vipcard := model.TaVipCard{}
39
+	if err := c.ParseForm(&vipcard); err != nil {
40
+		c.ResponseError(err)
41
+	}
42
+	newVipCard, err := c.dao.AddVipCard(vipcard)
43
+	if err != nil {
44
+		c.ResponseError(err)
45
+	}
46
+	c.ResponseJSON(newVipCard)
47
+
48
+}
49
+
50
+// userCharge 用户激活vip卡
51
+func (c *VipcardController) UserCharge() {
52
+	vipCode := c.GetString(":vipCardChildCode")
53
+	tel := c.GetString(":tel")
54
+	var createUser = c.Context.Get("user").(model.SysUser)
55
+	vipChild, err := c.dao.GetVipChildByCode(vipCode)
56
+	if err != nil {
57
+		c.ResponseError(err)
58
+	}
59
+
60
+	customer, err := c.dao.FindCustomerByTel(tel)
61
+	if err != nil {
62
+		c.ResponseError(err)
63
+	}
64
+	vipChild.CustomerId = customer.CustomerId
65
+	vipChild.CustomerTel = tel
66
+	vipChild.ActiveDate = time.Now()
67
+	err1 := c.dao.UpdateVipChild(vipChild)
68
+	if err1 != nil {
69
+		c.ResponseError(err)
70
+	}
71
+	err2 := c.dao.CustomerCharge(vipChild, createUser)
72
+	if err2 != nil {
73
+		c.ResponseError(err)
74
+	}
75
+	c.ResponseJSON("激活成功")
76
+
77
+}

+ 1
- 1
models/cases/cases.go Näytä tiedosto

@@ -40,7 +40,7 @@ func (m *CaseDAO) GetCaseList(caseids, casename string, page, pageSize int) ([]C
40 40
 		sql = sql + ` and  a.case_name like '%` + casename + `%'`
41 41
 	}
42 42
 
43
-	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
43
+	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
44 44
 
45 45
 	err := m.db.Sql(sql).Find(&cases)
46 46
 	return cases, err

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

@@ -77,3 +77,10 @@ func (m *CaseDAO) DelCaseUser(caseuserid string) error {
77 77
 	_, err := m.db.Cols(cols...).Where("case_user_id=?", caseuserid).Update(caseuser)
78 78
 	return err
79 79
 }
80
+
81
+// GetUserType 获取用户类型
82
+func (m *CaseDAO) GetUserType(orgid string) ([]model.SysCaseUserType, error) {
83
+	var usertypes []model.SysCaseUserType
84
+	err := m.db.Where("org_id=?", orgid).And("status=?", models.STATUS_NORMAL).Find(&usertypes)
85
+	return usertypes, err
86
+}

+ 2
- 2
models/channel/channel.go Näytä tiedosto

@@ -33,7 +33,7 @@ type Channel struct {
33 33
 // GetChannelsCount 获取渠道总数
34 34
 func (m *ChannelDAO) GetChannelsCount(caseid string) (int, error) {
35 35
 	var channels []model.TaChannel
36
-	dao := m.db.Where("status >" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseid, ",", "','", -1) + "')")
36
+	dao := m.db.Where("status > " + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseid, ",", "','", -1) + "')")
37 37
 	err := dao.Find(&channels)
38 38
 	return len(channels), err
39 39
 }
@@ -46,7 +46,7 @@ func (m *ChannelDAO) GetChannels(caseid string, page int, pageSize int) ([]Chann
46 46
 	from ta_channel a 
47 47
 	inner join sys_case b on a.case_id = b.case_id 
48 48
 	where a.case_id in('` + strings.Replace(caseid, ",", "','", -1) + `') and b.status> ` + strconv.Itoa(models.STATUS_DEL) + ` and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
49
-	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(page*pageSize)
49
+	sql += ` order by a.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
50 50
 	err := m.db.Sql(sql).Find(&channels)
51 51
 	return channels, err
52 52
 }

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

@@ -53,7 +53,7 @@ func (m *CourseDAO) GetCourseList(caseids, name, typeid string, page, pageSize i
53 53
 		sql += ` and a.location_id='` + typeid + `'`
54 54
 	}
55 55
 
56
-	sql += ` order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(page*pageSize)
56
+	sql += ` order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
57 57
 	err := m.db.Sql(sql).Find(&courses)
58 58
 	return courses, err
59 59
 }

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

@@ -29,7 +29,7 @@ func (m *MessageDAO) GetCmsCaseList(name, caseids string, page int, pageSize int
29 29
 	sql := `select a.*,b.case_name from ta_cms_case a inner join sys_case b on a.case_id = b.case_id 
30 30
 	where a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and a.name like '%` + name + `%' and a.status > ` + strconv.Itoa(models.STATUS_DEL) + `
31 31
 	and b.status > ` + strconv.Itoa(models.STATUS_DEL) + `
32
-	order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(page*pageSize)
32
+	order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
33 33
 	err := m.db.Sql(sql).Find(&cases)
34 34
 	return cases, err
35 35
 }

+ 9
- 3
models/message/news.go Näytä tiedosto

@@ -19,7 +19,7 @@ type CmsNewsInfo struct {
19 19
 }
20 20
 
21 21
 // GetNewsList 获取咨询列表
22
-func (m *MessageDAO) GetNewsList(locationid, orgid string, page int, pageSize int) ([]CmsNewsInfo, error) {
22
+func (m *MessageDAO) GetNewsList(locationid, title, orgid string, page int, pageSize int) ([]CmsNewsInfo, error) {
23 23
 	var news []CmsNewsInfo
24 24
 	sql := `select * from ta_cms_news new left join (
25 25
 		select b.news_id,GROUP_CONCAT(a.location_name) location_names,GROUP_CONCAT(a.location_id) location_ids 
@@ -30,19 +30,25 @@ func (m *MessageDAO) GetNewsList(locationid, orgid string, page int, pageSize in
30 30
 	if locationid != "" {
31 31
 		sql += ` and new.news_id in (select news_id from ta_cms_location where location_id='` + locationid + `')`
32 32
 	}
33
+	if title != "" {
34
+		sql += ` and new.title like '%` + title + `%'`
35
+	}
33 36
 
34
-	sql = sql + " order by new.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
37
+	sql = sql + " order by new.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
35 38
 	err := m.db.Sql(sql).Find(&news)
36 39
 	return news, err
37 40
 }
38 41
 
39 42
 // GetNewsListCount 获取咨询列表count
40
-func (m *MessageDAO) GetNewsListCount(locationid, orgid string) (int, error) {
43
+func (m *MessageDAO) GetNewsListCount(locationid, title, orgid string) (int, error) {
41 44
 	var news []model.TaCmsNews
42 45
 	dao := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("org_id=?", orgid)
43 46
 	if locationid != "" {
44 47
 		dao.In("news_id", builder.Select("news_id").From("ta_cms_location").Where(builder.Eq{"location_id": locationid}))
45 48
 	}
49
+	if title != "" {
50
+		dao.And("title like '%" + title + "%'")
51
+	}
46 52
 	err := dao.Find(&news)
47 53
 	if err != nil {
48 54
 		return 0, nil

+ 9
- 0
models/model/sys_case_user_type.go Näytä tiedosto

@@ -0,0 +1,9 @@
1
+package model
2
+
3
+type SysCaseUserType struct {
4
+	TypeId   string `xorm:"not null pk VARCHAR(64)"`
5
+	OrgId    string `xorm:"VARCHAR(64)"`
6
+	TypeCode string `xorm:"VARCHAR(40)"`
7
+	TypeName string `xorm:"VARCHAR(40)"`
8
+	Status   int    `xorm:"SMALLINT(6)"`
9
+}

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

@@ -7,6 +7,7 @@ import (
7 7
 type TaCaseKey struct {
8 8
 	KeyId      string    `xorm:"not null pk VARCHAR(64)"`
9 9
 	LockNum    string    `xorm:"VARCHAR(50)"`
10
+	LockNo     int       `xorm:"SMALLINT(11)"`
10 11
 	Status     int       `xorm:"SMALLINT(6)"`
11 12
 	CreateDate time.Time `xorm:"DATETIME"`
12 13
 	OrgId      string    `xorm:"VARCHAR(64)"`

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

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

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

@@ -7,7 +7,7 @@ import (
7 7
 type TaVipCard struct {
8 8
 	VipCardId   string    `xorm:"not null pk VARCHAR(64)"`
9 9
 	VipCardName string    `xorm:"VARCHAR(64)"`
10
-	CardAmount  float32   `xorm:"FLOAT(8,2)"`
10
+	CardAmount  string    `xorm:"DECIMAL(8,2)"`
11 11
 	CreateDate  time.Time `xorm:"DATETIME"`
12 12
 	TotalCount  int       `xorm:"INT(11)"`
13 13
 	Status      int       `xorm:"SMALLINT(6)"`

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

@@ -47,7 +47,7 @@ func (m *UserDAO) GetUserList(username, typeid, caseids string, page int, pageSi
47 47
 		sql = sql + " and user.user_id in (select user_id from sys_user_type where type_id = '" + typeid + "')"
48 48
 	}
49 49
 
50
-	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(page*pageSize)
50
+	sql = sql + " order by create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
51 51
 	err := m.db.Sql(sql).Find(&users)
52 52
 	return users, err
53 53
 }

+ 290
- 0
models/verify/verify.go Näytä tiedosto

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

+ 53
- 4
models/vipcard/vipcard.go Näytä tiedosto

@@ -1,6 +1,7 @@
1 1
 package vipcard
2 2
 
3 3
 import (
4
+	"math/rand"
4 5
 	"spaceofcheng/services/models"
5 6
 	"spaceofcheng/services/models/model"
6 7
 	"spaceofcheng/services/utils"
@@ -32,7 +33,7 @@ type VipChild struct {
32 33
 }
33 34
 
34 35
 // GetVipCardList获取VIP卡列表
35
-func (m *VipcardDAO) GetVipCardList(caseid string) ([]VipChild, error) {
36
+func (m *VipcardDAO) GetVipCardList(caseid string, page int, pageSize int) ([]VipChild, error) {
36 37
 	var vipcards []VipChild
37 38
 	sql := `SELECT
38 39
 	vcc.*,
@@ -45,13 +46,34 @@ FROM
45 46
 	INNER JOIN ta_customer tc on vcc.customer_id = tc.customer_id
46 47
 WHERE
47 48
 	vcc.status > 0 ` + strconv.Itoa(models.STATUS_DEL) +
48
-		`AND sc.case_id IN(` + strings.Replace(caseid, ",", "','", -1) + `) `
49
+		`AND sc.case_id IN('` + strings.Replace(caseid, ",", "','", -1) + `') `
50
+	sql = sql + " order by vc.create_date desc limit " + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
49 51
 	err := m.db.Sql(sql).Find(&vipcards)
50 52
 	return vipcards, err
51 53
 }
52 54
 
55
+func (m *VipcardDAO) GetCardCount(caseid string) (int, error) {
56
+	var vipcards []VipChild
57
+	sql := `SELECT
58
+	vcc.*,
59
+	sc.case_name,
60
+	tc.customer_name
61
+FROM
62
+	ta_vip_card_child vcc
63
+	INNER JOIN ta_vip_card vc ON vcc.vip_card_id = vc.vip_card_id
64
+	INNER JOIN sys_case sc ON vc.case_id = sc.case_id 
65
+	INNER JOIN ta_customer tc on vcc.customer_id = tc.customer_id
66
+WHERE
67
+	vcc.status > 0 ` + strconv.Itoa(models.STATUS_DEL) +
68
+		`AND sc.case_id IN('` + strings.Replace(caseid, ",", "','", -1) + `') `
69
+	err := m.db.Sql(sql).Find(&vipcards)
70
+	return len(vipcards), err
71
+
72
+}
73
+
53 74
 // AddVipCard 新增VIP卡
54 75
 func (m *VipcardDAO) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, error) {
76
+	vipCard.VipCardName = "面值" + vipCard.CardAmount + "元VIP卡"
55 77
 	vipCard.VipCardId = utils.GetGUID()
56 78
 	vipCard.CreateDate = time.Now()
57 79
 	vipCard.Status = models.STATUS_NORMAL
@@ -82,13 +104,40 @@ func (m *VipcardDAO) GetVipChildByCode(vipCode string) (*model.TaVipCardChild, e
82 104
 	return nil, nil
83 105
 }
84 106
 
107
+// GetVipCardById 根据id获取VIP卡
108
+func (m *VipcardDAO) GetVipCardById(id string) (*model.TaVipCard, error) {
109
+	var vipCard []model.TaVipCard
110
+	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("vip_card_id = ?", id).Find(&vipCard)
111
+	if err != nil {
112
+		return nil, err
113
+	}
114
+	if len(vipCard) > 0 {
115
+		return &vipCard[0], nil
116
+	}
117
+	return nil, nil
118
+}
119
+
85 120
 // UpdateVipChild 更新子卡
86
-func (m *VipcardDAO) UpdateVipChild(vipChild model.TaVipCardChild) error {
121
+func (m *VipcardDAO) UpdateVipChild(vipChild *model.TaVipCardChild) error {
122
+	vipChild.ActiveDate = time.Now()
87 123
 	var cols = []string{
88 124
 		"customer_id",
89 125
 		"customer_tel",
90 126
 		"active_date",
91 127
 	}
92
-	_, err := m.db.Cols(cols...).Where("vip_card_child_id", vipChild.VipCardChildId).Update(vipChild)
128
+	_, err := m.db.Cols(cols...).Where("vip_card_child_id = ?", vipChild.VipCardChildId).Update(vipChild)
93 129
 	return err
94 130
 }
131
+
132
+// GenerateChildCode 生成子卡code
133
+func (m *VipcardDAO) GenerateChildCode() string {
134
+	var temp1 int = rand.Intn(9)*87 + 11
135
+	var temp2 int = rand.Intn(9)*89 + 13
136
+	nano := time.Now().UnixNano()
137
+	var nanostr string = strconv.FormatInt(nano, 10)
138
+	var temp3 string = nanostr[11:]
139
+	var temp4 string = "8"
140
+	var temp5 int = rand.Intn(9)*7 + 17
141
+	var code string = "88" + strconv.Itoa(temp1) + temp4 + strconv.Itoa(temp2) + temp3 + strconv.Itoa(temp5)
142
+	return code
143
+}

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

@@ -10,6 +10,7 @@ import (
10 10
 	"spaceofcheng/services/controllers/message"
11 11
 	"spaceofcheng/services/controllers/system"
12 12
 	"spaceofcheng/services/controllers/user"
13
+	"spaceofcheng/services/controllers/vipcard"
13 14
 
14 15
 	"github.com/astaxie/beego"
15 16
 )
@@ -98,6 +99,7 @@ func getCommonRoutes() beego.LinkNamespace {
98 99
 		// caseuser 案场人员
99 100
 		beego.NSRouter("/case/user", &cases.CaseController{}, "get:GetCaseUserByCase"),
100 101
 		beego.NSRouter("/case/userbytype", &cases.CaseController{}, "get:GetCaseUserByType"),
102
+		beego.NSRouter("/case/usertype", &cases.CaseController{}, "get:GetCaseUserType"),
101 103
 		beego.NSRouter("/case/user/:userid", &cases.CaseController{}, "get:GetCaseUserByID"),
102 104
 		beego.NSRouter("/case/user", &cases.CaseController{}, "post:SaveCaseUser"),
103 105
 		beego.NSRouter("/case/user", &cases.CaseController{}, "put:SaveCaseUser"),
@@ -137,12 +139,18 @@ func getCommonRoutes() beego.LinkNamespace {
137 139
 		beego.NSRouter("/case/table", &cases.CaseController{}, "put:SaveCaseTable"),
138 140
 		beego.NSRouter("/case/table/:tableid", &cases.CaseController{}, "delete:DelCaseTable"),
139 141
 
142
+		// channel 渠道
140 143
 		beego.NSRouter("/channel", &channel.ChannelController{}, "get:GetChannelList"),
141 144
 		beego.NSRouter("/channel/:channelId", &channel.ChannelController{}, "get:GetChannelById"),
142 145
 		beego.NSRouter("/channel", &channel.ChannelController{}, "post:SaveChannel"),
143 146
 		beego.NSRouter("/channel", &channel.ChannelController{}, "put:SaveChannel"),
144 147
 		beego.NSRouter("/channel/:channelId", &channel.ChannelController{}, "delete:DeleteChannel"),
145 148
 
149
+		// vipcard VIP卡
150
+		beego.NSRouter("/vipcard", &vipcard.VipcardController{}, "get:GetVipList"),
151
+		beego.NSRouter("/vipcard", &vipcard.VipcardController{}, "post:AddVipCard"),
152
+		beego.NSRouter("/vipcard/:vipCardChildCode", &vipcard.VipcardController{}, "put:UserCharge"),
153
+
146 154
 		// role 角色
147 155
 		beego.NSRouter("/role", &system.RoleController{}, "get:GetRoleList"),
148 156
 		beego.NSRouter("/role/:roleid", &system.RoleController{}, "get:GetRoleByID"),

+ 6
- 0
service/cases/caseuser.go Näytä tiedosto

@@ -74,3 +74,9 @@ func (s *CaseServ) DelCaseUser(userid string) error {
74 74
 	err := s.dao.DelCaseUser(userid)
75 75
 	return err
76 76
 }
77
+
78
+// GetUserType 获取相关人员类型
79
+func (s *CaseServ) GetUserType(orgid string) ([]model.SysCaseUserType, error) {
80
+	types, err := s.dao.GetUserType(orgid)
81
+	return types, err
82
+}

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

@@ -1,4 +1,5 @@
1 1
 package course
2
+<<<<<<< HEAD
2 3
 
3 4
 import (
4 5
 	"errors"
@@ -291,3 +292,5 @@ func (s *CourseServ) SaveOrder(order *model.TaCourseOrders, coupons []model.TaCo
291 292
 
292 293
 	return nil
293 294
 }
295
+=======
296
+>>>>>>> 7993349f4b49370d02267cd185e2bff99b0e8469

+ 3
- 3
service/message/news.go Näytä tiedosto

@@ -10,19 +10,19 @@ import (
10 10
 )
11 11
 
12 12
 // GetNewsList 获取咨询列表
13
-func (s *MessageServ) GetNewsList(locationid, orgid string, page int, pageSize int) (map[string]interface{}, error) {
13
+func (s *MessageServ) GetNewsList(locationid, title, orgid string, page int, pageSize int) (map[string]interface{}, error) {
14 14
 	if pageSize == 0 {
15 15
 		pageSize = service.PAGENUM
16 16
 	}
17 17
 	if page == 0 {
18 18
 		page = 1
19 19
 	}
20
-	infos, err := s.dao.GetNewsList(locationid, orgid, page, pageSize)
20
+	infos, err := s.dao.GetNewsList(locationid, title, orgid, page, pageSize)
21 21
 	if err != nil {
22 22
 		beego.Error(err)
23 23
 		return nil, err
24 24
 	}
25
-	total, err := s.dao.GetNewsListCount(locationid, orgid)
25
+	total, err := s.dao.GetNewsListCount(locationid, title, orgid)
26 26
 	if err != nil {
27 27
 		beego.Error(err)
28 28
 		return nil, err

+ 109
- 4
service/vipcard/vipcard.go Näytä tiedosto

@@ -1,20 +1,125 @@
1 1
 package vipcard
2 2
 
3 3
 import (
4
+	"spaceofcheng/services/models"
5
+	"spaceofcheng/services/models/customer"
6
+	"spaceofcheng/services/models/model"
4 7
 	"spaceofcheng/services/models/vipcard"
8
+	"spaceofcheng/services/service"
5 9
 	"spaceofcheng/services/utils"
10
+
11
+	"github.com/astaxie/beego"
6 12
 )
7 13
 
8 14
 // CaseServ 系统处理
9 15
 type VipcardServ struct {
10
-	ctx *utils.Context
11
-	dao *vipcard.VipcardDAO
16
+	ctx  *utils.Context
17
+	dao  *vipcard.VipcardDAO
18
+	cdao *customer.CustomerDAO
12 19
 }
13 20
 
14 21
 // NewVipcardServ 初始化
15 22
 func NewVipcardServ(ctx *utils.Context) *VipcardServ {
16 23
 	return &VipcardServ{
17
-		ctx: ctx,
18
-		dao: vipcard.NewVipcardDAO(ctx),
24
+		ctx:  ctx,
25
+		dao:  vipcard.NewVipcardDAO(ctx),
26
+		cdao: customer.NewCustomerDAO(ctx),
27
+	}
28
+}
29
+
30
+// GetVipChild 获取VIP卡列表
31
+func (s *VipcardServ) GetVipChild(caseid string, page, pageSize int) (map[string]interface{}, error) {
32
+	if pageSize == 0 {
33
+		pageSize = service.PAGENUM
34
+	}
35
+	if page == 0 {
36
+		page = 1
37
+	}
38
+	vipchild, err := s.dao.GetVipCardList(caseid, page, pageSize)
39
+	if err != nil {
40
+		beego.Error(err)
41
+		return nil, err
42
+	}
43
+	total, err := s.dao.GetCardCount(caseid)
44
+	if err != nil {
45
+		beego.Error(err)
46
+		return nil, err
19 47
 	}
48
+	return map[string]interface{}{
49
+		"list":     vipchild,
50
+		"pagesize": pageSize,
51
+		"pagenum":  total,
52
+		"page":     page,
53
+	}, err
54
+}
55
+
56
+// 根据code获取vip子卡
57
+func (s *VipcardServ) GetVipChildByCode(vipChildId string) (*model.TaVipCardChild, error) {
58
+	vipCardChild, err := s.dao.GetVipChildByCode(vipChildId)
59
+	return vipCardChild, err
60
+}
61
+
62
+// UpdateVipChild 更新子卡
63
+func (s *VipcardServ) UpdateVipChild(vipChild *model.TaVipCardChild) error {
64
+	var err error
65
+	err = s.dao.UpdateVipChild(vipChild)
66
+	return err
67
+}
68
+
69
+// AddVipCard 新建VIP卡
70
+func (s *VipcardServ) AddVipCard(vipCard model.TaVipCard) (*model.TaVipCard, error) {
71
+	vipcard, err := s.dao.AddVipCard(vipCard)
72
+	if err != nil {
73
+		return nil, err
74
+	}
75
+	for a := 0; a < vipcard.TotalCount; a++ {
76
+		var vipChild model.TaVipCardChild
77
+		vipChild.VipCardId = vipcard.VipCardId
78
+		vipChild.VipCardChildCode = s.dao.GenerateChildCode()
79
+		_, err := s.dao.AddVipChildCard(vipChild)
80
+		if err != nil {
81
+			return nil, err
82
+		}
83
+
84
+	}
85
+	return nil, nil
86
+}
87
+
88
+func (s *VipcardServ) FindCustomerByTel(tel string) (*model.TaCustomer, error) {
89
+	customer, err := s.cdao.GetCustomerByPhone(tel)
90
+	if err != nil {
91
+		return nil, err
92
+	}
93
+	return customer, err
94
+}
95
+
96
+// CustomerCharge 给用户充值
97
+func (s *VipcardServ) CustomerCharge(vipchild *model.TaVipCardChild, createUser model.SysUser) error {
98
+	customer, err := s.cdao.GetCustomerByPhone(vipchild.CustomerTel)
99
+	if err != nil {
100
+		return err
101
+	}
102
+	customerId := customer.CustomerId
103
+	account, err := s.cdao.GetAccountByCust(customerId)
104
+	if err != nil {
105
+		return err
106
+	}
107
+	vipcard, err := s.dao.GetVipCardById(vipchild.VipCardId)
108
+	if err != nil {
109
+		return err
110
+	}
111
+	var record model.TaAccountChange
112
+	record.CustomerId = customerId
113
+	record.Amount = vipcard.CardAmount
114
+	record.CaseId = vipcard.CaseId
115
+	record.CustomerName = customer.CustomerName
116
+	record.ChangeType = models.CONSUME_MONEYCHG
117
+	record.ChangeSource = models.ACCSOURCE_RECHARGE
118
+	record.SourceId = vipchild.VipCardChildId
119
+	record.SourceName = vipcard.VipCardName
120
+	record.CreateUser = createUser.UserId
121
+	record.FloatType = models.ACCOUNT_INCOME
122
+	record.AccountId = account.AccountId
123
+	return s.cdao.InsertAccountRecords(&record)
124
+
20 125
 }