|
@@ -0,0 +1,107 @@ |
|
|
|
|
|
package svc |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
|
"applet/app/db" |
|
|
|
|
|
"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" |
|
|
|
|
|
"fmt" |
|
|
|
|
|
"time" |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func AutoCountTeamAssistance() { |
|
|
|
|
|
|
|
|
|
|
|
// 1.查签到表,统计今天0点后开始签到的用户 |
|
|
|
|
|
now := time.Now() |
|
|
|
|
|
nowStr := now.Format("2006-01-02 15:04:05") |
|
|
|
|
|
date := now.Format("2006-01-02") |
|
|
|
|
|
todayStr := fmt.Sprintf("%s %s", date, "00:00:00") |
|
|
|
|
|
var signIns []model.EggSignIn |
|
|
|
|
|
err := db.Db.Where("start_time > ?", todayStr).Find(&signIns) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
fmt.Println(err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
var teamAssistance []model.EggEnergyTeamAssistance |
|
|
|
|
|
// 2. 查询这些用户的下级 |
|
|
|
|
|
for _, signIn := range signIns { |
|
|
|
|
|
relateDb := implement.NewUserRelateDb(db.Db) |
|
|
|
|
|
relates, err := relateDb.FindUserRelateByParentUid(signIn.Uid, 0) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
fmt.Println(err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
// 3. 判断这些下级助力次数 |
|
|
|
|
|
var uids []int64 |
|
|
|
|
|
for _, relate := range *relates { |
|
|
|
|
|
uids = append(uids, relate.Uid) |
|
|
|
|
|
} |
|
|
|
|
|
typePrefix := "incentive_eggSmash" |
|
|
|
|
|
types := fmt.Sprintf("type LIKE '%s'", typePrefix+"%") |
|
|
|
|
|
assistedNum, err := db.Db.Where("create_at > ?", signIn.CreateAt). |
|
|
|
|
|
And(types).In("uid", uids). |
|
|
|
|
|
GroupBy("uid").Count(&model.AdvertisingCallback{}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
fmt.Println(err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
if assistedNum > 0 { |
|
|
|
|
|
// 保存助力信息 数据库 |
|
|
|
|
|
var assistedUsers []model.AdvertisingCallback |
|
|
|
|
|
err := db.Db.Select("uid").Where("create_at > ?", signIn.CreateAt). |
|
|
|
|
|
And(types).In("uid", uids). |
|
|
|
|
|
GroupBy("uid").Find(&assistedUsers) |
|
|
|
|
|
assistedUserDetails := make([]model.EggEnergyAssistanceDetail, len(assistedUsers)) |
|
|
|
|
|
for i, assistedUser := range assistedUsers { |
|
|
|
|
|
m := model.EggEnergyAssistanceDetail{ |
|
|
|
|
|
Uid: signIn.Uid, |
|
|
|
|
|
AssistedUid: int64(assistedUser.Uid), |
|
|
|
|
|
SignId: signIn.Id, |
|
|
|
|
|
CreatedAt: nowStr, |
|
|
|
|
|
UpdatedAt: nowStr, |
|
|
|
|
|
} |
|
|
|
|
|
assistedUserDetails[i] = m |
|
|
|
|
|
} |
|
|
|
|
|
// 保存助力信息到 redis |
|
|
|
|
|
cacheKey := fmt.Sprintf("EggEnergyTeamAssistance:%d", signIn.Uid) |
|
|
|
|
|
targetTime, err1 := time.Parse("2006-01-02 15:04:05", signIn.EndTime) |
|
|
|
|
|
if err1 != nil { |
|
|
|
|
|
fmt.Println("解析时间错误:", err1) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
diff := targetTime.Sub(time.Now()).Seconds() |
|
|
|
|
|
_, err = cache.SetEx(cacheKey, nil, int(diff)) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
for _, assistedUser := range assistedUsers { |
|
|
|
|
|
cache.SetBit(cacheKey, int64(assistedUser.Uid), 1) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
assistedTimes, err := db.Db.Where("create_at > ?", signIn.CreateAt). |
|
|
|
|
|
And(types).In("uid", uids).Count(&model.AdvertisingCallback{}) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
fmt.Println(err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
m := model.EggEnergyTeamAssistance{ |
|
|
|
|
|
Uid: signIn.Uid, |
|
|
|
|
|
AssistedNum: int(assistedNum), |
|
|
|
|
|
AssistedTimes: int(assistedTimes), |
|
|
|
|
|
RewardScore: utils.Float64ToStr(float64(assistedTimes) * 187.5), |
|
|
|
|
|
SignId: signIn.Id, |
|
|
|
|
|
Date: date, |
|
|
|
|
|
CreateAt: nowStr, |
|
|
|
|
|
UpdateAt: nowStr, |
|
|
|
|
|
} |
|
|
|
|
|
teamAssistance = append(teamAssistance, m) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
insert, err := db.Db.Insert(&teamAssistance) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
fmt.Println(err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
fmt.Println("insert ", insert) |
|
|
|
|
|
} |