package hdl import ( "applet/app/db" "applet/app/e" "applet/app/md" "applet/app/svc" "applet/app/utils" "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" "code.fnuoos.com/EggPlanet/egg_models.git/src/model" md2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/md" es2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/es" "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es" "encoding/json" "fmt" "github.com/gin-gonic/gin" "github.com/olivere/elastic/v7" "github.com/shopspring/decimal" "time" ) // MemberCenterGetBasic // @Summary 蛋蛋星球-会员中心-基础数据(获取) // @Tags 会员中心 // @Description 基础数据(获取) // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Success 200 {object} md.MemberCenterGetBasicResp "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/v1/memberCenter/getBasic [GET] func MemberCenterGetBasic(c *gin.Context) { val, exists := c.Get("user") if !exists { e.OutErr(c, e.ERR_USER_CHECK_ERR, nil) return } user, ok := val.(*model.User) if !ok { e.OutErr(c, e.ERR_USER_CHECK_ERR, nil) return } // 1. 获取会员等级名称 userLevelDb := implement.NewUserLevelDb(db.Db) level, err := userLevelDb.UserLevelByID(user.Level) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } // 2. 获取基础设置 settingDb := implement.NewEggEnergyBasicSettingDb(db.Db) setting, err := settingDb.EggEnergyBasicSettingGetOne() if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } // 3. 查询余额 virtualAmountDb := implement.NewUserVirtualAmountDb(db.Db) // 3.1 活跃积分(蛋蛋积分 = 团队 + 个人) eggPersonalPoint, err := virtualAmountDb.GetUserVirtualWalletBySession(user.Id, setting.PersonEggPointsCoinId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } eggTeamPoint, err := virtualAmountDb.GetUserVirtualWalletBySession(user.Id, setting.TeamEggPointsCoinId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } eggPoint := utils.StrToFloat64(eggPersonalPoint.Amount) + utils.StrToFloat64(eggTeamPoint.Amount) // 3.2 蛋蛋能量 (个人 + 团队) eggPersonalEnergy, err := virtualAmountDb.GetUserVirtualWalletBySession(user.Id, setting.PersonEggEnergyCoinId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } eggTeamEnergy, err := virtualAmountDb.GetUserVirtualWalletBySession(user.Id, setting.TeamEggEnergyCoinId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } eggEnergy := utils.StrToFloat64(eggPersonalEnergy.Amount) + utils.StrToFloat64(eggTeamEnergy.Amount) // 3.3 钱包余额 walletDb := implement.NewUserWalletDb(db.Db) wallet, err := walletDb.GetUserVirtualWallet(user.Id) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } // 3.4 贡献值 contributionValue, err := virtualAmountDb.GetUserVirtualWalletBySession(user.Id, setting.ContributionCoinId) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } coreDataDb := implement.NewEggEnergyCoreDataDb(db.Db) coreData, err := coreDataDb.EggEnergyCoreDataGet() if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } // 4. 预估蛋蛋能量价值 nowPrice, err := decimal.NewFromString(coreData.NowPrice) if err != nil { e.OutErr(c, e.ERR_UNMARSHAL, nil) return } eggEnergyValue := nowPrice.Mul(decimal.NewFromFloat(eggEnergy)) // 5. 查询蛋蛋分 score := 60.00 now := time.Now() esIndex := es2.GetLatestEffectiveIndexFromAlias(now) esIndexName := md2.EggEnergyUserEggScoreEsAlias + "_" + esIndex results, err := es.FirstDoc(esIndexName, esIndex+"_"+utils.Int64ToStr(user.Id)) if err != nil { if !elastic.IsNotFound(err) { e.OutErr(c, e.ERR, err.Error()) return } } //// 构建查询条件 //boolQuery := elastic.NewBoolQuery() //boolQuery.Filter(elastic.NewTermQuery("uid", user.Id)) //searchResult, err := es.EsClient.Search(). // Index(esIndexName). // Query(boolQuery). // Pretty(true). // Do(context.Background()) // //if err != nil { // e.OutErr(c, e.ERR_DB_ORM, err.Error()) // return //} //var results []md.UserEggFlowReqRespList //// 检查是否有结果 //if searchResult.Hits.TotalHits.Value != 0 { // // 解析结果 // for _, hit := range searchResult.Hits.Hits { // todo 解除注释 if !elastic.IsNotFound(err) { var doc md.UserEggFlowReqRespList err = json.Unmarshal(results.Source, &doc) if err != nil { e.OutErr(c, e.ERR_DB_ORM, nil) return } // results = append(results, doc) // } //} score = doc.ScoreValue } ratio := decimal.NewFromInt(1).Div(nowPrice).StringFixed(16) ratioStr := fmt.Sprintf("%s:1", ratio) contributionValueDecimal, err := decimal.NewFromString(contributionValue.Amount) if err != nil { e.OutErr(c, e.ERR_UNMARSHAL, nil) return } resp := md.MemberCenterGetBasicResp{ Nickname: user.Nickname, LevelName: level.LevelName, ActiveNum: utils.Float64ToStr(eggPoint), EggScore: utils.Float64ToStr(score), EggEnergy: utils.Float64ToStr(eggEnergy), EggEnergyValue: eggEnergyValue.String(), ContributionValue: contributionValueDecimal.StringFixed(0), Date: "25", WechatAccount: user.WechatAccount, Ratio: ratioStr, Amount: wallet.Amount, Id: utils.Int64ToStr(user.Id), Phone: user.Phone, InviteCode: user.SystemInviteCode, IsBindExtend: "0", IsRealName: "0", HeadImg: svc.GetOssUrl(user.Avatar), } if user.CustomInviteCode != "" { resp.InviteCode = user.CustomInviteCode } if user.ParentUid > 0 { resp.IsBindExtend = "1" } //创始人不用弹出绑定邀请码 publicPlatoonBasicDb := implement.NewPublicPlatoonBasicSettingDb(db.Db) publicPlatoonBasic, _ := publicPlatoonBasicDb.PublicPlatoonBasicSettingGetOne() if publicPlatoonBasic != nil && int(user.Id) == publicPlatoonBasic.OriginatorUid { resp.IsBindExtend = "1" } resp.IsRealName = svc.CheckRealName(user.Id) fmt.Println(utils.SerializeStr(resp)) e.OutSuc(c, resp, nil) return }