From 5690a6697c81ef050f905144e90268b433835c6c Mon Sep 17 00:00:00 2001 From: gy <997485446@qq.com> Date: Mon, 27 Mar 2023 14:57:26 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=20=E5=AF=B9=E5=B7=B2=E7=BB=8F=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=BF=87=E7=9A=84=E8=BF=9B=E8=A1=8C=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/model/approval.go | 26 +++++++++++++++++++++----- pkg/service/approval.go | 7 +++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/pkg/model/approval.go b/pkg/model/approval.go index c76f7b4..69844c5 100644 --- a/pkg/model/approval.go +++ b/pkg/model/approval.go @@ -163,6 +163,22 @@ AND approval.domain = ? AND approval.submitter_id = ? AND approval.type = ? AND return total - usedNum } +func ExistPayApproval(in *approval.CreateRequest) bool { + var count int64 + + // + subQuery1 := DB.Model(&Approval{}).Where(&Approval{SubmitterID: in.SubmitterID, Type: TypeBundlePayPrice}). + Where("status in (?)",[]uint64{StatusDoing,StatusOk}). + Select("id") + + DB.Model(&BundlePayPrice{}).Where("approval_id in (?)", subQuery1).Where(&BundlePayPrice{ShowUid: in.BundlePayPrice.ShowUid}).Count(&count) + + if count >= 1 { + return true + } + return false +} + func StoreApproval(in *approval.CreateRequest) (*Approval, error) { var entity *Approval @@ -525,7 +541,7 @@ func MyAllWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) { modelObj = modelObj.Where(&Approval{Type: in.Type}).Where( DB.Where(&Approval{NowUserId: in.UserID, Status: StatusDoing}). // 我需要审批的 - Or(DB.Where("status = ?", StatusOk).Where("id in (?)", s1))) // 已完成,抄送给我的 + Or(DB.Where("status = ?", StatusOk).Where("id in (?)", s1))) // 已完成,抄送给我的 modelObj.Count(&count) if len(ids) > 0 { //根据具体id排序 @@ -570,8 +586,8 @@ func MyApprovalWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) { if in.UserID != 0 { modelObj = modelObj.Where( DB.Where("JSON_CONTAINS(approval_users,JSON_OBJECT('ID', ?))", in.UserID). - Where("status != ?", StatusDoing). //完成,我参与审批 - Or(DB.Where("now_user_id", in.UserID).Where("status = ?", StatusDoing)). //进行中,当前审批人是我, + Where("status != ?", StatusDoing). //完成,我参与审批 + Or(DB.Where("now_user_id", in.UserID).Where("status = ?", StatusDoing)). //进行中,当前审批人是我, Or(DB.Where("JSON_CONTAINS(copy_users,JSON_OBJECT('ID', ?))", in.UserID).Where("status = ?", StatusOk))) //抄送人(完成抄送) } @@ -627,8 +643,8 @@ func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) { if in.UserID != 0 { modelObj = modelObj.Where( DB.Where("JSON_CONTAINS(approval_users,JSON_OBJECT('ID', ?))", in.UserID). - Where("status != ?", StatusDoing). //完成,我参与审批 - Or(DB.Where("now_user_id", in.UserID).Where("status = ?", StatusDoing)). //进行中,当前审批人是我, + Where("status != ?", StatusDoing). //完成,我参与审批 + Or(DB.Where("now_user_id", in.UserID).Where("status = ?", StatusDoing)). //进行中,当前审批人是我, Or(DB.Where("JSON_CONTAINS(copy_users,JSON_OBJECT('ID', ?))", in.UserID).Where("status = ?", StatusOk))) //抄送人(完成抄送) } diff --git a/pkg/service/approval.go b/pkg/service/approval.go index 808d2e1..28d1c10 100644 --- a/pkg/service/approval.go +++ b/pkg/service/approval.go @@ -19,6 +19,13 @@ type ApprovalProvider struct { func (a *ApprovalProvider) Create(ctx context.Context, in *approval.CreateRequest) (*approval.ApprovalResponse, error) { response := &approval.ApprovalResponse{} + //下载单子只能下载一次 + if in.Type == model.TypeBundlePayPrice { + if model.ExistPayApproval(in) == true { + return response, errors.New("该画展宝已经有审批中或者审批通过的提交") + } + } + entity, err := model.StoreApproval(in) if err != nil { return response, err