Merge remote-tracking branch 'origin/test'
正在显示
9 个修改的文件
包含
105 行增加
和
22 行删除
@@ -138,14 +138,14 @@ func FilterComm(ctx *context.Context) { | @@ -138,14 +138,14 @@ func FilterComm(ctx *context.Context) { | ||
138 | //if !CheckSign(ctx) { | 138 | //if !CheckSign(ctx) { |
139 | // return | 139 | // return |
140 | //} | 140 | //} |
141 | + //3.查重uuid | ||
142 | + if !CheckUuid(ctx) { | ||
143 | + return | ||
144 | + } | ||
141 | //2.检查token是否有效 | 145 | //2.检查token是否有效 |
142 | if !CheckToken(ctx) { | 146 | if !CheckToken(ctx) { |
143 | return | 147 | return |
144 | } | 148 | } |
145 | - //3.查重uuid | ||
146 | - //if !CheckUuid(ctx) { | ||
147 | - // return | ||
148 | - //} | ||
149 | return | 149 | return |
150 | } | 150 | } |
151 | 151 | ||
@@ -223,14 +223,13 @@ func CheckUuid(ctx *context.Context) (result bool) { | @@ -223,14 +223,13 @@ func CheckUuid(ctx *context.Context) (result bool) { | ||
223 | ) | 223 | ) |
224 | result = true | 224 | result = true |
225 | defer func() { | 225 | defer func() { |
226 | - if msg != nil { | ||
227 | - result = false | 226 | + if msg.Errno != 0 { |
228 | ctx.Output.JSON(msg, false, false) | 227 | ctx.Output.JSON(msg, false, false) |
229 | } | 228 | } |
230 | }() | 229 | }() |
231 | uuid := ctx.Input.Header("x-mmm-uuid") | 230 | uuid := ctx.Input.Header("x-mmm-uuid") |
232 | msg = protocol.NewReturnResponse(auth.CheckUuid(&protocol.CheckUuidRequest{Uuid: uuid})) | 231 | msg = protocol.NewReturnResponse(auth.CheckUuid(&protocol.CheckUuidRequest{Uuid: uuid})) |
233 | - if msg != nil { | 232 | + if msg.Errno != 0 { |
234 | log.Error(fmt.Sprintf("%v req:%v resp:%v", ctx.Request.RequestURI, uuid, common.AssertJson(msg))) | 233 | log.Error(fmt.Sprintf("%v req:%v resp:%v", ctx.Request.RequestURI, uuid, common.AssertJson(msg))) |
235 | } | 234 | } |
236 | return | 235 | return |
controllers/v1/file.go
0 → 100644
1 | +package v1 | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/astaxie/beego" | ||
6 | + "opp/controllers" | ||
7 | + "opp/internal/utils" | ||
8 | + "opp/protocol" | ||
9 | + "path/filepath" | ||
10 | + "strings" | ||
11 | +) | ||
12 | + | ||
13 | +type FileController struct { | ||
14 | + controllers.BaseController | ||
15 | +} | ||
16 | + | ||
17 | +// DownLoad | ||
18 | +// @router /opp/file [post] | ||
19 | +func (this *FileController) DownLoad() { | ||
20 | + var ( | ||
21 | + msg *protocol.ResponseMessage | ||
22 | + err error | ||
23 | + rsp *protocol.FileResponse = &protocol.FileResponse{} | ||
24 | + ) | ||
25 | + defer func() { | ||
26 | + if msg.Errno != 0 { | ||
27 | + this.Resp(msg) | ||
28 | + } | ||
29 | + }() | ||
30 | + fileUrl := this.Ctx.Request.RequestURI | ||
31 | + filePath := strings.Replace(fileUrl, "/file/opp", "", 1) | ||
32 | + filePath = filepath.Join(beego.AppConfig.String("source_path"), filePath) | ||
33 | + if utils.Exists(filePath) { | ||
34 | + this.Ctx.Output.Download(filePath) | ||
35 | + } else { | ||
36 | + err = protocol.NewCustomMessage(0, fmt.Sprintf("文件不存在:%v", filePath)) | ||
37 | + } | ||
38 | + msg = protocol.NewReturnResponse(rsp, err) | ||
39 | +} |
internal/utils/file.go
0 → 100644
1 | +package utils | ||
2 | + | ||
3 | +import "os" | ||
4 | + | ||
5 | +// 判断所给路径文件/文件夹是否存在 | ||
6 | +func Exists(path string) bool { | ||
7 | + _, err := os.Stat(path) //os.Stat获取文件信息 | ||
8 | + if err != nil { | ||
9 | + if os.IsExist(err) { | ||
10 | + return true | ||
11 | + } | ||
12 | + return false | ||
13 | + } | ||
14 | + return true | ||
15 | +} | ||
16 | + | ||
17 | +// 判断所给路径是否为文件夹 | ||
18 | +func IsDir(path string) bool { | ||
19 | + s, err := os.Stat(path) | ||
20 | + if err != nil { | ||
21 | + return false | ||
22 | + } | ||
23 | + return s.IsDir() | ||
24 | +} | ||
25 | + | ||
26 | +// 判断所给路径是否为文件 | ||
27 | +func IsFile(path string) bool { | ||
28 | + return !IsDir(path) | ||
29 | +} |
@@ -35,7 +35,7 @@ func init() { | @@ -35,7 +35,7 @@ func init() { | ||
35 | log.Info(fmt.Sprintf("init redis:%v", redisSource)) | 35 | log.Info(fmt.Sprintf("init redis:%v", redisSource)) |
36 | if err != nil { | 36 | if err != nil { |
37 | log.Fatal("connect to redis error address:", beego.AppConfig.String("redis_add_port"), beego.AppConfig.String("redis_auth"), err) | 37 | log.Fatal("connect to redis error address:", beego.AppConfig.String("redis_add_port"), beego.AppConfig.String("redis_auth"), err) |
38 | - //panic(err) | 38 | + panic(err) |
39 | } | 39 | } |
40 | dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?loc=Asia%%2FShanghai&charset=utf8mb4", | 40 | dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?loc=Asia%%2FShanghai&charset=utf8mb4", |
41 | beego.AppConfig.String("mysql_user"), | 41 | beego.AppConfig.String("mysql_user"), |
@@ -287,6 +287,14 @@ func init() { | @@ -287,6 +287,14 @@ func init() { | ||
287 | MethodParams: param.Make(), | 287 | MethodParams: param.Make(), |
288 | Params: nil}) | 288 | Params: nil}) |
289 | 289 | ||
290 | + beego.GlobalControllerRouter["opp/controllers/v1:FileController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:FileController"], | ||
291 | + beego.ControllerComments{ | ||
292 | + Method: "DownLoad", | ||
293 | + Router: `/opp/file`, | ||
294 | + AllowHTTPMethods: []string{"post"}, | ||
295 | + MethodParams: param.Make(), | ||
296 | + Params: nil}) | ||
297 | + | ||
290 | beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"], | 298 | beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"], |
291 | beego.ControllerComments{ | 299 | beego.ControllerComments{ |
292 | Method: "AnnouncementRead", | 300 | Method: "AnnouncementRead", |
@@ -33,7 +33,9 @@ func init() { | @@ -33,7 +33,9 @@ func init() { | ||
33 | 33 | ||
34 | nsH5 := beego.NewNamespace("h5", beego.NSBefore(controllers.LogRequestData), beego.NSBefore(controllers.AllowOption), beego.NSInclude(&controllers.H5Controller{})) | 34 | nsH5 := beego.NewNamespace("h5", beego.NSBefore(controllers.LogRequestData), beego.NSBefore(controllers.AllowOption), beego.NSInclude(&controllers.H5Controller{})) |
35 | beego.AddNamespace(nsH5) | 35 | beego.AddNamespace(nsH5) |
36 | - | 36 | + //post 下载文件 |
37 | + beego.Router("/file/opp/*", &v1.FileController{}, "post:DownLoad") | ||
38 | + //get 直接获取文件 | ||
37 | beego.SetStaticPath("/file/opp", beego.AppConfig.String("source_path")) | 39 | beego.SetStaticPath("/file/opp", beego.AppConfig.String("source_path")) |
38 | beego.SetStaticPath("/log", beego.AppConfig.String("aliyun_logs_access")) | 40 | beego.SetStaticPath("/log", beego.AppConfig.String("aliyun_logs_access")) |
39 | beego.Handler("/metrics", promhttp.Handler()) | 41 | beego.Handler("/metrics", promhttp.Handler()) |
@@ -284,18 +284,21 @@ func CheckToken(request *protocol.CheckTokenRequest) (rsp *protocol.CheckTokenRe | @@ -284,18 +284,21 @@ func CheckToken(request *protocol.CheckTokenRequest) (rsp *protocol.CheckTokenRe | ||
284 | 284 | ||
285 | //检查uuid 是否重复 | 285 | //检查uuid 是否重复 |
286 | func CheckUuid(request *protocol.CheckUuidRequest) (rsp *protocol.CheckUuidResponse, err error) { | 286 | func CheckUuid(request *protocol.CheckUuidRequest) (rsp *protocol.CheckUuidResponse, err error) { |
287 | - //var ( | ||
288 | - // logUuid *models.LogUuid | ||
289 | - //) | ||
290 | - //if len(request.Uuid) == 0 { | ||
291 | - // err = common.NewErrorWithMsg(4142, "uuid not empty") | ||
292 | - //} | ||
293 | - //logUuid, err = models.GetLogUuidByUuid(request.Uuid) | ||
294 | - //if err == nil && logUuid != nil { | ||
295 | - // err = common.NewErrorWithMsg(4142, "uuid not valid") | ||
296 | - //} | ||
297 | - //models.AddLogUuid(&models.LogUuid{Uuid: request.Uuid}) | ||
298 | - //rsp = &protocol.CheckUuidResponse{} | 287 | + var () |
288 | + rsp = &protocol.CheckUuidResponse{} | ||
289 | + if len(request.Uuid) == 0 || (request.Uuid == "123456" && beego.BConfig.RunMode != "prod") { | ||
290 | + return | ||
291 | + } | ||
292 | + if redis.Hexists(protocol.RedisKey(protocol.HashUuid), request.Uuid) { | ||
293 | + err = protocol.NewErrWithMessage(4142) | ||
294 | + log.Error("[CheckUuid] 存在:", request.Uuid, err) | ||
295 | + return | ||
296 | + } | ||
297 | + if e := redis.Hset(protocol.RedisKey(protocol.HashUuid), request.Uuid, request.Uuid, 3600); e != nil { | ||
298 | + err = protocol.NewErrWithMessage(4142) | ||
299 | + log.Error("[CheckUuid] 设置:", request.Uuid, e) | ||
300 | + return | ||
301 | + } | ||
299 | return | 302 | return |
300 | } | 303 | } |
301 | 304 |
@@ -55,6 +55,9 @@ func MessageCenter(header *protocol.RequestHeader, request *protocol.MessageCent | @@ -55,6 +55,9 @@ func MessageCenter(header *protocol.RequestHeader, request *protocol.MessageCent | ||
55 | var tmpTotal int | 55 | var tmpTotal int |
56 | models.GetBulletinUserMsgTotals(header.UserId, header.CompanyId, request.MsgType, &tmpTotal) | 56 | models.GetBulletinUserMsgTotals(header.UserId, header.CompanyId, request.MsgType, &tmpTotal) |
57 | item.MsgTotal = tmpTotal | 57 | item.MsgTotal = tmpTotal |
58 | + if tmpTotal == 0 { | ||
59 | + continue | ||
60 | + } | ||
58 | } | 61 | } |
59 | list = append(list, item) | 62 | list = append(list, item) |
60 | } | 63 | } |
@@ -67,7 +67,7 @@ func UploadFile(request *protocol.FileRequest) (rsp *protocol.FileResponse, err | @@ -67,7 +67,7 @@ func UploadFile(request *protocol.FileRequest) (rsp *protocol.FileResponse, err | ||
67 | return | 67 | return |
68 | } | 68 | } |
69 | } | 69 | } |
70 | - virtualPath = beego.AppConfig.String("source_host") + filepath.Join(virtualPath, request.FileType, date) | 70 | + virtualPath = fmt.Sprintf("%v%v/%v/%v", beego.AppConfig.String("source_host"), virtualPath, request.FileType, date) |
71 | for i := range request.Files { | 71 | for i := range request.Files { |
72 | f := request.Files[i] | 72 | f := request.Files[i] |
73 | prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32)) | 73 | prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32)) |
-
请 注册 或 登录 后发表评论