开始业务编写
This commit is contained in:
parent
045319fca6
commit
4ffee0e6db
|
|
@ -1,6 +1,18 @@
|
||||||
package admin
|
package admin
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
import (
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"mime/multipart"
|
||||||
|
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/prometheus/common/log"
|
||||||
|
"yyjishu.com/rubbish-class/video"
|
||||||
|
)
|
||||||
|
|
||||||
func VideoStatHandler(c *gin.Context) {
|
func VideoStatHandler(c *gin.Context) {
|
||||||
|
|
||||||
|
|
@ -13,3 +25,92 @@ func VideoListHandler(c *gin.Context) {
|
||||||
func VideoDownloadHandler(c *gin.Context) {
|
func VideoDownloadHandler(c *gin.Context) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//HistoryVideoHandle 视频(文件)下载
|
||||||
|
func HistoryVideoHandler(c *gin.Context) {
|
||||||
|
openid := c.Param("openid")
|
||||||
|
p := "./video/" + openid
|
||||||
|
files, err := ioutil.ReadDir(p)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var videos []string
|
||||||
|
for _, f := range files {
|
||||||
|
if f.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !strings.HasSuffix(f.Name(), ".mp4") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
videos = append(videos, f.Name())
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"videos": videos,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
type newForm struct {
|
||||||
|
File *multipart.FileHeader `form:"file"`
|
||||||
|
Openid string `form:"openid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//UploadfileAndFormHandle 上传带form
|
||||||
|
func UploadfileAndFormHandler(c *gin.Context) {
|
||||||
|
var data newForm
|
||||||
|
if err := c.ShouldBind(&data); err != nil {
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
video := &video.Video{}
|
||||||
|
filepath, err := video.Upload(data.File)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 0,
|
||||||
|
"data": gin.H{
|
||||||
|
"filepath": filepath,
|
||||||
|
"openid": data.Openid,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//UploadHandle 小程序中文件上传,正式环境中使用云存储
|
||||||
|
func UploadHandler(c *gin.Context) {
|
||||||
|
header, err := c.FormFile("file")
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dst := header.Filename
|
||||||
|
src, err := header.Open()
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer src.Close()
|
||||||
|
out, err := os.Create(`video/` + dst)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
n, err := io.Copy(out, src)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn(err)
|
||||||
|
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 0,
|
||||||
|
"data": n,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,26 @@
|
||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"mime/multipart"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/prometheus/common/log"
|
"github.com/prometheus/common/log"
|
||||||
|
"github.com/silenceper/wechat"
|
||||||
|
"github.com/silenceper/wechat/cache"
|
||||||
|
"github.com/silenceper/wechat/miniprogram"
|
||||||
)
|
)
|
||||||
|
|
||||||
//Indexhandle index
|
var wxa *miniprogram.MiniProgram
|
||||||
func Indexhandle(c *gin.Context) {
|
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
mem := cache.NewMemory()
|
||||||
|
appConfig := &wechat.Config{
|
||||||
|
AppID: "wx49cced01eec31847",
|
||||||
|
AppSecret: "0090134e4a137554a271133d7f73e633",
|
||||||
|
Cache: mem,
|
||||||
|
}
|
||||||
|
wx := wechat.NewWechat(appConfig)
|
||||||
|
wxa = wx.GetMiniProgram()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Code2SessionHandle 登录凭证校验,通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
|
//Code2SessionHandle 登录凭证校验,通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
|
||||||
|
|
@ -29,91 +35,3 @@ func Code2SessionHandler(c *gin.Context) {
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
//HistoryVideoHandle 视频(文件)下载
|
|
||||||
func HistoryVideoHandler(c *gin.Context) {
|
|
||||||
openid := c.Param("openid")
|
|
||||||
p := "./video/" + openid
|
|
||||||
files, err := ioutil.ReadDir(p)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var videos []string
|
|
||||||
for _, f := range files {
|
|
||||||
if f.IsDir() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !strings.HasSuffix(f.Name(), ".mp4") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
videos = append(videos, f.Name())
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"videos": videos,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type newForm struct {
|
|
||||||
File *multipart.FileHeader `form:"file"`
|
|
||||||
Openid string `form:"openid"`
|
|
||||||
}
|
|
||||||
|
|
||||||
//UploadfileAndFormHandle 上传带form
|
|
||||||
func UploadfileAndFormHandler(c *gin.Context) {
|
|
||||||
var data newForm
|
|
||||||
if err := c.ShouldBind(&data); err != nil {
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
filepath, err := SaveVideoFileService(data.File, &data.Openid)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"code": 0,
|
|
||||||
"data": gin.H{
|
|
||||||
"filepath": filepath,
|
|
||||||
"openid": data.Openid,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
//UploadHandle 小程序中文件上传,正式环境中使用云存储
|
|
||||||
func UploadHandler(c *gin.Context) {
|
|
||||||
header, err := c.FormFile("file")
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dst := header.Filename
|
|
||||||
src, err := header.Open()
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer src.Close()
|
|
||||||
out, err := os.Create(`video/` + dst)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer out.Close()
|
|
||||||
n, err := io.Copy(out, src)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn(err)
|
|
||||||
c.AbortWithStatusJSON(http.StatusBadRequest, err.Error)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"code": 0,
|
|
||||||
"data": n,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
package app
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"mime/multipart"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/silenceper/wechat"
|
|
||||||
"github.com/silenceper/wechat/cache"
|
|
||||||
"github.com/silenceper/wechat/miniprogram"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
wxa *miniprogram.MiniProgram
|
|
||||||
//RedisHost redis地址用于小程序缓存,DB号10
|
|
||||||
RedisHost *string
|
|
||||||
)
|
|
||||||
|
|
||||||
//init先于主程序运行,如何使配置生效?
|
|
||||||
func init() {
|
|
||||||
// memCache := cache.NewRedis(&cache.RedisOpts{
|
|
||||||
// Host: *RedisHost,
|
|
||||||
// Database: 10,
|
|
||||||
// MaxIdle: 2,
|
|
||||||
// MaxActive: 50,
|
|
||||||
// IdleTimeout: 60,
|
|
||||||
// })
|
|
||||||
mem := cache.NewMemory()
|
|
||||||
appConfig := &wechat.Config{
|
|
||||||
AppID: "wx49cced01eec31847",
|
|
||||||
AppSecret: "0090134e4a137554a271133d7f73e633",
|
|
||||||
Cache: mem,
|
|
||||||
}
|
|
||||||
wx := wechat.NewWechat(appConfig)
|
|
||||||
wxa = wx.GetMiniProgram()
|
|
||||||
}
|
|
||||||
|
|
||||||
//SaveVideoFileService 文件上传服务
|
|
||||||
func SaveVideoFileService(file *multipart.FileHeader, openid *string) (*string, error) {
|
|
||||||
p := "./video/" + *openid
|
|
||||||
_, err := os.Stat(p)
|
|
||||||
if err != nil {
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
os.Mkdir(p, os.ModePerm)
|
|
||||||
os.Chmod(p, 0755)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
src, err := file.Open()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer src.Close()
|
|
||||||
//创建 dst 文件
|
|
||||||
fn := strings.TrimLeft(file.Filename, "tmp_")
|
|
||||||
out, err := os.Create(p + `/` + fn)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer out.Close()
|
|
||||||
// 拷贝文件
|
|
||||||
_, err = io.Copy(out, src)
|
|
||||||
filename := out.Name()
|
|
||||||
return &filename, err
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
package user
|
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
|
||||||
|
|
||||||
func StatHandler(c *gin.Context) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
package user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"mime/multipart"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
//SaveVideoFileService 文件上传服务
|
||||||
|
func SaveVideoFileService(file *multipart.FileHeader, openid *string) (*string, error) {
|
||||||
|
p := "./video/" + *openid
|
||||||
|
_, err := os.Stat(p)
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
os.Mkdir(p, os.ModePerm)
|
||||||
|
os.Chmod(p, 0755)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
src, err := file.Open()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer src.Close()
|
||||||
|
//创建 dst 文件
|
||||||
|
fn := strings.TrimLeft(file.Filename, "tmp_")
|
||||||
|
out, err := os.Create(p + `/` + fn)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
// 拷贝文件
|
||||||
|
_, err = io.Copy(out, src)
|
||||||
|
filename := out.Name()
|
||||||
|
return &filename, err
|
||||||
|
}
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
package video
|
|
||||||
|
|
||||||
import "github.com/gin-gonic/gin"
|
|
||||||
|
|
||||||
func StatHandler(c *gin.Context) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func ListHandler(c *gin.Context) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func DownloadHandler(c *gin.Context) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package video
|
||||||
|
|
||||||
|
import "mime/multipart"
|
||||||
|
|
||||||
|
type Video struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *Video) Upload(file *multipart.FileHeader) (*string, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue