diff --git a/apps/develop/api/table.go b/apps/develop/api/table.go
index e7ea7be..efc33ff 100644
--- a/apps/develop/api/table.go
+++ b/apps/develop/api/table.go
@@ -67,7 +67,7 @@ func (g *GenTableApi) GetTablePage(rc *ctx.ReqCtx) {
// @Router /develop/code/table/info/{tableId} [get]
// @Security Bearer
func (g *GenTableApi) GetTableInfo(rc *ctx.ReqCtx) {
- tableId := ginx.PathParamInt(rc.GinCtx, rc.GinCtx.Param("tableId"))
+ tableId := ginx.PathParamInt(rc.GinCtx, "tableId")
result := g.GenTableApp.FindOne(entity.DevGenTable{TableId: int64(tableId)}, true)
mp := make(map[string]interface{})
mp["list"] = result.Columns
diff --git a/apps/resource/api/oss.go b/apps/resource/api/oss.go
new file mode 100644
index 0000000..cd4385a
--- /dev/null
+++ b/apps/resource/api/oss.go
@@ -0,0 +1,110 @@
+package api
+
+import (
+ "pandax/apps/resource/entity"
+ "pandax/apps/resource/services"
+ "pandax/base/ctx"
+ "pandax/base/ginx"
+ "pandax/base/utils"
+)
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 15:19
+ **/
+
+type ResOssesApi struct {
+ ResOssesApp services.ResOssesModel
+}
+
+// @Summary ResOsses列表数据
+// @Tags ResOsses
+// @Param pageSize query int false "页条数"
+// @Param pageNum query int false "页码"
+// @Success 200 {string} string "{"code": 200, "data": [...]}"
+// @Router /admin/resOsses/list [get]
+// @Security
+func (p *ResOssesApi) GetResOssesList(rc *ctx.ReqCtx) {
+
+ pageNum := ginx.QueryInt(rc.GinCtx, "pageNum", 1)
+ pageSize := ginx.QueryInt(rc.GinCtx, "pageSize", 10)
+ status := rc.GinCtx.Query("status")
+ category := rc.GinCtx.Query("category")
+ ossCode := rc.GinCtx.Query("ossCode")
+
+ data := entity.ResOss{Status: status, Category: category, OssCode: ossCode}
+ list, total := p.ResOssesApp.FindListPage(pageNum, pageSize, data)
+ li := *list
+ for i, data := range li {
+ data.AccessKey = utils.Ddm(data.AccessKey)
+ data.SecretKey = utils.Ddm(data.SecretKey)
+ li[i] = data
+ }
+ rc.ResData = map[string]interface{}{
+ "data": list,
+ "total": total,
+ "pageNum": pageNum,
+ "pageSize": pageSize,
+ }
+}
+
+// @Summary 获取ResOsses
+// @Description 获取JSON
+// @Tags ResOsses
+// @Param ossId path int true "ossId"
+// @Success 200 {string} string "{"code": 200, "data": [...]}"
+// @Router /admin/resOsses/{ossId }[get]
+// @Security
+func (p *ResOssesApi) GetResOsses(rc *ctx.ReqCtx) {
+ ossId := ginx.PathParamInt(rc.GinCtx, "ossId")
+ p.ResOssesApp.FindOne(int64(ossId))
+}
+
+// @Summary 添加ResOsses
+// @Description 获取JSON
+// @Tags ResOsses
+// @Accept application/json
+// @Product application/json
+// @Param data body entity.ResOsses true "data"
+// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
+// @Success 200 {string} string "{"code": 400, "message": "添加失败"}"
+// @Router /admin/resOsses [post]
+// @Security X-TOKEN
+func (p *ResOssesApi) InsertResOsses(rc *ctx.ReqCtx) {
+ var data entity.ResOss
+ ginx.BindJsonAndValid(rc.GinCtx, &data)
+
+ p.ResOssesApp.Insert(data)
+}
+
+// @Summary 修改ResOsses
+// @Description 获取JSON
+// @Tags ResOsses
+// @Accept application/json
+// @Product application/json
+// @Param data body entity.ResOsses true "body"
+// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
+// @Success 200 {string} string "{"code": 400, "message": "添加失败"}"
+// @Router /admin/resOsses [put]
+// @Security X-TOKEN
+func (p *ResOssesApi) UpdateResOsses(rc *ctx.ReqCtx) {
+ var data entity.ResOss
+ ginx.BindJsonAndValid(rc.GinCtx, &data)
+
+ p.ResOssesApp.Update(data)
+}
+
+// @Summary 删除ResOsses
+// @Description 删除数据
+// @Tags ResOsses
+// @Param ossId path string true "ossId"
+// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
+// @Success 200 {string} string "{"code": 400, "message": "删除失败"}"
+// @Router /admin/resOsses/{ossId } [delete]
+func (p *ResOssesApi) DeleteResOsses(rc *ctx.ReqCtx) {
+
+ ossId := rc.GinCtx.Param("ossId")
+ ossIds := utils.IdsStrToIdsIntGroup(ossId)
+ p.ResOssesApp.Delete(ossIds)
+}
diff --git a/apps/resource/entity/mail.go b/apps/resource/entity/mail.go
new file mode 100644
index 0000000..646d1ec
--- /dev/null
+++ b/apps/resource/entity/mail.go
@@ -0,0 +1,7 @@
+package entity
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 14:47
+ **/
diff --git a/apps/resource/entity/oss.go b/apps/resource/entity/oss.go
new file mode 100644
index 0000000..1223120
--- /dev/null
+++ b/apps/resource/entity/oss.go
@@ -0,0 +1,24 @@
+package entity
+
+import "pandax/base/model"
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 14:47
+ **/
+
+type ResOss struct {
+ OssId int64 `json:"ossId" gorm:"primaryKey;AUTO_INCREMENT;comment:主键编码"`
+ Category string `json:"category" grom:"type:varchar(1);comment:种类"` // 0 阿里云 1.七牛云 2. 腾讯云
+ AppId string `json:"appId" gorm:"type:varchar(128);comment:AppId"`
+ AccessKey string `json:"accessKey" gorm:"type:varchar(128);comment:accessKey"`
+ SecretKey string `json:"secretKey" gorm:"type:varchar(128);comment:secretKey"`
+ BucketName string `json:"bucketName" gorm:"type:varchar(128);comment:bucketName"`
+ Endpoint string `json:"endpoint" gorm:"type:varchar(128);comment:endpoint"`
+ OssCode string `json:"ossCode" gorm:"type:varchar(128);comment:ossCode"`
+ Region string `json:"region" gorm:"type:varchar(128);comment:地址"`
+ Remark string `json:"remark" gorm:"type:varchar(128);comment:说明"`
+ Status string `json:"status" gorm:"type:varchar(1);comment:状态"` // 0.启用 1.禁止
+ model.BaseModel
+}
diff --git a/apps/resource/entity/sms.go b/apps/resource/entity/sms.go
new file mode 100644
index 0000000..646d1ec
--- /dev/null
+++ b/apps/resource/entity/sms.go
@@ -0,0 +1,7 @@
+package entity
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 14:47
+ **/
diff --git a/apps/resource/router/oss.go b/apps/resource/router/oss.go
new file mode 100644
index 0000000..db29060
--- /dev/null
+++ b/apps/resource/router/oss.go
@@ -0,0 +1,46 @@
+package router
+
+import (
+ "github.com/gin-gonic/gin"
+ "pandax/apps/resource/api"
+ "pandax/apps/resource/services"
+ "pandax/base/ctx"
+)
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 15:21
+ **/
+
+func InitResOssRouter(router *gin.RouterGroup) {
+ s := &api.ResOssesApi{
+ ResOssesApp: services.ResOssesModelDao,
+ }
+ routerGroup := router.Group("oss")
+
+ ResOssesListLog := ctx.NewLogInfo("获取ResOsses分页列表")
+ routerGroup.GET("list", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).WithLog(ResOssesListLog).Handle(s.GetResOssesList)
+ })
+
+ ResOssesLog := ctx.NewLogInfo("获取ResOsses信息")
+ routerGroup.GET(":ossId", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).WithLog(ResOssesLog).Handle(s.GetResOsses)
+ })
+
+ insertResOssesLog := ctx.NewLogInfo("添加ResOsses信息")
+ routerGroup.POST("", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).WithLog(insertResOssesLog).Handle(s.InsertResOsses)
+ })
+
+ updateResOssesLog := ctx.NewLogInfo("修改ResOsses信息")
+ routerGroup.PUT("", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).WithLog(updateResOssesLog).Handle(s.UpdateResOsses)
+ })
+
+ deleteResOssesLog := ctx.NewLogInfo("删除ResOsses信息")
+ routerGroup.DELETE(":ossId", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).WithLog(deleteResOssesLog).Handle(s.DeleteResOsses)
+ })
+}
diff --git a/apps/resource/services/oss.go b/apps/resource/services/oss.go
new file mode 100644
index 0000000..9e5ee24
--- /dev/null
+++ b/apps/resource/services/oss.go
@@ -0,0 +1,99 @@
+package services
+
+import (
+ "pandax/apps/resource/entity"
+ "pandax/base/biz"
+ "pandax/base/global"
+)
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 15:17
+ **/
+
+// ==========================================================================
+// 生成日期:2022-01-13 15:12:14 +0800 CST
+// 生成路径: apps/admin/services/res_osses.go
+// 生成人:panda
+// ==========================================================================
+
+type (
+ ResOssesModel interface {
+ Insert(data entity.ResOss) *entity.ResOss
+ FindOne(ossId int64) *entity.ResOss
+ FindListPage(page, pageSize int, data entity.ResOss) (*[]entity.ResOss, int64)
+ FindList(data entity.ResOss) *[]entity.ResOss
+ Update(data entity.ResOss) *entity.ResOss
+ Delete(ossIds []int64)
+ }
+
+ resOssesModelImpl struct {
+ table string
+ }
+)
+
+var ResOssesModelDao ResOssesModel = &resOssesModelImpl{
+ table: `res_osses`,
+}
+
+func (m *resOssesModelImpl) Insert(data entity.ResOss) *entity.ResOss {
+ err := global.Db.Table(m.table).Create(&data).Error
+ biz.ErrIsNil(err, "添加ResOsses失败")
+ return &data
+}
+
+func (m *resOssesModelImpl) FindOne(ossId int64) *entity.ResOss {
+ resData := new(entity.ResOss)
+ err := global.Db.Table(m.table).Where("oss_id = ?", ossId).First(resData).Error
+ biz.ErrIsNil(err, "查询ResOsses失败")
+ return resData
+}
+
+func (m *resOssesModelImpl) FindListPage(page, pageSize int, data entity.ResOss) (*[]entity.ResOss, int64) {
+ list := make([]entity.ResOss, 0)
+ var total int64 = 0
+ offset := pageSize * (page - 1)
+ db := global.Db.Table(m.table)
+ // 此处填写 where参数判断
+ if data.OssId != 0 {
+ db = db.Where("oss_id = ?", data.OssId)
+ }
+ if data.OssCode != "" {
+ db = db.Where("oss_code like ?", "%"+data.OssCode+"%")
+ }
+ if data.Status != "" {
+ db = db.Where("status = ?", data.Status)
+ }
+ if data.Category != "" {
+ db = db.Where("category = ?", data.Category)
+ }
+
+ db.Where("delete_time IS NULL")
+ err := db.Count(&total).Error
+ err = db.Order("create_time").Limit(pageSize).Offset(offset).Find(&list).Error
+ biz.ErrIsNil(err, "查询ResOsses分页列表失败")
+ return &list, total
+}
+
+func (m *resOssesModelImpl) FindList(data entity.ResOss) *[]entity.ResOss {
+ list := make([]entity.ResOss, 0)
+ db := global.Db.Table(m.table)
+ // 此处填写 where参数判断
+ if data.OssId != 0 {
+ db = db.Where("oss_id = ?", data.OssId)
+ }
+
+ db.Where("delete_time IS NULL")
+ biz.ErrIsNil(db.Order("create_time").Find(&list).Error, "查询ResOsses列表失败")
+ return &list
+}
+
+func (m *resOssesModelImpl) Update(data entity.ResOss) *entity.ResOss {
+ biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改ResOsses失败")
+ return &data
+}
+
+func (m *resOssesModelImpl) Delete(ossIds []int64) {
+ biz.ErrIsNil(global.Db.Table(m.table).Delete(&entity.ResOss{}, "oss_id in (?)", ossIds).Error, "删除ResOsses失败")
+}
diff --git a/base/oss/README.md b/base/oss/README.md
new file mode 100644
index 0000000..1b6ba71
--- /dev/null
+++ b/base/oss/README.md
@@ -0,0 +1 @@
+##
\ No newline at end of file
diff --git a/base/oss/aliyun.go b/base/oss/aliyun.go
new file mode 100644
index 0000000..f080cec
--- /dev/null
+++ b/base/oss/aliyun.go
@@ -0,0 +1,88 @@
+package oss
+
+import (
+ "github.com/pkg/errors"
+ "io"
+
+ aliOssSdk "github.com/aliyun/aliyun-oss-go-sdk/oss"
+)
+
+//oss 上传配置
+type AliConfig struct {
+ AccessKey string `json:"access_key"`
+ SecretKey string `json:"secret_key"`
+ Bucket string `json:"bucket"`
+ Endpoint string `json:"endpoint"`
+}
+
+//oss 根据参数来创建 Bucket
+func (c *AliConfig) CreateBucket() (bucket *aliOssSdk.Bucket, err error) {
+ // Endpoint以杭州为例,其它Region请按实际情况填写。
+ endpoint := c.Endpoint
+ // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
+ accessKeyId := c.AccessKey
+ accessKeySecret := c.AccessKey
+ bucketName := c.Bucket
+ // 创建OSSClient实例。
+ ossClient, err := aliOssSdk.New(endpoint, accessKeyId, accessKeySecret)
+ if err != nil {
+ return nil, errors.Wrapf(err, "创建 aliyun OSSClient实例失败")
+ }
+ // 获取存储空间。
+ bucket, err = ossClient.Bucket(bucketName)
+ if err != nil {
+ return nil, errors.Wrapf(err, "获取 aliyun OSS 存储空间失败")
+ }
+ return
+}
+
+//oss 上传客户端
+type aliOss struct {
+ bucket *aliOssSdk.Bucket
+}
+
+func NewAliOss(c AliConfig) Driver {
+ bucket, err := c.CreateBucket()
+ if err != nil {
+ panic(err)
+ }
+ return &aliOss{
+ bucket: bucket,
+ }
+}
+
+// Put 上传
+func (c *aliOss) Put(objectName string, localFileName string) error {
+ err := c.bucket.PutObjectFromFile(objectName, localFileName)
+ if err != nil {
+ return errors.Wrapf(err, "put oss file fail")
+ }
+ return nil
+}
+
+func (c *aliOss) PutObj(objectName string, file io.Reader) error {
+ err := c.bucket.PutObject(objectName, file)
+ if err != nil {
+ return errors.Wrapf(err, "put oss file fail")
+ }
+ return nil
+}
+
+// Get 下载
+func (c *aliOss) Get(objectName, downloadedFileName string) error {
+ err := c.bucket.GetObjectToFile(objectName, downloadedFileName)
+ if err != nil {
+ return errors.Wrapf(err, "get oss file fail")
+ }
+ return nil
+}
+
+// Del 删除
+func (c *aliOss) Del(objectName string) error {
+ // 删除文件。
+ err := c.bucket.DeleteObject(objectName)
+ if err != nil {
+ return errors.Wrapf(err, "del oss file fail")
+ }
+ return nil
+}
diff --git a/base/oss/build.go b/base/oss/build.go
new file mode 100644
index 0000000..b96abca
--- /dev/null
+++ b/base/oss/build.go
@@ -0,0 +1,15 @@
+package oss
+
+import (
+ "path"
+ "time"
+
+ "github.com/google/uuid"
+)
+
+func BuildName(fileName, fileType string) (string, error) {
+ t := time.Now().Format("20060102")
+ newUUID, _ := uuid.NewUUID()
+ ext := path.Ext(fileName)
+ return t + "/" + fileType + "/" + newUUID.String() + ext, nil
+}
diff --git a/base/oss/oss.go b/base/oss/oss.go
new file mode 100644
index 0000000..bb59057
--- /dev/null
+++ b/base/oss/oss.go
@@ -0,0 +1,15 @@
+package oss
+
+import "io"
+
+// Driver oss驱动接口定义
+type Driver interface {
+ //上传
+ Put(objectName, localFileName string) error
+
+ PutObj(objectName string, file io.Reader) error
+ //下载
+ Get(objectName, downloadedFileName string) error
+ //删除
+ Del(objectName string) error
+}
diff --git a/base/oss/qiniu.go b/base/oss/qiniu.go
new file mode 100644
index 0000000..ce8af00
--- /dev/null
+++ b/base/oss/qiniu.go
@@ -0,0 +1,129 @@
+package oss
+
+import (
+ "context"
+ "io"
+
+ "github.com/pkg/errors"
+ "github.com/qiniu/go-sdk/v7/auth/qbox"
+ "github.com/qiniu/go-sdk/v7/storage"
+)
+
+type QiniuConfig struct {
+ AccessKey string
+ SecretKey string
+ Bucket string
+ PolicyExpires uint64 // 上传凭证的有效时间,单位秒
+ Zone *storage.Zone // 空间所在的机房
+ UseHTTPS bool // 是否使用https域名
+ UseCdnDomains bool // 是否使用cdn加速域名
+ CentralRsHost string // 中心机房的RsHost,用于list bucket
+ Domain string // 外链域名
+}
+
+type qiniuOss struct {
+ config QiniuConfig
+}
+
+func NewQnOss(config QiniuConfig) *qiniuOss {
+ return &qiniuOss{
+ config: config,
+ }
+}
+
+func NewDefaultQnOss() *qiniuOss {
+ config := QiniuConfig{
+ AccessKey: "",
+ SecretKey: "",
+ Bucket: "",
+ PolicyExpires: 0,
+ Zone: nil,
+ UseHTTPS: false,
+ UseCdnDomains: false,
+ CentralRsHost: "",
+ Domain: "",
+ }
+ return NewQnOss(config)
+}
+
+func (q *qiniuOss) Put(objectName, localFileName string) error {
+ // 鉴权
+ mac := qbox.NewMac(q.config.AccessKey, q.config.SecretKey)
+ // 上传策略
+ putPolicy := storage.PutPolicy{
+ Scope: q.config.Bucket,
+ Expires: q.config.PolicyExpires,
+ }
+ // 获取上传token
+ upToken := putPolicy.UploadToken(mac)
+
+ // 上传Config对象
+ cfg := storage.Config{
+ Zone: q.config.Zone, //指定上传的区域
+ UseHTTPS: q.config.UseHTTPS, // 是否使用https域名
+ UseCdnDomains: q.config.UseCdnDomains, //是否使用CDN上传加速
+ }
+ // 构建表单上传的对象
+ formUploader := storage.NewFormUploader(&cfg)
+ ret := storage.PutRet{}
+ // 上传文件
+ err := formUploader.PutFile(context.Background(), &ret, upToken, objectName, localFileName, nil)
+ if err != nil {
+ return errors.Wrapf(err, "qiniu oss put file fail")
+ }
+ return nil
+}
+
+func (q *qiniuOss) PutObj(objectName string, file io.Reader) error {
+ // 鉴权
+ mac := qbox.NewMac(q.config.AccessKey, q.config.SecretKey)
+ // 上传策略
+ putPolicy := storage.PutPolicy{
+ Scope: q.config.Bucket,
+ Expires: q.config.PolicyExpires,
+ }
+ // 获取上传token
+ upToken := putPolicy.UploadToken(mac)
+
+ // 上传Config对象
+ cfg := storage.Config{
+ Zone: q.config.Zone, //指定上传的区域
+ UseHTTPS: q.config.UseHTTPS, // 是否使用https域名
+ UseCdnDomains: q.config.UseCdnDomains, //是否使用CDN上传加速
+ }
+ // 构建表单上传的对象
+ formUploader := storage.NewFormUploader(&cfg)
+ ret := storage.PutRet{}
+
+ // 上传文件
+ err := formUploader.Put(context.Background(), &ret, upToken, objectName, file, 0, nil)
+ if err != nil {
+ return errors.Wrapf(err, "qiniu oss put file fail")
+ }
+ return nil
+}
+
+func (q *qiniuOss) Get(objectName, downloadedFileName string) error {
+ publicAccessURL := storage.MakePublicURL(q.config.Domain, objectName)
+ err := util.DownLoad.DownloadFile(publicAccessURL, downloadedFileName)
+ if err != nil {
+ return errors.Wrapf(err, "qiniu oss get file fail")
+ }
+ return nil
+}
+
+func (q *qiniuOss) Del(objectName string) error {
+ mac := qbox.NewMac(q.config.AccessKey, q.config.SecretKey)
+ cfg := storage.Config{
+ Zone: q.config.Zone, //指定上传的区域
+ UseHTTPS: q.config.UseHTTPS, // 是否使用https域名
+ UseCdnDomains: q.config.UseCdnDomains, //是否使用CDN上传加速
+ }
+ bucketManager := storage.NewBucketManager(mac, &cfg)
+
+ err := bucketManager.Delete(q.config.Bucket, objectName)
+ if err != nil {
+ return errors.Wrapf(err, "qiniu oss del file fail")
+ }
+ return nil
+}
diff --git a/base/oss/tencentyun.go b/base/oss/tencentyun.go
new file mode 100644
index 0000000..5e2c853
--- /dev/null
+++ b/base/oss/tencentyun.go
@@ -0,0 +1,67 @@
+package oss
+
+import (
+ "context"
+ "net/http"
+ "net/url"
+
+ "github.com/pkg/errors"
+ "github.com/tencentyun/cos-go-sdk-v5"
+)
+
+//oss 上传配置
+type TencentConfig struct {
+ SecretID string
+ SecretKey string
+ bucket string
+}
+
+func (t *TencentConfig) CreateClient() *cos.Client {
+ // 将 examplebucket-1250000000 和 COS_REGION 修改为真实的信息
+ u, _ := url.Parse(t.bucket)
+ b := &cos.BaseURL{BucketURL: u}
+ c := cos.NewClient(b, &http.Client{
+ Transport: &cos.AuthorizationTransport{
+ SecretID: t.SecretID,
+ SecretKey: t.SecretKey,
+ },
+ })
+ return c
+}
+
+type tencentOss struct {
+ client *cos.Client
+}
+
+func NewTencentOss(c TencentConfig) *tencentOss {
+ client := c.CreateClient()
+ return &tencentOss{
+ client: client,
+ }
+}
+
+func (t *tencentOss) Put(objectName, localFileName string) error {
+ // 通过本地文件上传对象
+ _, err := t.client.Object.PutFromFile(context.Background(), objectName, localFileName, nil)
+ if err != nil {
+ return errors.Wrapf(err, "tencentOss put fail")
+ }
+ return nil
+}
+
+func (t *tencentOss) Get(objectName, downloadedFileName string) error {
+ // 获取对象到本地文件
+ _, err := t.client.Object.GetToFile(context.Background(), objectName, downloadedFileName, nil)
+ if err != nil {
+ return errors.Wrapf(err, "tencentOss get fail")
+ }
+ return nil
+}
+
+func (t *tencentOss) Del(objectName string) error {
+ _, err := t.client.Object.Delete(context.Background(), objectName)
+ if err != nil {
+ return errors.Wrapf(err, "tencentOss del fail")
+ }
+ return nil
+}
diff --git a/base/sms/README.md b/base/sms/README.md
new file mode 100644
index 0000000..1b6ba71
--- /dev/null
+++ b/base/sms/README.md
@@ -0,0 +1 @@
+##
\ No newline at end of file
diff --git a/base/sms/aliyun.go b/base/sms/aliyun.go
new file mode 100644
index 0000000..ef0c945
--- /dev/null
+++ b/base/sms/aliyun.go
@@ -0,0 +1,59 @@
+package sms
+
+import (
+ "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
+ "github.com/pkg/errors"
+)
+
+type AliYun struct {
+}
+
+func NewAliYun() *AliYun {
+ return &AliYun{}
+}
+
+func (a *AliYun) GetBusiness(key string) Sms {
+ return a
+}
+
+func (a *AliYun) Send(phone []string, templateParam interface{}) error {
+ panic("implement me")
+}
+
+type AliConfig struct {
+ accessKeyId string
+ accessSecret string
+ RegionId string
+}
+
+type AliSms struct {
+ config AliConfig
+}
+
+func NewAliSms(AliConfig AliConfig) *AliSms {
+ return &AliSms{
+ config: AliConfig,
+ }
+}
+
+func (a *AliSms) send(PhoneNumbers, SignName, TemplateCode, TemplateParam string) error {
+ //客户端
+ client, err := dysmsapi.NewClientWithAccessKey(a.config.RegionId, a.config.accessKeyId, a.config.accessSecret)
+ if err != nil {
+ return errors.Wrapf(err, "ali sms client init fail")
+ }
+ //参数处理
+ request := dysmsapi.CreateSendSmsRequest()
+ request.Scheme = "https"
+ request.PhoneNumbers = PhoneNumbers
+ request.SignName = SignName
+ request.TemplateCode = TemplateCode
+ //json格式
+ request.TemplateParam = TemplateParam
+ //发送
+ _, err = client.SendSms(request)
+ if err != nil {
+ return errors.Wrapf(err, "ali sms send fail")
+ }
+ return nil
+}
diff --git a/base/sms/sms.go b/base/sms/sms.go
new file mode 100644
index 0000000..c826af0
--- /dev/null
+++ b/base/sms/sms.go
@@ -0,0 +1,15 @@
+package sms
+
+type Sms interface {
+ GetBusiness(key string) Sms
+ Send(phone []string, templateParam interface{}) error
+}
+
+func NewDefaultSms(use string) Sms {
+ switch use {
+ case "AliYun":
+ return NewAliYun()
+ default:
+ panic("sms driver err")
+ }
+}
diff --git a/base/utils/ddm.go b/base/utils/ddm.go
new file mode 100644
index 0000000..d30295e
--- /dev/null
+++ b/base/utils/ddm.go
@@ -0,0 +1,14 @@
+package utils
+
+/**
+ * @Description 添加qq群467890197 交流学习
+ * @Author 熊猫
+ * @Date 2022/1/13 17:16
+ **/
+
+func Ddm(data string) string {
+ if len(data) < 6 {
+ return data
+ }
+ return data[:3] + "****" + data[len(data)-3:]
+}
diff --git a/config.yml b/config.yml
index ea82029..47b7ca3 100644
--- a/config.yml
+++ b/config.yml
@@ -37,7 +37,7 @@ redis:
port: 6379
mysql:
- host: 127.0.0.1:3306
+ host: 47.104.252.2:3306
username: pandax
password: pandax
db-name: pandax
diff --git a/go.mod b/go.mod
index e78baa4..471217d 100644
--- a/go.mod
+++ b/go.mod
@@ -13,26 +13,32 @@ require (
)
require (
+ github.com/aliyun/alibaba-cloud-sdk-go v1.61.1443
+ github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible
+ github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/casbin/casbin/v2 v2.37.4
github.com/casbin/gorm-adapter/v3 v3.4.6
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/golang/protobuf v1.5.2 // indirect
+ github.com/google/uuid v1.3.0
github.com/json-iterator/go v1.1.11 // indirect
github.com/kakuilan/kgo v0.1.8
- github.com/lib/pq v1.10.4 // indirect
+ github.com/lib/pq v1.10.4
github.com/mattn/go-isatty v0.0.13 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/mojocn/base64Captcha v1.3.5
github.com/mssola/user_agent v0.5.3
github.com/onsi/ginkgo v1.16.4 // indirect
+ github.com/pkg/errors v0.8.1
+ github.com/qiniu/go-sdk/v7 v7.11.0
github.com/robfig/cron/v3 v3.0.1
github.com/sirupsen/logrus v1.8.1
github.com/swaggo/gin-swagger v1.3.3
github.com/swaggo/swag v1.7.6
+ github.com/tencentyun/cos-go-sdk-v5 v0.7.33
github.com/xuri/excelize/v2 v2.4.1
golang.org/x/net v0.0.0-20211116231205-47ca1ff31462 // indirect
golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 // indirect
+ golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect
gorm.io/driver/mysql v1.2.0
gorm.io/driver/postgres v1.2.3
)
diff --git a/go.sum b/go.sum
index 5a9d488..a3a68a3 100644
--- a/go.sum
+++ b/go.sum
@@ -9,10 +9,17 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
+github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46 h1:5sXbqlSomvdjlRbWyNqkPsJ3Fg+tQZCbgeX1VGljbQY=
github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/agiledragon/gomonkey/v2 v2.3.1 h1:k+UnUY0EMNYUFUAQVETGY9uUTxjMdnUkP0ARyJS1zzs=
github.com/agiledragon/gomonkey/v2 v2.3.1/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=
+github.com/aliyun/alibaba-cloud-sdk-go v1.61.1443 h1:rCVskInhkRcnsRgrvsZjmHRsjXxfQNdrHaU8CgV2vrg=
+github.com/aliyun/alibaba-cloud-sdk-go v1.61.1443/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
+github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible h1:ht2+VfbXtNLGhCsnTMc6/N26nSTBK6qdhktjYyjJQkk=
+github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
+github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
+github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
github.com/brianvoe/gofakeit/v6 v6.0.2 h1:MDvplMAKJMcKZDwQvsIbhT7BV/8UF/3EEy2n14ynUyA=
github.com/brianvoe/gofakeit/v6 v6.0.2/go.mod h1:palrJUk4Fyw38zIFB/uBZqsgzW5VsNllhHKKwAebzew=
github.com/casbin/casbin/v2 v2.37.4 h1:RWSKPjaZ8JlOBlcW1bI/FTII8OPxvQ9jVy9JwyNL6DQ=
@@ -60,13 +67,16 @@ github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5F
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
-github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no=
+github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
-github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.8.0 h1:1kAa0fCrnpv+QYdkdcRzrRM7AyYs5o8+jZdJCz9xj6k=
+github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk=
github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=
github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
@@ -76,6 +86,7 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
+github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
@@ -98,8 +109,13 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
+github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@@ -161,8 +177,11 @@ github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkr
github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI=
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
+github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
@@ -174,17 +193,20 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8=
github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk=
github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
@@ -209,9 +231,10 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/mojocn/base64Captcha v1.3.5 h1:Qeilr7Ta6eDtG4S+tQuZ5+hO+QHbiGAJdi4PfoagaA0=
github.com/mojocn/base64Captcha v1.3.5/go.mod h1:/tTTXn4WTpX9CfrmipqRytCpJ27Uw3G6I7NcP2WwcmY=
+github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
+github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
github.com/mssola/user_agent v0.5.3 h1:lBRPML9mdFuIZgI2cmlQ+atbpJdLdeVl2IDodjBR578=
github.com/mssola/user_agent v0.5.3/go.mod h1:TTPno8LPY3wAIEKRpAtkdMT0f8SE24pLRGPahjCH4uw=
-github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
@@ -229,10 +252,15 @@ github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJ
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk=
+github.com/qiniu/go-sdk/v7 v7.11.0 h1:Cdx/1E3ybv0OFKnkGwoDN/t6bCCntjrWhwWuRaqI3XQ=
+github.com/qiniu/go-sdk/v7 v7.11.0/go.mod h1:btsaOc8CA3hdVloULfFdDgDc+g4f3TDZEFsDY0BLE+w=
+github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs=
github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI=
github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
github.com/richardlehane/msoleps v1.0.1 h1:RfrALnSNXzmXLbGct/P2b4xkFz4e8Gmj/0Vj9M9xC1o=
@@ -240,10 +268,14 @@ github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTK
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=
@@ -271,6 +303,10 @@ github.com/swaggo/gin-swagger v1.3.3/go.mod h1:ymsZuGpbbu+S7ZoQ49QPpZoDBj6uqhb8W
github.com/swaggo/swag v1.7.4/go.mod h1:zD8h6h4SPv7t3l+4BKdRquqW1ASWjKZgT6Qv9z3kNqI=
github.com/swaggo/swag v1.7.6 h1:UbAqHyXkW2J+cDjs5S43MkuYR7a6stB7Am7SK8NBmRg=
github.com/swaggo/swag v1.7.6/go.mod h1:7vLqNYEtYoIsD14wXgy9oDS65MNiDANrPtbk9rnLuj0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
+github.com/tencentyun/cos-go-sdk-v5 v0.7.33 h1:5jmJU7U/1nf/7ZPDkrUL8KlF1oDUzTHsdtLNY6x0hq4=
+github.com/tencentyun/cos-go-sdk-v5 v0.7.33/go.mod h1:4E4+bQ2gBVJcgEC9Cufwylio4mXOct2iu05WjgEBx1o=
github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo=
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
@@ -330,6 +366,8 @@ golang.org/x/net v0.0.0-20211116231205-47ca1ff31462/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -353,6 +391,8 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211020174200-9d6173849985/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI=
golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
@@ -365,6 +405,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 h1:GZokNIeuVkl3aZHJchRrr13WCsols02MLUcz1U9is6M=
+golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -397,11 +439,14 @@ google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/l
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
+gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI=
+gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/initialize/router.go b/initialize/router.go
index a55081f..ec9ff58 100644
--- a/initialize/router.go
+++ b/initialize/router.go
@@ -8,6 +8,7 @@ import (
devRouter "pandax/apps/develop/router"
jobRouter "pandax/apps/job/router"
logRouter "pandax/apps/log/router"
+ resRouter "pandax/apps/resource/router"
sysRouter "pandax/apps/system/router"
"pandax/base/config"
@@ -82,5 +83,10 @@ func InitRouter() *gin.Engine {
devRouter.InitGenTableRouter(dev)
devRouter.InitGenRouter(dev)
}
+ // 资源管理
+ res := router.Group("resource")
+ {
+ resRouter.InitResOssRouter(res)
+ }
return router
}
diff --git a/initialize/table.go b/initialize/table.go
index 330f0f3..1a30509 100644
--- a/initialize/table.go
+++ b/initialize/table.go
@@ -7,6 +7,7 @@ import (
devEntity "pandax/apps/develop/entity"
jobEntity "pandax/apps/job/entity"
logEntity "pandax/apps/log/entity"
+ resSourceEntity "pandax/apps/resource/entity"
"pandax/base/biz"
"pandax/base/config"
@@ -38,6 +39,7 @@ func InitTable() {
jobEntity.SysJob{},
devEntity.DevGenTable{},
devEntity.DevGenTableColumn{},
+ resSourceEntity.ResOss{},
),
"初始化表失败")
diff --git a/resource/template/go/api.template b/resource/template/go/api.template
index 55ee496..6fbdb3f 100644
--- a/resource/template/go/api.template
+++ b/resource/template/go/api.template
@@ -81,7 +81,7 @@ func (p *{{.ClassName}}Api) Update{{.ClassName}}(rc *ctx.ReqCtx) {
var data entity.{{.ClassName}}
ginx.BindJsonAndValid(rc.GinCtx, &data)
- p.{{.ClassName}}App.Update(post)
+ p.{{.ClassName}}App.Update(data)
}
// @Summary 删除{{.FunctionName}}
diff --git a/resource/template/vue/edit-vue.template b/resource/template/vue/edit-vue.template
index 62e77e9..d1ad6e5 100644
--- a/resource/template/vue/edit-vue.template
+++ b/resource/template/vue/edit-vue.template
@@ -15,7 +15,7 @@
@@ -48,7 +48,7 @@