正在显示
11 个修改的文件
包含
288 行增加
和
40 行删除
| @@ -7,6 +7,8 @@ import ( | @@ -7,6 +7,8 @@ import ( | ||
| 7 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/domain" |
| 8 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" | 8 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" |
| 9 | protocolx "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol/project_module_files" | 9 | protocolx "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol/project_module_files" |
| 10 | + "path/filepath" | ||
| 11 | + "strings" | ||
| 10 | "time" | 12 | "time" |
| 11 | ) | 13 | ) |
| 12 | 14 | ||
| @@ -15,7 +17,8 @@ type ProjectModuleFilesService struct { | @@ -15,7 +17,8 @@ type ProjectModuleFilesService struct { | ||
| 15 | 17 | ||
| 16 | func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol.RequestHeader, request *protocolx.CreateProjectModuleFilesRequest) (rsp interface{}, err error) { | 18 | func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol.RequestHeader, request *protocolx.CreateProjectModuleFilesRequest) (rsp interface{}, err error) { |
| 17 | var ( | 19 | var ( |
| 18 | - transactionContext, _ = factory.CreateTransactionContext(nil) | 20 | + transactionContext, _ = factory.CreateTransactionContext(nil) |
| 21 | + ProjectModuleVersion, _ = factory.CreateProjectModuleVersionRepository(transactionContext) | ||
| 19 | ) | 22 | ) |
| 20 | rsp = &protocolx.CreateProjectModuleFilesResponse{} | 23 | rsp = &protocolx.CreateProjectModuleFilesResponse{} |
| 21 | if err = request.ValidateCommand(); err != nil { | 24 | if err = request.ValidateCommand(); err != nil { |
| @@ -31,7 +34,7 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | @@ -31,7 +34,7 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | ||
| 31 | newProjectModuleFiles := &domain.ProjectModuleFiles{ | 34 | newProjectModuleFiles := &domain.ProjectModuleFiles{ |
| 32 | ProjectModuleId: request.ProjectModuleId, | 35 | ProjectModuleId: request.ProjectModuleId, |
| 33 | ProjectModuleVersionId: request.ProjectModuleVersionId, | 36 | ProjectModuleVersionId: request.ProjectModuleVersionId, |
| 34 | - ParentId: request.ProjectModuleVersionId, | 37 | + ParentId: request.ParentId, |
| 35 | FileType: request.FileType, | 38 | FileType: request.FileType, |
| 36 | FileName: request.FileName, | 39 | FileName: request.FileName, |
| 37 | FileKey: request.FileKey, | 40 | FileKey: request.FileKey, |
| @@ -39,17 +42,16 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | @@ -39,17 +42,16 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | ||
| 39 | Remark: request.Remark, | 42 | Remark: request.Remark, |
| 40 | CreateTime: time.Now(), | 43 | CreateTime: time.Now(), |
| 41 | UpdateTime: time.Now(), | 44 | UpdateTime: time.Now(), |
| 45 | + Path: request.FileKey, | ||
| 42 | } | 46 | } |
| 43 | 47 | ||
| 44 | - var ProjectModuleFilesRepository, _ = factory.CreateProjectModuleFilesRepository(transactionContext) | ||
| 45 | - if m, e := ProjectModuleFilesRepository.FindOne(map[string]interface{}{"fileKey": request.FileKey, "projectModuleId": request.ProjectModuleId, "projectModuleVersionId": request.ProjectModuleVersionId}); e == nil && m != nil { | ||
| 46 | - err = protocol.NewCustomMessage(1, "已存在 filekey:"+request.FileKey) | 48 | + if _, err = ProjectModuleVersion.FindOne(map[string]interface{}{"id": request.ProjectModuleVersionId, "projectModuleId": request.ProjectModuleId}); err != nil { |
| 49 | + err = protocol.NewCustomMessage(1, "项目版本不存在") | ||
| 47 | return | 50 | return |
| 48 | } | 51 | } |
| 49 | - if m, err := ProjectModuleFilesRepository.Save(newProjectModuleFiles); err != nil { | ||
| 50 | - return nil, err | ||
| 51 | - } else { | ||
| 52 | - rsp = m | 52 | + var ProjectModuleFilesRepository, _ = factory.CreateProjectModuleFilesRepository(transactionContext) |
| 53 | + if rsp, err = svr.save(newProjectModuleFiles, ProjectModuleFilesRepository); err != nil { | ||
| 54 | + return | ||
| 53 | } | 55 | } |
| 54 | err = transactionContext.CommitTransaction() | 56 | err = transactionContext.CommitTransaction() |
| 55 | return | 57 | return |
| @@ -172,6 +174,130 @@ func (svr *ProjectModuleFilesService) ListProjectModuleFiles(header *protocol.Re | @@ -172,6 +174,130 @@ func (svr *ProjectModuleFilesService) ListProjectModuleFiles(header *protocol.Re | ||
| 172 | return | 174 | return |
| 173 | } | 175 | } |
| 174 | 176 | ||
| 177 | +func (svr *ProjectModuleFilesService) Import(header *protocol.RequestHeader, request *protocolx.ImportRequest) (rsp *protocolx.ImportResponse, err error) { | ||
| 178 | + var ( | ||
| 179 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 180 | + ProjectModuleVersion, _ = factory.CreateProjectModuleVersionRepository(transactionContext) | ||
| 181 | + ) | ||
| 182 | + rsp = &protocolx.ImportResponse{} | ||
| 183 | + if err = request.ValidateCommand(); err != nil { | ||
| 184 | + err = protocol.NewCustomMessage(2, err.Error()) | ||
| 185 | + return | ||
| 186 | + } | ||
| 187 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 188 | + log.Error(err) | ||
| 189 | + return nil, err | ||
| 190 | + } | ||
| 191 | + defer func() { | ||
| 192 | + transactionContext.RollbackTransaction() | ||
| 193 | + }() | ||
| 194 | + if _, err = ProjectModuleVersion.FindOne(map[string]interface{}{"id": request.ProjectModuleVersionId, "projectModuleId": request.ProjectModuleId}); err != nil { | ||
| 195 | + err = protocol.NewCustomMessage(1, "项目版本不存在") | ||
| 196 | + return | ||
| 197 | + } | ||
| 198 | + | ||
| 199 | + var ProjectModuleFilesRepository, _ = factory.CreateProjectModuleFilesRepository(transactionContext) | ||
| 200 | + var mapParent map[string]*domain.ProjectModuleFiles = make(map[string]*domain.ProjectModuleFiles) | ||
| 201 | + | ||
| 202 | + for _, f := range request.ImportFiles { | ||
| 203 | + fileDir := filepath.Dir(f.FileName) | ||
| 204 | + fileBase := filepath.Base(f.FileName) | ||
| 205 | + filename := strings.Split(fileBase, ".")[0] | ||
| 206 | + var parentNode *domain.ProjectModuleFiles = &domain.ProjectModuleFiles{Path: "", ProjectModuleId: request.ProjectModuleId, ProjectModuleVersionId: request.ProjectModuleVersionId, Id: 0} | ||
| 207 | + var ok bool | ||
| 208 | + if len(fileDir) > 0 { | ||
| 209 | + // create dir node | ||
| 210 | + if parentNode, ok = mapParent[fileDir]; !ok { | ||
| 211 | + parentNodes, _ := svr.mkdirF(fileDir, request.ProjectModuleId, request.ProjectModuleVersionId, request.ParentId, ProjectModuleFilesRepository) | ||
| 212 | + for i := range parentNodes { | ||
| 213 | + mapParent[parentNodes[i].Path] = parentNodes[i] | ||
| 214 | + } | ||
| 215 | + // a/b/c/test.go test.go 的parent node 就是 c (a/b/c 里面的最后一个) | ||
| 216 | + if len(parentNodes) > 0 { | ||
| 217 | + parentNode = parentNodes[len(parentNodes)-1] | ||
| 218 | + } | ||
| 219 | + } | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + //save new node | ||
| 223 | + newItem := &domain.ProjectModuleFiles{ | ||
| 224 | + ProjectModuleId: parentNode.ProjectModuleId, | ||
| 225 | + ProjectModuleVersionId: parentNode.ProjectModuleVersionId, | ||
| 226 | + ParentId: parentNode.Id, | ||
| 227 | + FileType: domain.File, | ||
| 228 | + FileName: filename, | ||
| 229 | + FileKey: filename, | ||
| 230 | + CodeBlock: string(f.FileContent), | ||
| 231 | + Remark: "", | ||
| 232 | + CreateTime: time.Now(), | ||
| 233 | + UpdateTime: time.Now(), | ||
| 234 | + Path: filename, | ||
| 235 | + } | ||
| 236 | + if _, e := svr.save(newItem, ProjectModuleFilesRepository); e != nil { | ||
| 237 | + log.Error(e) | ||
| 238 | + continue | ||
| 239 | + } | ||
| 240 | + } | ||
| 241 | + | ||
| 242 | + log.Info("Receive files:", len(request.ImportFiles), request.ProjectModuleId, request.ProjectModuleVersionId, request.ParentId) | ||
| 243 | + err = transactionContext.CommitTransaction() | ||
| 244 | + return | ||
| 245 | +} | ||
| 246 | + | ||
| 247 | +func (svr *ProjectModuleFilesService) save(request *domain.ProjectModuleFiles, ProjectModuleFilesRepository domain.ProjectModuleFilesRepository) (rsp *domain.ProjectModuleFiles, err error) { | ||
| 248 | + if request.ParentId > 0 { | ||
| 249 | + if pfile, e := ProjectModuleFilesRepository.FindOne(map[string]interface{}{"id": request.ParentId, "projectModuleId": request.ProjectModuleId, "projectModuleVersionId": request.ProjectModuleVersionId}); e != nil { | ||
| 250 | + err = protocol.NewCustomMessage(1, "父节点不存在") | ||
| 251 | + return | ||
| 252 | + } else { | ||
| 253 | + request.Path = filepath.Join(pfile.Path, request.Path) | ||
| 254 | + } | ||
| 255 | + } | ||
| 256 | + if m, e := ProjectModuleFilesRepository.FindOne(map[string]interface{}{"fileKey": request.FileKey, "projectModuleId": request.ProjectModuleId, "projectModuleVersionId": request.ProjectModuleVersionId, "parentId": request.ParentId}); e == nil && m != nil { | ||
| 257 | + err = protocol.NewCustomMessage(1, "已存在 filekey:"+request.FileKey) | ||
| 258 | + rsp = m | ||
| 259 | + return | ||
| 260 | + } | ||
| 261 | + if m, e := ProjectModuleFilesRepository.Save(request); e != nil { | ||
| 262 | + err = e | ||
| 263 | + return | ||
| 264 | + } else { | ||
| 265 | + rsp = m | ||
| 266 | + } | ||
| 267 | + return | ||
| 268 | +} | ||
| 269 | +func (svr *ProjectModuleFilesService) mkdirF(fileDir string, mid, vid, pid int64, repository domain.ProjectModuleFilesRepository) (files []*domain.ProjectModuleFiles, err error) { | ||
| 270 | + fileDir = strings.ReplaceAll(fileDir, "/", "\\") | ||
| 271 | + dirs := strings.Split(fileDir, "\\") | ||
| 272 | + for _, dir := range dirs { | ||
| 273 | + //save new dir | ||
| 274 | + newItem := &domain.ProjectModuleFiles{ | ||
| 275 | + ProjectModuleId: mid, | ||
| 276 | + ProjectModuleVersionId: vid, | ||
| 277 | + ParentId: pid, | ||
| 278 | + FileType: domain.Dir, | ||
| 279 | + FileName: dir, | ||
| 280 | + FileKey: dir, | ||
| 281 | + CodeBlock: "", | ||
| 282 | + Remark: "", | ||
| 283 | + CreateTime: time.Now(), | ||
| 284 | + UpdateTime: time.Now(), | ||
| 285 | + Path: dir, | ||
| 286 | + } | ||
| 287 | + if file, e := svr.save(newItem, repository); e != nil { | ||
| 288 | + if file != nil { //已存在 | ||
| 289 | + pid = file.Id | ||
| 290 | + files = append(files, file) | ||
| 291 | + } | ||
| 292 | + continue | ||
| 293 | + } else { | ||
| 294 | + pid = file.Id | ||
| 295 | + files = append(files, file) | ||
| 296 | + } | ||
| 297 | + } | ||
| 298 | + return | ||
| 299 | +} | ||
| 300 | + | ||
| 175 | func NewProjectModuleFilesService(options map[string]interface{}) *ProjectModuleFilesService { | 301 | func NewProjectModuleFilesService(options map[string]interface{}) *ProjectModuleFilesService { |
| 176 | svr := &ProjectModuleFilesService{} | 302 | svr := &ProjectModuleFilesService{} |
| 177 | return svr | 303 | return svr |
| @@ -7,7 +7,7 @@ var POSTGRESQL_USER = "postgres" | @@ -7,7 +7,7 @@ var POSTGRESQL_USER = "postgres" | ||
| 7 | var POSTGRESQL_PASSWORD = "123456" | 7 | var POSTGRESQL_PASSWORD = "123456" |
| 8 | var POSTGRESQL_HOST = "127.0.0.1" | 8 | var POSTGRESQL_HOST = "127.0.0.1" |
| 9 | var POSTGRESQL_PORT = "5432" | 9 | var POSTGRESQL_PORT = "5432" |
| 10 | -var DISABLE_CREATE_TABLE = false | 10 | +var DISABLE_CREATE_TABLE = true |
| 11 | var DISABLE_SQL_GENERATE_PRINT = false | 11 | var DISABLE_SQL_GENERATE_PRINT = false |
| 12 | 12 | ||
| 13 | func init() { | 13 | func init() { |
| @@ -2,6 +2,11 @@ package domain | @@ -2,6 +2,11 @@ package domain | ||
| 2 | 2 | ||
| 3 | import "time" | 3 | import "time" |
| 4 | 4 | ||
| 5 | +const ( | ||
| 6 | + Dir = iota + 1 | ||
| 7 | + File | ||
| 8 | +) | ||
| 9 | + | ||
| 5 | // ProjectModuleFiles | 10 | // ProjectModuleFiles |
| 6 | type ProjectModuleFiles struct { | 11 | type ProjectModuleFiles struct { |
| 7 | // 唯一标识 | 12 | // 唯一标识 |
| @@ -28,6 +33,8 @@ type ProjectModuleFiles struct { | @@ -28,6 +33,8 @@ type ProjectModuleFiles struct { | ||
| 28 | CreateTime time.Time `json:"createTime"` | 33 | CreateTime time.Time `json:"createTime"` |
| 29 | // 更新时间 | 34 | // 更新时间 |
| 30 | UpdateTime time.Time `json:"updateTime"` | 35 | UpdateTime time.Time `json:"updateTime"` |
| 36 | + // 当前文件相对路径 a/b/c | ||
| 37 | + Path string `json:"path"` | ||
| 31 | } | 38 | } |
| 32 | 39 | ||
| 33 | type ProjectModuleFilesRepository interface { | 40 | type ProjectModuleFilesRepository interface { |
| @@ -11,8 +11,8 @@ type ProjectModuleDao struct { | @@ -11,8 +11,8 @@ type ProjectModuleDao struct { | ||
| 11 | 11 | ||
| 12 | func (dao *ProjectModuleDao) DuplicateVersion(srcProjectId, srcVersionId int64, curVersionId int64) error { | 12 | func (dao *ProjectModuleDao) DuplicateVersion(srcProjectId, srcVersionId int64, curVersionId int64) error { |
| 13 | tx := dao.transactionContext.PgTx | 13 | tx := dao.transactionContext.PgTx |
| 14 | - _, err := tx.Exec(`insert into project_module_files(project_module_id,project_module_version_id,file_type,file_name,file_key,code_block,parent_id,sort,remark,create_time,update_time) | ||
| 15 | -select ?,?,file_type,file_name,file_key,code_block,parent_id,sort,remark,now(),now() from project_module_files where project_module_id=? and project_module_version_id=?`, | 14 | + _, err := tx.Exec(`insert into project_module_files(project_module_id,project_module_version_id,file_type,file_name,file_key,code_block,parent_id,sort,remark,create_time,update_time,path) |
| 15 | +select ?,?,file_type,file_name,file_key,code_block,parent_id,sort,remark,now(),now(),path from project_module_files where project_module_id=? and project_module_version_id=?`, | ||
| 16 | srcProjectId, curVersionId, srcProjectId, srcVersionId) | 16 | srcProjectId, curVersionId, srcProjectId, srcVersionId) |
| 17 | return err | 17 | return err |
| 18 | } | 18 | } |
| @@ -53,6 +53,9 @@ func (repository *ProjectModuleFilesRepository) FindOne(queryOptions map[string] | @@ -53,6 +53,9 @@ func (repository *ProjectModuleFilesRepository) FindOne(queryOptions map[string] | ||
| 53 | query.SetWhere("id = ?", "id") | 53 | query.SetWhere("id = ?", "id") |
| 54 | query.SetWhere("project_module_id = ?", "projectModuleId") | 54 | query.SetWhere("project_module_id = ?", "projectModuleId") |
| 55 | query.SetWhere("project_module_version_id = ?", "projectModuleVersionId") | 55 | query.SetWhere("project_module_version_id = ?", "projectModuleVersionId") |
| 56 | + query.SetWhere("parent_id = ?", "parentId") | ||
| 57 | + query.SetWhere("file_key = ?", "fileKey") | ||
| 58 | + query.SetWhere("path = ?", "path") | ||
| 56 | if err := query.First(); err != nil { | 59 | if err := query.First(); err != nil { |
| 57 | return nil, fmt.Errorf("query row not found") | 60 | return nil, fmt.Errorf("query row not found") |
| 58 | } | 61 | } |
| @@ -3,7 +3,6 @@ package beego | @@ -3,7 +3,6 @@ package beego | ||
| 3 | import ( | 3 | import ( |
| 4 | "github.com/astaxie/beego" | 4 | "github.com/astaxie/beego" |
| 5 | "github.com/astaxie/beego/plugins/cors" | 5 | "github.com/astaxie/beego/plugins/cors" |
| 6 | - "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/port/beego/middleware" | ||
| 7 | _ "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/port/beego/routers" | 6 | _ "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/port/beego/routers" |
| 8 | ) | 7 | ) |
| 9 | 8 | ||
| @@ -16,10 +15,10 @@ func init() { | @@ -16,10 +15,10 @@ func init() { | ||
| 16 | AllowCredentials: true, | 15 | AllowCredentials: true, |
| 17 | })) | 16 | })) |
| 18 | 17 | ||
| 19 | - beego.InsertFilter("/user/*", beego.BeforeExec, middleware.InspectRoleAccess("")) | ||
| 20 | - beego.InsertFilter("/role/*", beego.BeforeExec, middleware.InspectRoleAccess("")) | ||
| 21 | - beego.InsertFilter("/project_module/*", beego.BeforeExec, middleware.InspectRoleAccess("")) | ||
| 22 | - beego.InsertFilter("/project_module_version/*", beego.BeforeExec, middleware.InspectRoleAccess("/project_module/*")) | ||
| 23 | - beego.InsertFilter("/project_module_files/*", beego.BeforeExec, middleware.InspectRoleAccess("/project_module/*")) | ||
| 24 | - beego.InsertFilter("/rbac/*", beego.BeforeExec, middleware.InspectRoleAccess("/role/*")) | 18 | + //beego.InsertFilter("/user/*", beego.BeforeExec, middleware.InspectRoleAccess("")) |
| 19 | + //beego.InsertFilter("/role/*", beego.BeforeExec, middleware.InspectRoleAccess("")) | ||
| 20 | + //beego.InsertFilter("/project_module/*", beego.BeforeExec, middleware.InspectRoleAccess("")) | ||
| 21 | + //beego.InsertFilter("/project_module_version/*", beego.BeforeExec, middleware.InspectRoleAccess("/project_module/*")) | ||
| 22 | + //beego.InsertFilter("/project_module_files/*", beego.BeforeExec, middleware.InspectRoleAccess("/project_module/*")) | ||
| 23 | + //beego.InsertFilter("/rbac/*", beego.BeforeExec, middleware.InspectRoleAccess("/role/*")) | ||
| 25 | } | 24 | } |
| @@ -5,6 +5,9 @@ import ( | @@ -5,6 +5,9 @@ import ( | ||
| 5 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/application/project_module_files" | 5 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/application/project_module_files" |
| 6 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" | 6 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" |
| 7 | protocolx "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol/project_module_files" | 7 | protocolx "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol/project_module_files" |
| 8 | + "io/ioutil" | ||
| 9 | + "mime/multipart" | ||
| 10 | + "sort" | ||
| 8 | ) | 11 | ) |
| 9 | 12 | ||
| 10 | type ProjectModuleFilesController struct { | 13 | type ProjectModuleFilesController struct { |
| @@ -13,20 +16,20 @@ type ProjectModuleFilesController struct { | @@ -13,20 +16,20 @@ type ProjectModuleFilesController struct { | ||
| 13 | 16 | ||
| 14 | // CreateProjectModuleFiles | 17 | // CreateProjectModuleFiles |
| 15 | // CreateProjectModuleFiles execute command create ProjectModuleFiles | 18 | // CreateProjectModuleFiles execute command create ProjectModuleFiles |
| 16 | -func (this *ProjectModuleFilesController) CreateProjectModuleFiles() { | 19 | +func (controller *ProjectModuleFilesController) CreateProjectModuleFiles() { |
| 17 | var ( | 20 | var ( |
| 18 | msg *protocol.ResponseMessage | 21 | msg *protocol.ResponseMessage |
| 19 | svr = project_module_files.NewProjectModuleFilesService(nil) | 22 | svr = project_module_files.NewProjectModuleFilesService(nil) |
| 20 | request *protocolx.CreateProjectModuleFilesRequest | 23 | request *protocolx.CreateProjectModuleFilesRequest |
| 21 | ) | 24 | ) |
| 22 | defer func() { | 25 | defer func() { |
| 23 | - this.Resp(msg) | 26 | + controller.Resp(msg) |
| 24 | }() | 27 | }() |
| 25 | - if err := this.JsonUnmarshal(&request); err != nil { | 28 | + if err := controller.JsonUnmarshal(&request); err != nil { |
| 26 | msg = protocol.NewResponseMessage(2, "") | 29 | msg = protocol.NewResponseMessage(2, "") |
| 27 | return | 30 | return |
| 28 | } | 31 | } |
| 29 | - header := this.GetRequestHeader(this.Ctx) | 32 | + header := controller.GetRequestHeader(controller.Ctx) |
| 30 | data, err := svr.CreateProjectModuleFiles(header, request) | 33 | data, err := svr.CreateProjectModuleFiles(header, request) |
| 31 | if err != nil { | 34 | if err != nil { |
| 32 | log.Error(err) | 35 | log.Error(err) |
| @@ -36,20 +39,20 @@ func (this *ProjectModuleFilesController) CreateProjectModuleFiles() { | @@ -36,20 +39,20 @@ func (this *ProjectModuleFilesController) CreateProjectModuleFiles() { | ||
| 36 | 39 | ||
| 37 | // UpdateProjectModuleFiles | 40 | // UpdateProjectModuleFiles |
| 38 | // UpdateProjectModuleFiles execute command update ProjectModuleFiles | 41 | // UpdateProjectModuleFiles execute command update ProjectModuleFiles |
| 39 | -func (this *ProjectModuleFilesController) UpdateProjectModuleFiles() { | 42 | +func (controller *ProjectModuleFilesController) UpdateProjectModuleFiles() { |
| 40 | var ( | 43 | var ( |
| 41 | msg *protocol.ResponseMessage | 44 | msg *protocol.ResponseMessage |
| 42 | svr = project_module_files.NewProjectModuleFilesService(nil) | 45 | svr = project_module_files.NewProjectModuleFilesService(nil) |
| 43 | request *protocolx.UpdateProjectModuleFilesRequest | 46 | request *protocolx.UpdateProjectModuleFilesRequest |
| 44 | ) | 47 | ) |
| 45 | defer func() { | 48 | defer func() { |
| 46 | - this.Resp(msg) | 49 | + controller.Resp(msg) |
| 47 | }() | 50 | }() |
| 48 | - if err := this.JsonUnmarshal(&request); err != nil { | 51 | + if err := controller.JsonUnmarshal(&request); err != nil { |
| 49 | msg = protocol.NewResponseMessage(2, "") | 52 | msg = protocol.NewResponseMessage(2, "") |
| 50 | return | 53 | return |
| 51 | } | 54 | } |
| 52 | - header := this.GetRequestHeader(this.Ctx) | 55 | + header := controller.GetRequestHeader(controller.Ctx) |
| 53 | data, err := svr.UpdateProjectModuleFiles(header, request) | 56 | data, err := svr.UpdateProjectModuleFiles(header, request) |
| 54 | if err != nil { | 57 | if err != nil { |
| 55 | log.Error(err) | 58 | log.Error(err) |
| @@ -59,20 +62,20 @@ func (this *ProjectModuleFilesController) UpdateProjectModuleFiles() { | @@ -59,20 +62,20 @@ func (this *ProjectModuleFilesController) UpdateProjectModuleFiles() { | ||
| 59 | 62 | ||
| 60 | // GetProjectModuleFiles | 63 | // GetProjectModuleFiles |
| 61 | // GetProjectModuleFiles execute query get ProjectModuleFiles | 64 | // GetProjectModuleFiles execute query get ProjectModuleFiles |
| 62 | -func (this *ProjectModuleFilesController) GetProjectModuleFiles() { | 65 | +func (controller *ProjectModuleFilesController) GetProjectModuleFiles() { |
| 63 | var ( | 66 | var ( |
| 64 | msg *protocol.ResponseMessage | 67 | msg *protocol.ResponseMessage |
| 65 | svr = project_module_files.NewProjectModuleFilesService(nil) | 68 | svr = project_module_files.NewProjectModuleFilesService(nil) |
| 66 | request *protocolx.GetProjectModuleFilesRequest | 69 | request *protocolx.GetProjectModuleFilesRequest |
| 67 | ) | 70 | ) |
| 68 | defer func() { | 71 | defer func() { |
| 69 | - this.Resp(msg) | 72 | + controller.Resp(msg) |
| 70 | }() | 73 | }() |
| 71 | - if err := this.JsonUnmarshal(&request); err != nil { | 74 | + if err := controller.JsonUnmarshal(&request); err != nil { |
| 72 | msg = protocol.NewResponseMessage(2, "") | 75 | msg = protocol.NewResponseMessage(2, "") |
| 73 | return | 76 | return |
| 74 | } | 77 | } |
| 75 | - header := this.GetRequestHeader(this.Ctx) | 78 | + header := controller.GetRequestHeader(controller.Ctx) |
| 76 | data, err := svr.GetProjectModuleFiles(header, request) | 79 | data, err := svr.GetProjectModuleFiles(header, request) |
| 77 | if err != nil { | 80 | if err != nil { |
| 78 | log.Error(err) | 81 | log.Error(err) |
| @@ -82,20 +85,20 @@ func (this *ProjectModuleFilesController) GetProjectModuleFiles() { | @@ -82,20 +85,20 @@ func (this *ProjectModuleFilesController) GetProjectModuleFiles() { | ||
| 82 | 85 | ||
| 83 | // DeleteProjectModuleFiles | 86 | // DeleteProjectModuleFiles |
| 84 | // DeleteProjectModuleFiles execute command delete ProjectModuleFiles | 87 | // DeleteProjectModuleFiles execute command delete ProjectModuleFiles |
| 85 | -func (this *ProjectModuleFilesController) DeleteProjectModuleFiles() { | 88 | +func (controller *ProjectModuleFilesController) DeleteProjectModuleFiles() { |
| 86 | var ( | 89 | var ( |
| 87 | msg *protocol.ResponseMessage | 90 | msg *protocol.ResponseMessage |
| 88 | svr = project_module_files.NewProjectModuleFilesService(nil) | 91 | svr = project_module_files.NewProjectModuleFilesService(nil) |
| 89 | request *protocolx.DeleteProjectModuleFilesRequest | 92 | request *protocolx.DeleteProjectModuleFilesRequest |
| 90 | ) | 93 | ) |
| 91 | defer func() { | 94 | defer func() { |
| 92 | - this.Resp(msg) | 95 | + controller.Resp(msg) |
| 93 | }() | 96 | }() |
| 94 | - if err := this.JsonUnmarshal(&request); err != nil { | 97 | + if err := controller.JsonUnmarshal(&request); err != nil { |
| 95 | msg = protocol.NewResponseMessage(2, "") | 98 | msg = protocol.NewResponseMessage(2, "") |
| 96 | return | 99 | return |
| 97 | } | 100 | } |
| 98 | - header := this.GetRequestHeader(this.Ctx) | 101 | + header := controller.GetRequestHeader(controller.Ctx) |
| 99 | data, err := svr.DeleteProjectModuleFiles(header, request) | 102 | data, err := svr.DeleteProjectModuleFiles(header, request) |
| 100 | if err != nil { | 103 | if err != nil { |
| 101 | log.Error(err) | 104 | log.Error(err) |
| @@ -105,21 +108,68 @@ func (this *ProjectModuleFilesController) DeleteProjectModuleFiles() { | @@ -105,21 +108,68 @@ func (this *ProjectModuleFilesController) DeleteProjectModuleFiles() { | ||
| 105 | 108 | ||
| 106 | // ListProjectModuleFiles | 109 | // ListProjectModuleFiles |
| 107 | // ListProjectModuleFiles execute query list ProjectModuleFiles | 110 | // ListProjectModuleFiles execute query list ProjectModuleFiles |
| 108 | -func (this *ProjectModuleFilesController) ListProjectModuleFiles() { | 111 | +func (controller *ProjectModuleFilesController) ListProjectModuleFiles() { |
| 109 | var ( | 112 | var ( |
| 110 | msg *protocol.ResponseMessage | 113 | msg *protocol.ResponseMessage |
| 111 | svr = project_module_files.NewProjectModuleFilesService(nil) | 114 | svr = project_module_files.NewProjectModuleFilesService(nil) |
| 112 | request = &protocolx.ListProjectModuleFilesRequest{} | 115 | request = &protocolx.ListProjectModuleFilesRequest{} |
| 113 | ) | 116 | ) |
| 114 | defer func() { | 117 | defer func() { |
| 115 | - this.Resp(msg) | 118 | + controller.Resp(msg) |
| 116 | }() | 119 | }() |
| 117 | - request.ProjectModuleVersionId, _ = this.GetInt64("projectModuleVersionId") | ||
| 118 | - request.ProjectModuleId, _ = this.GetInt64("projectModuleId") | ||
| 119 | - header := this.GetRequestHeader(this.Ctx) | 120 | + request.ProjectModuleVersionId, _ = controller.GetInt64("projectModuleVersionId") |
| 121 | + request.ProjectModuleId, _ = controller.GetInt64("projectModuleId") | ||
| 122 | + header := controller.GetRequestHeader(controller.Ctx) | ||
| 120 | data, err := svr.ListProjectModuleFiles(header, request) | 123 | data, err := svr.ListProjectModuleFiles(header, request) |
| 121 | if err != nil { | 124 | if err != nil { |
| 122 | log.Error(err) | 125 | log.Error(err) |
| 123 | } | 126 | } |
| 124 | msg = protocol.NewResponseMessageData(data, err) | 127 | msg = protocol.NewResponseMessageData(data, err) |
| 125 | } | 128 | } |
| 129 | + | ||
| 130 | +// Import | ||
| 131 | +// 权限列表 | ||
| 132 | +func (controller *ProjectModuleFilesController) Import() { | ||
| 133 | + var ( | ||
| 134 | + msg *protocol.ResponseMessage | ||
| 135 | + svr = project_module_files.NewProjectModuleFilesService(nil) | ||
| 136 | + request = &protocolx.ImportRequest{} | ||
| 137 | + ) | ||
| 138 | + defer func() { | ||
| 139 | + controller.Resp(msg) | ||
| 140 | + }() | ||
| 141 | + header := controller.GetRequestHeader(controller.Ctx) | ||
| 142 | + request.ProjectModuleId, _ = controller.GetInt64("projectModuleId") | ||
| 143 | + request.ProjectModuleVersionId, _ = controller.GetInt64("projectModuleVersionId") | ||
| 144 | + request.ParentId, _ = controller.GetInt64("parentId") | ||
| 145 | + for _, k := range getSortFileKeys(controller.Ctx.Request.MultipartForm.File) { | ||
| 146 | + v := controller.Ctx.Request.MultipartForm.File[k] | ||
| 147 | + log.Info(k, v[0].Filename, v[0].Size) | ||
| 148 | + for i := range v { | ||
| 149 | + if v[i].Size > 50*1024 { | ||
| 150 | + continue | ||
| 151 | + } | ||
| 152 | + f, _ := v[i].Open() | ||
| 153 | + data, _ := ioutil.ReadAll(f) | ||
| 154 | + f.Close() | ||
| 155 | + request.ImportFiles = append(request.ImportFiles, protocolx.ImportFile{ | ||
| 156 | + FileName: v[i].Filename, | ||
| 157 | + FileContent: data, | ||
| 158 | + }) | ||
| 159 | + } | ||
| 160 | + } | ||
| 161 | + data, err := svr.Import(header, request) | ||
| 162 | + if err != nil { | ||
| 163 | + log.Error(err) | ||
| 164 | + } | ||
| 165 | + msg = protocol.NewResponseMessageData(data, err) | ||
| 166 | +} | ||
| 167 | + | ||
| 168 | +//获取排序键值 | ||
| 169 | +func getSortFileKeys(files map[string][]*multipart.FileHeader) (keys []string) { | ||
| 170 | + for k, _ := range files { | ||
| 171 | + keys = append(keys, k) | ||
| 172 | + } | ||
| 173 | + sort.Strings(keys) | ||
| 174 | + return | ||
| 175 | +} |
| @@ -11,4 +11,6 @@ func init() { | @@ -11,4 +11,6 @@ func init() { | ||
| 11 | beego.Router("/project_module_files/:projectModuleFilesId", &controllers.ProjectModuleFilesController{}, "GET:GetProjectModuleFiles") | 11 | beego.Router("/project_module_files/:projectModuleFilesId", &controllers.ProjectModuleFilesController{}, "GET:GetProjectModuleFiles") |
| 12 | beego.Router("/project_module_files/:projectModuleFilesId", &controllers.ProjectModuleFilesController{}, "DELETE:DeleteProjectModuleFiles") | 12 | beego.Router("/project_module_files/:projectModuleFilesId", &controllers.ProjectModuleFilesController{}, "DELETE:DeleteProjectModuleFiles") |
| 13 | beego.Router("/project_module_files/", &controllers.ProjectModuleFilesController{}, "GET:ListProjectModuleFiles") | 13 | beego.Router("/project_module_files/", &controllers.ProjectModuleFilesController{}, "GET:ListProjectModuleFiles") |
| 14 | + | ||
| 15 | + beego.Router("/project_module_files/import", &controllers.ProjectModuleFilesController{}, "post:Import") | ||
| 14 | } | 16 | } |
| 1 | +package project_module_files | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "github.com/astaxie/beego/validation" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type ImportRequest struct { | ||
| 9 | + // 项目模块编号 | ||
| 10 | + ProjectModuleId int64 `json:"projectModuleId,omitempty"` | ||
| 11 | + // 项目模块版本编号 | ||
| 12 | + ProjectModuleVersionId int64 `json:"projectModuleVersionId,omitempty"` | ||
| 13 | + // 父节点编号 | ||
| 14 | + ParentId int64 `json:"parentId,omitempty"` | ||
| 15 | + // 导入文件列表 | ||
| 16 | + ImportFiles []ImportFile | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +type ImportFile struct { | ||
| 20 | + FileName string | ||
| 21 | + FileContent []byte | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +func (ImportRequest *ImportRequest) ValidateCommand() error { | ||
| 25 | + valid := validation.Validation{} | ||
| 26 | + b, err := valid.Valid(ImportRequest) | ||
| 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 | +} |
| 1 | +package project_module_files | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "github.com/astaxie/beego/validation" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type ImportResponse struct { | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +func (ImportResponse *ImportResponse) ValidateCommand() error { | ||
| 12 | + valid := validation.Validation{} | ||
| 13 | + b, err := valid.Valid(ImportResponse) | ||
| 14 | + if err != nil { | ||
| 15 | + return err | ||
| 16 | + } | ||
| 17 | + if !b { | ||
| 18 | + for _, validErr := range valid.Errors { | ||
| 19 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
| 20 | + } | ||
| 21 | + } | ||
| 22 | + return nil | ||
| 23 | +} |
-
请 注册 或 登录 后发表评论