147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package model
 | |
| 
 | |
| import (
 | |
| 	"database/sql/driver"
 | |
| 	"encoding/json"
 | |
| 	"github.com/fonchain_enterprise/fonchain-approval/api/approval"
 | |
| 	"gorm.io/plugin/soft_delete"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| type CopyUser struct {
 | |
| 	ID       uint64
 | |
| 	Name     string
 | |
| 	IsViewed bool
 | |
| }
 | |
| 
 | |
| type CopyUsers []CopyUser
 | |
| 
 | |
| type ApprovalUser struct {
 | |
| 	ID   uint64
 | |
| 	Name string
 | |
| }
 | |
| 
 | |
| type ApprovalUsers []ApprovalUser
 | |
| 
 | |
| // ApprovalSetting 部门抄送人设置
 | |
| type ApprovalSetting struct {
 | |
| 	ID            uint64                `gorm:"primaryKey;column:id" json:"id"`     // ID
 | |
| 	DeletedAt     soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除标记
 | |
| 	CreatedAt     time.Time             `gorm:"column:created_at" json:"createdAt"` // 创建时间
 | |
| 	UpdatedAt     time.Time             `gorm:"column:updated_at" json:"updatedAt"` // 更新时间
 | |
| 	KeyWord       string                `gorm:"column:key_word" json:"keyWord"`
 | |
| 	ApprovalUsers ApprovalUsers         `gorm:"column:approval_users" json:"approvalUsers"`
 | |
| 	CopyUsers     CopyUsers             `gorm:"column:copy_users" json:"copyUsers"`
 | |
| 	ApprovalType  *ApprovalType         `gorm:"foreignKey:key_word;references:key_word" json:"approvalType"`
 | |
| 
 | |
| 	Domain string `gorm:"column:domain" json:"domain"`
 | |
| }
 | |
| 
 | |
| // TableName get sql table name.获取数据库表名
 | |
| func (m *ApprovalSetting) TableName() string {
 | |
| 	return "approval_setting"
 | |
| }
 | |
| 
 | |
| func (j *CopyUsers) Scan(src interface{}) error {
 | |
| 	return json.Unmarshal(src.([]byte), j)
 | |
| }
 | |
| 
 | |
| func (j CopyUsers) Value() (driver.Value, error) {
 | |
| 
 | |
| 	v, err := json.Marshal(j)
 | |
| 
 | |
| 	return string(v), err
 | |
| }
 | |
| 
 | |
| func (s *ApprovalUsers) Scan(src interface{}) error {
 | |
| 	return json.Unmarshal(src.([]byte), s)
 | |
| }
 | |
| 
 | |
| func (s ApprovalUsers) Value() (driver.Value, error) {
 | |
| 
 | |
| 	v, err := json.Marshal(s)
 | |
| 
 | |
| 	return string(v), err
 | |
| }
 | |
| 
 | |
| func GetApprovalSettingFromKeyWord(Domain, keyWord string) (setting *ApprovalSetting, err error) {
 | |
| 
 | |
| 	err = DB.Model(&ApprovalSetting{}).Where(&ApprovalSetting{KeyWord: keyWord, Domain: Domain}).First(&setting).Error
 | |
| 
 | |
| 	return setting, err
 | |
| }
 | |
| 
 | |
| func FormatCopyUsers(copyUsers []*approval.CopyUser) CopyUsers {
 | |
| 	var res CopyUsers
 | |
| 	copyMap := make(map[uint64]struct{})
 | |
| 
 | |
| 	// copyer
 | |
| 	for _, copyUser := range copyUsers {
 | |
| 
 | |
| 		if _, ok := copyMap[copyUser.ID]; ok { //存在
 | |
| 			continue
 | |
| 		}
 | |
| 
 | |
| 		temp := CopyUser{
 | |
| 			ID:   copyUser.ID,
 | |
| 			Name: copyUser.Name,
 | |
| 		}
 | |
| 
 | |
| 		res = append(res, temp)
 | |
| 	}
 | |
| 
 | |
| 	return res
 | |
| }
 | |
| 
 | |
| func FormatApproveUsers(copyUsers []*approval.ApprovalUser) ApprovalUsers {
 | |
| 	var res ApprovalUsers
 | |
| 
 | |
| 	// copyer
 | |
| 	for _, copyUser := range copyUsers {
 | |
| 		temp := ApprovalUser{
 | |
| 			ID:   copyUser.ID,
 | |
| 			Name: copyUser.Name,
 | |
| 		}
 | |
| 		res = append(res, temp)
 | |
| 	}
 | |
| 
 | |
| 	return res
 | |
| }
 | |
| 
 | |
| //GetCombineApproveUsers 混合获取
 | |
| func (m *ApprovalSetting) GetCombineApproveUsers(approvalUser []ApprovalUser) []ApprovalUser {
 | |
| 	approvalUserMap := make(map[uint64]struct{})
 | |
| 
 | |
| 	// copyer
 | |
| 	for _, tt := range approvalUser {
 | |
| 		if _, ok := approvalUserMap[tt.ID]; ok == false {
 | |
| 			approvalUserMap[tt.ID] = struct{}{}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	for _, tt := range m.ApprovalUsers {
 | |
| 		if _, ok := approvalUserMap[tt.ID]; ok == false {
 | |
| 			approvalUserMap[tt.ID] = struct{}{}
 | |
| 			approvalUser = append(approvalUser, tt)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return approvalUser
 | |
| }
 | |
| 
 | |
| func FormatToResponse(copyUsers CopyUsers) []*approval.CopyUser {
 | |
| 	var res []*approval.CopyUser
 | |
| 
 | |
| 	for _, copyUser := range copyUsers {
 | |
| 		temp := &approval.CopyUser{
 | |
| 			ID:       copyUser.ID,
 | |
| 			Name:     copyUser.Name,
 | |
| 			IsViewed: copyUser.IsViewed,
 | |
| 		}
 | |
| 
 | |
| 		res = append(res, temp)
 | |
| 	}
 | |
| 
 | |
| 	return res
 | |
| }
 |