diff --git a/pkg/model/approval_oa.go b/pkg/model/approval_oa.go index 5f93c0c..10b2c88 100644 --- a/pkg/model/approval_oa.go +++ b/pkg/model/approval_oa.go @@ -198,35 +198,37 @@ func (oa *ApprovalOA) GetApproval(id uint64) (*Approval, error) { func (oa *ApprovalOA) SaveApprovalContent(in *approval.CreateRequest, a *Approval) error { - if err := oa.copyOAToModel(in, a); err != nil { + approvalOA, err := oa.copyOAToModel(in, a) + if err != nil { return err } - return DB.Create(&oa).Error + return DB.Create(&approvalOA).Error } -func (oa *ApprovalOA) copyOAToModel(in *approval.CreateRequest, a *Approval) error { - copier.CopyWithOption(&oa, in.ApprovalOA, copier.Option{DeepCopy: true}) - oa.ApprovalID = a.ID +func (oa *ApprovalOA) copyOAToModel(in *approval.CreateRequest, a *Approval) (approvalOA *ApprovalOA, err error) { - if err := oa.addOtherInfoToModel(in, a); err != nil { - return err + copier.CopyWithOption(&approvalOA, in.ApprovalOA, copier.Option{DeepCopy: true}) + approvalOA.ApprovalID = a.ID + + if err := oa.addOtherInfoToModel(in, a, approvalOA); err != nil { + return nil, err } - return nil + return approvalOA, nil } -func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approval) error { +func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approval, appprovalOA *ApprovalOA) error { if v, ok := sonMap[a.ApprovalType.KeyWord]; ok { switch v { case "leave": - oa.Leave.ApprovalUsers = a.ApprovalUsers - oa.Leave.CopyUsers = a.CopyUsers - if oa.Leave.ApplyType != "" { - oa.Leave.ApplyType = a.ApprovalType.KeyWord + appprovalOA.Leave.ApprovalUsers = a.ApprovalUsers + appprovalOA.Leave.CopyUsers = a.CopyUsers + if appprovalOA.Leave.ApplyType != "" { + appprovalOA.Leave.ApplyType = a.ApprovalType.KeyWord } - oa.Leave.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.Leave.Status = int32(a.Status) + appprovalOA.Leave.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.Leave.Status = int32(a.Status) applyTimes := make([]ApplyTime, 0) for i := 0; i < len(in.ApprovalOA.Leave.ApplyTimes); i++ { @@ -236,13 +238,13 @@ func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approva M: in.ApprovalOA.Leave.ApplyTimes[i].M, }) } - oa.Leave.ApplyTimes = applyTimes + appprovalOA.Leave.ApplyTimes = applyTimes case "makeUp": - oa.MakeUp.ApprovalUsers = a.ApprovalUsers - oa.MakeUp.CopyUsers = a.CopyUsers - oa.MakeUp.ApplyType = a.ApprovalType.KeyWord - oa.MakeUp.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.MakeUp.Status = int32(a.Status) + appprovalOA.MakeUp.ApprovalUsers = a.ApprovalUsers + appprovalOA.MakeUp.CopyUsers = a.CopyUsers + appprovalOA.MakeUp.ApplyType = a.ApprovalType.KeyWord + appprovalOA.MakeUp.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.MakeUp.Status = int32(a.Status) applyTimes := make([]ApplyTime, 0) for i := 0; i < len(in.ApprovalOA.MakeUp.ApplyTimes); i++ { @@ -252,13 +254,13 @@ func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approva M: in.ApprovalOA.MakeUp.ApplyTimes[i].M, }) } - oa.MakeUp.ApplyTimes = applyTimes + appprovalOA.MakeUp.ApplyTimes = applyTimes case "overTime": - oa.OverTime.ApprovalUsers = a.ApprovalUsers - oa.OverTime.CopyUsers = a.CopyUsers - oa.OverTime.ApplyType = a.ApprovalType.KeyWord - oa.OverTime.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.OverTime.Status = int32(a.Status) + appprovalOA.OverTime.ApprovalUsers = a.ApprovalUsers + appprovalOA.OverTime.CopyUsers = a.CopyUsers + appprovalOA.OverTime.ApplyType = a.ApprovalType.KeyWord + appprovalOA.OverTime.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.OverTime.Status = int32(a.Status) applyTimes := make([]ApplyTime, 0) for i := 0; i < len(in.ApprovalOA.OverTime.ApplyTimes); i++ { @@ -268,13 +270,13 @@ func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approva M: in.ApprovalOA.OverTime.ApplyTimes[i].M, }) } - oa.OverTime.ApplyTimes = applyTimes + appprovalOA.OverTime.ApplyTimes = applyTimes case "outWork": - oa.OutWork.ApprovalUsers = a.ApprovalUsers - oa.OutWork.CopyUsers = a.CopyUsers - oa.OutWork.ApplyType = a.ApprovalType.KeyWord - oa.OutWork.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.OutWork.Status = int32(a.Status) + appprovalOA.OutWork.ApprovalUsers = a.ApprovalUsers + appprovalOA.OutWork.CopyUsers = a.CopyUsers + appprovalOA.OutWork.ApplyType = a.ApprovalType.KeyWord + appprovalOA.OutWork.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.OutWork.Status = int32(a.Status) applyTimes := make([]ApplyTime, 0) for i := 0; i < len(in.ApprovalOA.OutWork.ApplyTimes); i++ { @@ -284,13 +286,13 @@ func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approva M: in.ApprovalOA.OutWork.ApplyTimes[i].M, }) } - oa.OutWork.ApplyTimes = applyTimes + appprovalOA.OutWork.ApplyTimes = applyTimes case "turnover": - oa.Turnover.ApprovalUsers = a.ApprovalUsers - oa.Turnover.CopyUsers = a.CopyUsers - oa.Turnover.ApplyType = a.ApprovalType.KeyWord - oa.Turnover.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.Turnover.Status = int32(a.Status) + appprovalOA.Turnover.ApprovalUsers = a.ApprovalUsers + appprovalOA.Turnover.CopyUsers = a.CopyUsers + appprovalOA.Turnover.ApplyType = a.ApprovalType.KeyWord + appprovalOA.Turnover.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.Turnover.Status = int32(a.Status) applyTimes := make([]ApplyTime, 0) for i := 0; i < len(in.ApprovalOA.Turnover.ApplyTimes); i++ { @@ -300,13 +302,13 @@ func (oa *ApprovalOA) addOtherInfoToModel(in *approval.CreateRequest, a *Approva M: in.ApprovalOA.Turnover.ApplyTimes[i].M, }) } - oa.Turnover.ApplyTimes = applyTimes + appprovalOA.Turnover.ApplyTimes = applyTimes case "leaveApply": - oa.LeaveApply.ApprovalUsers = a.ApprovalUsers - oa.LeaveApply.CopyUsers = a.CopyUsers - oa.LeaveApply.ApplyType = a.ApprovalType.KeyWord - oa.LeaveApply.ApprovalID = strconv.FormatUint(a.ID, 10) - oa.LeaveApply.Status = int32(a.Status) + appprovalOA.LeaveApply.ApprovalUsers = a.ApprovalUsers + appprovalOA.LeaveApply.CopyUsers = a.CopyUsers + appprovalOA.LeaveApply.ApplyType = a.ApprovalType.KeyWord + appprovalOA.LeaveApply.ApprovalID = strconv.FormatUint(a.ID, 10) + appprovalOA.LeaveApply.Status = int32(a.Status) default: return errors.New("未找到相关审批类型") } @@ -324,11 +326,12 @@ func (oa *ApprovalOA) UpdateApprovalContent(in *approval.CreateRequest, a *Appro oa.ID = entity.ID - if err := oa.copyOAToModel(in, a); err != nil { + approvalOA, err := oa.copyOAToModel(in, a) + if err != nil { return err } - return DB.Model(&oa).Updates(oa).Error + return DB.Model(&oa).Updates(approvalOA).Error } func (oa *ApprovalOA) BuildResContent(a *Approval, request *approval.CreateRequest) {