updatebidstatuslogic.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. "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. // 1. 判断身份是否有权限 不是超级订阅也不是大会员 则直接返回不展示
  30. userInfo := IC.Middleground.PowerCheckCenter.Check(in.AppId, in.UserId, in.NewUserId, in.AccountId, in.EntId, in.PositionType, in.PositionId)
  31. // 不是超级订阅 也不是大会员
  32. if userInfo.Vip.Status <= 0 && userInfo.Member.Status <= 0 {
  33. return result, fmt.Errorf("没权限")
  34. }
  35. participateService := service.NewParticipateBid(in.EntId, in.EntUserId, in.PositionType, in.PositionId)
  36. participateService.EntRoleId = userInfo.Ent.EntRoleId
  37. // 信息id解密
  38. infoList, _ := service.DecodeId(in.Sid)
  39. if len(infoList) == 0 {
  40. return result, fmt.Errorf("信息id无效")
  41. }
  42. // 根据标讯id 查询项目信息
  43. projectInfos := es.GetProjectByInfoId(infoList)
  44. if projectInfos == nil || len(*projectInfos) == 0 {
  45. return result, fmt.Errorf("无效的信息id")
  46. }
  47. // 判断是否已经过了开标时间
  48. var isValid bool
  49. bidopentime := common.Int64All((*projectInfos)[0]["bidopentime"])
  50. projectId := common.ObjToString((*projectInfos)[0]["_id"])
  51. if time.Now().Unix() >= bidopentime || bidopentime == 0 {
  52. isValid = true
  53. }
  54. if !isValid {
  55. return result, fmt.Errorf("已经过开标时间,无法更新")
  56. }
  57. // 验证身份
  58. if !participateService.CheckBidPower(projectId, true) {
  59. return result, fmt.Errorf("没有权限")
  60. }
  61. // 2. 更新
  62. flag := participateService.UpdateBidStatus(in, projectId)
  63. var err error
  64. if !flag {
  65. err = fmt.Errorf("更新失败")
  66. }
  67. result.Data = flag
  68. return result, err
  69. }