作者 陈志颖

合并分支 'dev' 到 'test'

Dev



查看合并请求 !12
@@ -122,11 +122,13 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop @@ -122,11 +122,13 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop
122 } 122 }
123 123
124 // 校验:判断用户类型是否属于承接对象 124 // 校验:判断用户类型是否属于承接对象
125 - if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, 4) { // 非公开类型校验  
126 - if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType) { 125 + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, 3) { // 非公开类型校验
  126 + for _, userType := range cooperationProject.CooperationProjectUndertakerTypes {
  127 + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType&userType) {
127 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") 128 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象")
128 } 129 }
129 } 130 }
  131 + }
130 132
131 newCooperationApplication = &domain.CooperationApplication{ 133 newCooperationApplication = &domain.CooperationApplication{
132 CooperationApplicationApplicant: applicant, 134 CooperationApplicationApplicant: applicant,
@@ -160,14 +160,12 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC @@ -160,14 +160,12 @@ func (cooperationContractService *CooperationContractService) CreateCooperationC
160 160
161 // 校验承接人是否属于承接对象,1员工,2共创用户,4公开 161 // 校验承接人是否属于承接对象,1员工,2共创用户,4公开
162 if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, 3) { 162 if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, 3) {
163 - var userType int32  
164 - if undertakerDomain.UserType > 1024 {  
165 - userType = undertakerDomain.UserType - 1024  
166 - }  
167 - if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, userType) { 163 + for _, userType := range createCooperationContractCommand.CooperationContractUndertakerTypes {
  164 + if !utils.IsContain(createCooperationContractCommand.CooperationContractUndertakerTypes, undertakerDomain.UserType&userType) {
168 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "承接人"+undertakerDomain.UserName+"不属于承接对象") 165 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "承接人"+undertakerDomain.UserName+"不属于承接对象")
169 } 166 }
170 } 167 }
  168 + }
171 169
172 // 获取推荐人 170 // 获取推荐人
173 var referrerDomain *domain.Referrer 171 var referrerDomain *domain.Referrer
@@ -1027,12 +1025,10 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC @@ -1027,12 +1025,10 @@ func (cooperationContractService *CooperationContractService) UpdateCooperationC
1027 1025
1028 // 校验:判断用户类型是否属于承接对象 1026 // 校验:判断用户类型是否属于承接对象
1029 if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, 3) { // 非公开类型校验 1027 if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, 3) { // 非公开类型校验
1030 - var userType int32  
1031 - if undertakerDomain.UserType > 1024 {  
1032 - userType = undertakerDomain.UserType - 1024 1028 + for _, userType := range cooperationContract.CooperationContractUndertakerTypes {
  1029 + if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, undertakerDomain.UserType&userType) {
  1030 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "承接人"+undertakerDomain.UserName+"不属于承接对象")
1033 } 1031 }
1034 - if !utils.IsContain(cooperationContract.CooperationContractUndertakerTypes, userType) {  
1035 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象")  
1036 } 1032 }
1037 } 1033 }
1038 1034
@@ -7,6 +7,8 @@ type CooperationProjectsDto struct { @@ -7,6 +7,8 @@ type CooperationProjectsDto struct {
7 //CooperationMode *CooperationMode `json:"cooperationMode"` 7 //CooperationMode *CooperationMode `json:"cooperationMode"`
8 // 可以去除勾选的共创项目承接对象列表 8 // 可以去除勾选的共创项目承接对象列表
9 UndertakerTypesUncheckedAvailable []int32 `json:"undertakerTypesUncheckedAvailable"` 9 UndertakerTypesUncheckedAvailable []int32 `json:"undertakerTypesUncheckedAvailable"`
  10 + // 承接人
  11 + Applicants []*domain.User `json:"applicants"`
10 } 12 }
11 13
12 type CooperationMode struct { 14 type CooperationMode struct {
@@ -18,7 +20,7 @@ type CooperationMode struct { @@ -18,7 +20,7 @@ type CooperationMode struct {
18 CooperationModeName string `json:"cooperationModeName"` 20 CooperationModeName string `json:"cooperationModeName"`
19 } 21 }
20 22
21 -func (dto *CooperationProjectsDto) LoadDto(project *domain.CooperationProject, mode *domain.CooperationMode, undertakerTypesUncheckedAvailable []int32) error { 23 +func (dto *CooperationProjectsDto) LoadDto(project *domain.CooperationProject, mode *domain.CooperationMode, undertakerTypesUncheckedAvailable []int32, applicants []*domain.User) error {
22 dto.CooperationProject = project 24 dto.CooperationProject = project
23 dto.UndertakerTypesUncheckedAvailable = undertakerTypesUncheckedAvailable 25 dto.UndertakerTypesUncheckedAvailable = undertakerTypesUncheckedAvailable
24 //dto.CooperationMode = &CooperationMode{ 26 //dto.CooperationMode = &CooperationMode{
@@ -26,5 +28,6 @@ func (dto *CooperationProjectsDto) LoadDto(project *domain.CooperationProject, m @@ -26,5 +28,6 @@ func (dto *CooperationProjectsDto) LoadDto(project *domain.CooperationProject, m
26 // CooperationModeName: mode.CooperationModeName, 28 // CooperationModeName: mode.CooperationModeName,
27 // CooperationModeNumber: mode.CooperationModeNumber, 29 // CooperationModeNumber: mode.CooperationModeNumber,
28 //} 30 //}
  31 + dto.Applicants = applicants
29 return nil 32 return nil
30 } 33 }
@@ -12,6 +12,7 @@ import ( @@ -12,6 +12,7 @@ import (
12 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" 12 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service"
13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" 13 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao"
14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils" 14 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils"
  15 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/log"
15 "strconv" 16 "strconv"
16 "time" 17 "time"
17 ) 18 )
@@ -169,6 +170,7 @@ func (cooperationProjectService *CooperationProjectService) CreateCooperationPro @@ -169,6 +170,7 @@ func (cooperationProjectService *CooperationProjectService) CreateCooperationPro
169 if err2 != nil { 170 if err2 != nil {
170 return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error()) 171 return nil, application.ThrowError(application.TRANSACTION_ERROR, err2.Error())
171 } 172 }
  173 +
172 // 校验共创项目编号是否唯一 174 // 校验共创项目编号是否唯一
173 numberAvailable, _ := cooperationProjectDao.CheckProjectNumberAvailable(map[string]interface{}{ 175 numberAvailable, _ := cooperationProjectDao.CheckProjectNumberAvailable(map[string]interface{}{
174 "companyId": createCooperationProjectCommand.CompanyId, 176 "companyId": createCooperationProjectCommand.CompanyId,
@@ -244,6 +246,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec @@ -244,6 +246,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec
244 defer func() { 246 defer func() {
245 _ = transactionContext.RollbackTransaction() 247 _ = transactionContext.RollbackTransaction()
246 }() 248 }()
  249 +
  250 + // 共创项目仓储初始化
247 var cooperationProjectRepository domain.CooperationProjectRepository 251 var cooperationProjectRepository domain.CooperationProjectRepository
248 if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{ 252 if value, err := factory.CreateCooperationProjectRepository(map[string]interface{}{
249 "transactionContext": transactionContext, 253 "transactionContext": transactionContext,
@@ -252,6 +256,18 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec @@ -252,6 +256,18 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec
252 } else { 256 } else {
253 cooperationProjectRepository = value 257 cooperationProjectRepository = value
254 } 258 }
  259 +
  260 + // 共创申请仓储初始化
  261 + var cooperationApplicationRepository domain.CooperationApplicationRepository
  262 + if value, err := factory.CreateCooperationApplicationRepository(map[string]interface{}{
  263 + "transactionContext": transactionContext,
  264 + }); err != nil {
  265 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  266 + } else {
  267 + cooperationApplicationRepository = value
  268 + }
  269 +
  270 + // 获取共创项目
255 cooperationProject, err := cooperationProjectRepository.FindOne(tool_funs.SimpleStructToMap(getCooperationProjectQuery)) 271 cooperationProject, err := cooperationProjectRepository.FindOne(tool_funs.SimpleStructToMap(getCooperationProjectQuery))
256 if err != nil { 272 if err != nil {
257 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 273 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
@@ -276,6 +292,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec @@ -276,6 +292,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec
276 gotUser, err := cooperationProjectDao.CheckUndertakerTypesUncheckedAvailable(map[string]interface{}{ 292 gotUser, err := cooperationProjectDao.CheckUndertakerTypesUncheckedAvailable(map[string]interface{}{
277 "cooperationProjectNumber": cooperationProject.CooperationProjectNumber, 293 "cooperationProjectNumber": cooperationProject.CooperationProjectNumber,
278 "user": true, 294 "user": true,
  295 + "companyId": getCooperationProjectQuery.CompanyId,
  296 + "orgId": getCooperationProjectQuery.OrgId,
279 }) 297 })
280 if err != nil { 298 if err != nil {
281 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 299 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -288,6 +306,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec @@ -288,6 +306,8 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec
288 gotPartner, err := cooperationProjectDao.CheckUndertakerTypesUncheckedAvailable(map[string]interface{}{ 306 gotPartner, err := cooperationProjectDao.CheckUndertakerTypesUncheckedAvailable(map[string]interface{}{
289 "cooperationProjectNumber": cooperationProject.CooperationProjectNumber, 307 "cooperationProjectNumber": cooperationProject.CooperationProjectNumber,
290 "partner": true, 308 "partner": true,
  309 + "companyId": getCooperationProjectQuery.CompanyId,
  310 + "orgId": getCooperationProjectQuery.OrgId,
291 }) 311 })
292 if err != nil { 312 if err != nil {
293 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 313 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -301,10 +321,32 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec @@ -301,10 +321,32 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec
301 undertakerTypesUncheckedAvailable = append(undertakerTypesUncheckedAvailable, 3) 321 undertakerTypesUncheckedAvailable = append(undertakerTypesUncheckedAvailable, 3)
302 } 322 }
303 323
304 - // TODO 返回所有员工类型的申请通过人 324 + // 返回所有员工类型的申请通过人
  325 + applicants := make([]*domain.User, 0)
  326 + // 获取当前项目的所有申请
  327 + if countApplication, cooperationApplications, err := cooperationApplicationRepository.Find(map[string]interface{}{
  328 + "cooperationProjectNumberExact": cooperationProject.CooperationProjectNumber,
  329 + "companyId": cooperationProject.Company.CompanyId,
  330 + "orgId": cooperationProject.Org.OrgId,
  331 + }); err != nil {
  332 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  333 + } else {
  334 + if countApplication > 0 {
  335 + for _, cooperationApplication := range cooperationApplications {
  336 + log.Logger.Info("申请人", map[string]interface{}{
  337 + "applicant": cooperationApplication.CooperationApplicationApplicant,
  338 + })
  339 + userType := cooperationApplication.CooperationApplicationApplicant.UserType & 1
  340 + fmt.Printf("用户类型值: %d\n", userType)
  341 + if userType == 1 && cooperationApplication.CooperationApplicationStatus == 2 { // 申请人中的员工类型,审核中通过的
  342 + applicants = append(applicants, cooperationApplication.CooperationApplicationApplicant)
  343 + }
  344 + }
  345 + }
  346 + }
305 347
306 cooperationProjectDto := &dto.CooperationProjectsDto{} 348 cooperationProjectDto := &dto.CooperationProjectsDto{}
307 - if err := cooperationProjectDto.LoadDto(cooperationProject, nil, undertakerTypesUncheckedAvailable); err != nil { 349 + if err := cooperationProjectDto.LoadDto(cooperationProject, nil, undertakerTypesUncheckedAvailable, applicants); err != nil {
308 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 350 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
309 } 351 }
310 if err := transactionContext.CommitTransaction(); err != nil { 352 if err := transactionContext.CommitTransaction(); err != nil {
@@ -118,6 +118,7 @@ func (dao *CooperationProjectDao) CheckProjectNameAvailable(queryOptions map[str @@ -118,6 +118,7 @@ func (dao *CooperationProjectDao) CheckProjectNameAvailable(queryOptions map[str
118 if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 { 118 if orgId, ok := queryOptions["orgId"]; ok && orgId.(int64) != 0 {
119 query = query.Where(`cooperation_project.org @> '{"orgId":"?"}'`, orgId) 119 query = query.Where(`cooperation_project.org @> '{"orgId":"?"}'`, orgId)
120 } 120 }
  121 + query.Where("cooperation_project.status = ?", 1)
121 ok, err := query.Exists() 122 ok, err := query.Exists()
122 return !ok, err 123 return !ok, err
123 } 124 }
@@ -231,6 +231,9 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string @@ -231,6 +231,9 @@ func (repository *CooperationApplicationRepository) Find(queryOptions map[string
231 if cooperationProjectNumber, ok := queryOptions["cooperationProjectNumber"]; ok && cooperationProjectNumber != "" { 231 if cooperationProjectNumber, ok := queryOptions["cooperationProjectNumber"]; ok && cooperationProjectNumber != "" {
232 query.Where("cooperation_project_number like ?", fmt.Sprintf("%%%s%%", cooperationProjectNumber)) 232 query.Where("cooperation_project_number like ?", fmt.Sprintf("%%%s%%", cooperationProjectNumber))
233 } 233 }
  234 + if cooperationProjectNumberExact, ok := queryOptions["cooperationProjectNumberExact"]; ok && cooperationProjectNumberExact != "" {
  235 + query.Where("cooperation_project_number = ? ", cooperationProjectNumberExact)
  236 + }
234 if cooperationProjectName, ok := queryOptions["cooperationProjectName"]; ok && cooperationProjectName != "" { 237 if cooperationProjectName, ok := queryOptions["cooperationProjectName"]; ok && cooperationProjectName != "" {
235 query.Join("LEFT JOIN cooperation_projects AS a"). 238 query.Join("LEFT JOIN cooperation_projects AS a").
236 JoinOn("a.cooperation_project_number = cooperation_application.cooperation_project_number"). 239 JoinOn("a.cooperation_project_number = cooperation_application.cooperation_project_number").