package logic import ( "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/redis" "context" IC "jyBXSubscribe/rpc/init" "jyBXSubscribe/rpc/model" "strconv" "time" "jyBXSubscribe/rpc/internal/svc" "jyBXSubscribe/rpc/type/bxsubscribe" "github.com/zeromicro/go-zero/core/logx" ) type GetSubSomeInfoLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewGetSubSomeInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetSubSomeInfoLogic { return &GetSubSomeInfoLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 获取订阅推送相关信息 func (l *GetSubSomeInfoLogic) GetSubSomeInfo(in *bxsubscribe.SomeInfoReq) (*bxsubscribe.SomeInfoResp, error) { resp := &bxsubscribe.SomeInfoResp{ Data: &bxsubscribe.SomeInfo{ HasKey: false, IsInTSguide: false, IsExpire: 0, IsOnTail: 0, IsPassCount: false, OtherFlag: false, IsRead: false, Industry: nil, UserId: "", }, } baseUserId, _ := strconv.ParseInt(in.NewUserId, 10, 64) //accountId, _ := strconv.ParseInt(in.AccountId, 10, 64) //positionType, _ := strconv.ParseInt(in.PositionType, 10, 64) //positionId, _ := strconv.ParseInt(in.PositionId, 10, 64) //entId, _ := strconv.ParseInt(in.EntId, 10, 64) //userInfo := IC.Compatible.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, baseUserId, accountId, entId, positionType, positionId) //logx.Info("userInfo:", userInfo) //P278 身份切换,切换企业 userId从代理header 获取的值是 职位id,所以改成用base_user_id 进行查user表信息 user, _ := model.NewSubscribePush(in.UserType).UserInfo(baseUserId) // resp.Data.HasKey, resp.Data.Industry = model.GetKeySet(in.UserType, user, []string{}) todayNum := time.Unix(time.Now().Unix(), 1).Format("20060102") if user != nil { //超级订阅 if common.IntAll((*user)["i_vip_status"]) == 1 || common.IntAll((*user)["i_vip_status"]) == 2 { var threeRemind = int64(3 * 24 * 60 * 60) var twoRemind = int64(2 * 24 * 60 * 60) var oneRemind = int64(1 * 24 * 60 * 60) if (*user)["isread"] != nil { resp.Data.IsRead = (*user)["isread"].(bool) } resp.Data.IsPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+todayNum+"_"+in.UserId) >= 2000 resp.Data.IsOnTail = common.Int64All((*user)["i_vip_status"]) _endtime := (*user)["l_vip_endtime"] //是否到期 if common.Int64All(_endtime)-time.Now().Unix() < threeRemind && common.Int64All(_endtime)-time.Now().Unix() >= twoRemind { resp.Data.IsExpire = 3 //即将到期 } else if common.Int64All(_endtime)-time.Now().Unix() < twoRemind && common.Int64All(_endtime)-time.Now().Unix() >= oneRemind { resp.Data.IsExpire = 2 //即将到期 } else if common.Int64All(_endtime)-time.Now().Unix() < oneRemind && common.Int64All(_endtime)-time.Now().Unix() >= 0 { resp.Data.IsExpire = 1 //即将到期 } //判断首次用户是否推送的带有”其他“ t, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local) today_1 := t.Unix() today_2 := t.AddDate(0, 0, 1).Unix() //错误 if IC.BaseServiceMysql.CountBySql("select count(1) as count from pushsubscribe a left join global_common_data.dws_f_bid_baseinfo b on a.infoid=b.infoid where a.isvip =1 and a.userid =? and b.buyerclass_code=? and (a.date between ? and ? )", common.InterfaceToStr(in.NewUserId), 93, today_1, today_2) > 0 { resp.Data.OtherFlag = true } } else { if (*user)["i_vip_status"] == nil { resp.Data.IsExpire = 0 } else { resp.Data.IsOnTail = common.Int64All((*user)["i_vip_status"]) } resp.Data.IsPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+todayNum+"_"+in.UserId) >= 150 } //是否进入向导查询 resp.Data.IsInTSguide = func() bool { //付费用户无免费订阅,不进入订阅向导页面 if common.IntAll((*user)["i_member_status"]) > 0 || common.IntAll((*user)["i_vip_status"]) > 0 { return false } o_jy, _ := (*user)["o_jy"].(map[string]interface{}) iTsGuide := common.IntAll((*user)["i_ts_guide"]) if iTsGuide == 2 || (iTsGuide == 0 && len(o_jy) == 0) { return true } return false }() } return resp, nil }