participateinfologic.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "context"
  5. "fmt"
  6. IC "jyBXCore/rpc/init"
  7. "jyBXCore/rpc/service"
  8. "jyBXCore/rpc/util"
  9. "time"
  10. "jyBXCore/rpc/internal/svc"
  11. "jyBXCore/rpc/type/bxcore"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type ParticipateInfoLogic struct {
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. logx.Logger
  18. }
  19. func NewParticipateInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParticipateInfoLogic {
  20. return &ParticipateInfoLogic{
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. Logger: logx.WithContext(ctx),
  24. }
  25. }
  26. // 详情页参标信息接口
  27. func (l *ParticipateInfoLogic) ParticipateInfo(in *bxcore.ParticipateInfoReq) (*bxcore.ParticipateInfoRes, error) {
  28. format := &bxcore.ParticipateDetailInfo{}
  29. result := bxcore.ParticipateInfoRes{
  30. ErrMsg: "",
  31. ErrCode: 0,
  32. Data: format,
  33. }
  34. // 1. 判断身份是否有权限 不是超级订阅也不是大会员 则直接返回不展示
  35. userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
  36. //不是超级订阅 也不是大会员
  37. if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
  38. return &result, fmt.Errorf("没权限")
  39. }
  40. participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
  41. participateService.EntRoleId = userInfo.Ent.EntRoleId
  42. // 信息id解密
  43. infoList, infoSet := service.DecodeId(in.Sid)
  44. if len(infoList) == 0 {
  45. return &result, fmt.Errorf("信息id无效")
  46. }
  47. // 2. 根据标讯id 查询项目信息
  48. projectInfos := participateService.GetProject(infoList)
  49. if projectInfos == nil || len(*projectInfos) == 0 {
  50. return &result, nil
  51. }
  52. // 判断是否已经过了开标时间
  53. var isVaild bool
  54. bidopentime := common.Int64All((*projectInfos)[0]["bidopentime"])
  55. if time.Now().Unix() >= bidopentime || bidopentime == 0 {
  56. isVaild = true
  57. }
  58. // 获取项目id
  59. _, projectIds := service.HandlerProjectId(*projectInfos, infoSet)
  60. //区分个人和企业
  61. var formatList *bxcore.ParticipateDetailInfo
  62. switch int(in.PositionType) {
  63. case service.PositionTypePersonal:
  64. existList := participateService.PersonalExistProject(projectIds)
  65. formatList = participateService.DetailPersonalFormat(existList, isVaild)
  66. case service.PositionTypeEnt:
  67. partUser := util.NewPartUserInfo(in.EntId, in.EntUserId, in.PositionId, in.PositionType)
  68. isAllow := partUser.IsALLow()
  69. existList := participateService.EntExistProject(projectIds) // 查询出已经存在的
  70. formatList = participateService.DetailEntFormat(existList, isVaild, isAllow) // 格式化数据
  71. }
  72. result.Data = formatList
  73. return &result, nil
  74. }