updatebidstatuslogic.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "context"
  5. "jyBXCore/rpc/model/es"
  6. "jyBXCore/rpc/model/mysql"
  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 UpdateBidStatusLogic struct {
  15. ctx context.Context
  16. svcCtx *svc.ServiceContext
  17. logx.Logger
  18. }
  19. func NewUpdateBidStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateBidStatusLogic {
  20. return &UpdateBidStatusLogic{
  21. ctx: ctx,
  22. svcCtx: svcCtx,
  23. Logger: logx.WithContext(ctx),
  24. }
  25. }
  26. // 投标状态更新
  27. func (l *UpdateBidStatusLogic) UpdateBidStatus(in *bxcore.UpdateBidStatusReq) (*bxcore.UpdateBidStatusRes, error) {
  28. result := &bxcore.UpdateBidStatusRes{
  29. ErrCode: -1,
  30. }
  31. if msg := util.IsAllowedAccess("updatebidstatus"); msg != "" {
  32. result.ErrMsg = msg
  33. return result, nil
  34. }
  35. b, entRoleId := util.IsAllowedParticipate(in.AppId, in.MgoUserId, in.NewUserId, in.AccountId, in.EntAccountId, in.EntId, in.EntUserId, in.PositionId, in.PositionType)
  36. // 不是超级订阅 也不是大会员
  37. if !b {
  38. result.ErrMsg = "没有权限"
  39. return result, nil
  40. }
  41. participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
  42. participateService.EntRoleId = entRoleId
  43. // 信息id解密
  44. infoList, _ := service.DecodeId(in.Sid)
  45. if len(infoList) == 0 {
  46. result.ErrMsg = "信息id无效"
  47. return result, nil
  48. }
  49. // 根据标讯id 查询项目信息
  50. projectInfos := es.GetProjectByInfoId(infoList)
  51. if projectInfos == nil || len(*projectInfos) == 0 {
  52. result.ErrMsg = "未查询到项目信息"
  53. return result, nil
  54. }
  55. // 判断是否已经过了投标截止时间
  56. bidendtime := common.Int64All((*projectInfos)[0]["bidendtime"])
  57. bidopentime := common.Int64All((*projectInfos)[0]["bidopentime"])
  58. projectId := common.ObjToString((*projectInfos)[0]["_id"])
  59. now := time.Now().Unix()
  60. if (now > bidopentime && bidopentime != 0) || (now > bidendtime && bidendtime != 0) {
  61. result.ErrMsg = "已经过投标截止时间,无法更新"
  62. return result, nil
  63. }
  64. // 验证身份
  65. if !participateService.CheckUpdateBidPower(projectId, true) {
  66. result.ErrMsg = "没有更新权限"
  67. return result, nil
  68. }
  69. // 2. 更新
  70. if err := participateService.UpdateBidStatus(in, projectId); err != nil {
  71. result.ErrMsg = err.Error()
  72. } else {
  73. // p408 增加
  74. go mysql.NewParStage(in.EntId, in.EntUserId, in.PositionId, projectId).UpdateStage()
  75. result.Data = true
  76. result.ErrCode = 0
  77. }
  78. return result, nil
  79. }