Commit 237cb857 by 贾我勇

Merge branch 'test'

Conflicts:
	conf/app.conf
	upload/upload.go
parents 6a6609af 240313e9
Pipeline #15330 failed with stages
in 11 seconds
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
...@@ -9,4 +9,4 @@ EnableHTTPS=true ...@@ -9,4 +9,4 @@ EnableHTTPS=true
EnableHttpTLS = true EnableHttpTLS = true
HttpsPort = 443 HttpsPort = 443
HTTPSCertFile="conf/2817229__offcncloud.com.pem" HTTPSCertFile="conf/2817229__offcncloud.com.pem"
HTTPSKeyFile="conf/2817229__offcncloud.com.key" HTTPSKeyFile="conf/2817229__offcncloud.com.key"
\ No newline at end of file
...@@ -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
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
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
) )
...@@ -8,11 +8,36 @@ ...@@ -8,11 +8,36 @@
package routers package routers
import ( import (
"encoding/json"
"fmt"
"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
fmt.Println("body === ", string(ctx.Input.RequestBody))
if err = json.Unmarshal(ctx.Input.RequestBody, &mapFiles); err != nil {
ctx.WriteString("Error " + err.Error())
return
}
if mapFiles["success"].(string) == "false" {
_ = upload.UpdateFileError("1", mapFiles["uuid"].(string), mapFiles["roomNum"].(string), mapFiles["path"].(string))
ctx.WriteString("Upload Fail")
return
}
if err = upload.CreateFileDataBase(mapFiles); err != nil {
_ = upload.UpdateFileError("2", mapFiles["uuid"].(string), mapFiles["roomNum"].(string), mapFiles["path"].(string))
ctx.WriteString("Error " + err.Error())
return
}
ctx.WriteString("Upload Ok")
})
} }
/**
* @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()
if err := r.mqConnect(); err != nil {
return err
}
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 {
mq := &RabbitMQ{}
return mq.Send(r)
}
/**
* @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
link := strings.Replace(p.request.Url, "xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com", "desktop.offcncloud.com", -1)
maps["link"] = link
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
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment