|
- package hdl
-
- import (
- "applet/app/db"
- "applet/app/e"
- "applet/app/md"
- "applet/app/utils"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/model"
- es2 "code.fnuoos.com/EggPlanet/egg_system_rules.git/utils/es"
- "code.fnuoos.com/go_rely_warehouse/zyos_go_es.git/es"
- "context"
- "encoding/json"
- "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. 查询蛋蛋分
- now := time.Now().Add(-7 * time.Hour * 24)
- esIndexName := es2.GetLatestEffectiveIndexFromAlias(now)
- // 构建查询条件
- 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 {
- var doc md.UserEggFlowReqRespList
- err = json.Unmarshal(hit.Source, &doc)
- if err != nil {
- e.OutErr(c, e.ERR_DB_ORM, nil)
- return
- }
- results = append(results, doc)
- }
- }
- score := results[0].ScoreValue
-
- 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: contributionValue.Amount,
- Date: "29",
- Ratio: "1:1000",
- Amount: wallet.Amount,
- }
- e.OutSuc(c, resp, nil)
- return
- }
|