Explorar el Código

增加案场营业及下单次数校验

wangfei hace 6 años
padre
commit
22e9145f63
Se han modificado 6 ficheros con 117 adiciones y 19 borrados
  1. 25
    0
      controllers/cases/case.go
  2. 2
    2
      models/cases/conf.go
  3. 46
    17
      models/cases/record.go
  4. 2
    0
      routers/common.go
  5. 11
    0
      service/cases/cases.go
  6. 31
    0
      service/goods/orders.go

+ 25
- 0
controllers/cases/case.go Ver fichero

@@ -1,9 +1,12 @@
1 1
 package cases
2 2
 
3 3
 import (
4
+	"errors"
5
+	"jcjy/demo/models"
4 6
 	"spaceofcheng/services/controllers"
5 7
 	"spaceofcheng/services/models/model"
6 8
 	"spaceofcheng/services/service/cases"
9
+	"spaceofcheng/services/utils"
7 10
 )
8 11
 
9 12
 // CaseController 信息
@@ -78,3 +81,25 @@ func (c *CaseController) GetOrgCases() {
78 81
 
79 82
 	c.ResponseJSON(res)
80 83
 }
84
+
85
+// OpenCaseCoffee 开启
86
+func (c *CaseController) OpenCaseCoffee() {
87
+	caseid := c.GetString(":caseid")
88
+	err := c.dao.UpdateCaseConf(caseid, cases.CONFTYPE_COFFEE, models.STATUS_NORMAL)
89
+	if err != nil {
90
+		utils.LogError("开启失败: " + err.Error())
91
+		c.ResponseError(errors.New("操作失败!"))
92
+	}
93
+	c.ResponseJSON("操作成功!")
94
+}
95
+
96
+// CloseCaseCoffee 关闭
97
+func (c *CaseController) CloseCaseCoffee() {
98
+	caseid := c.GetString(":caseid")
99
+	err := c.dao.UpdateCaseConf(caseid, cases.CONFTYPE_COFFEE, models.STATUS_READY)
100
+	if err != nil {
101
+		utils.LogError("关闭失败: " + err.Error())
102
+		c.ResponseError(errors.New("操作失败!"))
103
+	}
104
+	c.ResponseJSON("操作成功!")
105
+}

+ 2
- 2
models/cases/conf.go Ver fichero

@@ -9,7 +9,6 @@ import (
9 9
 // GetConfByCase 获取配置信息
10 10
 func (m *CaseDAO) GetConfByCase(caseid, conftype string) (*model.SysCaseConf, error) {
11 11
 	var conf = new(model.SysCaseConf)
12
-	conf.Status = models.STATUS_NORMAL
13 12
 	has, err := m.db.Where("case_id=?", caseid).And("conf_type=?", conftype).Get(&conf)
14 13
 	if err != nil {
15 14
 		return nil, err
@@ -23,6 +22,7 @@ func (m *CaseDAO) GetConfByCase(caseid, conftype string) (*model.SysCaseConf, er
23 22
 // SaveCaseConf 保存案场配置信息
24 23
 func (m *CaseDAO) SaveCaseConf(conf model.SysCaseConf) (*model.SysCaseConf, error) {
25 24
 	conf.ConfId = utils.GetGUID()
25
+	conf.Status = models.STATUS_READY
26 26
 	_, err := m.db.Insert(conf)
27 27
 	return &conf, err
28 28
 }
@@ -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("conf_id=?", conf.ConfId).Update(conf)
35
+	_, err := m.db.Cols(cols...).Where("case_id=?", conf.ConfId).And("conf_type=?", conf.ConfType).Update(conf)
36 36
 	return err
37 37
 }

+ 46
- 17
models/cases/record.go Ver fichero

@@ -18,6 +18,11 @@ type CaseRecord struct {
18 18
 	LeftNum             int
19 19
 }
20 20
 
21
+const (
22
+	ISOVER   = 1
23
+	ISNOOVER = 0
24
+)
25
+
21 26
 // GetCaseRecord 获取案场月记录
22 27
 func (m *CaseDAO) GetCaseRecord(caseids string, page, pageSize int) ([]CaseRecord, error) {
23 28
 	var records []CaseRecord
@@ -65,7 +70,7 @@ func (m *CaseDAO) AddRecord(record model.SysCaseRecord) (*model.SysCaseRecord, e
65 70
 	record.CreateDate = time.Now()
66 71
 	record.RecordId = utils.GetGUID()
67 72
 	record.Status = models.STATUS_NORMAL
68
-	record.IsOver = 1
73
+	record.IsOver = ISOVER
69 74
 	_, err := m.db.Insert(record)
70 75
 	return &record, err
71 76
 }
@@ -96,22 +101,46 @@ func (m *CaseDAO) GetRecordByID(recordid string) (*CaseRecord, error) {
96 101
 	}
97 102
 	if len(records) > 0 {
98 103
 		var record = records[0]
99
-		orders := new(model.TaGoodsOrders)
100
-		total, err := m.db.Where("case_id=?", record.CaseId).And("status=?", models.STATUS_NORMAL).And("user_type=?", goods.USERTPE_SALES).And("date_format(create_date,'%Y-%m')=?", record.Month).Sums(orders, "orders_num")
101
-		if err != nil {
102
-			return nil, err
103
-		}
104
-		record.ActrualNum = int(total[0])
105
-		var overnum int
106
-		var leftnum int
107
-		if record.ActrualNum > record.Num {
108
-			overnum = record.ActrualNum - record.Num
109
-		} else {
110
-			leftnum = record.Num - record.ActrualNum
111
-		}
112
-		record.OverNum = overnum
113
-		record.LeftNum = leftnum
114
-		return &record, err
104
+		info, err := m.GetRecordWithNum(record)
105
+		return info, err
106
+	}
107
+
108
+	return nil, nil
109
+}
110
+
111
+// GetRecordWithNum 获取月记录对应信息
112
+func (m *CaseDAO) GetRecordWithNum(record CaseRecord) (*CaseRecord, error) {
113
+	orders := new(model.TaGoodsOrders)
114
+	total, err := m.db.Where("case_id=?", record.CaseId).And("status=?", models.STATUS_NORMAL).And("user_type=?", goods.USERTPE_SALES).And("date_format(create_date,'%Y-%m')=?", record.Month).Sums(orders, "orders_num")
115
+	if err != nil {
116
+		return nil, err
117
+	}
118
+	record.ActrualNum = int(total[0])
119
+	var overnum int
120
+	var leftnum int
121
+	if record.ActrualNum > record.Num {
122
+		overnum = record.ActrualNum - record.Num
123
+	} else {
124
+		leftnum = record.Num - record.ActrualNum
125
+	}
126
+	record.OverNum = overnum
127
+	record.LeftNum = leftnum
128
+	return &record, err
129
+}
130
+
131
+// GetRecordByCase 获取案场当月记录信息
132
+func (m *CaseDAO) GetRecordByCase(caseid string) (*CaseRecord, error) {
133
+	var records []CaseRecord
134
+	sql := `select * from sys_case_record where month = date_format(NOW(),'%Y-%m') and case_id='` + caseid + `'`
135
+
136
+	err := m.db.Sql(sql).Find(&records)
137
+	if err != nil {
138
+		return nil, err
139
+	}
140
+	if len(records) > 0 {
141
+		var record = records[0]
142
+		info, err := m.GetRecordWithNum(record)
143
+		return info, err
115 144
 	}
116 145
 
117 146
 	return nil, nil

+ 2
- 0
routers/common.go Ver fichero

@@ -121,6 +121,8 @@ 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/open/:caseid", &cases.CaseController{}, "put:OpenCaseCoffee"),
125
+		beego.NSRouter("/case/close/:caseid", &cases.CaseController{}, "put:CloseCaseCoffee"),
124 126
 
125 127
 		// casekey 案场钥匙
126 128
 		beego.NSRouter("/case/key", &cases.CaseController{}, "get:GetKeyList"),

+ 11
- 0
service/cases/cases.go Ver fichero

@@ -158,3 +158,14 @@ func (s *CaseServ) GetCaseConf(caseid, conftype string) (*model.SysCaseConf, err
158 158
 	}
159 159
 	return conf, nil
160 160
 }
161
+
162
+// UpdateCaseConf 修改案场配置信息
163
+func (s *CaseServ) UpdateCaseConf(caseid, conftype string, status int) error {
164
+	var conf = model.SysCaseConf{
165
+		CaseId:   caseid,
166
+		ConfType: conftype,
167
+		Status:   status,
168
+	}
169
+	err := s.dao.UpdateCaseConf(conf)
170
+	return err
171
+}

+ 31
- 0
service/goods/orders.go Ver fichero

@@ -4,8 +4,10 @@ import (
4 4
 	"errors"
5 5
 	"math"
6 6
 	"spaceofcheng/services/models"
7
+	casemodel "spaceofcheng/services/models/cases"
7 8
 	"spaceofcheng/services/models/goods"
8 9
 	"spaceofcheng/services/models/model"
10
+	"spaceofcheng/services/service/cases"
9 11
 	"spaceofcheng/services/utils"
10 12
 	"strconv"
11 13
 	"time"
@@ -22,6 +24,11 @@ func (s *GoodsServ) Orders(
22 24
 		return err
23 25
 	}
24 26
 
27
+	// 校验案场信息
28
+	if err := s.validOrdersCase(info); err != nil {
29
+		return err
30
+	}
31
+
25 32
 	// 校验各种金额
26 33
 	if err := s.validBillCharges(info, details); err != nil {
27 34
 		return err
@@ -310,3 +317,27 @@ func (s *GoodsServ) GetOrdersByRecord(recordid string) ([]goods.OrdersWithGoods,
310 317
 	}
311 318
 	return orders, nil
312 319
 }
320
+
321
+// validOrdersCase 校验案场信息
322
+func (s *GoodsServ) validOrdersCase(info *model.TaGoodsOrders) error {
323
+	conf, err := s.caseDAO.GetConfByCase(info.CaseId, cases.CONFTYPE_COFFEE)
324
+	if err != nil {
325
+		utils.LogError("获取配置信息失败: " + err.Error())
326
+		return errors.New("获取配置信息失败")
327
+	}
328
+
329
+	if conf.Status != models.STATUS_NORMAL {
330
+		return errors.New("当前案场不为营业!不允许下单!")
331
+	}
332
+
333
+	// 获取当月记录
334
+	record, err := s.caseDAO.GetRecordByCase(info.CaseId)
335
+	if err != nil {
336
+		utils.LogError("获取月记录失败: " + err.Error())
337
+		return errors.New("获取月记录失败")
338
+	}
339
+	if record != nil && record.IsOver == casemodel.ISNOOVER && record.LeftNum < info.OrdersNum {
340
+		return errors.New("超出案场限制的本月下单次数!不允许下单!")
341
+	}
342
+	return nil
343
+}