Browse Source

医保对接

csx 2 years ago
parent
commit
26aadbcb6a
1 changed files with 83 additions and 6 deletions
  1. 83 6
      controllers/mobile_api_controllers/mobile_api_base_controller.go

+ 83 - 6
controllers/mobile_api_controllers/mobile_api_base_controller.go View File

5
 	"XT_New/enums"
5
 	"XT_New/enums"
6
 	"XT_New/models"
6
 	"XT_New/models"
7
 	"XT_New/service"
7
 	"XT_New/service"
8
+	"bytes"
8
 	"encoding/json"
9
 	"encoding/json"
9
 	"fmt"
10
 	"fmt"
11
+	"log"
12
+	"os"
13
+	"path"
14
+	"regexp"
15
+	"runtime"
10
 	"strconv"
16
 	"strconv"
11
 	"strings"
17
 	"strings"
12
 	"time"
18
 	"time"
106
 
112
 
107
 	if this.Ctx.Request.Header.Get("Permission") == "1" {
113
 	if this.Ctx.Request.Header.Get("Permission") == "1" {
108
 		if adminUserInfo.AdminUser.Id != adminUserInfo.Org.Creator { //超级管理员不受此限制
114
 		if adminUserInfo.AdminUser.Id != adminUserInfo.Org.Creator { //超级管理员不受此限制
115
+			err_msgs := LoadErrMsgConfig("./err_msg.json").Msgs
109
 
116
 
110
 			isPermission := false
117
 			isPermission := false
111
 			adminUserInfo := this.GetMobileAdminUserInfo()
118
 			adminUserInfo := this.GetMobileAdminUserInfo()
112
 			//该机构下该用户有多少个
119
 			//该机构下该用户有多少个
113
-			role, _ := service.GetUserAllRole(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id)
120
+			redisClient := service.RedisClient()
121
+			defer redisClient.Close()
122
+			key2 := strconv.FormatInt(adminUserInfo.Org.Id, 64) + "_" + strconv.FormatInt(adminUserInfo.AdminUser.Id, 64) + "_role_ids"
123
+			result, _ := redisClient.Get(key2).Result()
124
+			var role models.App_Role
114
 			var roles []string
125
 			var roles []string
115
-			if len(role.RoleIds) <= 0 { //该用户没有设置角色
116
-
126
+			if len(result) == 0 {
127
+				//该机构下该用户有多少个
128
+				role, _ = service.GetUserAllRole(adminUserInfo.Org.Id, adminUserInfo.AdminUser.Id)
129
+				redisClient.Set(key2, role, time.Second*60*60*18)
130
+				if len(role.RoleIds) > 0 { //该用户没有设置角色
131
+					roles = strings.Split(role.RoleIds, ",")
132
+				}
117
 			} else {
133
 			} else {
118
-				roles = strings.Split(role.RoleIds, ",")
134
+				json.Unmarshal([]byte(result), &role)
135
+				if len(role.RoleIds) > 0 { //该用户没有设置角色
136
+					roles = strings.Split(role.RoleIds, ",")
137
+				}
119
 			}
138
 			}
120
-
121
 			//redis相关处理逻辑
139
 			//redis相关处理逻辑
122
 			redis := service.RedisClient()
140
 			redis := service.RedisClient()
123
 			defer redis.Close()
141
 			defer redis.Close()
177
 						}
195
 						}
178
 					}
196
 					}
179
 					if !isPermission {
197
 					if !isPermission {
180
-						msg, _ := service.FindErrorMsgByStr(strings.Split(this.Ctx.Request.RequestURI, "?")[0] + "?" + "mode=" + this.GetString("mode"))
198
+						//msg, _ := service.FindErrorMsgByStr(strings.Split(this.Ctx.Request.RequestURI, "?")[0] + "?" + "mode=" + this.GetString("mode"))
199
+						var msg string
200
+						for _, item := range err_msgs {
201
+							if strings.Index(item.Url, strings.Split(this.Ctx.Request.RequestURI, "?")[0]+"?"+"mode="+this.GetString("mode")) != -1 {
202
+								msg = item.ErrMsg
203
+							}
204
+						}
205
+
181
 						json := make(map[string]interface{})
206
 						json := make(map[string]interface{})
182
 						json["msg"] = msg
207
 						json["msg"] = msg
183
 						json["code"] = 0
208
 						json["code"] = 0
224
 	AppUrlfors   map[int64][]string                   `json:"app_urlfors"`
249
 	AppUrlfors   map[int64][]string                   `json:"app_urlfors"`
225
 	Subscibes    map[int64]*models.ServeSubscibe      `json:"org_subscibes"`
250
 	Subscibes    map[int64]*models.ServeSubscibe      `json:"org_subscibes"`
226
 }
251
 }
252
+
253
+type ErrMsgConfig struct {
254
+	Msgs []*models.ErrMsg "json:msg"
255
+}
256
+
257
+func LoadErrMsgConfig(dataFile string) *ErrMsgConfig {
258
+	var config ErrMsgConfig
259
+	_, filename, _, _ := runtime.Caller(1)
260
+	datapath := path.Join(path.Dir(filename), dataFile)
261
+	config_file, err := os.Open(datapath)
262
+	if err != nil {
263
+		emit("Failed to open config file '%s': %s\n", datapath, err)
264
+		return &config
265
+	}
266
+	fi, _ := config_file.Stat()
267
+	buffer := make([]byte, fi.Size())
268
+	_, err = config_file.Read(buffer)
269
+	buffer, err = StripComments(buffer) //去掉注释
270
+	if err != nil {
271
+		emit("Failed to strip comments from json: %s\n", err)
272
+		return &config
273
+	}
274
+	buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
275
+	err = json.Unmarshal(buffer, &config)         //解析json格式数据
276
+	if err != nil {
277
+		emit("Failed unmarshalling json: %s\n", err)
278
+		return &config
279
+	}
280
+	return &config
281
+}
282
+
283
+func emit(msgfmt string, args ...interface{}) {
284
+	log.Printf(msgfmt, args...)
285
+}
286
+
287
+func StripComments(data []byte) ([]byte, error) {
288
+	data = bytes.Replace(data, []byte("\r"), []byte(""), 0) // Windows
289
+	lines := bytes.Split(data, []byte("\n"))                //split to muli lines
290
+	filtered := make([][]byte, 0)
291
+
292
+	for _, line := range lines {
293
+		match, err := regexp.Match(`^\s*#`, line)
294
+		if err != nil {
295
+			return nil, err
296
+		}
297
+		if !match {
298
+			filtered = append(filtered, line)
299
+		}
300
+	}
301
+
302
+	return bytes.Join(filtered, []byte("\n")), nil
303
+}