f
This commit is contained in:
@@ -64,8 +64,22 @@ func (c *ContractInfo) BeforeCreate(tx *gorm.DB) error {
|
||||
|
||||
// ================ 工厂方法 ================
|
||||
|
||||
// NewContractInfo 创建新的合同信息
|
||||
// NewContractInfo 创建新的合同信息(自动生成合同编号)
|
||||
func NewContractInfo(enterpriseInfoID, userID, contractName string, contractType ContractType, contractFileID, contractFileURL string) (*ContractInfo, error) {
|
||||
contractCode := GenerateContractCode(contractType)
|
||||
return newContractInfo(enterpriseInfoID, userID, contractName, contractType, contractFileID, contractFileURL, contractCode)
|
||||
}
|
||||
|
||||
// NewContractInfoWithCode 创建新的合同信息(使用指定的合同编号)
|
||||
func NewContractInfoWithCode(enterpriseInfoID, userID, contractName string, contractType ContractType, contractFileID, contractFileURL, contractCode string) (*ContractInfo, error) {
|
||||
if contractCode == "" {
|
||||
return nil, fmt.Errorf("合同编号不能为空")
|
||||
}
|
||||
return newContractInfo(enterpriseInfoID, userID, contractName, contractType, contractFileID, contractFileURL, contractCode)
|
||||
}
|
||||
|
||||
// newContractInfo 创建合同信息的内部实现
|
||||
func newContractInfo(enterpriseInfoID, userID, contractName string, contractType ContractType, contractFileID, contractFileURL, contractCode string) (*ContractInfo, error) {
|
||||
if enterpriseInfoID == "" {
|
||||
return nil, fmt.Errorf("企业信息ID不能为空")
|
||||
}
|
||||
@@ -90,9 +104,6 @@ func NewContractInfo(enterpriseInfoID, userID, contractName string, contractType
|
||||
return nil, fmt.Errorf("无效的合同类型: %s", contractType)
|
||||
}
|
||||
|
||||
// 生成合同编码
|
||||
contractCode := GenerateContractCode(contractType)
|
||||
|
||||
contractInfo := &ContractInfo{
|
||||
ID: uuid.New().String(),
|
||||
EnterpriseInfoID: enterpriseInfoID,
|
||||
@@ -338,22 +349,24 @@ type ContractInfoDeletedEvent struct {
|
||||
}
|
||||
|
||||
// GenerateContractCode 生成合同编码
|
||||
// 格式:HYDATA-YYYYMMDD-R{6位随机数}(R=入驻)
|
||||
func GenerateContractCode(contractType ContractType) string {
|
||||
prefix := "CON"
|
||||
now := time.Now()
|
||||
dateStr := now.Format("20060102")
|
||||
|
||||
prefix := "R"
|
||||
switch contractType {
|
||||
case ContractTypeCooperation:
|
||||
prefix += "01"
|
||||
prefix = "R" // 入驻
|
||||
case ContractTypeReSign:
|
||||
prefix += "02"
|
||||
prefix = "B" // 补签
|
||||
}
|
||||
|
||||
// 获取当前日期,格式为YYYYMMDD
|
||||
now := time.Now()
|
||||
dateStr := now.Format("20060102") // YYYYMMDD格式
|
||||
|
||||
// 生成一个随机的6位数字
|
||||
randNum := fmt.Sprintf("%06d", rand.Intn(1000000))
|
||||
|
||||
// 格式:CON + 类型标识 + YYYYMMDD + 6位随机数
|
||||
return fmt.Sprintf("%s%s%s", prefix, dateStr, randNum)
|
||||
return fmt.Sprintf("HYDATA-%s-%s%s", dateStr, prefix, randNum)
|
||||
}
|
||||
|
||||
// GenerateContractCodeWithPrefix 使用指定前缀生成合同编码
|
||||
func GenerateContractCodeWithPrefix(contractType ContractType) string {
|
||||
return GenerateContractCode(contractType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user