participateinfologic.go 2.7 KB

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