...
|
...
|
@@ -705,12 +705,12 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
if err := updateCooperationContractCommand.ValidateCommand(); err != nil {
|
|
|
return nil, application.ThrowError(application.ARG_ERROR, err.Error())
|
|
|
}
|
|
|
transactionContext, err := factory.CreateTransactionContext(nil)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
transactionContext, err1 := factory.CreateTransactionContext(nil)
|
|
|
if err1 != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err1.Error())
|
|
|
}
|
|
|
if err := transactionContext.StartTransaction(); err != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
if err2 := transactionContext.StartTransaction(); err2 != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error())
|
|
|
}
|
|
|
defer func() {
|
|
|
_ = transactionContext.RollbackTransaction()
|
...
|
...
|
@@ -718,59 +718,76 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
|
|
|
// 公司REST服务初始化
|
|
|
var companyService service.CompanyService
|
|
|
if value, err := factory.CreateCompanyService(map[string]interface{}{}); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if value, err3 := factory.CreateCompanyService(map[string]interface{}{}); err3 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error())
|
|
|
} else {
|
|
|
companyService = value
|
|
|
}
|
|
|
|
|
|
// 获取公司信息
|
|
|
var company *domain.Company
|
|
|
if data, err := companyService.CompanyFrom(updateCooperationContractCommand.CompanyId); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err4 := companyService.CompanyFrom(updateCooperationContractCommand.CompanyId); err4 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err4.Error())
|
|
|
} else {
|
|
|
company = data
|
|
|
}
|
|
|
|
|
|
// 组织机构REST服务初始化
|
|
|
var organizationService service.OrgService
|
|
|
if value, err := factory.CreateOrganizationService(map[string]interface{}{}); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if value, err5 := factory.CreateOrganizationService(map[string]interface{}{}); err5 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err5.Error())
|
|
|
} else {
|
|
|
organizationService = value
|
|
|
}
|
|
|
|
|
|
// 获取组织机构信息
|
|
|
var organization *domain.Org
|
|
|
if data, err := organizationService.OrgFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err6 := organizationService.OrgFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId); err6 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err6.Error())
|
|
|
} else {
|
|
|
organization = data
|
|
|
}
|
|
|
|
|
|
var cooperationContractRepository domain.CooperationContractRepository
|
|
|
if value, err := factory.CreateCooperationContractRepository(map[string]interface{}{
|
|
|
// 共创合约变更记录仓储初始化
|
|
|
var cooperationContractChangeLogRepository domain.CooperationContractChangeLogRepository
|
|
|
if value, err := factory.CreateCooperationContractChangeLogRepository(map[string]interface{}{
|
|
|
"transactionContext": transactionContext,
|
|
|
}); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
} else {
|
|
|
cooperationContractChangeLogRepository = value
|
|
|
}
|
|
|
|
|
|
// 共创合约仓储初始化
|
|
|
var cooperationContractRepository domain.CooperationContractRepository
|
|
|
if value, err7 := factory.CreateCooperationContractRepository(map[string]interface{}{
|
|
|
"transactionContext": transactionContext,
|
|
|
}); err7 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err7.Error())
|
|
|
} else {
|
|
|
cooperationContractRepository = value
|
|
|
}
|
|
|
cooperationContract, err := cooperationContractRepository.FindOne(map[string]interface{}{"cooperationContractId": updateCooperationContractCommand.CooperationContractId})
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
|
|
|
// 获取待更新的共创合约
|
|
|
cooperationContract, err8 := cooperationContractRepository.FindOne(map[string]interface{}{"cooperationContractId": updateCooperationContractCommand.CooperationContractId})
|
|
|
if err8 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err8.Error())
|
|
|
}
|
|
|
if cooperationContract == nil {
|
|
|
return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateCooperationContractCommand.CooperationContractId)))
|
|
|
}
|
|
|
|
|
|
cooperationContractFound := cooperationContract
|
|
|
|
|
|
// 更新合约基础信息
|
|
|
if err := cooperationContract.Update(tool_funs.SimpleStructToMap(updateCooperationContractCommand)); err != nil {
|
|
|
return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
|
|
|
if err9 := cooperationContract.Update(tool_funs.SimpleStructToMap(updateCooperationContractCommand)); err9 != nil {
|
|
|
return nil, application.ThrowError(application.BUSINESS_ERROR, err9.Error())
|
|
|
}
|
|
|
|
|
|
// 用户REST服务初始化
|
|
|
var userService service.UserService
|
|
|
if value, err := factory.CreateUserService(map[string]interface{}{}); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if value, err10 := factory.CreateUserService(map[string]interface{}{}); err10 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err10.Error())
|
|
|
} else {
|
|
|
userService = value
|
|
|
}
|
...
|
...
|
@@ -778,12 +795,20 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
// 获取发起人
|
|
|
var sponsor *domain.User
|
|
|
sponsorUid, _ := strconv.ParseInt(updateCooperationContractCommand.SponsorUid, 10, 64)
|
|
|
if data, err := userService.OperatorFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, sponsorUid); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err11 := userService.OperatorFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, sponsorUid); err11 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err11.Error())
|
|
|
} else {
|
|
|
sponsor = data
|
|
|
}
|
|
|
|
|
|
// 获取操作人
|
|
|
var operator *domain.User
|
|
|
if data, err := userService.OperatorFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, updateCooperationContractCommand.UserId); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
} else {
|
|
|
operator = data
|
|
|
}
|
|
|
|
|
|
// 更新发起人
|
|
|
cooperationContract.CooperationContractSponsor = sponsor
|
|
|
|
...
|
...
|
@@ -792,8 +817,8 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
for _, relevantPersonUid := range updateCooperationContractCommand.RelevantPeople {
|
|
|
var relevantDomain *domain.Relevant
|
|
|
relevantUid, _ := strconv.ParseInt(relevantPersonUid, 10, 64)
|
|
|
if data, err := userService.RelevantFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, relevantUid); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err12 := userService.RelevantFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, relevantUid); err12 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err12.Error())
|
|
|
} else {
|
|
|
relevantDomain = data
|
|
|
}
|
...
|
...
|
@@ -821,8 +846,8 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
for _, undertaker := range updateCooperationContractCommand.Undertakers {
|
|
|
var undertakerDomain *domain.Undertaker
|
|
|
undertakerUid, _ := strconv.ParseInt(undertaker.UserId, 10, 64)
|
|
|
if data, err := userService.UndertakerFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, undertakerUid); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err13 := userService.UndertakerFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, undertakerUid); err13 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err13.Error())
|
|
|
} else {
|
|
|
undertakerDomain = data
|
|
|
}
|
...
|
...
|
@@ -831,8 +856,8 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
var referrerDomain *domain.Referrer
|
|
|
referrerUid, _ := strconv.ParseInt(undertaker.ReferrerId, 10, 64)
|
|
|
if referrerUid > 0 {
|
|
|
if data, err := userService.ReferrerFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, referrerUid); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err14 := userService.ReferrerFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, referrerUid); err14 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err14.Error())
|
|
|
} else {
|
|
|
referrerDomain = data
|
|
|
}
|
...
|
...
|
@@ -840,18 +865,21 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
|
|
|
// 获取业务员
|
|
|
var salesmanDomain *domain.Salesman
|
|
|
salesmanUid, _ := strconv.ParseInt(undertaker.SalesmanId, 10, 64)
|
|
|
salesmanUid, err22 := strconv.ParseInt(undertaker.SalesmanId, 10, 64)
|
|
|
if err22 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err22.Error())
|
|
|
}
|
|
|
if salesmanUid > 0 {
|
|
|
if data, err := userService.SalesmanFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, salesmanUid); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
if data, err15 := userService.SalesmanFrom(updateCooperationContractCommand.CompanyId, updateCooperationContractCommand.OrgId, salesmanUid); err15 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err15.Error())
|
|
|
} else {
|
|
|
salesmanDomain = data
|
|
|
}
|
|
|
}
|
|
|
|
|
|
undertakerId, err3 := strconv.ParseInt(undertaker.UndertakerId, 10, 64)
|
|
|
if err3 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err3.Error())
|
|
|
undertakerId, err16 := strconv.ParseInt(undertaker.UndertakerId, 10, 64)
|
|
|
if err16 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err16.Error())
|
|
|
}
|
|
|
undertakers = append(undertakers, &domain.Undertaker{
|
|
|
UndertakerId: undertakerId,
|
...
|
...
|
@@ -877,9 +905,9 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
// 获取分红规则列表
|
|
|
var dividendsIncentivesRules []*domain.DividendsIncentivesRule
|
|
|
for _, dividendsIncentivesRule := range updateCooperationContractCommand.DividendsIncentivesRules {
|
|
|
dividendsIncentivesRuleId, err2 := strconv.ParseInt(dividendsIncentivesRule.DividendsIncentivesRuleId, 10, 64)
|
|
|
if err2 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error())
|
|
|
dividendsIncentivesRuleId, err17 := strconv.ParseInt(dividendsIncentivesRule.DividendsIncentivesRuleId, 10, 64)
|
|
|
if err17 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err17.Error())
|
|
|
}
|
|
|
dividendsIncentivesRules = append(dividendsIncentivesRules, &domain.DividendsIncentivesRule{
|
|
|
DividendsIncentivesRuleId: dividendsIncentivesRuleId,
|
...
|
...
|
@@ -903,9 +931,9 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
// 获取金额激励规则列表
|
|
|
var moneyIncentivesRules []*domain.MoneyIncentivesRule
|
|
|
for _, moneyIncentivesRule := range updateCooperationContractCommand.MoneyIncentivesRules {
|
|
|
moneyIncentivesRuleId, err4 := strconv.ParseInt(moneyIncentivesRule.MoneyIncentivesRuleId, 10, 64)
|
|
|
if err4 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err4.Error())
|
|
|
moneyIncentivesRuleId, err18 := strconv.ParseInt(moneyIncentivesRule.MoneyIncentivesRuleId, 10, 64)
|
|
|
if err18 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err18.Error())
|
|
|
}
|
|
|
moneyIncentivesRules = append(moneyIncentivesRules, &domain.MoneyIncentivesRule{
|
|
|
MoneyIncentivesRuleId: moneyIncentivesRuleId,
|
...
|
...
|
@@ -927,13 +955,190 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC |
|
|
// 更新金额激励规则列表
|
|
|
cooperationContract.MoneyIncentivesRules = moneyIncentivesRules
|
|
|
|
|
|
if cooperationContract, err := cooperationContractRepository.Save(cooperationContract); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
// 判断激励规则变更
|
|
|
incentivesType := 0
|
|
|
if len(dividendsIncentivesRules) > 0 {
|
|
|
incentivesType = domain.TYPE_DIVIDNEDS_INCENTIVES
|
|
|
} else if len(moneyIncentivesRules) > 0 {
|
|
|
incentivesType = domain.TYPE_MONEY_INCENTIVES
|
|
|
}
|
|
|
cooperationContract.IncentivesType = int32(incentivesType)
|
|
|
|
|
|
// 保存共创合约变更
|
|
|
if cooperationContractSaved, err19 := cooperationContractRepository.Save(cooperationContract); err19 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err19.Error())
|
|
|
} else {
|
|
|
if err := transactionContext.CommitTransaction(); err != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
// 保存共创合约变更记录
|
|
|
// 原【(激励阶段:激励百分点,阶段有效期,推荐人抽点,关联业务员抽点),(激励阶段:激励百分点,阶段有效期,推荐人抽点,关联业务员抽点)】-->更新后【(激励阶段:激励百分点,阶段有效期,推荐人抽点,关联业务员抽点)】
|
|
|
var incentivesRuleChange string
|
|
|
var incentivesRuleChangeDetail string
|
|
|
if cooperationContractFound.IncentivesType != cooperationContractSaved.IncentivesType && cooperationContractFound.IncentivesType == domain.TYPE_DIVIDNEDS_INCENTIVES && cooperationContractSaved.IncentivesType == domain.TYPE_MONEY_INCENTIVES { // 1.激励类型变更
|
|
|
// 业绩分红-->金额激励
|
|
|
incentivesRuleChange = cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractFound.IncentivesType)) + "-->" + cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractSaved.IncentivesType))
|
|
|
|
|
|
//【第一阶段:20,2021-01-01~2021-12-31,,,;第二阶段:20,2021-01-01~2021-12-31,30,10】变更为【第一阶段:20,2021-01-01~2021-12-31,,,;】
|
|
|
// 原业绩分红激励规则
|
|
|
var dividendsIncentivesRuleOriginal string
|
|
|
for _, dividendsIncentivesRule := range cooperationContractFound.DividendsIncentivesRules {
|
|
|
dividendsIncentivesRuleOriginal = dividendsIncentivesRuleOriginal + dividendsIncentivesRule.DividendsIncentivesStageCN +
|
|
|
":" + fmt.Sprint(dividendsIncentivesRule.DividendsIncentivesPercentage) +
|
|
|
"," + dividendsIncentivesRule.DividendsIncentivesStageStart.Format("2006-01-02") +
|
|
|
"~" + dividendsIncentivesRule.DividendsIncentivesStageEnd.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
dividendsIncentivesRuleOriginalTmp := "【" + dividendsIncentivesRuleOriginal + "】"
|
|
|
|
|
|
// 变更后的金额激励规则
|
|
|
var moneyIncentivesRuleChanged string
|
|
|
for _, moneyIncentivesRule := range cooperationContractSaved.MoneyIncentivesRules {
|
|
|
moneyIncentivesRuleChanged = moneyIncentivesRuleChanged + moneyIncentivesRule.MoneyIncentivesStageCN +
|
|
|
":" +
|
|
|
"," + moneyIncentivesRule.MoneyIncentivesStageStart.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
moneyIncentivesRuleOriginalTmp := "【" + moneyIncentivesRuleChanged + "】"
|
|
|
|
|
|
// 拼接规则变更
|
|
|
incentivesRuleChangeDetail = dividendsIncentivesRuleOriginalTmp + " 变更为 " + moneyIncentivesRuleOriginalTmp
|
|
|
} else if cooperationContractFound.IncentivesType != cooperationContractSaved.IncentivesType && cooperationContractFound.IncentivesType == domain.TYPE_MONEY_INCENTIVES && cooperationContractSaved.IncentivesType == domain.TYPE_DIVIDNEDS_INCENTIVES {
|
|
|
// 金额激励-->业绩分红
|
|
|
incentivesRuleChange = cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractFound.IncentivesType)) + "-->" + cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractSaved.IncentivesType))
|
|
|
//【第一阶段:20,2021-01-01~2021-12-31,,,;第二阶段:20,2021-01-01~2021-12-31,30,10】变更为【第一阶段:20,2021-01-01~2021-12-31,,,;】
|
|
|
|
|
|
// 原金额激励规则
|
|
|
var moneyIncentivesRuleOriginal string
|
|
|
for _, moneyIncentivesRule := range cooperationContractFound.MoneyIncentivesRules {
|
|
|
moneyIncentivesRuleOriginal = moneyIncentivesRuleOriginal + moneyIncentivesRule.MoneyIncentivesStageCN +
|
|
|
":" +
|
|
|
"," + moneyIncentivesRule.MoneyIncentivesStageStart.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
moneyIncentivesRuleOriginalTmp := "【" + moneyIncentivesRuleOriginal + "】"
|
|
|
|
|
|
// 变更后的业绩分红激励规则
|
|
|
var dividendsIncentivesRuleChanged string
|
|
|
for _, dividendsIncentivesRule := range cooperationContractSaved.DividendsIncentivesRules {
|
|
|
dividendsIncentivesRuleChanged = dividendsIncentivesRuleChanged + dividendsIncentivesRule.DividendsIncentivesStageCN +
|
|
|
":" + fmt.Sprint(dividendsIncentivesRule.DividendsIncentivesPercentage) +
|
|
|
"," + dividendsIncentivesRule.DividendsIncentivesStageStart.Format("2006-01-02") +
|
|
|
"~" + dividendsIncentivesRule.DividendsIncentivesStageEnd.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
dividendsIncentivesRuleOriginalTmp := "【" + dividendsIncentivesRuleChanged + "】"
|
|
|
|
|
|
// 拼接规则变更
|
|
|
incentivesRuleChangeDetail = moneyIncentivesRuleOriginalTmp + " 变更为 " + dividendsIncentivesRuleOriginalTmp
|
|
|
} else { // 2.激励规则变更
|
|
|
if cooperationContractFound.IncentivesType == domain.TYPE_DIVIDNEDS_INCENTIVES { // 业绩分红激励规则变更
|
|
|
if !cooperationContract.DividendsIncentivesRuleSliceEqualBCE(cooperationContractFound.DividendsIncentivesRules, cooperationContractSaved.DividendsIncentivesRules) {
|
|
|
// 业绩分红-->业绩分红
|
|
|
incentivesRuleChange = cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractFound.IncentivesType)) + "-->" + cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractSaved.IncentivesType))
|
|
|
//【第一阶段:20,2021-01-01~2021-12-31,,,;第二阶段:20,2021-01-01~2021-12-31,30,10】变更为【第一阶段:20,2021-01-01~2021-12-31,,,;】
|
|
|
|
|
|
// 原业绩分红激励规则
|
|
|
var dividendsIncentivesRuleOriginal string
|
|
|
for _, dividendsIncentivesRule := range cooperationContractFound.DividendsIncentivesRules {
|
|
|
dividendsIncentivesRuleOriginal = dividendsIncentivesRuleOriginal + dividendsIncentivesRule.DividendsIncentivesStageCN +
|
|
|
":" + fmt.Sprint(dividendsIncentivesRule.DividendsIncentivesPercentage) +
|
|
|
"," + dividendsIncentivesRule.DividendsIncentivesStageStart.Format("2006-01-02") +
|
|
|
"~" + dividendsIncentivesRule.DividendsIncentivesStageEnd.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
dividendsIncentivesRuleOriginalTmp := "【" + dividendsIncentivesRuleOriginal + "】"
|
|
|
|
|
|
// 变更后的业绩分红激励规则
|
|
|
var dividendsIncentivesRuleChanged string
|
|
|
for _, dividendsIncentivesRule := range cooperationContractSaved.DividendsIncentivesRules {
|
|
|
dividendsIncentivesRuleChanged = dividendsIncentivesRuleChanged + dividendsIncentivesRule.DividendsIncentivesStageCN +
|
|
|
":" + fmt.Sprint(dividendsIncentivesRule.DividendsIncentivesPercentage) +
|
|
|
"," + dividendsIncentivesRule.DividendsIncentivesStageStart.Format("2006-01-02") +
|
|
|
"~" + dividendsIncentivesRule.DividendsIncentivesStageEnd.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(dividendsIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
dividendsIncentivesRuleChangedTmp := "【" + dividendsIncentivesRuleChanged + "】"
|
|
|
|
|
|
// 拼接规则变更
|
|
|
incentivesRuleChangeDetail = dividendsIncentivesRuleOriginalTmp + " 变更为 " + dividendsIncentivesRuleChangedTmp
|
|
|
}
|
|
|
return cooperationContract, nil
|
|
|
} else if cooperationContractFound.IncentivesType == domain.MONEY_INCENTIVES { // 金额激励规则变更
|
|
|
if !cooperationContract.MoneyIncentivesRuleSliceEqualBCE(cooperationContractFound.MoneyIncentivesRules, cooperationContractSaved.MoneyIncentivesRules) {
|
|
|
incentivesRuleChange = cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractFound.IncentivesType)) + "-->" + cooperationContract.ReturnIncentivesName(domain.IncentivesType(cooperationContractSaved.IncentivesType))
|
|
|
//【第一阶段:20,2021-01-01~2021-12-31,,,;第二阶段:20,2021-01-01~2021-12-31,30,10】变更为【第一阶段:20,2021-01-01~2021-12-31,,,;】
|
|
|
|
|
|
// 原金额激励规则
|
|
|
var moneyIncentivesRuleOriginal string
|
|
|
for _, moneyIncentivesRule := range cooperationContractFound.MoneyIncentivesRules {
|
|
|
moneyIncentivesRuleOriginal = moneyIncentivesRuleOriginal + moneyIncentivesRule.MoneyIncentivesStageCN +
|
|
|
":" +
|
|
|
"," + moneyIncentivesRule.MoneyIncentivesStageStart.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
moneyIncentivesRuleOriginalTmp := "【" + moneyIncentivesRuleOriginal + "】"
|
|
|
|
|
|
// 变更后的激励规则
|
|
|
var moneyIncentivesRuleChanged string
|
|
|
for _, moneyIncentivesRule := range cooperationContractSaved.MoneyIncentivesRules {
|
|
|
moneyIncentivesRuleChanged = moneyIncentivesRuleChanged + moneyIncentivesRule.MoneyIncentivesStageCN +
|
|
|
":" +
|
|
|
"," + moneyIncentivesRule.MoneyIncentivesStageStart.Format("2006-01-02") +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.ReferrerPercentage) +
|
|
|
"," + fmt.Sprint(moneyIncentivesRule.SalesmanPercentage) + ";"
|
|
|
}
|
|
|
moneyIncentivesRuleChangedTmp := "【" + moneyIncentivesRuleChanged + "】"
|
|
|
|
|
|
// 拼接规则变更
|
|
|
incentivesRuleChangeDetail = moneyIncentivesRuleOriginalTmp + " 变更为 " + moneyIncentivesRuleChangedTmp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 【1(张三,李四,王五)2(买买买,,)】变更为【1(张三,,)】
|
|
|
var undertakerChange string
|
|
|
if !cooperationContract.UndertakerSliceEqualBCE(cooperationContractFound.Undertakers, cooperationContractSaved.Undertakers) { // 3.承接人变更
|
|
|
// 原承接人
|
|
|
var undertakersOriginal string
|
|
|
for i, undertaker := range cooperationContractFound.Undertakers {
|
|
|
undertakersOriginal = undertakersOriginal + strconv.FormatInt(int64(i), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")"
|
|
|
}
|
|
|
undertakerChangeTmp1 := "【" + undertakersOriginal + "】"
|
|
|
// 变更承接人
|
|
|
var undertakersChanged string
|
|
|
for i, undertaker := range cooperationContractSaved.Undertakers {
|
|
|
undertakersChanged = undertakersChanged + strconv.FormatInt(int64(i), 10) + "(" + undertaker.UserName + "," + undertaker.Referrer.UserName + "," + undertaker.Salesman.UserName + ")"
|
|
|
}
|
|
|
undertakerChangeTemp2 := "【" + undertakersChanged + "】"
|
|
|
// 拼接承接人变更记录
|
|
|
undertakerChange = undertakerChangeTmp1 + " 变更为 " + undertakerChangeTemp2
|
|
|
}
|
|
|
|
|
|
// 新增共创合约变更记录
|
|
|
newCooperationContractChangeLog := &domain.CooperationContractChangeLog{
|
|
|
IncentivesRule: incentivesRuleChange,
|
|
|
IncentivesRuleDetail: incentivesRuleChangeDetail,
|
|
|
OperationType: domain.EDIT,
|
|
|
Undertakers: undertakerChange,
|
|
|
CooperationContractNumber: cooperationContractSaved.CooperationContractNumber,
|
|
|
Company: company,
|
|
|
Operator: operator,
|
|
|
UpdatedAt: time.Time{},
|
|
|
CreatedAt: time.Now(),
|
|
|
}
|
|
|
|
|
|
// 保存共创合约变更记录
|
|
|
if _, err20 := cooperationContractChangeLogRepository.Save(newCooperationContractChangeLog); err20 != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err20.Error())
|
|
|
}
|
|
|
if err21 := transactionContext.CommitTransaction(); err21 != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err21.Error())
|
|
|
}
|
|
|
return cooperationContractSaved, nil
|
|
|
}
|
|
|
}
|
|
|
|
...
|
...
|
|