You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.8 KiB
Go

package service
import (
"context"
"fmt"
"github.com/fonchain_enterprise/fonchain-approval/api/approval"
"github.com/fonchain_enterprise/fonchain-approval/pkg/model"
"github.com/fonchain_enterprise/fonchain-approval/pkg/serializer"
"gorm.io/gorm"
)
type ApprovalProvider struct {
approval.UnimplementedApprovalServer
}
func (a *ApprovalProvider) Create(ctx context.Context, in *approval.ApprovalRequest) (*approval.ApprovalResponse, error) {
response := &approval.ApprovalResponse{}
entity, err := model.StoreApproval(in)
response.ID = entity.ID
response.Success = true
return response, err
}
func (a *ApprovalProvider) Update(ctx context.Context, in *approval.ApprovalRequest) (*approval.ApprovalResponse, error) {
return nil, nil
}
func (a *ApprovalProvider) Remove(ctx context.Context, in *approval.ApprovalDetail) (*approval.ApprovalRemove, error) {
response := &approval.ApprovalRemove{}
err := model.DB.Transaction(func(tx *gorm.DB) error {
var err error
var entity *model.Approval
// 确定有数据则执行删除
if err = model.DB.Where(&model.Approval{Domain: in.Domain}).
Find(&entity, in.ID).Error; err != nil {
return err
}
//删除子关联数据
if err = entity.DeleteContent(); err != nil {
return err
}
if err = model.DB.Where(&model.Approval{Domain: in.Domain}).
Delete(&model.Approval{}, in.ID).Error; err != nil {
return err
}
return nil
})
if err != nil {
return nil, err
}
response.Success = true
return response, nil
}
func (a *ApprovalProvider) Detail(ctx context.Context, in *approval.ApprovalDetail) (*approval.ApprovalRequest, error) {
response := &approval.ApprovalRequest{}
var err error
var entity *model.Approval
if err := model.DB.First(&entity, in.ID).Error; err != nil {
return response, err
}
response = serializer.BuildApproval(entity)
return response, err
}
func (a *ApprovalProvider) List(ctx context.Context, in *approval.ApprovalListRequest) (*approval.ApprovalListResponse, error) {
//获取人的 部门角色1、管理组 2、超级管理 3、Leader角色
response := &approval.ApprovalListResponse{}
var list []*model.Approval
var count int64
list, count = model.ApprovalList(in)
response.Count = uint64(count)
response.Data = serializer.BuildApprovals(list)
return response, nil
}
// UpdateSetting 设置配置抄送者和审核者
func (a *ApprovalProvider) UpdateSetting(ctx context.Context, in *approval.SettingRequest) (*approval.SettingResponse, error) {
exhibit := ""
exhibit += in.Domain
fmt.Println(exhibit)
response := &approval.SettingResponse{}
var setting model.DepartmentApprovalSetting
copyUsers := model.FormatCopyUsers(in.CopyUsers)
if err := model.DB.Model(&model.DepartmentApprovalSetting{}).
Where(&model.DepartmentApprovalSetting{Domain: in.Domain, DepartmentID: in.DepartmentId}).
First(&setting).Error; err != nil {
setting = model.DepartmentApprovalSetting{
DepartmentID: in.DepartmentId,
CopyUsers: copyUsers,
ApproverID: in.ApproverId,
ApproverName: in.ApproverName,
Domain: in.Domain,
}
model.DB.Create(&setting)
} else {
setting.DepartmentID = in.DepartmentId
setting.CopyUsers = copyUsers
setting.ApproverID = in.ApproverId
setting.ApproverName = in.ApproverName
model.DB.Save(&setting)
}
response.ID = setting.ID
response.Success = true
return response, nil
}
func (a *ApprovalProvider) DetailSetting(ctx context.Context, in *approval.DetailSettingRequest) (*approval.SettingRequest, error) {
response := &approval.SettingRequest{}
var setting model.DepartmentApprovalSetting
if err := model.DB.Model(&model.DepartmentApprovalSetting{}).
Where(&model.DepartmentApprovalSetting{Domain: in.Domain, DepartmentID: in.DepartmentId}).
First(&setting).Error; err != nil {
response.Domain = in.Domain
} else {
response = serializer.BuildSetting(&setting)
}
return response, nil
}