作者 陈志颖

feat:添加参与人值对象

@@ -10,13 +10,9 @@ import ( @@ -10,13 +10,9 @@ import (
10 10
11 type ListCooperationModeQuery struct { 11 type ListCooperationModeQuery struct {
12 // 页面大小 12 // 页面大小
13 - PageNumber int32 `cname:"页面大小" json:"pageNumber,omitempty"` 13 + PageNumber int64 `cname:"页面大小" json:"pageNumber,omitempty"`
14 // 页面大小 14 // 页面大小
15 - PageSize int32 `cname:"页面大小" json:"pageSize,omitempty"`  
16 - // 查询偏离量  
17 - Offset int `cname:"查询偏离量" json:"offset" valid:"Required"`  
18 - // 查询限制  
19 - Limit int `cname:"查询限制" json:"limit" valid:"Required"` 15 + PageSize int64 `cname:"页面大小" json:"pageSize,omitempty"`
20 // 公司ID,通过集成REST上下文获取 16 // 公司ID,通过集成REST上下文获取
21 CompanyId int64 `cname:"公司ID,通过集成REST上下文获取" json:"companyId,string" valid:"Required"` 17 CompanyId int64 `cname:"公司ID,通过集成REST上下文获取" json:"companyId,string" valid:"Required"`
22 // 组织机构ID 18 // 组织机构ID
@@ -18,10 +18,10 @@ type CreditAccount struct { @@ -18,10 +18,10 @@ type CreditAccount struct {
18 SettlementAmount float64 `json:"settlementAmount"` 18 SettlementAmount float64 `json:"settlementAmount"`
19 // 共创账期结算时间 19 // 共创账期结算时间
20 SettlementTime time.Time `json:"settlementTime"` 20 SettlementTime time.Time `json:"settlementTime"`
21 - // 共创合约编号 21 + // 关联共创合约编号
22 CooperationContractNumber string `json:"cooperationContractNumber"` 22 CooperationContractNumber string `json:"cooperationContractNumber"`
23 // 参与人uid,包括承接人、推荐人、关联业务员 23 // 参与人uid,包括承接人、推荐人、关联业务员
24 - Participator []int64 `json:"participator"` 24 + Participator *Participator `json:"participator"`
25 // 支付凭证附件 25 // 支付凭证附件
26 PaymentDocumentAttachment *Attachment `json:"paymentDocumentAttachment"` 26 PaymentDocumentAttachment *Attachment `json:"paymentDocumentAttachment"`
27 // 数据所属组织机构 27 // 数据所属组织机构
  1 +package domain
  2 +
  3 +// Participator 共创参与人
  4 +type Participator struct {
  5 + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员
  6 + UserId int64 `json:"userId,string"`
  7 + // 用户基本id
  8 + UserBaseId int64 `json:"userBaseId,string"`
  9 + // 用户所属的组织机构
  10 + Org *Org `json:"org"`
  11 + // 用户关联的组织机构
  12 + Orgs []*Org `json:"orgs"`
  13 + // 用户所属的部门
  14 + Department *Department `json:"department"`
  15 + // 用户角色
  16 + Role *Role `json:"role"`
  17 + // 冗余字段,jsonb格式,不限制存放内容
  18 + UserInfo *UserInfo `json:"userInfo"`
  19 + // 用户类型,1员工,2共创用户,3公开
  20 + UserType int32 `json:"userType"`
  21 + // 状态
  22 + Status int32 `json:"status"`
  23 + // 公司
  24 + Company *Company `json:"company"`
  25 +}
@@ -24,7 +24,7 @@ type CreditAccount struct { @@ -24,7 +24,7 @@ type CreditAccount struct {
24 // 共创合约编号 24 // 共创合约编号
25 CooperationContractNumber string `comment:"共创合约编号"` 25 CooperationContractNumber string `comment:"共创合约编号"`
26 // 参与人uid,包括承接人、推荐人、关联业务员 26 // 参与人uid,包括承接人、推荐人、关联业务员
27 - Participator []int64 `comment:"参与人uid,包括承接人、推荐人、关联业务员" pg:",array"` 27 + Participator *domain.Participator `comment:"参与人uid,包括承接人、推荐人、关联业务员" pg:",array"`
28 // 支付凭证附件 28 // 支付凭证附件
29 PaymentDocumentAttachment *domain.Attachment `comment:"支付凭证附件"` 29 PaymentDocumentAttachment *domain.Attachment `comment:"支付凭证附件"`
30 // 数据所属组织机构 30 // 数据所属组织机构
@@ -223,14 +223,28 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai @@ -223,14 +223,28 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai
223 ); err != nil { 223 ); err != nil {
224 return cooperationContract, err 224 return cooperationContract, err
225 } 225 }
226 - // 获取相关人列表  
227 - var cooperationContractRelevantModels []*models.CooperationContractRelevant  
228 - cooperationContractRelevantQuery := tx.Model(&cooperationContractRelevantModels) 226 +
  227 + // 查找相关人列表
  228 + var cooperationContractRelevantFetched []*models.CooperationContractRelevant
  229 + cooperationContractRelevantQuery := tx.Model(&cooperationContractRelevantFetched)
229 if err := cooperationContractRelevantQuery.Where("cooperation_contract_number = ?", cooperationContract.CooperationContractNumber).Select(); err != nil { 230 if err := cooperationContractRelevantQuery.Where("cooperation_contract_number = ?", cooperationContract.CooperationContractNumber).Select(); err != nil {
230 return nil, err 231 return nil, err
231 } 232 }
232 233
233 - //var cooperationContractRelevantModelsUpdate []*models.CooperationContractRelevant // 待更新的相关人 234 + // 待更新相关人
  235 + var cooperationContractRelevantPeopleToUpdate []*domain.Relevant
  236 + // 待添加相关人
  237 + var cooperationContractRelevantPeopleToAdd []*domain.Relevant
  238 + for _, relevant := range cooperationContract.RelevantPeople {
  239 + if relevant.RelevantId != 0 {
  240 + cooperationContractRelevantPeopleToUpdate = append(cooperationContractRelevantPeopleToUpdate, relevant)
  241 + } else {
  242 + cooperationContractRelevantPeopleToAdd = append(cooperationContractRelevantPeopleToAdd, relevant)
  243 + }
  244 + }
  245 +
  246 + // 待删除相关人,对比待更新的和数据库已有的
  247 +
234 //var cooperationContractRelevantModelsDelete []*models.CooperationContractRelevant // 待删除的相关人 248 //var cooperationContractRelevantModelsDelete []*models.CooperationContractRelevant // 待删除的相关人
235 //var cooperationContractRelevantModelsCreate []*models.CooperationContractRelevant // 待增加的相关人 249 //var cooperationContractRelevantModelsCreate []*models.CooperationContractRelevant // 待增加的相关人
236 250
@@ -238,7 +252,8 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai @@ -238,7 +252,8 @@ func (repository *CooperationContractRepository) Save(cooperationContract *domai
238 var relevantIdsModify []int64 252 var relevantIdsModify []int64
239 //var relevantIdsUpdate []int64 253 //var relevantIdsUpdate []int64
240 254
241 - for _, cooperationContractRelevantModel := range cooperationContractRelevantModels { 255 + // 待更新相关人id数组
  256 + for _, cooperationContractRelevantModel := range cooperationContractRelevantFetched {
242 relevantIdsHave = append(relevantIdsHave, cooperationContractRelevantModel.CooperationContractRelevantId) 257 relevantIdsHave = append(relevantIdsHave, cooperationContractRelevantModel.CooperationContractRelevantId)
243 } 258 }
244 259
@@ -67,7 +67,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -67,7 +67,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
67 &creditAccount.SettlementAmount, 67 &creditAccount.SettlementAmount,
68 &creditAccount.SettlementTime, 68 &creditAccount.SettlementTime,
69 &creditAccount.CooperationContractNumber, 69 &creditAccount.CooperationContractNumber,
70 - pg.Array(&creditAccount.Participator), 70 + &creditAccount.Participator,
71 &creditAccount.PaymentDocumentAttachment, 71 &creditAccount.PaymentDocumentAttachment,
72 &creditAccount.Org, 72 &creditAccount.Org,
73 &creditAccount.Company, 73 &creditAccount.Company,
@@ -86,7 +86,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -86,7 +86,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
86 creditAccount.SettlementAmount, 86 creditAccount.SettlementAmount,
87 creditAccount.SettlementTime, 87 creditAccount.SettlementTime,
88 creditAccount.CooperationContractNumber, 88 creditAccount.CooperationContractNumber,
89 - pg.Array(creditAccount.Participator), 89 + creditAccount.Participator,
90 creditAccount.PaymentDocumentAttachment, 90 creditAccount.PaymentDocumentAttachment,
91 creditAccount.Org, 91 creditAccount.Org,
92 creditAccount.Company, 92 creditAccount.Company,
@@ -109,7 +109,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -109,7 +109,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
109 &creditAccount.SettlementAmount, 109 &creditAccount.SettlementAmount,
110 &creditAccount.SettlementTime, 110 &creditAccount.SettlementTime,
111 &creditAccount.CooperationContractNumber, 111 &creditAccount.CooperationContractNumber,
112 - pg.Array(&creditAccount.Participator), 112 + &creditAccount.Participator,
113 &creditAccount.PaymentDocumentAttachment, 113 &creditAccount.PaymentDocumentAttachment,
114 &creditAccount.Org, 114 &creditAccount.Org,
115 &creditAccount.Company, 115 &creditAccount.Company,
@@ -128,7 +128,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco @@ -128,7 +128,7 @@ func (repository *CreditAccountRepository) Save(creditAccount *domain.CreditAcco
128 creditAccount.SettlementAmount, 128 creditAccount.SettlementAmount,
129 creditAccount.SettlementTime, 129 creditAccount.SettlementTime,
130 creditAccount.CooperationContractNumber, 130 creditAccount.CooperationContractNumber,
131 - pg.Array(creditAccount.Participator), 131 + creditAccount.Participator,
132 creditAccount.PaymentDocumentAttachment, 132 creditAccount.PaymentDocumentAttachment,
133 creditAccount.Org, 133 creditAccount.Org,
134 creditAccount.Company, 134 creditAccount.Company,
@@ -168,6 +168,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder @@ -168,6 +168,7 @@ func (repository *DividendsReturnedOrderRepository) Save(dividendsReturnedOrder
168 return dividendsReturnedOrder, err 168 return dividendsReturnedOrder, err
169 } 169 }
170 //TODO 新增、更新、删除分红退货单产品 170 //TODO 新增、更新、删除分红退货单产品
  171 +
171 } 172 }
172 return dividendsReturnedOrder, nil 173 return dividendsReturnedOrder, nil
173 } 174 }
  1 +package service_gateway
  2 +
  3 +type HttplibMessageServiceGateway struct {
  4 + httplibBaseServiceGateway
  5 +}
@@ -7,8 +7,8 @@ type UserTranslator struct { @@ -7,8 +7,8 @@ type UserTranslator struct {
7 7
8 func (translator *UserTranslator) ToRelevantFromRepresentation(data map[string]interface{}) (*domain.Relevant, error) { 8 func (translator *UserTranslator) ToRelevantFromRepresentation(data map[string]interface{}) (*domain.Relevant, error) {
9 return &domain.Relevant{ 9 return &domain.Relevant{
10 - UserId: 0,  
11 - UserBaseId: 0, 10 + UserId: data["userId"].(int64),
  11 + UserBaseId: data["userBaseId"].(int64),
12 Org: nil, 12 Org: nil,
13 Orgs: nil, 13 Orgs: nil,
14 Department: nil, 14 Department: nil,
@@ -22,8 +22,8 @@ func (translator *UserTranslator) ToRelevantFromRepresentation(data map[string]i @@ -22,8 +22,8 @@ func (translator *UserTranslator) ToRelevantFromRepresentation(data map[string]i
22 22
23 func (translator *UserTranslator) ToReferrerFromRepresentation(data map[string]interface{}) (*domain.Referrer, error) { 23 func (translator *UserTranslator) ToReferrerFromRepresentation(data map[string]interface{}) (*domain.Referrer, error) {
24 return &domain.Referrer{ 24 return &domain.Referrer{
25 - UserId: 0,  
26 - UserBaseId: 0, 25 + UserId: data["userId"].(int64),
  26 + UserBaseId: data["userBaseId"].(int64),
27 Role: nil, 27 Role: nil,
28 Orgs: nil, 28 Orgs: nil,
29 Org: nil, 29 Org: nil,
@@ -36,8 +36,8 @@ func (translator *UserTranslator) ToReferrerFromRepresentation(data map[string]i @@ -36,8 +36,8 @@ func (translator *UserTranslator) ToReferrerFromRepresentation(data map[string]i
36 36
37 func (translator *UserTranslator) ToUndertakerFromRepresentation(data map[string]interface{}) (*domain.Undertaker, error) { 37 func (translator *UserTranslator) ToUndertakerFromRepresentation(data map[string]interface{}) (*domain.Undertaker, error) {
38 return &domain.Undertaker{ 38 return &domain.Undertaker{
39 - UserId: 0,  
40 - UserBaseId: 0, 39 + UserId: data["userId"].(int64),
  40 + UserBaseId: data["userBaseId"].(int64),
41 Org: nil, 41 Org: nil,
42 Orgs: nil, 42 Orgs: nil,
43 Department: nil, 43 Department: nil,
@@ -52,8 +52,8 @@ func (translator *UserTranslator) ToUndertakerFromRepresentation(data map[string @@ -52,8 +52,8 @@ func (translator *UserTranslator) ToUndertakerFromRepresentation(data map[string
52 52
53 func (translator *UserTranslator) ToSalesmanFromRepresentation(data map[string]interface{}) (*domain.Salesman, error) { 53 func (translator *UserTranslator) ToSalesmanFromRepresentation(data map[string]interface{}) (*domain.Salesman, error) {
54 return &domain.Salesman{ 54 return &domain.Salesman{
55 - UserId: 0,  
56 - UserBaseId: 0, 55 + UserId: data["userId"].(int64),
  56 + UserBaseId: data["userBaseId"].(int64),
57 Role: nil, 57 Role: nil,
58 Orgs: nil, 58 Orgs: nil,
59 Org: nil, 59 Org: nil,
@@ -66,8 +66,8 @@ func (translator *UserTranslator) ToSalesmanFromRepresentation(data map[string]i @@ -66,8 +66,8 @@ func (translator *UserTranslator) ToSalesmanFromRepresentation(data map[string]i
66 66
67 func (translator *UserTranslator) ToOperatorFromRepresentation(data map[string]interface{}) (*domain.User, error) { 67 func (translator *UserTranslator) ToOperatorFromRepresentation(data map[string]interface{}) (*domain.User, error) {
68 return &domain.User{ 68 return &domain.User{
69 - UserId: 0,  
70 - UserBaseId: 0, 69 + UserId: data["userId"].(int64),
  70 + UserBaseId: data["userBaseId"].(int64),
71 Org: nil, 71 Org: nil,
72 Orgs: nil, 72 Orgs: nil,
73 Department: nil, 73 Department: nil,
@@ -81,8 +81,8 @@ func (translator *UserTranslator) ToOperatorFromRepresentation(data map[string]i @@ -81,8 +81,8 @@ func (translator *UserTranslator) ToOperatorFromRepresentation(data map[string]i
81 81
82 func (translator *UserTranslator) ToUserFromRepresentation(data map[string]interface{}) (*domain.User, error) { 82 func (translator *UserTranslator) ToUserFromRepresentation(data map[string]interface{}) (*domain.User, error) {
83 return &domain.User{ 83 return &domain.User{
84 - UserId: 0,  
85 - UserBaseId: 0, 84 + UserId: data["userId"].(int64),
  85 + UserBaseId: data["userBaseId"].(int64),
86 Org: nil, 86 Org: nil,
87 Orgs: nil, 87 Orgs: nil,
88 Department: nil, 88 Department: nil,
1 package utils 1 package utils
2 2
  3 +// Intersect 返回两个数组的交集
3 func Intersect(nums1 []int64, nums2 []int64) []int64 { 4 func Intersect(nums1 []int64, nums2 []int64) []int64 {
4 if len(nums1) > len(nums2) { 5 if len(nums1) > len(nums2) {
5 return Intersect(nums2, nums1) 6 return Intersect(nums2, nums1)
@@ -18,3 +19,38 @@ func Intersect(nums1 []int64, nums2 []int64) []int64 { @@ -18,3 +19,38 @@ func Intersect(nums1 []int64, nums2 []int64) []int64 {
18 } 19 }
19 return intersection 20 return intersection
20 } 21 }
  22 +
  23 +////求交集
  24 +//func intersect(slice1, slice2 []int64) []int64 {
  25 +// m := make(map[int64]int)
  26 +// nn := make([]int64, 0)
  27 +// for _, v := range slice1 {
  28 +// m[v]++
  29 +// }
  30 +//
  31 +// for _, v := range slice2 {
  32 +// times, _ := m[v]
  33 +// if times == 1 {
  34 +// nn = append(nn, v)
  35 +// }
  36 +// }
  37 +// return nn
  38 +//}
  39 +
  40 +// Difference 求差集 slice1-并集
  41 +func Difference(slice1, slice2 []int64) []int64 {
  42 + m := make(map[int64]int)
  43 + nn := make([]int64, 0)
  44 + inter := Intersect(slice1, slice2)
  45 + for _, v := range inter {
  46 + m[v]++
  47 + }
  48 +
  49 + for _, value := range slice1 {
  50 + times, _ := m[value]
  51 + if times == 0 {
  52 + nn = append(nn, value)
  53 + }
  54 + }
  55 + return nn
  56 +}
@@ -93,9 +93,9 @@ func (controller *CooperationModeController) ListCooperationMode() { @@ -93,9 +93,9 @@ func (controller *CooperationModeController) ListCooperationMode() {
93 listCooperationModeQuery.OrgId = header.OrgId 93 listCooperationModeQuery.OrgId = header.OrgId
94 listCooperationModeQuery.UserId = header.UserId 94 listCooperationModeQuery.UserId = header.UserId
95 listCooperationModeQuery.UserBaseId = header.UserBaseId 95 listCooperationModeQuery.UserBaseId = header.UserBaseId
96 - pageSize, _ := controller.GetInt32("pageSize") 96 + pageSize, _ := controller.GetInt64("pageSize")
97 listCooperationModeQuery.PageSize = pageSize 97 listCooperationModeQuery.PageSize = pageSize
98 - pageNumber, _ := controller.GetInt32("pageNumber") 98 + pageNumber, _ := controller.GetInt64("pageNumber")
99 listCooperationModeQuery.PageNumber = pageNumber 99 listCooperationModeQuery.PageNumber = pageNumber
100 data, err := cooperationModeService.ListCooperationMode(listCooperationModeQuery) 100 data, err := cooperationModeService.ListCooperationMode(listCooperationModeQuery)
101 controller.Response(data, err) 101 controller.Response(data, err)