正在显示
8 个修改的文件
包含
114 行增加
和
10 行删除
| @@ -101,18 +101,31 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -101,18 +101,31 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 101 | 101 | ||
| 102 | var newCooperationApplication *domain.CooperationApplication | 102 | var newCooperationApplication *domain.CooperationApplication |
| 103 | 103 | ||
| 104 | - if applyForCooperationCommand.CompanyId == 0 && applyForCooperationCommand.OrgId == 0 && applyForCooperationCommand.UserId == 0 { // 游客操作 | ||
| 105 | - // TODO 获取申请人信息 | 104 | + if applyForCooperationCommand.CompanyId == 0 && applyForCooperationCommand.OrgId == 0 && applyForCooperationCommand.UserId == 0 && applyForCooperationCommand.UserBaseId != 0 { // 游客操作 |
| 105 | + // 获取申请人信息 | ||
| 106 | + var applicant *domain.User | ||
| 107 | + if data, err := userService.VisitorFrom(applyForCooperationCommand.CompanyId, applyForCooperationCommand.OrgId, applyForCooperationCommand.UserBaseId); err != nil { | ||
| 108 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取申请人失败") | ||
| 109 | + } else { | ||
| 110 | + applicant = data | ||
| 111 | + } | ||
| 106 | 112 | ||
| 107 | - // TODO 校验:同一个用户,不能多次申请同一个项目 | 113 | + // 校验:同一个用户,不能多次申请同一个项目 |
| 114 | + applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{ | ||
| 115 | + "visitorUserBaseId": applicant.UserBaseId, | ||
| 116 | + "cooperationApplicationId": cooperationProject.CooperationProjectId, | ||
| 117 | + }) | ||
| 118 | + if applicationExist { | ||
| 119 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "抱歉,您已经申请过该项目") | ||
| 120 | + } | ||
| 108 | 121 | ||
| 109 | - // TODO 校验:判断用户类型是否属于承接对象 | ||
| 110 | - //if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType) { | ||
| 111 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") | ||
| 112 | - //} | 122 | + // 校验:判断用户类型是否属于承接对象 |
| 123 | + if !utils.IsContain(cooperationProject.CooperationProjectUndertakerTypes, applicant.UserType) { | ||
| 124 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "抱歉,您不属于当前项目的承接对象") | ||
| 125 | + } | ||
| 113 | 126 | ||
| 114 | newCooperationApplication = &domain.CooperationApplication{ | 127 | newCooperationApplication = &domain.CooperationApplication{ |
| 115 | - CooperationApplicationApplicant: nil, // TODO 获取游客(申请人)信息 | 128 | + CooperationApplicationApplicant: applicant, |
| 116 | CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment, | 129 | CooperationApplicationAttachment: applyForCooperationCommand.CooperationApplicationAttachment, |
| 117 | CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription, | 130 | CooperationApplicationDescription: applyForCooperationCommand.CooperationApplicationDescription, |
| 118 | CooperationApplicationStatus: 1, | 131 | CooperationApplicationStatus: 1, |
| @@ -157,6 +170,7 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | @@ -157,6 +170,7 @@ func (cooperationApplicationService *CooperationApplicationService) ApplyForCoop | ||
| 157 | applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{ | 170 | applicationExist, _ := cooperationApplicationDao.CheckApplicationExist(map[string]interface{}{ |
| 158 | "companyId": applyForCooperationCommand.CompanyId, | 171 | "companyId": applyForCooperationCommand.CompanyId, |
| 159 | "orgId": applyForCooperationCommand.OrgId, | 172 | "orgId": applyForCooperationCommand.OrgId, |
| 173 | + "applicantId": applicant.UserId, | ||
| 160 | "cooperationApplicationId": cooperationProject.CooperationProjectId, | 174 | "cooperationApplicationId": cooperationProject.CooperationProjectId, |
| 161 | }) | 175 | }) |
| 162 | if applicationExist { | 176 | if applicationExist { |
| @@ -30,7 +30,6 @@ type PayCreditAccountCommand struct { | @@ -30,7 +30,6 @@ type PayCreditAccountCommand struct { | ||
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | func (payCreditAccountCommand *PayCreditAccountCommand) Valid(validation *validation.Validation) { | 32 | func (payCreditAccountCommand *PayCreditAccountCommand) Valid(validation *validation.Validation) { |
| 33 | - //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 34 | } | 33 | } |
| 35 | 34 | ||
| 36 | func (payCreditAccountCommand *PayCreditAccountCommand) ValidateCommand() error { | 35 | func (payCreditAccountCommand *PayCreditAccountCommand) ValidateCommand() error { |
| @@ -9,4 +9,5 @@ type UserService interface { | @@ -9,4 +9,5 @@ type UserService interface { | ||
| 9 | RelevantFrom(companyId int64, orgId int64, userId int64) (*domain.Relevant, error) // 获取相关人 | 9 | RelevantFrom(companyId int64, orgId int64, userId int64) (*domain.Relevant, error) // 获取相关人 |
| 10 | SalesmanFrom(companyId int64, orgId int64, userId int64) (*domain.Salesman, error) // 获取业务员 | 10 | SalesmanFrom(companyId int64, orgId int64, userId int64) (*domain.Salesman, error) // 获取业务员 |
| 11 | OperatorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取操作人 | 11 | OperatorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取操作人 |
| 12 | + VisitorFrom(companyId int64, orgId int64, userId int64) (*domain.User, error) // 获取游客 | ||
| 12 | } | 13 | } |
| @@ -27,6 +27,9 @@ func (dao *CooperationApplicationDao) CheckApplicationExist(queryOptions map[str | @@ -27,6 +27,9 @@ func (dao *CooperationApplicationDao) CheckApplicationExist(queryOptions map[str | ||
| 27 | if applicantId, ok := queryOptions["applicantId"]; ok && applicantId.(int64) != 0 { | 27 | if applicantId, ok := queryOptions["applicantId"]; ok && applicantId.(int64) != 0 { |
| 28 | query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userId":"?"}'`, applicantId) | 28 | query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userId":"?"}'`, applicantId) |
| 29 | } | 29 | } |
| 30 | + if visitorUserBaseId, ok := queryOptions["visitorUserBaseId"]; ok && visitorUserBaseId.(int64) != 0 { | ||
| 31 | + query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userBaseId":"?"}'`, visitorUserBaseId) | ||
| 32 | + } | ||
| 30 | if applicantBaseId, ok := queryOptions["applicantBaseId"]; ok && applicantBaseId.(int64) != 0 { | 33 | if applicantBaseId, ok := queryOptions["applicantBaseId"]; ok && applicantBaseId.(int64) != 0 { |
| 31 | query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userBaseId":"?"}'`, applicantBaseId) | 34 | query = query.Where(`cooperation_application.cooperation_application_applicant @>'{"userBaseId":"?"}'`, applicantBaseId) |
| 32 | } | 35 | } |
| @@ -172,6 +172,33 @@ func (service *UserService) OperatorFrom(companyId int64, orgId int64, userId in | @@ -172,6 +172,33 @@ func (service *UserService) OperatorFrom(companyId int64, orgId int64, userId in | ||
| 172 | } | 172 | } |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | +// VisitorFrom 获取游客 | ||
| 176 | +func (service *UserService) VisitorFrom(companyId int64, orgId int64, userBaseId int64) (*domain.User, error) { | ||
| 177 | + var returnData *domain.User | ||
| 178 | + if userAdaptor, err := adaptor.NewUserAdaptor(); err != nil { | ||
| 179 | + return nil, err | ||
| 180 | + } else { | ||
| 181 | + if visitor, err := userAdaptor.ToParticipator(companyId, orgId, userBaseId, "Visitor"); err != nil { | ||
| 182 | + return nil, err | ||
| 183 | + } else { | ||
| 184 | + if visitor != nil { | ||
| 185 | + log.Logger.Debug("游客", map[string]interface{}{ | ||
| 186 | + "visitor interface": visitor, | ||
| 187 | + }) | ||
| 188 | + visitorJson, err1 := json.Marshal(visitor) | ||
| 189 | + if err1 != nil { | ||
| 190 | + return nil, err | ||
| 191 | + } | ||
| 192 | + err2 := json.Unmarshal(visitorJson, &returnData) | ||
| 193 | + if err2 != nil { | ||
| 194 | + return nil, err2 | ||
| 195 | + } | ||
| 196 | + } | ||
| 197 | + return returnData, nil | ||
| 198 | + } | ||
| 199 | + } | ||
| 200 | +} | ||
| 201 | + | ||
| 175 | func NewUserService() (*UserService, error) { | 202 | func NewUserService() (*UserService, error) { |
| 176 | return &UserService{}, nil | 203 | return &UserService{}, nil |
| 177 | } | 204 | } |
| @@ -54,6 +54,12 @@ func (adaptor *UserAdaptor) ToParticipator(companyId int64, orgId int64, userId | @@ -54,6 +54,12 @@ func (adaptor *UserAdaptor) ToParticipator(companyId int64, orgId int64, userId | ||
| 54 | return map[string]interface{}{}, nil | 54 | return map[string]interface{}{}, nil |
| 55 | } | 55 | } |
| 56 | return user, nil | 56 | return user, nil |
| 57 | + case "Visitor": // 游客 | ||
| 58 | + visitor, err := userTranslator.ToVisitorFromRepresentation(response) | ||
| 59 | + if err != nil { | ||
| 60 | + return map[string]interface{}{}, nil | ||
| 61 | + } | ||
| 62 | + return visitor, nil | ||
| 57 | } | 63 | } |
| 58 | } | 64 | } |
| 59 | return map[string]interface{}{}, nil | 65 | return map[string]interface{}{}, nil |
| @@ -42,6 +42,33 @@ func (serviceGateway *HttplibUserServiceGateway) GetUser(companyId int64, orgId | @@ -42,6 +42,33 @@ func (serviceGateway *HttplibUserServiceGateway) GetUser(companyId int64, orgId | ||
| 42 | return &data, err | 42 | return &data, err |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | +// GetUserInfo 获取用户信息 | ||
| 46 | +func (serviceGateway *HttplibUserServiceGateway) GetUserInfo(companyId int64, orgId int64, userBaseId int64) (*translator.UserDetail, error) { | ||
| 47 | + url := serviceGateway.baseURL + "/auth/user-info" | ||
| 48 | + request := serviceGateway.createRequest(url, "post") | ||
| 49 | + options := make(map[string]interface{}) | ||
| 50 | + options["userBaseId"] = userBaseId | ||
| 51 | + _, err1 := request.JSONBody(options) | ||
| 52 | + if err1 != nil { | ||
| 53 | + return nil, err1 | ||
| 54 | + } | ||
| 55 | + byteResult, err := request.Bytes() | ||
| 56 | + if err != nil { | ||
| 57 | + return nil, fmt.Errorf("获取获取用户信息失败:%w", err) | ||
| 58 | + } | ||
| 59 | + log.Logger.Debug("获取用户模块请求数据:获取用户信息。", map[string]interface{}{ | ||
| 60 | + "result": string(byteResult), | ||
| 61 | + }) | ||
| 62 | + var result GatewayResponse | ||
| 63 | + err = json.Unmarshal(byteResult, &result) | ||
| 64 | + if err != nil { | ||
| 65 | + return nil, fmt.Errorf("解析获取用户:%w", err) | ||
| 66 | + } | ||
| 67 | + var data translator.UserDetail | ||
| 68 | + err = serviceGateway.getResponseData(result, &data) | ||
| 69 | + return &data, err | ||
| 70 | +} | ||
| 71 | + | ||
| 45 | // GetUsers 获取用户 | 72 | // GetUsers 获取用户 |
| 46 | func (serviceGateway *HttplibUserServiceGateway) GetUsers(companyId int64, orgId int64, uids []int64) (map[string]interface{}, error) { | 73 | func (serviceGateway *HttplibUserServiceGateway) GetUsers(companyId int64, orgId int64, uids []int64) (map[string]interface{}, error) { |
| 47 | companyIdStr := strconv.FormatInt(companyId, 10) | 74 | companyIdStr := strconv.FormatInt(companyId, 10) |
| @@ -8,6 +8,20 @@ import ( | @@ -8,6 +8,20 @@ import ( | ||
| 8 | type UserTranslator struct { | 8 | type UserTranslator struct { |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | +type UserInfoDetail struct { | ||
| 12 | + UserBaseId int64 `json:"userBaseId"` | ||
| 13 | + UserType int32 `json:"userType"` | ||
| 14 | + UserInfo struct { | ||
| 15 | + UserName string `json:"userName"` | ||
| 16 | + Phone string `json:"phone"` | ||
| 17 | + } `json:"userInfo,omitempty"` | ||
| 18 | + Im struct { | ||
| 19 | + Accid string `json:"accid"` | ||
| 20 | + ImToken string `json:"imToken"` | ||
| 21 | + CsAccountId string `json:"csAccountId"` | ||
| 22 | + } `json:"im,omitempty"` | ||
| 23 | +} | ||
| 24 | + | ||
| 11 | type UserDetail struct { | 25 | type UserDetail struct { |
| 12 | UserId int64 `json:"userId"` | 26 | UserId int64 `json:"userId"` |
| 13 | UserBaseId int64 `json:"userBaseId"` | 27 | UserBaseId int64 `json:"userBaseId"` |
| @@ -348,7 +362,7 @@ func (translator *UserTranslator) ToUserFromRepresentation(user *UserDetail) (*d | @@ -348,7 +362,7 @@ func (translator *UserTranslator) ToUserFromRepresentation(user *UserDetail) (*d | ||
| 348 | var roles []*domain.Role | 362 | var roles []*domain.Role |
| 349 | for _, role := range user.UserRole { | 363 | for _, role := range user.UserRole { |
| 350 | roles = append(roles, &domain.Role{ | 364 | roles = append(roles, &domain.Role{ |
| 351 | - RoleId: int64(role.RoleID), | 365 | + RoleId: role.RoleID, |
| 352 | RoleName: role.RoleName, | 366 | RoleName: role.RoleName, |
| 353 | }) | 367 | }) |
| 354 | } | 368 | } |
| @@ -386,6 +400,19 @@ func (translator *UserTranslator) ToUserFromRepresentation(user *UserDetail) (*d | @@ -386,6 +400,19 @@ func (translator *UserTranslator) ToUserFromRepresentation(user *UserDetail) (*d | ||
| 386 | }, nil | 400 | }, nil |
| 387 | } | 401 | } |
| 388 | 402 | ||
| 403 | +func (translator *UserTranslator) ToVisitorFromRepresentation(user *UserDetail) (*domain.User, error) { | ||
| 404 | + return &domain.User{ | ||
| 405 | + UserBaseId: user.UserBaseId, | ||
| 406 | + UserInfo: &domain.UserInfo{ | ||
| 407 | + UserName: user.UserInfo.UserName, | ||
| 408 | + UserPhone: user.UserInfo.Phone, | ||
| 409 | + }, | ||
| 410 | + UserType: user.UserType, | ||
| 411 | + UserName: user.UserInfo.UserName, | ||
| 412 | + UserPhone: user.UserInfo.Phone, | ||
| 413 | + }, nil | ||
| 414 | +} | ||
| 415 | + | ||
| 389 | func NewUserTranslator() (*UserTranslator, error) { | 416 | func NewUserTranslator() (*UserTranslator, error) { |
| 390 | return &UserTranslator{}, nil | 417 | return &UserTranslator{}, nil |
| 391 | } | 418 | } |
-
请 注册 或 登录 后发表评论