2022-07-28 09:18:01 +00:00
|
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2022-08-04 03:58:33 +00:00
|
|
|
|
"errors"
|
2023-01-16 08:09:19 +00:00
|
|
|
|
"fmt"
|
2023-06-21 06:54:47 +00:00
|
|
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/api/approval"
|
|
|
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/pkg/common/page"
|
|
|
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/pkg/m"
|
|
|
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/pkg/model"
|
|
|
|
|
"github.com/fonchain_enterprise/fonchain-approval-fork/pkg/serializer"
|
2022-07-28 09:18:01 +00:00
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type ApprovalProvider struct {
|
|
|
|
|
approval.UnimplementedApprovalServer
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-29 09:08:00 +00:00
|
|
|
|
func (a *ApprovalProvider) Create(ctx context.Context, in *approval.CreateRequest) (*approval.ApprovalResponse, error) {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
response := &approval.ApprovalResponse{}
|
|
|
|
|
|
2023-03-27 06:57:26 +00:00
|
|
|
|
//下载单子只能下载一次
|
|
|
|
|
if in.Type == model.TypeBundlePayPrice {
|
|
|
|
|
if model.ExistPayApproval(in) == true {
|
|
|
|
|
return response, errors.New("该画展宝已经有审批中或者审批通过的提交")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-18 08:13:28 +00:00
|
|
|
|
if model.LeaveBalanceUsefulTime[in.Type] == model.OnceAYear || model.LeaveBalanceUsefulTime[in.Type] == model.Once {
|
|
|
|
|
if model.ExistLeaveApplyApproval(in) == true {
|
|
|
|
|
if model.LeaveBalanceUsefulTime[in.Type] == model.OnceAYear {
|
|
|
|
|
return response, errors.New(m.ErrorOnceAYear)
|
|
|
|
|
} else if model.LeaveBalanceUsefulTime[in.Type] == model.Once {
|
|
|
|
|
return response, errors.New(m.ErrorOnce)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-23 02:32:53 +00:00
|
|
|
|
//if in.Type == model.TypeMakeUp {
|
|
|
|
|
// if model.CheckMakeUpApplyApproval(in) == true {
|
|
|
|
|
// return response, errors.New(m.ErrorOnce)
|
|
|
|
|
// }
|
|
|
|
|
//}
|
2023-05-22 07:25:45 +00:00
|
|
|
|
|
2022-07-28 09:18:01 +00:00
|
|
|
|
entity, err := model.StoreApproval(in)
|
2022-08-18 05:26:14 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-16 08:09:19 +00:00
|
|
|
|
if entity != nil {
|
|
|
|
|
response.ID = entity.ID
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
response.Success = true
|
|
|
|
|
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-14 08:48:45 +00:00
|
|
|
|
func (a *ApprovalProvider) UpdateExhibitionApplyID(ctx context.Context, in *approval.UpdateEhApplyIDRequest) (*approval.UpdateEhApplyIDResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.UpdateEhApplyIDResponse{}
|
|
|
|
|
model.DB.Model(&model.Exhibition{}).Where(&model.Exhibition{ApprovalID: in.ApprovalID}).Update("apply_id", in.ApplyId)
|
|
|
|
|
return response, nil
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) UsedNumByUser(ctx context.Context, in *approval.UsedNumByUserRequest) (*approval.UsedNumByUserResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.UsedNumByUserResponse{}
|
|
|
|
|
|
|
|
|
|
total := model.GetExhibitionNumByUser(in.Domain, in.SubmitterID)
|
|
|
|
|
|
|
|
|
|
response.Total = 0
|
|
|
|
|
if total > 0 {
|
|
|
|
|
response.Total = uint64(total)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-29 09:08:00 +00:00
|
|
|
|
func (a *ApprovalProvider) Update(ctx context.Context, in *approval.CreateRequest) (*approval.ApprovalResponse, error) {
|
2022-07-29 07:40:30 +00:00
|
|
|
|
|
|
|
|
|
response := &approval.ApprovalResponse{}
|
|
|
|
|
|
|
|
|
|
entity, err := model.UpdateApproval(in)
|
|
|
|
|
|
2022-07-30 03:41:22 +00:00
|
|
|
|
if err == nil {
|
|
|
|
|
response.ID = entity.ID
|
|
|
|
|
response.Success = true
|
|
|
|
|
}
|
2022-07-29 07:40:30 +00:00
|
|
|
|
|
|
|
|
|
return response, err
|
2022-08-04 03:58:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
func (a *ApprovalProvider) NowLevelByInfo(ctx context.Context, in *approval.NowLevelByInfoRequest) (*approval.WorkFlowResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.WorkFlowResponse{}
|
|
|
|
|
var approvalObj *model.Approval
|
|
|
|
|
|
|
|
|
|
if err := model.DB.First(&approvalObj, in.ApprovalID).Error; err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
workFlow, err1 := model.GetNowWorkFlowByApprovalId(approvalObj.ID)
|
|
|
|
|
|
|
|
|
|
if err1 != nil {
|
|
|
|
|
return response, err1
|
|
|
|
|
}
|
|
|
|
|
response.ID = workFlow.ID
|
2022-08-18 05:26:14 +00:00
|
|
|
|
response.UserID = workFlow.UserId
|
2022-08-16 10:45:28 +00:00
|
|
|
|
response.Status = uint64(workFlow.Status)
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-04 03:58:33 +00:00
|
|
|
|
func (a *ApprovalProvider) SetStatus(ctx context.Context, in *approval.StatusRequest) (*approval.StatusResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.StatusResponse{}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
2022-08-04 03:58:33 +00:00
|
|
|
|
var approvalObj *model.Approval
|
2022-08-16 10:45:28 +00:00
|
|
|
|
var err error
|
|
|
|
|
|
|
|
|
|
if in.Status == model.StatusDoing {
|
|
|
|
|
return response, errors.New("status code wrong")
|
|
|
|
|
}
|
2022-08-04 03:58:33 +00:00
|
|
|
|
|
|
|
|
|
if err := model.DB.First(&approvalObj, in.ID).Error; err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
2022-07-29 07:40:30 +00:00
|
|
|
|
|
2022-08-04 03:58:33 +00:00
|
|
|
|
if approvalObj.Status != model.StatusDoing {
|
|
|
|
|
return response, errors.New(m.ErrorWrongStatus)
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-29 02:20:45 +00:00
|
|
|
|
if err := model.UpdateLeaveBalance(approvalObj, in.LeaveBalance); err != nil {
|
|
|
|
|
return response, errors.New(m.ErrorUpdateLeaveBalance)
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
// 审批人审批内容
|
|
|
|
|
if in.Status == model.StatusFail {
|
|
|
|
|
err = approvalObj.Refuse(in.Reply, in.WorkFlowId)
|
|
|
|
|
} else {
|
|
|
|
|
err = approvalObj.Pass(in.Reply, in.WorkFlowId)
|
|
|
|
|
}
|
2022-08-04 03:58:33 +00:00
|
|
|
|
|
|
|
|
|
return response, err
|
2022-07-28 09:18:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
func (a *ApprovalProvider) Remove(ctx context.Context, in *approval.RemoveRequest) (*approval.RemoveResponse, error) {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-07-29 09:08:00 +00:00
|
|
|
|
response := &approval.RemoveResponse{}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
for _, ID := range in.IDs {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
err := model.DB.Transaction(func(tx *gorm.DB) error {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
var err error
|
|
|
|
|
var entity *model.Approval
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
// 确定有数据则执行删除
|
|
|
|
|
if err = model.DB.Where(&model.Approval{Domain: &in.Domain}).
|
|
|
|
|
Find(&entity, ID).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
//删除子关联数据
|
|
|
|
|
if err = entity.DeleteContent(); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
if err = model.DB.Where(&model.Approval{Domain: &in.Domain}).
|
|
|
|
|
Delete(&model.Approval{}, ID).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
//删除流
|
|
|
|
|
if err = model.DB.Where(&model.ApprovalWorkFlow{ApprovalID: ID}).
|
|
|
|
|
Delete(&model.ApprovalWorkFlow{}).Error; err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
return nil
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
response.Success = true
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-01 10:53:47 +00:00
|
|
|
|
func (a *ApprovalProvider) ChangeBundlePay(ctx context.Context, in *approval.ChangeBundlePayRequest) (*approval.CommonResponse, error) {
|
|
|
|
|
response := &approval.CommonResponse{}
|
|
|
|
|
|
|
|
|
|
m := &model.BundlePayPrice{Status: in.Status}
|
|
|
|
|
|
|
|
|
|
model.DB.Model(&model.BundlePayPrice{}).Where(&model.BundlePayPrice{ID: in.ID}).Updates(&m)
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) IsExistPayRight(ctx context.Context, in *approval.IsExistPayRightRequest) (*approval.IsExistPayRightResponse, error) {
|
|
|
|
|
response := &approval.IsExistPayRightResponse{IsPass: false}
|
|
|
|
|
|
|
|
|
|
var err error
|
|
|
|
|
var count int64
|
|
|
|
|
|
|
|
|
|
subQuery1 := model.DB.Model(&model.Approval{}).Where(&model.Approval{SubmitterID: in.UserId, Type: model.TypeBundlePayPrice, Status: model.StatusOk}).
|
|
|
|
|
Select("id")
|
|
|
|
|
|
|
|
|
|
model.DB.Model(&model.BundlePayPrice{}).Where("approval_id in (?)", subQuery1).Where(&model.BundlePayPrice{ShowUid: in.ShowUid}).Count(&count)
|
|
|
|
|
|
|
|
|
|
if count >= 1 {
|
|
|
|
|
response.IsPass = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-29 09:08:00 +00:00
|
|
|
|
func (a *ApprovalProvider) Detail(ctx context.Context, in *approval.DetailRequest) (*approval.CreateRequest, error) {
|
|
|
|
|
response := &approval.CreateRequest{}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
var err error
|
|
|
|
|
var entity *model.Approval
|
2023-03-20 10:26:13 +00:00
|
|
|
|
var briefEntity *model.Approval
|
|
|
|
|
|
|
|
|
|
if err := model.DB.Model(&model.Approval{}).First(&briefEntity, in.ID).Error; err != nil {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
return response, err
|
|
|
|
|
}
|
2023-03-22 02:24:24 +00:00
|
|
|
|
|
2023-03-20 10:26:13 +00:00
|
|
|
|
entity, err = briefEntity.GetApprovalInfo()
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
response = serializer.BuildApproval(entity, in.UserId)
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-29 07:40:30 +00:00
|
|
|
|
func (a *ApprovalProvider) Information(ctx context.Context, in *approval.InformationRequest) (*approval.InformationResponse, error) {
|
|
|
|
|
|
|
|
|
|
return model.ApprovalInfo(in)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) Viewed(ctx context.Context, in *approval.ViewedRequest) (*approval.ApprovalResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.ApprovalResponse{}
|
|
|
|
|
var err error
|
|
|
|
|
|
|
|
|
|
if err = model.Viewed(in); err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
response.ID = in.ID
|
|
|
|
|
response.Success = true
|
|
|
|
|
|
|
|
|
|
return response, err
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
func (a *ApprovalProvider) MySubmit(ctx context.Context, in *approval.ListRequest) (*approval.ListResponse, error) {
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
|
|
|
|
//获取人的 部门角色(1、管理组 2、超级管理 3、Leader角色)
|
2022-07-30 03:41:22 +00:00
|
|
|
|
response := &approval.ListResponse{}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
|
|
|
|
var list []*model.Approval
|
|
|
|
|
var count int64
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
list, count = model.MySubmitApprovals(in)
|
|
|
|
|
|
|
|
|
|
response.Count = uint64(count)
|
|
|
|
|
response.Data = serializer.BuildApprovals(list, in.UserID)
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) MyWork(ctx context.Context, in *approval.ListRequest) (*approval.ListResponse, error) {
|
|
|
|
|
|
|
|
|
|
//获取人的 部门角色(1、管理组 2、超级管理 3、Leader角色)
|
|
|
|
|
response := &approval.ListResponse{}
|
|
|
|
|
|
|
|
|
|
var list []*model.Approval
|
|
|
|
|
var count int64
|
|
|
|
|
|
2023-03-18 08:35:55 +00:00
|
|
|
|
if in.Status == 0 && in.ApprovedBossId == 0 {
|
|
|
|
|
list, count = model.MyAllWorkApprovals(in)
|
2023-04-13 12:08:55 +00:00
|
|
|
|
} else if in.Status == 4 && in.ApprovedBossId == 0 {
|
|
|
|
|
list, count = model.MyReadApprovals(in)
|
2023-03-18 08:35:55 +00:00
|
|
|
|
} else {
|
|
|
|
|
list, count = model.MyWorkApprovals(in)
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
|
|
|
|
response.Count = uint64(count)
|
2022-08-04 03:07:55 +00:00
|
|
|
|
response.Data = serializer.BuildApprovals(list, in.UserID)
|
2022-07-28 09:18:01 +00:00
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UpdateSetting 设置配置抄送者和审核者
|
|
|
|
|
func (a *ApprovalProvider) UpdateSetting(ctx context.Context, in *approval.SettingRequest) (*approval.SettingResponse, error) {
|
|
|
|
|
|
2022-07-29 07:40:30 +00:00
|
|
|
|
var err error
|
2022-07-28 09:18:01 +00:00
|
|
|
|
response := &approval.SettingResponse{}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
var setting model.ApprovalSetting
|
2022-07-28 09:18:01 +00:00
|
|
|
|
copyUsers := model.FormatCopyUsers(in.CopyUsers)
|
2022-08-16 10:45:28 +00:00
|
|
|
|
approvalUsers := model.FormatApproveUsers(in.ApprovalUsers)
|
|
|
|
|
if approvalUsers == nil && len(approvalUsers) == 0 {
|
|
|
|
|
return response, errors.New("必须要有抄送人")
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2022-07-29 07:40:30 +00:00
|
|
|
|
//首次
|
2022-08-16 10:45:28 +00:00
|
|
|
|
if err := model.DB.Model(&model.ApprovalSetting{}).
|
|
|
|
|
Where(&model.ApprovalSetting{Domain: in.Domain, KeyWord: in.KeyWord}).
|
2022-07-28 09:18:01 +00:00
|
|
|
|
First(&setting).Error; err != nil {
|
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
setting = model.ApprovalSetting{
|
|
|
|
|
KeyWord: in.KeyWord,
|
|
|
|
|
CopyUsers: copyUsers,
|
|
|
|
|
ApprovalUsers: approvalUsers,
|
|
|
|
|
Domain: in.Domain,
|
2022-07-28 09:18:01 +00:00
|
|
|
|
}
|
2022-07-30 08:44:54 +00:00
|
|
|
|
|
|
|
|
|
err = model.DB.Save(&setting).Error
|
|
|
|
|
|
2022-07-28 09:18:01 +00:00
|
|
|
|
} else {
|
2022-08-16 10:45:28 +00:00
|
|
|
|
setting.KeyWord = in.KeyWord
|
2022-07-28 09:18:01 +00:00
|
|
|
|
setting.CopyUsers = copyUsers
|
2022-08-16 10:45:28 +00:00
|
|
|
|
setting.ApprovalUsers = approvalUsers
|
|
|
|
|
//setting.ApproverID = in.ApproverID
|
|
|
|
|
//setting.ApproverName = in.ApproverName
|
2022-07-30 08:44:54 +00:00
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
err = model.DB.Where(&model.ApprovalSetting{Domain: in.Domain, KeyWord: in.KeyWord}).Updates(&setting).Error
|
2023-04-10 09:01:45 +00:00
|
|
|
|
|
2023-04-10 09:09:25 +00:00
|
|
|
|
fmt.Println(copyUsers == nil)
|
|
|
|
|
fmt.Println(copyUsers)
|
2023-04-10 09:01:45 +00:00
|
|
|
|
if copyUsers == nil { //空数组
|
2023-04-10 09:23:41 +00:00
|
|
|
|
model.DB.Exec("UPDATE approval_setting SET copy_users = '[]' WHERE id = ?", setting.ID)
|
2023-04-10 09:18:53 +00:00
|
|
|
|
//model.DB.Where(&model.ApprovalSetting{Domain: in.Domain, KeyWord: in.KeyWord}).Update("copy_users", "[]")
|
2023-04-10 09:01:45 +00:00
|
|
|
|
}
|
2023-04-10 09:18:53 +00:00
|
|
|
|
|
2022-07-28 09:18:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-07-30 08:44:54 +00:00
|
|
|
|
if err == nil {
|
|
|
|
|
response.ID = setting.ID
|
|
|
|
|
response.Success = true
|
|
|
|
|
}
|
2022-07-29 07:40:30 +00:00
|
|
|
|
|
|
|
|
|
return response, err
|
2022-07-28 09:18:01 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) DetailSetting(ctx context.Context, in *approval.DetailSettingRequest) (*approval.SettingRequest, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.SettingRequest{}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
var setting model.ApprovalSetting
|
2022-09-08 07:28:28 +00:00
|
|
|
|
if in.KeyWord == "" {
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
2022-07-28 09:18:01 +00:00
|
|
|
|
|
2023-01-16 08:09:19 +00:00
|
|
|
|
if err := model.DB.Model(&model.ApprovalSetting{}).Preload("ApprovalType").
|
2022-08-16 10:45:28 +00:00
|
|
|
|
Where(&model.ApprovalSetting{Domain: in.Domain, KeyWord: in.KeyWord}).
|
2022-07-28 09:18:01 +00:00
|
|
|
|
First(&setting).Error; err != nil {
|
|
|
|
|
response.Domain = in.Domain
|
|
|
|
|
} else {
|
|
|
|
|
response = serializer.BuildSetting(&setting)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) CreateType(ctx context.Context, in *approval.CreateTypeRequest) (*approval.TypeResponse, error) {
|
|
|
|
|
response := &approval.TypeResponse{}
|
2022-08-27 03:54:59 +00:00
|
|
|
|
|
2023-03-18 08:35:55 +00:00
|
|
|
|
fmt.Println("创建类型123123:", in.String())
|
2023-01-28 01:12:12 +00:00
|
|
|
|
//创建分组
|
|
|
|
|
groupId, err := model.GetGroupIdByName(in.GroupName, in.Domain)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
keyWord := model.KeyWordFromTitle(in.Title)
|
|
|
|
|
|
2022-08-27 03:54:59 +00:00
|
|
|
|
if model.DataExist(in.Domain, keyWord, in.Title) == true {
|
2022-08-18 05:26:14 +00:00
|
|
|
|
return response, errors.New(m.ErrorAlreadyExist)
|
|
|
|
|
}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
|
|
|
|
typeObj := model.ApprovalType{
|
2022-08-18 05:26:14 +00:00
|
|
|
|
KeyWord: keyWord,
|
2022-08-16 10:45:28 +00:00
|
|
|
|
Title: in.Title,
|
|
|
|
|
Domain: in.Domain,
|
2022-08-18 05:26:14 +00:00
|
|
|
|
Remark: in.Remark,
|
2023-01-28 01:12:12 +00:00
|
|
|
|
GroupId: groupId,
|
2023-01-16 08:09:19 +00:00
|
|
|
|
KeyJson: model.ToKeyInfos(in.KeyInfos),
|
2022-08-16 10:45:28 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := model.DB.Create(&typeObj).Error; err != nil {
|
|
|
|
|
return response, err
|
|
|
|
|
}
|
2022-08-18 05:26:14 +00:00
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
response.ID = typeObj.ID
|
|
|
|
|
response.Domain = typeObj.Domain
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) DetailType(ctx context.Context, in *approval.TypeResponse) (*approval.CreateTypeRequest, error) {
|
|
|
|
|
response := &approval.CreateTypeRequest{}
|
|
|
|
|
var typeObj model.ApprovalType
|
2023-03-01 10:53:47 +00:00
|
|
|
|
var err error
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
2023-03-01 10:53:47 +00:00
|
|
|
|
if in.Keyword != "" {
|
|
|
|
|
err = model.DB.Preload("ApprovalTypeGroup").Where(&model.ApprovalType{KeyWord: in.Keyword}).First(&typeObj).Error
|
|
|
|
|
} else {
|
|
|
|
|
err = model.DB.Preload("ApprovalTypeGroup").First(&typeObj, in.ID).Error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
2022-08-16 10:45:28 +00:00
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
response = serializer.BuildType(&typeObj)
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) UpdateType(ctx context.Context, in *approval.CreateTypeRequest) (*approval.TypeResponse, error) {
|
|
|
|
|
response := &approval.TypeResponse{}
|
|
|
|
|
var typeObj model.ApprovalType
|
|
|
|
|
|
|
|
|
|
if err := model.DB.First(&typeObj, in.ID).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
if typeObj.Title != in.Title && model.IsSystemKeyWork(in.Title) == true {
|
|
|
|
|
return response, errors.New(m.ErrorChangeType)
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
typeObj.Title = in.Title
|
2022-08-18 05:26:14 +00:00
|
|
|
|
typeObj.Remark = in.Remark
|
2023-03-18 08:35:55 +00:00
|
|
|
|
if len(in.KeyInfos) > 0 {
|
|
|
|
|
typeObj.KeyJson = model.ToKeyInfos(in.KeyInfos)
|
|
|
|
|
}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
|
|
|
|
if err := model.DB.Save(&typeObj).Error; err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
response.ID = in.ID
|
|
|
|
|
response.Domain = in.Domain
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *ApprovalProvider) AllType(ctx context.Context, in *approval.CommonRequest) (*approval.AllTypeResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.AllTypeResponse{}
|
|
|
|
|
var list []*model.ApprovalType
|
2022-08-18 05:26:14 +00:00
|
|
|
|
var count int64
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
2023-01-28 01:12:12 +00:00
|
|
|
|
modelObj := model.DB.Model(&model.ApprovalType{}).Preload("ApprovalTypeGroup").
|
|
|
|
|
Where(&model.ApprovalType{Domain: in.Domain, GroupId: in.GroupId}).Order("id desc")
|
2022-08-18 05:26:14 +00:00
|
|
|
|
modelObj.Count(&count)
|
|
|
|
|
|
|
|
|
|
if in.Page != 0 && in.PageSize != 0 {
|
|
|
|
|
modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize))
|
2022-08-16 10:45:28 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
modelObj.Find(&list)
|
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
response.Data = serializer.BuildTypes(list)
|
|
|
|
|
|
2022-08-18 05:26:14 +00:00
|
|
|
|
response.Count = uint64(count)
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-28 01:12:12 +00:00
|
|
|
|
func (a *ApprovalProvider) AllGroup(ctx context.Context, in *approval.CommonRequest) (*approval.AllGroupResponse, error) {
|
|
|
|
|
|
|
|
|
|
response := &approval.AllGroupResponse{}
|
|
|
|
|
var list []*model.ApprovalTypeGroup
|
|
|
|
|
var count int64
|
|
|
|
|
|
|
|
|
|
modelObj := model.DB.Model(&model.ApprovalTypeGroup{}).Preload("ApprovalTypes").
|
|
|
|
|
Where(&model.ApprovalTypeGroup{Domain: &in.Domain}).Order("id desc")
|
|
|
|
|
modelObj.Count(&count)
|
|
|
|
|
|
|
|
|
|
if in.Page != 0 && in.PageSize != 0 {
|
|
|
|
|
modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
modelObj.Find(&list)
|
|
|
|
|
|
|
|
|
|
response.Data = serializer.BuildGroups(list)
|
|
|
|
|
|
|
|
|
|
response.Count = uint64(count)
|
|
|
|
|
|
|
|
|
|
return response, nil
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-23 08:20:06 +00:00
|
|
|
|
func (a *ApprovalProvider) RemoveType(ctx context.Context, in *approval.RemoveRequest) (*approval.StatusResponse, error) {
|
|
|
|
|
response := &approval.StatusResponse{}
|
2022-08-16 10:45:28 +00:00
|
|
|
|
|
2022-08-23 08:20:06 +00:00
|
|
|
|
if len(in.IDs) <= 0 {
|
|
|
|
|
return response, errors.New(m.ErrorNotFound)
|
2022-08-16 10:45:28 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-08-23 08:20:06 +00:00
|
|
|
|
if err := model.DB.Delete(&model.ApprovalType{}, in.IDs).Error; err != nil {
|
|
|
|
|
return response, err
|
2022-08-16 10:45:28 +00:00
|
|
|
|
}
|
2022-08-18 05:26:14 +00:00
|
|
|
|
|
2022-08-16 10:45:28 +00:00
|
|
|
|
return response, nil
|
|
|
|
|
}
|