正在显示
5 个修改的文件
包含
85 行增加
和
3 行删除
| @@ -31,6 +31,11 @@ ucenter_check_alt = "rsF0pL!6DwjBO735" | @@ -31,6 +31,11 @@ ucenter_check_alt = "rsF0pL!6DwjBO735" | ||
| 31 | ucenter_base_url = "http://suplus-ucenter-dev.fjmaimaimai.com" | 31 | ucenter_base_url = "http://suplus-ucenter-dev.fjmaimaimai.com" |
| 32 | ucenter_app_key = "39aefef9e22744a3b2d2d3791824ae7b" | 32 | ucenter_app_key = "39aefef9e22744a3b2d2d3791824ae7b" |
| 33 | ucenter_secret = "cykbjnfqgctn" | 33 | ucenter_secret = "cykbjnfqgctn" |
| 34 | + | ||
| 35 | +# 上传文件保存路径 | ||
| 36 | +file_save_path = "${aliyun_file_access||~/www/opp}" | ||
| 37 | +file_host = "http://192.168.139.137:8080/" | ||
| 38 | +file_host_path = "file/opp" | ||
| 34 | # 审批流程修改 消息发布 | 39 | # 审批流程修改 消息发布 |
| 35 | message_publish = "audit_change" | 40 | message_publish = "audit_change" |
| 36 | #---自定义配置 结束---- | 41 | #---自定义配置 结束---- |
controllers/upload.go
0 → 100644
| 1 | +package controllers | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "io" | ||
| 5 | + "mime/multipart" | ||
| 6 | + "oppmg/common/log" | ||
| 7 | + "oppmg/protocol" | ||
| 8 | + "os" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +//UploadController 文件上传 | ||
| 12 | +type UploadController struct { | ||
| 13 | + BaseController | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +//UploadImage 图片上传 | ||
| 17 | +//@router /image | ||
| 18 | +func (c *UploadController) UploadImage() { | ||
| 19 | + var msg *protocol.ResponseMessage | ||
| 20 | + defer func() { | ||
| 21 | + c.ResposeJson(msg) | ||
| 22 | + }() | ||
| 23 | + filehead, err := c.GetFiles("file") | ||
| 24 | + if err != nil { | ||
| 25 | + log.Error("获取上传文件失败:%s", err) | ||
| 26 | + } | ||
| 27 | + for i := range filehead { | ||
| 28 | + err := saveFile(filehead[i], "") | ||
| 29 | + if err != nil { | ||
| 30 | + msg = protocol.BadRequestParam("1") | ||
| 31 | + return | ||
| 32 | + } | ||
| 33 | + } | ||
| 34 | + msg = protocol.NewReturnResponse(nil, nil) | ||
| 35 | + return | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +func saveFile(fileData *multipart.FileHeader, src string) error { | ||
| 39 | + os.MkdirAll("./file/opp", 0777) | ||
| 40 | + file, err := fileData.Open() | ||
| 41 | + defer file.Close() | ||
| 42 | + if err != nil { | ||
| 43 | + log.Error("文件获取失败%s", err) | ||
| 44 | + return err | ||
| 45 | + } | ||
| 46 | + dst, err := os.Create("./file/opp/" + fileData.Filename) | ||
| 47 | + defer dst.Close() | ||
| 48 | + if err != nil { | ||
| 49 | + log.Error("目录访问失败:%s", err) | ||
| 50 | + | ||
| 51 | + return err | ||
| 52 | + } | ||
| 53 | + if _, err := io.Copy(dst, file); err != nil { | ||
| 54 | + log.Error("文件保存失败:%s", err) | ||
| 55 | + return err | ||
| 56 | + } | ||
| 57 | + return nil | ||
| 58 | +} |
| @@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
| 6 | "oppmg/protocol" | 6 | "oppmg/protocol" |
| 7 | serveauth "oppmg/services/auth" | 7 | serveauth "oppmg/services/auth" |
| 8 | "oppmg/storage/redisdata" | 8 | "oppmg/storage/redisdata" |
| 9 | + "strings" | ||
| 9 | 10 | ||
| 10 | "github.com/astaxie/beego" | 11 | "github.com/astaxie/beego" |
| 11 | 12 | ||
| @@ -38,11 +39,17 @@ var AuthToken = func(ctx *context.Context) { | @@ -38,11 +39,17 @@ var AuthToken = func(ctx *context.Context) { | ||
| 38 | mtoken *serveauth.MyToken | 39 | mtoken *serveauth.MyToken |
| 39 | ) | 40 | ) |
| 40 | accesstoken := ctx.Input.Header(protocol.HeaderAccessToken) | 41 | accesstoken := ctx.Input.Header(protocol.HeaderAccessToken) |
| 41 | - // refreshToken := ctx.Input.Header(protocol.HeaderRefreshToken) | ||
| 42 | - mtoken, err = serveauth.ValidJWTToken(accesstoken) | 42 | + //解出需要的jwt串 例:头【Authorization】:Bearer 123token456 |
| 43 | + s := strings.Split(accesstoken, "\u0020") | ||
| 44 | + // strings.TrimSpace() | ||
| 45 | + if len(s) > 0 { | ||
| 46 | + accesstoken = s[len(s)-1] | ||
| 47 | + } | ||
| 48 | + fmt.Println("===>", accesstoken) | ||
| 43 | if accesstoken == "123456" && beego.BConfig.RunMode != "prod" { | 49 | if accesstoken == "123456" && beego.BConfig.RunMode != "prod" { |
| 44 | return | 50 | return |
| 45 | } | 51 | } |
| 52 | + mtoken, err = serveauth.ValidJWTToken(accesstoken) | ||
| 46 | if err == nil { | 53 | if err == nil { |
| 47 | storetoken, err = redisdata.GetLoginToken(mtoken.UID) | 54 | storetoken, err = redisdata.GetLoginToken(mtoken.UID) |
| 48 | if err != nil { | 55 | if err != nil { |
| 1 | package protocol | 1 | package protocol |
| 2 | 2 | ||
| 3 | +var NullData = struct{}{} | ||
| 4 | + | ||
| 3 | //CustomErrParse 解析自定义错误结构体 | 5 | //CustomErrParse 解析自定义错误结构体 |
| 4 | type CustomErrParse interface { | 6 | type CustomErrParse interface { |
| 5 | ParseToMessage() *ResponseMessage | 7 | ParseToMessage() *ResponseMessage |
| @@ -37,7 +39,7 @@ func NewMessage(code string) *ResponseMessage { | @@ -37,7 +39,7 @@ func NewMessage(code string) *ResponseMessage { | ||
| 37 | rsp := &ResponseMessage{ | 39 | rsp := &ResponseMessage{ |
| 38 | Errno: transformCode(ecode.Errno), | 40 | Errno: transformCode(ecode.Errno), |
| 39 | Errmsg: ecode.Errmsg, | 41 | Errmsg: ecode.Errmsg, |
| 40 | - Data: nil, | 42 | + Data: NullData, |
| 41 | } | 43 | } |
| 42 | return rsp | 44 | return rsp |
| 43 | } | 45 | } |
| @@ -89,8 +91,12 @@ func SearchErr(code string) ErrorCode { | @@ -89,8 +91,12 @@ func SearchErr(code string) ErrorCode { | ||
| 89 | //NewReturnResponse 控制层响应返回 | 91 | //NewReturnResponse 控制层响应返回 |
| 90 | func NewReturnResponse(data interface{}, eRR error) (msg *ResponseMessage) { | 92 | func NewReturnResponse(data interface{}, eRR error) (msg *ResponseMessage) { |
| 91 | // var msg *ResponseMessage | 93 | // var msg *ResponseMessage |
| 94 | + if data == nil { | ||
| 95 | + data = NullData | ||
| 96 | + } | ||
| 92 | if eRR == nil { | 97 | if eRR == nil { |
| 93 | msg = NewMessage("0") | 98 | msg = NewMessage("0") |
| 99 | + | ||
| 94 | msg.Data = data | 100 | msg.Data = data |
| 95 | return msg | 101 | return msg |
| 96 | } | 102 | } |
| @@ -108,6 +114,9 @@ func BadRequestParam(code string) *ResponseMessage { | @@ -108,6 +114,9 @@ func BadRequestParam(code string) *ResponseMessage { | ||
| 108 | 114 | ||
| 109 | //NewPageDataResponse 控制层分页数据响应返回 | 115 | //NewPageDataResponse 控制层分页数据响应返回 |
| 110 | func NewPageDataResponse(data interface{}, eRR error) (msg *ResponseMessage) { | 116 | func NewPageDataResponse(data interface{}, eRR error) (msg *ResponseMessage) { |
| 117 | + if data == nil { | ||
| 118 | + data = NullData | ||
| 119 | + } | ||
| 111 | if eRR != nil { | 120 | if eRR != nil { |
| 112 | if x, ok := eRR.(CustomErrParse); ok { | 121 | if x, ok := eRR.(CustomErrParse); ok { |
| 113 | return x.ParseToMessage() | 122 | return x.ParseToMessage() |
| @@ -80,6 +80,9 @@ func init() { | @@ -80,6 +80,9 @@ func init() { | ||
| 80 | beego.NSRouter("/deleteCategory", &controllers.TemplateController{}, "post:TemplateDeleteCategory"), | 80 | beego.NSRouter("/deleteCategory", &controllers.TemplateController{}, "post:TemplateDeleteCategory"), |
| 81 | beego.NSRouter("/sortCategory", &controllers.TemplateController{}, "post:CategoryEditSort"), | 81 | beego.NSRouter("/sortCategory", &controllers.TemplateController{}, "post:CategoryEditSort"), |
| 82 | ), | 82 | ), |
| 83 | + beego.NSNamespace("/upload", | ||
| 84 | + beego.NSRouter("/image", &controllers.UploadController{}, "post:UploadImage"), | ||
| 85 | + ), | ||
| 83 | ) | 86 | ) |
| 84 | 87 | ||
| 85 | nsAuth := beego.NewNamespace("/auth", | 88 | nsAuth := beego.NewNamespace("/auth", |
-
请 注册 或 登录 后发表评论