participateinfologic.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "context"
  6. "jyBXCore/rpc/model/es"
  7. "jyBXCore/rpc/model/mysql"
  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. Data: format,
  32. }
  33. b, entRoleId := util.IsAllowedParticipate(in.AppId, in.MgoUserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
  34. if !b {
  35. result.ErrMsg = "暂无权限"
  36. return &result, nil
  37. }
  38. participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
  39. participateService.EntRoleId = entRoleId
  40. // 信息id解密
  41. infoList, infoSet := service.DecodeId(in.Sid)
  42. if len(infoList) == 0 {
  43. result.ErrCode = -1
  44. result.ErrMsg = "信息id无效"
  45. return &result, nil
  46. }
  47. // 2. 根据标讯id 查询项目信息
  48. projectInfos := es.GetProjectByInfoId(infoList)
  49. if projectInfos == nil || len(*projectInfos) == 0 {
  50. result.ErrMsg = "未查到此项目信息"
  51. return &result, nil
  52. }
  53. // 判断是否已经过了投标截止时间
  54. isValid := true
  55. bidendtime := common.Int64All((*projectInfos)[0]["bidendtime"])
  56. bidopentime := common.Int64All((*projectInfos)[0]["bidopentime"])
  57. now := time.Now().Unix()
  58. if (now > bidopentime && bidopentime != 0) || (now > bidendtime && bidendtime != 0) {
  59. isValid = false
  60. }
  61. // 获取项目id
  62. _, projectIds := service.HandlerProjectId(*projectInfos, infoSet)
  63. //区分个人和企业
  64. var formatData *bxcore.ParticipateDetailInfo
  65. switch int(in.PositionType) {
  66. case service.PositionTypePersonal:
  67. existList := participateService.PersonalExistProject(projectIds)
  68. formatData = participateService.DetailPersonalFormat(existList, isValid, bidendtime)
  69. case service.PositionTypeEnt:
  70. isAllow := mysql.IsALLow(in.EntId)
  71. existList := participateService.EntExistProject(projectIds) // 查询出已经存在的
  72. formatData = participateService.DetailEntFormat(existList, isValid, isAllow, bidendtime) // 格式化数据
  73. }
  74. formatData.ProjectId = encrypt.EncodeArticleId2ByCheck(projectIds[0])
  75. result.Data = formatData
  76. return &result, nil
  77. }