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
9b102022
Commit
9b102022
authored
Jan 27, 2021
by
Li Feifei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test
parent
23be6f2f
Pipeline
#13599
failed with stages
in 10 seconds
Changes
7
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
194 additions
and
7 deletions
+194
-7
app.conf
conf/app.conf
+3
-2
go.mod
go.mod
+4
-1
go.sum
go.sum
+0
-0
router.go
routers/router.go
+17
-1
mq.go
upload/mq.go
+80
-0
ppt.go
upload/ppt.go
+78
-0
upload.go
upload/upload.go
+12
-3
No files found.
conf/app.conf
View file @
9b102022
...
@@ -4,4 +4,5 @@ runmode = dev
...
@@ -4,4 +4,5 @@ runmode = dev
autorender
=
false
autorender
=
false
copyrequestbody
=
true
copyrequestbody
=
true
EnableDocs
=
true
EnableDocs
=
true
sqlconn
=
sqlconn
=
\ No newline at end of file
copyrequestbody
=
true
\ No newline at end of file
go.mod
View file @
9b102022
...
@@ -5,7 +5,10 @@ go 1.12
...
@@ -5,7 +5,10 @@ go 1.12
require (
require (
github.com/aliyun/aliyun-oss-go-sdk v2.0.6+incompatible
github.com/aliyun/aliyun-oss-go-sdk v2.0.6+incompatible
github.com/astaxie/beego v1.12.1
github.com/astaxie/beego v1.12.1
github.com/go-sql-driver/mysql v1.4.1
github.com/beego/bee v1.12.3 // indirect
github.com/go-sql-driver/mysql v1.5.0
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
github.com/streadway/amqp v1.0.0 // indirect
github.com/stretchr/objx v0.1.1 // indirect
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
)
)
go.sum
View file @
9b102022
This diff is collapsed.
Click to expand it.
routers/router.go
View file @
9b102022
...
@@ -8,11 +8,27 @@
...
@@ -8,11 +8,27 @@
package
routers
package
routers
import
(
import
(
"encoding/json"
"ppt_server/controllers"
"ppt_server/controllers"
"github.com/astaxie/beego/context"
"github.com/astaxie/beego"
"github.com/astaxie/beego"
"ppt_server/upload"
)
)
func
init
()
{
func
init
()
{
beego
.
Router
(
"/file/upload"
,
&
controllers
.
UploadController
{})
beego
.
Router
(
"/file/upload"
,
&
controllers
.
UploadController
{})
beego
.
Post
(
"/file/callback"
,
func
(
ctx
*
context
.
Context
)
{
var
mapFiles
map
[
string
]
interface
{}
var
err
error
if
err
=
json
.
Unmarshal
(
ctx
.
Input
.
RequestBody
,
&
mapFiles
);
err
!=
nil
{
ctx
.
WriteString
(
"Error "
+
err
.
Error
())
return
}
if
err
=
upload
.
CreateFileDataBase
(
mapFiles
);
err
!=
nil
{
ctx
.
WriteString
(
"Error "
+
err
.
Error
())
return
}
ctx
.
WriteString
(
"Upload Ok"
)
})
}
}
upload/mq.go
0 → 100644
View file @
9b102022
/**
* @Authore: lifeifei
* @Date: 2021/1/25 10:47 上午
*/
package
upload
import
(
"encoding/json"
"fmt"
beeLogger
"github.com/beego/bee/logger"
"github.com/streadway/amqp"
)
type
RabbitMQ
struct
{
connection
*
amqp
.
Connection
channel
*
amqp
.
Channel
}
func
(
r
*
RabbitMQ
)
mqConnect
()
error
{
var
err
error
RabbitUrl
:=
fmt
.
Sprintf
(
"amqp://%s:%s@%s:%d/"
,
"video"
,
"1fqH4WFR19uckgRyHzgISw"
,
"test-rmq.offcncloud.com/"
,
5672
)
if
r
.
connection
,
err
=
amqp
.
DialConfig
(
RabbitUrl
,
amqp
.
Config
{
Vhost
:
"v.ofc.office"
});
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"RabbitMQ Server Connect Fail: %s"
,
err
)
return
err
}
c
,
err
:=
r
.
connection
.
Channel
()
if
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"Channel connet fail: %s"
,
err
)
return
err
}
r
.
channel
=
c
beeLogger
.
Log
.
Success
(
"RabbitMQ Server is running..."
)
return
nil
}
func
(
r
*
RabbitMQ
)
mqClose
()
{
if
r
.
channel
!=
nil
{
err
:=
r
.
channel
.
Close
()
if
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"RabbitMQ Server Close Err: %s"
,
err
)
}
}
if
r
.
connection
!=
nil
{
err
:=
r
.
connection
.
Close
()
if
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"RabbitMQ Server Channel Close Err: %s"
,
err
)
}
}
}
func
(
r
*
RabbitMQ
)
Send
(
req
map
[
string
]
interface
{})
error
{
defer
r
.
mqClose
()
bytes
,
err
:=
json
.
Marshal
(
req
)
if
err
!=
nil
{
return
err
}
return
r
.
channel
.
Publish
(
"X.ofc.ppt2image"
,
"RK.ofc.ppt2image"
,
false
,
false
,
amqp
.
Publishing
{
ContentType
:
"text/plain"
,
Body
:
bytes
,
})
}
func
Send
(
r
map
[
string
]
interface
{})
error
{
s
:=
&
RabbitMQ
{}
return
s
.
Send
(
r
)
}
\ No newline at end of file
upload/ppt.go
0 → 100644
View file @
9b102022
/**
* @Authore: lifeifei
* @Date: 2021/1/25 10:11 上午
*/
package
upload
import
(
"github.com/astaxie/beego/orm"
beeLogger
"github.com/beego/bee/logger"
"mime"
Qurl
"net/url"
"path"
"ppt_server/models"
"strings"
"time"
)
type
PPT
struct
{
request
*
models
.
XyuSmallTempFiles
}
func
(
p
*
PPT
)
Transform
()
(
err
error
)
{
maps
:=
make
(
map
[
string
]
interface
{})
o
:=
orm
.
NewOrm
()
var
room
models
.
XyuRoom
err
=
o
.
QueryTable
(
"xyu_room"
)
.
Filter
(
"room_num"
,
p
.
request
.
RoomNum
)
.
One
(
&
room
)
if
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"获取房间信息失败:%s"
,
err
)
return
}
maps
[
"url"
]
=
p
.
request
.
Url
maps
[
"room_id"
]
=
room
.
Id
maps
[
"id"
]
=
time
.
Now
()
.
Unix
()
maps
[
"is_courseware"
]
=
"1"
maps
[
"private"
]
=
"1"
maps
[
"nickname"
]
=
p
.
request
.
Nickanem
maps
[
"name"
]
=
p
.
request
.
Name
maps
[
"time"
]
=
time
.
Now
()
.
Format
(
"2006-01-02 15:04:0"
)
maps
[
"uuid"
]
=
p
.
request
.
Uuid
switch
p
.
request
.
Type
{
case
1
:
maps
[
"is_material"
]
=
1
case
2
:
maps
[
"is_courseware"
]
=
1
case
3
:
maps
[
"is_titlebook"
]
=
1
}
objectName
:=
p
.
request
.
Url
[
strings
.
Index
(
p
.
request
.
Url
,
"com/"
)
+
4
:
]
url
,
_
:=
Qurl
.
QueryUnescape
(
p
.
request
.
Url
)
filename
:=
path
.
Base
(
url
)
ext
:=
path
.
Ext
(
filename
)
slice_path
:=
strings
.
Split
(
objectName
,
"/"
)
maps
[
"file_name_hash"
]
=
slice_path
[
3
]
maps
[
"hash"
]
=
slice_path
[
2
]
var
docType
string
if
strings
.
Contains
(
ext
,
"ppt"
)
||
strings
.
Contains
(
ext
,
"pptx"
)
{
docType
=
"4"
}
else
if
strings
.
Contains
(
ext
,
"doc"
)
||
strings
.
Contains
(
ext
,
"docx"
)
{
docType
=
"2"
}
else
if
strings
.
Contains
(
ext
,
"xls"
)
||
strings
.
Contains
(
ext
,
"xlsx"
)
{
docType
=
"3"
}
else
if
strings
.
Contains
(
ext
,
"pdf"
)
{
docType
=
"1"
}
maps
[
"doc_type"
]
=
docType
_
=
mime
.
AddExtensionType
(
".pptx"
,
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
)
maps
[
"type"
]
=
mime
.
TypeByExtension
(
ext
)
maps
[
"path"
]
=
objectName
if
err
:=
Send
(
maps
);
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"Send Error: %s"
,
err
)
_
=
UpdateFileError
(
"6"
,
maps
[
"uuid"
]
.
(
string
),
maps
[
"roomNum"
]
.
(
string
),
objectName
)
return
}
return
nil
}
upload/upload.go
View file @
9b102022
...
@@ -9,6 +9,7 @@ import (
...
@@ -9,6 +9,7 @@ import (
"fmt"
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/astaxie/beego/orm"
"github.com/astaxie/beego/orm"
beeLogger
"github.com/beego/bee/logger"
"io"
"io"
"io/ioutil"
"io/ioutil"
...
@@ -79,6 +80,15 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -79,6 +80,15 @@ 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
ext
:=
path
.
Ext
(
filename
)
if
strings
.
Contains
(
ext
,
"ppt"
)
||
strings
.
Contains
(
ext
,
"pptx"
)
{
p
:=
&
PPT
{
request
:
v
}
if
err
:=
p
.
Transform
();
err
!=
nil
{
beeLogger
.
Log
.
Errorf
(
"PPT Error : %s"
,
err
)
return
}
return
}
objectName
:=
v
.
Url
[
strings
.
Index
(
v
.
Url
,
"com/"
)
+
4
:
]
objectName
:=
v
.
Url
[
strings
.
Index
(
v
.
Url
,
"com/"
)
+
4
:
]
// 文件以及存在就不需要下载
// 文件以及存在就不需要下载
...
@@ -156,7 +166,6 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -156,7 +166,6 @@ func Down(v *models.XyuSmallTempFiles) {
room_file
[
"hash"
]
=
contentHash
room_file
[
"hash"
]
=
contentHash
//获取文件后缀
//获取文件后缀
ext
:=
path
.
Ext
(
filename
)
var
doc_type
string
var
doc_type
string
doc_type
=
"0"
doc_type
=
"0"
...
@@ -292,7 +301,7 @@ func Down(v *models.XyuSmallTempFiles) {
...
@@ -292,7 +301,7 @@ func Down(v *models.XyuSmallTempFiles) {
err
=
o
.
QueryTable
(
"xyu_room_files"
)
.
Filter
(
"room_id"
,
room
.
Id
)
.
Filter
(
"name"
,
filename
)
.
One
(
&
roomFile
)
err
=
o
.
QueryTable
(
"xyu_room_files"
)
.
Filter
(
"room_id"
,
room
.
Id
)
.
Filter
(
"name"
,
filename
)
.
One
(
&
roomFile
)
if
err
==
orm
.
ErrNoRows
{
if
err
==
orm
.
ErrNoRows
{
err
=
c
reateFileDataBase
(
room_file
)
err
=
C
reateFileDataBase
(
room_file
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Println
(
"err=="
,
err
)
fmt
.
Println
(
"err=="
,
err
)
return
return
...
@@ -423,7 +432,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
...
@@ -423,7 +432,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
return
nil
return
nil
}
}
func
c
reateFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
func
C
reateFileDataBase
(
room_file
map
[
string
]
interface
{})
error
{
vv
:=
Qurl
.
Values
{}
vv
:=
Qurl
.
Values
{}
...
...
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