package logic import ( "app.yhyue.com/moapp/jybase/common" "context" "fmt" IC "jyBXCore/rpc/init" "jyBXCore/rpc/service" "jyBXCore/rpc/util" "strconv" "time" "jyBXCore/rpc/internal/svc" "jyBXCore/rpc/type/bxcore" "github.com/zeromicro/go-zero/core/logx" ) type ParticipateInfoLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewParticipateInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParticipateInfoLogic { return &ParticipateInfoLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 详情页参标信息接口 func (l *ParticipateInfoLogic) ParticipateInfo(in *bxcore.ParticipateInfoReq) (*bxcore.ParticipateInfoRes, error) { format := &bxcore.ParticipateDetailInfo{} result := bxcore.ParticipateInfoRes{ ErrMsg: "", ErrCode: 0, Data: format, } // 1. 判断身份是否有权限 不是超级订阅也不是大会员 则直接返回不展示 baseUserId, _ := strconv.ParseInt(in.NewUserId, 10, 64) accountId, _ := strconv.ParseInt(in.AccountId, 10, 64) userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, baseUserId, accountId, in.EntId, in.PositionType, in.PositionId) //不是超级订阅 也不是大会员 if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 { return &result, fmt.Errorf("没权限") } participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId) participateService.EntRoleId = userInfo.Ent.EntRoleId // 信息id解密 infoList, infoSet := service.DecodeId(in.Sid) if len(infoList) == 0 { return &result, fmt.Errorf("信息id无效") } // 2. 根据标讯id 查询项目信息 projectInfos := participateService.GetProject(infoList) if projectInfos == nil || len(*projectInfos) == 0 { return &result, nil } // 判断是否已经过了开标时间 var isVaild bool bidopentime := common.Int64All((*projectInfos)[0]["bidopentime"]) if time.Now().Unix() >= bidopentime || bidopentime == 0 { isVaild = true } // 获取项目id _, projectIds := service.HandlerProjectId(*projectInfos, infoSet) //区分个人和企业 var formatList *bxcore.ParticipateDetailInfo switch int(in.PositionType) { case service.PositionTypePersonal: existList := participateService.PersonalExistProject(projectIds) formatList = participateService.DetailPersonalFormat(existList, isVaild) case service.PositionTypeEnt: partUser := util.NewPartUserInfo(in.EntId, in.EntUserId, in.PositionId, in.PositionType) isAllow := partUser.IsALLow() existList := participateService.EntExistProject(projectIds) // 查询出已经存在的 formatList = participateService.DetailEntFormat(existList, isVaild, isAllow) // 格式化数据 } result.Data = formatList return &result, nil }