正在显示
3 个修改的文件
包含
98 行增加
和
3 行删除
@@ -9,6 +9,7 @@ import ( | @@ -9,6 +9,7 @@ import ( | ||
9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/application/factory" |
10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" |
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" |
12 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | ||
12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" | 13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" |
13 | "strconv" | 14 | "strconv" |
14 | "time" | 15 | "time" |
@@ -82,9 +83,33 @@ func (cooperationModeService *CooperationModeService) CreateCooperationMode(crea | @@ -82,9 +83,33 @@ func (cooperationModeService *CooperationModeService) CreateCooperationMode(crea | ||
82 | organization = data | 83 | organization = data |
83 | } | 84 | } |
84 | 85 | ||
85 | - //TODO 校验共创模式编码唯一性 | ||
86 | - | ||
87 | - //TODO 校验共创模式名称唯一性 | 86 | + // 共创模式DAO初始化 |
87 | + var cooperationModeDao *dao.CooperationModeDao | ||
88 | + if value, err := factory.CreateCooperationModeDao(map[string]interface{}{ | ||
89 | + "transactionContext": transactionContext, | ||
90 | + }); err != nil { | ||
91 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
92 | + } else { | ||
93 | + cooperationModeDao = value | ||
94 | + } | ||
95 | + // 校验共创模式编码唯一性 | ||
96 | + numberAvailable, _ := cooperationModeDao.CheckModeNumberAvailable(map[string]interface{}{ | ||
97 | + "companyId": createCooperationModeCommand.CompanyId, | ||
98 | + "orgId": createCooperationModeCommand.OrgId, | ||
99 | + "cooperationModeNumber": createCooperationModeCommand.CooperationModeNumber, | ||
100 | + }) | ||
101 | + if !numberAvailable { | ||
102 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "模式编码已存在") | ||
103 | + } | ||
104 | + // 校验共创模式名称唯一性 | ||
105 | + nameAvailable, _ := cooperationModeDao.CheckModeNameAvailable(map[string]interface{}{ | ||
106 | + "companyId": createCooperationModeCommand.CompanyId, | ||
107 | + "orgId": createCooperationModeCommand.OrgId, | ||
108 | + "cooperationModeName": createCooperationModeCommand.CooperationModeName, | ||
109 | + }) | ||
110 | + if !nameAvailable { | ||
111 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "模式名称已存在") | ||
112 | + } | ||
88 | 113 | ||
89 | newCooperationMode := &domain.CooperationMode{ | 114 | newCooperationMode := &domain.CooperationMode{ |
90 | CooperationModeName: createCooperationModeCommand.CooperationModeName, | 115 | CooperationModeName: createCooperationModeCommand.CooperationModeName, |
1 | package factory | 1 | package factory |
2 | + | ||
3 | +import ( | ||
4 | + "github.com/linmadan/egglib-go/transaction/pg" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" | ||
6 | +) | ||
7 | + | ||
8 | +func CreateCooperationModeDao(options map[string]interface{}) (*dao.CooperationModeDao, error) { | ||
9 | + var transactionContext *pg.TransactionContext | ||
10 | + if value, ok := options["transactionContext"]; ok { | ||
11 | + transactionContext = value.(*pg.TransactionContext) | ||
12 | + } | ||
13 | + return dao.NewCooperationModeDao(transactionContext) | ||
14 | +} |
1 | +package dao | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models" | ||
7 | +) | ||
8 | + | ||
9 | +type CooperationModeDao struct { | ||
10 | + transactionContext *pgTransaction.TransactionContext | ||
11 | +} | ||
12 | + | ||
13 | +// CheckModeNameAvailable 校验模式名称唯一性 | ||
14 | +func (dao *CooperationModeDao) CheckModeNameAvailable(queryOptions map[string]interface{}) (bool, error) { | ||
15 | + tx := dao.transactionContext.PgTx | ||
16 | + var cooperationModeModels []*models.CooperationMode | ||
17 | + query := tx.Model(&cooperationModeModels) | ||
18 | + if cooperationModeName, ok := queryOptions["cooperationModeName"]; ok && cooperationModeName != "" { | ||
19 | + query = query.Where("cooperation_mode_name = ?", cooperationModeName) | ||
20 | + } | ||
21 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
22 | + query = query.Where(`cooperation_mode.company @> '{"companyId":"?"}'`, companyId) | ||
23 | + } | ||
24 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
25 | + query = query.Where(`cooperation_mode.org @> '{"orgId":"?"}'`, orgId) | ||
26 | + } | ||
27 | + ok, err := query.Exists() | ||
28 | + return !ok, err | ||
29 | +} | ||
30 | + | ||
31 | +// CheckModeNumberAvailable 校验模式编码唯一性 | ||
32 | +func (dao *CooperationModeDao) CheckModeNumberAvailable(queryOptions map[string]interface{}) (bool, error) { | ||
33 | + tx := dao.transactionContext.PgTx | ||
34 | + var cooperationModeModels []*models.CooperationMode | ||
35 | + query := tx.Model(&cooperationModeModels) | ||
36 | + if cooperationModeNumber, ok := queryOptions["cooperationModeNumber"]; ok && cooperationModeNumber != "" { | ||
37 | + query = query.Where("cooperation_mode_number = ?", cooperationModeNumber) | ||
38 | + } | ||
39 | + if companyId, ok := queryOptions["companyId"]; ok && companyId.(int64) != 0 { | ||
40 | + query = query.Where(`cooperation_mode.company @> '{"companyId":"?"}'`, companyId) | ||
41 | + } | ||
42 | + if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { | ||
43 | + query = query.Where(`cooperation_mode.org @> '{"orgId":"?"}'`, orgId) | ||
44 | + } | ||
45 | + ok, err := query.Exists() | ||
46 | + return !ok, err | ||
47 | +} | ||
48 | + | ||
49 | +func NewCooperationModeDao(transactionContext *pgTransaction.TransactionContext) (*CooperationModeDao, error) { | ||
50 | + if transactionContext == nil { | ||
51 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
52 | + } else { | ||
53 | + return &CooperationModeDao{ | ||
54 | + transactionContext: transactionContext, | ||
55 | + }, nil | ||
56 | + } | ||
57 | +} |
-
请 注册 或 登录 后发表评论