@@ -0,0 +1,66 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/e" | |||
"applet/app/hdl/comm" | |||
"applet/app/svc" | |||
"applet/app/svc/cloud_bundle" | |||
"github.com/gin-gonic/gin" | |||
"strings" | |||
) | |||
// Base | |||
// @Summary 打包机使用-云打包基本信息 | |||
// @Tags 打包机使用 | |||
// @Description 打包机使用-云打包基本信息 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Success 200 {object} md.CloudBundleBaseResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/base [get] | |||
func Base(c *gin.Context) { | |||
cloud_bundle.Base(c) | |||
} | |||
// UpdateState | |||
// @Summary 打包机使用-云打包更新状态等 | |||
// @Tags 打包机使用 | |||
// @Description 打包机使用-云打包更新状态 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CloudBundleUpdateStateReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/del [post] | |||
func UpdateState(c *gin.Context) { | |||
cloud_bundle.UpdateState(c) | |||
} | |||
// Upload | |||
// @Summary 打包机使用-云打包-上传许可链接(获取) | |||
// @Tags 打包机使用 | |||
// @Description 打包机使用-云打包-上传许可链接(获取) | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body comm.ImgReqUploadReq true "签名上传url" | |||
// @Success 200 {string} "许可链接" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/upload [POST] | |||
func Upload(c *gin.Context) { | |||
var args comm.ImgReqUploadReq | |||
err := c.ShouldBindJSON(&args) | |||
if err != nil { | |||
err = svc.HandleValidateErr(err) | |||
err1 := err.(e.E) | |||
e.OutErr(c, err1.Code, err1.Error()) | |||
return | |||
} | |||
if strings.Contains(args.FileName, ".apk") == false && strings.Contains(args.FileName, ".ipa") == false { | |||
e.OutErr(c, 400, e.NewErr(400, "请上传APK 或IPA格式")) | |||
return | |||
} | |||
comm.CommOss(c, args) | |||
} |
@@ -0,0 +1,35 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/svc/cloud_bundle" | |||
"github.com/gin-gonic/gin" | |||
) | |||
// ImgBase | |||
// @Summary 基本配置-云打包-图片配置 | |||
// @Tags 基本配置 | |||
// @Description 基本配置-图片配置 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Success 200 {object} md.CloudBundleImgResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/img/base [get] | |||
func ImgBase(c *gin.Context) { | |||
cloud_bundle.ImgBase(c) | |||
} | |||
// ImgBaseSave | |||
// @Summary 基本配置-图片配置 | |||
// @Tags 基本配置 | |||
// @Description 基本配置-图片配置 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CloudBundleImgResp true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/img/base/save [post] | |||
func ImgBaseSave(c *gin.Context) { | |||
cloud_bundle.ImgBaseSave(c) | |||
} |
@@ -0,0 +1,81 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/svc/cloud_bundle" | |||
"github.com/gin-gonic/gin" | |||
) | |||
// List | |||
// @Summary 基本设置-云打包版本列表 | |||
// @Tags 基本设置 | |||
// @Description 基本设置-云打包版本列表 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CloudBundleReq true "(分页信息必填)" | |||
// @Success 200 {object} md.CloudBundleResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/list [post] | |||
func List(c *gin.Context) { | |||
cloud_bundle.List(c) | |||
} | |||
// Build | |||
// @Summary 基本设置-云打包操作 | |||
// @Tags 基本设置 | |||
// @Description 基本设置-云打包操作 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CloudBundleBuildReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/build [post] | |||
func Build(c *gin.Context) { | |||
cloud_bundle.Build(c) | |||
} | |||
// Del | |||
// @Summary 基本设置-云打包删除 | |||
// @Tags 基本设置 | |||
// @Description 基本设置-云打包删除 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.ArticleDelReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/del [post] | |||
func Del(c *gin.Context) { | |||
cloud_bundle.Del(c) | |||
} | |||
// AuditSet | |||
// @Summary 基本设置-云打包-设置为审核模板 | |||
// @Tags 基本设置 | |||
// @Description 基本设置-云打包-设置为审核模板 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CommReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/audit/set [post] | |||
func AuditSet(c *gin.Context) { | |||
cloud_bundle.AuditSet(c) | |||
} | |||
// AuditClear | |||
// @Summary 基本设置-云打包-清除审核模板 | |||
// @Tags 基本设置 | |||
// @Description 基本设置-云打包-清除审核模板 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.AuditClearReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/audit/clear [post] | |||
func AuditClear(c *gin.Context) { | |||
cloud_bundle.AuditClear(c) | |||
} |
@@ -0,0 +1,35 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/svc/cloud_bundle" | |||
"github.com/gin-gonic/gin" | |||
) | |||
// VersionBase | |||
// @Summary 基本配置-云打包-图片配置 | |||
// @Tags 基本配置 | |||
// @Description 基本配置-图片配置 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Success 200 {object} md.CloudBundleVersionResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/version/base [get] | |||
func VersionBase(c *gin.Context) { | |||
cloud_bundle.VersionBase(c) | |||
} | |||
// VersionBaseSave | |||
// @Summary 基本配置-图片配置 | |||
// @Tags 基本配置 | |||
// @Description 基本配置-图片配置 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.CloudBundleVersion true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/cloudBundle/version/base/save [post] | |||
func VersionBaseSave(c *gin.Context) { | |||
cloud_bundle.VersionBaseSave(c) | |||
} |
@@ -125,6 +125,7 @@ type ImgReqUploadResp struct { | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body comm.ImgReqUploadReq true "签名上传url" | |||
// @Success 200 {string} "许可链接" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/comm/getOssUrl [POST] | |||
@@ -137,6 +138,9 @@ func GetOssUrl(c *gin.Context) { | |||
e.OutErr(c, err1.Code, err1.Error()) | |||
return | |||
} | |||
CommOss(c, args) | |||
} | |||
func CommOss(c *gin.Context, args ImgReqUploadReq) { | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
sysCfgs, err := sysCfgDb.SysCfgGetAll() | |||
@@ -65,7 +65,7 @@ func GetWithdrawSetting(c *gin.Context) { | |||
return | |||
} | |||
} | |||
var frequency md.WithdrawFrequencySettingStruct | |||
var frequency md2.WithdrawFrequencySettingStruct | |||
utils.Unserialize([]byte(setting.FrequencySet), &frequency) | |||
resp := md.GetWithdrawSettingResp{ | |||
Id: setting.Id, | |||
@@ -0,0 +1,25 @@ | |||
package hdl | |||
import ( | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/svc" | |||
"github.com/gin-gonic/gin" | |||
) | |||
// Config | |||
// @Summary 基本配置 | |||
// @Tags 基本配置 | |||
// @Description 基本配置 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Success 200 {object} md.ConfigResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/config [get] | |||
func Config(c *gin.Context) { | |||
res := md.ConfigResp{} | |||
res.OssUrl = svc.GetOssDomain() | |||
e.OutSuc(c, res, nil) | |||
return | |||
} |
@@ -20,18 +20,19 @@ func AliyunSmsFilePhone(c *gin.Context) { | |||
notice.AliyunSmsFilePhone(c) | |||
} | |||
// AliyunSmsBase | |||
// @Summary 消息中心-短信推送记录-通知模板 | |||
// AliyunSmsList | |||
// @Summary 消息中心-短信推送记录-通知模板(跟app推送记录的通知模板一样的效果) | |||
// @Tags 消息中心 | |||
// @Description 短信推送记录-通知模板 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.NoticeAliyunSmsListReq true "(分页信息必填)" | |||
// @Success 200 {object} md.NoticeAliyunSmsListResp "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/notice/aliyunSms/base [get] | |||
func AliyunSmsBase(c *gin.Context) { | |||
notice.AliyunSmsBase(c) | |||
// @Router /api/notice/aliyunSms/list [get] | |||
func AliyunSmsList(c *gin.Context) { | |||
notice.AliyunSmsList(c) | |||
} | |||
// AliyunSmsSave | |||
@@ -41,7 +42,7 @@ func AliyunSmsBase(c *gin.Context) { | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body string true "数组 把列表的数组传过来" | |||
// @Param req body md.NoticeAliyunSmsSaveReq true "参数" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/notice/aliyunSms/save [post] | |||
@@ -49,6 +50,21 @@ func AliyunSmsSave(c *gin.Context) { | |||
notice.AliyunSmsSave(c) | |||
} | |||
// AliyunSmsDel | |||
// @Summary 消息中心-短信推送记录-通知模板删除 | |||
// @Tags 消息中心 | |||
// @Description 短信推送记录-通知模板删除 | |||
// @Accept json | |||
// @Produce json | |||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||
// @Param req body md.NoticeDelReq true "(分页信息必填)" | |||
// @Success 200 {string} "具体数据" | |||
// @Failure 400 {object} md.Response "具体错误" | |||
// @Router /api/notice/aliyunSms/del [post] | |||
func AliyunSmsDel(c *gin.Context) { | |||
notice.AliyunSmsDel(c) | |||
} | |||
// AliyunSmsSaleBase | |||
// @Summary 消息中心-短信推送记录-营销短信-通知模板 | |||
// @Tags 消息中心 | |||
@@ -1,5 +1,7 @@ | |||
package md | |||
import "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||
type Paginate struct { | |||
Limit int `json:"limit"` // 每页大小 | |||
Page int `json:"page"` // 页数 | |||
@@ -7,39 +9,35 @@ type Paginate struct { | |||
} | |||
type GetWithdrawSettingResp struct { | |||
Id int64 `json:"id"` | |||
FrequencySet WithdrawFrequencySettingStruct `json:"frequency_set"` // 频率设置(0:日 1:周 2:月 3:年) | |||
WithdrawType int `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) | |||
VipLevelLimit int `json:"vip_level_limit"` // 提现等级限制 | |||
IsRealName int `json:"is_real_name"` // 是否实名(0:否 1:是) | |||
WithdrawNumsLimit int `json:"withdraw_nums_limit"` // 提现次数限制(对应上方设置周期,0为不限制,失败、驳回不计数 ) | |||
WithdrawAmountLimit string `json:"withdraw_amount_limit"` // 提现金额限制(0为不限制,大于等于该金额才可以申请提现 ) | |||
WithdrawMultipleLimit string `json:"withdraw_multiple_limit"` // 提现倍数限制(0为不限制,金额限制倍数才可以申请提现 ) | |||
IsSupportDecimalPoint int `json:"is_support_decimal_point"` // 是否支持小数点(0:否 1:是) | |||
IsAuto int `json:"is_auto"` // 是否开启自动提现(0:否 1:是) | |||
WithdrawTimeInterval string `json:"withdraw_time_interval"` // 提现时段 | |||
WithdrawFeeSet string `json:"withdraw_fee_set"` // 提现手续费设置 | |||
CreateAt string `json:"create_at"` // 申请时间 | |||
UpdateAt string `json:"update_at"` // 处理时间 | |||
Id int64 `json:"id"` | |||
FrequencySet md.WithdrawFrequencySettingStruct `json:"frequency_set"` // 频率设置(0:日 1:周 2:月 3:年) | |||
WithdrawType int `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) | |||
VipLevelLimit int `json:"vip_level_limit"` // 提现等级限制 | |||
IsRealName int `json:"is_real_name"` // 是否实名(0:否 1:是) | |||
WithdrawNumsLimit int `json:"withdraw_nums_limit"` // 提现次数限制(对应上方设置周期,0为不限制,失败、驳回不计数 ) | |||
WithdrawAmountLimit string `json:"withdraw_amount_limit"` // 提现金额限制(0为不限制,大于等于该金额才可以申请提现 ) | |||
WithdrawMultipleLimit string `json:"withdraw_multiple_limit"` // 提现倍数限制(0为不限制,金额限制倍数才可以申请提现 ) | |||
IsSupportDecimalPoint int `json:"is_support_decimal_point"` // 是否支持小数点(0:否 1:是) | |||
IsAuto int `json:"is_auto"` // 是否开启自动提现(0:否 1:是) | |||
WithdrawTimeInterval string `json:"withdraw_time_interval"` // 提现时段 | |||
WithdrawFeeSet string `json:"withdraw_fee_set"` // 提现手续费设置 | |||
CreateAt string `json:"create_at"` // 申请时间 | |||
UpdateAt string `json:"update_at"` // 处理时间 | |||
} | |||
type UpdateWithdrawSettingReq struct { | |||
Id int64 `json:"id,required"` | |||
FrequencySet WithdrawFrequencySettingStruct `json:"frequency_set"` // 频率设置(num 个 duration) (duration (0.天 1.小时 2.周 3.月 4.年)) | |||
WithdrawType int `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) | |||
VipLevelLimit int `json:"vip_level_limit"` // 提现等级限制 | |||
IsRealName int `json:"is_real_name"` // 是否实名(0:否 1:是) | |||
WithdrawNumsLimit int `json:"withdraw_nums_limit"` // 提现次数限制(对应上方设置周期,0为不限制,失败、驳回不计数 ) | |||
WithdrawAmountLimit string `json:"withdraw_amount_limit"` // 提现金额限制(0为不限制,大于等于该金额才可以申请提现 ) | |||
WithdrawMultipleLimit string `json:"withdraw_multiple_limit"` // 提现倍数限制(0为不限制,金额限制倍数才可以申请提现 ) | |||
IsSupportDecimalPoint int `json:"is_support_decimal_point"` // 是否支持小数点(0:否 1:是) | |||
IsAuto int `json:"is_auto"` // 是否开启自动提现(0:否 1:是) | |||
WithdrawTimeInterval string `json:"withdraw_time_interval"` // 提现时段 | |||
WithdrawFeeSet string `json:"withdraw_fee_set"` // 提现手续费设置 | |||
} | |||
type WithdrawFrequencySettingStruct struct { //swag 生成不了,把这个挪出来了 | |||
Duration int `json:"duration"` // 周期 (0.天 1.小时 2.周 3.天 4.月 5.年) | |||
Num int `json:"num"` // 周期数 | |||
Id int64 `json:"id,required"` | |||
FrequencySet md.WithdrawFrequencySettingStruct `json:"frequency_set"` // 频率设置(num 个 duration) (duration (0.天 1.小时 2.周 3.月 4.年)) | |||
WithdrawType int `json:"withdraw_type"` // 提现方式(1:支付宝 2:微信) | |||
VipLevelLimit int `json:"vip_level_limit"` // 提现等级限制 | |||
IsRealName int `json:"is_real_name"` // 是否实名(0:否 1:是) | |||
WithdrawNumsLimit int `json:"withdraw_nums_limit"` // 提现次数限制(对应上方设置周期,0为不限制,失败、驳回不计数 ) | |||
WithdrawAmountLimit string `json:"withdraw_amount_limit"` // 提现金额限制(0为不限制,大于等于该金额才可以申请提现 ) | |||
WithdrawMultipleLimit string `json:"withdraw_multiple_limit"` // 提现倍数限制(0为不限制,金额限制倍数才可以申请提现 ) | |||
IsSupportDecimalPoint int `json:"is_support_decimal_point"` // 是否支持小数点(0:否 1:是) | |||
IsAuto int `json:"is_auto"` // 是否开启自动提现(0:否 1:是) | |||
WithdrawTimeInterval string `json:"withdraw_time_interval"` // 提现时段 | |||
WithdrawFeeSet string `json:"withdraw_fee_set"` // 提现手续费设置 | |||
} | |||
type GetWithdrawApplyListReq struct { | |||
Uid string `json:"uid"` // 用户 ID | |||
@@ -0,0 +1,87 @@ | |||
package md | |||
type CloudBundleReq struct { | |||
Page string `json:"page,required"` // 页数 | |||
Limit string `json:"limit,required"` // 每页大小 | |||
} | |||
type CloudBundleResp struct { | |||
Total int64 `json:"total"` | |||
List []CloudBundleList `json:"list"` | |||
LastBit string `json:"last_bit"` | |||
LastIsCombine string `json:"last_is_combine"` | |||
LastAndroid string `json:"last_android"` | |||
ListIos string `json:"list_ios"` | |||
} | |||
type CloudBundleList struct { | |||
Id string `json:"id"` | |||
BuildId string `json:"build_id"` | |||
Version string `json:"version"` | |||
Os string `json:"os"` | |||
State string `json:"state"` | |||
Memo string `json:"memo"` | |||
Src string `json:"src"` | |||
Bit string `json:"bit"` | |||
ApplyAt string `json:"apply_at"` | |||
FinishAt string `json:"finish_at"` | |||
IsCombine string `json:"is_combine"` | |||
IsAuditing string `json:"is_auditing"` | |||
} | |||
type CloudBundleBuildReq struct { | |||
Memo string `json:"memo"` | |||
Version string `json:"version"` | |||
Os string `json:"os"` | |||
Bit []string `json:"bit"` | |||
IsCombine string `json:"isCombine"` | |||
} | |||
type CloudBundleBase struct { | |||
AndroidLogo string `json:"android_logo"` | |||
AndroidStartImg []map[string]string `json:"android_start_img"` | |||
IosLogo string `json:"ios_logo"` | |||
IosStartImg []map[string]string `json:"ios_start_img"` | |||
} | |||
type CloudBundleBaseResp struct { | |||
AndroidLogo string `json:"android_logo"` | |||
AndroidStartImg []map[string]string `json:"android_start_img"` | |||
IosLogo string `json:"ios_logo"` | |||
IosStartImg []map[string]string `json:"ios_start_img"` | |||
} | |||
type CloudBundleUpdateStateReq struct { | |||
Id string `json:"id"` | |||
State string `json:"state"` | |||
Src string `json:"src"` | |||
BuildId string `json:"build_id"` | |||
BuildNumber string `json:"build_number"` | |||
ErrorMsg string `json:"error_msg"` | |||
} | |||
type CloudBundleImgResp struct { | |||
AndroidLogo string `json:"android_logo"` | |||
AndroidLogoUrl string `json:"android_logo_url"` | |||
AndroidStartImg []map[string]string `json:"android_start_img"` | |||
IosLogo string `json:"ios_logo"` | |||
IosLogoUrl string `json:"ios_logo_url"` | |||
IosStartImg []map[string]string `json:"ios_start_img"` | |||
Guide []Guide `json:"guide"` | |||
} | |||
type Guide struct { | |||
BgImage string `json:"bg_image"` | |||
BgImageUrl string `json:"bg_image_url"` | |||
ContentImage string `json:"content_image"` | |||
ContentImageUrl string `json:"content_image_url"` | |||
} | |||
type AuditClearReq struct { | |||
Os string `json:"os" example:"1-安卓 2-ios"` | |||
} | |||
type CloudBundleVersion struct { | |||
Type string `json:"type"` | |||
Img string `json:"img"` | |||
ImgUrl string `json:"img_url"` | |||
Name string `json:"name"` | |||
Version string `json:"version"` | |||
Url string `json:"url"` | |||
Content string `json:"content"` | |||
IsMust string `json:"is_must"` | |||
} | |||
type CloudBundleVersionResp struct { | |||
Version []CloudBundleVersion `json:"version"` | |||
} |
@@ -0,0 +1,5 @@ | |||
package md | |||
type ConfigResp struct { | |||
OssUrl string `json:"oss_url" example:"阿里云图片链接"` | |||
} |
@@ -0,0 +1,5 @@ | |||
package md | |||
type CommReq struct { | |||
Id string `json:"id"` | |||
} |
@@ -15,12 +15,20 @@ type NoticeList struct { | |||
Title string `json:"title"` | |||
Content string `json:"content"` | |||
Type string `json:"type"` | |||
IsShow string `json:"is_show"` | |||
Day string `json:"day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
NoticeDay string `json:"notice_day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
} | |||
type NoticeSaveReq struct { | |||
Id string `json:"id"` | |||
Title string `json:"title"` | |||
Content string `json:"content"` | |||
Type string `json:"type"` | |||
IsShow string `json:"is_show"` | |||
Day string `json:"day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
NoticeDay string `json:"notice_day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
} | |||
type NoticeDelReq struct { | |||
Id []string `json:"id"` | |||
@@ -65,16 +73,22 @@ type NoticeAliyunSmsListResp struct { | |||
List []NoticeAliyunSmsList `json:"list"` | |||
} | |||
type NoticeAliyunSmsList struct { | |||
Id string `json:"id"` | |||
Title string `json:"title"` | |||
Content string `json:"content"` | |||
Type string `json:"type"` | |||
Id string `json:"id"` | |||
Title string `json:"title"` | |||
Content string `json:"content" example:"这是 填短信模板id"` | |||
Type string `json:"type"` | |||
IsShow string `json:"is_show"` | |||
Day string `json:"day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
NoticeDay string `json:"notice_day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
} | |||
type NoticeAliyunSmsSaveReq struct { | |||
Id string `json:"id"` | |||
Title string `json:"title"` | |||
Content string `json:"content"` | |||
Type string `json:"type"` | |||
Id string `json:"id"` | |||
Title string `json:"title"` | |||
Content string `json:"content"` | |||
IsShow string `json:"is_show"` | |||
Type string `json:"type"` | |||
Day string `json:"day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
NoticeDay string `json:"notice_day" example:" xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 sign是未签到 login是未登录)"` | |||
} | |||
type NoticeAliyunSmsDelReq struct { | |||
Id []string `json:"id"` | |||
@@ -5,6 +5,7 @@ import ( | |||
"applet/app/hdl" | |||
"applet/app/hdl/advertising" | |||
"applet/app/hdl/article" | |||
"applet/app/hdl/cloud_bundle" | |||
"applet/app/hdl/comm" | |||
"applet/app/hdl/financial_center" | |||
"applet/app/hdl/im" | |||
@@ -61,8 +62,15 @@ func Init() *gin.Engine { | |||
func route(r *gin.RouterGroup) { | |||
r.GET("/test", hdl.Demo) | |||
r.POST("/login", hdl.Login) | |||
{ | |||
//打包机调用,不需要校验 | |||
r.GET("/cloudBundle/base", cloud_bundle.Base) //打包基本信息 | |||
r.GET("/cloudBundle/update/state", cloud_bundle.UpdateState) //打包更新状态 | |||
r.GET("/cloudBundle/upload", cloud_bundle.Upload) //打包 上传apk | |||
} | |||
r.Use(mw.Auth) // 以下接口需要JWT验证 | |||
rComm(r.Group("/comm")) | |||
r.GET("/config", hdl.Config) | |||
rIm(r.Group("/im")) | |||
r.Use(mw.CheckPermission) // 检测权限 | |||
rInstitutionalManagement(r.Group("/institutionalManagement")) | |||
@@ -74,6 +82,7 @@ func route(r *gin.RouterGroup) { | |||
rNotice(r.Group("/notice")) | |||
rArticle(r.Group("/article")) | |||
rUserFeedback(r.Group("/userFeedback")) | |||
rCloudBundle(r.Group("/cloudBundle")) //云打包 | |||
} | |||
func rSettCenter(r *gin.RouterGroup) { //设置中心 | |||
@@ -110,8 +119,9 @@ func rNotice(r *gin.RouterGroup) { | |||
rAliyunSms := r.Group("/aliyunSms") //阿里云短信 | |||
{ | |||
rAliyunSms.POST("/file/phone", notice.AliyunSmsFilePhone) | |||
rAliyunSms.GET("/base", notice.AliyunSmsBase) | |||
rAliyunSms.POST("/list", notice.AliyunSmsList) | |||
rAliyunSms.POST("/save", notice.AliyunSmsSave) | |||
rAliyunSms.POST("/del", notice.AliyunSmsDel) | |||
rAliyunSms.GET("/sale/base", notice.AliyunSmsSaleBase) | |||
rAliyunSms.POST("/sale/save", notice.AliyunSmsSaleSave) | |||
rAliyunSms.POST("/push/list", notice.AliyunSmsPushList) | |||
@@ -148,6 +158,17 @@ func rUserFeedback(r *gin.RouterGroup) { //用户反馈 | |||
rContent.POST("/del", user_feedback.Del) | |||
} | |||
} | |||
func rCloudBundle(r *gin.RouterGroup) { //云打包 | |||
r.POST("/list", cloud_bundle.List) | |||
r.POST("/build", cloud_bundle.Build) | |||
r.POST("/del", cloud_bundle.Del) | |||
r.POST("/audit/set", cloud_bundle.AuditSet) | |||
r.POST("/audit/clear", cloud_bundle.AuditClear) | |||
r.GET("/img/base", cloud_bundle.ImgBase) | |||
r.POST("/img/base/save", cloud_bundle.ImgBaseSave) | |||
r.GET("/version/base", cloud_bundle.VersionBase) | |||
r.POST("/version/base/save", cloud_bundle.VersionBaseSave) | |||
} | |||
func rInstitutionalManagement(r *gin.RouterGroup) { //制度管理 | |||
rPublicPlatoon := r.Group("/publicPlatoon") //公排设置 | |||
{ | |||
@@ -0,0 +1,63 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/db" | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/svc" | |||
"applet/app/utils" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||
"encoding/json" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func Base(c *gin.Context) { | |||
appCloudBundleData := svc.GetSysCfgStr("app_cloud_bundle_data") | |||
tmp := md.CloudBundleBase{} | |||
json.Unmarshal([]byte(appCloudBundleData), &tmp) | |||
for k, v := range tmp.AndroidStartImg { | |||
tmp.AndroidStartImg[k]["img"] = svc.GetOssUrl(v["img"]) | |||
} | |||
for k, v := range tmp.IosStartImg { | |||
tmp.IosStartImg[k]["img"] = svc.GetOssUrl(v["img"]) | |||
} | |||
var res = md.CloudBundleBaseResp{ | |||
AndroidLogo: svc.GetOssUrl(tmp.AndroidLogo), | |||
AndroidStartImg: tmp.IosStartImg, | |||
IosLogo: svc.GetOssUrl(tmp.IosLogo), | |||
IosStartImg: tmp.IosStartImg, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func UpdateState(c *gin.Context) { | |||
var req *md.CloudBundleUpdateStateReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
NewCloudBundleDb := implement.NewCloudBundleDb(db.Db) | |||
data, _ := NewCloudBundleDb.GetCloudBundle(req.Id) | |||
if data == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "记录不存在")) | |||
return | |||
} | |||
if req.State != "" { | |||
data.State = utils.StrToInt(req.State) | |||
} | |||
if req.ErrorMsg != "" { | |||
data.ErrorMsg = req.ErrorMsg | |||
} | |||
if req.Src != "" { | |||
data.Src = req.Src | |||
} | |||
if req.BuildNumber != "" { | |||
data.BuildNumber = req.BuildNumber | |||
} | |||
if req.BuildId != "" { | |||
data.BuildId = req.BuildId | |||
} | |||
db.Db.Where("id=?", data.Id).Cols("build_id,build_number,error_msg,state,src").Update(data) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -0,0 +1,33 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/db" | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/svc" | |||
"applet/app/utils" | |||
"applet/app/utils/cache" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||
"encoding/json" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func ImgBase(c *gin.Context) { | |||
appCloudBundleData := svc.GetSysCfgStr("app_cloud_bundle_data") | |||
res := md.CloudBundleImgResp{} | |||
json.Unmarshal([]byte(appCloudBundleData), &res) | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func ImgBaseSave(c *gin.Context) { | |||
var req md.CloudBundleImgResp | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
conn := cache.GetPool().Get() | |||
cfgDb := implement.NewSysCfgDb(db.Db, conn) | |||
cfgDb.SysCfgUpdate("app_cloud_bundle_data", utils.SerializeStr(req)) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -0,0 +1,129 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/db" | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/svc" | |||
"applet/app/utils" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||
"github.com/gin-gonic/gin" | |||
"strings" | |||
"time" | |||
) | |||
func List(c *gin.Context) { | |||
var req *md.CloudBundleReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
var resp md.CloudBundleResp | |||
noticeList := make([]md.CloudBundleList, 0) | |||
NewCloudBundleDb := implement.NewCloudBundleDb(db.Db) | |||
notice, total, _ := NewCloudBundleDb.FindCloudBundleAndTotal(req.Page, req.Limit) | |||
resp.Total = total | |||
if notice != nil { | |||
for _, v := range *notice { | |||
tmp := md.CloudBundleList{ | |||
Id: utils.IntToStr(v.Id), | |||
BuildId: v.BuildId, | |||
Version: "v" + v.Version, | |||
Os: utils.IntToStr(v.Os), | |||
State: utils.IntToStr(v.State), | |||
Memo: v.Memo, | |||
Src: svc.GetOssUrl(v.Src), | |||
Bit: v.Bit, | |||
IsCombine: v.IsCombine, | |||
FinishAt: "--", | |||
IsAuditing: utils.IntToStr(v.IsAuditing), | |||
} | |||
if v.ApplyAt > 0 { | |||
tmp.ApplyAt = time.Unix(int64(v.ApplyAt), 0).Format("2006-01-02 15:04:05") | |||
} | |||
if v.FinishAt > 0 && v.State == 999 { | |||
tmp.FinishAt = time.Unix(int64(v.FinishAt), 0).Format("2006-01-02 15:04:05") | |||
} | |||
noticeList = append(noticeList, tmp) | |||
} | |||
} | |||
lastAndroid, _ := NewCloudBundleDb.GetCloudBundleLast("1") | |||
resp.LastBit = "64" | |||
resp.LastIsCombine = "0" | |||
if lastAndroid != nil { | |||
resp.LastAndroid = "v" + lastAndroid.Version | |||
resp.LastBit = lastAndroid.Bit | |||
resp.LastIsCombine = lastAndroid.IsCombine | |||
} | |||
lastIos, _ := NewCloudBundleDb.GetCloudBundleLast("2") | |||
if lastIos != nil { | |||
resp.ListIos = "v" + lastIos.Version | |||
} | |||
resp.List = noticeList | |||
e.OutSuc(c, resp, nil) | |||
return | |||
} | |||
func Build(c *gin.Context) { | |||
var req *md.CloudBundleBuildReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
count, _ := db.Db.Where("os=? and version=?", req.Os, req.Version).Count(&model.CloudBundle{}) | |||
if count > 0 { | |||
e.OutErr(c, 400, e.NewErr(400, "版本已存在")) | |||
return | |||
} | |||
tmp := model.CloudBundle{ | |||
Os: utils.StrToInt(req.Os), | |||
Version: req.Version, | |||
ApplyAt: int(time.Now().Unix()), | |||
Memo: req.Memo, | |||
AppletId: 0, | |||
IsCombine: req.IsCombine, | |||
NewBit: strings.Join(req.Bit, ","), | |||
} | |||
tmp.Bit = strings.Join(req.Bit, ",") | |||
if req.IsCombine != "1" { | |||
for _, v := range req.Bit { | |||
tmp.Bit = v | |||
db.Db.Insert(&tmp) | |||
} | |||
} else { | |||
db.Db.Insert(&tmp) | |||
} | |||
//TODO 调用打包机 | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func Del(c *gin.Context) { | |||
var req *md.ArticleDelReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
db.Db.In("id", req.Id).Delete(&model.CloudBundle{}) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func AuditSet(c *gin.Context) { | |||
var req *md.CommReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
db.Db.Where("id=?", req.Id).Cols("is_auditing").Update(&model.CloudBundle{IsAuditing: 1}) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func AuditClear(c *gin.Context) { | |||
var req *md.AuditClearReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
db.Db.Where("os=?", req.Os).Cols("is_auditing").Update(&model.CloudBundle{IsAuditing: 0}) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -0,0 +1,56 @@ | |||
package cloud_bundle | |||
import ( | |||
"applet/app/db" | |||
"applet/app/e" | |||
"applet/app/md" | |||
"applet/app/svc" | |||
"applet/app/utils" | |||
"applet/app/utils/cache" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||
"encoding/json" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func VersionBase(c *gin.Context) { | |||
appCloudBundleData := svc.GetSysCfgStr("app_version") | |||
tmp := make([]md.CloudBundleVersion, 0) | |||
json.Unmarshal([]byte(appCloudBundleData), &tmp) | |||
data := []md.CloudBundleVersion{ | |||
{Type: "station", Name: "本站"}, | |||
{Type: "yingyongbao", Name: "应用宝"}, | |||
{Type: "ios", Name: "IOS"}, | |||
{Type: "huawei", Name: "华为"}, | |||
{Type: "xiaomi", Name: "小米"}, | |||
{Type: "meizu", Name: "魅族"}, | |||
{Type: "vivo", Name: "VIVO"}, | |||
{Type: "oppo", Name: "OPPO"}, | |||
} | |||
for k, v := range data { | |||
data[k].Img = v.Type + "_icon.png" | |||
data[k].ImgUrl = svc.GetOssUrl(v.Type + "_icon.png") | |||
for _, v1 := range tmp { | |||
if v1.Type == v.Type { | |||
data[k].Version = v1.Version | |||
data[k].Url = v1.Url | |||
data[k].Content = v1.Content | |||
data[k].IsMust = v1.IsMust | |||
} | |||
} | |||
} | |||
res := md.CloudBundleVersionResp{Version: data} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func VersionBaseSave(c *gin.Context) { | |||
var req []md.CloudBundleVersion | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
conn := cache.GetPool().Get() | |||
cfgDb := implement.NewSysCfgDb(db.Db, conn) | |||
cfgDb.SysCfgUpdate("app_version", utils.SerializeStr(req)) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -8,7 +8,6 @@ import ( | |||
"applet/app/utils/cache" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||
"encoding/json" | |||
"github.com/360EntSecGroup-Skylar/excelize" | |||
"github.com/gin-gonic/gin" | |||
"time" | |||
@@ -42,43 +41,82 @@ func AliyunSmsFilePhone(c *gin.Context) { | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func AliyunSmsBase(c *gin.Context) { | |||
SelectData := []map[string]string{ | |||
{"name": "签到提醒", "value": "sign", "temple_id": "", "is_show": "1"}, | |||
{"name": "注销提醒", "value": "user_delete", "temple_id": "", "is_show": "1"}, | |||
{"name": "提现到账提醒", "value": "withdraw", "temple_id": "", "is_show": "1"}, | |||
{"name": "X天未登录提醒", "value": "login", "temple_id": "", "is_show": "1"}, | |||
{"name": "升级提醒", "value": "update", "temple_id": "", "is_show": "1"}, | |||
func AliyunSmsList(c *gin.Context) { | |||
var req *md.NoticeAliyunSmsListReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
aliyunSmsNotice := sysCfgDb.SysCfgGetWithDb("aliyun_sms_notice") | |||
notice := make([]map[string]string, 0) | |||
json.Unmarshal([]byte(aliyunSmsNotice), ¬ice) | |||
for k, v := range SelectData { | |||
for _, v1 := range notice { | |||
if v1["value"] == v["value"] { | |||
SelectData[k]["temple_id"] = v1["temple_id"] | |||
SelectData[k]["temple_id"] = v1["is_show"] | |||
var resp md.NoticeAliyunSmsListResp | |||
noticeList := make([]md.NoticeAliyunSmsList, 0) | |||
NewJpushNoticeDb := implement.NewAliyunSmsNoticeDb(db.Db) | |||
notice, total, _ := NewJpushNoticeDb.FindAliyunSmsNoticeAndTotal(req.Page, req.Limit, "") | |||
resp.Total = total | |||
resp.SelectData = []map[string]string{ | |||
{"name": "X小时未签到提醒", "value": "sign"}, | |||
{"name": "注销提醒", "value": "user_delete"}, | |||
{"name": "提现到账提醒", "value": "withdraw"}, | |||
{"name": "X小时未登录提醒", "value": "login"}, | |||
{"name": "升级提醒", "value": "update"}, | |||
} | |||
if notice != nil { | |||
for _, v := range *notice { | |||
tmp := md.NoticeAliyunSmsList{ | |||
Id: utils.IntToStr(v.Id), | |||
Title: v.Title, | |||
Day: utils.IntToStr(v.Day), | |||
NoticeDay: utils.IntToStr(v.NoticeDay), | |||
Content: v.Content, | |||
Type: v.Type, | |||
IsShow: utils.IntToStr(v.IsShow), | |||
} | |||
noticeList = append(noticeList, tmp) | |||
} | |||
} | |||
e.OutSuc(c, SelectData, nil) | |||
resp.List = noticeList | |||
e.OutSuc(c, resp, nil) | |||
return | |||
} | |||
func AliyunSmsSave(c *gin.Context) { | |||
var req []map[string]string | |||
var req *md.NoticeAliyunSmsSaveReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
sysCfgDb.SysCfgUpdate("aliyun_sms_notice", utils.SerializeStr(req)) | |||
var data = new(model.JpushNotice) | |||
if utils.StrToInt(req.Id) > 0 { | |||
NewJpushNoticeDb := implement.NewJpushNoticeDb(db.Db) | |||
notice, _ := NewJpushNoticeDb.GetJpushNotice(req.Id) | |||
if notice == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "记录不存在")) | |||
return | |||
} | |||
data = notice | |||
} else { | |||
data.CreateAt = time.Now() | |||
db.Db.Insert(data) | |||
} | |||
data.UpdateAt = time.Now() | |||
data.Content = req.Content | |||
data.Type = req.Type | |||
data.Title = req.Title | |||
data.Day = utils.StrToInt(req.Day) | |||
data.NoticeDay = utils.StrToInt(req.NoticeDay) | |||
data.IsShow = utils.StrToInt(req.IsShow) | |||
db.Db.Where("id=?", data.Id).Update(data) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func AliyunSmsDel(c *gin.Context) { | |||
var req *md.NoticeDelReq | |||
if err := c.ShouldBindJSON(&req); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||
return | |||
} | |||
db.Db.In("id", req.Id).Delete(&model.AliyunSmsNotice{}) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func AliyunSmsSaleBase(c *gin.Context) { | |||
redisConn := cache.GetPool().Get() | |||
@@ -31,18 +31,21 @@ func List(c *gin.Context) { | |||
{"name": "升级后等级", "value": "{升级后等级}"}, | |||
} | |||
resp.SelectData = []map[string]string{ | |||
{"name": "签到提醒", "value": "sign"}, | |||
{"name": "X小时未签到提醒", "value": "sign"}, | |||
{"name": "提现到账提醒", "value": "withdraw"}, | |||
{"name": "X天未登录提醒", "value": "login"}, | |||
{"name": "X小时未登录提醒", "value": "login"}, | |||
{"name": "升级提醒", "value": "update"}, | |||
} | |||
if notice != nil { | |||
for _, v := range *notice { | |||
tmp := md.NoticeList{ | |||
Id: utils.IntToStr(v.Id), | |||
Title: v.Title, | |||
Content: v.Content, | |||
Type: v.Type, | |||
Id: utils.IntToStr(v.Id), | |||
Day: utils.IntToStr(v.Day), | |||
NoticeDay: utils.IntToStr(v.NoticeDay), | |||
IsShow: utils.IntToStr(v.IsShow), | |||
Title: v.Title, | |||
Content: v.Content, | |||
Type: v.Type, | |||
} | |||
noticeList = append(noticeList, tmp) | |||
} | |||
@@ -74,6 +77,9 @@ func Save(c *gin.Context) { | |||
data.Content = req.Content | |||
data.Type = req.Type | |||
data.Title = req.Title | |||
data.Day = utils.StrToInt(req.Day) | |||
data.NoticeDay = utils.StrToInt(req.NoticeDay) | |||
data.IsShow = utils.StrToInt(req.IsShow) | |||
db.Db.Where("id=?", data.Id).Update(data) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
@@ -10,16 +10,20 @@ import ( | |||
func GetOssUrl(img string) string { | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
sysCfg := sysCfgDb.SysCfgFindWithDb("oss_domain") | |||
sysCfg := sysCfgDb.SysCfgFindWithDb("oss_domain", "oss_bucket_scheme") | |||
if strings.Contains(img, "http") == false && img != "" { | |||
http := "" | |||
if strings.Contains(sysCfg["oss_domain"], "http") == false { | |||
http = "http://" | |||
} | |||
img = http + sysCfg["oss_domain"] + img | |||
http := sysCfg["oss_bucket_scheme"] | |||
img = http + "://" + sysCfg["oss_domain"] + "/" + img | |||
} | |||
return img | |||
} | |||
func GetOssDomain() string { | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
sysCfg := sysCfgDb.SysCfgFindWithDb("oss_domain", "oss_bucket_scheme") | |||
http := sysCfg["oss_bucket_scheme"] | |||
return http + "://" + sysCfg["oss_domain"] + "/" | |||
} | |||
func GetSysCfgStr(key string) string { | |||
redisConn := cache.GetPool().Get() | |||
sysCfgDb := implement.NewSysCfgDb(db.Db, redisConn) | |||
@@ -11,15 +11,6 @@ definitions: | |||
description: 总数据量 | |||
type: integer | |||
type: object | |||
applet_app_md_financial_center.WithdrawFrequencySettingStruct: | |||
properties: | |||
duration: | |||
description: 周期 (0.天 1.小时 2.周 3.天 4.月 5.年) | |||
type: integer | |||
num: | |||
description: 周期数 | |||
type: integer | |||
type: object | |||
applet_app_md_im.GetBasicResp: | |||
properties: | |||
chat_sensitive_words: | |||
@@ -203,6 +194,18 @@ definitions: | |||
example: oss上传文件类型选项,以逗号分割 | |||
type: string | |||
type: object | |||
comm.ImgReqUploadReq: | |||
properties: | |||
content_type: | |||
example: image/jpeg | |||
type: string | |||
file_name: | |||
example: 文件名 | |||
type: string | |||
required: | |||
- content_type | |||
- file_name | |||
type: object | |||
md.ActivePointsWalletNode: | |||
properties: | |||
amount: | |||
@@ -663,6 +666,12 @@ definitions: | |||
title: | |||
type: string | |||
type: object | |||
md.AuditClearReq: | |||
properties: | |||
os: | |||
example: 1-安卓 2-ios | |||
type: string | |||
type: object | |||
md.BalanceDetailNode: | |||
properties: | |||
after_amount: | |||
@@ -731,6 +740,172 @@ definitions: | |||
description: 微信号 | |||
type: string | |||
type: object | |||
md.CloudBundleBaseResp: | |||
properties: | |||
android_logo: | |||
type: string | |||
android_start_img: | |||
items: | |||
additionalProperties: | |||
type: string | |||
type: object | |||
type: array | |||
ios_logo: | |||
type: string | |||
ios_start_img: | |||
items: | |||
additionalProperties: | |||
type: string | |||
type: object | |||
type: array | |||
type: object | |||
md.CloudBundleBuildReq: | |||
properties: | |||
bit: | |||
items: | |||
type: string | |||
type: array | |||
isCombine: | |||
type: string | |||
memo: | |||
type: string | |||
os: | |||
type: string | |||
version: | |||
type: string | |||
type: object | |||
md.CloudBundleImgResp: | |||
properties: | |||
android_logo: | |||
type: string | |||
android_logo_url: | |||
type: string | |||
android_start_img: | |||
items: | |||
additionalProperties: | |||
type: string | |||
type: object | |||
type: array | |||
guide: | |||
items: | |||
$ref: '#/definitions/md.Guide' | |||
type: array | |||
ios_logo: | |||
type: string | |||
ios_logo_url: | |||
type: string | |||
ios_start_img: | |||
items: | |||
additionalProperties: | |||
type: string | |||
type: object | |||
type: array | |||
type: object | |||
md.CloudBundleList: | |||
properties: | |||
apply_at: | |||
type: string | |||
bit: | |||
type: string | |||
build_id: | |||
type: string | |||
finish_at: | |||
type: string | |||
id: | |||
type: string | |||
is_auditing: | |||
type: string | |||
is_combine: | |||
type: string | |||
memo: | |||
type: string | |||
os: | |||
type: string | |||
src: | |||
type: string | |||
state: | |||
type: string | |||
version: | |||
type: string | |||
type: object | |||
md.CloudBundleReq: | |||
properties: | |||
limit: | |||
description: 每页大小 | |||
type: string | |||
page: | |||
description: 页数 | |||
type: string | |||
type: object | |||
md.CloudBundleResp: | |||
properties: | |||
last_android: | |||
type: string | |||
last_bit: | |||
type: string | |||
last_is_combine: | |||
type: string | |||
list: | |||
items: | |||
$ref: '#/definitions/md.CloudBundleList' | |||
type: array | |||
list_ios: | |||
type: string | |||
total: | |||
type: integer | |||
type: object | |||
md.CloudBundleUpdateStateReq: | |||
properties: | |||
build_id: | |||
type: string | |||
build_number: | |||
type: string | |||
error_msg: | |||
type: string | |||
id: | |||
type: string | |||
src: | |||
type: string | |||
state: | |||
type: string | |||
type: object | |||
md.CloudBundleVersion: | |||
properties: | |||
content: | |||
type: string | |||
img: | |||
type: string | |||
img_url: | |||
type: string | |||
is_must: | |||
type: string | |||
name: | |||
type: string | |||
type: | |||
type: string | |||
url: | |||
type: string | |||
version: | |||
type: string | |||
type: object | |||
md.CloudBundleVersionResp: | |||
properties: | |||
version: | |||
items: | |||
$ref: '#/definitions/md.CloudBundleVersion' | |||
type: array | |||
type: object | |||
md.CommReq: | |||
properties: | |||
id: | |||
type: string | |||
type: object | |||
md.ConfigResp: | |||
properties: | |||
oss_url: | |||
example: 阿里云图片链接 | |||
type: string | |||
type: object | |||
md.DailyActivityAnalysisTopData: | |||
properties: | |||
activity_count: | |||
@@ -1688,7 +1863,7 @@ definitions: | |||
type: string | |||
frequency_set: | |||
allOf: | |||
- $ref: '#/definitions/applet_app_md_financial_center.WithdrawFrequencySettingStruct' | |||
- $ref: '#/definitions/md.WithdrawFrequencySettingStruct' | |||
description: 频率设置(0:日 1:周 2:月 3:年) | |||
id: | |||
type: integer | |||
@@ -1795,6 +1970,17 @@ definitions: | |||
total: | |||
type: integer | |||
type: object | |||
md.Guide: | |||
properties: | |||
bg_image: | |||
type: string | |||
bg_image_url: | |||
type: string | |||
content_image: | |||
type: string | |||
content_image_url: | |||
type: string | |||
type: object | |||
md.LevelListNode: | |||
properties: | |||
count: | |||
@@ -2156,9 +2342,20 @@ definitions: | |||
md.NoticeAliyunSmsList: | |||
properties: | |||
content: | |||
example: 这是 填短信模板id | |||
type: string | |||
day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
id: | |||
type: string | |||
is_show: | |||
type: string | |||
notice_day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
title: | |||
type: string | |||
type: | |||
@@ -2192,8 +2389,18 @@ definitions: | |||
properties: | |||
content: | |||
type: string | |||
day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
id: | |||
type: string | |||
is_show: | |||
type: string | |||
notice_day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
title: | |||
type: string | |||
type: | |||
@@ -2210,8 +2417,18 @@ definitions: | |||
properties: | |||
content: | |||
type: string | |||
day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
id: | |||
type: string | |||
is_show: | |||
type: string | |||
notice_day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
title: | |||
type: string | |||
type: | |||
@@ -2297,8 +2514,18 @@ definitions: | |||
properties: | |||
content: | |||
type: string | |||
day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 X小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
id: | |||
type: string | |||
is_show: | |||
type: string | |||
notice_day: | |||
example: ' xxx小时(未签到/未登录) 隔 xx小时通知一次 (这里是 隔 xx小时,type=sign/login 的时候要显示前面的话填写 | |||
sign是未签到 login是未登录)' | |||
type: string | |||
title: | |||
type: string | |||
type: | |||
@@ -2963,7 +3190,7 @@ definitions: | |||
properties: | |||
frequency_set: | |||
allOf: | |||
- $ref: '#/definitions/applet_app_md_financial_center.WithdrawFrequencySettingStruct' | |||
- $ref: '#/definitions/md.WithdrawFrequencySettingStruct' | |||
description: 频率设置(num 个 duration) (duration (0.天 1.小时 2.周 3.月 4.年)) | |||
id: | |||
type: integer | |||
@@ -3777,6 +4004,15 @@ definitions: | |||
example: 货币类型名称 | |||
type: string | |||
type: object | |||
md.WithdrawFrequencySettingStruct: | |||
properties: | |||
duration: | |||
description: 周期 (0.天 1.小时 2.周 3.月 4.年) | |||
type: integer | |||
num: | |||
description: 周期数 | |||
type: integer | |||
type: object | |||
model.EggEnergyUserEggIndexWeight: | |||
properties: | |||
account_balance_exchange_egg_energy_nums: | |||
@@ -4333,6 +4569,329 @@ paths: | |||
summary: 文章资讯-文章列表-文章保存 | |||
tags: | |||
- 文章资讯 | |||
/api/cloudBundle/audit/clear: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本设置-云打包-清除审核模板 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.AuditClearReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本设置-云打包-清除审核模板 | |||
tags: | |||
- 基本设置 | |||
/api/cloudBundle/audit/set: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本设置-云打包-设置为审核模板 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.CommReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本设置-云打包-设置为审核模板 | |||
tags: | |||
- 基本设置 | |||
/api/cloudBundle/base: | |||
get: | |||
consumes: | |||
- application/json | |||
description: 打包机使用-云打包基本信息 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleBaseResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 打包机使用-云打包基本信息 | |||
tags: | |||
- 打包机使用 | |||
/api/cloudBundle/build: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本设置-云打包操作 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleBuildReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本设置-云打包操作 | |||
tags: | |||
- 基本设置 | |||
/api/cloudBundle/del: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本设置-云打包删除 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.ArticleDelReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本设置-云打包删除 | |||
tags: | |||
- 基本设置 | |||
/api/cloudBundle/img/base: | |||
get: | |||
consumes: | |||
- application/json | |||
description: 基本配置-图片配置 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleImgResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本配置-云打包-图片配置 | |||
tags: | |||
- 基本配置 | |||
/api/cloudBundle/img/base/save: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本配置-图片配置 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleImgResp' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本配置-图片配置 | |||
tags: | |||
- 基本配置 | |||
/api/cloudBundle/list: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本设置-云打包版本列表 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本设置-云打包版本列表 | |||
tags: | |||
- 基本设置 | |||
/api/cloudBundle/upload: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 打包机使用-云打包-上传许可链接(获取) | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: 签名上传url | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/comm.ImgReqUploadReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 许可链接 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 打包机使用-云打包-上传许可链接(获取) | |||
tags: | |||
- 打包机使用 | |||
/api/cloudBundle/version/base: | |||
get: | |||
consumes: | |||
- application/json | |||
description: 基本配置-图片配置 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleVersionResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本配置-云打包-图片配置 | |||
tags: | |||
- 基本配置 | |||
/api/cloudBundle/version/base/save: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 基本配置-图片配置 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.CloudBundleVersion' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本配置-图片配置 | |||
tags: | |||
- 基本配置 | |||
/api/comm/getOssUrl: | |||
post: | |||
consumes: | |||
@@ -4344,6 +4903,12 @@ paths: | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: 签名上传url | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/comm.ImgReqUploadReq' | |||
produces: | |||
- application/json | |||
responses: | |||
@@ -4358,6 +4923,31 @@ paths: | |||
summary: 通用请求-对象存储-上传许可链接(获取) | |||
tags: | |||
- 对象存储 | |||
/api/config: | |||
get: | |||
consumes: | |||
- application/json | |||
description: 基本配置 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.ConfigResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 基本配置 | |||
tags: | |||
- 基本配置 | |||
/api/demo: | |||
post: | |||
consumes: | |||
@@ -4368,7 +4958,8 @@ paths: | |||
in: body | |||
name: req | |||
required: true | |||
schema: {} | |||
schema: | |||
type: object | |||
produces: | |||
- application/json | |||
responses: | |||
@@ -6969,29 +7560,35 @@ paths: | |||
summary: 制度中心-会员中心-用户管理-会员明细概况(获取) | |||
tags: | |||
- 会员中心 | |||
/api/notice/aliyunSms/base: | |||
get: | |||
/api/notice/aliyunSms/del: | |||
post: | |||
consumes: | |||
- application/json | |||
description: 短信推送记录-通知模板 | |||
description: 短信推送记录-通知模板删除 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.NoticeDelReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.NoticeAliyunSmsListResp' | |||
type: string | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 消息中心-短信推送记录-通知模板 | |||
summary: 消息中心-短信推送记录-通知模板删除 | |||
tags: | |||
- 消息中心 | |||
/api/notice/aliyunSms/file/phone: | |||
@@ -7024,6 +7621,37 @@ paths: | |||
summary: 消息中心-短信推送记录-通知模板 | |||
tags: | |||
- 消息中心 | |||
/api/notice/aliyunSms/list: | |||
get: | |||
consumes: | |||
- application/json | |||
description: 短信推送记录-通知模板 | |||
parameters: | |||
- description: 验证参数Bearer和token空格拼接 | |||
in: header | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: (分页信息必填) | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
$ref: '#/definitions/md.NoticeAliyunSmsListReq' | |||
produces: | |||
- application/json | |||
responses: | |||
"200": | |||
description: 具体数据 | |||
schema: | |||
$ref: '#/definitions/md.NoticeAliyunSmsListResp' | |||
"400": | |||
description: 具体错误 | |||
schema: | |||
$ref: '#/definitions/md.Response' | |||
summary: 消息中心-短信推送记录-通知模板(跟app推送记录的通知模板一样的效果) | |||
tags: | |||
- 消息中心 | |||
/api/notice/aliyunSms/push/list: | |||
post: | |||
consumes: | |||
@@ -7153,12 +7781,12 @@ paths: | |||
name: Authorization | |||
required: true | |||
type: string | |||
- description: 数组 把列表的数组传过来 | |||
- description: 参数 | |||
in: body | |||
name: req | |||
required: true | |||
schema: | |||
type: string | |||
$ref: '#/definitions/md.NoticeAliyunSmsSaveReq' | |||
produces: | |||
- application/json | |||
responses: | |||
@@ -33,7 +33,7 @@ require ( | |||
) | |||
require ( | |||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241126123220-2fadc60eff6f | |||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241127063655-6ff35d2075d5 | |||
code.fnuoos.com/EggPlanet/egg_system_rules.git v0.0.4-0.20241126134228-b1047bfb8475 | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be | |||
code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 | |||