瀏覽代碼

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

keyman1995 6 年之前
父節點
當前提交
7574f9919e

+ 1
- 1
controllers/customer/customer.go 查看文件

@@ -105,7 +105,7 @@ func (c *CustomerController) SignUp() {
105 105
 	csID := c.GetString("case")
106 106
 	arID := c.GetString("sales")
107 107
 
108
-	if phone == "" || captcha == "" || csID == "" || arID == "" {
108
+	if phone == "" || captcha == "" {
109 109
 		c.ResponseError(errors.New("请填写完整注册信息"))
110 110
 	}
111 111
 

+ 22
- 0
log/common.log 查看文件

@@ -142,3 +142,25 @@
142 142
 2018/09/20 15:40:24 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
143 143
 2018/09/20 15:40:24 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
144 144
 2018/09/20 15:40:25 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
145
+2018/09/20 16:53:56 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
146
+2018/09/20 16:53:56 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
147
+2018/09/20 16:53:56 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
148
+2018/09/20 17:09:00 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
149
+2018/09/20 17:09:01 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
150
+2018/09/20 17:17:38 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
151
+2018/09/20 17:18:01 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
152
+2018/09/20 17:18:13 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
153
+2018/09/20 17:18:16 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
154
+2018/09/20 17:18:18 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
155
+2018/09/20 17:18:34 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
156
+2018/09/20 17:18:35 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
157
+2018/09/20 17:18:36 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
158
+2018/09/20 17:18:37 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
159
+2018/09/20 17:18:44 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
160
+2018/09/20 17:18:54 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
161
+2018/09/20 17:18:54 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
162
+2018/09/20 17:30:29 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
163
+2018/09/20 17:30:31 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
164
+2018/09/20 17:30:45 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
165
+2018/09/20 17:30:45 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36
166
+2018/09/20 17:30:48 [E] User-Agent: mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/68.0.3440.106 safari/537.36

+ 1
- 1
models/card/card.go 查看文件

@@ -237,7 +237,7 @@ type CaseUsableCard struct {
237 237
 // GetCaseUsableCard 获取案场可用卡信息
238 238
 func (m *CardDAO) GetCaseUsableCard(caseid, userid string, page, pageSize int) ([]CaseUsableCard, error) {
239 239
 	var cards []CaseUsableCard
240
-	sql := `select * from ta_coupon_card where case_id=? and status=? and DATE_FORMAT(end_date, '%Y-%m-%d')>=DATE_FORMAT(NOW(), '%Y-%m-%d') and send_type=? order by create_date limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
240
+	sql := `select * from ta_coupon_card where case_id=? and status=? and DATE_FORMAT(end_date, '%Y-%m-%d')>=DATE_FORMAT(NOW(), '%Y-%m-%d') and send_type=? order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
241 241
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL, models.GIVE_TYPE_CASE).Find(&cards)
242 242
 	for inx, card := range cards {
243 243
 		if userid != "" {

+ 50
- 10
models/card/record.go 查看文件

@@ -2,11 +2,11 @@ package card
2 2
 
3 3
 import (
4 4
 	"spaceofcheng/services/models/model"
5
-	"github.com/go-xorm/xorm"
6 5
 	"spaceofcheng/services/utils"
7 6
 	"strconv"
8
-)
9 7
 
8
+	"github.com/go-xorm/xorm"
9
+)
10 10
 
11 11
 // RecordDAO 当前数据库操作对象
12 12
 type RecordDAO struct {
@@ -25,17 +25,17 @@ func NewRecordDAO(ctx *utils.Context) *RecordDAO {
25 25
 // RecordInfo 卡
26 26
 type RecordInfo struct {
27 27
 	model.TaCouponGiveRecord `xorm:"extends"`
28
-	CustomerName string
29
-	Phone string
30
-	RecommendName string
28
+	CustomerName             string
29
+	Phone                    string
30
+	RecommendName            string
31 31
 }
32 32
 
33 33
 // getRecordList 根据条件查询赠送记录
34
-func (c *RecordDAO) GetRecordList(startDate string, endDate string, person string,page int,pageSize int) ([]RecordInfo, error) {
34
+func (c *RecordDAO) GetRecordList(startDate string, endDate string, person string, page int, pageSize int) ([]RecordInfo, error) {
35 35
 	var info []RecordInfo
36 36
 
37 37
 	sql := "select tc.customer_name,tc.phone,tc.recommend_name,tgr.* from ta_coupon_give_record tgr LEFT JOIN ta_customer tc on tgr.to_id = tc.customer_id"
38
-	
38
+
39 39
 	if startDate != "" || endDate != "" || person != "" {
40 40
 		sql = sql + ` WHERE`
41 41
 	}
@@ -52,7 +52,7 @@ func (c *RecordDAO) GetRecordList(startDate string, endDate string, person strin
52 52
 		}
53 53
 		sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') <= DATE_FORMAT('` + endDate + `','%Y-%m-%d')`
54 54
 	}
55
-	
55
+
56 56
 	if person != "" {
57 57
 		// 传入了 开始时间 或者 结束时间 的时候,添加 and
58 58
 		if startDate != "" || endDate != "" {
@@ -65,9 +65,49 @@ func (c *RecordDAO) GetRecordList(startDate string, endDate string, person strin
65 65
 
66 66
 	err := c.db.SQL(sql).Find(&info)
67 67
 	if err != nil {
68
-		return nil,err
68
+		return nil, err
69
+	}
70
+
71
+	return info, err
72
+
73
+}
74
+
75
+// GetRecordCount 获取count
76
+func (c *RecordDAO) GetRecordCount(startDate string, endDate string, person string) (int, error) {
77
+	var info []RecordInfo
78
+
79
+	sql := "select tc.customer_name,tc.phone,tc.recommend_name,tgr.* from ta_coupon_give_record tgr LEFT JOIN ta_customer tc on tgr.to_id = tc.customer_id"
80
+
81
+	if startDate != "" || endDate != "" || person != "" {
82
+		sql = sql + ` WHERE`
83
+	}
84
+
85
+	// 传入了开始时间的时候
86
+	if startDate != "" {
87
+		sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') >= DATE_FORMAT('` + startDate + `','%Y-%m-%d')`
88
+	}
89
+	// 传入了结束时间的时候
90
+	if endDate != "" {
91
+		// 传入了开始时间的时候,添加 and
92
+		if startDate != "" {
93
+			sql = sql + ` and`
94
+		}
95
+		sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') <= DATE_FORMAT('` + endDate + `','%Y-%m-%d')`
96
+	}
97
+
98
+	if person != "" {
99
+		// 传入了 开始时间 或者 结束时间 的时候,添加 and
100
+		if startDate != "" || endDate != "" {
101
+			sql = sql + ` and`
102
+		}
103
+		sql = sql + ` tc.recommend_name like '%` + person + `%'`
104
+	}
105
+
106
+	err := c.db.SQL(sql).Find(&info)
107
+	if err != nil {
108
+		return 0, err
69 109
 	}
70 110
 
71
-	return info,err
111
+	return len(info), err
72 112
 
73 113
 }

+ 1
- 1
models/constant.go 查看文件

@@ -44,7 +44,7 @@ const (
44 44
 // 人员禁止内容
45 45
 const (
46 46
 	// 禁止下单
47
-	FORBID_ORDER = "order"
47
+	FORBID_ORDER = "goods"
48 48
 
49 49
 	// 禁止发卡, 发券
50 50
 	FORBID_COUPON = "coupon"

+ 1
- 1
models/coupon/coupon.go 查看文件

@@ -299,7 +299,7 @@ func (m *CouponDAO) GetCouponBySendType(caseids, sendtype string) ([]model.TaCou
299 299
 // GetCaseUsableCoupon 获取案场可用优惠券信息
300 300
 func (m *CouponDAO) GetCaseUsableCoupon(caseid, userid string, page, pageSize int) ([]CaseCouponDetail, error) {
301 301
 	var Coupons []CaseCouponDetail
302
-	sql := `select * from ta_coupon where case_id=? and status=? and DATE_FORMAT(end_date, '%Y-%m-%d')>=DATE_FORMAT(NOW(), '%Y-%m-%d') and send_type=? order by create_date limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
302
+	sql := `select * from ta_coupon where case_id=? and status=? and DATE_FORMAT(end_date, '%Y-%m-%d')>=DATE_FORMAT(NOW(), '%Y-%m-%d') and send_type=? order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
303 303
 	err := m.db.Sql(sql, caseid, models.STATUS_NORMAL, models.GIVE_TYPE_CASE).Find(&Coupons)
304 304
 	for inx, coupon := range Coupons {
305 305
 		if userid != "" {

+ 31
- 2
models/course/course.go 查看文件

@@ -114,6 +114,29 @@ func (m *CourseDAO) GetCourseByID(courseid string) (*model.TaCourse, error) {
114 114
 	return nil, nil
115 115
 }
116 116
 
117
+// CheckCourseInCardOrCoupon 判断课程是否存在于卡券种
118
+func (m *CourseDAO) CheckCourseInCardOrCoupon(courseid string) (bool, error) {
119
+	sql := `select a.* from ta_coupon_card_target a inner join ta_coupon_card b on a.card_id=b.card_id where b.status>? and a.target_id=?`
120
+	var cardtarget []model.TaCouponCardTarget
121
+	err := m.db.Sql(sql, models.STATUS_DEL, courseid).Find(&cardtarget)
122
+	if err != nil {
123
+		return false, err
124
+	}
125
+	if len(cardtarget) > 0 {
126
+		return false, nil
127
+	}
128
+	sql = `select a.* from ta_coupon_target a inner join ta_coupon b on a.coupon_id=b.coupon_id where b.status>? and a.target_id=?`
129
+	var coupontarget []model.TaCouponCardTarget
130
+	err = m.db.Sql(sql, models.STATUS_DEL, courseid).Find(&coupontarget)
131
+	if err != nil {
132
+		return false, err
133
+	}
134
+	if len(coupontarget) > 0 {
135
+		return false, nil
136
+	}
137
+	return true, nil
138
+}
139
+
117 140
 // AddCourse 新增课程信息
118 141
 func (m *CourseDAO) AddCourse(course model.TaCourse) (*model.TaCourse, error) {
119 142
 	course.CourseId = utils.GetGUID()
@@ -509,6 +532,9 @@ type CustomerCourse struct {
509 532
 	OrdersNo               string
510 533
 	CaseName               string
511 534
 	CaseAddress            string
535
+	BeginDate              time.Time
536
+	EndDate                time.Time
537
+	Remark                 string
512 538
 	Details                []model.TaCustomerCourseDetail
513 539
 }
514 540
 
@@ -516,7 +542,7 @@ type CustomerCourse struct {
516 542
 func (m *CourseDAO) GetCustomerCourse(custID string, page, pageSize int) ([]CustomerCourse, error) {
517 543
 	var courses []CustomerCourse
518 544
 	sql := `select a.*,a.customer_course_id as qr_code_string,b.orders_no,c.course_img,d.case_address,
519
-	d.case_name from ta_customer_course a 
545
+	d.case_name,c.begin_date,c.end_date,c.remark from ta_customer_course a 
520 546
 	inner join ta_course c on a.course_id=c.course_id
521 547
 	INNER JOIN sys_case d on a.case_id = d.case_id
522 548
 	left join ta_course_orders b on a.source_id=b.orders_id
@@ -561,7 +587,10 @@ func (m *CourseDAO) GetCustomerCourseByID(id string) (*CustomerCourse, error) {
561 587
 		b.orders_no,
562 588
 		c.course_img,
563 589
 		d.case_address,
564
-		d.case_name
590
+		d.case_name,
591
+		c.begin_date,
592
+		c.end_date,
593
+		c.remark
565 594
 	FROM
566 595
 		ta_customer_course a
567 596
 	INNER JOIN ta_course c ON a.course_id = c.course_id

+ 1
- 6
routers/common.go 查看文件

@@ -175,7 +175,6 @@ func getCommonRoutes() beego.LinkNamespace {
175 175
 		beego.NSRouter("/vipcard", &vipcard.VipcardController{}, "post:AddVipCard"),
176 176
 		beego.NSRouter("/vipcard/:vipCardChildCode", &vipcard.VipcardController{}, "put:UserCharge"),
177 177
 		beego.NSRouter("/vipcard/excel", &vipcard.VipcardController{}, "get:GetVipListExcel"),
178
-		
179 178
 
180 179
 		// courseVerify 核销课程
181 180
 		beego.NSRouter("/verify/course/code/:customerCourseId", &verify.VerifyController{}, "get:GetCustomerCourseDetailListById"),
@@ -264,7 +263,7 @@ func getCommonRoutes() beego.LinkNamespace {
264 263
 		beego.NSRouter("/card/:id", &card.CardController{}, "put:UpdateCard"),
265 264
 		beego.NSRouter("/card/:id/to/:users", &card.CardController{}, "post:GiveCard"),
266 265
 		// 赠送记录
267
-		beego.NSRouter("/card/record", &card.RecordController{}, "get:GetRecordList"),
266
+		beego.NSRouter("/record", &card.RecordController{}, "get:GetRecordList"),
268 267
 
269 268
 		// 文件
270 269
 		beego.NSRouter("/file", &controllers.BaseController{}, "post:FileUpload"),
@@ -308,9 +307,5 @@ func getCommonRoutes() beego.LinkNamespace {
308 307
 		beego.NSRouter("/statistics/cardcouponused/excel", &statistics.StatisticsController{}, "get:CardCouponUsedStatisticsExcel"),
309 308
 		beego.NSRouter("/statistics/cardcouponverify", &statistics.StatisticsController{}, "get:CardCouponVerifyStatistics"),
310 309
 		beego.NSRouter("/statistics/cardcouponverify/excel", &statistics.StatisticsController{}, "get:CardCouponVerifyStatisticsExcel"),
311
-
312
-		
313
-
314
-
315 310
 	)
316 311
 }

+ 12
- 15
service/card/record.go 查看文件

@@ -7,31 +7,30 @@ import (
7 7
 
8 8
 // RecordServ 系统处理
9 9
 type RecordServ struct {
10
-	ctx       *utils.Context
11
-	dao       *card.RecordDAO
10
+	ctx *utils.Context
11
+	dao *card.RecordDAO
12 12
 }
13 13
 
14 14
 // NewRecordServ 初始化
15 15
 func NewRecordServ(ctx *utils.Context) *RecordServ {
16 16
 	return &RecordServ{
17
-		ctx:       ctx,
18
-		dao:       card.NewRecordDAO(ctx),
17
+		ctx: ctx,
18
+		dao: card.NewRecordDAO(ctx),
19 19
 	}
20 20
 }
21 21
 
22 22
 // 查询赠送记录
23
-func (s *RecordServ) GetRecordList(startDate string, endDate string, person string,page int,pageSize int) (map[string]interface{}, error) {
23
+func (s *RecordServ) GetRecordList(startDate string, endDate string, person string, page int, pageSize int) (map[string]interface{}, error) {
24 24
 
25
-	 info,err := s.dao.GetRecordList(startDate, endDate, person, page, pageSize)
26
-	 var total int
27
-	 if err != nil {
28
-		 return nil,err
29
-	 }
30
-
31
-	 if len(info) > 0 {
32
-		total = len(info)
25
+	info, err := s.dao.GetRecordList(startDate, endDate, person, page, pageSize)
26
+	if err != nil {
27
+		return nil, err
33 28
 	}
34 29
 
30
+	total, err := s.dao.GetRecordCount(startDate, endDate, person)
31
+	if err != nil {
32
+		return nil, err
33
+	}
35 34
 	return map[string]interface{}{
36 35
 		"list":     info,
37 36
 		"pagesize": pageSize,
@@ -40,5 +39,3 @@ func (s *RecordServ) GetRecordList(startDate string, endDate string, person stri
40 39
 	}, err
41 40
 
42 41
 }
43
-
44
-

+ 5
- 2
service/cases/cases.go 查看文件

@@ -157,9 +157,12 @@ func (s *CaseServ) GetAllCasesAndSales(org string) (map[string]interface{}, erro
157 157
 		return nil, errors.New("获取案场销售失败")
158 158
 	}
159 159
 
160
+	manager, err := s.dao.GetCaseUserByType(csIDs, models.USERTYPE_MANAGER)
161
+
160 162
 	return map[string]interface{}{
161
-		"cases": cs,
162
-		"sales": users,
163
+		"cases":   cs,
164
+		"sales":   users,
165
+		"manager": manager,
163 166
 	}, nil
164 167
 }
165 168
 

+ 16
- 0
service/course/course.go 查看文件

@@ -218,6 +218,14 @@ func (s *CourseServ) DelCourse(courseid string) error {
218 218
 	if courseinfo.Status != course.STATUS_UNPUBLISH {
219 219
 		return utils.LogError("课程状态异常!不允许删除!")
220 220
 	}
221
+	isok, err := s.dao.CheckCourseInCardOrCoupon(courseid)
222
+	if err != nil {
223
+		utils.LogError("判断是否绑定卡券中失败: " + err.Error())
224
+		return errors.New("判断是否绑定卡券中失败")
225
+	}
226
+	if !isok {
227
+		return errors.New("课程已绑定卡券,不允许删除!")
228
+	}
221 229
 	err = s.dao.DelCourse(courseid)
222 230
 	if err != nil {
223 231
 		utils.LogError("刪除课程信息失败: " + err.Error())
@@ -454,6 +462,14 @@ func (s *CourseServ) DelCourseDetail(detailid string) error {
454 462
 	if courseinfo.Status != course.STATUS_UNPUBLISH {
455 463
 		return utils.LogError("课程状态异常!不允许删除!")
456 464
 	}
465
+	isok, err := s.dao.CheckCourseInCardOrCoupon(detail.CourseId)
466
+	if err != nil {
467
+		utils.LogError("判断是否绑定卡券中失败: " + err.Error())
468
+		return errors.New("判断是否绑定卡券中失败")
469
+	}
470
+	if !isok {
471
+		return errors.New("课时已绑定卡券,不允许删除!")
472
+	}
457 473
 	err = s.dao.DelCourseDetail(detailid)
458 474
 	if err != nil {
459 475
 		utils.LogError("删除排课信息失败: " + err.Error())

+ 7
- 0
service/course/order.go 查看文件

@@ -96,6 +96,13 @@ func (s *CourseServ) Orders(
96 96
 			return errors.New("查询优惠券信息失败")
97 97
 		}
98 98
 
99
+		if coupon.StartDate.After(time.Now().Local()) {
100
+			return errors.New("该优惠券还未到有效期,不允许下单!")
101
+		}
102
+		if coupon.EndDate.Before(time.Now().Local()) {
103
+			return errors.New("优惠券已失效,不允许下单!")
104
+		}
105
+
99 106
 		// 判断优惠券是否可以抵用商品
100 107
 		var isdy = false
101 108
 		if coupon.IsAll == 1 {

+ 6
- 0
service/goods/orders.go 查看文件

@@ -71,6 +71,12 @@ func (s *GoodsServ) Orders(
71 71
 				return errors.New("优惠券已被使用!请重新选择优惠券!")
72 72
 			}
73 73
 
74
+			if customerCoupon.StartDate.After(time.Now().Local()) {
75
+				return errors.New("该优惠券还未到有效期,不允许下单!")
76
+			}
77
+			if customerCoupon.EndDate.Before(time.Now().Local()) {
78
+				return errors.New("优惠券已失效,不允许下单!")
79
+			}
74 80
 			// 根据id获取优惠券信息
75 81
 			coupon, err := s.couponDAO.GetCouponInfoByCustomerCouponID(customercouponid)
76 82
 			if err != nil {