This commit is contained in:
Sun
2023-11-08 21:53:07 +08:00
commit 211c3071dc
245 changed files with 39293 additions and 0 deletions
@@ -0,0 +1,5 @@
package adminApiStructs
type AboutSettingRequest struct {
Content string `json:"content"`
}
@@ -0,0 +1,12 @@
package adminApiStructs
type GetStatisticsResp struct {
UserCount int64 `json:"userCount"`
UserToday int64 `json:"userToday"`
RoleCount int64 `json:"roleCount"`
RoleToday int64 `json:"roleToday"`
DialogCount int64 `json:"dialogCount"`
DialogToday int64 `json:"dialogToday"`
DrawCount int64 `json:"drawCount"`
DrawToday int64 `json:"drawToday"`
}
@@ -0,0 +1,22 @@
package commonApiStructs
type RequestPage struct {
Page int `json:"page"`
Limit int `json:"limit"`
Keyword string `json:"keyword"`
}
type RequestDeleteIds[T int | uint] struct {
Ids []T `json:"ids"`
}
type VerificationRequest struct {
CodeID string `json:"codeId"`
VCode string `json:"vCode"`
}
type VerificationResponse struct {
CodeID string `json:"codeId"`
Result bool `json:"result"`
Message string `json:"message"`
}
@@ -0,0 +1,8 @@
package adminApiStructs
import "sun-panel/models"
type ItemIconEditRequest struct {
models.ItemIcon
IconJson string
}
@@ -0,0 +1,5 @@
package systemApiStructs
type NoticeGetListByDisplayTypeReq struct {
DisplayType []int `json:"displayType"`
}
@@ -0,0 +1,5 @@
package systemApiStructs
type GetReferralCodeResp struct {
ReferralCode string `json:"referralCode"`
}
@@ -0,0 +1,125 @@
package apiReturn
import (
"sun-panel/api/api_v1/common/apiData/commonApiStructs"
"sun-panel/global"
"github.com/gin-gonic/gin"
)
const ERROR_CODE_SUCCESS = 0 // 错误码 无任何错误
const (
// 验证器类
ERROR_CODE_VERIFICATION_MUST = 1101 // 错误码 验证器类:必须需要验证或者验证数据为空
ERROR_CODE_VERIFICATION_FAIL = 1102 // 错误码 验证器类:验证失败,验证错误
// 数据类
ERROR_CODE_DATA_DATABASE = 1110 // 错误码 数据类:数据库报错
ERROR_CODE_DATA_RECORD_NOT_FOUND = 1111 // 错误码 数据类:数据记录未找到
)
func ApiReturn(ctx *gin.Context, code int, msg string, data interface{}) {
returnData := map[string]interface{}{
"code": code,
"msg": msg,
}
if data != nil {
returnData["data"] = data
}
ctx.JSON(200, returnData)
}
// 返回成功
func SuccessData(ctx *gin.Context, data interface{}) {
ApiReturn(ctx, 0, "OK", data)
}
// 返回列表
func SuccessListData(ctx *gin.Context, list interface{}, count int64) {
ApiReturn(ctx, 0, "OK", gin.H{
"list": list,
"count": count,
})
}
// 返回成功,没有data数据
func Success(ctx *gin.Context) {
ApiReturn(ctx, 0, "OK", nil)
}
// 返回列表数据
func ListData(ctx *gin.Context, list interface{}, count int64) {
data := map[string]interface{}{
"list": list,
"count": count,
}
ApiReturn(ctx, 0, "OK", data)
}
// 返回错误 验证码相关错误错误
func ErrorVerification(ctx *gin.Context, errCode int, codeID string) {
msg := ""
switch errCode {
case ERROR_CODE_VERIFICATION_FAIL:
msg = "验证失败,请重新验证"
case ERROR_CODE_VERIFICATION_MUST:
msg = "需要进一步验证"
}
ApiReturn(ctx, errCode, msg, gin.H{
"verification": commonApiStructs.VerificationResponse{
CodeID: codeID,
Result: false,
Message: msg,
},
})
}
// 返回错误 需要个性化定义的错误|带返回数据的错误
func ErrorCode(ctx *gin.Context, code int, errMsg string, data interface{}) {
ApiReturn(ctx, code, errMsg, data)
}
// 返回错误 普通提示错误
func Error(ctx *gin.Context, errMsg string) {
ErrorCode(ctx, -1, errMsg, nil)
}
// 返回错误 需要个性化定义的错误|带返回数据的错误
func ErrorNoAccess(ctx *gin.Context) {
ErrorCode(ctx, 1005, global.Lang.Get("common.no_access"), nil)
}
// 返回错误 参数错误
func ErrorParamFomat(ctx *gin.Context, errMsg string) {
Error(ctx, global.Lang.GetAndInsert("common.api_error_param_format", "[", errMsg, "]"))
// Error(ctx, "参数错误")
}
// // 返回错误 数据库
func ErrorDatabase(ctx *gin.Context, errMsg string) {
Error(ctx, global.Lang.GetAndInsert("common.db_error", "[", errMsg, "]"))
}
// 返回错误 数据记录未找到
func ErrorDataNotFound(ctx *gin.Context) {
// ErrorCode(ctx,, global.Lang.GetAndInsert("common.db_error", "[", errMsg, "]"))
ErrorCode(ctx, ERROR_CODE_DATA_RECORD_NOT_FOUND, "未找到数据记录", nil)
}
// 返回错误 需要个性化定义的错误|带返回数据的错误
// func ErrorNoAccess(ctx *gin.Context) {
// ErrorCode(ctx, 1005, global.Lang.Get("common.no_access"), nil)
// }
// // 返回错误 参数错误
// func ErrorParamFomat(ctx *gin.Context, errMsg string) {
// Error(ctx, global.Lang.GetAndInsert("common.api_error_param_format", "[", errMsg, "]"))
// }
// // 返回错误 数据库
// func ErrorDatabase(ctx *gin.Context, errMsg string) {
// Error(ctx, global.Lang.GetAndInsert("common.db_error", "[", errMsg, "]"))
// }
+99
View File
@@ -0,0 +1,99 @@
package base
import (
"fmt"
"reflect"
"strings"
"sun-panel/api/api_v1/common/apiReturn"
"sun-panel/lib/captcha"
"sun-panel/lib/cmn"
"sun-panel/models"
"github.com/gin-gonic/gin"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
zhTranslations "github.com/go-playground/validator/v10/translations/zh"
)
type PageLimitVerify struct {
Page int64
Limit int64
}
// 验证输入是否有效并返回错误
func validateInputStruct(params interface{}) (errMsg string, err error) {
var validate = validator.New()
//通过label标签返回自定义错误内容
validate.RegisterTagNameFunc(func(field reflect.StructField) string {
label := field.Tag.Get("label")
if label == "" {
return field.Name
}
return label
})
// 自定义验证规则,使用 strings.TrimSpace 函数删除前后空格
validate.RegisterValidation("trimmedRequired", func(fl validator.FieldLevel) bool {
return strings.TrimSpace(fl.Field().String()) != ""
})
if err = validate.Struct(params); err != nil {
trans := validateTransInit(validate)
verrs := err.(validator.ValidationErrors)
// errs := make(map[string]string)
for _, value := range verrs.Translate(trans) {
// errs[key[strings.Index(key, ".")+1:]] = value
errMsg += " " + value
}
// fmt.Println(errs)
}
return
}
// 验证输入是否有效并返回错误
func ValidateInputStruct(params interface{}) (errMsg string, err error) {
return validateInputStruct(params)
}
// 数据验证翻译器
func validateTransInit(validate *validator.Validate) ut.Translator {
// 万能翻译器,保存所有的语言环境和翻译数据
uni := ut.New(zh.New())
// 翻译器
trans, _ := uni.GetTranslator("zh")
//验证器注册翻译器
err := zhTranslations.RegisterDefaultTranslations(validate, trans)
if err != nil {
fmt.Println(err)
}
return trans
}
func GetCurrentUserInfo(c *gin.Context) (userInfo models.User, exist bool) {
if value, exist := c.Get("userInfo"); exist {
if v, ok := value.(models.User); ok {
return v, exist
}
}
return
}
// 验证器验证
func VerificationCheck(verificationId, vCode string) (errCode int, verificationIdRes string) {
// 需要进一步验证并返回验证信息
if verificationId == "" || vCode == "" {
verificationIdRes = cmn.BuildRandCode(16, cmn.RAND_CODE_MODE1)
errCode = apiReturn.ERROR_CODE_VERIFICATION_MUST
return
}
// 验证码错误
if !captcha.CaptchaVerifyHandle(verificationId, vCode) {
errCode = apiReturn.ERROR_CODE_VERIFICATION_FAIL
return
}
errCode = apiReturn.ERROR_CODE_SUCCESS
return
}