作者 tangxvhui

Merge branch 'dev' of http://gitlab.fjmaimaimai.com/mmm-go/openapi into dev

@@ -3,6 +3,7 @@ FROM 192.168.0.243:5000/mmm/mmmopp:20200422 as builder @@ -3,6 +3,7 @@ FROM 192.168.0.243:5000/mmm/mmmopp:20200422 as builder
3 ENV GOPROXY https://goproxy.cn 3 ENV GOPROXY https://goproxy.cn
4 ENV GO111MODULE on 4 ENV GO111MODULE on
5 ENV GOPATH /go 5 ENV GOPATH /go
  6 +#RUN git clone http://gitlab.fjmaimaimai.com/mmm-go/gocomm.git /go/src/gocomm
6 RUN cd /go/src/gocomm \ 7 RUN cd /go/src/gocomm \
7 && git pull 8 && git pull
8 WORKDIR /go/src/openapi 9 WORKDIR /go/src/openapi
@@ -10,7 +11,7 @@ WORKDIR /go/src/openapi @@ -10,7 +11,7 @@ WORKDIR /go/src/openapi
10 COPY go.mod . 11 COPY go.mod .
11 12
12 COPY . . 13 COPY . .
13 -RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -o opp main.go 14 +RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w" -o openapi main.go
14 15
15 #FROM alpine:latest 16 #FROM alpine:latest
16 FROM 192.168.0.243:5000/mmm/mmmopp:20200110 17 FROM 192.168.0.243:5000/mmm/mmmopp:20200110
1 [dev-online] 1 [dev-online]
2 -#Ali could  
3 -AccessKeyID ="LTAI4FhiZ3UktC6N1u3H5GFC"  
4 -AccessKeySecret ="UyspWwdni55CYQ02hUCint4qY2jNYO"  
5 -  
6 #日志 2 #日志
7 log_level = "${LOG_LEVEL||debug}" 3 log_level = "${LOG_LEVEL||debug}"
8 aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}" 4 aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}"
9 5
  6 +#Ali could
  7 +AccessKeyID ="LTAI4Fz1LUBW2fXp6QWaJHRS"
  8 +AccessKeySecret ="aLZXwK8pgrs10Ws03qcN7NsrSXFVsg"
  9 +
10 #阿里云 10 #阿里云
11 -cname ="https://media.goexample.live/" 11 +#cname ="https://media.goexample.live/"
  12 +cname ="https://media.fjmaimaimai.com/"
12 13
1 [dev] 1 [dev]
2 #Ali could 2 #Ali could
3 -AccessKeyID ="LTAI4FhiZ3UktC6N1u3H5GFC"  
4 -AccessKeySecret ="UyspWwdni55CYQ02hUCint4qY2jNYO" 3 +#AccessKeyID ="LTAI4FhiZ3UktC6N1u3H5GFC"
  4 +#AccessKeySecret ="UyspWwdni55CYQ02hUCint4qY2jNYO"
  5 +AccessKeyID ="LTAI4Fz1LUBW2fXp6QWaJHRS"
  6 +AccessKeySecret ="aLZXwK8pgrs10Ws03qcN7NsrSXFVsg"
5 7
6 #日志 8 #日志
7 log_level = "${LOG_LEVEL||debug}" 9 log_level = "${LOG_LEVEL||debug}"
8 aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}" 10 aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}"
9 11
10 -#阿里云  
11 -cname ="https://media.goexample.live/" 12 +#阿里云 https://media.goexample.live/
  13 +cname ="https://media.fjmaimaimai.com/"
1 [prod] 1 [prod]
  2 +#日志
  3 +log_level = "${LOG_LEVEL||debug}"
  4 +aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}"
  5 +
2 #Ali could 6 #Ali could
3 -AccessKeyID ="LTAI4FhiZ3UktC6N1u3H5GFC"  
4 -AccessKeySecret ="UyspWwdni55CYQ02hUCint4qY2jNYO"  
  7 +AccessKeyID ="LTAI4Fz1LUBW2fXp6QWaJHRS"
  8 +AccessKeySecret ="aLZXwK8pgrs10Ws03qcN7NsrSXFVsg"
  9 +
  10 +#阿里云
  11 +cname ="https://media.fjmaimaimai.com/"
1 [test] 1 [test]
  2 +#日志
  3 +log_level = "${LOG_LEVEL||debug}"
  4 +aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}"
  5 +
2 #Ali could 6 #Ali could
3 -AccessKeyID ="LTAI4FhiZ3UktC6N1u3H5GFC"  
4 -AccessKeySecret ="UyspWwdni55CYQ02hUCint4qY2jNYO"  
  7 +AccessKeyID ="LTAI4Fz1LUBW2fXp6QWaJHRS"
  8 +AccessKeySecret ="aLZXwK8pgrs10Ws03qcN7NsrSXFVsg"
  9 +
  10 +#阿里云
  11 +cname ="https://media.fjmaimaimai.com/"
@@ -118,7 +118,7 @@ var AllowOption = func(ctx *context.Context) { @@ -118,7 +118,7 @@ var AllowOption = func(ctx *context.Context) {
118 f := cors.Allow(&cors.Options{ 118 f := cors.Allow(&cors.Options{
119 AllowMethods: []string{"POST", "GET", "OPTIONS", "PUT", "DELETE"}, //允许的请求类型 119 AllowMethods: []string{"POST", "GET", "OPTIONS", "PUT", "DELETE"}, //允许的请求类型
120 AllowHeaders: []string{"Origin", "Accept", "Content-Type", "Authorization", 120 AllowHeaders: []string{"Origin", "Accept", "Content-Type", "Authorization",
121 - "x-mmm-cid", "x-mmm-uid", "x-mmm-accesstoken", "x-mmm-refreshtoken", "x-requested-with"}, //允许的头部信息 121 + "x-mmm-cid", "x-mmm-uid", "x-mmm-accesstoken", "x-mmm-refreshtoken", "x-requested-with", "x-mmm-appproject", "x-mmm-devicetype"}, //允许的头部信息
122 ExposeHeaders: []string{"Content-Length"}, //允许暴露的头信息 122 ExposeHeaders: []string{"Content-Length"}, //允许暴露的头信息
123 AllowCredentials: false, //不允许共享AuthTuffic证书 123 AllowCredentials: false, //不允许共享AuthTuffic证书
124 AllowAllOrigins: true, //允许的请求来源 124 AllowAllOrigins: true, //允许的请求来源
@@ -37,6 +37,43 @@ func (this *VodController) CreateUploadVideo() { @@ -37,6 +37,43 @@ func (this *VodController) CreateUploadVideo() {
37 msg = protocol.NewReturnResponse(vod.CreateUploadVideo(header, request)) 37 msg = protocol.NewReturnResponse(vod.CreateUploadVideo(header, request))
38 } 38 }
39 39
  40 +//创建视频上传凭证(多个) CreateUploadVideos
  41 +// @router /createUploadVideos [post]
  42 +func (this *VodController) CreateUploadVideos() {
  43 + var msg *protocol.ResponseMessage
  44 + var response *aliyun.CreateUploadVideosResponse = &aliyun.CreateUploadVideosResponse{
  45 + List: make([]*aliyun.CreateUploadVideoResponse, 0),
  46 + }
  47 + defer func() {
  48 + this.Resp(msg)
  49 + }()
  50 + var request *aliyun.CreateUploadVideosRequest
  51 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  52 + log.Error(err)
  53 + msg = protocol.BadRequestParam(1)
  54 + return
  55 + }
  56 + if b, m := this.Valid(request); !b {
  57 + msg = m
  58 + return
  59 + }
  60 + header := controllers.GetRequestHeader(this.Ctx)
  61 + var err error
  62 + if len(request.Items) == 0 {
  63 + msg = protocol.BadRequestParam(2)
  64 + }
  65 + for i := range request.Items {
  66 + r := request.Items[i]
  67 + if rsp, e := vod.CreateUploadVideo(header, r); e != nil {
  68 + err = e
  69 + break
  70 + } else {
  71 + response.List = append(response.List, rsp)
  72 + }
  73 + }
  74 + msg = protocol.NewReturnResponse(response, err)
  75 +}
  76 +
40 //刷新视频上传凭证 RefreshUploadVideo 77 //刷新视频上传凭证 RefreshUploadVideo
41 // @router /refreshUploadVideo [post] 78 // @router /refreshUploadVideo [post]
42 func (this *VodController) RefreshUploadVideo() { 79 func (this *VodController) RefreshUploadVideo() {
@@ -75,6 +112,7 @@ func (this *VodController) CreateUploadImage() { @@ -75,6 +112,7 @@ func (this *VodController) CreateUploadImage() {
75 msg = m 112 msg = m
76 return 113 return
77 } 114 }
  115 +
78 header := controllers.GetRequestHeader(this.Ctx) 116 header := controllers.GetRequestHeader(this.Ctx)
79 msg = protocol.NewReturnResponse(vod.CreateUploadImage(header, request)) 117 msg = protocol.NewReturnResponse(vod.CreateUploadImage(header, request))
80 } 118 }
@@ -112,7 +150,6 @@ func (this *VodController) CreateUploadImages() { @@ -112,7 +150,6 @@ func (this *VodController) CreateUploadImages() {
112 err = e 150 err = e
113 break 151 break
114 } else { 152 } else {
115 - rsp.FileName = r.FileName  
116 response.List = append(response.List, rsp) 153 response.List = append(response.List, rsp)
117 } 154 }
118 } 155 }
1 #!/bin/bash 1 #!/bin/bash
2 export PATH=/root/local/bin:$PATH 2 export PATH=/root/local/bin:$PATH
3 -kubectl -n mmm-suplus-dev get pods | grep -q mmmopenapi 3 +kubectl -n mmm-suplus-dev get pods | grep -q mmm-open-api
4 if [ "$?" == "1" ];then 4 if [ "$?" == "1" ];then
5 - kubectl create -f /tmp/dev/mmm-go-opp/opp.yaml --record  
6 - kubectl -n mmm-suplus-dev get svc | grep -q mmmopenapi 5 + kubectl create -f /tmp/dev/mmm-open-api/mmm-open-api.yaml --record
  6 + kubectl -n mmm-suplus-dev get svc | grep -q mmm-open-api
7 if [ "$?" == "0" ];then 7 if [ "$?" == "0" ];then
8 - echo "mmmopenapi service install success!" 8 + echo "mmm-open-api service install success!"
9 else 9 else
10 - echo "mmmopenapi service install fail!" 10 + echo "mmm-open-api service install fail!"
11 fi 11 fi
12 - kubectl -n mmm-suplus-dev get pods | grep -q mmmopenapi 12 + kubectl -n mmm-suplus-dev get pods | grep -q mmm-open-api
13 if [ "$?" == "0" ];then 13 if [ "$?" == "0" ];then
14 - echo "mmmopenapi deployment install success!" 14 + echo "mmm-open-api deployment install success!"
15 else 15 else
16 - echo "mmmopenapi deployment install fail!" 16 + echo "mmm-open-api deployment install fail!"
17 fi 17 fi
18 else 18 else
19 - kubectl delete -f /tmp/dev/mmm-go-opp/opp.yaml  
20 - kubectl -n mmm-suplus-dev get svc | grep -q mmmopenapi 19 + kubectl delete -f /tmp/dev/mmm-open-api/mmm-open-api.yaml
  20 + kubectl -n mmm-suplus-dev get svc | grep -q mmm-open-api
21 while [ "$?" == "0" ] 21 while [ "$?" == "0" ]
22 do 22 do
23 - kubectl -n mmm-suplus-dev get svc | grep -q mmmopenapi 23 + kubectl -n mmm-suplus-dev get svc | grep -q mmm-open-api
24 done 24 done
25 - kubectl -n mmm-suplus-dev get pods | grep -q mmmopenapi 25 + kubectl -n mmm-suplus-dev get pods | grep -q mmm-open-api
26 while [ "$?" == "0" ] 26 while [ "$?" == "0" ]
27 do 27 do
28 - kubectl -n mmm-suplus-dev get pods | grep -q mmmopenapi 28 + kubectl -n mmm-suplus-dev get pods | grep -q mmm-open-api
29 done 29 done
30 - kubectl create -f /tmp/dev/mmm-go-opp/opp.yaml --record  
31 - kubectl -n mmm-suplus-dev get svc | grep -q mmmopenapi 30 + kubectl create -f /tmp/dev/mmm-open-api/mmm-open-api.yaml --record
  31 + kubectl -n mmm-suplus-dev get svc | grep -q mmm-open-api
32 if [ "$?" == "0" ];then 32 if [ "$?" == "0" ];then
33 - echo "mmmopenapi service update success!" 33 + echo "mmm-open-api service update success!"
34 else 34 else
35 echo "opp service update fail!" 35 echo "opp service update fail!"
36 fi 36 fi
1 apiVersion: v1 1 apiVersion: v1
2 kind: Service 2 kind: Service
3 metadata: 3 metadata:
4 - name: mmmopenapi 4 + name: mmm-open-api
5 namespace: mmm-suplus-dev 5 namespace: mmm-suplus-dev
6 labels: 6 labels:
7 - k8s-app: mmmopenapi 7 + k8s-app: mmm-open-api
8 spec: 8 spec:
9 ports: 9 ports:
10 - name: "http" 10 - name: "http"
11 port: 80 11 port: 80
12 targetPort: 8080 12 targetPort: 8080
13 selector: 13 selector:
14 - k8s-app: mmmopenapi 14 + k8s-app: mmm-open-api
15 --- 15 ---
16 apiVersion: extensions/v1beta1 16 apiVersion: extensions/v1beta1
17 kind: Deployment 17 kind: Deployment
18 metadata: 18 metadata:
19 - name: mmmopenapi 19 + name: mmm-open-api
20 namespace: mmm-suplus-dev 20 namespace: mmm-suplus-dev
21 labels: 21 labels:
22 - k8s-app: mmmopenapi 22 + k8s-app: mmm-open-api
23 spec: 23 spec:
24 replicas: 1 24 replicas: 1
25 template: 25 template:
26 metadata: 26 metadata:
27 labels: 27 labels:
28 - k8s-app: mmmopenapi 28 + k8s-app: mmm-open-api
29 spec: 29 spec:
30 affinity: 30 affinity:
31 nodeAffinity: 31 nodeAffinity:
@@ -43,8 +43,8 @@ spec: @@ -43,8 +43,8 @@ spec:
43 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb 43 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
44 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy 44 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
45 containers: 45 containers:
46 - - name: mmmopenapi  
47 - image: 192.168.0.243:5000/mmm/mmmopenapi:dev 46 + - name: mmm-open-api
  47 + image: 192.168.0.243:5000/mmm/mmm-open-api:dev
48 imagePullPolicy: Always 48 imagePullPolicy: Always
49 volumeMounts: 49 volumeMounts:
50 - mountPath: /opt/logs 50 - mountPath: /opt/logs
@@ -84,8 +84,6 @@ spec: @@ -84,8 +84,6 @@ spec:
84 configMapKeyRef: 84 configMapKeyRef:
85 name: suplus-config 85 name: suplus-config
86 key: mysql.password 86 key: mysql.password
87 - - name: MYSQL_DB_NAME  
88 - value: "opportunity_dev"  
89 - name: RUN_MODE 87 - name: RUN_MODE
90 value: "dev-online" 88 value: "dev-online"
91 - name: LOG_LEVEL 89 - name: LOG_LEVEL
1 #!/bin/bash 1 #!/bin/bash
2 export PATH=/root/local/bin:$PATH 2 export PATH=/root/local/bin:$PATH
3 -kubectl -n mmm-suplus-prd get pods | grep -q mmmopp 3 +kubectl -n mmm-suplus-prd get pods | grep -q mmm-open-api
4 if [ "$?" == "1" ];then 4 if [ "$?" == "1" ];then
5 - kubectl create -f /tmp/prd/mmm-go-opp/opp.yaml --record  
6 - kubectl -n mmm-suplus-prd get svc | grep -q mmmopp 5 + kubectl create -f /tmp/prd/mmm-open-api/mmm-open-api.yaml --record
  6 + kubectl -n mmm-suplus-prd get svc | grep -q mmm-open-api
7 if [ "$?" == "0" ];then 7 if [ "$?" == "0" ];then
8 - echo "mmmopp service install success!" 8 + echo "mmm-open-api service install success!"
9 else 9 else
10 - echo "mmmopp service install fail!" 10 + echo "mmm-open-api service install fail!"
11 fi 11 fi
12 - kubectl -n mmm-suplus-prd get pods | grep -q mmmopp 12 + kubectl -n mmm-suplus-prd get pods | grep -q mmm-open-api
13 if [ "$?" == "0" ];then 13 if [ "$?" == "0" ];then
14 - echo "mmmopp deployment install success!" 14 + echo "mmm-open-api deployment install success!"
15 else 15 else
16 - echo "mmmopp deployment install fail!" 16 + echo "mmm-open-api deployment install fail!"
17 fi 17 fi
18 else 18 else
19 - kubectl delete -f /tmp/prd/mmm-go-opp/opp.yaml  
20 - kubectl -n mmm-suplus-prd get svc | grep -q mmmopp 19 + kubectl delete -f /tmp/prd/mmm-open-api/mmm-open-api.yaml
  20 + kubectl -n mmm-suplus-prd get svc | grep -q mmm-open-api
21 while [ "$?" == "0" ] 21 while [ "$?" == "0" ]
22 do 22 do
23 - kubectl -n mmm-suplus-prd get svc | grep -q mmmopp 23 + kubectl -n mmm-suplus-prd get svc | grep -q mmm-open-api
24 done 24 done
25 - kubectl -n mmm-suplus-prd get pods | grep -q mmmopp 25 + kubectl -n mmm-suplus-prd get pods | grep -q mmm-open-api
26 while [ "$?" == "0" ] 26 while [ "$?" == "0" ]
27 do 27 do
28 - kubectl -n mmm-suplus-prd get pods | grep -q mmmopp 28 + kubectl -n mmm-suplus-prd get pods | grep -q mmm-open-api
29 done 29 done
30 - kubectl create -f /tmp/prd/mmm-go-opp/opp.yaml --record  
31 - kubectl -n mmm-suplus-prd get svc | grep -q mmmopp 30 + kubectl create -f /tmp/prd/mmm-open-api/mmm-open-api.yaml --record
  31 + kubectl -n mmm-suplus-prd get svc | grep -q mmm-open-api
32 if [ "$?" == "0" ];then 32 if [ "$?" == "0" ];then
33 - echo "mmmopp service update success!" 33 + echo "mmm-open-api service update success!"
34 else 34 else
35 - echo "opp service update fail!" 35 + echo "mmm-open-api service update fail!"
36 fi 36 fi
37 - kubectl -n mmm-suplus-prd get pods | grep -q opp 37 + kubectl -n mmm-suplus-prd get pods | grep -q mmm-open-api
38 if [ "$?" == "0" ];then 38 if [ "$?" == "0" ];then
39 - echo "opp deployment update success!" 39 + echo "mmm-open-api deployment update success!"
40 else 40 else
41 - echo "opp deployment update fail!" 41 + echo "mmm-open-api deployment update fail!"
42 fi 42 fi
43 fi 43 fi
1 apiVersion: v1 1 apiVersion: v1
2 kind: Service 2 kind: Service
3 metadata: 3 metadata:
4 - name: mmmopp 4 + name: mmm-open-api
5 namespace: mmm-suplus-prd 5 namespace: mmm-suplus-prd
6 labels: 6 labels:
7 - k8s-app: mmmopp 7 + k8s-app: mmm-open-api
8 spec: 8 spec:
9 ports: 9 ports:
10 - name: "http" 10 - name: "http"
11 port: 80 11 port: 80
12 targetPort: 8080 12 targetPort: 8080
13 - - name: "https"  
14 - port: 443  
15 - targetPort: 443  
16 selector: 13 selector:
17 - k8s-app: mmmopp 14 + k8s-app: mmm-open-api
18 --- 15 ---
19 apiVersion: extensions/v1beta1 16 apiVersion: extensions/v1beta1
20 kind: Deployment 17 kind: Deployment
21 metadata: 18 metadata:
22 - name: mmmopp 19 + name: mmm-open-api
23 namespace: mmm-suplus-prd 20 namespace: mmm-suplus-prd
24 labels: 21 labels:
25 - k8s-app: mmmopp 22 + k8s-app: mmm-open-api
26 spec: 23 spec:
27 replicas: 1 24 replicas: 1
28 template: 25 template:
29 metadata: 26 metadata:
30 labels: 27 labels:
31 - k8s-app: mmmopp 28 + k8s-app: mmm-open-api
32 spec: 29 spec:
33 affinity: 30 affinity:
34 nodeAffinity: 31 nodeAffinity:
@@ -46,17 +43,16 @@ spec: @@ -46,17 +43,16 @@ spec:
46 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb 43 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
47 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy 44 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
48 containers: 45 containers:
49 - - name: mmmopp  
50 - image: 192.168.0.243:5000/mmm/mmmopp:master 46 + - name: mmm-open-api
  47 + image: 192.168.0.243:5000/mmm/mmm-open-api:dev
51 imagePullPolicy: Always 48 imagePullPolicy: Always
52 volumeMounts: 49 volumeMounts:
53 - mountPath: /opt/logs 50 - mountPath: /opt/logs
54 name: accesslogs 51 name: accesslogs
55 - mountPath: /var/www/opp/file 52 - mountPath: /var/www/opp/file
56 - name: opportunity-pvc1 53 + name: mmmjihuitest-pvc1
57 ports: 54 ports:
58 - containerPort: 8080 55 - containerPort: 8080
59 - - containerPort: 443  
60 env: 56 env:
61 - name: MYSQL_HOST 57 - name: MYSQL_HOST
62 valueFrom: 58 valueFrom:
@@ -88,8 +84,6 @@ spec: @@ -88,8 +84,6 @@ spec:
88 configMapKeyRef: 84 configMapKeyRef:
89 name: suplus-config 85 name: suplus-config
90 key: mysql.password 86 key: mysql.password
91 - - name: MYSQL_DB_NAME  
92 - value: "opportunity"  
93 - name: RUN_MODE 87 - name: RUN_MODE
94 value: "prod" 88 value: "prod"
95 - name: LOG_LEVEL 89 - name: LOG_LEVEL
@@ -101,6 +95,6 @@ spec: @@ -101,6 +95,6 @@ spec:
101 volumes: 95 volumes:
102 - name: accesslogs 96 - name: accesslogs
103 emptyDir: {} 97 emptyDir: {}
104 - - name: opportunity-pvc1 98 + - name: mmmjihuitest-pvc1
105 persistentVolumeClaim: 99 persistentVolumeClaim:
106 - claimName: opportunity-pvc5  
  100 + claimName: mmmjihuitest-pvc
1 #!/bin/bash 1 #!/bin/bash
2 export PATH=/root/local/bin:$PATH 2 export PATH=/root/local/bin:$PATH
3 -kubectl -n mmm-suplus-test get pods | grep -q mmmopp 3 +kubectl -n mmm-suplus-test get pods | grep -q mmm-open-api
4 if [ "$?" == "1" ];then 4 if [ "$?" == "1" ];then
5 - kubectl create -f /tmp/test/mmm-go-opp/opp.yaml --record  
6 - kubectl -n mmm-suplus-test get svc | grep -q mmmopp 5 + kubectl create -f /tmp/test/mmm-open-api/mmm-open-api.yaml --record
  6 + kubectl -n mmm-suplus-test get svc | grep -q mmm-open-api
7 if [ "$?" == "0" ];then 7 if [ "$?" == "0" ];then
8 - echo "mmmopp service install success!" 8 + echo "mmm-open-api service install success!"
9 else 9 else
10 - echo "mmmopp service install fail!" 10 + echo "mmm-open-api service install fail!"
11 fi 11 fi
12 - kubectl -n mmm-suplus-test get pods | grep -q mmmopp 12 + kubectl -n mmm-suplus-test get pods | grep -q mmm-open-api
13 if [ "$?" == "0" ];then 13 if [ "$?" == "0" ];then
14 - echo "mmmopp deployment install success!" 14 + echo "mmm-open-api deployment install success!"
15 else 15 else
16 - echo "mmmopp deployment install fail!" 16 + echo "mmm-open-api deployment install fail!"
17 fi 17 fi
18 else 18 else
19 - kubectl delete -f /tmp/test/mmm-go-opp/opp.yaml  
20 - kubectl -n mmm-suplus-test get svc | grep -q mmmopp 19 + kubectl delete -f /tmp/test/mmm-open-api/mmm-open-api.yaml
  20 + kubectl -n mmm-suplus-test get svc | grep -q mmm-open-api
21 while [ "$?" == "0" ] 21 while [ "$?" == "0" ]
22 do 22 do
23 - kubectl -n mmm-suplus-test get svc | grep -q mmmopp 23 + kubectl -n mmm-suplus-test get svc | grep -q mmm-open-api
24 done 24 done
25 - kubectl -n mmm-suplus-test get pods | grep -q mmmopp 25 + kubectl -n mmm-suplus-test get pods | grep -q mmm-open-api
26 while [ "$?" == "0" ] 26 while [ "$?" == "0" ]
27 do 27 do
28 - kubectl -n mmm-suplus-test get pods | grep -q mmmopp 28 + kubectl -n mmm-suplus-test get pods | grep -q mmm-open-api
29 done 29 done
30 - kubectl create -f /tmp/test/mmm-go-opp/opp.yaml --record  
31 - kubectl -n mmm-suplus-test get svc | grep -q mmmopp 30 + kubectl create -f /tmp/test/mmm-open-api/mmm-open-api.yaml --record
  31 + kubectl -n mmm-suplus-test get svc | grep -q mmm-open-api
32 if [ "$?" == "0" ];then 32 if [ "$?" == "0" ];then
33 - echo "mmmopp service update success!" 33 + echo "mmm-open-api service update success!"
34 else 34 else
35 echo "opp service update fail!" 35 echo "opp service update fail!"
36 fi 36 fi
1 apiVersion: v1 1 apiVersion: v1
2 kind: Service 2 kind: Service
3 metadata: 3 metadata:
4 - name: mmmopp 4 + name: mmm-open-api
5 namespace: mmm-suplus-test 5 namespace: mmm-suplus-test
6 labels: 6 labels:
7 - k8s-app: mmmopp 7 + k8s-app: mmm-open-api
8 spec: 8 spec:
9 ports: 9 ports:
10 - name: "http" 10 - name: "http"
11 port: 80 11 port: 80
12 targetPort: 8080 12 targetPort: 8080
13 - - name: "https"  
14 - port: 443  
15 - targetPort: 443  
16 selector: 13 selector:
17 - k8s-app: mmmopp 14 + k8s-app: mmm-open-api
18 --- 15 ---
19 apiVersion: extensions/v1beta1 16 apiVersion: extensions/v1beta1
20 kind: Deployment 17 kind: Deployment
21 metadata: 18 metadata:
22 - name: mmmopp 19 + name: mmm-open-api
23 namespace: mmm-suplus-test 20 namespace: mmm-suplus-test
24 labels: 21 labels:
25 - k8s-app: mmmopp 22 + k8s-app: mmm-open-api
26 spec: 23 spec:
27 replicas: 1 24 replicas: 1
28 template: 25 template:
29 metadata: 26 metadata:
30 labels: 27 labels:
31 - k8s-app: mmmopp 28 + k8s-app: mmm-open-api
32 spec: 29 spec:
33 affinity: 30 affinity:
34 nodeAffinity: 31 nodeAffinity:
@@ -46,17 +43,16 @@ spec: @@ -46,17 +43,16 @@ spec:
46 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb 43 - cn-hangzhou.i-bp1euf5u1ph9kbhtndhb
47 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy 44 - cn-hangzhou.i-bp1hyp5oips9cdwxxgxy
48 containers: 45 containers:
49 - - name: mmmopp  
50 - image: 192.168.0.243:5000/mmm/mmmopp:dev 46 + - name: mmm-open-api
  47 + image: 192.168.0.243:5000/mmm/mmm-open-api:dev
51 imagePullPolicy: Always 48 imagePullPolicy: Always
52 volumeMounts: 49 volumeMounts:
53 - mountPath: /opt/logs 50 - mountPath: /opt/logs
54 name: accesslogs 51 name: accesslogs
55 - mountPath: /var/www/opp/file 52 - mountPath: /var/www/opp/file
56 - name: mmmjihuitest2-pvc1 53 + name: mmmjihuitest-pvc1
57 ports: 54 ports:
58 - containerPort: 8080 55 - containerPort: 8080
59 - - containerPort: 443  
60 env: 56 env:
61 - name: MYSQL_HOST 57 - name: MYSQL_HOST
62 valueFrom: 58 valueFrom:
@@ -88,8 +84,6 @@ spec: @@ -88,8 +84,6 @@ spec:
88 configMapKeyRef: 84 configMapKeyRef:
89 name: suplus-config 85 name: suplus-config
90 key: mysql.password 86 key: mysql.password
91 - - name: MYSQL_DB_NAME  
92 - value: "opportunity_test"  
93 - name: RUN_MODE 87 - name: RUN_MODE
94 value: "test" 88 value: "test"
95 - name: LOG_LEVEL 89 - name: LOG_LEVEL
@@ -101,6 +95,6 @@ spec: @@ -101,6 +95,6 @@ spec:
101 volumes: 95 volumes:
102 - name: accesslogs 96 - name: accesslogs
103 emptyDir: {} 97 emptyDir: {}
104 - - name: mmmjihuitest2-pvc1 98 + - name: mmmjihuitest-pvc1
105 persistentVolumeClaim: 99 persistentVolumeClaim:
106 - claimName: mmmjihuitest2-pvc  
  100 + claimName: mmmjihuitest-pvc
@@ -5,6 +5,7 @@ go 1.12 @@ -5,6 +5,7 @@ go 1.12
5 require ( 5 require (
6 github.com/aliyun/alibaba-cloud-sdk-go v1.60.348 6 github.com/aliyun/alibaba-cloud-sdk-go v1.60.348
7 github.com/astaxie/beego v1.10.0 7 github.com/astaxie/beego v1.10.0
  8 + github.com/klauspost/cpuid v1.2.3 // indirect
8 gitlab.fjmaimaimai.com/mmm-go/gocomm v0.0.1 9 gitlab.fjmaimaimai.com/mmm-go/gocomm v0.0.1
9 ) 10 )
10 11
1 package aliyun 1 package aliyun
2 2
  3 +import "fmt"
  4 +
  5 +var (
  6 + OssErrFileFormat = fmt.Errorf("文件名格式有错")
  7 +)
  8 +
3 //创建视频上传凭证 9 //创建视频上传凭证
4 /*CreateUploadVideo */ 10 /*CreateUploadVideo */
5 type CreateUploadVideoRequest struct { 11 type CreateUploadVideoRequest struct {
6 FileName string `json:"fileName"` 12 FileName string `json:"fileName"`
  13 + Title string `json:"title"`
7 } 14 }
8 15
9 type CreateUploadVideoResponse struct { 16 type CreateUploadVideoResponse struct {
  17 + FileName string `json:"fileName"`
10 RequestId string `json:"requestId"` 18 RequestId string `json:"requestId"`
11 VideoId string `json:"videoId"` 19 VideoId string `json:"videoId"`
12 UploadAddress string `json:"uploadAddress"` 20 UploadAddress string `json:"uploadAddress"`
@@ -14,6 +22,14 @@ type CreateUploadVideoResponse struct { @@ -14,6 +22,14 @@ type CreateUploadVideoResponse struct {
14 FileURL string `json:"fileURL"` 22 FileURL string `json:"fileURL"`
15 } 23 }
16 24
  25 +/*CreateUploadVideos */
  26 +type CreateUploadVideosRequest struct {
  27 + Items []*CreateUploadVideoRequest `json:"items"`
  28 +}
  29 +type CreateUploadVideosResponse struct {
  30 + List []*CreateUploadVideoResponse `json:"list"`
  31 +}
  32 +
17 //刷新视频上传凭证 RefreshUploadVideo 33 //刷新视频上传凭证 RefreshUploadVideo
18 type RefreshUploadVideoRequest struct { 34 type RefreshUploadVideoRequest struct {
19 VideoId string `json:"videoId" valid:"Required;"` 35 VideoId string `json:"videoId" valid:"Required;"`
@@ -2,6 +2,7 @@ package aliyun @@ -2,6 +2,7 @@ package aliyun
2 2
3 type CreateUploadImageRequest struct { 3 type CreateUploadImageRequest struct {
4 FileName string `json:"fileName"` 4 FileName string `json:"fileName"`
  5 + Title string `json:"title"`
5 } 6 }
6 7
7 type CreateUploadImageResponse struct { 8 type CreateUploadImageResponse struct {
@@ -4,9 +4,16 @@ import ( @@ -4,9 +4,16 @@ import (
4 "encoding/base64" 4 "encoding/base64"
5 "encoding/json" 5 "encoding/json"
6 "fmt" 6 "fmt"
  7 + "path/filepath"
7 "strings" 8 "strings"
8 ) 9 )
9 10
  11 +var (
  12 + VoiceFileExt = ".mp3.wma.wav.aac.ra.m4a.flac.ape.ac3.amr"
  13 + ImageFileExt = ".png.jpg.jpeg.gif"
  14 + VideoFileExt = ".mp4.ts.3gp.mpg.mpeg.mpe.dat.vob.asf"
  15 +)
  16 +
10 type UploadAddress struct { 17 type UploadAddress struct {
11 Endpoint string 18 Endpoint string
12 Bucket string 19 Bucket string
@@ -38,3 +45,19 @@ func ParseUploadAddress(uploadAddress string) (up UploadAddress, err error) { @@ -38,3 +45,19 @@ func ParseUploadAddress(uploadAddress string) (up UploadAddress, err error) {
38 } 45 }
39 return 46 return
40 } 47 }
  48 +
  49 +func validFileExt(rule string, ext string) bool {
  50 + if strings.ContainsAny(rule, strings.ToLower(ext)) {
  51 + return true
  52 + }
  53 + return false
  54 +}
  55 +
  56 +//@rule 规则
  57 +func ValidFileExt(rule, filename string) bool {
  58 + if len(filename) == 0 {
  59 + return false
  60 + }
  61 + ext := filepath.Ext(filename)
  62 + return validFileExt(rule, ext)
  63 +}
@@ -41,12 +41,8 @@ func InitVodClient(accessKeyId string, accessKeySecret string) (client *vod.Clie @@ -41,12 +41,8 @@ func InitVodClient(accessKeyId string, accessKeySecret string) (client *vod.Clie
41 //获取视频上传地址和凭证,并创建视频信息 41 //获取视频上传地址和凭证,并创建视频信息
42 func CreateUploadVideo(client *vod.Client, r *CreateUploadVideoRequest) (response *CreateUploadVideoResponse, err error) { 42 func CreateUploadVideo(client *vod.Client, r *CreateUploadVideoRequest) (response *CreateUploadVideoResponse, err error) {
43 request := vod.CreateCreateUploadVideoRequest() 43 request := vod.CreateCreateUploadVideoRequest()
44 - filePath := getFileName(FileVideo, r.FileName)  
45 - if filepath.Ext(r.FileName) == "mp3" {  
46 - filePath = getFileName(FileVoice, r.FileName)  
47 - }  
48 - request.Title = filePath  
49 - request.FileName = filePath 44 + request.Title = r.Title
  45 + request.FileName = r.FileName
50 request.AcceptFormat = "JSON" 46 request.AcceptFormat = "JSON"
51 rsp, err := client.CreateUploadVideo(request) 47 rsp, err := client.CreateUploadVideo(request)
52 if err != nil { 48 if err != nil {
@@ -58,11 +54,6 @@ func CreateUploadVideo(client *vod.Client, r *CreateUploadVideoRequest) (respons @@ -58,11 +54,6 @@ func CreateUploadVideo(client *vod.Client, r *CreateUploadVideoRequest) (respons
58 UploadAddress: rsp.UploadAddress, 54 UploadAddress: rsp.UploadAddress,
59 UploadAuth: rsp.UploadAuth, 55 UploadAuth: rsp.UploadAuth,
60 } 56 }
61 - if up, e := ParseUploadAddress(rsp.UploadAddress); e != nil {  
62 - log.Error(e)  
63 - } else {  
64 - response.FileURL = up.GetFileUrl(beego.AppConfig.String("cname"))  
65 - }  
66 return 57 return
67 } 58 }
68 59
@@ -90,9 +81,12 @@ func RefreshUploadVideo(client *vod.Client, r *RefreshUploadVideoRequest) (respo @@ -90,9 +81,12 @@ func RefreshUploadVideo(client *vod.Client, r *RefreshUploadVideoRequest) (respo
90 //获取图片上传地址和凭证,并创建视频信息 81 //获取图片上传地址和凭证,并创建视频信息
91 func CreateUploadImage(client *vod.Client, r *CreateUploadImageRequest) (response *CreateUploadImageResponse, err error) { 82 func CreateUploadImage(client *vod.Client, r *CreateUploadImageRequest) (response *CreateUploadImageResponse, err error) {
92 request := vod.CreateCreateUploadImageRequest() 83 request := vod.CreateCreateUploadImageRequest()
93 - filePath := getFileName(FileImage, r.FileName)  
94 request.ImageType = "default" 84 request.ImageType = "default"
95 - request.Title = filePath 85 + request.Title = r.Title
  86 + if filepath.Ext(r.FileName) == "" {
  87 + err = fmt.Errorf("filename:%v invalid", r.FileName)
  88 + return
  89 + }
96 request.ImageExt = filepath.Ext(r.FileName)[1:] 90 request.ImageExt = filepath.Ext(r.FileName)[1:]
97 request.AcceptFormat = "JSON" 91 request.AcceptFormat = "JSON"
98 //request.StorageLocation = filepath.Base(request.Title) 92 //request.StorageLocation = filepath.Base(request.Title)
@@ -127,7 +121,7 @@ func GetGetVideoPlayAuth(client *vod.Client, r *GetVideoPlayAuthRequest) (respon @@ -127,7 +121,7 @@ func GetGetVideoPlayAuth(client *vod.Client, r *GetVideoPlayAuthRequest) (respon
127 } 121 }
128 122
129 //fileType: video voice image 123 //fileType: video voice image
130 -func getFileName(fileType string, filename string) string { 124 +func GetFileName(fileType string, filename string) string {
131 date := comm_time.GetTimeByYyyymmdd() 125 date := comm_time.GetTimeByYyyymmdd()
132 subfix := path.Ext(filename) 126 subfix := path.Ext(filename)
133 prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32)) 127 prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32))
1 package utils 1 package utils
2 2
3 -import "os" 3 +import (
  4 + "fmt"
  5 + "github.com/astaxie/beego"
  6 + "gitlab.fjmaimaimai.com/mmm-go/gocomm/common"
  7 + comm_time "gitlab.fjmaimaimai.com/mmm-go/gocomm/time"
  8 + "os"
  9 + "path"
  10 + "time"
  11 +)
4 12
5 // 判断所给路径文件/文件夹是否存在 13 // 判断所给路径文件/文件夹是否存在
6 func Exists(path string) bool { 14 func Exists(path string) bool {
@@ -27,3 +35,16 @@ func IsDir(path string) bool { @@ -27,3 +35,16 @@ func IsDir(path string) bool {
27 func IsFile(path string) bool { 35 func IsFile(path string) bool {
28 return !IsDir(path) 36 return !IsDir(path)
29 } 37 }
  38 +
  39 +//fileType: video voice image
  40 +func GetFileName(projectName, fileType string, filename string) string {
  41 + date := comm_time.GetTimeByYyyymmdd()
  42 + subfix := path.Ext(filename)
  43 + if len(projectName) == 0 {
  44 + projectName = beego.BConfig.AppName
  45 + }
  46 + prefix := fmt.Sprintf("%v_%v", time.Now().Unix(), common.RandomString(32))
  47 + filename = fmt.Sprintf("%v%v", prefix, subfix)
  48 + sourcePath := fmt.Sprintf("%v/%v/%v/%v/%v", projectName, beego.BConfig.RunMode, date, fileType, filename)
  49 + return sourcePath
  50 +}
1 package main 1 package main
2 2
3 import ( 3 import (
  4 + "fmt"
4 "github.com/astaxie/beego" 5 "github.com/astaxie/beego"
  6 + "gitlab.fjmaimaimai.com/mmm-go/gocomm/config"
5 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" 7 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
  8 + "openapi/internal/utils"
6 _ "openapi/routers" 9 _ "openapi/routers"
7 "time" 10 "time"
8 ) 11 )
9 12
10 func init() { 13 func init() {
11 time.Local = time.FixedZone("CST", 3600*8) 14 time.Local = time.FixedZone("CST", 3600*8)
  15 + log.InitLog(config.Logger{
  16 + Filename: beego.AppConfig.String("aliyun_logs_access"),
  17 + Level: fmt.Sprintf("%v", utils.ResolveLogLevel(beego.AppConfig.String("log_level"))),
  18 + })
12 } 19 }
13 20
14 func main() { 21 func main() {
15 defer func() { 22 defer func() {
16 - log.Info("app on stop!") 23 + log.Info("open-api on stop!")
17 }() 24 }()
18 - log.Info("app on start!") 25 +
  26 + log.Info("open-api on start!")
19 log.Info("Beego Run Mode:", beego.BConfig.RunMode) 27 log.Info("Beego Run Mode:", beego.BConfig.RunMode)
20 28
21 beego.Run() 29 beego.Run()
1 package protocol 1 package protocol
2 2
3 var errmessge ErrorMap = map[int]string{ 3 var errmessge ErrorMap = map[int]string{
4 - 0: "成功",  
5 - 1: "系统异常",  
6 - 2: "参数错误", 4 + 0: "成功",
  5 + 1: "系统异常",
  6 + 2: "参数错误",
  7 + 113: "签名验证失败",
7 } 8 }
  1 +package routers
  2 +
  3 +import (
  4 + "github.com/astaxie/beego"
  5 + "github.com/astaxie/beego/context/param"
  6 +)
  7 +
  8 +func init() {
  9 +
  10 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  11 + beego.ControllerComments{
  12 + Method: "CreateUploadImage",
  13 + Router: `/createUploadImage`,
  14 + AllowHTTPMethods: []string{"post"},
  15 + MethodParams: param.Make(),
  16 + Params: nil})
  17 +
  18 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  19 + beego.ControllerComments{
  20 + Method: "CreateUploadImages",
  21 + Router: `/createUploadImages`,
  22 + AllowHTTPMethods: []string{"post"},
  23 + MethodParams: param.Make(),
  24 + Params: nil})
  25 +
  26 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  27 + beego.ControllerComments{
  28 + Method: "CreateUploadVideo",
  29 + Router: `/createUploadVideo`,
  30 + AllowHTTPMethods: []string{"post"},
  31 + MethodParams: param.Make(),
  32 + Params: nil})
  33 +
  34 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  35 + beego.ControllerComments{
  36 + Method: "CreateUploadVideos",
  37 + Router: `/createUploadVideos`,
  38 + AllowHTTPMethods: []string{"post"},
  39 + MethodParams: param.Make(),
  40 + Params: nil})
  41 +
  42 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  43 + beego.ControllerComments{
  44 + Method: "GetPlayInfo",
  45 + Router: `/getPlayInfo`,
  46 + AllowHTTPMethods: []string{"post"},
  47 + MethodParams: param.Make(),
  48 + Params: nil})
  49 +
  50 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  51 + beego.ControllerComments{
  52 + Method: "GetVideoPlayAuth",
  53 + Router: `/getVideoPlayAuth`,
  54 + AllowHTTPMethods: []string{"post"},
  55 + MethodParams: param.Make(),
  56 + Params: nil})
  57 +
  58 + beego.GlobalControllerRouter["openapi/controllers/v1:VodController"] = append(beego.GlobalControllerRouter["openapi/controllers/v1:VodController"],
  59 + beego.ControllerComments{
  60 + Method: "RefreshUploadVideo",
  61 + Router: `/refreshUploadVideo`,
  62 + AllowHTTPMethods: []string{"post"},
  63 + MethodParams: param.Make(),
  64 + Params: nil})
  65 +
  66 +}
@@ -9,8 +9,10 @@ import ( @@ -9,8 +9,10 @@ import (
9 var nsV1 *beego.Namespace 9 var nsV1 *beego.Namespace
10 10
11 func init() { 11 func init() {
12 - nsVod := beego.NewNamespace("vod", beego.NSBefore(controllers.LogRequestData), beego.NSBefore(controllers.AllowOption), beego.NSInclude(&v1.VodController{}))  
13 - 12 + nsV1 := beego.NewNamespace("v1",
  13 + beego.NSNamespace("vod", beego.NSBefore(controllers.AllowOption), beego.NSInclude(&v1.VodController{})),
  14 + //beego.NSNamespace("vod", beego.NSBefore(controllers.FilterComm), beego.NSBefore(controllers.AllowOption), beego.NSInclude(&v1.VodController{})),
  15 + )
14 beego.SetStaticPath("/log", beego.AppConfig.String("aliyun_logs_access")) 16 beego.SetStaticPath("/log", beego.AppConfig.String("aliyun_logs_access"))
15 - beego.AddNamespace(nsVod) 17 + beego.AddNamespace(nsV1)
16 } 18 }
  1 +package vod
  2 +
  3 +import (
  4 + "openapi/internal/aliyun"
  5 + "openapi/protocol"
  6 +)
  7 +
  8 +//错误处理
  9 +func ErrorHandler(in error) (err error) {
  10 + switch in {
  11 + case aliyun.OssErrFileFormat:
  12 + err = protocol.NewCustomMessage(2, in.Error())
  13 + break
  14 + default:
  15 + err = in
  16 + return
  17 + }
  18 + return
  19 +}
1 package vod 1 package vod
2 2
3 import ( 3 import (
  4 + "github.com/astaxie/beego"
4 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" 5 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
5 "openapi/internal/aliyun" 6 "openapi/internal/aliyun"
  7 + "openapi/internal/utils"
6 "openapi/protocol" 8 "openapi/protocol"
7 ) 9 )
8 10
9 //创建视频上传凭证 11 //创建视频上传凭证
10 func CreateUploadVideo(header *protocol.RequestHeader, request *aliyun.CreateUploadVideoRequest) (rsp *aliyun.CreateUploadVideoResponse, err error) { 12 func CreateUploadVideo(header *protocol.RequestHeader, request *aliyun.CreateUploadVideoRequest) (rsp *aliyun.CreateUploadVideoResponse, err error) {
11 - var () 13 + var (
  14 + up aliyun.UploadAddress
  15 + filePath string
  16 + fileName = request.FileName
  17 + )
  18 + defer func() {
  19 + err = ErrorHandler(err)
  20 + }()
12 client, e := aliyun.DefaultVodClient() 21 client, e := aliyun.DefaultVodClient()
13 if e != nil { 22 if e != nil {
14 log.Error(e) 23 log.Error(e)
15 err = e 24 err = e
16 return 25 return
17 } 26 }
  27 + if aliyun.ValidFileExt(aliyun.VideoFileExt, request.FileName) {
  28 + filePath = utils.GetFileName(header.AppProject, aliyun.FileVideo, request.FileName)
  29 + } else if aliyun.ValidFileExt(aliyun.VoiceFileExt, request.FileName) {
  30 + filePath = utils.GetFileName(header.AppProject, aliyun.FileVoice, request.FileName)
  31 + } else {
  32 + err = aliyun.OssErrFileFormat
  33 + return
  34 + }
  35 + request.FileName = filePath
  36 + request.Title = filePath
18 rsp, err = aliyun.CreateUploadVideo(client, request) 37 rsp, err = aliyun.CreateUploadVideo(client, request)
19 if err != nil { 38 if err != nil {
20 log.Error(err) 39 log.Error(err)
  40 + return
  41 + }
  42 + if up, err = aliyun.ParseUploadAddress(rsp.UploadAddress); err != nil {
  43 + log.Error(err)
  44 + return
21 } 45 }
  46 + rsp.FileName = fileName
  47 + rsp.FileURL = up.GetFileUrl(beego.AppConfig.String("cname"))
22 return 48 return
23 } 49 }
24 50
@@ -50,8 +76,13 @@ func CreateUploadImage(header *protocol.RequestHeader, request *aliyun.CreateUpl @@ -50,8 +76,13 @@ func CreateUploadImage(header *protocol.RequestHeader, request *aliyun.CreateUpl
50 if len(request.FileName) == 0 { 76 if len(request.FileName) == 0 {
51 request.FileName = aliyun.DefaultImageFileName 77 request.FileName = aliyun.DefaultImageFileName
52 } 78 }
  79 + if !aliyun.ValidFileExt(aliyun.ImageFileExt, request.FileName) {
  80 + return nil, aliyun.OssErrFileFormat
  81 + }
  82 + request.Title = utils.GetFileName(header.AppProject, aliyun.FileImage, request.FileName)
53 rsp, err = aliyun.CreateUploadImage(client, request) 83 rsp, err = aliyun.CreateUploadImage(client, request)
54 rsp.FileURL = rsp.ImageURL 84 rsp.FileURL = rsp.ImageURL
  85 + rsp.FileName = request.FileName
55 if err != nil { 86 if err != nil {
56 log.Error(err) 87 log.Error(err)
57 } 88 }