胡轶钦 před 6 roky
rodič
revize
276e787cbb

+ 2
- 2
conf/db.conf Zobrazit soubor

@@ -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

+ 5
- 5
controllers/auth.go Zobrazit soubor

@@ -38,11 +38,11 @@ func (c *BaseController) authenticate() {
38 38
 }
39 39
 
40 40
 // SetTokenExipre 设置 token 过期
41
-func (c *BaseController) SetTokenExipre() {
42
-	// token := c.Context.Get("token")
43
-	// if token != nil {
44
-	// 	c.serv.UpdateTokenExpire(token.(string))
45
-	// }
41
+func (c *BaseController) SetTokenExipre(uid string) {
42
+	token := c.Context.Get("token")
43
+	if token != nil {
44
+		c.serv.UpdateTokenExpire(token.(string), uid)
45
+	}
46 46
 
47 47
 	c.Context.Set("token", "")
48 48
 }

+ 1
- 1
controllers/base.go Zobrazit soubor

@@ -74,7 +74,7 @@ func (c *BaseController) ResponseData(data interface{}, msg interface{}, code in
74 74
 
75 75
 	if status == http.StatusOK {
76 76
 		// 设置旧 token 过期
77
-		c.SetTokenExipre()
77
+		// c.SetTokenExipre()
78 78
 
79 79
 		// 生成新 token
80 80
 		c.CreateNewToken()

+ 1
- 1
controllers/bodychecklist/bodychecklist.go Zobrazit soubor

@@ -21,7 +21,7 @@ func (c *BodychecklistController) Constructor() {
21 21
 func (c *BodychecklistController) GetBodyCheckList() {
22 22
 	caseid := c.GetString("caseid")
23 23
 	phone := c.GetString("phone")
24
-	customerName := c.GetString("customerName")
24
+	customerName := c.GetString("name")
25 25
 	page, _ := c.GetInt("page")
26 26
 	pagesize, _ := c.GetInt("pagesize")
27 27
 	if page < 0 {

+ 8
- 2
controllers/cases/key.go Zobrazit soubor

@@ -1,8 +1,14 @@
1 1
 package cases
2 2
 
3
+import "spaceofcheng/services/models/model"
4
+
3 5
 // GetKeyList 获取钥匙列表
4 6
 func (c *CaseController) GetKeyList() {
5
-	caseid := c.GetString("caseid")
7
+	caseids := c.GetString("caseid")
8
+	if caseids == "" {
9
+		cases := c.Context.Get("cases").([]model.SysUserCase)
10
+		caseids = c.GetCaseIDs(cases)
11
+	}
6 12
 	page, _ := c.GetInt("page")
7 13
 	pageSize, _ := c.GetInt("pagesize")
8 14
 	num := c.GetString("num")
@@ -11,7 +17,7 @@ func (c *CaseController) GetKeyList() {
11 17
 		page = 1
12 18
 	}
13 19
 
14
-	list, err := c.dao.GetKeysByCase(caseid, num, page, pageSize)
20
+	list, err := c.dao.GetKeysByCase(caseids, num, page, pageSize)
15 21
 	if err != nil {
16 22
 		c.ResponseError(err)
17 23
 	}

+ 48
- 10
controllers/luckdraw/luckdraw.go Zobrazit soubor

@@ -143,7 +143,7 @@ func (c *LuckDrawController) GetRecordByID() {
143 143
 		c.ResponseError(errors.New("校验奖品记录失败"))
144 144
 	}
145 145
 
146
-	c.ResponseJson(map[string]interface{}{
146
+	c.ResponseJSON(map[string]interface{}{
147 147
 		"record":      record,
148 148
 		"prize":       prize,
149 149
 		"caseAddress": caseAddress,
@@ -151,50 +151,84 @@ func (c *LuckDrawController) GetRecordByID() {
151 151
 }
152 152
 
153 153
 func (c *LuckDrawController) SaveShareRecord() {
154
+	errIgnore := "error-ignore"
155
+
154 156
 	id := c.GetString(":id")
155 157
 
156 158
 	fromID := c.GetString("from")
157 159
 	if fromID == "" {
158
-		c.ResponseError(errors.New("没有分享人ID"))
160
+		c.ResponseData(
161
+			errIgnore,
162
+			"没有分享人ID",
163
+			http.StatusBadRequest,
164
+		)
159 165
 	}
160 166
 
161 167
 	from, err := c.bodydao.GetCustomerByID(fromID)
162 168
 	if err != nil {
163 169
 		utils.LogError("获取分享人信息失败: " + err.Error())
164
-		c.ResponseError(errors.New("获取分享人信息失败"))
170
+		c.ResponseData(
171
+			errIgnore,
172
+			"获取分享人信息失败",
173
+			http.StatusBadRequest,
174
+		)
165 175
 	}
166 176
 
167 177
 	if from == nil || from.CustomerId == "" {
168 178
 		utils.LogError("分享人信息不存在: " + err.Error())
169
-		c.ResponseError(errors.New("分享人信息不存在"))
179
+		c.ResponseData(
180
+			errIgnore,
181
+			"分享人信息不存在",
182
+			http.StatusBadRequest,
183
+		)
170 184
 	}
171 185
 
172 186
 	current = c.Context.Get("customer")
173 187
 
174 188
 	// 自己分享给自己
175 189
 	if from.CustomerId == current.CustomerId {
176
-		c.ResponseError(errors.New("本人分享内容无效"))
190
+		c.ResponseData(
191
+			errIgnore,
192
+			"本人分享内容无效",
193
+			http.StatusBadRequest,
194
+		)
177 195
 	}
178 196
 
179 197
 	luckdraw, err := c.dao.GetLuckDrawByID(id)
180 198
 	if err != nil {
181 199
 		utils.LogError("获取抽奖信息失败: " + err.Error())
182
-		c.ResponseError(errors.New("获取抽奖信息失败"))
200
+		c.ResponseData(
201
+			errIgnore,
202
+			"获取抽奖信息失败",
203
+			http.StatusBadRequest,
204
+		)
183 205
 	}
184 206
 
185 207
 	if luckdraw == nil {
186 208
 		utils.LogError("获取抽奖信息失败: " + err.Error())
187
-		c.ResponseError(errors.New("没有找到 id (" + id + ") 对应的抽奖信息"))
209
+		c.ResponseData(
210
+			errIgnore,
211
+			"没有找到 id ("+id+") 对应的抽奖信息",
212
+			http.StatusBadRequest,
213
+		)
188 214
 	}
189 215
 
190 216
 	existsRec, err := c.dao.GetLuckDrawShareData(from.Id, current.Id, luckdraw.Id, luckdraw.CaseId)
191 217
 	if err != nil {
192 218
 		utils.LogError("获取已有分享信息失败: " + err.Error())
193
-		c.ResponseError(errors.New("获取已有分享信息失败"))
219
+		c.ResponseData(
220
+			errIgnore,
221
+			"获取已有分享信息失败",
222
+			http.StatusBadRequest,
223
+		)
194 224
 	}
195 225
 
196 226
 	if existsRec != nil && len(existsRec) > 0 {
197
-		c.ResponseError(errors.New("已分享记录, 再次分享无效"))
227
+		c.ResponseData(
228
+			errIgnore,
229
+			"已分享记录, 再次分享无效",
230
+			http.StatusBadRequest,
231
+		)
198 232
 	}
199 233
 
200 234
 	shareDt := model.TaShareLuckyRecord{
@@ -213,7 +247,11 @@ func (c *LuckDrawController) SaveShareRecord() {
213 247
 
214 248
 	if err := c.dao.SaveLuckDrawShareData(&shareDt); err != nil {
215 249
 		utils.LogError("保存分享记录失败: " + err.Error())
216
-		c.ResponseError(errors.New("保存分享记录失败"))
250
+		c.ResponseData(
251
+			errIgnore,
252
+			"保存分享记录失败",
253
+			http.StatusBadRequest,
254
+		)
217 255
 	}
218 256
 
219 257
 	c.ResponseJSON("ok")

+ 3
- 0
controllers/user/user.go Zobrazit soubor

@@ -206,7 +206,10 @@ func (c *UserController) SignIn() {
206 206
 
207 207
 // SignOut 用户登出
208 208
 func (c *UserController) SignOut() {
209
+	user := c.Context.Get("user").(model.SysUser)
209 210
 	c.Context.Set("user", nil)
211
+	c.SetTokenExipre(user.UserId)
212
+	c.ResponseJSON("ok")
210 213
 }
211 214
 
212 215
 // GetEnvVars 获取当前用户相关

+ 7
- 13
models/bodychecklist/bodychecklist.go Zobrazit soubor

@@ -1,14 +1,10 @@
1 1
 package bodychecklist
2 2
 
3 3
 import (
4
-	"fmt"
5 4
 	"spaceofcheng/services/models"
6 5
 	"spaceofcheng/services/models/model"
7 6
 	"spaceofcheng/services/utils"
8 7
 	"strconv"
9
-	"strings"
10
-
11
-	"github.com/astaxie/beego"
12 8
 
13 9
 	"github.com/go-xorm/xorm"
14 10
 )
@@ -35,13 +31,12 @@ type BodyCheck struct {
35 31
 	Phone             string
36 32
 }
37 33
 
38
-func (m *BodychecklistDAO) GetBodychecklist(phone, customerName string, filters []string, limit []int) ([]BodyCheck, int64, error) {
34
+func (m *BodychecklistDAO) GetBodychecklist(phone, customerName, filters string, limit []int) ([]BodyCheck, int64, error) {
39 35
 	var bodycheck []BodyCheck
40
-	filterString := ""
41
-	if len(filters) > 0 {
42
-		filterString = strings.Join(filters, " and ")
43
-		filterString += " and "
44
-	}
36
+	// if len(filters) > 0 {
37
+	// 	filterString = strings.Join(filters, " and ")
38
+	// 	filterString += " and "
39
+	// }
45 40
 	sql := `SELECT
46 41
 	a.*,
47 42
 	b.phone,
@@ -56,7 +51,7 @@ FROM
56 51
 	ta_body_check a
57 52
 	INNER JOIN ta_customer b ON a.user_id = b.customer_id
58 53
 	INNER JOIN sys_case c ON c.case_id = a.case_id
59
-	where %s  a.status > ` + strconv.Itoa(models.STATUS_DEL)
54
+	where ` + filters + ` and  a.status > ` + strconv.Itoa(models.STATUS_DEL)
60 55
 	if phone != "" {
61 56
 		sql += ` and b.phone = '` + phone + `'`
62 57
 	}
@@ -64,8 +59,7 @@ FROM
64 59
 		sql += ` and b.customer_name like '%` + customerName + `%'`
65 60
 	}
66 61
 	sql += ` order by a.create_date desc`
67
-	beego.Error(sql)
68
-	total, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&bodycheck, fmt.Sprintf(sql, filterString), limit)
62
+	total, err := utils.NewPageNaviEngine(m.ctx).GetPageList(&bodycheck, sql, limit)
69 63
 	if err != nil {
70 64
 		return nil, 0, err
71 65
 	}

+ 5
- 5
models/cases/key.go Zobrazit soubor

@@ -21,7 +21,7 @@ type CaseKeyInfo struct {
21 21
 }
22 22
 
23 23
 // GetKeysByCase 根据案场获取钥匙信息
24
-func (m *CaseDAO) GetKeysByCase(caseid, num string, page, pageSize int) ([]CaseKeyInfo, error) {
24
+func (m *CaseDAO) GetKeysByCase(caseids, num string, page, pageSize int) ([]CaseKeyInfo, error) {
25 25
 	var keys []CaseKeyInfo
26 26
 	query := `
27 27
 		SELECT
@@ -31,7 +31,7 @@ func (m *CaseDAO) GetKeysByCase(caseid, num string, page, pageSize int) ([]CaseK
31 31
 			ta_case_key t
32 32
 		LEFT JOIN ta_case_key_use s ON t.key_id = s.key_id AND s.status != ?
33 33
 		WHERE
34
-			t.case_id = ?
34
+			t.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')
35 35
 		AND t.status > ?
36 36
 	`
37 37
 
@@ -42,14 +42,14 @@ func (m *CaseDAO) GetKeysByCase(caseid, num string, page, pageSize int) ([]CaseK
42 42
 	offset := (page - 1) * pageSize
43 43
 	query += " order by lock_no asc LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa(offset)
44 44
 
45
-	err := m.db.SQL(query, models.STATUS_NORMAL, caseid, models.STATUS_DEL).Find(&keys)
45
+	err := m.db.SQL(query, models.STATUS_NORMAL, models.STATUS_DEL).Find(&keys)
46 46
 	return keys, err
47 47
 }
48 48
 
49 49
 // GetKeysCountByCase 根据案场获取钥匙数量
50
-func (m *CaseDAO) GetKeysCountByCase(caseid, num string) (int, error) {
50
+func (m *CaseDAO) GetKeysCountByCase(caseids, num string) (int, error) {
51 51
 	var keys []model.TaCaseKey
52
-	dao := m.db.Where("case_id=?", caseid).And("status>" + strconv.Itoa(models.STATUS_DEL))
52
+	dao := m.db.Where(`case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`).And("status>" + strconv.Itoa(models.STATUS_DEL))
53 53
 	if num != "" {
54 54
 		dao.And("lock_num like '%" + num + "%'")
55 55
 	}

+ 1
- 1
models/luckdraw/luckdraw.go Zobrazit soubor

@@ -278,7 +278,7 @@ func (m *LuckDrawDao) GetPrizeStock(luckdrawid string) ([]model.TaLuckdrawPrize,
278 278
 }
279 279
 
280 280
 // GetPrizeByID 根据id获取奖品信息
281
-func (m *LuckDrawDao) GetPrizeByID(id int) (model.TaLuckdrawPrize, error) {
281
+func (m *LuckDrawDao) GetPrizeByID(id string) (model.TaLuckdrawPrize, error) {
282 282
 	var prize = model.TaLuckdrawPrize{}
283 283
 	_, err := m.db.Where("id=?", id).Get(&prize)
284 284
 	return prize, err

+ 1
- 0
models/model/sys_token_log.go Zobrazit soubor

@@ -5,6 +5,7 @@ import "time"
5 5
 type SysTokenLog struct {
6 6
 	TokenId    int       `xorm:"not null pk autoincr INT(11)"`
7 7
 	Token      string    `xorm:"TEXT"`
8
+	Uid        string    `xorm:"VARCHAR(64)"`
8 9
 	Status     int       `xorm:"SMALLINT(6)"`
9 10
 	CreateDate time.Time `xorm:"DATETIME"`
10 11
 }

+ 1
- 1
models/models.go Zobrazit soubor

@@ -20,7 +20,7 @@ func NewDBEngine() *xorm.Engine {
20 20
 	dns := getMySQLDNS()
21 21
 
22 22
 	engine, err := xorm.NewEngine(dbType, dns)
23
-	engine.ShowSQL()
23
+	// engine.ShowSQL()
24 24
 
25 25
 	if err != nil {
26 26
 		panic(err)

+ 1
- 1
models/statistics/other.go Zobrazit soubor

@@ -53,7 +53,7 @@ func (m *StatisticsDAO) GetDashboardSetting(userID string, userTypes []string) (
53 53
 		FROM
54 54
 			ta_dashboard_setting t
55 55
 		JOIN td_statistics_comps s ON t.comp_id = s.comp_id
56
-		where (` + strings.Join(filters, " OR ") + ") AND status = ? order by group asc, sort_no asc"
56
+		where (` + strings.Join(filters, " OR ") + ") AND t.status = ? order by t.group asc, t.sort_no asc"
57 57
 
58 58
 	var settings []UserDashSetting
59 59
 	if err := m.db.SQL(sql, models.STATUS_NORMAL).Find(&settings); err != nil {

+ 4
- 3
models/sys.go Zobrazit soubor

@@ -136,9 +136,10 @@ func GetWeChatConfig(org, cliType string) (*model.SysWechatConf, error) {
136 136
 }
137 137
 
138 138
 // InsertToken 插入 token 生成记录
139
-func InsertToken(token string) error {
139
+func InsertToken(token, uid string) error {
140 140
 	tk := model.SysTokenLog{
141 141
 		Token:      token,
142
+		Uid:        uid,
142 143
 		Status:     STATUS_NORMAL,
143 144
 		CreateDate: time.Now().Local(),
144 145
 	}
@@ -151,12 +152,12 @@ func InsertToken(token string) error {
151 152
 }
152 153
 
153 154
 // UpdateTokenExpire 设置 token 过期
154
-func UpdateTokenExpire(token string) error {
155
+func UpdateTokenExpire(token, uid string) error {
155 156
 	tk := model.SysTokenLog{
156 157
 		Status: STATUS_DEL,
157 158
 	}
158 159
 
159
-	if _, err := DBEngine.Cols("status").Where("token=?", token).Update(&tk); err != nil {
160
+	if _, err := DBEngine.Cols("status").Where("token=?", token).Or("uid=?", uid).Update(&tk); err != nil {
160 161
 		return err
161 162
 	}
162 163
 

+ 1
- 1
models/system/user.go Zobrazit soubor

@@ -144,7 +144,7 @@ func (m *UserDAO) GetUserRole(userid string) ([]model.SysRole, error) {
144 144
 // GetUserMenu 获取用户菜单
145 145
 func (m *UserDAO) GetUserMenu(userid string) ([]model.SysMenu, error) {
146 146
 	var userMenu []model.SysMenu
147
-	err := m.db.In("menu_id", builder.Select("menu_id").From("sys_user_menu").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Find(&userMenu)
147
+	err := m.db.In("menu_id", builder.Select("menu_id").From("sys_user_menu").Where(builder.Eq{"user_id": userid}).And(builder.Gt{"status": models.STATUS_DEL})).Asc("order_no").Find(&userMenu)
148 148
 	return userMenu, err
149 149
 }
150 150
 

+ 3
- 7
service/bodychecklist/bodychecklist.go Zobrazit soubor

@@ -23,15 +23,13 @@ func NewBodychecklistServ(ctx *utils.Context) *BodychecklistServ {
23 23
 }
24 24
 
25 25
 func (s *BodychecklistServ) GetBodyCheckList(caseID, phone, customerName string, pagenavi ...int) ([]bodychecklist.BodyCheck, int64, error) {
26
-	filters := []string{}
26
+	filters := ""
27 27
 	if caseID != "" {
28 28
 		if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
29 29
 			return nil, 0, err
30 30
 		}
31 31
 
32
-		filters = []string{
33
-			"a.case_id='" + caseID + "'",
34
-		}
32
+		filters = "a.case_id='" + caseID + "'"
35 33
 	} else {
36 34
 		casesRaw := s.ctx.Get("cases")
37 35
 		if casesRaw == nil {
@@ -44,9 +42,7 @@ func (s *BodychecklistServ) GetBodyCheckList(caseID, phone, customerName string,
44 42
 			caseIDs = append(caseIDs, cs.CaseId)
45 43
 		}
46 44
 
47
-		filters = []string{
48
-			"a.case_id in ('" + strings.Join(caseIDs, "','") + "')",
49
-		}
45
+		filters = "a.case_id in ('" + strings.Join(caseIDs, "','") + "')"
50 46
 	}
51 47
 
52 48
 	limit := utils.GetPageNaviLimit(pagenavi...)

+ 3
- 17
service/cases/key.go Zobrazit soubor

@@ -11,32 +11,18 @@ import (
11 11
 )
12 12
 
13 13
 // GetKeysByCase 根据案场获取钥匙信息
14
-func (s *CaseServ) GetKeysByCase(caseid, num string, page, pageSize int) (map[string]interface{}, error) {
15
-	cases := s.ctx.Get("cases").([]model.SysUserCase)
16
-	isdict := false
17
-	if caseid != "" {
18
-		for _, value := range cases {
19
-			if caseid == value.CaseId {
20
-				isdict = true
21
-			}
22
-		}
23
-
24
-		if !isdict {
25
-			return nil, utils.LogError("您没有该案场的权限!")
26
-		}
27
-	}
28
-
14
+func (s *CaseServ) GetKeysByCase(caseids, num string, page, pageSize int) (map[string]interface{}, error) {
29 15
 	if pageSize == 0 {
30 16
 		pageSize = service.PAGENUM
31 17
 	}
32 18
 
33
-	keys, err := s.dao.GetKeysByCase(caseid, num, page, pageSize)
19
+	keys, err := s.dao.GetKeysByCase(caseids, num, page, pageSize)
34 20
 	if err != nil {
35 21
 		utils.LogError("获取钥匙信息失败: " + err.Error())
36 22
 		return nil, errors.New("获取钥匙信息失败")
37 23
 	}
38 24
 
39
-	total, err := s.dao.GetKeysCountByCase(caseid, num)
25
+	total, err := s.dao.GetKeysCountByCase(caseids, num)
40 26
 	if err != nil {
41 27
 		utils.LogError("获取钥匙信息失败: " + err.Error())
42 28
 		return nil, errors.New("获取钥匙信息失败")

+ 3
- 3
service/sys.go Zobrazit soubor

@@ -111,7 +111,7 @@ func (s *SysServ) NewToken() string {
111 111
 
112 112
 	// 入库
113 113
 	if !token.Guest {
114
-		if err := models.InsertToken(tokenEncodeStr); err != nil {
114
+		if err := models.InsertToken(tokenEncodeStr, token.ID); err != nil {
115 115
 			utils.LogError("入库 Token 失败: " + err.Error())
116 116
 			return tokenEncodeStr
117 117
 		}
@@ -384,8 +384,8 @@ func (s *SysServ) getToken(gctx *context.Context) (*utils.JWTToken, error) {
384 384
 
385 385
 // UpdateTokenExpire 更新 token 为过期
386 386
 // 如果发生错误, 此处选择忽略
387
-func (s *SysServ) UpdateTokenExpire(token string) {
388
-	if err := models.UpdateTokenExpire(token); err != nil {
387
+func (s *SysServ) UpdateTokenExpire(token, uid string) {
388
+	if err := models.UpdateTokenExpire(token, uid); err != nil {
389 389
 		utils.LogError("更新 Token 过期失败: " + err.Error())
390 390
 	}
391 391
 }