diff --git a/app/hdl/hdl_add_friend.go b/app/hdl/hdl_add_friend.go index fa178b8..9a1c25f 100644 --- a/app/hdl/hdl_add_friend.go +++ b/app/hdl/hdl_add_friend.go @@ -485,9 +485,27 @@ func TotalRate(c *gin.Context) { return } 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) - exit, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) + exit, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return diff --git a/app/hdl/hdl_home_page.go b/app/hdl/hdl_home_page.go index 5b29452..7f0e622 100644 --- a/app/hdl/hdl_home_page.go +++ b/app/hdl/hdl_home_page.go @@ -64,9 +64,17 @@ func HomePage(c *gin.Context) { var signPersonalEggEnergy = "0.00" var signTeamEggEnergy = "0.00" 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) - has, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) + has, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return @@ -237,9 +245,11 @@ func HomePageWatchAdRule(c *gin.Context) { } var roundRemainingSecs int64 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) - has, signIn, err := signInDb.EggSignInGetOne(nowStr, nowStr, user.Id) + has, signIn, err := signInDb.EggSignINGetOneByTimeAndUid(startTime, "", user.Id, 0) if err != nil { e.OutErr(c, e.ERR_DB_ORM, err.Error()) return diff --git a/app/hdl/hdl_video.go b/app/hdl/hdl_video.go new file mode 100644 index 0000000..694e694 --- /dev/null +++ b/app/hdl/hdl_video.go @@ -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) +} diff --git a/app/md/md_video.go b/app/md/md_video.go new file mode 100644 index 0000000..4eca01a --- /dev/null +++ b/app/md/md_video.go @@ -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"` +} diff --git a/app/router/router.go b/app/router/router.go index 5c1d65d..6376282 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -183,6 +183,11 @@ func route(r *gin.RouterGroup) { rFaceRealName.GET("/state", hdl.GetRealNameAuthState) //实名认证基础 rFaceRealName.POST("/save", hdl.RealNameSave) } + rVideo := r.Group("/video") //短视频 + { + rVideo.GET("/base", hdl.VideoBase) //基础数据 + rVideo.POST("/reward", hdl.VideoReward) //奖励 + } } func rCircleFriends(r *gin.RouterGroup) { diff --git a/app/svc/svc_common.go b/app/svc/svc_common.go index fcd58cb..8e3460c 100644 --- a/app/svc/svc_common.go +++ b/app/svc/svc_common.go @@ -69,13 +69,22 @@ func CheckRealName(uid int64) string { //存入用户的设备 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) user, _ := NewUserDb.GetUser(uid) if user != nil { diff --git a/app/svc/svc_video.go b/app/svc/svc_video.go new file mode 100644 index 0000000..56be80f --- /dev/null +++ b/app/svc/svc_video.go @@ -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 +} diff --git a/go.mod b/go.mod index 9706de4..9901d07 100644 --- a/go.mod +++ b/go.mod @@ -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_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 ( github.com/boombuler/barcode v1.0.1 @@ -32,8 +32,8 @@ 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_mq.git v0.0.5 github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible