diff --git a/db/db_sys_cfg.go b/db/db_sys_cfg.go new file mode 100644 index 0000000..033fe76 --- /dev/null +++ b/db/db_sys_cfg.go @@ -0,0 +1,24 @@ +package db + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/db/model" + "xorm.io/xorm" +) + +// 系统配置get +func SysCfgGetAll(Db *xorm.Engine) (*[]model.SysCfg, error) { + var cfgList []model.SysCfg + if err := Db.Cols("key,val,memo").Find(&cfgList); err != nil { + return nil, err + } + return &cfgList, nil +} + +// 获取一条记录 +func SysCfgGetOne(Db *xorm.Engine, key string) (*model.SysCfg, error) { + var cfgList model.SysCfg + if has, err := Db.Where("`key`=?", key).Get(&cfgList); err != nil || has == false { + return nil, err + } + return &cfgList, nil +} diff --git a/db/db_user_team_total.go b/db/db_user_team_total.go new file mode 100644 index 0000000..2702922 --- /dev/null +++ b/db/db_user_team_total.go @@ -0,0 +1,17 @@ +package db + +import ( + "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/db/model" + zhios_condition_statistics_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/utils" + "xorm.io/xorm" +) + +func GetUserTeamTotal(eg *xorm.Engine, uid string) *model.UserTeamTotal { + var data model.UserTeamTotal + get, _ := eg.Where("uid=?", uid).Get(&data) + if get == false { + data = model.UserTeamTotal{Uid: zhios_condition_statistics_utils.StrToInt(uid)} + eg.Insert(&data) + } + return &data +} diff --git a/db/model/sys_cfg.go b/db/model/sys_cfg.go new file mode 100644 index 0000000..22d906b --- /dev/null +++ b/db/model/sys_cfg.go @@ -0,0 +1,7 @@ +package model + +type SysCfg struct { + Key string `json:"key" xorm:"not null pk comment('键') VARCHAR(127)"` + Val string `json:"val" xorm:"comment('值') TEXT"` + Memo string `json:"memo" xorm:"not null default '' comment('备注') VARCHAR(255)"` +} diff --git a/db/model/user_team_total.go b/db/model/user_team_total.go new file mode 100644 index 0000000..a945ab2 --- /dev/null +++ b/db/model/user_team_total.go @@ -0,0 +1,10 @@ +package model + +type UserTeamTotal struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"default 0 unique INT(11)"` + TeamCount int `json:"team_count" xorm:"default 0 INT(11)"` + FirstCount int `json:"first_count" xorm:"default 0 INT(11)"` + SecondCount int `json:"second_count" xorm:"default 0 INT(11)"` + IsSet int `json:"is_set" xorm:"default 0 INT(11)"` +} diff --git a/hdl/hdl_upgrade.go b/hdl/hdl_upgrade.go index 1c47198..ceee72f 100644 --- a/hdl/hdl_upgrade.go +++ b/hdl/hdl_upgrade.go @@ -217,6 +217,9 @@ func CheckSchemeTasksComplete(blockStarChain string, engine *xorm.Engine, tasks } else { total = item.FinishCount } + if item.TaskType == 19 { + total = zhios_condition_statistics_utils.IntToStr(zhios_condition_statistics_utils.StrToInt(total) + 1) + } temp["name"] = name temp["total"] = total //需完成数 temp["finish"] = finish //已完成数 @@ -645,12 +648,13 @@ func GetFinishCount(blockStarChain string, engine *xorm.Engine, uid interface{}, FROM mall_ord_list_relate olr JOIN mall_ord ol ON olr.oid = ol.ord_id WHERE olr.uid = ? - AND ol.state =3 and olr.level>0 ?; + AND ol.state =3 and olr.level>0 %s; ` str := "" if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"8", "9"}) { str += " and ol.order_type=" + zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd) } + sqlTpl = fmt.Sprintf(sqlTpl, str) result, err := db.QueryNativeString(engine, sqlTpl, uid, str) if err == nil { total += zhios_condition_statistics_utils.StrToFloat64(result[0]["amount"]) @@ -879,6 +883,26 @@ WHERE molr.uid in(SELECT uid FROM user_relate WHERE parent_uid=%s and level=1) } return zhios_condition_statistics_utils.Float64ToStrByPrec(count, 2), hasPay, payOrdId + case 19: + teamCountMinData, _ := db.SysCfgGetOne(engine, "team_count_min") + teamCountMin := 15 + if teamCountMinData != nil { + teamCountMin = zhios_condition_statistics_utils.StrToInt(teamCountMinData.Val) + } + teamtotal := db.GetUserTeamTotal(engine, zhios_condition_statistics_utils.AnyToString(uid)) + var count = 0 + if teamtotal != nil && teamtotal.FirstCount >= teamCountMin && teamtotal.SecondCount >= teamCountMin { + count++ + } + sql := `SELECT * FROM user_profile up + LEFT JOIN user_team_total utt ON utt.uid=up.uid + WHERE up.parent_uid=? and utt.first_count>=? and utt.second_count>=? +` + nativeString, _ := db.QueryNativeString(engine, sql, zhios_condition_statistics_utils.AnyToString(uid), teamCountMin, teamCountMin) + if len(nativeString) > 0 { + count += len(nativeString) + } + return zhios_condition_statistics_utils.IntToStr(count), hasPay, payOrdId default: return "", hasPay, payOrdId }