@@ -204,6 +204,7 @@ func GetEggEnergyBasic(c *gin.Context) { | |||||
resp := md.GetEggEnergyBasicResp{ | resp := md.GetEggEnergyBasicResp{ | ||||
BasicSetting: md.BasicSetting{ | BasicSetting: md.BasicSetting{ | ||||
IsOpen: basicSettings.IsOpen, | IsOpen: basicSettings.IsOpen, | ||||
InitialPrice: basicSettings.InitialPrice, | |||||
PersonEggEnergyCoinId: basicSettings.PersonEggEnergyCoinId, | PersonEggEnergyCoinId: basicSettings.PersonEggEnergyCoinId, | ||||
TeamEggEnergyCoinId: basicSettings.TeamEggEnergyCoinId, | TeamEggEnergyCoinId: basicSettings.TeamEggEnergyCoinId, | ||||
PersonEggPointsCoinId: basicSettings.PersonEggPointsCoinId, | PersonEggPointsCoinId: basicSettings.PersonEggPointsCoinId, | ||||
@@ -6,12 +6,15 @@ import ( | |||||
md "applet/app/md/institutional_management/egg_energy" | md "applet/app/md/institutional_management/egg_energy" | ||||
"applet/app/svc/egg_energy" | "applet/app/svc/egg_energy" | ||||
"applet/app/utils" | "applet/app/utils" | ||||
"applet/app/utils/cache" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | "code.fnuoos.com/EggPlanet/egg_models.git/src/model" | ||||
md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" | "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" | ||||
"errors" | |||||
"fmt" | "fmt" | ||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
"github.com/go-redis/redis" | |||||
"time" | "time" | ||||
) | ) | ||||
@@ -96,77 +99,84 @@ func StatisticsUserEggIndex(c *gin.Context) { | |||||
esIndexName = md2.EggEnergyUserEggScoreEsAlias + "_" + req.Year + req.Week | esIndexName = md2.EggEnergyUserEggScoreEsAlias + "_" + req.Year + req.Week | ||||
resp.Year, resp.Week = req.Year, req.Week | resp.Year, resp.Week = req.Year, req.Week | ||||
} | } | ||||
//统计用户"ecpm"范围 | |||||
resp.StatisticsUserEggEcpmRange, err = egg_energy.StatisticsUserEggEcpmRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"拉新人数"范围 | |||||
resp.StatisticsUserEggInviteUserNumsRange, err = egg_energy.StatisticsUserEggInviteUserNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"团队活跃次数"范围 | |||||
resp.StatisticsUserEggTeamActivityNumsRange, err = egg_energy.StatisticsUserEggTeamActivityNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"签到次数"范围 | |||||
resp.StatisticsUserEggSignInNumsRange, err = egg_energy.StatisticsUserEggSignInNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"发红包次数"范围 | |||||
resp.StatisticsUserEggSendRedPackageNumsRange, err = egg_energy.StatisticsUserEggSendRedPackageNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
resp.StatisticsUserEggEggEnergyExchangeAccountBalanceRange, err = egg_energy.StatisticsUserEggEggEnergyExchangeAccountBalanceRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
resp.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange, err = egg_energy.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"发朋友圈次数"范围 | |||||
resp.StatisticsUserEggSendCircleOfFriendNumsRange, err = egg_energy.StatisticsUserEggSendCircleOfFriendNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"论坛评论次数"范围 | |||||
resp.StatisticsUserEggForumCommentsNumsRange, err = egg_energy.StatisticsUserEggForumCommentsNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"学院学习次数"范围 | |||||
resp.StatisticsUserEggCollegeLearningNumsRange, err = egg_energy.StatisticsUserEggCollegeLearningNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"违规次数"范围 | |||||
resp.StatisticsUserEggViolateNumsRange, err = egg_energy.StatisticsUserEggViolateNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"浏览界面次数"范围 | |||||
resp.StatisticsUserEggBrowseInterfaceNumsRange, err = egg_energy.StatisticsUserEggBrowseInterfaceNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"个人活跃积分增量值"范围 | |||||
resp.StatisticsUserEggPersonAddActivityValueRange, err = egg_energy.StatisticsUserEggPersonAddActivityValueRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
yearAndWeekStr := req.Year + req.Week | |||||
redisKey := fmt.Sprintf(md.AutoCachingEggPointRedisKey, yearAndWeekStr) | |||||
err1 := cache.GetJson(redisKey, &resp) | |||||
if err1 != nil && !errors.Is(err1, redis.Nil) { | |||||
e.OutErr(c, e.ERR, err1.Error()) | |||||
return | |||||
} else if errors.Is(err1, redis.Nil) { | |||||
// 缓存不存在数据直接查询 | |||||
//统计用户"ecpm"范围 | |||||
resp.StatisticsUserEggEcpmRange, err = egg_energy.StatisticsUserEggEcpmRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"拉新人数"范围 | |||||
resp.StatisticsUserEggInviteUserNumsRange, err = egg_energy.StatisticsUserEggInviteUserNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"团队活跃次数"范围 | |||||
resp.StatisticsUserEggTeamActivityNumsRange, err = egg_energy.StatisticsUserEggTeamActivityNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"签到次数"范围 | |||||
resp.StatisticsUserEggSignInNumsRange, err = egg_energy.StatisticsUserEggSignInNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"发红包次数"范围 | |||||
resp.StatisticsUserEggSendRedPackageNumsRange, err = egg_energy.StatisticsUserEggSendRedPackageNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
resp.StatisticsUserEggEggEnergyExchangeAccountBalanceRange, err = egg_energy.StatisticsUserEggEggEnergyExchangeAccountBalanceRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
resp.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange, err = egg_energy.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"发朋友圈次数"范围 | |||||
resp.StatisticsUserEggSendCircleOfFriendNumsRange, err = egg_energy.StatisticsUserEggSendCircleOfFriendNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"论坛评论次数"范围 | |||||
resp.StatisticsUserEggForumCommentsNumsRange, err = egg_energy.StatisticsUserEggForumCommentsNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"学院学习次数"范围 | |||||
resp.StatisticsUserEggCollegeLearningNumsRange, err = egg_energy.StatisticsUserEggCollegeLearningNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"违规次数"范围 | |||||
resp.StatisticsUserEggViolateNumsRange, err = egg_energy.StatisticsUserEggViolateNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"浏览界面次数"范围 | |||||
resp.StatisticsUserEggBrowseInterfaceNumsRange, err = egg_energy.StatisticsUserEggBrowseInterfaceNumsRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
//统计用户"个人活跃积分增量值"范围 | |||||
resp.StatisticsUserEggPersonAddActivityValueRange, err = egg_energy.StatisticsUserEggPersonAddActivityValueRange(esIndexName) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
} | |||||
// 更新缓存 | |||||
cache.SetJson(redisKey, resp, -1) | |||||
} | } | ||||
resp.YearAndWeekList, err = egg_energy.GetYearsAndWeeks() | resp.YearAndWeekList, err = egg_energy.GetYearsAndWeeks() | ||||
if err != nil { | |||||
return | |||||
} | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR, err.Error()) | e.OutErr(c, e.ERR, err.Error()) | ||||
} | } | ||||
@@ -170,17 +170,17 @@ func AddPlatformRevenue(c *gin.Context) { | |||||
platformRevenueDataDb := implement.NewPlatformRevenueDataDb(db.Db) | platformRevenueDataDb := implement.NewPlatformRevenueDataDb(db.Db) | ||||
now := time.Now() | now := time.Now() | ||||
hour := now.Hour() | |||||
if req.Hours > 24 { | |||||
hour = 24 | |||||
} | |||||
//hour := now.Hour() | |||||
//if req.Hours > 24 { | |||||
// hour = 24 | |||||
//} | |||||
times := req.Hours * 60 / req.Frequency | times := req.Hours * 60 / req.Frequency | ||||
m := model.PlatformRevenueData{ | m := model.PlatformRevenueData{ | ||||
Kind: req.Kind, | Kind: req.Kind, | ||||
TotalAmount: req.TotalAmount, | TotalAmount: req.TotalAmount, | ||||
BalanceAmount: req.TotalAmount, | BalanceAmount: req.TotalAmount, | ||||
Hours: hour, | |||||
Hours: req.Hours, | |||||
BalanceTimes: times, | BalanceTimes: times, | ||||
Frequency: req.Frequency, | Frequency: req.Frequency, | ||||
Memo: req.Memo, | Memo: req.Memo, | ||||
@@ -20,6 +20,7 @@ type VirtualCoin struct { | |||||
// BasicSetting 基础设置 | // BasicSetting 基础设置 | ||||
type BasicSetting struct { | type BasicSetting struct { | ||||
IsOpen int `json:"is_open" ` // 是否开启(1:开启 0:关闭) | IsOpen int `json:"is_open" ` // 是否开启(1:开启 0:关闭) | ||||
InitialPrice string `json:"initial_price" ` // 初始价格 | |||||
PersonEggEnergyCoinId int `json:"person_egg_energy_coin_id" ` // 个人蛋蛋能量对应虚拟币 id | PersonEggEnergyCoinId int `json:"person_egg_energy_coin_id" ` // 个人蛋蛋能量对应虚拟币 id | ||||
TeamEggEnergyCoinId int `json:"team_egg_energy_coin_id" ` // 团队蛋蛋能量对应虚拟币 id | TeamEggEnergyCoinId int `json:"team_egg_energy_coin_id" ` // 团队蛋蛋能量对应虚拟币 id | ||||
PersonEggPointsCoinId int `json:"person_egg_points_coin_id" ` // 个人蛋蛋积分对应虚拟币 id | PersonEggPointsCoinId int `json:"person_egg_points_coin_id" ` // 个人蛋蛋积分对应虚拟币 id | ||||
@@ -12,6 +12,8 @@ type UserEggIndexReq struct { | |||||
Week string `json:"week" example:"周份"` | Week string `json:"week" example:"周份"` | ||||
} | } | ||||
const AutoCachingEggPointRedisKey = "EggEnergy:AutoCachingEggPoint:%s" // 年-周 | |||||
type StatisticsEggPointResp struct { | type StatisticsEggPointResp struct { | ||||
Year string `json:"year" example:"年份"` | Year string `json:"year" example:"年份"` | ||||
Week string `json:"week" example:"周份"` | Week string `json:"week" example:"周份"` | ||||
@@ -43,7 +43,7 @@ func Run() { | |||||
func reload() { | func reload() { | ||||
cronTaskDb := implement.NewCronTaskDb(db.Db) | cronTaskDb := implement.NewCronTaskDb(db.Db) | ||||
taskCfgList = cronTaskDb.MapCrontabCfg() | taskCfgList = cronTaskDb.MapCrontabCfg() | ||||
fmt.Println("taskCfgList>>>>>>>>>>>>>", taskCfgList) | |||||
if len(*taskCfgList) > 0 { | if len(*taskCfgList) > 0 { | ||||
// 删除原有所有任务 | // 删除原有所有任务 | ||||
if len(entryIds) > 0 { | if len(entryIds) > 0 { | ||||
@@ -97,4 +97,5 @@ func initTasks() { | |||||
jobs[taskMd.CornEggEnergyAutoAdjustPrice] = taskEggEnergyAutoAdjustPrice // 蛋蛋能量-自动调整价格 | jobs[taskMd.CornEggEnergyAutoAdjustPrice] = taskEggEnergyAutoAdjustPrice // 蛋蛋能量-自动调整价格 | ||||
jobs[taskMd.CornEggEnergyAutoCommunityDividends] = taskEggEnergyCommunityDividends // 蛋蛋能量-社区分红 | jobs[taskMd.CornEggEnergyAutoCommunityDividends] = taskEggEnergyCommunityDividends // 蛋蛋能量-社区分红 | ||||
jobs[taskMd.CornEggEnergyAutomaticScoring] = taskEggEnergyAutomaticScoring // 蛋蛋能量-自动打分 | jobs[taskMd.CornEggEnergyAutomaticScoring] = taskEggEnergyAutomaticScoring // 蛋蛋能量-自动打分 | ||||
jobs[taskMd.CornEggEnergyAutoCachingEggPointStatistics] = taskAutoCachingEggPointStatistics // 蛋蛋分统计落地页-缓存 | |||||
} | } |
@@ -1,14 +1,15 @@ | |||||
package md | package md | ||||
const ( | const ( | ||||
CronEggEnergyAutoRecordPrices = "cron_egg_energy_auto_record_price" // 自动记录价格 | |||||
CronEggEnergyDealPlatformRevenueData = "cron_egg_energy_deal_platform_revenue_data" // 处理平台收益 | |||||
CronEggEnergyDealFundData = "cron_egg_energy_deal_fund_data" // 处理价值投入 | |||||
CronEggEnergyUserEggScore = "cron_egg_energy_user_egg_score" // 处理蛋蛋分 | |||||
CornEggEnergyAutoReleaseTeamEggEnergy = "cron_egg_energy_auto_release_team_egg_energy" // 处理团队蛋蛋能量释放到个人蛋蛋能量 | |||||
CornSettlementStarLevelDividends = "cron_egg_energy_settlement_star_level_dividends" // 结算星级分红 | |||||
CornEggEnergyDealUserPublicPlatoonPunish = "cron_egg_energy_deal_user_public_platoon_punish" // 公排处罚 | |||||
CornEggEnergyAutoAdjustPrice = "cron_egg_energy_auto_adjust_price" // 自动调整价格 | |||||
CornEggEnergyAutoCommunityDividends = "cron_egg_energy_community_dividends" // 社区分红 | |||||
CornEggEnergyAutomaticScoring = "corn_egg_energy_automatic_score" // 自动打分 | |||||
CronEggEnergyAutoRecordPrices = "cron_egg_energy_auto_record_price" // 自动记录价格 | |||||
CronEggEnergyDealPlatformRevenueData = "cron_egg_energy_deal_platform_revenue_data" // 处理平台收益 | |||||
CronEggEnergyDealFundData = "cron_egg_energy_deal_fund_data" // 处理价值投入 | |||||
CronEggEnergyUserEggScore = "cron_egg_energy_user_egg_score" // 处理蛋蛋分 | |||||
CornEggEnergyAutoReleaseTeamEggEnergy = "cron_egg_energy_auto_release_team_egg_energy" // 处理团队蛋蛋能量释放到个人蛋蛋能量 | |||||
CornSettlementStarLevelDividends = "cron_egg_energy_settlement_star_level_dividends" // 结算星级分红 | |||||
CornEggEnergyDealUserPublicPlatoonPunish = "cron_egg_energy_deal_user_public_platoon_punish" // 公排处罚 | |||||
CornEggEnergyAutoAdjustPrice = "cron_egg_energy_auto_adjust_price" // 自动调整价格 | |||||
CornEggEnergyAutoCommunityDividends = "cron_egg_energy_community_dividends" // 社区分红 | |||||
CornEggEnergyAutomaticScoring = "cron_egg_energy_automatic_score" // 自动打分 | |||||
CornEggEnergyAutoCachingEggPointStatistics = "cron_egg_energy_auto_caching_egg_point_statistics" // 缓存蛋蛋分统计落地页 | |||||
) | ) |
@@ -8,6 +8,3 @@ type RevenueDataNode struct { | |||||
Data model.PlatformRevenueData `json:"data"` | Data model.PlatformRevenueData `json:"data"` | ||||
EveryAmount string `json:"every_amount" ` // 每次结算金额 | EveryAmount string `json:"every_amount" ` // 每次结算金额 | ||||
} | } | ||||
type name struct { | |||||
} |
@@ -0,0 +1,132 @@ | |||||
package svc | |||||
import ( | |||||
md2 "applet/app/md/institutional_management/egg_energy" | |||||
"applet/app/svc/egg_energy" | |||||
"applet/app/utils/cache" | |||||
"code.fnuoos.com/EggPlanet/egg_system_rules.git/md" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" | |||||
"context" | |||||
"fmt" | |||||
"strings" | |||||
"time" | |||||
"xorm.io/xorm" | |||||
) | |||||
const AutoCachingEggPointStatisticsLockKey = "egg_energy_auto_automatic_scoring_lock_key" | |||||
func AutoCachingEggPointStatistics(engine *xorm.Engine) { | |||||
fmt.Println("svc_egg_energy_auto_caching_egg_point_statistics...") | |||||
defer func() { | |||||
if err := recover(); err != nil { | |||||
fmt.Println(err) | |||||
return | |||||
} | |||||
}() | |||||
fmt.Println("----------------------------AutoCachingEggPointStatistics_begin-------------------------------") | |||||
getString, _ := cache.GetString(AutoCachingEggPointStatisticsLockKey) | |||||
if getString != "" { | |||||
fmt.Println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "上一次蛋蛋分统计未执行完") | |||||
return | |||||
} | |||||
cache.SetEx(AutoCachingEggPointStatisticsLockKey, "running", 10*60) // 10 min | |||||
// 1. 查询所有蛋蛋分索引 | |||||
aliasName := md.EggEnergyUserEggScoreEsAlias | |||||
aliases, err := es.EsClient.Aliases(). | |||||
Index(aliasName). // 指定别名 | |||||
Do(context.Background()) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_GetAllIndexFailed_ERR:::::", err.Error()) | |||||
return | |||||
} | |||||
now := time.Now() | |||||
year, week := now.ISOWeek() | |||||
currentWeekIndex := fmt.Sprintf(md.EggEnergyUserEggScoreEsAlias+"_%d%d", year, week) | |||||
// 2. 按周处理蛋蛋分记录 | |||||
for esIndexName, _ := range aliases.Indices { | |||||
// 2.1 查询是否有此周且不为当周记录 | |||||
egg_energy.GetYearsAndWeekStr(esIndexName) | |||||
if esIndexName != currentWeekIndex { | |||||
exists := cache.Exists(md2.AutoCachingEggPointRedisKey) | |||||
if exists { | |||||
continue | |||||
} | |||||
} | |||||
// 2.2 更新记录 | |||||
var tempWeek md2.StatisticsEggPointResp | |||||
//统计用户"ecpm"范围 | |||||
tempWeek.StatisticsUserEggEcpmRange, err = egg_energy.StatisticsUserEggEcpmRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"拉新人数"范围 | |||||
tempWeek.StatisticsUserEggInviteUserNumsRange, err = egg_energy.StatisticsUserEggInviteUserNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"团队活跃次数"范围 | |||||
tempWeek.StatisticsUserEggTeamActivityNumsRange, err = egg_energy.StatisticsUserEggTeamActivityNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"签到次数"范围 | |||||
tempWeek.StatisticsUserEggSignInNumsRange, err = egg_energy.StatisticsUserEggSignInNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"发红包次数"范围 | |||||
tempWeek.StatisticsUserEggSendRedPackageNumsRange, err = egg_energy.StatisticsUserEggSendRedPackageNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
tempWeek.StatisticsUserEggEggEnergyExchangeAccountBalanceRange, err = egg_energy.StatisticsUserEggEggEnergyExchangeAccountBalanceRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"蛋蛋能量兑换余额数量"范围 | |||||
tempWeek.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange, err = egg_energy.StatisticsUserEggAccountBalanceExchangeEggEnergyNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"发朋友圈次数"范围 | |||||
tempWeek.StatisticsUserEggSendCircleOfFriendNumsRange, err = egg_energy.StatisticsUserEggSendCircleOfFriendNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"论坛评论次数"范围 | |||||
tempWeek.StatisticsUserEggForumCommentsNumsRange, err = egg_energy.StatisticsUserEggForumCommentsNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"学院学习次数"范围 | |||||
tempWeek.StatisticsUserEggCollegeLearningNumsRange, err = egg_energy.StatisticsUserEggCollegeLearningNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"违规次数"范围 | |||||
tempWeek.StatisticsUserEggViolateNumsRange, err = egg_energy.StatisticsUserEggViolateNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"浏览界面次数"范围 | |||||
tempWeek.StatisticsUserEggBrowseInterfaceNumsRange, err = egg_energy.StatisticsUserEggBrowseInterfaceNumsRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
//统计用户"个人活跃积分增量值"范围 | |||||
tempWeek.StatisticsUserEggPersonAddActivityValueRange, err = egg_energy.StatisticsUserEggPersonAddActivityValueRange(esIndexName) | |||||
if err != nil { | |||||
fmt.Println("AutoCachingEggPointStatistics_StatisticsFailed_ERR:::::", err.Error()) | |||||
} | |||||
parts := strings.Split(esIndexName, "_") | |||||
yearAndWeekStr := parts[len(parts)-1] | |||||
redisKey := fmt.Sprintf(md2.AutoCachingEggPointRedisKey, yearAndWeekStr) | |||||
cache.SetJson(redisKey, tempWeek, -1) | |||||
} | |||||
fmt.Println("----------------------------AutoCachingEggPointStatistics_end-------------------------------") | |||||
} |
@@ -28,7 +28,7 @@ func EggEnergyAutoRecordPrices(engine *xorm.Engine) { | |||||
// 1. 获取最后一条记录 | // 1. 获取最后一条记录 | ||||
priceDb := implement.NewEggEnergyPriceDb(engine) | priceDb := implement.NewEggEnergyPriceDb(engine) | ||||
lastPrice, has, err := priceDb.EggEnergyPriceGetLastOne() | |||||
lastPrice, err := priceDb.EggEnergyPriceGetOneByParams(dateNowStr, now.Hour()) | |||||
if err != nil { | if err != nil { | ||||
fmt.Println("EggEnergyAutoRecordPrices_ERR:::::", err.Error()) | fmt.Println("EggEnergyAutoRecordPrices_ERR:::::", err.Error()) | ||||
return | return | ||||
@@ -45,27 +45,26 @@ func EggEnergyAutoRecordPrices(engine *xorm.Engine) { | |||||
defer cb() // 释放锁 | defer cb() // 释放锁 | ||||
} | } | ||||
if has { | |||||
if lastPrice.Date == dateNowStr && lastPrice.Hour == hourNowStr { | |||||
return | |||||
// 3. 当前时间已经有记录 更新价格 | // 3. 当前时间已经有记录 更新价格 | ||||
if lastPrice.Date == dateNowStr && lastPrice.Hour == hourNowStr { | |||||
lastPrice.Price = eggEnergyCoreData.NowPrice | |||||
_, err2 := priceDb.EggEnergyPriceUpdate(lastPrice) | |||||
if err2 != nil { | |||||
fmt.Println("SaveEggEnergyPrice_ERR:::::", err2.Error()) | |||||
return | |||||
} | |||||
} else { | |||||
// 4. 保存当前价格 | |||||
priceData := model.EggEnergyPrice{ | |||||
Price: eggEnergyCoreData.NowPrice, | |||||
Date: dateNowStr, | |||||
Hour: hourNowStr, | |||||
} | |||||
_, err2 := priceDb.EggEnergyPriceInsert(&priceData) | |||||
if err2 != nil { | |||||
fmt.Println("SaveEggEnergyPrice_ERR:::::", err2.Error()) | |||||
return | |||||
} | |||||
lastPrice.Price = eggEnergyCoreData.NowPrice | |||||
_, err2 := priceDb.EggEnergyPriceUpdate(lastPrice) | |||||
if err2 != nil { | |||||
fmt.Println("SaveEggEnergyPrice_ERR:::::", err2.Error()) | |||||
return | |||||
} | |||||
} else { | |||||
// 4. 当前时间还没有记录 保存当前价格 | |||||
priceData := model.EggEnergyPrice{ | |||||
Price: eggEnergyCoreData.NowPrice, | |||||
Date: dateNowStr, | |||||
Hour: hourNowStr, | |||||
} | |||||
_, err2 := priceDb.EggEnergyPriceInsert(&priceData) | |||||
if err2 != nil { | |||||
fmt.Println("SaveEggEnergyPrice_ERR:::::", err2.Error()) | |||||
return | |||||
} | } | ||||
} | } | ||||
return | return | ||||
@@ -46,7 +46,7 @@ func EggEnergyAutoUpdateUserAccess(engine *xorm.Engine) { | |||||
updateInfoMap := make([]interface{}, 0, len(list)) | updateInfoMap := make([]interface{}, 0, len(list)) | ||||
for _, node := range list { | for _, node := range list { | ||||
uid := node.Uid | uid := node.Uid | ||||
id := fmt.Sprintf("%d%d-%d", year, week, uid) | |||||
id := fmt.Sprintf("%d%d_%d", year, week, uid) | |||||
ids = append(ids, id) | ids = append(ids, id) | ||||
updateInfoMap = append(updateInfoMap, map[string]interface{}{ | updateInfoMap = append(updateInfoMap, map[string]interface{}{ | ||||
"browse_interface_nums": node.Total, | "browse_interface_nums": node.Total, | ||||
@@ -16,10 +16,10 @@ import ( | |||||
"xorm.io/xorm" | "xorm.io/xorm" | ||||
) | ) | ||||
const LockKey = "egg_energy_auto_automatic_scoring_lock_key" | |||||
const EggEnergyAutomaticScoringLockKey = "egg_energy_auto_automatic_scoring_lock_key" | |||||
func EggEnergyAutomaticScoring(engine *xorm.Engine) { | func EggEnergyAutomaticScoring(engine *xorm.Engine) { | ||||
fmt.Println("svc_egg_energy_auto_update_user_access...") | |||||
fmt.Println("svc_egg_energy_auto_score...") | |||||
defer func() { | defer func() { | ||||
if err := recover(); err != nil { | if err := recover(); err != nil { | ||||
fmt.Println(err) | fmt.Println(err) | ||||
@@ -29,12 +29,12 @@ func EggEnergyAutomaticScoring(engine *xorm.Engine) { | |||||
fmt.Println("----------------------------EggEnergyAutomaticScoring_begin-------------------------------") | fmt.Println("----------------------------EggEnergyAutomaticScoring_begin-------------------------------") | ||||
// 增加“悲观锁”防止串行 | // 增加“悲观锁”防止串行 | ||||
getString, _ := cache.GetString(LockKey) | |||||
getString, _ := cache.GetString(EggEnergyAutomaticScoringLockKey) | |||||
if getString != "" { | if getString != "" { | ||||
fmt.Println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "上一次蛋蛋分自动打分未执行完") | fmt.Println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "上一次蛋蛋分自动打分未执行完") | ||||
return | return | ||||
} | } | ||||
cache.SetEx(LockKey, "running", 3600*6) // 6小时 | |||||
cache.SetEx(EggEnergyAutomaticScoringLockKey, "running", 3600*6) // 6小时 | |||||
now := time.Now() | now := time.Now() | ||||
fmt.Println(now.Hour()) | fmt.Println(now.Hour()) | ||||
@@ -0,0 +1,22 @@ | |||||
package task | |||||
import ( | |||||
"applet/app/task/svc" | |||||
"math/rand" | |||||
"time" | |||||
"xorm.io/xorm" | |||||
) | |||||
func taskAutoCachingEggPointStatistics(eg *xorm.Engine) { | |||||
for { | |||||
if len(ch) > workerNum { | |||||
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000))) | |||||
} else { | |||||
goto START | |||||
} | |||||
} | |||||
START: | |||||
ch <- 1 | |||||
svc.AutoCachingEggPointStatistics(eg) | |||||
<-ch | |||||
} |
@@ -9,23 +9,59 @@ srv_addr: ':4001' | |||||
redis_addr: '127.0.0.1:6379' | redis_addr: '127.0.0.1:6379' | ||||
redis_password: '' | redis_password: '' | ||||
#db: | |||||
# host: '119.23.182.117:3306' | |||||
# name: 'egg' | |||||
# user: 'root' | |||||
# psw: 'Fnuo123com@' | |||||
# show_log: true | |||||
# max_lifetime: 30 | |||||
# max_open_conns: 100 | |||||
# max_idle_conns: 100 | |||||
# path: 'tmp/%s.log' | |||||
db: | db: | ||||
host: '119.23.182.117:3306' | |||||
host: 'advertisement-db.rwlb.rds.aliyuncs.com:3306' | |||||
name: 'egg' | name: 'egg' | ||||
user: 'root' | |||||
psw: 'Fnuo123com@' | |||||
user: 'canal' | |||||
psw: 'DengBiao@1997' | |||||
show_log: true | show_log: true | ||||
max_lifetime: 30 | max_lifetime: 30 | ||||
max_open_conns: 100 | max_open_conns: 100 | ||||
max_idle_conns: 100 | max_idle_conns: 100 | ||||
path: 'tmp/%s.log' | path: 'tmp/%s.log' | ||||
#db_back: | |||||
# host: '119.23.182.117:3306' | |||||
# name: 'egg-data-back-up' | |||||
# user: 'root' | |||||
# psw: 'Fnuo123com@' | |||||
# show_log: true | |||||
# path: 'tmp/%s.log' | |||||
db_back: | |||||
host: 'advertisement-db.rwlb.rds.aliyuncs.com:3306' | |||||
name: 'egg-data-back-up' | |||||
user: 'canal' | |||||
psw: 'DengBiao@1997' | |||||
show_log: true | |||||
path: 'tmp/%s.log' | |||||
#im_db: | |||||
# host: '119.23.182.117:3306' | |||||
# name: 'egg-im' | |||||
# user: 'root' | |||||
# psw: 'Fnuo123com@' | |||||
# show_log: true | |||||
# max_lifetime: 30 | |||||
# max_open_conns: 100 | |||||
# max_idle_conns: 100 | |||||
# path: 'tmp/%s.log' | |||||
im_db: | im_db: | ||||
host: '119.23.182.117:3306' | |||||
host: 'advertisement-db.rwlb.rds.aliyuncs.com:3306' | |||||
name: 'egg-im' | name: 'egg-im' | ||||
user: 'root' | |||||
psw: 'Fnuo123com@' | |||||
user: 'canal' | |||||
psw: 'DengBiao@1997' | |||||
show_log: true | show_log: true | ||||
max_lifetime: 30 | max_lifetime: 30 | ||||
max_open_conns: 100 | max_open_conns: 100 | ||||