蛋蛋星球-客户端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

hdl_user.go 17 KiB

1ヶ月前
1ヶ月前
3週間前
1ヶ月前
3週間前
3週間前
3週間前
1週間前
1週間前
3週間前
3週間前
1ヶ月前
3週間前
3週間前
1ヶ月前
1ヶ月前
1ヶ月前
3週間前
3週間前
3週間前
1週間前
1週間前
1週間前
1週間前
3週間前
3週間前
1週間前
3週間前
1週間前
3週間前
1週間前
3週間前
1週間前
3週間前
1週間前
3週間前
1週間前
1週間前
1週間前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. package hdl
  2. import (
  3. "applet/app/db"
  4. "applet/app/e"
  5. "applet/app/es/hdl"
  6. md2 "applet/app/es/md"
  7. "applet/app/lib/auth"
  8. "applet/app/md"
  9. "applet/app/svc"
  10. "applet/app/utils"
  11. "applet/app/utils/cache"
  12. "applet/app/utils/qrcode"
  13. "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
  14. "code.fnuoos.com/EggPlanet/egg_models.git/src/model"
  15. "code.fnuoos.com/EggPlanet/egg_system_rules.git/aliyun"
  16. "code.fnuoos.com/EggPlanet/egg_system_rules.git/baidu"
  17. md3 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md"
  18. md4 "code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md"
  19. es2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/es"
  20. "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
  21. "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit"
  22. "context"
  23. "encoding/json"
  24. "fmt"
  25. "github.com/gin-gonic/gin"
  26. "github.com/olivere/elastic/v7"
  27. "github.com/syyongx/php2go"
  28. "github.com/tidwall/gjson"
  29. "strings"
  30. "time"
  31. )
  32. // UserInfo
  33. // @Summary 用户信息
  34. // @Tags 用户信息
  35. // @Description 用户信息
  36. // @Accept json
  37. // @Produce json
  38. // @param Authorization header string true "验证参数Bearer和token空格拼接"
  39. // @Success 200 {object} md.UserInfoResp "具体数据"
  40. // @Failure 400 {object} md.Response "具体错误"
  41. // @Router /api/v1/userInfo [get]
  42. func UserInfo(c *gin.Context) {
  43. user := svc.GetUser(c)
  44. res := md.UserInfoResp{
  45. Id: utils.Int64ToStr(user.Id),
  46. Phone: user.Phone,
  47. Nickname: user.Phone,
  48. InviteCode: user.SystemInviteCode,
  49. IsBindExtend: "0",
  50. }
  51. if user.Avatar == "" {
  52. user.Avatar = svc.GetSysCfgStr("default_avatar")
  53. }
  54. if user.Avatar != "" {
  55. res.HeadImg = svc.GetOssUrl(user.Avatar)
  56. }
  57. if user.CustomInviteCode != "" {
  58. res.InviteCode = user.CustomInviteCode
  59. }
  60. if user.ParentUid > 0 {
  61. res.IsBindExtend = "1"
  62. }
  63. e.OutSuc(c, res, nil)
  64. return
  65. }
  66. // InviteCodeUserInfo
  67. // @Summary 邀请码获取用户信息
  68. // @Tags 登录注册
  69. // @Description 邀请码获取用户信息
  70. // @Accept json
  71. // @Produce json
  72. // @Param req body md.InviteCodeUserInfoReq true "注册参数"
  73. // @Success 200 {object} md.InviteCodeUserInfoResp "具体数据"
  74. // @Failure 400 {object} md.Response "具体错误"
  75. // @Router /api/v1/inviteCode/userInfo [post]
  76. func InviteCodeUserInfo(c *gin.Context) {
  77. var req md.InviteCodeUserInfoReq
  78. err := c.ShouldBindJSON(&req)
  79. if err != nil {
  80. err = svc.HandleValidateErr(err)
  81. err1 := err.(e.E)
  82. e.OutErr(c, err1.Code, err1.Error())
  83. return
  84. }
  85. if req.InviteCode == "" {
  86. e.OutErr(c, 400, e.NewErr(400, "邀请码不能为空"))
  87. return
  88. }
  89. userDb := implement.NewUserDb(db.Db)
  90. user, err := userDb.UserGetOneByParams(map[string]interface{}{
  91. "key": "system_invite_code",
  92. "value": req.InviteCode,
  93. })
  94. if user == nil {
  95. user, _ = userDb.UserGetOneByParams(map[string]interface{}{
  96. "key": "custom_invite_code",
  97. "value": req.InviteCode,
  98. })
  99. if user == nil {
  100. e.OutErr(c, 400, e.NewErr(400, "用户不存在"))
  101. return
  102. }
  103. }
  104. nickname := user.Nickname
  105. if nickname == "" {
  106. nickname = user.Phone
  107. }
  108. if php2go.IsNumeric(nickname) {
  109. nickname = utils.HideTrueName(user.Nickname)
  110. }
  111. user = svc.UserImg(user)
  112. res := md.InviteCodeUserInfoResp{
  113. Nickname: nickname,
  114. HeadImg: user.Avatar,
  115. }
  116. e.OutSuc(c, res, nil)
  117. return
  118. }
  119. // UserBindParent
  120. // @Summary 绑定上级-要登陆的
  121. // @Tags 登录注册
  122. // @Description 绑定上级
  123. // @Accept json
  124. // @Produce json
  125. // @Param req body md.InviteCodeUserInfoReq true "注册参数"
  126. // @Success 200 {string} "具体数据"
  127. // @Failure 400 {object} md.Response "具体错误"
  128. // @Router /api/v1/memberCenter/bindParent [post]
  129. func UserBindParent(c *gin.Context) {
  130. var req md.InviteCodeUserInfoReq
  131. err := c.ShouldBindJSON(&req)
  132. if err != nil {
  133. err = svc.HandleValidateErr(err)
  134. err1 := err.(e.E)
  135. e.OutErr(c, err1.Code, err1.Error())
  136. return
  137. }
  138. if req.InviteCode == "" {
  139. e.OutErr(c, 400, e.NewErr(400, "邀请码不能为空"))
  140. return
  141. }
  142. userDb := implement.NewUserDb(db.Db)
  143. user, err := userDb.UserGetOneByParams(map[string]interface{}{
  144. "key": "system_invite_code",
  145. "value": req.InviteCode,
  146. })
  147. if user == nil {
  148. user, _ = userDb.UserGetOneByParams(map[string]interface{}{
  149. "key": "custom_invite_code",
  150. "value": req.InviteCode,
  151. })
  152. if user == nil {
  153. e.OutErr(c, 400, e.NewErr(400, "用户不存在"))
  154. return
  155. }
  156. }
  157. ownUser := svc.GetUser(c)
  158. if ownUser.ParentUid > 0 {
  159. e.OutErr(c, 400, e.NewErr(400, "已有导师"))
  160. return
  161. }
  162. if user.Id == ownUser.Id {
  163. e.OutErr(c, 400, e.NewErr(400, "不能绑定自己"))
  164. return
  165. }
  166. ownUser.ParentUid = user.Id
  167. _, err = db.Db.Where("id=?", ownUser.Id).Cols("parent_uid").Update(ownUser)
  168. if err != nil {
  169. e.OutErr(c, 400, e.NewErr(400, "绑定失败,请重试"))
  170. return
  171. }
  172. initLV := 1
  173. ur := new(model.UserRelate)
  174. ur.ParentUid = user.Id
  175. ur.Uid = ownUser.Id
  176. ur.Level = initLV
  177. ur.InviteTime = ownUser.CreateAt
  178. userRelateDb := implement.NewUserRelateDb(db.Db)
  179. _, err = userRelateDb.UserRelateInsert(ur)
  180. if err != nil {
  181. e.OutErr(c, e.ERR_DB_ORM, err)
  182. return
  183. }
  184. // 插入多级关联
  185. go svc.RoutineMultiRelate(ur.ParentUid, ur.Uid, initLV)
  186. //TODO 绑定成功后 加群之类的怎么处理
  187. if ownUser.ParentUid > 0 {
  188. //TODO::推入mq异步处理
  189. ch, err := rabbit.Cfg.Pool.GetChannel()
  190. if err != nil {
  191. e.OutErr(c, e.ERR_INIT_RABBITMQ, err.Error())
  192. return
  193. }
  194. defer ch.Release()
  195. ch.Publish(md4.EggAppExchange, md4.AddPublicPlatoonUserRelationCommissionReq{RecommendUid: utils.Int64ToStr(ownUser.ParentUid), Uid: utils.Int64ToStr(ownUser.Id)}, md4.EggRoutKeyForAddPublicPlatoonUserRelationCommission)
  196. }
  197. e.OutSuc(c, "success", nil)
  198. return
  199. }
  200. // BindUserInfo
  201. // @Summary 绑定用户信息
  202. // @Tags 会员中心
  203. // @Description 绑定用户信息
  204. // @Accept json
  205. // @Produce json
  206. // @Param req body md.WechatAccountUserInfoReq true "注册参数"
  207. // @Success 200 {string} "具体数据"
  208. // @Failure 400 {object} md.Response "具体错误"
  209. // @Router /api/v1/memberCenter/bindUserInfo [post]
  210. func BindUserInfo(c *gin.Context) {
  211. var req md.WechatAccountUserInfoReq
  212. err := c.ShouldBindJSON(&req)
  213. if err != nil {
  214. err = svc.HandleValidateErr(err)
  215. err1 := err.(e.E)
  216. e.OutErr(c, err1.Code, err1.Error())
  217. return
  218. }
  219. if req.WechatAccount == "" {
  220. e.OutErr(c, 400, e.NewErr(400, "微信号不能为空"))
  221. return
  222. }
  223. ownUser := svc.GetUser(c)
  224. cols := ""
  225. if req.Nickname != "" {
  226. ownUser.Nickname = req.Nickname
  227. cols += ",nickname"
  228. }
  229. if req.HeadImg != "" {
  230. ownUser.Avatar = req.HeadImg
  231. cols += ",avatar"
  232. }
  233. if req.WechatAccount != "" {
  234. ownUser.WechatAccount = req.WechatAccount
  235. cols += ",wechat_account"
  236. }
  237. if cols == "" {
  238. e.OutErr(c, 400, e.NewErr(400, "修改失败"))
  239. return
  240. }
  241. _, err = db.Db.Where("id=?", ownUser.Id).Cols(cols[1:]).Update(ownUser)
  242. if err != nil {
  243. e.OutErr(c, 400, e.NewErr(400, "修改失败"))
  244. return
  245. }
  246. e.OutSuc(c, "success", nil)
  247. return
  248. }
  249. // UpdatePassword
  250. // @Summary 修改密码-不要原密码 换成验证码
  251. // @Tags 账号与安全
  252. // @Description 修改密码
  253. // @Accept json
  254. // @Produce json
  255. // @Param req body md.UpdatePasswordReq true "注册参数"
  256. // @Success 200 string "登录成功返回"
  257. // @Failure 400 {object} md.Response "具体错误"
  258. // @Router /api/v1/memberCenter/updatePassword [post]
  259. func UpdatePassword(c *gin.Context) {
  260. var req md.UpdatePasswordReq
  261. err := c.ShouldBindJSON(&req)
  262. if err != nil {
  263. err = svc.HandleValidateErr(err)
  264. err1 := err.(e.E)
  265. e.OutErr(c, err1.Code, err1.Error())
  266. return
  267. }
  268. user := svc.GetUser(c)
  269. data := svc.AliyunSmsBase(c, "")
  270. //校验短信
  271. err = aliyun.AliyunCheckSms(data["aliyun_sms_id"], data["aliyun_sms_secret"], user.Phone, req.Code)
  272. if err != nil {
  273. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  274. return
  275. }
  276. user.Password = utils.Md5(req.Password)
  277. db.Db.Where("id=?", user.Id).Cols("password").Update(user)
  278. e.OutSuc(c, "success", nil)
  279. return
  280. }
  281. // UpdatePasscode
  282. // @Summary 修改支付宝密码
  283. // @Tags 账号与安全
  284. // @Description 修改支付宝密码
  285. // @Accept json
  286. // @Produce json
  287. // @Param req body md.UpdatePasscodeReq true "注册参数"
  288. // @Success 200 string "登录成功返回"
  289. // @Failure 400 {object} md.Response "具体错误"
  290. // @Router /api/v1/memberCenter/updatePasscode [post]
  291. func UpdatePasscode(c *gin.Context) {
  292. var req md.UpdatePasscodeReq
  293. err := c.ShouldBindJSON(&req)
  294. if err != nil {
  295. err = svc.HandleValidateErr(err)
  296. err1 := err.(e.E)
  297. e.OutErr(c, err1.Code, err1.Error())
  298. return
  299. }
  300. user := svc.GetUser(c)
  301. data := svc.AliyunSmsBase(c, "")
  302. //校验短信
  303. err = aliyun.AliyunCheckSms(data["aliyun_sms_id"], data["aliyun_sms_secret"], user.Phone, req.Code)
  304. if err != nil {
  305. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  306. return
  307. }
  308. user.Passcode = utils.Md5(req.PassCode)
  309. db.Db.Where("id=?", user.Id).Cols("passcode").Update(user)
  310. e.OutSuc(c, "success", nil)
  311. return
  312. }
  313. // InviteUrl
  314. // @Summary 邀请链接
  315. // @Tags 邀请海报
  316. // @Description 邀请链接
  317. // @Accept json
  318. // @Produce json
  319. // @Success 200 {object} md.InviteUrl "登录成功返回"
  320. // @Failure 400 {object} md.Response "具体错误"
  321. // @Router /api/v1/memberCenter/inviteUrl [get]
  322. func InviteUrl(c *gin.Context) {
  323. user := svc.GetUser(c)
  324. link := svc.GetSysCfgStr("kuaizhan_url")
  325. res := md.InviteUrl{
  326. Link: "",
  327. InviteCode: user.SystemInviteCode,
  328. }
  329. if user.CustomInviteCode != "" {
  330. res.InviteCode = user.CustomInviteCode
  331. }
  332. link += "?inviteCode=" + res.InviteCode
  333. EggUserShortLink := md2.EggUserShortLink
  334. boolQueryToItem := elastic.NewBoolQuery() // 创建bool查询
  335. aggsMatch := elastic.NewMatchQuery("link", link) //设置查询条件
  336. boolQueryToItem.Must(aggsMatch)
  337. result, _ := hdl.EsSelectOne(context.Background(), EggUserShortLink, boolQueryToItem, false)
  338. isHas := 0
  339. if result != nil && len(result.Hits.Hits) > 0 {
  340. for _, hit := range result.Hits.Hits {
  341. if hit == nil {
  342. continue
  343. }
  344. jsonByte, _ := hit.Source.MarshalJSON()
  345. if gjson.Get(string(jsonByte), "short_link").String() != "" && gjson.Get(string(jsonByte), "date").Int() > time.Now().Unix() {
  346. isHas = 1
  347. link = gjson.Get(string(jsonByte), "short_link").String()
  348. }
  349. }
  350. }
  351. if isHas == 0 {
  352. url, _ := baidu.BaiduShortenUrl(svc.GetSysCfgStr("baidu_token"), link)
  353. if url != "" {
  354. var uniqueId = php2go.Md5(link)
  355. oldLink := link
  356. link = url
  357. tmp := map[string]interface{}{
  358. "uid": user.Id,
  359. "link": oldLink,
  360. "short_link": link,
  361. "date": time.Now().Unix() + 365*86400,
  362. }
  363. doc, _ := es.FirstDoc(EggUserShortLink, uniqueId)
  364. if doc == nil {
  365. es.CreateDoc(EggUserShortLink, uniqueId, tmp)
  366. } else {
  367. es.UpdateDoc(EggUserShortLink, uniqueId, tmp)
  368. }
  369. }
  370. }
  371. res.Link = link
  372. QRcode := qrcode.GetPNGBase64(link)
  373. QRcode = strings.ReplaceAll(QRcode, "\u0000", "")
  374. res.Qrcode = QRcode
  375. e.OutSuc(c, res, nil)
  376. return
  377. }
  378. // ParentInfo
  379. // @Summary 导师信息
  380. // @Tags 会员中心
  381. // @Description 导师信息
  382. // @Accept json
  383. // @Produce json
  384. // @Success 200 {object} md.ParentInfo "登录成功返回"
  385. // @Failure 400 {object} md.Response "具体错误"
  386. // @Router /api/v1/memberCenter/parentInfo [get]
  387. func ParentInfo(c *gin.Context) {
  388. ownUser := svc.GetUser(c)
  389. if ownUser.ParentUid == 0 {
  390. e.OutSuc(c, md.ParentInfo{}, nil)
  391. return
  392. }
  393. NewUserDb := implement.NewUserDb(db.Db)
  394. user, _ := NewUserDb.GetUser(ownUser.ParentUid)
  395. // 1. 获取会员等级名称
  396. userLevelDb := implement.NewUserLevelDb(db.Db)
  397. level, err := userLevelDb.UserLevelByID(user.Level)
  398. if err != nil {
  399. e.OutErr(c, e.ERR_DB_ORM, nil)
  400. return
  401. }
  402. code := user.SystemInviteCode
  403. if user.CustomInviteCode != "" {
  404. code = user.CustomInviteCode
  405. }
  406. res := md.ParentInfo{
  407. Nickname: user.Nickname,
  408. LevelName: level.LevelName,
  409. InviteCode: code,
  410. HeadImg: svc.GetOssUrl(user.Avatar),
  411. Id: utils.Int64ToStr(user.Id),
  412. Phone: user.Phone,
  413. WechatAccount: user.WechatAccount,
  414. }
  415. e.OutSuc(c, res, nil)
  416. return
  417. }
  418. // Delete
  419. // @Summary 注销账号操作
  420. // @Tags 账号与安全
  421. // @Description 注销账号操作
  422. // @Accept json
  423. // @Produce json
  424. // @Param req body md.DeleteUserReq true "注册参数"
  425. // @Success 200 string "登录成功返回"
  426. // @Failure 400 {object} md.Response "具体错误"
  427. // @Router /api/v1/memberCenter/delete [post]
  428. func Delete(c *gin.Context) {
  429. var req md.DeleteUserReq
  430. err := c.ShouldBindJSON(&req)
  431. if err != nil {
  432. err = svc.HandleValidateErr(err)
  433. err1 := err.(e.E)
  434. e.OutErr(c, err1.Code, err1.Error())
  435. return
  436. }
  437. user := svc.GetUser(c)
  438. data := svc.AliyunSmsBase(c, "")
  439. //校验短信
  440. err = aliyun.AliyunCheckSms(data["aliyun_sms_id"], data["aliyun_sms_secret"], user.Phone, req.Code)
  441. if err != nil {
  442. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  443. return
  444. }
  445. user.State = 3
  446. db.Db.Where("id=?", user.Id).Cols("state").Update(user)
  447. tmp := model.UserDeleteInfo{
  448. Uid: int(user.Id),
  449. Phone: user.Phone,
  450. CreateAt: time.Now(),
  451. }
  452. db.Db.Insert(&tmp)
  453. ch, err := rabbit.Cfg.Pool.GetChannel()
  454. if err == nil {
  455. defer ch.Release()
  456. err = ch.PublishV2(md.EggUserExchange, md.CommUserId{
  457. Uid: utils.Int64ToStr(user.Id),
  458. ParentUid: utils.Int64ToStr(user.ParentUid),
  459. }, md.EggUserDelete)
  460. if err != nil {
  461. ch.PublishV2(md.EggUserExchange, md.CommUserId{
  462. Uid: utils.Int64ToStr(user.Id),
  463. ParentUid: utils.Int64ToStr(user.ParentUid),
  464. }, md.EggUserDelete)
  465. }
  466. }
  467. // 清掉token
  468. cacheKey := fmt.Sprintf(auth.TokenKey, user.Id)
  469. _, err = cache.SetEx(cacheKey, "", 1)
  470. e.OutSuc(c, "success", nil)
  471. return
  472. }
  473. // DeleteInfo
  474. // @Summary 注销账号信息
  475. // @Tags 账号与安全
  476. // @Description 注销账号信息
  477. // @Accept json
  478. // @Produce json
  479. // @Success 200 {object} md.UserDeleteInfo "登录成功返回"
  480. // @Failure 400 {object} md.Response "具体错误"
  481. // @Router /api/v1/memberCenter/delete/info [get]
  482. func DeleteInfo(c *gin.Context) {
  483. user := svc.GetUser(c)
  484. resp := md.UserDeleteInfo{
  485. Url: fmt.Sprintf("%s%s?id=%s&is_hide=1", svc.GetSysCfgStr("wap_host"), "/#/pages/course-detail-page/course-detail-page", "115"),
  486. }
  487. extendUserCount, _ := db.Db.Where("parent_uid=?", user.Id).Count(&model.User{})
  488. NewUserWalletDb := implement.NewUserWalletDb(db.Db)
  489. walletAmount := "0"
  490. wallet, _ := NewUserWalletDb.GetUserVirtualWallet(user.Id)
  491. if wallet != nil {
  492. walletAmount = wallet.Amount
  493. }
  494. NewUserVirtualAmountDb := implement.NewUserVirtualAmountDb(db.Db)
  495. virtualWallet, _ := NewUserVirtualAmountDb.GetUserVirtualAllWallets(user.Id)
  496. virtualAmount1 := "0"
  497. virtualAmount2 := "0"
  498. virtualAmount3 := "0"
  499. settingDb := implement.NewEggEnergyBasicSettingDb(db.Db)
  500. setting, _ := settingDb.EggEnergyBasicSettingGetOne()
  501. if virtualWallet != nil {
  502. for _, v := range *virtualWallet {
  503. if v.CoinId == setting.PersonEggPointsCoinId {
  504. virtualAmount3 = utils.Float64ToStrPrec8(utils.StrToFloat64(v.Amount) + utils.StrToFloat64(virtualAmount3))
  505. }
  506. if v.CoinId == setting.TeamEggPointsCoinId {
  507. virtualAmount3 = utils.Float64ToStrPrec8(utils.StrToFloat64(v.Amount) + utils.StrToFloat64(virtualAmount3))
  508. }
  509. if v.CoinId == setting.PersonEggEnergyCoinId {
  510. virtualAmount2 = utils.Float64ToStrPrec8(utils.StrToFloat64(v.Amount) + utils.StrToFloat64(virtualAmount2))
  511. }
  512. if v.CoinId == setting.TeamEggEnergyCoinId {
  513. virtualAmount2 = utils.Float64ToStrPrec8(utils.StrToFloat64(v.Amount) + utils.StrToFloat64(virtualAmount2))
  514. }
  515. if v.CoinId == setting.ContributionCoinId {
  516. virtualAmount1 = utils.Float64ToStrPrec8(utils.StrToFloat64(v.Amount) + utils.StrToFloat64(virtualAmount1))
  517. }
  518. }
  519. }
  520. score := 60.00
  521. now := time.Now()
  522. esIndex := es2.GetLatestEffectiveIndexFromAlias(now)
  523. esIndexName := md3.EggEnergyUserEggScoreEsAlias + "_" + esIndex
  524. results, _ := es.FirstDoc(esIndexName, esIndex+"_"+utils.Int64ToStr(user.Id))
  525. if results != nil {
  526. var doc md.UserEggFlowReqRespList
  527. json.Unmarshal(results.Source, &doc)
  528. score = doc.ScoreValue
  529. }
  530. uid := user.Id
  531. sql := fmt.Sprintf("SELECT COUNT(*)AS total FROM `public_platoon_user_relation` WHERE father_uid1 = %d OR father_uid2= %d OR father_uid3= %d OR father_uid4= %d OR father_uid5= %d OR father_uid6= %d OR father_uid7= %d OR father_uid8= %d OR father_uid9= %d", uid, uid, uid, uid, uid, uid, uid, uid, uid)
  532. nativeString1, _ := db.QueryNativeString(db.Db, sql)
  533. hasUserCount := "0"
  534. if len(nativeString1) > 0 {
  535. hasUserCount = nativeString1[0]["total"]
  536. }
  537. info := []md.UserDeleteInfoList{
  538. {Title: "贡献值", Content: "贡献值 " + virtualAmount1},
  539. {Title: "能量值", Content: "能量值 " + virtualAmount2},
  540. {Title: "活跃值", Content: "活跃值 " + virtualAmount3},
  541. {Title: "蛋蛋分", Content: "蛋蛋分 " + utils.Float64ToStr(score)},
  542. {Title: "余额", Content: "余额 " + walletAmount},
  543. {Title: "直推好友", Content: "直推好友 " + utils.Int64ToStr(extendUserCount) + " 人"},
  544. {Title: "团队", Content: "团队 " + hasUserCount + " 人"},
  545. }
  546. resp.Info = info
  547. e.OutSuc(c, resp, nil)
  548. return
  549. }