完善合同关联主体名称展示
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// 功能描述:为配送合同提供签约用户名称和当前服务关系状态,不新增数据库字段。
|
||||
// 版本:v1.0.0
|
||||
// 功能描述:为配送合同提供关联主体名称和当前服务关系状态,不新增数据库字段。
|
||||
// 版本:v1.1.0
|
||||
package gasorder
|
||||
|
||||
import (
|
||||
@@ -8,18 +8,25 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ContractPartyDisplay 在合同主档上附加可读用户名称和当前气站服务关系状态。
|
||||
// ContractPartyDisplay 在合同主档上附加可读关联名称和当前气站服务关系状态。
|
||||
type ContractPartyDisplay struct {
|
||||
models.GasorderContract
|
||||
UserAccountDisplayName string `gorm:"column:user_account_display_name" json:"user_account_display_name"`
|
||||
GasBasicDisplayName string `gorm:"column:gas_basic_display_name" json:"gas_basic_display_name"`
|
||||
DeliveryDisplayName string `gorm:"column:delivery_basic_display_name" json:"delivery_basic_display_name"`
|
||||
UserServiceActive bool `gorm:"column:user_service_active" json:"user_service_active"`
|
||||
}
|
||||
|
||||
// ContractPartyDisplayQuery 仅通过合同已保存的用户主键读取名称,不开放平台用户全集。
|
||||
// ContractPartyDisplayQuery 仅通过合同已保存的关联主键读取名称,不开放平台主体全集。
|
||||
func ContractPartyDisplayQuery(databaseService *gorm.DB) *gorm.DB {
|
||||
return common.ActiveRecords(databaseService.Model(&models.GasorderContract{})).
|
||||
Select(`gasorder_contract.*,
|
||||
COALESCE(NULLIF(contract_user.name, ''), NULLIF(contract_user.real_name, ''), NULLIF(contract_user.username, ''), '签约用户记录已失效') AS user_account_display_name,
|
||||
COALESCE(NULLIF(contract_gas.name, ''), '签约气站记录已失效') AS gas_basic_display_name,
|
||||
CASE
|
||||
WHEN gasorder_contract.delivery_basic_id = 0 THEN '未指定配送点'
|
||||
ELSE COALESCE(NULLIF(contract_delivery.name, ''), '配送点记录已失效')
|
||||
END AS delivery_basic_display_name,
|
||||
EXISTS (
|
||||
SELECT 1 FROM user_service_relation AS contract_relation
|
||||
WHERE contract_relation.user_account_id = gasorder_contract.user_account_id
|
||||
@@ -27,7 +34,9 @@ func ContractPartyDisplayQuery(databaseService *gorm.DB) *gorm.DB {
|
||||
AND contract_relation.status <> ?
|
||||
AND contract_relation.deleted_at IS NULL
|
||||
) AS user_service_active`, common.StatusArchived).
|
||||
Joins("LEFT JOIN user_account AS contract_user ON contract_user.id = gasorder_contract.user_account_id")
|
||||
Joins("LEFT JOIN user_account AS contract_user ON contract_user.id = gasorder_contract.user_account_id").
|
||||
Joins("LEFT JOIN gas_basic AS contract_gas ON contract_gas.id = gasorder_contract.gas_basic_id").
|
||||
Joins("LEFT JOIN delivery_basic AS contract_delivery ON contract_delivery.id = gasorder_contract.delivery_basic_id")
|
||||
}
|
||||
|
||||
// contractUserServiceActive 校验签约用户当前仍由合同气站服务。
|
||||
|
||||
@@ -74,7 +74,7 @@ func TestFilterGasorderContractCandidates(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestContractPartyDisplayQuery 验证合同名称直接按合同用户主键读取,并计算同气站服务关系状态。
|
||||
// TestContractPartyDisplayQuery 验证合同关联名称按已保存主键读取,并计算同气站服务关系状态。
|
||||
func TestContractPartyDisplayQuery(t *testing.T) {
|
||||
sqlDatabase, _, err := sqlmock.New()
|
||||
if err != nil {
|
||||
@@ -93,7 +93,11 @@ func TestContractPartyDisplayQuery(t *testing.T) {
|
||||
})
|
||||
for _, fragment := range []string{
|
||||
"LEFT JOIN user_account AS contract_user",
|
||||
"LEFT JOIN gas_basic AS contract_gas",
|
||||
"LEFT JOIN delivery_basic AS contract_delivery",
|
||||
"user_account_display_name",
|
||||
"gas_basic_display_name",
|
||||
"delivery_basic_display_name",
|
||||
"contract_relation.user_account_id = gasorder_contract.user_account_id",
|
||||
"contract_relation.gas_basic_id = gasorder_contract.gas_basic_id",
|
||||
"gasorder_contract.gas_basic_id = 42",
|
||||
|
||||
Reference in New Issue
Block a user