完善合同关联主体名称展示

This commit is contained in:
czl231
2026-08-23 09:50:46 +08:00
parent cbaedafaf1
commit 48cf44bc99
6 changed files with 52 additions and 16 deletions

View File

@@ -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 校验签约用户当前仍由合同气站服务。

View File

@@ -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",