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 @@