@@ -0,0 +1,339 @@ | |||||
package home_page | |||||
import ( | |||||
"applet/app/db" | |||||
"applet/app/e" | |||||
md "applet/app/md/home_page" | |||||
svc "applet/app/svc/home_page" | |||||
"applet/app/utils" | |||||
"applet/app/utils/cache" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
"encoding/json" | |||||
"github.com/gin-gonic/gin" | |||||
"github.com/shopspring/decimal" | |||||
"math" | |||||
"time" | |||||
) | |||||
// HomePage | |||||
// @Summary 蛋蛋星球-主页-基础信息(获取) | |||||
// @Tags 主页 | |||||
// @Description 基础信息(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Success 200 {object} md.HomePageResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/v1/homePage/index [get] | |||||
func HomePage(c *gin.Context) { | |||||
now := time.Now() | |||||
val, exists := c.Get("user") | |||||
if !exists { | |||||
e.OutErr(c, e.ERR_USER_CHECK_ERR, nil) | |||||
return | |||||
} | |||||
user, ok := val.(*model.User) | |||||
if !ok { | |||||
e.OutErr(c, e.ERR_USER_CHECK_ERR, nil) | |||||
return | |||||
} | |||||
//1、查找 `egg_energy_basic_setting` 基础设置 | |||||
eggEnergyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(db.Db) | |||||
eggEnergyBasicSetting, err := eggEnergyBasicSettingDb.EggEnergyBasicSettingGetOneByParams(map[string]interface{}{ | |||||
"key": "is_open", | |||||
"value": 1, | |||||
}) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
//2、计算今日涨幅 | |||||
err, rises, isRise, nowPrice, initialPrice := svc.CalcTodayEggEnergyPriceRises(db.Db, now) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
//3、获取当前用户 蛋蛋能量(可用+结算+今日签到预估蛋蛋能量) | |||||
var isSign bool | |||||
var signCountdown string | |||||
var signEggEnergy = "0.00" | |||||
var totalEggEnergy float64 | |||||
var teamRewardSetting *md2.TeamRewardSettingStruct | |||||
// 3.1 获取团队收益设置 一轮持续时间 | |||||
err = json.Unmarshal([]byte(eggEnergyBasicSetting.DirectPushReward), &teamRewardSetting) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
return | |||||
} | |||||
//3.2 计算用户是否在团队收益时间段内签到 | |||||
var oneRoundDuration = utils.StrToInt(teamRewardSetting.OneRoundDuration) | |||||
startTime := now.Add(-time.Hour * time.Duration(oneRoundDuration)).Format("2006-01-02 15:04:05") | |||||
signInDb := implement.NewEggSignInDb(db.Db) | |||||
has, signIn, err := signInDb.EggSignInGetOne(startTime, now.Format("2006-01-02 15:04:05"), user.Id) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
if has && utils.TimeParseStd(signIn.EndTime).After(now) { | |||||
//3.2.1 获取预估每秒获得蛋蛋能量数 | |||||
estimatePerSecondEggEnergyValue, err1 := decimal.NewFromString(signIn.EstimatePerSecondEggEnergyValue) | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR, err1.Error()) | |||||
return | |||||
} | |||||
diffSeconds := decimal.NewFromInt(int64(now.Sub(utils.TimeParseStd(signIn.StartTime)).Seconds())) | |||||
signEggEnergy = estimatePerSecondEggEnergyValue.Mul(diffSeconds).String() | |||||
isSign = true | |||||
signCountdown = signIn.EndTime | |||||
} | |||||
// 3.3 查询个人及团队蛋蛋能量 | |||||
amountDb := implement.NewUserVirtualAmountDb(db.Db) | |||||
personEggEnergy, err := amountDb.GetUserVirtualWalletBySession(user.Id, eggEnergyBasicSetting.PersonEggEnergyCoinId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
teamEggEnergy, err := amountDb.GetUserVirtualWalletBySession(user.Id, eggEnergyBasicSetting.TeamEggEnergyCoinId) | |||||
if err != nil { | |||||
return | |||||
} | |||||
signEggEnergyValue, _ := decimal.NewFromString(signEggEnergy) | |||||
personEggEnergyValue, _ := decimal.NewFromString(personEggEnergy.Amount) | |||||
teamEggEnergyValue, _ := decimal.NewFromString(teamEggEnergy.Amount) | |||||
totalEggEnergy, _ = signEggEnergyValue.Add(personEggEnergyValue).Add(teamEggEnergyValue).Float64() | |||||
//4、活跃积分(个人+团队) | |||||
var totalActivePoints float64 | |||||
personActivePoints, err := amountDb.GetUserVirtualWalletBySession(user.Id, eggEnergyBasicSetting.PersonEggPointsCoinId) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
teamActivePoints, err := amountDb.GetUserVirtualWalletBySession(user.Id, eggEnergyBasicSetting.TeamEggPointsCoinId) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
totalActivePoints = utils.StrToFloat64(personActivePoints.Amount) + utils.StrToFloat64(teamActivePoints.Amount) | |||||
//5、计算当前基础速率、团队速率 | |||||
nowBasalRate := utils.StrToFloat64(signEggEnergy) * 60 * 60 //每小时基础速率 | |||||
var estimateLevel int | |||||
nowBasalRateValue := decimal.NewFromFloat(nowBasalRate) | |||||
for { | |||||
estimateLevel++ | |||||
rewardDecrementValue := utils.StrToFloat64(teamRewardSetting.RewardDecrementValue) / 100 | |||||
tmpRewardBase := decimal.NewFromFloat(math.Pow(rewardDecrementValue, float64(estimateLevel))) | |||||
tmpReward := nowBasalRateValue.Mul(tmpRewardBase) | |||||
rewardEndValue, _ := decimal.NewFromString(teamRewardSetting.RewardEndValue) | |||||
if !tmpReward.GreaterThanOrEqual(rewardEndValue) { | |||||
estimateLevel-- | |||||
break | |||||
} | |||||
if estimateLevel == 99 { | |||||
e.OutErr(c, e.ERR, "奖励结束值设置有误") | |||||
return | |||||
} | |||||
} | |||||
relateDb := implement.NewUserRelateDb(db.Db) | |||||
userRelates, err := relateDb.FindUserRelateByParentUid(user.Id, estimateLevel) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
return | |||||
} | |||||
var userRelatesUids []string | |||||
var userRelatesMap = map[int64]model.UserRelate{} | |||||
if userRelates != nil { | |||||
for _, userRelate := range *userRelates { | |||||
userRelatesUids = append(userRelatesUids, utils.Int64ToStr(userRelate.Uid)) | |||||
userRelatesMap[userRelate.Uid] = userRelate | |||||
} | |||||
} | |||||
var eggSignIns []*model.EggSignIn | |||||
if len(userRelatesUids) > 0 { | |||||
eggSignIns, err = signInDb.EggSignInFindByParams(map[string]interface{}{ | |||||
"key": "uid", | |||||
"value": userRelatesUids, | |||||
}) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
} | |||||
var nowTeamRate float64 //每小时基础速率 | |||||
for _, vv := range eggSignIns { | |||||
rewardDecrementValue := utils.StrToFloat64(teamRewardSetting.RewardDecrementValue) / 100 | |||||
tmpRewardBase := decimal.NewFromFloat(math.Pow(rewardDecrementValue, float64(userRelatesMap[vv.Uid].Level))) | |||||
tmpReward := nowBasalRateValue.Mul(tmpRewardBase) | |||||
rewardEndValue, _ := decimal.NewFromString(teamRewardSetting.RewardEndValue) | |||||
if tmpReward.GreaterThanOrEqual(rewardEndValue) { | |||||
tmpRewardValue, _ := tmpReward.Float64() | |||||
nowTeamRate += tmpRewardValue | |||||
} | |||||
} | |||||
decimalRate := decimal.NewFromInt(100) //百分比 | |||||
risesValue, _ := decimal.NewFromFloat(rises).Mul(decimalRate).Float64() | |||||
var residueTimes = utils.TimeParseStd(signCountdown).Unix() - time.Now().Unix() | |||||
userDb := implement.NewUserDb(db.Db) | |||||
userCount, err := userDb.UserCount() | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
utils.FilePutContents("HomePage", utils.SerializeStr(map[string]interface{}{ | |||||
"user_phone": user.Phone, | |||||
"user_uid": user.Id, | |||||
"data": map[string]interface{}{ | |||||
"is_sign": isSign, | |||||
"sign_end_date": signCountdown, | |||||
"sign_end_timestamp": utils.TimeParseStd(signCountdown).Unix(), | |||||
"residue_times": residueTimes, | |||||
"total_egg_energy": totalEggEnergy, | |||||
"sign_reward_egg_energy": utils.StrToFloat64(signIn.EstimatePerSecondEggEnergyValue), | |||||
"total_active_points": totalActivePoints, | |||||
"egg_energy_now_price": nowPrice, | |||||
"initial_price": initialPrice, | |||||
"is_rises": isRise, | |||||
"rises": risesValue, | |||||
"now_basal_rate": nowBasalRate, | |||||
"now_team_rate": nowTeamRate, | |||||
"user_count": userCount, | |||||
"nickname": user.Nickname, | |||||
}, | |||||
})) | |||||
resp := md.HomePageResp{ | |||||
IsSign: isSign, | |||||
SignEndTime: signCountdown, | |||||
TotalEggEnergy: utils.Float64ToStr(totalEggEnergy), | |||||
SignRewardEggEnergy: signIn.EstimatePerSecondEggEnergyValue, | |||||
TotalActivePoints: utils.Float64ToStr(totalActivePoints), | |||||
EggEnergyNowPrice: nowPrice, | |||||
InitialPrice: initialPrice, | |||||
IsRises: isRise, | |||||
Rises: utils.Float64ToStr(risesValue), | |||||
NowBasalRate: utils.Float64ToStr(nowBasalRate), | |||||
NowTeamRate: utils.Float64ToStr(nowTeamRate), | |||||
UserCount: userCount, | |||||
NickName: user.Nickname, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
return | |||||
} | |||||
// HomePageWatchAdRule | |||||
// @Summary 蛋蛋星球-主页-视频奖励规则(获取) | |||||
// @Tags 主页 | |||||
// @Description 视频奖励规则(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Success 200 {object} md.HomePageWatchAdRuleResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/v1/homePage/adRule [get] | |||||
func HomePageWatchAdRule(c *gin.Context) { | |||||
energyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(db.Db) | |||||
basicSetting, err := energyBasicSettingDb.EggEnergyBasicSettingGetOne() | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var videoRewardSystem md2.VideoRewardSystemStruct | |||||
utils.Unserialize([]byte(basicSetting.VideoRewardSystem), &videoRewardSystem) | |||||
resp := md.HomePageWatchAdRuleResp{ | |||||
RewardValue: videoRewardSystem.RewardValue, | |||||
RewardTotalNum: videoRewardSystem.RewardTotalNum, | |||||
IntervalMinutes: videoRewardSystem.IntervalMinutes, | |||||
EachRoundHour: videoRewardSystem.EachRoundHour, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} | |||||
const HomePageRealTimeRedisKey = "Home_Page_Real_Time_Cache_Key" | |||||
// RealTimePrice | |||||
// @Summary 蛋蛋星球-主页-实时数据(获取) | |||||
// @Tags 主页 | |||||
// @Description 实时数据(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Success 200 {object} md.RealTimePriceResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/v1/homePage/realTimePrice [get] | |||||
func RealTimePrice(c *gin.Context) { | |||||
var isRises, userCount, risesValue, nowPrice interface{} | |||||
var rises float64 | |||||
redisKey := HomePageRealTimeRedisKey | |||||
redisValue, err := cache.GetString(redisKey) | |||||
if err != nil { | |||||
if err.Error() == "redigo: nil returned" { | |||||
now := time.Now() | |||||
err, rises, isRises, nowPrice, _ = svc.CalcTodayEggEnergyPriceRises(db.Db, now) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
userDb := implement.NewUserDb(db.Db) | |||||
userCount, err = userDb.UserCount() | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
decimalRate := decimal.NewFromInt(100) //百分比 | |||||
risesValue, _ = decimal.NewFromFloat(rises).Mul(decimalRate).Float64() | |||||
// 缓存 5 s | |||||
cache.SetEx(redisKey, utils.SerializeStr(map[string]interface{}{ | |||||
"user_count": userCount, | |||||
"is_rises": isRises, | |||||
"rises": risesValue, | |||||
"egg_energy_now_price": nowPrice, | |||||
}), 5) | |||||
} else { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
return | |||||
} | |||||
} else { | |||||
var result map[string]interface{} | |||||
err1 := json.Unmarshal([]byte(redisValue), &result) | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR, err1.Error()) | |||||
return | |||||
} | |||||
userCount = result["user_count"] | |||||
isRises = result["is_rises"] | |||||
risesValue = result["rises"] | |||||
nowPrice = result["green_energy_now_price"] | |||||
} | |||||
isRisesResp, ok := isRises.(bool) | |||||
if !ok { | |||||
e.OutErr(c, e.ERR, "断言失败") | |||||
} | |||||
resp := md.RealTimePriceResp{ | |||||
UserCount: utils.AnyToString(userCount), | |||||
NowPrice: utils.AnyToString(nowPrice), | |||||
IsRises: isRisesResp, | |||||
Rises: utils.AnyToString(risesValue), | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} |
@@ -0,0 +1,31 @@ | |||||
package md | |||||
type HomePageResp struct { | |||||
IsSign bool `json:"is_sign"` // 是否完成签到 | |||||
SignEndTime string `json:"sign_end_time"` // 签到截止时间 | |||||
TotalEggEnergy string `json:"total_egg_energy"` // 总蛋蛋能量 | |||||
SignRewardEggEnergy string `json:"sign_reward_egg_energy"` // 签到奖励蛋蛋能量/秒 | |||||
TotalActivePoints string `json:"total_active_points"` // 总活跃积分 | |||||
EggEnergyNowPrice string `json:"egg_energy_now_price"` // 蛋蛋能量当前价格 | |||||
InitialPrice string `json:"initial_price"` // 蛋蛋能量初始价格 | |||||
IsRises bool `json:"is_rises"` // 是否涨价 | |||||
Rises string `json:"rises"` // 涨/跌价百分比 | |||||
NowBasalRate string `json:"now_basal_rate"` // 当前基础速率/小时 | |||||
NowTeamRate string `json:"now_team_rate"` // 当前团队速率/小时 | |||||
UserCount int64 `json:"user_count"` // 当前用户数量 | |||||
NickName string `json:"nick_name"` // 用户名称 | |||||
} | |||||
type HomePageWatchAdRuleResp struct { | |||||
RewardValue string `json:"reward_value"` //奖励X个活跃积分 | |||||
RewardTotalNum string `json:"reward_total_num"` //一共X个奖励视屏 | |||||
IntervalMinutes string `json:"interval_minutes"` //间隔X秒 | |||||
EachRoundHour string `json:"each_round_hour"` //每一轮X个小时 | |||||
} | |||||
type RealTimePriceResp struct { | |||||
UserCount string `json:"user_count"` | |||||
NowPrice string `json:"now_price"` | |||||
IsRises bool `json:"is_rises"` | |||||
Rises string `json:"rises"` | |||||
} |
@@ -4,6 +4,7 @@ import ( | |||||
"applet/app/cfg" | "applet/app/cfg" | ||||
"applet/app/hdl" | "applet/app/hdl" | ||||
"applet/app/hdl/comm" | "applet/app/hdl/comm" | ||||
"applet/app/hdl/home_page" | |||||
"applet/app/mw" | "applet/app/mw" | ||||
_ "applet/docs" | _ "applet/docs" | ||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
@@ -56,6 +57,13 @@ func route(r *gin.RouterGroup) { | |||||
r.POST("/login", hdl.Login) | r.POST("/login", hdl.Login) | ||||
r.Use(mw.Auth) // 以下接口需要JWT验证 | r.Use(mw.Auth) // 以下接口需要JWT验证 | ||||
rComm(r.Group("/comm")) | rComm(r.Group("/comm")) | ||||
rHomePage := r.Group("/homePage") | |||||
{ | |||||
rHomePage.GET("/index", home_page.HomePage) // 主页 | |||||
rHomePage.GET("/adRule", home_page.HomePageWatchAdRule) // 可以观看广告列表 | |||||
rHomePage.GET("/realTimePrice", home_page.RealTimePrice) // 实时数据 | |||||
} | |||||
} | } | ||||
func rComm(r *gin.RouterGroup) { | func rComm(r *gin.RouterGroup) { | ||||
@@ -0,0 +1,40 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/db" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||||
"github.com/shopspring/decimal" | |||||
"time" | |||||
"xorm.io/xorm" | |||||
) | |||||
// CalcTodayEggEnergyPriceRises 计算蛋蛋能量今日涨跌幅 | |||||
func CalcTodayEggEnergyPriceRises(engine *xorm.Engine, now time.Time) (err error, rises float64, isRises bool, nowPrice string, initialPrice string) { | |||||
//1、查找昨日价格、今日价格 计算涨跌幅 | |||||
var m *model.EggEnergyPrice | |||||
dateStr := now.AddDate(0, 0, -1).Format("2006-01-02") | |||||
hourStr := now.AddDate(0, 0, -1).Hour() | |||||
priceDb := implement.NewEggEnergyPriceDb(db.Db) | |||||
m, err = priceDb.EggEnergyPriceGetOneByParams(dateStr, hourStr) | |||||
if err != nil { | |||||
return err, 0, false, "", "" | |||||
} | |||||
initialPrice = m.Price | |||||
yesterdayPrice, _ := decimal.NewFromString(m.Price) | |||||
coreDataDb := implement.NewEggEnergyCoreDataDb(db.Db) | |||||
coreData, err := coreDataDb.EggEnergyCoreDataGet() | |||||
if err != nil { | |||||
return err, 0, false, "", "" | |||||
} | |||||
nowPrice = coreData.NowPrice | |||||
todayPrice, _ := decimal.NewFromString(coreData.NowPrice) | |||||
if todayPrice.GreaterThanOrEqual(yesterdayPrice) { | |||||
isRises = true | |||||
rises, _ = todayPrice.Sub(yesterdayPrice).Div(yesterdayPrice).Float64() | |||||
} else { | |||||
rises, _ = yesterdayPrice.Sub(todayPrice).Div(todayPrice).Float64() | |||||
} | |||||
return nil, rises, isRises, nowPrice, initialPrice | |||||
} |
@@ -62,6 +62,120 @@ const docTemplate = `{ | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
"/api/v1/homePage/adRule": { | |||||
"get": { | |||||
"description": "视频奖励规则(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-视频奖励规则(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.HomePageWatchAdRuleResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/homePage/index": { | |||||
"get": { | |||||
"description": "基础信息(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-基础信息(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.HomePageResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/homePage/realTimePrice": { | |||||
"get": { | |||||
"description": "实时数据(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-实时数据(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.RealTimePriceResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/test": { | "/api/v1/test": { | ||||
"get": { | "get": { | ||||
"description": "Demo样例测试", | "description": "Demo样例测试", | ||||
@@ -183,6 +297,84 @@ const docTemplate = `{ | |||||
} | } | ||||
}, | }, | ||||
"definitions": { | "definitions": { | ||||
"md.HomePageResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"egg_energy_now_price": { | |||||
"description": "蛋蛋能量当前价格", | |||||
"type": "string" | |||||
}, | |||||
"initial_price": { | |||||
"description": "蛋蛋能量初始价格", | |||||
"type": "string" | |||||
}, | |||||
"is_rises": { | |||||
"description": "是否涨价", | |||||
"type": "boolean" | |||||
}, | |||||
"is_sign": { | |||||
"description": "是否完成签到", | |||||
"type": "boolean" | |||||
}, | |||||
"nick_name": { | |||||
"description": "用户名称", | |||||
"type": "string" | |||||
}, | |||||
"now_basal_rate": { | |||||
"description": "当前基础速率/小时", | |||||
"type": "string" | |||||
}, | |||||
"now_team_rate": { | |||||
"description": "当前团队速率/小时", | |||||
"type": "string" | |||||
}, | |||||
"rises": { | |||||
"description": "涨/跌价百分比", | |||||
"type": "string" | |||||
}, | |||||
"sign_end_time": { | |||||
"description": "签到截止时间", | |||||
"type": "string" | |||||
}, | |||||
"sign_reward_egg_energy": { | |||||
"description": "签到奖励蛋蛋能量/秒", | |||||
"type": "string" | |||||
}, | |||||
"total_active_points": { | |||||
"description": "总活跃积分", | |||||
"type": "string" | |||||
}, | |||||
"total_egg_energy": { | |||||
"description": "总蛋蛋能量", | |||||
"type": "string" | |||||
}, | |||||
"user_count": { | |||||
"description": "当前用户数量", | |||||
"type": "integer" | |||||
} | |||||
} | |||||
}, | |||||
"md.HomePageWatchAdRuleResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"each_round_hour": { | |||||
"description": "每一轮X个小时", | |||||
"type": "string" | |||||
}, | |||||
"interval_minutes": { | |||||
"description": "间隔X秒", | |||||
"type": "string" | |||||
}, | |||||
"reward_total_num": { | |||||
"description": "一共X个奖励视屏", | |||||
"type": "string" | |||||
}, | |||||
"reward_value": { | |||||
"description": "奖励X个活跃积分", | |||||
"type": "string" | |||||
} | |||||
} | |||||
}, | |||||
"md.LoginReq": { | "md.LoginReq": { | ||||
"type": "object", | "type": "object", | ||||
"required": [ | "required": [ | ||||
@@ -212,6 +404,23 @@ const docTemplate = `{ | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
"md.RealTimePriceResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"is_rises": { | |||||
"type": "boolean" | |||||
}, | |||||
"now_price": { | |||||
"type": "string" | |||||
}, | |||||
"rises": { | |||||
"type": "string" | |||||
}, | |||||
"user_count": { | |||||
"type": "string" | |||||
} | |||||
} | |||||
}, | |||||
"md.RegisterReq": { | "md.RegisterReq": { | ||||
"type": "object", | "type": "object", | ||||
"required": [ | "required": [ | ||||
@@ -56,6 +56,120 @@ | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
"/api/v1/homePage/adRule": { | |||||
"get": { | |||||
"description": "视频奖励规则(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-视频奖励规则(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.HomePageWatchAdRuleResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/homePage/index": { | |||||
"get": { | |||||
"description": "基础信息(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-基础信息(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.HomePageResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/homePage/realTimePrice": { | |||||
"get": { | |||||
"description": "实时数据(获取)", | |||||
"consumes": [ | |||||
"application/json" | |||||
], | |||||
"produces": [ | |||||
"application/json" | |||||
], | |||||
"tags": [ | |||||
"主页" | |||||
], | |||||
"summary": "蛋蛋星球-主页-实时数据(获取)", | |||||
"parameters": [ | |||||
{ | |||||
"type": "string", | |||||
"description": "验证参数Bearer和token空格拼接", | |||||
"name": "Authorization", | |||||
"in": "header", | |||||
"required": true | |||||
} | |||||
], | |||||
"responses": { | |||||
"200": { | |||||
"description": "具体数据", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.RealTimePriceResp" | |||||
} | |||||
}, | |||||
"400": { | |||||
"description": "具体错误", | |||||
"schema": { | |||||
"$ref": "#/definitions/md.Response" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
}, | |||||
"/api/v1/test": { | "/api/v1/test": { | ||||
"get": { | "get": { | ||||
"description": "Demo样例测试", | "description": "Demo样例测试", | ||||
@@ -177,6 +291,84 @@ | |||||
} | } | ||||
}, | }, | ||||
"definitions": { | "definitions": { | ||||
"md.HomePageResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"egg_energy_now_price": { | |||||
"description": "蛋蛋能量当前价格", | |||||
"type": "string" | |||||
}, | |||||
"initial_price": { | |||||
"description": "蛋蛋能量初始价格", | |||||
"type": "string" | |||||
}, | |||||
"is_rises": { | |||||
"description": "是否涨价", | |||||
"type": "boolean" | |||||
}, | |||||
"is_sign": { | |||||
"description": "是否完成签到", | |||||
"type": "boolean" | |||||
}, | |||||
"nick_name": { | |||||
"description": "用户名称", | |||||
"type": "string" | |||||
}, | |||||
"now_basal_rate": { | |||||
"description": "当前基础速率/小时", | |||||
"type": "string" | |||||
}, | |||||
"now_team_rate": { | |||||
"description": "当前团队速率/小时", | |||||
"type": "string" | |||||
}, | |||||
"rises": { | |||||
"description": "涨/跌价百分比", | |||||
"type": "string" | |||||
}, | |||||
"sign_end_time": { | |||||
"description": "签到截止时间", | |||||
"type": "string" | |||||
}, | |||||
"sign_reward_egg_energy": { | |||||
"description": "签到奖励蛋蛋能量/秒", | |||||
"type": "string" | |||||
}, | |||||
"total_active_points": { | |||||
"description": "总活跃积分", | |||||
"type": "string" | |||||
}, | |||||
"total_egg_energy": { | |||||
"description": "总蛋蛋能量", | |||||
"type": "string" | |||||
}, | |||||
"user_count": { | |||||
"description": "当前用户数量", | |||||
"type": "integer" | |||||
} | |||||
} | |||||
}, | |||||
"md.HomePageWatchAdRuleResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"each_round_hour": { | |||||
"description": "每一轮X个小时", | |||||
"type": "string" | |||||
}, | |||||
"interval_minutes": { | |||||
"description": "间隔X秒", | |||||
"type": "string" | |||||
}, | |||||
"reward_total_num": { | |||||
"description": "一共X个奖励视屏", | |||||
"type": "string" | |||||
}, | |||||
"reward_value": { | |||||
"description": "奖励X个活跃积分", | |||||
"type": "string" | |||||
} | |||||
} | |||||
}, | |||||
"md.LoginReq": { | "md.LoginReq": { | ||||
"type": "object", | "type": "object", | ||||
"required": [ | "required": [ | ||||
@@ -206,6 +398,23 @@ | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
"md.RealTimePriceResp": { | |||||
"type": "object", | |||||
"properties": { | |||||
"is_rises": { | |||||
"type": "boolean" | |||||
}, | |||||
"now_price": { | |||||
"type": "string" | |||||
}, | |||||
"rises": { | |||||
"type": "string" | |||||
}, | |||||
"user_count": { | |||||
"type": "string" | |||||
} | |||||
} | |||||
}, | |||||
"md.RegisterReq": { | "md.RegisterReq": { | ||||
"type": "object", | "type": "object", | ||||
"required": [ | "required": [ | ||||
@@ -1,5 +1,62 @@ | |||||
basePath: /api/v1 | basePath: /api/v1 | ||||
definitions: | definitions: | ||||
md.HomePageResp: | |||||
properties: | |||||
egg_energy_now_price: | |||||
description: 蛋蛋能量当前价格 | |||||
type: string | |||||
initial_price: | |||||
description: 蛋蛋能量初始价格 | |||||
type: string | |||||
is_rises: | |||||
description: 是否涨价 | |||||
type: boolean | |||||
is_sign: | |||||
description: 是否完成签到 | |||||
type: boolean | |||||
nick_name: | |||||
description: 用户名称 | |||||
type: string | |||||
now_basal_rate: | |||||
description: 当前基础速率/小时 | |||||
type: string | |||||
now_team_rate: | |||||
description: 当前团队速率/小时 | |||||
type: string | |||||
rises: | |||||
description: 涨/跌价百分比 | |||||
type: string | |||||
sign_end_time: | |||||
description: 签到截止时间 | |||||
type: string | |||||
sign_reward_egg_energy: | |||||
description: 签到奖励蛋蛋能量/秒 | |||||
type: string | |||||
total_active_points: | |||||
description: 总活跃积分 | |||||
type: string | |||||
total_egg_energy: | |||||
description: 总蛋蛋能量 | |||||
type: string | |||||
user_count: | |||||
description: 当前用户数量 | |||||
type: integer | |||||
type: object | |||||
md.HomePageWatchAdRuleResp: | |||||
properties: | |||||
each_round_hour: | |||||
description: 每一轮X个小时 | |||||
type: string | |||||
interval_minutes: | |||||
description: 间隔X秒 | |||||
type: string | |||||
reward_total_num: | |||||
description: 一共X个奖励视屏 | |||||
type: string | |||||
reward_value: | |||||
description: 奖励X个活跃积分 | |||||
type: string | |||||
type: object | |||||
md.LoginReq: | md.LoginReq: | ||||
properties: | properties: | ||||
code: | code: | ||||
@@ -20,6 +77,17 @@ definitions: | |||||
token: | token: | ||||
type: string | type: string | ||||
type: object | type: object | ||||
md.RealTimePriceResp: | |||||
properties: | |||||
is_rises: | |||||
type: boolean | |||||
now_price: | |||||
type: string | |||||
rises: | |||||
type: string | |||||
user_count: | |||||
type: string | |||||
type: object | |||||
md.RegisterReq: | md.RegisterReq: | ||||
properties: | properties: | ||||
avatar: | avatar: | ||||
@@ -101,6 +169,81 @@ paths: | |||||
summary: 通用请求-对象存储-上传许可链接(获取) | summary: 通用请求-对象存储-上传许可链接(获取) | ||||
tags: | tags: | ||||
- 对象存储 | - 对象存储 | ||||
/api/v1/homePage/adRule: | |||||
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.HomePageWatchAdRuleResp' | |||||
"400": | |||||
description: 具体错误 | |||||
schema: | |||||
$ref: '#/definitions/md.Response' | |||||
summary: 蛋蛋星球-主页-视频奖励规则(获取) | |||||
tags: | |||||
- 主页 | |||||
/api/v1/homePage/index: | |||||
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.HomePageResp' | |||||
"400": | |||||
description: 具体错误 | |||||
schema: | |||||
$ref: '#/definitions/md.Response' | |||||
summary: 蛋蛋星球-主页-基础信息(获取) | |||||
tags: | |||||
- 主页 | |||||
/api/v1/homePage/realTimePrice: | |||||
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.RealTimePriceResp' | |||||
"400": | |||||
description: 具体错误 | |||||
schema: | |||||
$ref: '#/definitions/md.Response' | |||||
summary: 蛋蛋星球-主页-实时数据(获取) | |||||
tags: | |||||
- 主页 | |||||
/api/v1/test: | /api/v1/test: | ||||
get: | get: | ||||
consumes: | consumes: | ||||
@@ -2,9 +2,9 @@ module applet | |||||
go 1.19 | go 1.19 | ||||
//replace code.fnuoos.com/EggPlanet/egg_models.git => E:/company/Egg/egg_models | |||||
replace code.fnuoos.com/EggPlanet/egg_models.git => E:/company/Egg/egg_models | |||||
// | // | ||||
//replace code.fnuoos.com/EggPlanet/egg_system_rules.git => E:/company/Egg/egg_system_rules | |||||
replace code.fnuoos.com/EggPlanet/egg_system_rules.git => E:/company/Egg/egg_system_rules | |||||
require ( | require ( | ||||
github.com/boombuler/barcode v1.0.1 | github.com/boombuler/barcode v1.0.1 | ||||