|
|
@@ -5,6 +5,8 @@ import ( |
|
|
|
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" |
|
|
|
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" |
|
|
|
zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils" |
|
|
|
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/cache" |
|
|
|
zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx" |
|
|
|
"errors" |
|
|
|
"fmt" |
|
|
|
"math" |
|
|
@@ -255,7 +257,7 @@ func OneCirclesPublicPlatoon(engine *xorm.Engine, uid, recommendUid int, oneCirc |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//2、查找对应pid的 user_public_platoon_relation 记录 |
|
|
|
//2、查找对应pid的 one_circles_public_platoon_user_relation 记录 |
|
|
|
var m1 model.OneCirclesPublicPlatoonUserRelation |
|
|
|
if has, err := engine.Where("uid=?", fatherUid).Get(&m1); err != nil || has == false { |
|
|
|
return oneCirclesPublicPlatoonUserRelation, err |
|
|
@@ -273,7 +275,7 @@ func OneCirclesPublicPlatoon(engine *xorm.Engine, uid, recommendUid int, oneCirc |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 3、插入 user_public_platoon_relation 记录 |
|
|
|
// 3、插入 one_circles_public_platoon_user_relation 记录 |
|
|
|
now := time.Now() |
|
|
|
oneCirclesPublicPlatoonUserRelation.Uid = uid |
|
|
|
oneCirclesPublicPlatoonUserRelation.FatherUid = fatherUidStr |
|
|
@@ -704,3 +706,162 @@ func smallMakeSearchLevel(position *int, rows float64, times *float64) (level in |
|
|
|
return smallMakeSearchLevel(position, rows, times) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// OneCirclesDealCommonWealthPunish 处理公排处罚 |
|
|
|
func OneCirclesDealCommonWealthPunish(engine *xorm.Engine, uid int, reason string) (err error, resp []map[string]string) { |
|
|
|
session := engine.NewSession() |
|
|
|
defer func() { |
|
|
|
session.Close() |
|
|
|
if err := recover(); err != nil { |
|
|
|
_ = zhios_order_relate_logx.Error(err) |
|
|
|
} |
|
|
|
}() |
|
|
|
session.Begin() |
|
|
|
|
|
|
|
//1、查找 `user_public_platoon_setting` 基础设置 |
|
|
|
oneCirclesPublicPlatoonBasicSetting, err := db.OneCirclesPublicPlatoonBasicSettingGetOneByParams(engine, map[string]interface{}{ |
|
|
|
"key": "is_open", |
|
|
|
"value": 1, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
//2、查询出 `one_circles_public_platoon_user_relation` 中相关记录 && 将该记录的uid置为 -1 |
|
|
|
params, err := db.UserSmallPublicPlatoonRelationGetOneByParams(engine, map[string]interface{}{ |
|
|
|
"key": "uid", |
|
|
|
"value": uid, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
if params == nil { |
|
|
|
err = errors.New("未查询到公排关系记录") |
|
|
|
_ = session.Rollback() |
|
|
|
} |
|
|
|
|
|
|
|
//TODO::判断是否为推荐用户 |
|
|
|
if params.RecommendUid == 0 { |
|
|
|
params.Uid = params.Uid - 2147483648 |
|
|
|
} else { |
|
|
|
params.Uid = params.Uid - 2147483648 |
|
|
|
} |
|
|
|
|
|
|
|
for n := 1; n <= 9; n++ { |
|
|
|
str := "father_uid" + strconv.Itoa(n) |
|
|
|
sql := fmt.Sprintf("UPDATE `user_small_public_platoon_relation` SET %s=%s where %s=%s", str, strconv.Itoa(params.Uid), str, strconv.Itoa(uid)) |
|
|
|
fmt.Println(">>>>>>>sql>>>>>>>", sql) |
|
|
|
_, err = session.Exec(sql) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
updateAffected, err := db.UserSmallPublicPlatoonRelationUpdate(session, params.Id, params) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
if updateAffected == 0 { |
|
|
|
err = errors.New("更新 one_circles_public_platoon_user_relation 记录失败") |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
//3、新增一条 `one_circles_public_platoon_user_relation` 记录 |
|
|
|
params.Uid = uid |
|
|
|
res, err := OneCirclesPublicPlatoon(engine, params.Uid, params.RecommendUid, *oneCirclesPublicPlatoonBasicSetting) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
//4、新增一条 `one_circles_user_public_platoon_system_punish_records` 记录 |
|
|
|
now := time.Now() |
|
|
|
insertAffected, err := db.OneCirclesUserPublicPlatoonSystemPunishRecordsInsert(session, &model.OneCirclesUserPublicPlatoonSystemPunishRecords{ |
|
|
|
Uid: params.Uid, |
|
|
|
OldPostion: params.Position, |
|
|
|
NewPostion: res.Position, |
|
|
|
Date: now.AddDate(0, 0, 30).Format("2006-01-02"), |
|
|
|
Title: "共富收益-系统处罚记录", |
|
|
|
Reason: reason, |
|
|
|
Type: 2, |
|
|
|
CreateAt: now, |
|
|
|
UpdateAt: now, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
if insertAffected == 0 { |
|
|
|
err = errors.New("新增 one_circles_user_public_platoon_system_punish_records 记录失败") |
|
|
|
_ = session.Rollback() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
err = session.Commit() |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
const OneCirclesDealUserPublicPlatoonPunishLockKey = "one_circles_deal_user_public_platoon_lock_key" |
|
|
|
|
|
|
|
// OneCirclesDealUserPublicPlatoonPunish 处理公排处罚 |
|
|
|
func OneCirclesDealUserPublicPlatoonPunish(engine *xorm.Engine, masterId string) (err error) { |
|
|
|
now := time.Now() |
|
|
|
fmt.Println(now.Hour()) |
|
|
|
if !(now.Hour() > 3 && now.Hour() < 8) { |
|
|
|
//TODO::只在凌晨一点 ~ 凌晨 8 点运行 |
|
|
|
return errors.New("非运行时间") |
|
|
|
} |
|
|
|
//TODO::增加“悲观锁”防止串行 |
|
|
|
getString, _ := cache.GetString(OneCirclesDealUserPublicPlatoonPunishLockKey) |
|
|
|
if getString != "" { |
|
|
|
fmt.Println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "上一次结算未执行完") |
|
|
|
return errors.New("上一次结算未执行完") |
|
|
|
} |
|
|
|
cache.SetEx(OneCirclesDealUserPublicPlatoonPunishLockKey, "running", 3600*8) //8小时 |
|
|
|
|
|
|
|
//查找 `one_circles_public_platoon_basic_setting` 基础设置 |
|
|
|
oneCirclesPublicPlatoonBasicSetting, err := db.OneCirclesPublicPlatoonBasicSettingGetOneByParams(engine, map[string]interface{}{ |
|
|
|
"key": "is_open", |
|
|
|
"value": 1, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
if oneCirclesPublicPlatoonBasicSetting == nil { |
|
|
|
return errors.New("公排制度未开启") |
|
|
|
} |
|
|
|
if oneCirclesPublicPlatoonBasicSetting.SystemPunishReplace == 1 { |
|
|
|
systemPunishReplaceValue := oneCirclesPublicPlatoonBasicSetting.SystemPunishReplaceValue |
|
|
|
startDate := now.AddDate(0, 0, -systemPunishReplaceValue).Format("2006-01-02") + " 00:00:00" |
|
|
|
var page = 1 |
|
|
|
var pageSize = 100 |
|
|
|
for { |
|
|
|
var users []model.User |
|
|
|
err = engine.Limit(pageSize, (page-1)*pageSize).Desc("id").Find(&users) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
if len(users) <= 0 { |
|
|
|
break |
|
|
|
} |
|
|
|
for _, user := range users { |
|
|
|
var list []model.OneCirclesGreenEnergySignIn |
|
|
|
err = engine.Where("start_time >= ?", startDate).And("uid = ?", user.Uid).Find(&list) |
|
|
|
if len(list) <= 0 { |
|
|
|
//进行处罚 |
|
|
|
err, _ = OneCirclesDealCommonWealthPunish(engine, user.Uid, "公排处罚") |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
page++ |
|
|
|
} |
|
|
|
} |
|
|
|
return |
|
|
|
} |