Merge branch 'dev' of http://gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway into dev
正在显示
26 个修改的文件
包含
539 行增加
和
247 行删除
@@ -696,7 +696,7 @@ func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUs | @@ -696,7 +696,7 @@ func (svr AuthService) GetCompanyOrgsByUser(queryParam *query.GetCompanyOrgsByUs | ||
696 | 696 | ||
697 | for i := range result.Users { | 697 | for i := range result.Users { |
698 | user := result.Users[i] | 698 | user := result.Users[i] |
699 | - if _, ok := mapCompany[user.Company.CompanyId]; !ok { | 699 | + if _, ok := mapCompany[user.Company.CompanyId]; !ok && len(user.UserOrg) > 0 { |
700 | companys = append(companys, dto.CompanyItem{ | 700 | companys = append(companys, dto.CompanyItem{ |
701 | CompanyId: user.Company.CompanyId, | 701 | CompanyId: user.Company.CompanyId, |
702 | CompanyName: user.Company.CompanyName, | 702 | CompanyName: user.Company.CompanyName, |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
4 | "strconv" | 5 | "strconv" |
5 | 6 | ||
6 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
@@ -81,9 +82,13 @@ func (srv CooperationApplicationsService) SearchCooperationApplications(applicat | @@ -81,9 +82,13 @@ func (srv CooperationApplicationsService) SearchCooperationApplications(applicat | ||
81 | IsCanceled: 1, | 82 | IsCanceled: 1, |
82 | }) | 83 | }) |
83 | for i := 0; i < len(resultApplications.Grid.List); i++ { | 84 | for i := 0; i < len(resultApplications.Grid.List); i++ { |
84 | - resultApplications.Grid.List[i].Department.DepartmentID = resultApplications.Grid.List[i].Org.OrgID | ||
85 | - resultApplications.Grid.List[i].Department.DepartmentName = resultApplications.Grid.List[i].Org.OrgName | 85 | + resultApplications.Grid.List[i].Department.DepartmentID = int(resultApplications.Grid.List[i].CooperationApplicationApplicant.Department.DepartmentId) |
86 | + resultApplications.Grid.List[i].Department.DepartmentName = resultApplications.Grid.List[i].CooperationApplicationApplicant.Department.DepartmentName | ||
87 | + if len(resultApplications.Grid.List[i].Department.DepartmentName) == 0 && resultApplications.Grid.List[i].Department.DepartmentID == 0 { | ||
88 | + resultApplications.Grid.List[i].Department.DepartmentName = domain.CooperationUserDepartmentName | ||
86 | } | 89 | } |
90 | + } | ||
91 | + | ||
87 | if err != nil { | 92 | if err != nil { |
88 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 93 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
89 | } | 94 | } |
@@ -168,10 +173,6 @@ func (srv CooperationApplicationsService) PersonSearchCooperationApplications(ap | @@ -168,10 +173,6 @@ func (srv CooperationApplicationsService) PersonSearchCooperationApplications(ap | ||
168 | } | 173 | } |
169 | // var dataList []dto.CooperationApplication | 174 | // var dataList []dto.CooperationApplication |
170 | 175 | ||
171 | - // for i := range resultApplications.Gride.List { | ||
172 | - // item := dto.ToCooperationApplication(&resultApplications.Gride.List[i]) | ||
173 | - // dataList = append(dataList, *item) | ||
174 | - // } | ||
175 | return resultApplications, nil | 176 | return resultApplications, nil |
176 | } | 177 | } |
177 | 178 |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
4 | "strconv" | 6 | "strconv" |
5 | 7 | ||
6 | "github.com/linmadan/egglib-go/core/application" | 8 | "github.com/linmadan/egglib-go/core/application" |
@@ -103,16 +105,17 @@ func (srv CooperationProjectService) SearchCooperationProject(projectQuery *comm | @@ -103,16 +105,17 @@ func (srv CooperationProjectService) SearchCooperationProject(projectQuery *comm | ||
103 | 105 | ||
104 | // PersonSearchCooperationProject 共创用户获取共创项目列表 | 106 | // PersonSearchCooperationProject 共创用户获取共创项目列表 |
105 | func (srv CooperationProjectService) PersonSearchCooperationProject(projectQuery *command.PersonSearchCooperationProjectQuery) (int, interface{}, error) { | 107 | func (srv CooperationProjectService) PersonSearchCooperationProject(projectQuery *command.PersonSearchCooperationProjectQuery) (int, interface{}, error) { |
108 | + extQueries := extQuires(projectQuery.Operator) | ||
106 | creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( | 109 | creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( |
107 | projectQuery.Operator) | 110 | projectQuery.Operator) |
108 | - //orgidStr := strconv.Itoa(projectQuery.OrgId) | ||
109 | result, err := creationCooperationGateway.CooperationProjectsSearch(allied_creation_cooperation.ReqCooperationProjectSearch{ | 111 | result, err := creationCooperationGateway.CooperationProjectsSearch(allied_creation_cooperation.ReqCooperationProjectSearch{ |
110 | PageNumber: projectQuery.PageNumber + 1, //手机序号从0开始的 | 112 | PageNumber: projectQuery.PageNumber + 1, //手机序号从0开始的 |
111 | PageSize: projectQuery.PageSize, | 113 | PageSize: projectQuery.PageSize, |
112 | OrgId: projectQuery.OrgId, | 114 | OrgId: projectQuery.OrgId, |
113 | Status: 1, //搜索状态为“招标中”项目 | 115 | Status: 1, //搜索状态为“招标中”项目 |
114 | Keyword: projectQuery.Keyword, | 116 | Keyword: projectQuery.Keyword, |
115 | - //UserBaseId: projectQuery.Operator.UserBaseId, | 117 | + SearchCooperationProjectExtQueriesFlag: 1, |
118 | + SearchCooperationProjectExtQueries: extQueries, | ||
116 | }) | 119 | }) |
117 | if err != nil { | 120 | if err != nil { |
118 | return 0, nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 121 | return 0, nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -120,6 +123,40 @@ func (srv CooperationProjectService) PersonSearchCooperationProject(projectQuery | @@ -120,6 +123,40 @@ func (srv CooperationProjectService) PersonSearchCooperationProject(projectQuery | ||
120 | return int(result.Total), result.List, nil | 123 | return int(result.Total), result.List, nil |
121 | } | 124 | } |
122 | 125 | ||
126 | +func extQuires(operator domain.Operator) []*allied_creation_cooperation.SearchCooperationProjectExtQuery { | ||
127 | + var extQueries = make([]*allied_creation_cooperation.SearchCooperationProjectExtQuery, 0) | ||
128 | + if operator.UserBaseId > 0 { | ||
129 | + gatewayUser := allied_creation_user.NewHttplibAlliedCreationUser( | ||
130 | + operator) | ||
131 | + users, err := gatewayUser.UserSearch(allied_creation_user.ReqUserSearch{ | ||
132 | + Limit: 100, | ||
133 | + Offset: 0, | ||
134 | + UserBaseId: operator.UserBaseId, | ||
135 | + EnableStatus: domain.UserStatusEnable, | ||
136 | + }) | ||
137 | + if err != nil { | ||
138 | + return extQueries | ||
139 | + } | ||
140 | + for i := range users.Users { | ||
141 | + u := users.Users[i] | ||
142 | + q := &allied_creation_cooperation.SearchCooperationProjectExtQuery{ | ||
143 | + ExtCompanyId: int64(u.Company.CompanyId), | ||
144 | + //ExtOrgId: int64(u.Org.OrgId), | ||
145 | + //ExtOrgIds: int64(u.UserOrg), | ||
146 | + ExtUserId: int64(u.UserId), | ||
147 | + ExtUserBaseId: int64(u.UserBaseId), | ||
148 | + ExtCooperationProjectUndertakerTypes: []int32{int32(u.UserType & 3), 3}, | ||
149 | + } | ||
150 | + for j := range u.UserOrg { | ||
151 | + org := u.UserOrg[j] | ||
152 | + q.ExtOrgIds = append(q.ExtOrgIds, int64(org.OrgID)) | ||
153 | + } | ||
154 | + extQueries = append(extQueries, q) | ||
155 | + } | ||
156 | + } | ||
157 | + return extQueries | ||
158 | +} | ||
159 | + | ||
123 | // PersonSearchCooperationProject 共创用户获取共创项目列表 | 160 | // PersonSearchCooperationProject 共创用户获取共创项目列表 |
124 | //func (srv CooperationProjectService) PersonRecommendCooperationProject(projectQuery *command.PersonSearchCooperationProjectQuery) (int, interface{}, error) { | 161 | //func (srv CooperationProjectService) PersonRecommendCooperationProject(projectQuery *command.PersonSearchCooperationProjectQuery) (int, interface{}, error) { |
125 | // creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( | 162 | // creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( |
@@ -109,7 +109,12 @@ func (srv CompanyCreditAccountService) CreditAccountPaySearch(cmd *command.Credi | @@ -109,7 +109,12 @@ func (srv CompanyCreditAccountService) CreditAccountPaySearch(cmd *command.Credi | ||
109 | } | 109 | } |
110 | var items = make([]*dto.CreditAccountItem, 0) | 110 | var items = make([]*dto.CreditAccountItem, 0) |
111 | if len(cooperationContractNumbers) == 0 { | 111 | if len(cooperationContractNumbers) == 0 { |
112 | - return items, nil | 112 | + return map[string]interface{}{ |
113 | + "grid": map[string]interface{}{ | ||
114 | + "list": items, | ||
115 | + "sum": 0, | ||
116 | + }, | ||
117 | + }, nil | ||
113 | } | 118 | } |
114 | 119 | ||
115 | var beginTime, endTime time.Time | 120 | var beginTime, endTime time.Time |
@@ -176,10 +181,14 @@ func (srv CompanyCreditAccountService) PaymentHistoryStatistics(cmd *command.Cre | @@ -176,10 +181,14 @@ func (srv CompanyCreditAccountService) PaymentHistoryStatistics(cmd *command.Cre | ||
176 | gateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( | 181 | gateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( |
177 | cmd.Operator) | 182 | cmd.Operator) |
178 | 183 | ||
179 | - var response = struct { | 184 | + type responseType struct { |
180 | RankItems interface{} `json:"rankItems"` | 185 | RankItems interface{} `json:"rankItems"` |
181 | TotalPaymentAmount interface{} `json:"totalPaymentAmount"` | 186 | TotalPaymentAmount interface{} `json:"totalPaymentAmount"` |
182 | - }{} | 187 | + } |
188 | + var response = responseType{ | ||
189 | + RankItems: []struct{}{}, | ||
190 | + TotalPaymentAmount: 0, | ||
191 | + } | ||
183 | cooperationContractNumbers, err := gateway.RelevantCooperationContractNumbers(allied_creation_cooperation.RelevantCooperationContractNumbers, map[string]interface{}{ | 192 | cooperationContractNumbers, err := gateway.RelevantCooperationContractNumbers(allied_creation_cooperation.RelevantCooperationContractNumbers, map[string]interface{}{ |
184 | "companyId": cmd.Operator.CompanyId, | 193 | "companyId": cmd.Operator.CompanyId, |
185 | "orgId": cmd.Operator.OrgId, | 194 | "orgId": cmd.Operator.OrgId, |
@@ -166,6 +166,9 @@ func (srv PersonStatisticsService) CompanyStatistics(cmd *command.CooperationPer | @@ -166,6 +166,9 @@ func (srv PersonStatisticsService) CompanyStatistics(cmd *command.CooperationPer | ||
166 | 166 | ||
167 | // CooperationProjectRecommend TODO:其他公司按公开的项目查 猜你喜欢(共创项目) | 167 | // CooperationProjectRecommend TODO:其他公司按公开的项目查 猜你喜欢(共创项目) |
168 | func (srv PersonStatisticsService) CooperationProjectRecommend(projectQuery *command.ListCooperationProjectQuery) (int64, interface{}, error) { | 168 | func (srv PersonStatisticsService) CooperationProjectRecommend(projectQuery *command.ListCooperationProjectQuery) (int64, interface{}, error) { |
169 | + if projectQuery.Operator.UserBaseId > 0 { | ||
170 | + | ||
171 | + } | ||
169 | creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( | 172 | creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation( |
170 | projectQuery.Operator) | 173 | projectQuery.Operator) |
171 | result, err := creationCooperationGateway.CooperationProjectsSearch(allied_creation_cooperation.ReqCooperationProjectSearch{ | 174 | result, err := creationCooperationGateway.CooperationProjectsSearch(allied_creation_cooperation.ReqCooperationProjectSearch{ |
@@ -188,7 +188,7 @@ func (srv UserService) DepartmentsUsers(departmentsUsersQuery *query.Departments | @@ -188,7 +188,7 @@ func (srv UserService) DepartmentsUsers(departmentsUsersQuery *query.Departments | ||
188 | CompanyId: departmentsUsersQuery.Operator.CompanyId, | 188 | CompanyId: departmentsUsersQuery.Operator.CompanyId, |
189 | OrganizationId: departmentsUsersQuery.Operator.OrgId, | 189 | OrganizationId: departmentsUsersQuery.Operator.OrgId, |
190 | UserType: domain.UserTypeEmployee, //TODO:是否要共创用户 | 190 | UserType: domain.UserTypeEmployee, //TODO:是否要共创用户 |
191 | - InEnableStatus: []int{domain.UserStatusEnable, domain.UserStatusDisable}, | 191 | + InEnableStatus: []int{domain.UserStatusEnable}, |
192 | }) | 192 | }) |
193 | if err != nil { | 193 | if err != nil { |
194 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 194 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
@@ -75,6 +75,7 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec | @@ -75,6 +75,7 @@ func (cooperationProjectService *CooperationProjectService) GetCooperationProjec | ||
75 | PageSize: 0, | 75 | PageSize: 0, |
76 | CompanyId: resultProject.Company.CompanyId, | 76 | CompanyId: resultProject.Company.CompanyId, |
77 | OrgId: int64(resultProject.Org.OrgId), | 77 | OrgId: int64(resultProject.Org.OrgId), |
78 | + CooperationApplicationStatus: 2, //审核通过的 | ||
78 | }) | 79 | }) |
79 | if err != nil { | 80 | if err != nil { |
80 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 81 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "encoding/json" | ||
5 | + "fmt" | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
8 | +) | ||
9 | + | ||
10 | +type ExportDataCommand struct { | ||
11 | + //操作人 | ||
12 | + Operator domain.Operator `json:"-"` | ||
13 | + // 业务编码 | ||
14 | + Ids []string `json:"ids"` | ||
15 | + Where json.RawMessage `json:"where"` | ||
16 | + // 业务编码 | ||
17 | + Code string `form:"code"` | ||
18 | +} | ||
19 | + | ||
20 | +func (exportDataCommand *ExportDataCommand) Valid(validation *validation.Validation) { | ||
21 | + | ||
22 | +} | ||
23 | + | ||
24 | +func (exportDataCommand *ExportDataCommand) ValidateCommand() error { | ||
25 | + valid := validation.Validation{} | ||
26 | + b, err := valid.Valid(exportDataCommand) | ||
27 | + if err != nil { | ||
28 | + return err | ||
29 | + } | ||
30 | + if !b { | ||
31 | + for _, validErr := range valid.Errors { | ||
32 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
33 | + } | ||
34 | + } | ||
35 | + return nil | ||
36 | +} | ||
37 | + | ||
38 | +func (exportDataCommand *ExportDataCommand) UnmarshalQuery(query interface{}) error { | ||
39 | + return json.Unmarshal(exportDataCommand.Where, query) | ||
40 | +} |
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | ||
8 | +) | ||
9 | + | ||
10 | +// ExportCompanyUser 导出公司用户信息列表 | ||
11 | +func (srv ExcelDataService) ExportCompanyUser(companyUserListQuery *query.CompanyUserListQuery) (ExportCompanyUserData, error) { | ||
12 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(companyUserListQuery.Operator) | ||
13 | + result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
14 | + Limit: 10000, | ||
15 | + CompanyId: companyUserListQuery.Operator.CompanyId, | ||
16 | + OrganizationId: 0, | ||
17 | + DepartmentId: 0, | ||
18 | + UserName: companyUserListQuery.UserName, | ||
19 | + DepName: companyUserListQuery.DepartmentName, | ||
20 | + Phone: "", | ||
21 | + UserType: domain.UserTypeEmployee, | ||
22 | + InOrgIds: companyUserListQuery.Operator.OrgIds, | ||
23 | + PullRealTime: true, | ||
24 | + }) | ||
25 | + if err != nil { | ||
26 | + return ExportCompanyUserData{}, fmt.Errorf("获取企业用户数据失败:%w", err) | ||
27 | + } | ||
28 | + return ExportCompanyUserData(result.Users), nil | ||
29 | +} | ||
30 | + | ||
31 | +// ExportCooperationUser 导出共创用户信息列表 | ||
32 | +func (srv ExcelDataService) ExportCooperationUser(companyUserListQuery *query.CooperationUserListQuery) (ExportCooperationUserData, error) { | ||
33 | + creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(companyUserListQuery.Operator) | ||
34 | + result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
35 | + Limit: 10000, | ||
36 | + CompanyId: companyUserListQuery.Operator.CompanyId, | ||
37 | + OrganizationId: 0, | ||
38 | + DepartmentId: 0, | ||
39 | + UserName: companyUserListQuery.UserName, | ||
40 | + CooperationCompany: companyUserListQuery.CooperationCompany, | ||
41 | + Phone: "", | ||
42 | + UserType: domain.UserTypeCooperation, | ||
43 | + InOrgIds: companyUserListQuery.Operator.OrgIds, | ||
44 | + }) | ||
45 | + if err != nil { | ||
46 | + return ExportCooperationUserData{}, fmt.Errorf("获取企业用户数据失败:%w", err) | ||
47 | + } | ||
48 | + return ExportCooperationUserData(result.Users), nil | ||
49 | +} |
@@ -7,7 +7,6 @@ import ( | @@ -7,7 +7,6 @@ import ( | ||
7 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
8 | "github.com/linmadan/egglib-go/utils/excel" | 8 | "github.com/linmadan/egglib-go/utils/excel" |
9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/command" | 9 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/command" |
10 | - "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/application/web/excelData/query" | ||
11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/domainService" | 11 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/domainService" |
13 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | 12 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" |
@@ -20,158 +19,62 @@ func NewExcelDataService(param map[string]interface{}) *ExcelDataService { | @@ -20,158 +19,62 @@ func NewExcelDataService(param map[string]interface{}) *ExcelDataService { | ||
20 | return &ExcelDataService{} | 19 | return &ExcelDataService{} |
21 | } | 20 | } |
22 | 21 | ||
23 | -// ExportCompanyUser 导出公司用户信息列表 | ||
24 | -func (srv ExcelDataService) ExportCompanyUser(companyUserListQuery *query.CompanyUserListQuery) (ExportCompanyUserData, error) { | ||
25 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(companyUserListQuery.Operator) | ||
26 | - result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
27 | - Limit: 10000, | ||
28 | - CompanyId: companyUserListQuery.Operator.CompanyId, | ||
29 | - OrganizationId: 0, | ||
30 | - DepartmentId: 0, | ||
31 | - UserName: companyUserListQuery.UserName, | ||
32 | - DepName: companyUserListQuery.DepartmentName, | ||
33 | - Phone: "", | ||
34 | - UserType: domain.UserTypeEmployee, | ||
35 | - InOrgIds: companyUserListQuery.Operator.OrgIds, | 22 | +// ImportCooperationUser 导入共创用户信息 |
23 | +func (srv ExcelDataService) ImportCooperationUser(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
24 | + initPassword, _, err := domainService.GetInitPassword(importDataCommand.Operator) | ||
25 | + if err != nil { | ||
26 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
27 | + } | ||
28 | + userGateway := allied_creation_user.NewHttplibAlliedCreationUser(importDataCommand.Operator) | ||
29 | + orgResult, err := userGateway.OrgGet(allied_creation_user.ReqOrgGet{ | ||
30 | + OrgId: int(importDataCommand.Operator.OrgId), | ||
36 | }) | 31 | }) |
37 | if err != nil { | 32 | if err != nil { |
38 | - return ExportCompanyUserData{}, fmt.Errorf("获取企业用户数据失败:%w", err) | 33 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
39 | } | 34 | } |
40 | - return ExportCompanyUserData(result.Users), nil | ||
41 | -} | ||
42 | - | ||
43 | -// ExportCooperationUser 导出共创用户信息列表 | ||
44 | -func (srv ExcelDataService) ExportCooperationUser(companyUserListQuery *query.CompanyUserListQuery) (ExportCooperationUserData, error) { | ||
45 | - creationUserGateway := allied_creation_user.NewHttplibAlliedCreationUser(companyUserListQuery.Operator) | ||
46 | - result, err := creationUserGateway.UserSearch(allied_creation_user.ReqUserSearch{ | ||
47 | - Limit: 10000, | ||
48 | - CompanyId: companyUserListQuery.Operator.CompanyId, | ||
49 | - OrganizationId: 0, | ||
50 | - DepartmentId: 0, | ||
51 | - UserName: companyUserListQuery.UserName, | ||
52 | - DepName: companyUserListQuery.DepartmentName, | ||
53 | - Phone: "", | 35 | + excelImport := excel.NewExcelImport() |
36 | + excelImport.RowBegin = 3 //第二行开始读取 | ||
37 | + excelImport.DataFields = []excel.DataField{ | ||
38 | + {EnName: "userCode", CnName: "*用户编码"}, | ||
39 | + {EnName: "userName", CnName: "*用户姓名"}, | ||
40 | + {EnName: "cooperationCompany", CnName: "合伙公司"}, | ||
41 | + {EnName: "cooperationDeadline", CnName: "合伙到期"}, | ||
42 | + {EnName: "enableStatus", CnName: "*用户状态"}, | ||
43 | + {EnName: "phone", CnName: "*手机号"}, | ||
44 | + {EnName: "email", CnName: "邮箱"}, | ||
45 | + } | ||
46 | + excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
47 | + if err != nil { | ||
48 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
49 | + } | ||
50 | + users := make([]allied_creation_user.BatchAddUserItem, 0) | ||
51 | + for _, v := range excelData { | ||
52 | + if srv.fieldValueAllEmpty(v) { | ||
53 | + continue | ||
54 | + } | ||
55 | + item := allied_creation_user.BatchAddUserItem{ | ||
56 | + CompanyId: importDataCommand.Operator.CompanyId, | ||
54 | UserType: domain.UserTypeCooperation, | 57 | UserType: domain.UserTypeCooperation, |
55 | - InOrgIds: companyUserListQuery.Operator.OrgIds, | 58 | + UserCode: v["userCode"], |
59 | + Org: orgResult.OrgCode, | ||
60 | + UserName: strings.TrimSpace(v["userName"]), | ||
61 | + Phone: strings.TrimSpace(v["phone"]), | ||
62 | + Email: strings.TrimSpace(v["email"]), | ||
63 | + EnableStatus: strings.TrimSpace(v["enableStatus"]), | ||
64 | + CooperationCompany: v["cooperationCompany"], | ||
65 | + CooperationDeadline: v["cooperationDeadline"], | ||
66 | + } | ||
67 | + users = append(users, item) | ||
68 | + } | ||
69 | + | ||
70 | + result, err := userGateway.UserBatchAdd(allied_creation_user.ReqBatchAddUser{ | ||
71 | + Users: users, | ||
72 | + Password: initPassword, | ||
56 | }) | 73 | }) |
57 | if err != nil { | 74 | if err != nil { |
58 | - return ExportCooperationUserData{}, fmt.Errorf("获取企业用户数据失败:%w", err) | 75 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
59 | } | 76 | } |
60 | - return ExportCooperationUserData(result.Users), nil | ||
61 | -} | ||
62 | - | ||
63 | -// ImportCompanyUser 导入公司用户信息 | ||
64 | -func (srv ExcelDataService) ImportCompanyUser2(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
65 | - //initPassword, _, err := domainService.GetInitPassword(importDataCommand.Operator) | ||
66 | - //if err != nil { | ||
67 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
68 | - //} | ||
69 | - //excelImport := excel.NewExcelImport() | ||
70 | - //excelImport.RowBegin = 2 //第二行开始读取 | ||
71 | - //excelImport.DataFields = []excel.DataField{ | ||
72 | - // {EnName: "UserCode", CnName: "*用户编号"}, | ||
73 | - // {EnName: "UserName", CnName: "*用户姓名"}, | ||
74 | - // {EnName: "OrganizationID", CnName: "*组织机构"}, | ||
75 | - // {EnName: "DepartmentID", CnName: "*所属部门"}, | ||
76 | - // {EnName: "Phone", CnName: "*手机号"}, | ||
77 | - // {EnName: "Email", CnName: "邮箱"}, | ||
78 | - // {EnName: "Status", CnName: "状态"}, | ||
79 | - //} | ||
80 | - //excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
81 | - //if err != nil { | ||
82 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
83 | - //} | ||
84 | - //users := make([]allied_creation_user.BatchAddUserItem, 0) | ||
85 | - //for _, v := range excelData { | ||
86 | - // item := allied_creation_user.BatchAddUserItem{ | ||
87 | - // CompanyID: importDataCommand.Operator.CompanyId, | ||
88 | - // UserType: domain.UserTypeEmployee, | ||
89 | - // UserCode: v["UserCode"], | ||
90 | - // OrganizationID: 0, | ||
91 | - // DepartmentID: 0, | ||
92 | - // UserInfo: allied_creation_user.BatchAddUserItemUserInfo{ | ||
93 | - // UserName: v["UserName"], | ||
94 | - // Phone: v["Phone"], | ||
95 | - // Email: v["Email"], | ||
96 | - // }, | ||
97 | - // CooperationInfo: allied_creation_user.BatchAddUserItemCooperationInfo{}, | ||
98 | - // } | ||
99 | - // item.OrganizationID, err = strconv.Atoi(v["OrganizationID"]) | ||
100 | - // if err != nil { | ||
101 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, fmt.Sprintf("用户:%v 组织值:%v 类型无效(数值类型)", item.UserInfo.UserName, item.OrganizationID)) | ||
102 | - // } | ||
103 | - // item.DepartmentID, err = strconv.Atoi(v["DepartmentID"]) | ||
104 | - // if err != nil { | ||
105 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, fmt.Sprintf("用户:%v 部门值:%v 类型无效(数值类型)", item.UserInfo.UserName, item.DepartmentID)) | ||
106 | - // } | ||
107 | - // users = append(users, item) | ||
108 | - //} | ||
109 | - //userGateway := allied_creation_user.NewHttplibAlliedCreationUser(importDataCommand.Operator) | ||
110 | - //result, err := userGateway.UserBatchAdd(allied_creation_user.ReqBatchAddUser{ | ||
111 | - // Users: users, | ||
112 | - // Password: initPassword, | ||
113 | - //}) | ||
114 | - //if err != nil { | ||
115 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
116 | - //} | ||
117 | - //return result, nil | ||
118 | - return nil, nil | ||
119 | -} | ||
120 | - | ||
121 | -// ImportCooperationUser 导入共创用户信息 | ||
122 | -func (srv ExcelDataService) ImportCooperationUser(importDataCommand *command.ImportDataCommand) (interface{}, error) { | ||
123 | - //initPassword, _, err := domainService.GetInitPassword(importDataCommand.Operator) | ||
124 | - //if err != nil { | ||
125 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
126 | - //} | ||
127 | - //excelImport := excel.NewExcelImport() | ||
128 | - //excelImport.RowBegin = 2 //第二行开始读取 | ||
129 | - //excelImport.DataFields = []excel.DataField{ | ||
130 | - // {EnName: "UserCode", CnName: "*用户编号"}, | ||
131 | - // {EnName: "UserName", CnName: "*用户姓名"}, | ||
132 | - // {EnName: "CooperationCompany", CnName: "*合伙公司"}, | ||
133 | - // {EnName: "CooperationDeadline", CnName: "*合伙到期"}, | ||
134 | - // {EnName: "Phone", CnName: "*手机号"}, | ||
135 | - // {EnName: "Email", CnName: "邮箱"}, | ||
136 | - //} | ||
137 | - //excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | ||
138 | - //if err != nil { | ||
139 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
140 | - //} | ||
141 | - //users := make([]allied_creation_user.BatchAddUserItem, 0) | ||
142 | - //var fail int | ||
143 | - //for _, v := range excelData { | ||
144 | - // item := allied_creation_user.BatchAddUserItem{ | ||
145 | - // CompanyID: importDataCommand.Operator.CompanyId, | ||
146 | - // UserType: domain.UserTypeCooperation, | ||
147 | - // UserCode: v["UserCode"], | ||
148 | - // OrganizationID: int(importDataCommand.Operator.OrgId), | ||
149 | - // UserInfo: allied_creation_user.BatchAddUserItemUserInfo{ | ||
150 | - // UserName: v["UserName"], | ||
151 | - // Phone: v["Phone"], | ||
152 | - // Email: v["Email"], | ||
153 | - // }, | ||
154 | - // CooperationInfo: allied_creation_user.BatchAddUserItemCooperationInfo{ | ||
155 | - // CooperationCompany: v["CooperationCompany"], | ||
156 | - // }, | ||
157 | - // } | ||
158 | - // item.CooperationInfo.CooperationDeadline, err = time.Parse("2006-01-02", v["CooperationDeadline"]) | ||
159 | - // if err != nil { | ||
160 | - // fail++ | ||
161 | - // continue | ||
162 | - // } | ||
163 | - // users = append(users, item) | ||
164 | - //} | ||
165 | - //userGateway := allied_creation_user.NewHttplibAlliedCreationUser(importDataCommand.Operator) | ||
166 | - //result, err := userGateway.UserBatchAdd(allied_creation_user.ReqBatchAddUser{ | ||
167 | - // Users: users, | ||
168 | - // Password: initPassword, | ||
169 | - //}) | ||
170 | - //if err != nil { | ||
171 | - // return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
172 | - //} | ||
173 | - //return result, nil | ||
174 | - return nil, nil | 77 | + return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(users)), nil |
175 | } | 78 | } |
176 | 79 | ||
177 | // ImportCompanyUser 导入公司用户信息 | 80 | // ImportCompanyUser 导入公司用户信息 |
@@ -197,21 +100,19 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -197,21 +100,19 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
197 | } | 100 | } |
198 | users := make([]allied_creation_user.BatchAddUserItem, 0) | 101 | users := make([]allied_creation_user.BatchAddUserItem, 0) |
199 | for _, v := range excelData { | 102 | for _, v := range excelData { |
103 | + if srv.fieldValueAllEmpty(v) { | ||
104 | + continue | ||
105 | + } | ||
200 | item := allied_creation_user.BatchAddUserItem{ | 106 | item := allied_creation_user.BatchAddUserItem{ |
201 | CompanyId: importDataCommand.Operator.CompanyId, | 107 | CompanyId: importDataCommand.Operator.CompanyId, |
202 | UserType: domain.UserTypeEmployee, | 108 | UserType: domain.UserTypeEmployee, |
203 | - UserCode: v["userCode"], | ||
204 | - Org: v["org"], | ||
205 | - Department: v["department"], | ||
206 | - UserName: v["userName"], | ||
207 | - Phone: v["phone"], | ||
208 | - Email: v["email"], | ||
209 | - EnableStatus: domain.UserStatusEnable, | ||
210 | - } | ||
211 | - if status, ok := v["status"]; ok { | ||
212 | - if strings.TrimSpace(status) != "启用" { | ||
213 | - item.EnableStatus = domain.UserStatusDisable | ||
214 | - } | 109 | + UserCode: strings.TrimSpace(v["userCode"]), |
110 | + Org: strings.TrimSpace(v["org"]), | ||
111 | + Department: strings.TrimSpace(v["department"]), | ||
112 | + UserName: strings.TrimSpace(v["userName"]), | ||
113 | + Phone: strings.TrimSpace(v["phone"]), | ||
114 | + Email: strings.TrimSpace(v["email"]), | ||
115 | + EnableStatus: strings.TrimSpace(v["enableStatus"]), | ||
215 | } | 116 | } |
216 | users = append(users, item) | 117 | users = append(users, item) |
217 | } | 118 | } |
@@ -223,9 +124,10 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -223,9 +124,10 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
223 | if err != nil { | 124 | if err != nil { |
224 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 125 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
225 | } | 126 | } |
226 | - return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(excelData)), nil | 127 | + return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(users)), nil |
227 | } | 128 | } |
228 | 129 | ||
130 | +// ImportOrganization 导入组织 | ||
229 | func (srv ExcelDataService) ImportOrganization(importDataCommand *command.ImportDataCommand) (interface{}, error) { | 131 | func (srv ExcelDataService) ImportOrganization(importDataCommand *command.ImportDataCommand) (interface{}, error) { |
230 | excelImport := excel.NewExcelImport() | 132 | excelImport := excel.NewExcelImport() |
231 | excelImport.RowBegin = 3 //第二行开始读取 | 133 | excelImport.RowBegin = 3 //第二行开始读取 |
@@ -240,6 +142,9 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | @@ -240,6 +142,9 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | ||
240 | } | 142 | } |
241 | items := make([]allied_creation_user.BatchAddOrgItem, 0) | 143 | items := make([]allied_creation_user.BatchAddOrgItem, 0) |
242 | for _, v := range excelData { | 144 | for _, v := range excelData { |
145 | + if srv.fieldValueAllEmpty(v) { | ||
146 | + continue | ||
147 | + } | ||
243 | item := allied_creation_user.BatchAddOrgItem{ | 148 | item := allied_creation_user.BatchAddOrgItem{ |
244 | CompanyId: importDataCommand.Operator.CompanyId, | 149 | CompanyId: importDataCommand.Operator.CompanyId, |
245 | OrgCode: v["orgCode"], | 150 | OrgCode: v["orgCode"], |
@@ -255,7 +160,7 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | @@ -255,7 +160,7 @@ func (srv ExcelDataService) ImportOrganization(importDataCommand *command.Import | ||
255 | if err != nil { | 160 | if err != nil { |
256 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 161 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
257 | } | 162 | } |
258 | - return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(excelData)), nil | 163 | + return srv.importResultWithHeader(excelImport.DataFields, result.FailRows, len(items)), nil |
259 | } | 164 | } |
260 | 165 | ||
261 | // 导入结果 | 166 | // 导入结果 |
@@ -282,15 +187,25 @@ func (srv ExcelDataService) importResultWithHeader(headers []excel.DataField, fa | @@ -282,15 +187,25 @@ func (srv ExcelDataService) importResultWithHeader(headers []excel.DataField, fa | ||
282 | return result | 187 | return result |
283 | } | 188 | } |
284 | 189 | ||
285 | -// ImportCompanyUser 导入公司用户信息 | 190 | +func (srv ExcelDataService) fieldValueAllEmpty(param map[string]string) bool { |
191 | + isAllEmpty := true | ||
192 | + for _, v := range param { | ||
193 | + value := strings.TrimSpace(v) | ||
194 | + if len(value) > 0 { | ||
195 | + isAllEmpty = false | ||
196 | + } | ||
197 | + } | ||
198 | + return isAllEmpty | ||
199 | +} | ||
200 | + | ||
201 | +// FileImportTemplate 导入模板 | ||
286 | func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.ImportDataCommand) (interface{}, error) { | 202 | func (srv ExcelDataService) FileImportTemplate(importDataCommand *command.ImportDataCommand) (interface{}, error) { |
287 | var mapTemplate = map[string]string{ | 203 | var mapTemplate = map[string]string{ |
288 | domain.ImportCompanyUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807485_EaxECeRz23WpzrMZmbwdEPRJ3Pdxpx5X.xlsx", | 204 | domain.ImportCompanyUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807485_EaxECeRz23WpzrMZmbwdEPRJ3Pdxpx5X.xlsx", |
289 | domain.ImportOrganization: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807490_r2XWhGmbWWmpbeePBkZ3EJQFKcZEMpEm.xlsx", | 205 | domain.ImportOrganization: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807490_r2XWhGmbWWmpbeePBkZ3EJQFKcZEMpEm.xlsx", |
290 | - domain.ImportDividendsOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210916/object/1631807770_sBtA4dYcmESZy6Q2ycfGSCKGdFtBETQZ.xlsx", | ||
291 | - // 模板待更新 | ||
292 | - domain.ImportCooperationUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210909/object/1631171021_baB6y5zdpwC2WnsHFQhKC3dkQEaAYMNZ.xlsx", | ||
293 | - domain.ImportDividendsReturnOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210909/object/1631171021_baB6y5zdpwC2WnsHFQhKC3dkQEaAYMNZ.xlsx", | 206 | + domain.ImportDividendsOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743206_NPYTKw6RGhXn4TpYNEQhGGdCkXKXTnxM.xlsx", |
207 | + domain.ImportCooperationUser: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210926/object/1632635345_SbfzmkXjQHhCwPw4MB7zb5EBBtdp2MSE.xlsx", | ||
208 | + domain.ImportDividendsReturnOrders: "https://timeless-world.oss-cn-shenzhen.aliyuncs.com/open-api/dev_online/20210927/object/1632743214_rNHm6ZBXZaC5xKTrsE7M4h45MY6n6Ff3.xlsx", | ||
294 | } | 209 | } |
295 | var url string | 210 | var url string |
296 | var ok bool | 211 | var ok bool |
@@ -5,7 +5,7 @@ import ( | @@ -5,7 +5,7 @@ import ( | ||
5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" | 5 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_user" |
6 | ) | 6 | ) |
7 | 7 | ||
8 | -//exportCompanyUserData 导出公司用户数据 | 8 | +// ExportCompanyUserData 导出公司用户数据 |
9 | type ExportCompanyUserData []allied_creation_user.UserDetail | 9 | type ExportCompanyUserData []allied_creation_user.UserDetail |
10 | 10 | ||
11 | var _ excel.ExcelMaker = (*ExportCompanyUserData)(nil) | 11 | var _ excel.ExcelMaker = (*ExportCompanyUserData)(nil) |
@@ -69,7 +69,7 @@ func (data ExportCompanyUserData) TableTitle() []string { | @@ -69,7 +69,7 @@ func (data ExportCompanyUserData) TableTitle() []string { | ||
69 | return nil | 69 | return nil |
70 | } | 70 | } |
71 | 71 | ||
72 | -//exportCompanyUserData 导出共创用户数据 | 72 | +//ExportCooperationUserData 导出共创用户数据 |
73 | type ExportCooperationUserData []allied_creation_user.UserDetail | 73 | type ExportCooperationUserData []allied_creation_user.UserDetail |
74 | 74 | ||
75 | var _ excel.ExcelMaker = (*ExportCooperationUserData)(nil) | 75 | var _ excel.ExcelMaker = (*ExportCooperationUserData)(nil) |
@@ -78,10 +78,12 @@ func (data ExportCooperationUserData) DataFieldList() []excel.DataField { | @@ -78,10 +78,12 @@ func (data ExportCooperationUserData) DataFieldList() []excel.DataField { | ||
78 | return []excel.DataField{ | 78 | return []excel.DataField{ |
79 | {EnName: "UserCode", CnName: "用户编码"}, | 79 | {EnName: "UserCode", CnName: "用户编码"}, |
80 | {EnName: "UserName", CnName: "用户姓名"}, | 80 | {EnName: "UserName", CnName: "用户姓名"}, |
81 | - {EnName: "CooperationCompany", CnName: "合作公司"}, | ||
82 | - {EnName: "CooperationDeadline", CnName: "合作到期"}, | ||
83 | {EnName: "Phone", CnName: "手机号"}, | 81 | {EnName: "Phone", CnName: "手机号"}, |
84 | - {EnName: "Email", CnName: "邮箱"}, | 82 | + {EnName: "CooperationCompany", CnName: "共创公司"}, |
83 | + {EnName: "CooperationDeadline", CnName: "共创到期"}, | ||
84 | + {EnName: "EnableStatus", CnName: "状态"}, | ||
85 | + | ||
86 | + //{EnName: "Email", CnName: "邮箱"}, | ||
85 | } | 87 | } |
86 | } | 88 | } |
87 | 89 | ||
@@ -97,11 +99,27 @@ func (data ExportCooperationUserData) CellValue(index int, enName string) (value | @@ -97,11 +99,27 @@ func (data ExportCooperationUserData) CellValue(index int, enName string) (value | ||
97 | case "CooperationCompany": | 99 | case "CooperationCompany": |
98 | return data[index].CooperationInfo.CooperationCompany | 100 | return data[index].CooperationInfo.CooperationCompany |
99 | case "CooperationDeadline": | 101 | case "CooperationDeadline": |
102 | + if data[index].CooperationInfo.CooperationDeadline.IsZero() || data[index].CooperationInfo.CooperationDeadline.Unix() == 0 { | ||
103 | + return "" | ||
104 | + } | ||
100 | return data[index].CooperationInfo.CooperationDeadline.Format("2006-01-02") | 105 | return data[index].CooperationInfo.CooperationDeadline.Format("2006-01-02") |
101 | case "Phone": | 106 | case "Phone": |
102 | return data[index].UserInfo.Phone | 107 | return data[index].UserInfo.Phone |
103 | case "Email": | 108 | case "Email": |
104 | return data[index].UserInfo.Email | 109 | return data[index].UserInfo.Email |
110 | + case "EnableStatus": | ||
111 | + status := data[index].EnableStatus | ||
112 | + statusName := "" | ||
113 | + // 状态(1:启用 2:禁用 3:注销) | ||
114 | + switch status { | ||
115 | + case 1: | ||
116 | + statusName = "启用" | ||
117 | + case 2: | ||
118 | + statusName = "禁用" | ||
119 | + case 3: | ||
120 | + statusName = "注销" | ||
121 | + } | ||
122 | + return statusName | ||
105 | } | 123 | } |
106 | return nil | 124 | return nil |
107 | } | 125 | } |
@@ -18,6 +18,7 @@ type OrgItem struct { | @@ -18,6 +18,7 @@ type OrgItem struct { | ||
18 | type DepartmentUsersDto struct { | 18 | type DepartmentUsersDto struct { |
19 | Departments []*Department `json:"departments,omitempty"` | 19 | Departments []*Department `json:"departments,omitempty"` |
20 | Users []interface{} `json:"users,omitempty"` | 20 | Users []interface{} `json:"users,omitempty"` |
21 | + Applicants []interface{} `json:"applicants,omitempty"` | ||
21 | } | 22 | } |
22 | 23 | ||
23 | type Department struct { | 24 | type Department struct { |
@@ -30,6 +31,7 @@ type User struct { | @@ -30,6 +31,7 @@ type User struct { | ||
30 | UserID int `json:"userId,string"` | 31 | UserID int `json:"userId,string"` |
31 | UserCode string `json:"userCode"` | 32 | UserCode string `json:"userCode"` |
32 | UserInfo map[string]interface{} `json:"userInfo"` | 33 | UserInfo map[string]interface{} `json:"userInfo"` |
34 | + Department interface{} `json:"department,omitempty"` | ||
33 | } | 35 | } |
34 | 36 | ||
35 | func (dto *DepartmentUsersDto) LoadDto(dataType int, subDepartment *allied_creation_user.DataOrgGetSubDepartment, userSearch *allied_creation_user.DataUserSearch) error { | 37 | func (dto *DepartmentUsersDto) LoadDto(dataType int, subDepartment *allied_creation_user.DataOrgGetSubDepartment, userSearch *allied_creation_user.DataUserSearch) error { |
@@ -12,6 +12,8 @@ type DepartmentsUsersQuery struct { | @@ -12,6 +12,8 @@ type DepartmentsUsersQuery struct { | ||
12 | Operator domain.Operator `json:"-"` | 12 | Operator domain.Operator `json:"-"` |
13 | // 类型0:部门用户列表 1:全部用户列表(不包含部门) | 13 | // 类型0:部门用户列表 1:全部用户列表(不包含部门) |
14 | Type int `json:"type"` | 14 | Type int `json:"type"` |
15 | + // 共创项目ID - 获取项目申请人列表 | ||
16 | + CooperationProjectId int `json:"cooperationProjectId,string"` | ||
15 | } | 17 | } |
16 | 18 | ||
17 | func (departmentsUsersQuery *DepartmentsUsersQuery) Valid(validation *validation.Validation) { | 19 | func (departmentsUsersQuery *DepartmentsUsersQuery) Valid(validation *validation.Validation) { |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_cooperation" | ||
4 | "strconv" | 5 | "strconv" |
5 | 6 | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" |
@@ -174,6 +175,44 @@ func (orgsService OrgsService) DepartmentsUsers(departmentsUsersQuery *query.Dep | @@ -174,6 +175,44 @@ func (orgsService OrgsService) DepartmentsUsers(departmentsUsersQuery *query.Dep | ||
174 | if err := departmentUsersDto.LoadDto(departmentsUsersQuery.Type, orgs, users); err != nil { | 175 | if err := departmentUsersDto.LoadDto(departmentsUsersQuery.Type, orgs, users); err != nil { |
175 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 176 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
176 | } | 177 | } |
178 | + | ||
179 | + // 项目申请人 | ||
180 | + if departmentsUsersQuery.CooperationProjectId != 0 { | ||
181 | + creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(departmentsUsersQuery.Operator) | ||
182 | + resultProject, err := creationCooperationGateway.CooperationProjectGet(allied_creation_cooperation.ReqCooperationProjectGet{ | ||
183 | + CooperationProjectId: departmentsUsersQuery.CooperationProjectId, | ||
184 | + }) | ||
185 | + if err != nil { | ||
186 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
187 | + } | ||
188 | + resultApplication, err := creationCooperationGateway.CooperationApplicationsSearch(allied_creation_cooperation.ReqCooperationApplicationSearch{ | ||
189 | + CooperationProjectNumber: resultProject.CooperationProject.CooperationProjectNumber, | ||
190 | + PageNumber: 0, | ||
191 | + PageSize: 1000, | ||
192 | + CompanyId: resultProject.Company.CompanyId, | ||
193 | + OrgId: int64(resultProject.Org.OrgId), | ||
194 | + CooperationApplicationStatus: 2, //审核通过的 | ||
195 | + }) | ||
196 | + if err != nil { | ||
197 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
198 | + } | ||
199 | + applications := make([]interface{}, 0) | ||
200 | + for i := range resultApplication.Grid.List { | ||
201 | + item := resultApplication.Grid.List[i] | ||
202 | + user := dto.User{ | ||
203 | + UserID: item.CooperationApplicationApplicant.UserID, | ||
204 | + UserCode: item.CooperationApplicationApplicant.UserInfo.UserCode, | ||
205 | + UserInfo: map[string]interface{}{ | ||
206 | + "userName": item.CooperationApplicationApplicant.UserInfo.UserName, | ||
207 | + "phone": item.CooperationApplicationApplicant.UserInfo.UserPhone, | ||
208 | + }, | ||
209 | + Department: item.CooperationApplicationApplicant.Department, | ||
210 | + } | ||
211 | + applications = append(applications, user) | ||
212 | + } | ||
213 | + departmentUsersDto.Applicants = applications | ||
214 | + } | ||
215 | + | ||
177 | return departmentUsersDto, nil | 216 | return departmentUsersDto, nil |
178 | } | 217 | } |
179 | 218 |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/beego/beego/v2/core/validation" | ||
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
7 | +) | ||
8 | + | ||
9 | +// 共创项目用户查询 | ||
10 | +type CooperationProjectUsersQuery struct { | ||
11 | + //操作人 | ||
12 | + Operator domain.Operator `json:"-"` | ||
13 | + // 共创项目ID - 获取项目申请人列表 | ||
14 | + CooperationProjectId int `json:"cooperationProjectId,string"` | ||
15 | +} | ||
16 | + | ||
17 | +func (departmentsUsersQuery *CooperationProjectUsersQuery) Valid(validation *validation.Validation) { | ||
18 | + | ||
19 | +} | ||
20 | + | ||
21 | +func (departmentsUsersQuery *CooperationProjectUsersQuery) ValidateQuery() error { | ||
22 | + valid := validation.Validation{} | ||
23 | + b, err := valid.Valid(departmentsUsersQuery) | ||
24 | + if err != nil { | ||
25 | + return err | ||
26 | + } | ||
27 | + if !b { | ||
28 | + for _, validErr := range valid.Errors { | ||
29 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
30 | + } | ||
31 | + } | ||
32 | + return nil | ||
33 | +} |
@@ -3,6 +3,7 @@ package service | @@ -3,6 +3,7 @@ package service | ||
3 | import ( | 3 | import ( |
4 | "crypto/sha1" | 4 | "crypto/sha1" |
5 | "fmt" | 5 | "fmt" |
6 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_cooperation" | ||
6 | "strconv" | 7 | "strconv" |
7 | "time" | 8 | "time" |
8 | 9 | ||
@@ -570,3 +571,46 @@ func (usersService *UsersService) GetInitPassword(operator domain.Operator) (str | @@ -570,3 +571,46 @@ func (usersService *UsersService) GetInitPassword(operator domain.Operator) (str | ||
570 | password = fmt.Sprintf("%x", sha1.Sum([]byte(reqResult.Value))) | 571 | password = fmt.Sprintf("%x", sha1.Sum([]byte(reqResult.Value))) |
571 | return password, reqResult.Value, err | 572 | return password, reqResult.Value, err |
572 | } | 573 | } |
574 | + | ||
575 | +// SelectorCooperationProjectUsers 共创项目用户下拉列表 | ||
576 | +func (usersService *UsersService) SelectorCooperationProjectUsers(q *query.CooperationProjectUsersQuery) (interface{}, error) { | ||
577 | + applications := make([]interface{}, 0) | ||
578 | + // 项目申请人 | ||
579 | + if q.CooperationProjectId != 0 { | ||
580 | + creationCooperationGateway := allied_creation_cooperation.NewHttplibAlliedCreationCooperation(q.Operator) | ||
581 | + resultProject, err := creationCooperationGateway.CooperationProjectGet(allied_creation_cooperation.ReqCooperationProjectGet{ | ||
582 | + CooperationProjectId: q.CooperationProjectId, | ||
583 | + }) | ||
584 | + if err != nil { | ||
585 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
586 | + } | ||
587 | + resultApplication, err := creationCooperationGateway.CooperationApplicationsSearch(allied_creation_cooperation.ReqCooperationApplicationSearch{ | ||
588 | + CooperationProjectNumber: resultProject.CooperationProject.CooperationProjectNumber, | ||
589 | + PageNumber: 0, | ||
590 | + PageSize: 1000, | ||
591 | + CompanyId: resultProject.Company.CompanyId, | ||
592 | + OrgId: int64(resultProject.Org.OrgId), | ||
593 | + CooperationApplicationStatus: 2, //审核通过的 | ||
594 | + }) | ||
595 | + if err != nil { | ||
596 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
597 | + } | ||
598 | + | ||
599 | + for i := range resultApplication.Grid.List { | ||
600 | + item := resultApplication.Grid.List[i] | ||
601 | + user := map[string]interface{}{ | ||
602 | + "userId": item.CooperationApplicationApplicant.UserID, | ||
603 | + "userCode": item.CooperationApplicationApplicant.UserInfo.UserCode, | ||
604 | + "userInfo": map[string]interface{}{ | ||
605 | + "userName": item.CooperationApplicationApplicant.UserInfo.UserName, | ||
606 | + "phone": item.CooperationApplicationApplicant.UserInfo.UserPhone, | ||
607 | + }, | ||
608 | + "department": item.CooperationApplicationApplicant.Department, | ||
609 | + } | ||
610 | + applications = append(applications, user) | ||
611 | + } | ||
612 | + } | ||
613 | + return map[string]interface{}{ | ||
614 | + "applicants": applications, | ||
615 | + }, nil | ||
616 | +} |
@@ -62,3 +62,14 @@ const ( | @@ -62,3 +62,14 @@ const ( | ||
62 | // 导入退货订单 | 62 | // 导入退货订单 |
63 | ImportDividendsReturnOrders = "BUSINESS_ALLIED-CREATION_BONUS_RETURN" | 63 | ImportDividendsReturnOrders = "BUSINESS_ALLIED-CREATION_BONUS_RETURN" |
64 | ) | 64 | ) |
65 | + | ||
66 | +const ( | ||
67 | + // 导入公司用户 | ||
68 | + ExportCompanyUser = "ExportCompanyUser" | ||
69 | + // 导入共创用户 | ||
70 | + ExportCooperationUser = "ExportCooperationUser" | ||
71 | +) | ||
72 | + | ||
73 | +const ( | ||
74 | + CooperationUserDepartmentName = "共创用户" | ||
75 | +) |
@@ -173,6 +173,20 @@ type ( | @@ -173,6 +173,20 @@ type ( | ||
173 | 173 | ||
174 | //查询共创项目 | 174 | //查询共创项目 |
175 | type ( | 175 | type ( |
176 | + SearchCooperationProjectExtQuery struct { | ||
177 | + // 公司ID,通过集成REST上下文获取 | ||
178 | + ExtCompanyId int64 `cname:"公司ID" json:"extCompanyId,omitempty"` | ||
179 | + // 组织机构ID | ||
180 | + ExtOrgId int64 `cname:"组织机构ID" json:"extOrgId,omitempty"` | ||
181 | + // 关联的组织机构ID列表 | ||
182 | + ExtOrgIds []int64 `cname:"关联的组织机构ID列表" json:"extOrgIds,omitempty"` | ||
183 | + // 用户ID,通过集成REST上下文获取,可翻译成发起人、承接人、推荐人、业务员 | ||
184 | + ExtUserId int64 `cname:"用户ID" json:"extUserId,omitempty"` | ||
185 | + // 用户基础数据id | ||
186 | + ExtUserBaseId int64 `cname:"用户基础数据ID" json:"extUserBaseId,omitempty"` | ||
187 | + // 共创项目承接对象,1员工,2共创用户,3公开,可多选 | ||
188 | + ExtCooperationProjectUndertakerTypes []int32 `json:"extCooperationProjectUndertakerTypes"` | ||
189 | + } | ||
176 | ReqCooperationProjectSearch struct { | 190 | ReqCooperationProjectSearch struct { |
177 | PageNumber int `json:"pageNumber"` | 191 | PageNumber int `json:"pageNumber"` |
178 | PageSize int `json:"pageSize"` | 192 | PageSize int `json:"pageSize"` |
@@ -194,6 +208,10 @@ type ( | @@ -194,6 +208,10 @@ type ( | ||
194 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` | 208 | UserBaseId int64 `cname:"用户基础数据ID" json:"userBaseId"` |
195 | // 共创项目承接对象,1员工,2共创用户,4公开,可以多选 | 209 | // 共创项目承接对象,1员工,2共创用户,4公开,可以多选 |
196 | CooperationProjectUndertakerType int32 `json:"cooperationProjectUndertakerType"` | 210 | CooperationProjectUndertakerType int32 `json:"cooperationProjectUndertakerType"` |
211 | + // 额外的查询条件 0:不需要额外查询 1:额外查询 | ||
212 | + SearchCooperationProjectExtQueriesFlag int `cname:"额外的查询条件标识" json:"searchCooperationProjectExtQueriesFlag"` | ||
213 | + // 额外的查询条件 | ||
214 | + SearchCooperationProjectExtQueries []*SearchCooperationProjectExtQuery `cname:"额外的查询条件" json:"searchCooperationProjectExtQueries"` | ||
197 | } | 215 | } |
198 | DataCooperationProjectSearchItem struct { | 216 | DataCooperationProjectSearchItem struct { |
199 | CooperationProjectID string `json:"cooperationProjectId"` | 217 | CooperationProjectID string `json:"cooperationProjectId"` |
@@ -43,6 +43,8 @@ type UserDetail struct { | @@ -43,6 +43,8 @@ type UserDetail struct { | ||
43 | Department *struct { | 43 | Department *struct { |
44 | DepartmentId int `json:"departmentId"` | 44 | DepartmentId int `json:"departmentId"` |
45 | DepartmentName string `json:"departmentName"` | 45 | DepartmentName string `json:"departmentName"` |
46 | + // 部门编号 | ||
47 | + DepartmentNumber string `json:"departmentNumber"` | ||
46 | } `json:"department,omitempty"` | 48 | } `json:"department,omitempty"` |
47 | UserRole []struct { | 49 | UserRole []struct { |
48 | RoleID int `json:"roleId"` | 50 | RoleID int `json:"roleId"` |
@@ -393,11 +395,11 @@ type ( | @@ -393,11 +395,11 @@ type ( | ||
393 | // 部门编码 | 395 | // 部门编码 |
394 | Department string `json:"department,omitempty"` | 396 | Department string `json:"department,omitempty"` |
395 | // 状态(1:启用 2:禁用 3:注销) | 397 | // 状态(1:启用 2:禁用 3:注销) |
396 | - EnableStatus int `json:"enableStatus,omitempty"` | 398 | + EnableStatus string `json:"enableStatus,omitempty"` |
397 | // 共创公司 cooperationCompany | 399 | // 共创公司 cooperationCompany |
398 | CooperationCompany string `json:"cooperationCompany"` | 400 | CooperationCompany string `json:"cooperationCompany"` |
399 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline | 401 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline |
400 | - CooperationDeadline time.Time `json:"cooperationDeadline"` | 402 | + CooperationDeadline string `json:"cooperationDeadline"` |
401 | // 失败理由 | 403 | // 失败理由 |
402 | FailReason string `json:"failReason"` | 404 | FailReason string `json:"failReason"` |
403 | } | 405 | } |
@@ -97,8 +97,8 @@ func (controller *BaseController) GetOperator() domain.Operator { | @@ -97,8 +97,8 @@ func (controller *BaseController) GetOperator() domain.Operator { | ||
97 | OrgIds: loginToken.OrgIds, | 97 | OrgIds: loginToken.OrgIds, |
98 | } | 98 | } |
99 | 99 | ||
100 | - // TODO:打印测试日志 | ||
101 | - log.Logger.Debug("operator " + json.MarshalToString(op)) | 100 | + // 打印测试日志 |
101 | + // log.Logger.Debug("operator " + json.MarshalToString(op)) | ||
102 | return op | 102 | return op |
103 | } | 103 | } |
104 | 104 |
@@ -45,60 +45,6 @@ func (controller *ExcelDataController) fieldValueAllEmpty(param map[string]strin | @@ -45,60 +45,6 @@ func (controller *ExcelDataController) fieldValueAllEmpty(param map[string]strin | ||
45 | return isAllEmpty | 45 | return isAllEmpty |
46 | } | 46 | } |
47 | 47 | ||
48 | -// ExportCompanyUser 导出公司用户 | ||
49 | -func (controller ExcelDataController) ExportCompanyUser() { | ||
50 | - excelService := service.NewExcelDataService(nil) | ||
51 | - companyUserListQuery := &query.CompanyUserListQuery{} | ||
52 | - err := controller.Unmarshal(companyUserListQuery) | ||
53 | - if err != nil { | ||
54 | - log.Logger.Debug("json err:" + err.Error()) | ||
55 | - controller.Response(nil, err) | ||
56 | - return | ||
57 | - } | ||
58 | - companyUserListQuery.Operator = controller.GetOperator() | ||
59 | - data, err := excelService.ExportCompanyUser(companyUserListQuery) | ||
60 | - if err != nil { | ||
61 | - log.Logger.Debug("excelService.ExportCompanyUser err:" + err.Error()) | ||
62 | - controller.Response(nil, err) | ||
63 | - return | ||
64 | - } | ||
65 | - excelTool := excel.NewExcelExport() | ||
66 | - err = excelTool.ExportData(data, "") | ||
67 | - if err != nil { | ||
68 | - log.Logger.Debug("excelTool.ExportData err:" + err.Error()) | ||
69 | - controller.Response(nil, err) | ||
70 | - return | ||
71 | - } | ||
72 | - controller.responseExcelByFile(controller.Ctx, excelTool, "导出公司用户") | ||
73 | -} | ||
74 | - | ||
75 | -// ExportCooperationUser 导出共创用户 | ||
76 | -func (controller ExcelDataController) ExportCooperationUser() { | ||
77 | - excelService := service.NewExcelDataService(nil) | ||
78 | - companyUserListQuery := &query.CompanyUserListQuery{} | ||
79 | - err := controller.Unmarshal(companyUserListQuery) | ||
80 | - if err != nil { | ||
81 | - log.Logger.Debug("json err:" + err.Error()) | ||
82 | - controller.Response(nil, err) | ||
83 | - return | ||
84 | - } | ||
85 | - companyUserListQuery.Operator = controller.GetOperator() | ||
86 | - data, err := excelService.ExportCooperationUser(companyUserListQuery) | ||
87 | - if err != nil { | ||
88 | - log.Logger.Debug("excelService.ExportCompanyUser err:" + err.Error()) | ||
89 | - controller.Response(nil, err) | ||
90 | - return | ||
91 | - } | ||
92 | - excelTool := excel.NewExcelExport() | ||
93 | - err = excelTool.ExportData(data, "") | ||
94 | - if err != nil { | ||
95 | - log.Logger.Debug("excelTool.ExportData err:" + err.Error()) | ||
96 | - controller.Response(nil, err) | ||
97 | - return | ||
98 | - } | ||
99 | - controller.responseExcelByFile(controller.Ctx, excelTool, "导出共创用户") | ||
100 | -} | ||
101 | - | ||
102 | // ImportDividendsOrder 导入分红订单 | 48 | // ImportDividendsOrder 导入分红订单 |
103 | func (controller ExcelDataController) ImportDividendsOrder() { | 49 | func (controller ExcelDataController) ImportDividendsOrder() { |
104 | importDividendsOrder(controller) | 50 | importDividendsOrder(controller) |
@@ -276,3 +222,69 @@ func (controller ExcelDataController) FileImportTemplate() { | @@ -276,3 +222,69 @@ func (controller ExcelDataController) FileImportTemplate() { | ||
276 | data, err := excelService.FileImportTemplate(cmd) | 222 | data, err := excelService.FileImportTemplate(cmd) |
277 | controller.Response(data, err) | 223 | controller.Response(data, err) |
278 | } | 224 | } |
225 | + | ||
226 | +// FileExport 文件导出 | ||
227 | +func (controller ExcelDataController) FileExport() { | ||
228 | + fileExport(controller, "") | ||
229 | +} | ||
230 | + | ||
231 | +func fileExport(controller ExcelDataController, code string) { | ||
232 | + // 1.读取command | ||
233 | + exportDataCommand := &command.ExportDataCommand{} | ||
234 | + err := controller.Unmarshal(exportDataCommand) | ||
235 | + if err != nil { | ||
236 | + log.Logger.Debug("json err:" + err.Error()) | ||
237 | + controller.Response(nil, err) | ||
238 | + return | ||
239 | + } | ||
240 | + exportDataCommand.Operator = controller.GetOperator() | ||
241 | + | ||
242 | + if exportDataCommand.Code == "" && code != "" { | ||
243 | + exportDataCommand.Code = code | ||
244 | + } | ||
245 | + // 2.读取data | ||
246 | + var data excel.ExcelMaker | ||
247 | + var filename string | ||
248 | + var excelService = service.NewExcelDataService(nil) | ||
249 | + switch exportDataCommand.Code { | ||
250 | + case domain.ExportCompanyUser: | ||
251 | + companyUserListQuery := &query.CompanyUserListQuery{} | ||
252 | + exportDataCommand.UnmarshalQuery(companyUserListQuery) | ||
253 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
254 | + data, err = excelService.ExportCompanyUser(companyUserListQuery) | ||
255 | + filename = "导出公司用户" | ||
256 | + case domain.ExportCooperationUser: | ||
257 | + companyUserListQuery := &query.CooperationUserListQuery{} | ||
258 | + exportDataCommand.UnmarshalQuery(companyUserListQuery) | ||
259 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
260 | + data, err = excelService.ExportCooperationUser(companyUserListQuery) | ||
261 | + filename = "导出共创用户" | ||
262 | + default: | ||
263 | + err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code) | ||
264 | + } | ||
265 | + if err != nil { | ||
266 | + log.Logger.Debug("excelService.Export err:" + err.Error()) | ||
267 | + controller.Response(nil, err) | ||
268 | + return | ||
269 | + } | ||
270 | + | ||
271 | + // 3.返回文件 | ||
272 | + excelTool := excel.NewExcelExport() | ||
273 | + err = excelTool.ExportData(data, "") | ||
274 | + if err != nil { | ||
275 | + log.Logger.Debug("excelTool.ExportData err:" + err.Error()) | ||
276 | + controller.Response(nil, err) | ||
277 | + return | ||
278 | + } | ||
279 | + controller.responseExcelByFile(controller.Ctx, excelTool, filename) | ||
280 | +} | ||
281 | + | ||
282 | +// ExportCompanyUser 导出公司用户 | ||
283 | +func (controller ExcelDataController) ExportCompanyUser() { | ||
284 | + fileExport(controller, domain.ExportCompanyUser) | ||
285 | +} | ||
286 | + | ||
287 | +// ExportCooperationUser 导出共创用户 | ||
288 | +func (controller ExcelDataController) ExportCooperationUser() { | ||
289 | + fileExport(controller, domain.ExportCooperationUser) | ||
290 | +} |
@@ -157,3 +157,13 @@ func (controller *UsersController) SelectorCompanyOrgAll() { | @@ -157,3 +157,13 @@ func (controller *UsersController) SelectorCompanyOrgAll() { | ||
157 | _, data, err := usersService.SelectorCompanyOrgAll(selectorQuery) | 157 | _, data, err := usersService.SelectorCompanyOrgAll(selectorQuery) |
158 | controller.Response(data, err) | 158 | controller.Response(data, err) |
159 | } | 159 | } |
160 | + | ||
161 | +//CompanyOrgSelector 全组织部门选择表 | ||
162 | +func (controller *UsersController) SelectorCooperationProjectUsers() { | ||
163 | + usersService := service.NewUsersService(nil) | ||
164 | + selectorQuery := &query.CooperationProjectUsersQuery{} | ||
165 | + controller.Unmarshal(selectorQuery) | ||
166 | + selectorQuery.Operator = controller.GetOperator() | ||
167 | + data, err := usersService.SelectorCooperationProjectUsers(selectorQuery) | ||
168 | + controller.Response(data, err) | ||
169 | +} |
@@ -13,5 +13,6 @@ func init() { | @@ -13,5 +13,6 @@ func init() { | ||
13 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") | 13 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") |
14 | 14 | ||
15 | web.Router("/v1/web/file-import", &web_client.ExcelDataController{}, "Post:FileImport") | 15 | web.Router("/v1/web/file-import", &web_client.ExcelDataController{}, "Post:FileImport") |
16 | + web.Router("/v1/web/file-export", &web_client.ExcelDataController{}, "Post:FileExport") | ||
16 | web.Router("/v1/web/file-import-template/:code", &web_client.ExcelDataController{}, "Get:FileImportTemplate") | 17 | web.Router("/v1/web/file-import-template/:code", &web_client.ExcelDataController{}, "Get:FileImportTemplate") |
17 | } | 18 | } |
@@ -21,4 +21,6 @@ func init() { | @@ -21,4 +21,6 @@ func init() { | ||
21 | web.Router("/v1/web/users/selector/org", &web_client.UsersController{}, "Post:SelectorCompanyOrg") | 21 | web.Router("/v1/web/users/selector/org", &web_client.UsersController{}, "Post:SelectorCompanyOrg") |
22 | web.Router("/v1/web/users/selector/role", &web_client.UsersController{}, "Post:SelectorCompanyRole") | 22 | web.Router("/v1/web/users/selector/role", &web_client.UsersController{}, "Post:SelectorCompanyRole") |
23 | web.Router("/v1/web/users/selector/org/all", &web_client.UsersController{}, "Post:SelectorCompanyOrgAll") | 23 | web.Router("/v1/web/users/selector/org/all", &web_client.UsersController{}, "Post:SelectorCompanyOrgAll") |
24 | + | ||
25 | + web.Router("/v1/web/users/selector/cooperation-project-users", &web_client.UsersController{}, "Post:SelectorCooperationProjectUsers") | ||
24 | } | 26 | } |
@@ -13,13 +13,56 @@ func PKCS5Padding(plaintext []byte, blockSize int) []byte { | @@ -13,13 +13,56 @@ func PKCS5Padding(plaintext []byte, blockSize int) []byte { | ||
13 | } | 13 | } |
14 | 14 | ||
15 | //@brief:去除填充数据 | 15 | //@brief:去除填充数据 |
16 | -func PKCS5UnPadding(origData []byte) []byte { | 16 | +func PKCS5UnPadding(origData []byte, blockSize int) []byte { |
17 | length := len(origData) | 17 | length := len(origData) |
18 | unpadding := int(origData[length-1]) | 18 | unpadding := int(origData[length-1]) |
19 | return origData[:(length - unpadding)] | 19 | return origData[:(length - unpadding)] |
20 | } | 20 | } |
21 | 21 | ||
22 | -//@brief:AES加密 | 22 | +// PKCS7Padding right-pads the given byte slice with 1 to n bytes, where |
23 | +// n is the block size. The size of the result is x times n, where x | ||
24 | +// is at least 1. | ||
25 | +func PKCS7Padding(b []byte, blockSize int) []byte { | ||
26 | + if blockSize <= 0 { | ||
27 | + return nil | ||
28 | + } | ||
29 | + if b == nil || len(b) == 0 { | ||
30 | + return nil | ||
31 | + } | ||
32 | + n := blockSize - (len(b) % blockSize) | ||
33 | + pb := make([]byte, len(b)+n) | ||
34 | + copy(pb, b) | ||
35 | + copy(pb[len(b):], bytes.Repeat([]byte{byte(n)}, n)) | ||
36 | + return pb | ||
37 | +} | ||
38 | + | ||
39 | +// PKCS7UnPadding validates and unpads data from the given bytes slice. | ||
40 | +// The returned value will be 1 to n bytes smaller depending on the | ||
41 | +// amount of padding, where n is the block size. | ||
42 | +func PKCS7UnPadding(b []byte, blockSize int) []byte { | ||
43 | + if blockSize <= 0 { | ||
44 | + return nil | ||
45 | + } | ||
46 | + if b == nil || len(b) == 0 { | ||
47 | + return nil | ||
48 | + } | ||
49 | + if len(b)%blockSize != 0 { | ||
50 | + return nil | ||
51 | + } | ||
52 | + c := b[len(b)-1] | ||
53 | + n := int(c) | ||
54 | + if n == 0 || n > len(b) { | ||
55 | + return nil | ||
56 | + } | ||
57 | + for i := 0; i < n; i++ { | ||
58 | + if b[len(b)-n+i] != c { | ||
59 | + return nil | ||
60 | + } | ||
61 | + } | ||
62 | + return b[:len(b)-n] | ||
63 | +} | ||
64 | + | ||
65 | +// AES加密 | ||
23 | func AesEncrypt(origData, key []byte) ([]byte, error) { | 66 | func AesEncrypt(origData, key []byte) ([]byte, error) { |
24 | block, err := aes.NewCipher(key) | 67 | block, err := aes.NewCipher(key) |
25 | if err != nil { | 68 | if err != nil { |
@@ -28,14 +71,14 @@ func AesEncrypt(origData, key []byte) ([]byte, error) { | @@ -28,14 +71,14 @@ func AesEncrypt(origData, key []byte) ([]byte, error) { | ||
28 | 71 | ||
29 | //AES分组长度为128位,所以blockSize=16,单位字节 | 72 | //AES分组长度为128位,所以blockSize=16,单位字节 |
30 | blockSize := block.BlockSize() | 73 | blockSize := block.BlockSize() |
31 | - origData = PKCS5Padding(origData, blockSize) | 74 | + origData = PKCS7Padding(origData, blockSize) |
32 | blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) //初始向量的长度必须等于块block的长度16字节 | 75 | blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) //初始向量的长度必须等于块block的长度16字节 |
33 | crypted := make([]byte, len(origData)) | 76 | crypted := make([]byte, len(origData)) |
34 | blockMode.CryptBlocks(crypted, origData) | 77 | blockMode.CryptBlocks(crypted, origData) |
35 | return crypted, nil | 78 | return crypted, nil |
36 | } | 79 | } |
37 | 80 | ||
38 | -//@brief:AES解密 | 81 | +// AES解密 |
39 | func AesDecrypt(crypted, key []byte) ([]byte, error) { | 82 | func AesDecrypt(crypted, key []byte) ([]byte, error) { |
40 | block, err := aes.NewCipher(key) | 83 | block, err := aes.NewCipher(key) |
41 | if err != nil { | 84 | if err != nil { |
@@ -47,6 +90,6 @@ func AesDecrypt(crypted, key []byte) ([]byte, error) { | @@ -47,6 +90,6 @@ func AesDecrypt(crypted, key []byte) ([]byte, error) { | ||
47 | blockMode := cipher.NewCBCDecrypter(block, key[:blockSize]) //初始向量的长度必须等于块block的长度16字节 | 90 | blockMode := cipher.NewCBCDecrypter(block, key[:blockSize]) //初始向量的长度必须等于块block的长度16字节 |
48 | origData := make([]byte, len(crypted)) | 91 | origData := make([]byte, len(crypted)) |
49 | blockMode.CryptBlocks(origData, crypted) | 92 | blockMode.CryptBlocks(origData, crypted) |
50 | - origData = PKCS5UnPadding(origData) | 93 | + origData = PKCS7UnPadding(origData, blockSize) |
51 | return origData, nil | 94 | return origData, nil |
52 | } | 95 | } |
@@ -8,7 +8,7 @@ import ( | @@ -8,7 +8,7 @@ import ( | ||
8 | 8 | ||
9 | func Test_Aes(t *testing.T) { | 9 | func Test_Aes(t *testing.T) { |
10 | //key的长度必须是16、24或者32字节,分别用于选择AES-128, AES-192, or AES-256 | 10 | //key的长度必须是16、24或者32字节,分别用于选择AES-128, AES-192, or AES-256 |
11 | - var aeskey = []byte("12345678abcdefgh") | 11 | + var aeskey = []byte("mmm.qrcode.(%^&)") |
12 | pass := []byte("vdncloud123456") | 12 | pass := []byte("vdncloud123456") |
13 | xpass, err := AesEncrypt(pass, aeskey) | 13 | xpass, err := AesEncrypt(pass, aeskey) |
14 | if err != nil { | 14 | if err != nil { |
-
请 注册 或 登录 后发表评论