Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
ppt_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Li Feifei
ppt_server
Commits
9dfa7766
Commit
9dfa7766
authored
Mar 21, 2020
by
Li Feifei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test'
parents
ba2cc7eb
8e0acaf3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
157 additions
and
31 deletions
+157
-31
.gitlab-ci.yml
.gitlab-ci.yml
+45
-0
Dockerfile
Dockerfile
+23
-0
app.conf
conf/app.conf
+1
-1
upload.go
controllers/upload.go
+5
-1
database.go
models/database.go
+9
-7
upload.go
upload/upload.go
+74
-22
No files found.
.gitlab-ci.yml
0 → 100644
View file @
9dfa7766
stages
:
-
build
-
make
-
deploy
variables
:
VERSION
:
"
3.$CI_PIPELINE_ID"
BUILDDIR
:
"
/builds"
LOCALDIR
:
"
/opt/gitlab-runner/builds"
NAMESPACE
:
"
srs-prd"
ppt-server-build
:
stage
:
build
tags
:
-
test-ppt-server-shell
only
:
-
test
retry
:
2
script
:
#- GO111MODULE=auto
#- mkdir -p ${BUILDDIR}/ppt-server
#- rm -rf ${BUILDDIR}/ppt-server/*
#- go build -o ${BUILDDIR}/ppt-server/ppt-server
#- cp -f Dockerfile ${BUILDDIR}/ppt-server/
#- cp -rf conf ${BUILDDIR}/ppt-server/
#- cd ${BUILDDIR}/ppt-server/
-
docker build -t registry.cn-beijing.aliyuncs.com/offcn_llive/ppt-server:$VERSION .
-
docker push registry.cn-beijing.aliyuncs.com/offcn_llive/ppt-server:$VERSION
-
docker rmi registry.cn-beijing.aliyuncs.com/offcn_llive/ppt-server:$VERSION &
ppt-server-deploy
:
stage
:
deploy
tags
:
-
test-ppt-server-shell
only
:
-
test
retry
:
2
before_script
:
-
CLUSTER="hb2-center"
script
:
-
set -x
-
for cs in ${CLUSTER[@]};do \
-
kubectl set image -n ${NAMESPACE} deployment/ppt-server-deployment ppt-server=registry.cn-beijing.aliyuncs.com/offcn_llive/ppt-server:$VERSION; \
-
done
\ No newline at end of file
Dockerfile
0 → 100644
View file @
9dfa7766
FROM
registry.cn-beijing.aliyuncs.com/offcn_llive/go:build as build
COPY
. /tmp/develop
RUN
cd
/tmp/develop
\
&&
go build
-o
/tmp/ppt-server main.go
#FROM debian:buster-slim
FROM
registry.cn-beijing.aliyuncs.com/offcn_llive/go:runtime-alpine-3.10
ENV
branch test
ENV
rb_host rmq-cluster-balancer
ENV
rb_user video
ENV
rb_pass 1fqH4WFR19uckgRyHzgISw
ENV
read_sql rr-2ze1xl88115o8i2umlo.mysql.rds.aliyuncs.com
ENV
read_user video
ENV
read_pass 'vlty&AxMwT$lmLv6bN8dkDuBYlh%N5pe'
ENV
write_sql rm-2zevlk47ul0ovuci80o.mysql.rds.aliyuncs.com
ENV
write_user video
ENV
write_pass 'vlty&AxMwT$lmLv6bN8dkDuBYlh%N5pe'
COPY
--chown=1000:1000 --from=build /tmp/ppt-server /src/ppt-server/
COPY
--chown=1000:1000 conf/ /src/ppt-server/conf
RUN
chmod +x /src/ppt-server/ppt-server
WORKDIR
/src/ppt-server/
CMD
["./ppt-server"]
\ No newline at end of file
conf/app.conf
View file @
9dfa7766
appname
=
ppt_server
appname
=
ppt_server
httpport
=
80
81
httpport
=
80
runmode
=
dev
runmode
=
dev
autorender
=
false
autorender
=
false
copyrequestbody
=
true
copyrequestbody
=
true
...
...
controllers/upload.go
View file @
9dfa7766
...
@@ -27,6 +27,10 @@ func (this *UploadController) newResponse(code int, msg string) {
...
@@ -27,6 +27,10 @@ func (this *UploadController) newResponse(code int, msg string) {
this
.
ServeJSON
()
this
.
ServeJSON
()
}
}
func
(
this
*
UploadController
)
Get
()
{
this
.
newResponse
(
200
,
"成功"
)
}
func
(
this
*
UploadController
)
Post
()
{
func
(
this
*
UploadController
)
Post
()
{
u
:=
models
.
XyuSmallTempFiles
{}
u
:=
models
.
XyuSmallTempFiles
{}
...
@@ -35,7 +39,7 @@ func (this *UploadController) Post() {
...
@@ -35,7 +39,7 @@ func (this *UploadController) Post() {
this
.
newResponse
(
100
,
"参数绑定失败"
)
this
.
newResponse
(
100
,
"参数绑定失败"
)
return
return
}
}
if
u
.
RoomNum
==
""
||
u
.
Uuid
==
""
||
u
.
Url
==
""
||
u
.
Type
==
0
{
if
u
.
RoomNum
==
""
||
u
.
Uuid
==
""
||
u
.
Url
==
""
{
this
.
newResponse
(
100
,
"参数不正确"
)
this
.
newResponse
(
100
,
"参数不正确"
)
return
return
}
}
...
...
models/database.go
View file @
9dfa7766
...
@@ -88,13 +88,15 @@ type XyuSmallRoomRecord struct {
...
@@ -88,13 +88,15 @@ type XyuSmallRoomRecord struct {
}
}
type
XyuSmallTempFiles
struct
{
type
XyuSmallTempFiles
struct
{
Id
int
Id
int
RoomNum
string
`form:"room_num"`
RoomNum
string
`form:"room_num"`
Type
int
`form:"type"`
Name
string
`form:"name"`
Url
string
`form:"url"`
Nickanem
string
`form:"nickname"`
Time
string
`form:"time"'`
Type
int
`form:"type"`
Uuid
string
`form:"uuid"`
Url
string
`form:"url"`
Status
int
Time
string
`form:"time"'`
Uuid
string
`form:"uuid"`
Status
int
}
}
type
XyuRoomFiles
struct
{
type
XyuRoomFiles
struct
{
...
...
upload/upload.go
View file @
9dfa7766
...
@@ -3,7 +3,6 @@ package upload
...
@@ -3,7 +3,6 @@ package upload
import
(
import
(
"archive/zip"
"archive/zip"
"crypto/md5"
"crypto/md5"
"crypto/sha1"
"encoding/hex"
"encoding/hex"
"encoding/json"
"encoding/json"
"errors"
"errors"
...
@@ -80,12 +79,14 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -80,12 +79,14 @@ func Down(v *models.XyuSmallTempFiles) {
url
,
_
:=
Qurl
.
QueryUnescape
(
v
.
Url
)
url
,
_
:=
Qurl
.
QueryUnescape
(
v
.
Url
)
filename
:=
path
.
Base
(
url
)
filename
:=
path
.
Base
(
url
)
filePath
:=
"/data/files/"
+
filename
filePath
:=
"/data/files/"
+
filename
objectName
:=
v
.
Url
[
strings
.
Index
(
v
.
Url
,
"com/"
)
+
4
:
]
// 文件以及存在就不需要下载
// 文件以及存在就不需要下载
if
_
,
err
:=
os
.
Stat
(
filePath
);
err
!=
nil
{
if
_
,
err
:=
os
.
Stat
(
filePath
);
err
!=
nil
{
// Get the data
// Get the data
resp
,
err
:=
http
.
Get
(
url
)
resp
,
err
:=
http
.
Get
(
url
)
if
err
!=
nil
{
if
err
!=
nil
{
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
return
return
}
}
...
@@ -94,6 +95,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -94,6 +95,7 @@ func Down(v *models.XyuSmallTempFiles) {
out
,
err
:=
os
.
Create
(
filePath
)
out
,
err
:=
os
.
Create
(
filePath
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
defer
out
.
Close
()
defer
out
.
Close
()
...
@@ -102,6 +104,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -102,6 +104,7 @@ func Down(v *models.XyuSmallTempFiles) {
_
,
err
=
io
.
Copy
(
out
,
resp
.
Body
)
_
,
err
=
io
.
Copy
(
out
,
resp
.
Body
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
UpdateFileError
(
"1"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
}
}
...
@@ -130,13 +133,17 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -130,13 +133,17 @@ func Down(v *models.XyuSmallTempFiles) {
t
:=
time
.
Now
()
t
:=
time
.
Now
()
now
:=
fmt
.
Sprintf
(
"%02d-%02d-%02d %02d:%02d:%02d"
,
now
:=
fmt
.
Sprintf
(
"%02d-%02d-%02d %02d:%02d:%02d"
,
t
.
Year
(),
t
.
Month
(),
t
.
Day
(),
t
.
Hour
(),
t
.
Minute
(),
t
.
Second
())
t
.
Year
(),
t
.
Month
(),
t
.
Day
(),
t
.
Hour
(),
t
.
Minute
(),
t
.
Second
())
slice_path
:=
strings
.
Split
(
objectName
,
"/"
)
fmt
.
Println
(
slice_path
[
2
])
room_file
[
"room_id"
]
=
room
.
Id
room_file
[
"room_id"
]
=
room
.
Id
room_file
[
"id"
]
=
t
.
Unix
()
room_file
[
"id"
]
=
t
.
Unix
()
room_file
[
"is_courseware"
]
=
"1"
room_file
[
"is_courseware"
]
=
"1"
room_file
[
"private"
]
=
"1"
room_file
[
"private"
]
=
"1"
room_file
[
"nickname"
]
=
"助教"
room_file
[
"nickname"
]
=
v
.
Nickanem
room_file
[
"name"
]
=
filen
ame
room_file
[
"name"
]
=
v
.
N
ame
room_file
[
"time"
]
=
now
room_file
[
"time"
]
=
now
room_file
[
"uuid"
]
=
v
.
Uuid
if
v
.
Type
==
1
{
if
v
.
Type
==
1
{
room_file
[
"is_material"
]
=
1
room_file
[
"is_material"
]
=
1
}
else
if
v
.
Type
==
2
{
}
else
if
v
.
Type
==
2
{
...
@@ -144,12 +151,8 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -144,12 +151,8 @@ func Down(v *models.XyuSmallTempFiles) {
}
else
if
v
.
Type
==
3
{
}
else
if
v
.
Type
==
3
{
room_file
[
"is_titlebook"
]
=
1
room_file
[
"is_titlebook"
]
=
1
}
}
contentHash
:=
slice_path
[
2
]
contentHash
,
_
:=
fileContentHash
(
file
)
room_file
[
"file_name_hash"
]
=
slice_path
[
3
]
fileHash
:=
[]
byte
(
filename
)
fileHashName
:=
fmt
.
Sprintf
(
"%x"
,
sha1
.
Sum
(
fileHash
))
room_file
[
"file_name_hash"
]
=
fileHashName
room_file
[
"hash"
]
=
contentHash
room_file
[
"hash"
]
=
contentHash
//获取文件后缀
//获取文件后缀
...
@@ -176,10 +179,11 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -176,10 +179,11 @@ func Down(v *models.XyuSmallTempFiles) {
return
return
}
}
defer
fd
.
Close
()
defer
fd
.
Close
()
objectPath
:=
"documents/"
+
v
.
RoomNum
+
"/"
+
contentHash
+
"/"
+
fileHashName
+
"/"
objectName
:=
objectPath
+
contentHash
+
ext
fmt
.
Println
(
"objectName == "
,
objectName
)
fmt
.
Println
(
"objectName == "
,
objectName
)
room_file
[
"path"
]
=
objectPath
objectPath
:=
objectName
[
0
:
strings
.
LastIndex
(
objectName
,
"/"
)]
+
"/"
room_file
[
"path"
]
=
objectName
err
=
bucket
.
PutObject
(
objectName
,
fd
)
err
=
bucket
.
PutObject
(
objectName
,
fd
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
...
@@ -189,11 +193,12 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -189,11 +193,12 @@ func Down(v *models.XyuSmallTempFiles) {
maps
,
err
:=
getFileInfo
(
furl
)
maps
,
err
:=
getFileInfo
(
furl
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
UpdateFileError
(
"2"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
room_file
[
"files_size"
]
=
strconv
.
Itoa
(
int
(
maps
[
"FileSize"
]
.
(
float64
)))
room_file
[
"files_size"
]
=
strconv
.
Itoa
(
int
(
maps
[
"FileSize"
]
.
(
float64
)))
room_file
[
"link"
]
=
fu
rl
room_file
[
"link"
]
=
v
.
U
rl
wordFloat64
:=
getWords
(
maps
)
wordFloat64
:=
getWords
(
maps
)
...
@@ -203,6 +208,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -203,6 +208,7 @@ func Down(v *models.XyuSmallTempFiles) {
err
:=
uploadPacked
(
bucket
,
filename
,
contentHash
,
objectPath
,
err
:=
uploadPacked
(
bucket
,
filename
,
contentHash
,
objectPath
,
wordFloat64
)
wordFloat64
)
if
err
!=
nil
{
if
err
!=
nil
{
UpdateFileError
(
"6"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
return
return
}
}
...
@@ -210,11 +216,13 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -210,11 +216,13 @@ func Down(v *models.XyuSmallTempFiles) {
ch
:=
make
(
chan
bool
)
ch
:=
make
(
chan
bool
)
go
func
()
{
go
func
()
{
err
:=
downloadFile
(
downUrl
,
func
(
length
,
downLen
int64
)
{
err
:=
downloadFile
(
downUrl
,
contentHash
,
func
(
length
,
downLen
int64
)
{
})
})
if
err
==
nil
{
if
err
==
nil
{
ch
<-
true
ch
<-
true
}
else
{
UpdateFileError
(
"3"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
}
}
}()
}()
<-
ch
<-
ch
...
@@ -224,6 +232,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -224,6 +232,7 @@ func Down(v *models.XyuSmallTempFiles) {
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
reader
,
err
:=
zip
.
OpenReader
(
"/data/files/"
+
contentHash
+
".zip"
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
UpdateFileError
(
"4"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
return
return
}
}
ch1
:=
make
(
chan
bool
)
ch1
:=
make
(
chan
bool
)
...
@@ -242,6 +251,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -242,6 +251,7 @@ func Down(v *models.XyuSmallTempFiles) {
return
return
}
}
}
}
UpdateFileError
(
"5"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
ch1
<-
false
ch1
<-
false
return
return
}
else
{
}
else
{
...
@@ -260,6 +270,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -260,6 +270,7 @@ func Down(v *models.XyuSmallTempFiles) {
defer
reader
.
Close
()
defer
reader
.
Close
()
fmt
.
Println
(
uploadImageCount
,
wordFloat64
)
fmt
.
Println
(
uploadImageCount
,
wordFloat64
)
if
uploadImageCount
!=
wordFloat64
{
if
uploadImageCount
!=
wordFloat64
{
UpdateFileError
(
"5"
,
v
.
Uuid
,
v
.
RoomNum
,
objectName
)
fmt
.
Println
(
"上传失败"
)
fmt
.
Println
(
"上传失败"
)
return
return
}
}
...
@@ -358,6 +369,52 @@ func webToken() (*http.Client, string, error) {
...
@@ -358,6 +369,52 @@ func webToken() (*http.Client, string, error) {
}
}
}
}
func
UpdateFileError
(
code
,
uuid
,
room_num
,
path
string
)
error
{
vv
:=
Qurl
.
Values
{}
vv
.
Add
(
"code"
,
code
)
vv
.
Add
(
"uuid"
,
uuid
)
vv
.
Add
(
"room_num"
,
room_num
)
vv
.
Add
(
"path"
,
path
)
client
,
token
,
err
:=
webToken
()
if
err
!=
nil
{
fmt
.
Println
(
"token 获取失败"
,
err
)
return
err
}
vv
.
Add
(
"_token"
,
token
)
body
:=
vv
.
Encode
()
payload
:=
strings
.
NewReader
(
body
)
req
,
err
:=
http
.
NewRequest
(
"POST"
,
WEBURL
+
"/web/room_files_error"
,
payload
)
if
err
!=
nil
{
fmt
.
Println
(
"123"
)
return
err
}
req
.
Header
.
Add
(
"content-type"
,
"multipart/form-data"
)
req
.
Header
.
Add
(
"Content-Type"
,
"application/x-www-form-urlencoded"
)
res
,
err
:=
client
.
Do
(
req
)
if
err
!=
nil
{
fmt
.
Println
(
"5555"
)
return
err
}
defer
res
.
Body
.
Close
()
post_body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
fmt
.
Println
(
"456"
)
return
err
}
map2
:=
make
(
map
[
string
]
interface
{})
err
=
json
.
Unmarshal
(
post_body
,
&
map2
)
if
err
!=
nil
{
fmt
.
Println
(
"678"
)
return
err
}
if
int
(
map2
[
"code"
]
.
(
float64
))
!=
200
{
return
errors
.
New
(
"消息下发失败"
)
}
return
nil
}
func
createFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
func
createFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
vv
:=
Qurl
.
Values
{}
vv
:=
Qurl
.
Values
{}
...
@@ -519,7 +576,7 @@ func fileContentHash(file io.Reader) (string, []byte) {
...
@@ -519,7 +576,7 @@ func fileContentHash(file io.Reader) (string, []byte) {
return
fmt
.
Sprintf
(
"%s"
,
hex
.
EncodeToString
(
result
)),
b
return
fmt
.
Sprintf
(
"%s"
,
hex
.
EncodeToString
(
result
)),
b
}
}
func
downloadFile
(
url
string
,
fb
func
(
length
,
downLen
int64
))
error
{
func
downloadFile
(
url
,
contentHash
string
,
fb
func
(
length
,
downLen
int64
))
error
{
var
(
var
(
fsize
int64
fsize
int64
buf
=
make
([]
byte
,
32
*
1024
)
buf
=
make
([]
byte
,
32
*
1024
)
...
@@ -539,15 +596,10 @@ func downloadFile(url string, fb func(length, downLen int64)) error {
...
@@ -539,15 +596,10 @@ func downloadFile(url string, fb func(length, downLen int64)) error {
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
}
}
//创建文件
//创建文件
var
filenameWithSuffix
string
filenameWithSuffix
=
path
.
Base
(
url
)
//获取文件名带后缀
var
fileSuffix
string
fileSuffix
=
path
.
Ext
(
filenameWithSuffix
)
//获取文件后缀
var
filenameOnly
string
filenameOnly
=
strings
.
Replace
(
filenameWithSuffix
,
fileSuffix
,
".zip"
,
-
1
)
//获取文件名
file
,
err
:=
os
.
Create
(
"/data/files/"
+
contentHash
+
".zip"
)
file
,
err
:=
os
.
Create
(
"/data/files/"
+
filenameOnly
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment