相关条件的统计
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

964 lines
37 KiB

  1. package zyos_go_condition_hdl
  2. import (
  3. "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/db"
  4. "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/db/model"
  5. "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/md"
  6. "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/svc"
  7. zhios_condition_statistics_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_condition_statistics.git/utils"
  8. db2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db"
  9. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles"
  10. "encoding/json"
  11. "errors"
  12. "fmt"
  13. "time"
  14. "xorm.io/xorm"
  15. )
  16. func CommUpdate(params map[string]string, blockStarChain string, eg *xorm.Engine, dbName string, user *model.User, DataDetail md.DataDetail) (error, bool, int) {
  17. uid := DataDetail.Uid
  18. //判断有没有审核通过或审核中的记录
  19. has, err := db.UserLevelAuditingFindByUid(eg, zhios_condition_statistics_utils.StrToInt(uid))
  20. if err != nil {
  21. return err, false, 0
  22. }
  23. if has != nil {
  24. var msg = "您已审核通过,请勿重复申请"
  25. if has.State == 1 {
  26. msg = "正在审核中,请稍后再查看"
  27. }
  28. return errors.New(msg), false, 0
  29. }
  30. lv := user.Level
  31. result, AutoAudit := CommUplv(params, blockStarChain, eg, dbName, user, lv, DataDetail)
  32. if result == false {
  33. return errors.New("升级失败,请查看任务是否完成"), false, AutoAudit
  34. }
  35. return nil, result, AutoAudit
  36. }
  37. func CommUplv(params map[string]string, blockStarChain string, eg *xorm.Engine, dbName string, user *model.User, lv int, DataDetail md.DataDetail) (bool, int) {
  38. levelExpireAt := user.LevelExpireAt
  39. levelArriveAt := user.LevelArriveAt
  40. oldLevel := user.Level
  41. uid := zhios_condition_statistics_utils.IntToStr(user.Uid)
  42. result, _, payOrdId := IsCompleteSchemeTask(params, blockStarChain, eg, user, DataDetail.AgentType, DataDetail.IsChangeTime, dbName)
  43. AutoAudit := 0
  44. if result {
  45. level, err := db.UserLevelByID(eg, zhios_condition_statistics_utils.StrToInt(DataDetail.AgentType))
  46. if err != nil || level == nil {
  47. return false, 0
  48. }
  49. date := time.Now()
  50. var auditData = model.UserLevelAudit{
  51. Uid: zhios_condition_statistics_utils.StrToInt(uid),
  52. CurrentLevelId: lv,
  53. NextLevelId: zhios_condition_statistics_utils.StrToInt(DataDetail.AgentType),
  54. ConditionType: 2,
  55. AutoAudit: level.AutoAudit,
  56. DateType: 5,
  57. State: 1,
  58. RelateOid: payOrdId,
  59. CreateAt: date,
  60. UpdateAt: date,
  61. LevelDate: level.LevelDate,
  62. }
  63. has, err := db.UserLevelAuditInsertWithEngine(eg, &auditData)
  64. if has == 0 || err != nil {
  65. return false, 0
  66. }
  67. //自动审核
  68. if level.AutoAudit == 1 {
  69. //写入日志
  70. var log = &model.UserLevelChangeLog{
  71. Uid: user.Uid,
  72. BeforeLv: oldLevel,
  73. AfterLv: zhios_condition_statistics_utils.StrToInt(DataDetail.AgentType),
  74. Time: int(time.Now().Unix()),
  75. BeforeLevelExpireAt: levelExpireAt,
  76. AfterLevelExpireAt: user.LevelExpireAt,
  77. BeforeLevelArriveAt: levelArriveAt,
  78. AfterLevelArriveAt: user.LevelArriveAt,
  79. Type: "level_up",
  80. }
  81. fmt.Println(log)
  82. eg.InsertOne(log)
  83. auditData.State = 2
  84. //审核记录修改
  85. if _, err := db.UserLevelAuditUpdateById(eg, auditData.Id, &auditData, "state"); err != nil {
  86. return false, 0
  87. }
  88. t := time.Now()
  89. var expire time.Time
  90. //订单时间修改
  91. amount := ""
  92. if payOrdId > 0 {
  93. ord, err := db.UserLevelOrderById(eg, zhios_condition_statistics_utils.Int64ToStr(payOrdId))
  94. if err != nil {
  95. return false, 0
  96. }
  97. //过期时间在当前时间之前 并且 创建时间跟过期时间不相等 相等的话是永久会员
  98. if ord.ExpireAt.Unix() < t.Unix() && ord.CreateAt.Format("2006-01-02 15:04:05") != ord.ExpireAt.Format("2006-01-02 15:04:05") && ord.DateType != 4 {
  99. return false, 0
  100. }
  101. amount = ord.PayAmount
  102. switch ord.DateType {
  103. case 1:
  104. // 月
  105. expire = t.AddDate(0, 1, 0)
  106. ord.ExpireAt = expire
  107. case 2:
  108. // 季
  109. expire = t.AddDate(0, 3, 0)
  110. ord.ExpireAt = expire
  111. case 3:
  112. // 年
  113. expire = t.AddDate(1, 0, 0)
  114. ord.ExpireAt = expire
  115. case 4:
  116. expire = t
  117. // 永久(设置为与创建时间相同)
  118. ord.ExpireAt = t
  119. }
  120. if _, err := db.UserLevelOrdUpdateOne(eg, ord); err != nil {
  121. return false, 0
  122. }
  123. }
  124. user.Level = zhios_condition_statistics_utils.StrToInt(DataDetail.AgentType)
  125. user.LevelArriveAt = t
  126. if user.FirstArriveAt.IsZero() {
  127. user.FirstArriveAt = t
  128. }
  129. if payOrdId > 0 {
  130. user.LevelExpireAt = expire
  131. } else {
  132. if level.LevelDate == 0 { // 永久
  133. user.LevelExpireAt = t
  134. } else {
  135. user.LevelExpireAt = t.AddDate(0, level.LevelDate, 0)
  136. }
  137. }
  138. //用户等级修改
  139. // 更新user level 和 过期时间
  140. if _, err := db.UserUpdate(eg, user.Uid, user, "level,level_expire_at,level_arrive_at,first_arrive_at"); err != nil {
  141. return false, 0
  142. }
  143. //升级奖励定制
  144. UpgradeReward(eg, user, zhios_condition_statistics_utils.Int64ToStr(payOrdId), amount)
  145. eg.Where("uid=?", user.Uid).Cols("date").Update(&model.OneCirclesUserLvTime{Date: time.Now()})
  146. AutoAudit = 1
  147. var task model.UserLevelUpgradeTask
  148. eg.Where("scheme_id=? and task_type=22", DataDetail.AgentType).Get(&task)
  149. if task.Id > 0 {
  150. eg.Where("uid=?", user.Uid).Cols("is_not_down").Update(&model.User{IsNotDown: 0})
  151. } else {
  152. eg.Where("uid=?", user.Uid).Cols("is_not_down").Update(&model.User{IsNotDown: 1})
  153. }
  154. }
  155. }
  156. return result, AutoAudit
  157. }
  158. func UpgradeReward(eg *xorm.Engine, user *model.User, oid, amount string) {
  159. buyCouponLvReward, _ := db.SysCfgGetOne(eg, "buy_coupon_lv_reward")
  160. if buyCouponLvReward == nil {
  161. return
  162. }
  163. var args = make([]md.BuyCouponLvRewardList, 0)
  164. json.Unmarshal([]byte(buyCouponLvReward.Val), &args)
  165. for _, v := range args {
  166. if zhios_condition_statistics_utils.StrToInt(v.Id) != user.Level || len(v.Reward) == 0 {
  167. continue
  168. }
  169. for _, v1 := range v.Reward {
  170. if zhios_condition_statistics_utils.StrToFloat64(v1.Amount) <= 0 {
  171. continue
  172. }
  173. if v1.Id == "-1" { //优惠券额度
  174. svc.AddCouponRecord(eg, user, "ordinary", v1.Amount)
  175. }
  176. if zhios_condition_statistics_utils.StrToInt(v1.Id) > 0 {
  177. svc.AddCoin(eg, zhios_condition_statistics_utils.StrToFloat64(v1.Amount), "升级赠送", oid, 1, 188, user.Uid, zhios_condition_statistics_utils.StrToInt(v1.Id), amount)
  178. }
  179. }
  180. }
  181. }
  182. // IsCompleteSchemeTask 根据传入的 level 判断是否可以升级
  183. func IsCompleteSchemeTask(params map[string]string, blockStarChain string, engine *xorm.Engine, user *model.User, level, IsChangeTime, dbName string) (bool, bool, int64) {
  184. uid := zhios_condition_statistics_utils.IntToStr(user.Uid)
  185. userLevel, err := db.UserLevelByID(engine, user.Level)
  186. if err != nil {
  187. return false, false, 0
  188. }
  189. becomeLevel, err := db.UserLevelByID(engine, level)
  190. if err != nil {
  191. return false, false, 0
  192. }
  193. if userLevel == nil {
  194. if level == "" {
  195. level = "1"
  196. }
  197. } else {
  198. if becomeLevel.LevelWeight <= userLevel.LevelWeight && IsChangeTime != "1" {
  199. return false, false, 0
  200. }
  201. }
  202. //获取用户等级方案内容
  203. schemeTasks, err := db.BatchSelectUserLevelUpgradeTasks(engine, map[string]interface{}{
  204. "key": "scheme_id",
  205. "value": becomeLevel.Id,
  206. })
  207. if err != nil {
  208. return false, false, 0
  209. }
  210. return CheckSchemeTasksComplete(params, blockStarChain, engine, schemeTasks, uid, becomeLevel, level, "", dbName)
  211. }
  212. func CheckSchemeTasksComplete(params map[string]string, blockStarChain string, engine *xorm.Engine, tasks *[]model.UserLevelUpgradeTask, uid interface{}, scheme *model.UserLevel, level string, regionalId, dbName string) (bool, bool, int64) {
  213. //分离出 必做/选做 途径(任务组) && 分离出 必做/选做
  214. var tasksGroup []map[string]interface{}
  215. mustTasks := make(map[string][]interface{})
  216. selectTasks := make(map[string][]interface{})
  217. var (
  218. hasLevelPay = false
  219. LevelPayOrdId int64
  220. )
  221. allLvMap := db.UserLevelByAllMap(engine)
  222. for _, item := range *tasks {
  223. var temp = map[string]interface{}{}
  224. temp["id"] = item.Id
  225. temp["pid"] = item.Pid
  226. temp["schemeId"] = item.SchemeId
  227. temp["isMustTask"] = item.IsMustTask
  228. temp["taskType"] = item.TaskType
  229. temp["taskTypeLevelId"] = item.TaskTypeLevelId
  230. temp["withinDays"] = item.WithinDays
  231. temp["finishCount"] = item.FinishCount
  232. temp["payLevels"] = item.PayLevels
  233. temp["finish_task_num"] = item.FinishTaskNum
  234. if item.Pid == 0 && item.IsMustTask == 1 {
  235. temp["is_must"] = "1"
  236. tasksGroup = append(tasksGroup, temp)
  237. }
  238. if item.Pid == 0 && item.IsMustTask != 1 {
  239. temp["is_must"] = "0"
  240. tasksGroup = append(tasksGroup, temp)
  241. }
  242. name := GetTaskName(item.TaskType)
  243. finish, hasPay, payOrdId := GetFinishCount(params, blockStarChain, engine, uid, &item, level, regionalId, allLvMap, dbName)
  244. total := "" // 总共需完成的数
  245. if item.TaskType == 6 {
  246. // 当是付费条件是否,total的指标只能是1
  247. total = "1"
  248. hasLevelPay = hasPay
  249. LevelPayOrdId = payOrdId
  250. } else if item.TaskType == 26 {
  251. total = "1"
  252. } else {
  253. total = item.FinishCount
  254. }
  255. if item.TaskType == 19 {
  256. total = zhios_condition_statistics_utils.IntToStr(zhios_condition_statistics_utils.StrToInt(total) + 1)
  257. }
  258. temp["name"] = name
  259. temp["total"] = total //需完成数
  260. temp["finish"] = finish //已完成数
  261. //fmt.Println("finish:::::::::::::", finish)
  262. //fmt.Println("total:::::::::::::", total)
  263. if zhios_condition_statistics_utils.AnyToFloat64(finish) >= zhios_condition_statistics_utils.AnyToFloat64(total) {
  264. temp["result"] = "1"
  265. } else {
  266. temp["result"] = "0"
  267. }
  268. if item.Pid != 0 && item.IsMustTask == 1 {
  269. mustTasks[zhios_condition_statistics_utils.AnyToString(item.Pid)] = append(mustTasks[zhios_condition_statistics_utils.AnyToString(item.Pid)], temp)
  270. }
  271. if item.Pid != 0 && item.IsMustTask == 0 {
  272. selectTasks[zhios_condition_statistics_utils.AnyToString(item.Pid)] = append(selectTasks[zhios_condition_statistics_utils.AnyToString(item.Pid)], temp)
  273. }
  274. }
  275. alreadyCompleteTasksGroup := 0 // 完成“选做途径”数量
  276. for _, v := range tasksGroup {
  277. fmt.Println(">>>>>>>>>>>>>>>>>>>>", v)
  278. if v["finish_task_num"] == nil {
  279. v["finishCount"] = 0
  280. }
  281. //处理必做途径
  282. if zhios_condition_statistics_utils.AnyToString(v["isMustTask"]) == "1" {
  283. if mustTasks[zhios_condition_statistics_utils.AnyToString(v["id"])] != nil {
  284. needFinishTaskNum := v["finish_task_num"] // 需完成选做任务数
  285. alreadyFinishTaskNum := 0 // 已完成选做任务数
  286. for _, vv := range mustTasks[zhios_condition_statistics_utils.AnyToString(v["id"])] {
  287. tmp := vv.(map[string]interface{})
  288. // 必做任务 且 未完成
  289. if tmp["isMustTask"] == 1 && tmp["result"] != "1" {
  290. return false, hasLevelPay, LevelPayOrdId
  291. }
  292. // 非必做任务 且 已完成
  293. if tmp["isMustTask"] != 1 && tmp["result"] == "1" {
  294. alreadyFinishTaskNum++
  295. }
  296. }
  297. // 需完成选做任务数 大于 已完成选做任务数
  298. if zhios_condition_statistics_utils.AnyToInt64(needFinishTaskNum) > zhios_condition_statistics_utils.AnyToInt64(alreadyFinishTaskNum) {
  299. return false, hasLevelPay, LevelPayOrdId
  300. }
  301. }
  302. }
  303. //处理选做途径
  304. if selectTasks[zhios_condition_statistics_utils.AnyToString(v["id"])] != nil {
  305. needFinishTaskNum := v["finish_task_num"] // 需完成选做任务数
  306. alreadyFinishTaskNum := 0 // 已完成选做任务数
  307. alreadyFinishMustTask := true // 是否已完成必做任务
  308. for _, vv := range selectTasks[zhios_condition_statistics_utils.AnyToString(v["id"])] {
  309. tmp := vv.(map[string]interface{})
  310. // 非必做任务 且 已完成
  311. if tmp["isMustTask"] != "1" && tmp["result"] == "1" {
  312. alreadyFinishTaskNum++
  313. }
  314. // 必做任务 且 未完成
  315. if tmp["isMustTask"] == "1" && tmp["result"] != "1" {
  316. alreadyFinishMustTask = false
  317. }
  318. }
  319. // 已完成必做任务 且 需完成选做任务数 小于等于 已完成选做任务数
  320. if alreadyFinishMustTask && zhios_condition_statistics_utils.AnyToInt64(needFinishTaskNum) <= zhios_condition_statistics_utils.AnyToInt64(alreadyFinishTaskNum) {
  321. alreadyCompleteTasksGroup++
  322. }
  323. }
  324. }
  325. //方案中设定的 需完成“选做途径”数 与 实际完成“选做途径”数 比较
  326. if scheme.ChoosableNum > alreadyCompleteTasksGroup {
  327. return false, hasLevelPay, LevelPayOrdId
  328. }
  329. return true, hasLevelPay, LevelPayOrdId
  330. }
  331. // GetTaskName is 获取任务名
  332. func GetTaskName(id int) string {
  333. switch id {
  334. case 1:
  335. return "累计自购订单总数"
  336. case 2:
  337. return "累计到账佣金"
  338. case 3:
  339. return "累计直推粉丝数量"
  340. case 4:
  341. return "累计团队有效直推人数"
  342. case 5:
  343. return "累计团队符合相应等级的人数"
  344. case 11:
  345. return "累计直推符合相应等级的人数"
  346. case 6:
  347. return "月付价格"
  348. case 7:
  349. return "季付价格"
  350. case 8:
  351. return "年付价格"
  352. case 9:
  353. return "永久价格"
  354. case 10:
  355. return "累计自购消费金额"
  356. case 12:
  357. return "累计团队消费金额"
  358. case 13:
  359. return "累计小市场团队符合等级人数"
  360. case 15:
  361. return "直推前N个店铺营业额"
  362. case 17:
  363. return "团队N条线中各有N个相应等级用户"
  364. case 18:
  365. return "小区累计自营消费金额"
  366. case 20:
  367. return "累计收益(结算)"
  368. case 22:
  369. return "连续活跃"
  370. default:
  371. return "无效名称"
  372. }
  373. }
  374. //
  375. // GetFinishCount is 计算规定时间内完成的指标的数量
  376. func GetFinishCount(params map[string]string, blockStarChain string, engine *xorm.Engine, uid interface{}, task *model.UserLevelUpgradeTask, level string, regionalId string, allLvMap map[int]*model.UserLevel, dbName string) (string, bool, int64) {
  377. t := time.Now()
  378. hasPay := false
  379. var payOrdId int64
  380. switch task.TaskType {
  381. case 26:
  382. userLevel, _ := db.UserLevelByID(engine, task.TaskTypeLevelId)
  383. user, _ := db2.UserFindByID(engine, uid)
  384. count := "0"
  385. if user != nil && userLevel != nil {
  386. userLevel1, _ := db.UserLevelByID(engine, user.Level)
  387. if userLevel1 != nil && userLevel1.LevelWeight >= userLevel.LevelWeight {
  388. count = "1"
  389. }
  390. }
  391. return count, hasPay, payOrdId
  392. case 20:
  393. var money float64 = 0
  394. shownewFinTotal, _ := db.SysCfgGetOne(engine, "shownew_fin_total2")
  395. if shownewFinTotal != nil && shownewFinTotal.Val == "1" {
  396. var userStatistics model.UserStatistics
  397. engine.Where("uid=?", uid).Get(&userStatistics)
  398. money = zhios_condition_statistics_utils.StrToFloat64(userStatistics.ImportFinTotal) + zhios_condition_statistics_utils.StrToFloat64(userStatistics.FinTotal)
  399. } else {
  400. sumWhere := engine.Where("type=0 and uid=?", uid)
  401. mallSumWhere := engine.Where("uid=? AND type=? and ord_title=?", uid, 1, "订单退款")
  402. deSum2Where := engine.Where("uid=? AND type=? and ord_type=?", uid, 0, "withdraw")
  403. deSum3Where := engine.Where("uid=? AND type=? and ord_title like ?", uid, 1, "%扣除%")
  404. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location())
  405. etime := t
  406. if task.WithinDays > 0 {
  407. sqlStr4 := fmt.Sprintf(" %s >'%s' AND %s < '%s'", "create_at", stime.Format("2006-01-02 15:04:05"), "create_at", etime.Format("2006-01-02 15:04:05"))
  408. sumWhere = sumWhere.And(sqlStr4)
  409. mallSumWhere = mallSumWhere.And(sqlStr4)
  410. deSum2Where = deSum2Where.And(sqlStr4)
  411. deSum3Where = deSum3Where.And(sqlStr4)
  412. }
  413. sum, _ := sumWhere.Sum(&model.FinUserFlow{}, "amount")
  414. mallSum, _ := mallSumWhere.Sum(&model.FinUserFlow{}, "amount")
  415. deSum2, _ := deSum2Where.Sum(&model.FinUserFlow{}, "amount")
  416. deSum3, _ := deSum3Where.Sum(&model.FinUserFlow{}, "amount")
  417. dsCheck, _ := db.SysCfgGetOne(engine, "ds_check")
  418. money = sum - deSum2 - deSum3 + mallSum
  419. if dsCheck != nil && dsCheck.Val == "1" {
  420. sess := engine.Where("uid=? ", uid).In("state", []string{"1", "2"})
  421. where1 := ""
  422. if task.WithinDays > 0 {
  423. sqlStr4 := fmt.Sprintf(" %s >'%s' AND %s < '%s'", "create_at", stime.Format("2006-01-02 15:04:05"), "create_at", etime.Format("2006-01-02 15:04:05"))
  424. where1 = fmt.Sprintf("AND %s >'%d' AND %s < '%d'", "ol.create_at", stime.Unix(), "ol.create_at", etime.Unix())
  425. sess = sess.And(sqlStr4)
  426. }
  427. withdrawingSuccess, _ := sess.Sum(&model.FinWithdrawApply{}, "amount")
  428. sql := "SELECT cast(SUM(LEFT(olr.amount,LENGTH(olr.amount)-2)) as decimal(50,4)) AS amount FROM ord_list_relate olr JOIN ord_list ol ON olr.oid = ol.ord_id WHERE olr.level=0 and olr.uid = " + zhios_condition_statistics_utils.AnyToString(uid) + " " + where1 + " AND ol.state IN (0,1,2,3) and ol.is_transfer=1;"
  429. nativeString, _ := db.QueryNativeString(engine, sql)
  430. money = withdrawingSuccess
  431. for _, v := range nativeString {
  432. money += zhios_condition_statistics_utils.StrToFloat64(v["amount"])
  433. }
  434. }
  435. }
  436. return zhios_condition_statistics_utils.Float64ToStr(money), hasPay, payOrdId
  437. case 22:
  438. lvTime := db.GetOneCirclesUserLvTime(engine, uid)
  439. stime := time.Date(t.Year(), t.Month(), t.Day()-1, 0, 0, 0, 0, t.Location()).Format("2006-01-02")
  440. if lvTime != nil && lvTime.Date.IsZero() == false {
  441. stime = lvTime.Date.Format("2006-01-02")
  442. }
  443. etime := t.Format("2006-01-02")
  444. if params["is_view"] == "1" {
  445. if lvTime == nil || (lvTime != nil && lvTime.Date.IsZero()) {
  446. stime = t.Format("2006-01-02")
  447. }
  448. etime = time.Date(t.Year(), t.Month(), t.Day()+1, 0, 0, 0, 0, t.Location()).Format("2006-01-02")
  449. }
  450. _, days, activity := one_circles.CalcUserContinuousDailyActivityDays(engine, dbName, int(zhios_condition_statistics_utils.AnyToInt64(uid)), stime, etime)
  451. if activity == false {
  452. days = 0
  453. }
  454. return zhios_condition_statistics_utils.IntToStr(days), hasPay, payOrdId
  455. case 23:
  456. // 累计新人免单自购数
  457. total, err := db.OrderListCountByUIDByOrderTypeByTimeNew(engine, uid, "free", task)
  458. if err != nil {
  459. return "", hasPay, payOrdId
  460. }
  461. return zhios_condition_statistics_utils.Int64ToStr(total), hasPay, payOrdId
  462. case 24:
  463. // 累计自购消费金额
  464. var total float64 = 0
  465. var err error
  466. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "1"}) {
  467. total, err = db.OrderListSumByUIDByOrderTypeByTimeNew(engine, uid, "free", task)
  468. if err != nil {
  469. return "", hasPay, payOrdId
  470. }
  471. }
  472. return zhios_condition_statistics_utils.Float64ToStr(zhios_condition_statistics_utils.FloatFormat(total, 2)), hasPay, payOrdId
  473. case 1:
  474. // 累计自购数
  475. total, err := db.OrderListCountByUIDByOrderTypeByTimeNew(engine, uid, "", task)
  476. if err != nil {
  477. return "", hasPay, payOrdId
  478. }
  479. mallTotal, err := db.MallOrdWithCountNew(engine, uid, task)
  480. if err != nil {
  481. return zhios_condition_statistics_utils.Int64ToStr(total), hasPay, payOrdId
  482. }
  483. total += mallTotal
  484. o2oTotal, err := db.O2oOrdWithCountNew(engine, uid, task)
  485. if err != nil {
  486. return zhios_condition_statistics_utils.Int64ToStr(total), hasPay, payOrdId
  487. }
  488. total += o2oTotal
  489. b2cTotal, err := db.B2cOrdWithCountNew(engine, uid, task)
  490. if err != nil {
  491. return zhios_condition_statistics_utils.Int64ToStr(total), hasPay, payOrdId
  492. }
  493. total += b2cTotal
  494. return zhios_condition_statistics_utils.Int64ToStr(total), hasPay, payOrdId
  495. case 10:
  496. // 累计自购消费金额
  497. var total float64 = 0
  498. var err error
  499. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "1"}) {
  500. total, err = db.OrderListSumByUIDByOrderTypeByTimeNew(engine, uid, "", task)
  501. if err != nil {
  502. return "", hasPay, payOrdId
  503. }
  504. }
  505. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "2", "8", "9"}) {
  506. orderType := 0
  507. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"8", "9"}) {
  508. orderType = task.TaskTypePvd
  509. }
  510. secondTotal, err := db.MallOrdWithSumNew(engine, uid, orderType, task)
  511. if err != nil {
  512. return zhios_condition_statistics_utils.Float64ToStr(total), hasPay, payOrdId
  513. }
  514. total += secondTotal
  515. }
  516. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "3"}) {
  517. secondTotal, err := db.O2oOrdWithSumNew(engine, uid, task)
  518. if err != nil {
  519. return zhios_condition_statistics_utils.Float64ToStr(total), hasPay, payOrdId
  520. }
  521. total += secondTotal
  522. }
  523. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "4"}) {
  524. secondTotal, err := db.B2cOrdWithSumNew(engine, uid, task)
  525. if err != nil {
  526. return zhios_condition_statistics_utils.Float64ToStr(total), hasPay, payOrdId
  527. }
  528. total += secondTotal
  529. }
  530. return zhios_condition_statistics_utils.Float64ToStr(zhios_condition_statistics_utils.FloatFormat(total, 2)), hasPay, payOrdId
  531. case 2, 25:
  532. // 累计自购佣金
  533. sum, err := db.OrderRelateListByTimeByStateNew(engine, uid, task)
  534. if err != nil {
  535. return "", hasPay, payOrdId
  536. }
  537. mallSum, err := db.MallOrderRelateListByTimeByStateNew(engine, uid, task)
  538. if err != nil {
  539. return zhios_condition_statistics_utils.Float64ToStr(sum), hasPay, payOrdId
  540. }
  541. sum += mallSum
  542. o2oSum, err := db.O2oOrderRelateListByTimeByStateNew(engine, uid, task)
  543. if err != nil {
  544. return zhios_condition_statistics_utils.Float64ToStr(sum), hasPay, payOrdId
  545. }
  546. sum += o2oSum
  547. b2cSum, err := db.B2cOrderRelateListByTimeByStateNew(engine, uid, task)
  548. if err != nil {
  549. return zhios_condition_statistics_utils.Float64ToStr(sum), hasPay, payOrdId
  550. }
  551. sum += b2cSum
  552. return zhios_condition_statistics_utils.Float64ToStr(sum), hasPay, payOrdId
  553. case 3:
  554. // 累计直推人数
  555. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-1-02 15:04:05")
  556. etime := t.Format("2006-1-02 15:04:05")
  557. sqlTpl := `SELECT count(*) as count
  558. FROM user_relate as up
  559. LEFT JOIN user as u ON u.uid=up.uid
  560. WHERE %s and up.level=1;`
  561. var condStr string
  562. if task.WithinDays <= 0 {
  563. condStr = fmt.Sprintf("up.parent_uid=%s ", zhios_condition_statistics_utils.AnyToString(uid))
  564. } else {
  565. condStr = fmt.Sprintf("up.parent_uid=%s AND u.create_at>'%s' AND u.create_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), stime, etime)
  566. }
  567. sql := fmt.Sprintf(sqlTpl, condStr)
  568. results, err := db.QueryNativeString(engine, sql)
  569. if err != nil {
  570. return "", hasPay, payOrdId
  571. }
  572. count := ""
  573. if len(results) > 0 {
  574. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  575. }
  576. return count, hasPay, payOrdId
  577. case 4:
  578. // 累计团队有效直推人数
  579. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-1-02 15:04:05")
  580. etime := t.Format("2006-1-02 15:04:05")
  581. sqlTpl := `SELECT count(*) as count
  582. FROM user_relate as up
  583. LEFT JOIN user as u ON u.uid=up.uid
  584. LEFT JOIN user_profile as ups ON up.uid=ups.uid
  585. WHERE %s and up.level=1;`
  586. var condStr string
  587. if task.WithinDays <= 0 {
  588. condStr = fmt.Sprintf("up.parent_uid=%s and ups.is_verify=%d", zhios_condition_statistics_utils.AnyToString(uid), 1)
  589. } else {
  590. condStr = fmt.Sprintf("up.parent_uid=%s AND u.create_at>'%s' AND u.create_at<'%s' and ups.is_verify=%d", zhios_condition_statistics_utils.AnyToString(uid), stime, etime, 1)
  591. }
  592. sql := fmt.Sprintf(sqlTpl, condStr)
  593. results, err := db.QueryNativeString(engine, sql)
  594. if err != nil {
  595. return "", hasPay, payOrdId
  596. }
  597. count := ""
  598. if len(results) > 0 {
  599. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  600. }
  601. return count, hasPay, payOrdId
  602. case 5:
  603. // 累计团队符合相应等级的人数
  604. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-1-02 15:04:05")
  605. etime := t.Format("2006-1-02 15:04:05")
  606. sqlTpl := `SELECT count(*) as count
  607. FROM user_relate as ur
  608. LEFT JOIN user as u ON u.uid=ur.uid
  609. LEFT JOIN user_level ul on u.level=ul.id
  610. WHERE %s;`
  611. levelList := allLvMap[task.TaskTypeLevelId]
  612. levelWeight := 0
  613. if levelList != nil {
  614. levelWeight = levelList.LevelWeight
  615. }
  616. var condStr string
  617. if task.WithinDays <= 0 {
  618. condStr = fmt.Sprintf("ur.parent_uid=%s AND ul.level_weight>='%s' ", zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight))
  619. if blockStarChain == "1" {
  620. condStr = fmt.Sprintf("ur.parent_uid=%s AND ul.level_weight>='%s' ", zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight))
  621. }
  622. } else {
  623. condStr = fmt.Sprintf("ur.parent_uid=%s AND ul.level_weight>='%s' AND u.create_at>'%s' AND u.create_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), stime, etime)
  624. if blockStarChain == "1" {
  625. condStr = fmt.Sprintf("ur.parent_uid=%s AND ul.level_weight>='%s' AND u.level_arrive_at>'%s' AND u.level_arrive_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), stime, etime)
  626. }
  627. }
  628. sql := fmt.Sprintf(sqlTpl, condStr)
  629. fmt.Println(sql)
  630. results, err := db.QueryNativeString(engine, sql)
  631. if err != nil {
  632. return "", hasPay, payOrdId
  633. }
  634. count := ""
  635. if len(results) > 0 {
  636. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  637. }
  638. return count, hasPay, payOrdId
  639. case 11:
  640. // 累计直推符合相应等级的人数
  641. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-1-02 15:04:05")
  642. etime := t.Format("2006-1-02 15:04:05")
  643. sqlTpl := `SELECT count(*) as count
  644. FROM user_relate as ur
  645. LEFT JOIN user as u ON u.uid=ur.uid
  646. LEFT JOIN user_level ul on u.level=ul.id
  647. WHERE %s;`
  648. levelList := allLvMap[task.TaskTypeLevelId]
  649. levelWeight := 0
  650. if levelList != nil {
  651. levelWeight = levelList.LevelWeight
  652. }
  653. var condStr string
  654. if task.WithinDays <= 0 {
  655. condStr = fmt.Sprintf("ur.parent_uid=%s AND ur.level=%s AND ul.level_weight>='%s' ", zhios_condition_statistics_utils.AnyToString(uid), "1", zhios_condition_statistics_utils.IntToStr(levelWeight))
  656. if blockStarChain == "1" {
  657. condStr = fmt.Sprintf("ur.parent_uid=%s AND ur.level=%s AND ul.level_weight>='%s' ", zhios_condition_statistics_utils.AnyToString(uid), "1", zhios_condition_statistics_utils.IntToStr(levelWeight))
  658. }
  659. } else {
  660. condStr = fmt.Sprintf("ur.parent_uid=%s AND ur.level=%s AND ul.level_weight>='%s' AND u.create_at>'%s' AND u.create_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), "1", zhios_condition_statistics_utils.IntToStr(levelWeight), stime, etime)
  661. if blockStarChain == "1" {
  662. condStr = fmt.Sprintf("ur.parent_uid=%s AND ur.level=%s AND ul.level_weight>='%s' AND u.level_arrive_at>'%s' AND u.level_arrive_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), "1", zhios_condition_statistics_utils.IntToStr(levelWeight), stime, etime)
  663. }
  664. }
  665. sql := fmt.Sprintf(sqlTpl, condStr)
  666. fmt.Println(sql)
  667. results, err := db.QueryNativeString(engine, sql)
  668. if err != nil {
  669. return "", hasPay, payOrdId
  670. }
  671. count := ""
  672. if len(results) > 0 {
  673. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  674. }
  675. return count, hasPay, payOrdId
  676. case 21:
  677. // 累计所有下级
  678. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-1-02 15:04:05")
  679. etime := t.Format("2006-1-02 15:04:05")
  680. sqlTpl := `SELECT count(*) as count
  681. FROM user_relate as ur
  682. LEFT JOIN user as u ON u.uid=ur.uid
  683. WHERE %s;`
  684. var condStr string
  685. if task.WithinDays <= 0 {
  686. condStr = fmt.Sprintf("ur.parent_uid=%s ", zhios_condition_statistics_utils.AnyToString(uid))
  687. } else {
  688. condStr = fmt.Sprintf("ur.parent_uid=%s AND u.create_at>'%s' AND u.create_at<'%s'", zhios_condition_statistics_utils.AnyToString(uid), stime, etime)
  689. }
  690. sql := fmt.Sprintf(sqlTpl, condStr)
  691. fmt.Println(sql)
  692. results, err := db.QueryNativeString(engine, sql)
  693. if err != nil {
  694. return "", hasPay, payOrdId
  695. }
  696. count := ""
  697. if len(results) > 0 {
  698. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  699. }
  700. return count, hasPay, payOrdId
  701. case 12: //累计团队消费金额
  702. var total float64 = 0
  703. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "2", "8", "9"}) {
  704. secondTotal, _ := db.MallOrderTeamRelateListByTimeByStateNew(engine, uid, task)
  705. total += secondTotal
  706. }
  707. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "3"}) {
  708. secondTotal, _ := db.O2oOrderTeamRelateListByTimeByStateNew(engine, uid, task)
  709. total += secondTotal
  710. }
  711. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "4"}) {
  712. secondTotal, _ := db.B2cOrderTeamRelateListByTimeByStateNew(engine, uid, task)
  713. total += secondTotal
  714. }
  715. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"0", "1"}) {
  716. secondTotal, _ := db.OrderTeamRelateListByTimeByStateNew(engine, uid, task)
  717. total += secondTotal
  718. }
  719. return zhios_condition_statistics_utils.Float64ToStr(zhios_condition_statistics_utils.FloatFormat(total, 2)), hasPay, payOrdId
  720. case 13:
  721. //小市场团队符合条件人数
  722. smallUid := TotalSmallTeam(engine, zhios_condition_statistics_utils.AnyToString(uid))
  723. sqlTpl := `SELECT count(*) as count
  724. FROM user_relate as ur
  725. LEFT JOIN user as u ON u.uid=ur.uid
  726. WHERE %s;`
  727. condStr := fmt.Sprintf("ur.parent_uid=%s AND u.level='%s' ", smallUid, zhios_condition_statistics_utils.IntToStr(task.TaskTypeLevelId))
  728. sql := fmt.Sprintf(sqlTpl, condStr)
  729. results, err := db.QueryNativeString(engine, sql)
  730. if err != nil {
  731. return "", hasPay, payOrdId
  732. }
  733. count := ""
  734. if len(results) > 0 {
  735. count = zhios_condition_statistics_utils.AnyToString(results[0]["count"])
  736. }
  737. return count, hasPay, payOrdId
  738. case 15:
  739. if task.TaskTypeCount == 0 {
  740. return "0", hasPay, payOrdId
  741. }
  742. //stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05")
  743. //etime := t.Format("2006-01-02 15:04:05")
  744. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"1"}) { //o2o
  745. sqlTpl := `SELECT os.id
  746. FROM user_relate ur
  747. LEFT JOIN o2o_merchant om ON ur.uid = om.uid
  748. LEFT JOIN o2o_store os on om.id=os.store_manager
  749. WHERE ur.parent_uid = ?
  750. AND ur.level =1 ORDER BY ur.invite_time asc LIMIT 0,?;
  751. `
  752. var ids = make([]string, 0)
  753. result, err := db.QueryNativeString(engine, sqlTpl, uid, task.TaskTypeCount)
  754. if err == nil {
  755. for _, v := range result {
  756. ids = append(ids, v["id"])
  757. }
  758. }
  759. if len(ids) > 0 {
  760. sum, _ := engine.In("belong_store_id", ids).In("state", []string{"3", "4"}).Sum(&model.O2oOrd{}, "cost_price")
  761. sum1, _ := engine.In("belong_store_id", ids).Sum(&model.O2oPayToMerchant{}, "actual_pay_amount")
  762. return zhios_condition_statistics_utils.Float64ToStrByPrec(sum+sum1, 4), hasPay, payOrdId
  763. }
  764. }
  765. if zhios_condition_statistics_utils.InArr(zhios_condition_statistics_utils.IntToStr(task.TaskTypePvd), []string{"2"}) { //b2c
  766. sqlTpl := `SELECT os.id
  767. FROM user_relate ur
  768. LEFT JOIN o2o_merchant om ON ur.uid = om.uid
  769. LEFT JOIN b2c_ord os on om.id=os.store_manager
  770. WHERE ur.parent_uid = ?
  771. AND ur.level =1 ORDER BY ur.invite_time asc LIMIT 0,?;
  772. `
  773. var ids = make([]string, 0)
  774. result, err := db.QueryNativeString(engine, sqlTpl, uid, task.TaskTypeCount)
  775. if err == nil {
  776. for _, v := range result {
  777. ids = append(ids, v["id"])
  778. }
  779. }
  780. if len(ids) > 0 {
  781. sum, _ := engine.In("belong_store_id", ids).In("state", []string{"4"}).Sum(&model.B2cOrd{}, "cost_price")
  782. return zhios_condition_statistics_utils.Float64ToStrByPrec(sum, 4), hasPay, payOrdId
  783. }
  784. }
  785. return "0", hasPay, payOrdId
  786. case 6:
  787. hasPay = true
  788. //TODO::根据 RegionalAgentSchemeTask 表中的 task_id 判断是否完成付费任务
  789. regionalAgentUserOrd, err := db.UserLevelOrderByTaskId(engine, zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(task.Id))
  790. if err != nil {
  791. return "", hasPay, payOrdId
  792. }
  793. if regionalAgentUserOrd != nil {
  794. if regionalAgentUserOrd.ExpireAt.Unix() < t.Unix() && regionalAgentUserOrd.CreateAt.Format("2006-01-02 15:04:05") != regionalAgentUserOrd.ExpireAt.Format("2006-01-02 15:04:05") && regionalAgentUserOrd.DateType != 4 {
  795. return "0", hasPay, payOrdId
  796. }
  797. payOrdId = regionalAgentUserOrd.Id
  798. return "1", hasPay, payOrdId
  799. } else {
  800. return "0", hasPay, payOrdId
  801. }
  802. return "1", hasPay, payOrdId
  803. case 17:
  804. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05")
  805. etime := t.Format("2006-01-02 15:04:05")
  806. // 团队N条线中各有N个相应等级用户
  807. sqlTpl := `select ur.parent_uid,COUNT(*) as count FROM user_relate ur
  808. LEFT JOIN user u on u.uid=ur.uid
  809. LEFT JOIN user_level ul on u.level=ul.id
  810. where ur.parent_uid in(SELECT uid FROM user_relate WHERE parent_uid=%s and level=1 ) and ul.level_weight>=%s %s GROUP BY ur.parent_uid;`
  811. levelList := allLvMap[task.TaskTypeLevelId]
  812. levelWeight := 0
  813. if levelList != nil {
  814. levelWeight = levelList.LevelWeight
  815. }
  816. sql := ""
  817. if task.WithinDays <= 0 {
  818. sql = fmt.Sprintf(sqlTpl, zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), "")
  819. } else {
  820. sql = fmt.Sprintf(sqlTpl, zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), "and u.level_arrive_at>='"+stime+"' and u.level_arrive_at<='"+etime+"'")
  821. }
  822. results, err := db.QueryNativeString(engine, sql)
  823. if err != nil {
  824. return "", hasPay, payOrdId
  825. }
  826. sqlTpl1 := `select ur.uid FROM user_relate ur
  827. LEFT JOIN user u on u.uid=ur.uid
  828. LEFT JOIN user_level ul on u.level=ul.id
  829. where ur.parent_uid=%s and ur.level=1 and ul.level_weight>=%s %s ;`
  830. sql1 := ""
  831. if task.WithinDays <= 0 {
  832. sql1 = fmt.Sprintf(sqlTpl1, zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), "")
  833. } else {
  834. sql1 = fmt.Sprintf(sqlTpl1, zhios_condition_statistics_utils.AnyToString(uid), zhios_condition_statistics_utils.IntToStr(levelWeight), "and u.level_arrive_at>='"+stime+"' and u.level_arrive_at<='"+etime+"'")
  835. }
  836. results1, err1 := db.QueryNativeString(engine, sql1)
  837. if err1 != nil {
  838. return "", hasPay, payOrdId
  839. }
  840. var firstList = make(map[string]string)
  841. if len(results1) > 0 {
  842. for _, v := range results1 {
  843. firstList[v["uid"]] = "1"
  844. }
  845. }
  846. if len(results) > 0 {
  847. for _, v := range results {
  848. firstList[v["parent_uid"]] = zhios_condition_statistics_utils.IntToStr(zhios_condition_statistics_utils.StrToInt(v["count"]) + zhios_condition_statistics_utils.StrToInt(firstList[v["parent_uid"]]))
  849. }
  850. }
  851. count := 0
  852. if len(firstList) > 0 {
  853. for _, v := range firstList {
  854. if zhios_condition_statistics_utils.StrToInt(v) >= task.TaskTypeSecondCount && task.TaskTypeSecondCount > 0 {
  855. count++
  856. }
  857. }
  858. }
  859. return zhios_condition_statistics_utils.IntToStr(count), hasPay, payOrdId
  860. case 18:
  861. stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()).Format("2006-01-02 15:04:05")
  862. etime := t.Format("2006-01-02 15:04:05")
  863. // 小区消费金额
  864. sqlTpl := `SELECT SUM(molr.goods_price) as price FROM mall_ord_list_relate molr
  865. LEFT JOIN mall_ord mo on mo.ord_id=molr.oid and mo.state in (%s)
  866. WHERE molr.uid in(SELECT uid FROM user_relate WHERE parent_uid=%s and level=1) %s GROUP BY molr.uid ;`
  867. state := "1,2,3"
  868. if task.TaskTypePvd == 1 {
  869. state = "2,3"
  870. }
  871. if task.TaskTypePvd == 2 {
  872. state = "3"
  873. }
  874. sql := ""
  875. if task.WithinDays <= 0 {
  876. sql = fmt.Sprintf(sqlTpl, state, zhios_condition_statistics_utils.AnyToString(uid), "")
  877. } else {
  878. sql = fmt.Sprintf(sqlTpl, state, zhios_condition_statistics_utils.AnyToString(uid), "and mo.create_time>='"+stime+"' and mo.create_time<='"+etime+"'")
  879. }
  880. results, err := db.QueryNativeString(engine, sql)
  881. if err != nil {
  882. return "", hasPay, payOrdId
  883. }
  884. var count float64 = 0
  885. if len(results) > 0 {
  886. var max float64 = 0
  887. for _, v := range results {
  888. if zhios_condition_statistics_utils.StrToFloat64(v["price"]) > max {
  889. max = zhios_condition_statistics_utils.StrToFloat64(v["price"])
  890. }
  891. count += zhios_condition_statistics_utils.StrToFloat64(v["price"])
  892. }
  893. count -= max
  894. }
  895. return zhios_condition_statistics_utils.Float64ToStrByPrec(count, 2), hasPay, payOrdId
  896. case 19:
  897. teamCountMinData, _ := db.SysCfgGetOne(engine, "team_count_min")
  898. teamCountMin := 15
  899. if teamCountMinData != nil {
  900. teamCountMin = zhios_condition_statistics_utils.StrToInt(teamCountMinData.Val)
  901. }
  902. teamtotal := db.GetUserTeamTotal(engine, zhios_condition_statistics_utils.AnyToString(uid))
  903. var count = 0
  904. if teamtotal != nil && teamtotal.FirstCount >= teamCountMin && teamtotal.SecondCount >= teamCountMin {
  905. count++
  906. }
  907. sql := `SELECT * FROM user_profile up
  908. LEFT JOIN user_team_total utt ON utt.uid=up.uid
  909. WHERE up.parent_uid=? and utt.first_count>=? and utt.second_count>=?
  910. `
  911. nativeString, _ := db.QueryNativeString(engine, sql, zhios_condition_statistics_utils.AnyToString(uid), teamCountMin, teamCountMin)
  912. if len(nativeString) > 0 {
  913. count += len(nativeString)
  914. }
  915. return zhios_condition_statistics_utils.IntToStr(count), hasPay, payOrdId
  916. default:
  917. return "", hasPay, payOrdId
  918. }
  919. }