@@ -485,9 +485,27 @@ func TotalRate(c *gin.Context) { | |||||
return | return | ||||
} | } | ||||
now := time.Now() | now := time.Now() | ||||
nowStr := now.Format("2006-01-02 15:04:05") | |||||
//开始时间 以当前时间 往前推多少 | |||||
//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 | |||||
} | |||||
var videoRewardSystem *md2.VideoRewardSystemStruct | |||||
err = json.Unmarshal([]byte(eggEnergyBasicSetting.VideoRewardSystem), &videoRewardSystem) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var oneRoundDuration = utils.StrToInt(videoRewardSystem.EachRoundHour) | |||||
startTime := now.Add(-time.Hour * time.Duration(oneRoundDuration)).Format("2006-01-02 15:04:05") | |||||
signInDb := implement.NewEggSignInDb(db.Db) | signInDb := implement.NewEggSignInDb(db.Db) | ||||
exit, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) | |||||
exit, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
@@ -64,9 +64,17 @@ func HomePage(c *gin.Context) { | |||||
var signPersonalEggEnergy = "0.00" | var signPersonalEggEnergy = "0.00" | ||||
var signTeamEggEnergy = "0.00" | var signTeamEggEnergy = "0.00" | ||||
var totalEggEnergy float64 | var totalEggEnergy float64 | ||||
nowStr := now.Format("2006-01-02 15:04:05") | |||||
//开始时间 以当前时间 往前推多少 | |||||
var videoRewardSystem *md2.VideoRewardSystemStruct | |||||
err = json.Unmarshal([]byte(eggEnergyBasicSetting.VideoRewardSystem), &videoRewardSystem) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var oneRoundDuration = utils.StrToInt(videoRewardSystem.EachRoundHour) | |||||
startTime := now.Add(-time.Hour * time.Duration(oneRoundDuration)).Format("2006-01-02 15:04:05") | |||||
signInDb := implement.NewEggSignInDb(db.Db) | signInDb := implement.NewEggSignInDb(db.Db) | ||||
has, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) | |||||
has, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
@@ -237,9 +245,11 @@ func HomePageWatchAdRule(c *gin.Context) { | |||||
} | } | ||||
var roundRemainingSecs int64 | var roundRemainingSecs int64 | ||||
now := time.Now() | now := time.Now() | ||||
nowStr := now.Format("2006-01-02 15:04:05") | |||||
//开始时间 以当前时间 往前推多少 | |||||
var oneRoundDuration = utils.StrToInt(videoRewardSystem.EachRoundHour) | |||||
startTime := now.Add(-time.Hour * time.Duration(oneRoundDuration)).Format("2006-01-02 15:04:05") | |||||
signInDb := implement.NewEggSignInDb(db.Db) | signInDb := implement.NewEggSignInDb(db.Db) | ||||
has, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) | |||||
has, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
@@ -0,0 +1,35 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/svc" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
// VideoBase | |||||
// @Summary 短视频-基本信息 | |||||
// @Tags 短视频 | |||||
// @Description 短视频-基本信息 | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Success 200 {object} md.VideoBaseData "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/v1/video/base [get] | |||||
func VideoBase(c *gin.Context) { | |||||
svc.VideoBase(c) | |||||
} | |||||
// VideoReward | |||||
// @Summary 实名认证-保存 | |||||
// @Tags 实名认证 | |||||
// @Description 实名认证-保存 | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param req body md.VideoRewardRequest true "参数" | |||||
// @Success 200 {string} "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/v1/video/reward [post] | |||||
func VideoReward(c *gin.Context) { | |||||
svc.VideoReward(c) | |||||
} |
@@ -0,0 +1,14 @@ | |||||
package md | |||||
type VideoBaseData struct { | |||||
Reward string `json:"reward" example:"单次奖励"` | |||||
Total string `json:"total" example:"可领取总次数"` | |||||
Timer string `json:"timer" example:"观看X秒奖励"` | |||||
Leave string `json:"leave" example:"剩余次数"` | |||||
Sum string `json:"sum" example:"奖励总数"` | |||||
CoinName string `json:"coin_name" example:"积分名称"` | |||||
Interval string `json:"interval" example:"领取间隔 秒"` | |||||
} | |||||
type VideoRewardRequest struct { | |||||
Id string `json:"id" example:"广告id"` | |||||
} |
@@ -183,6 +183,11 @@ func route(r *gin.RouterGroup) { | |||||
rFaceRealName.GET("/state", hdl.GetRealNameAuthState) //实名认证基础 | rFaceRealName.GET("/state", hdl.GetRealNameAuthState) //实名认证基础 | ||||
rFaceRealName.POST("/save", hdl.RealNameSave) | rFaceRealName.POST("/save", hdl.RealNameSave) | ||||
} | } | ||||
rVideo := r.Group("/video") //短视频 | |||||
{ | |||||
rVideo.GET("/base", hdl.VideoBase) //基础数据 | |||||
rVideo.POST("/reward", hdl.VideoReward) //奖励 | |||||
} | |||||
} | } | ||||
func rCircleFriends(r *gin.RouterGroup) { | func rCircleFriends(r *gin.RouterGroup) { | ||||
@@ -69,13 +69,22 @@ func CheckRealName(uid int64) string { | |||||
//存入用户的设备 | //存入用户的设备 | ||||
func UserImeiAdd(c *gin.Context, uid int64) { | func UserImeiAdd(c *gin.Context, uid int64) { | ||||
var data = model.UserImei{ | |||||
Uid: int(uid), | |||||
Imei: c.GetHeader("imei"), | |||||
CreateAt: time.Now(), | |||||
Ip: c.ClientIP(), | |||||
var tmp model.UserImei | |||||
get, _ := db.Db.Where("uid=? and imei=? and ip=?", uid, c.GetHeader("imei"), c.ClientIP()).Get(&tmp) | |||||
if get == false { | |||||
var data = model.UserImei{ | |||||
Uid: int(uid), | |||||
Imei: c.GetHeader("imei"), | |||||
CreateAt: time.Now(), | |||||
UpdateAt: time.Now(), | |||||
Ip: c.ClientIP(), | |||||
} | |||||
db.Db.Insert(&data) | |||||
} else { | |||||
tmp.UpdateAt = time.Now() | |||||
db.Db.Where("id=?", tmp.Id).Cols("update_at").Update(&tmp) | |||||
} | } | ||||
db.Db.Insert(&data) | |||||
NewUserDb := implement.NewUserDb(db.Db) | NewUserDb := implement.NewUserDb(db.Db) | ||||
user, _ := NewUserDb.GetUser(uid) | user, _ := NewUserDb.GetUser(uid) | ||||
if user != nil { | if user != nil { | ||||
@@ -0,0 +1,119 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/db" | |||||
"applet/app/e" | |||||
"applet/app/md" | |||||
"applet/app/utils" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/enum" | |||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | |||||
"github.com/gin-gonic/gin" | |||||
"github.com/tidwall/gjson" | |||||
"time" | |||||
) | |||||
func VideoBase(c *gin.Context) { | |||||
videoBase := GetSysCfgStr("video_base") | |||||
var res = md.VideoBaseData{ | |||||
Reward: gjson.Get(videoBase, "reward").String(), | |||||
Total: gjson.Get(videoBase, "total").String(), | |||||
Timer: gjson.Get(videoBase, "timer").String(), | |||||
Leave: gjson.Get(videoBase, "total").String(), | |||||
Sum: "0.00", | |||||
CoinName: "活跃值", | |||||
Interval: gjson.Get(videoBase, "interval").String(), | |||||
} | |||||
user := GetUser(c) | |||||
//剩余次数 | |||||
NewVideoTotalDb := implement.NewVideoTotalDb(db.Db) | |||||
total, _ := NewVideoTotalDb.GetVideoTotal(utils.Int64ToStr(user.Id), time.Now().Format("20060102")) | |||||
if total != nil { | |||||
res.Leave = utils.IntToStr(utils.StrToInt(res.Total) - total.Total) | |||||
if utils.StrToInt(res.Leave) < 0 { | |||||
res.Leave = "0" | |||||
} | |||||
} | |||||
NewEggEnergyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(db.Db) | |||||
eggData, _ := NewEggEnergyBasicSettingDb.EggEnergyBasicSettingGetOne() | |||||
NewUserVirtualAmountDb := implement.NewUserVirtualAmountDb(db.Db) | |||||
coin, _ := NewUserVirtualAmountDb.GetUserVirtualWalletBySession(user.Id, eggData.PersonEggPointsCoinId) | |||||
if coin != nil { | |||||
res.Sum = coin.Amount | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func VideoReward(c *gin.Context) { | |||||
var args md.VideoRewardRequest | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS, err) | |||||
return | |||||
} | |||||
eg := db.Db | |||||
videoBase := GetSysCfgStr("video_base") | |||||
sess := eg.NewSession() | |||||
defer sess.Close() | |||||
sess.Begin() | |||||
user := GetUser(c) | |||||
NewVideoTotalDb := implement.NewVideoTotalDb(db.Db) | |||||
total, _ := NewVideoTotalDb.GetVideoTotalSess(sess, utils.Int64ToStr(user.Id), time.Now().Format("20060102")) | |||||
if total == nil { | |||||
total = &model.VideoTotal{ | |||||
Uid: int(user.Id), | |||||
Date: utils.StrToInt(time.Now().Format("20060102")), | |||||
Time: time.Now(), | |||||
} | |||||
insert, err := sess.Insert(total) | |||||
if insert == 0 || err != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "获取奖励失败")) | |||||
return | |||||
} | |||||
} | |||||
Leave := utils.StrToInt(gjson.Get(videoBase, "total").String()) - total.Total | |||||
if Leave-1 < 0 { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "今天已领取完")) | |||||
return | |||||
} | |||||
total.Total++ | |||||
update, err2 := sess.Where("id=?", total.Id).Cols("total").Update(total) | |||||
if update == 0 || err2 != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "获取奖励失败")) | |||||
return | |||||
} | |||||
sess.Commit() | |||||
ch, err := rabbit.Cfg.Pool.GetChannel() | |||||
if err == nil { | |||||
defer ch.Release() | |||||
NewEggEnergyBasicSettingDb := implement.NewEggEnergyBasicSettingDb(db.Db) | |||||
eggData, _ := NewEggEnergyBasicSettingDb.EggEnergyBasicSettingGetOne() | |||||
err = ch.PublishV2(md2.EggEnergyExchange, md2.EggEnergyStructForDealUserVirtualCoinData{ | |||||
Kind: "add", | |||||
Title: enum.EggEnergyWatchAdRewardPersonalActiveCoin.String(), | |||||
TransferType: int(enum.EggEnergyWatchAdRewardPersonalActiveCoin), | |||||
CoinId: eggData.PersonEggPointsCoinId, | |||||
Uid: user.Id, | |||||
Amount: utils.StrToFloat64(gjson.Get(videoBase, "reward").String()), | |||||
}, md2.EggEnergyRoutKeyForDealUserVirtualCoinData) | |||||
if err != nil { | |||||
ch.PublishV2(md2.EggEnergyExchange, md2.EggEnergyStructForDealUserVirtualCoinData{ | |||||
Kind: "add", | |||||
Title: enum.EggEnergyWatchAdRewardPersonalActiveCoin.String(), | |||||
TransferType: int(enum.EggEnergyWatchAdRewardPersonalActiveCoin), | |||||
CoinId: eggData.PersonEggPointsCoinId, | |||||
Uid: user.Id, | |||||
Amount: utils.StrToFloat64(gjson.Get(videoBase, "reward").String()), | |||||
}, md2.EggEnergyRoutKeyForDealUserVirtualCoinData) | |||||
} | |||||
} | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} |
@@ -4,7 +4,7 @@ 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 | ||||
@@ -32,8 +32,8 @@ require ( | |||||
) | ) | ||||
require ( | require ( | ||||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241204091019-14b93d36ac8e | |||||
code.fnuoos.com/EggPlanet/egg_system_rules.git v0.0.4-0.20241204070258-4712985349b4 | |||||
code.fnuoos.com/EggPlanet/egg_models.git v0.2.1-0.20241204095350-c895baf67bc5 | |||||
code.fnuoos.com/EggPlanet/egg_system_rules.git v0.0.4-0.20241204095556-04ee23549ee5 | |||||
code.fnuoos.com/go_rely_warehouse/zyos_go_es.git v1.0.1-0.20241118083738-0f22da9ba0be | 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 | code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git v0.0.5 | ||||
github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible | github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible | ||||