Squashed commit of the following:
commit 65f30f27951df5823526895d94c89ab0b8b49871
Author: yangfu <785409885@qq.com>
Date: Wed Nov 18 15:14:17 2020 +0800
1.操作日志修改
2.客户端公共接口
commit 5602dfb1b9961cce87a9e08480e281d3fdad2771
Author: yangfu <785409885@qq.com>
Date: Mon Nov 16 14:24:19 2020 +0800
1.修复功能异常
commit 779c973def3e3c1ac9b0aa02e289aa3a24600ede
Author: yangfu <785409885@qq.com>
Date: Wed Nov 11 16:00:19 2020 +0800
1.token修改 2.查询操作不使用事务
正在显示
28 个修改的文件
包含
221 行增加
和
45 行删除
| @@ -7,9 +7,12 @@ require ( | @@ -7,9 +7,12 @@ require ( | ||
| 7 | github.com/astaxie/beego v1.12.2 | 7 | github.com/astaxie/beego v1.12.2 |
| 8 | github.com/dgrijalva/jwt-go v3.2.0+incompatible | 8 | github.com/dgrijalva/jwt-go v3.2.0+incompatible |
| 9 | github.com/go-pg/pg/v10 v10.0.0-beta.2 | 9 | github.com/go-pg/pg/v10 v10.0.0-beta.2 |
| 10 | - github.com/tiptok/gocomm v1.0.4 | ||
| 11 | //github.com/tal-tech/go-zero v1.0.11 | 10 | //github.com/tal-tech/go-zero v1.0.11 |
| 12 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 | 11 | github.com/linmadan/egglib-go v0.0.0-20191217144343-ca4539f95bf9 |
| 12 | + //github.com/opentracing/opentracing-go v1.1.1-0.20190913142402-a7454ce5950e | ||
| 13 | + //github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 | ||
| 14 | + //github.com/openzipkin/zipkin-go v0.2.5 | ||
| 15 | + github.com/tiptok/gocomm v1.0.4 | ||
| 13 | ) | 16 | ) |
| 14 | 17 | ||
| 15 | //replace github.com/tiptok/gocomm v1.0.3 => F:\go\src\learn_project\gocomm | 18 | //replace github.com/tiptok/gocomm v1.0.3 => F:\go\src\learn_project\gocomm |
| @@ -21,5 +21,30 @@ func main() { | @@ -21,5 +21,30 @@ func main() { | ||
| 21 | Filename: constant.LOG_File, | 21 | Filename: constant.LOG_File, |
| 22 | Level: constant.LOG_LEVEL, | 22 | Level: constant.LOG_LEVEL, |
| 23 | }) | 23 | }) |
| 24 | + | ||
| 25 | + //{ | ||
| 26 | + // // set up a span reporter | ||
| 27 | + // reporter := zipkinhttp.NewReporter("http://106.52.15.41:9411/api/v2/spans") | ||
| 28 | + // defer reporter.Close() | ||
| 29 | + // | ||
| 30 | + // // create our local service endpoint | ||
| 31 | + // endpoint, err := zipkin.NewEndpoint("godevp", "127.0.0.1:8080") | ||
| 32 | + // if err != nil { | ||
| 33 | + // log.Error("unable to create local endpoint: %+v\n", err) | ||
| 34 | + // } | ||
| 35 | + // | ||
| 36 | + // // initialize our tracer | ||
| 37 | + // nativeTracer, err := zipkin.NewTracer(reporter, zipkin.WithLocalEndpoint(endpoint)) | ||
| 38 | + // if err != nil { | ||
| 39 | + // log.Error("unable to create tracer: %+v\n", err) | ||
| 40 | + // } | ||
| 41 | + // | ||
| 42 | + // // use zipkin-go-opentracing to wrap our tracer | ||
| 43 | + // tracer := zipkinot.Wrap(nativeTracer) | ||
| 44 | + // | ||
| 45 | + // // optionally set as Global OpenTracing tracer instance | ||
| 46 | + // opentracing.SetGlobalTracer(tracer) | ||
| 47 | + //} | ||
| 48 | + | ||
| 24 | beego.Run() | 49 | beego.Run() |
| 25 | } | 50 | } |
| @@ -46,6 +46,10 @@ func (svr *AuthService) Login(header *protocol.RequestHeader, request *protocolx | @@ -46,6 +46,10 @@ func (svr *AuthService) Login(header *protocol.RequestHeader, request *protocolx | ||
| 46 | err = protocol.NewCustomMessage(1, "密码有误!") | 46 | err = protocol.NewCustomMessage(1, "密码有误!") |
| 47 | return | 47 | return |
| 48 | } | 48 | } |
| 49 | + if user.Status != domain.StatusNormal { | ||
| 50 | + err = protocol.NewCustomMessage(1, "该账号已被禁用!") | ||
| 51 | + return | ||
| 52 | + } | ||
| 49 | token, _ := common.GenerateToken(fmt.Sprintf("%v", user.Id), user.Passwd, common.WithExpire(domain.TokenExpire), common.WithAddData(map[string]interface{}{"UserName": user.Name})) | 53 | token, _ := common.GenerateToken(fmt.Sprintf("%v", user.Id), user.Passwd, common.WithExpire(domain.TokenExpire), common.WithAddData(map[string]interface{}{"UserName": user.Name})) |
| 50 | rsp.Access = map[string]interface{}{ | 54 | rsp.Access = map[string]interface{}{ |
| 51 | "accessToken": token, //"Bearer " + token, | 55 | "accessToken": token, //"Bearer " + token, |
| @@ -115,12 +119,16 @@ func (svr *AuthService) Profile(header *protocol.RequestHeader, request *protoco | @@ -115,12 +119,16 @@ func (svr *AuthService) Profile(header *protocol.RequestHeader, request *protoco | ||
| 115 | "adminType": user.AdminType, | 119 | "adminType": user.AdminType, |
| 116 | "roles": utils.LoadCustomField(roles, "Id", "RoleName"), | 120 | "roles": utils.LoadCustomField(roles, "Id", "RoleName"), |
| 117 | } | 121 | } |
| 118 | - | 122 | + if user.AdminType == domain.UserAdmin { |
| 123 | + _, accesses, _ := AccessRepository.Find(map[string]interface{}{}) | ||
| 124 | + rspMap["menus"] = accesses | ||
| 125 | + } else { | ||
| 119 | accessIds, _ := RoleAccessDao.GetRoleAccess(user.Roles...) | 126 | accessIds, _ := RoleAccessDao.GetRoleAccess(user.Roles...) |
| 120 | if len(accessIds) > 0 { | 127 | if len(accessIds) > 0 { |
| 121 | _, accesses, _ := AccessRepository.Find(map[string]interface{}{"inAccessIds": accessIds}) | 128 | _, accesses, _ := AccessRepository.Find(map[string]interface{}{"inAccessIds": accessIds}) |
| 122 | rspMap["menus"] = accesses | 129 | rspMap["menus"] = accesses |
| 123 | } | 130 | } |
| 131 | + } | ||
| 124 | rsp = rspMap | 132 | rsp = rspMap |
| 125 | err = transactionContext.CommitTransaction() | 133 | err = transactionContext.CommitTransaction() |
| 126 | return | 134 | return |
| @@ -78,7 +78,7 @@ func (svr *CacheService) ValidUserAccess(userId int64, object string, method str | @@ -78,7 +78,7 @@ func (svr *CacheService) ValidUserAccess(userId int64, object string, method str | ||
| 78 | var userAccess []*domain.Access | 78 | var userAccess []*domain.Access |
| 79 | var isAdmin bool | 79 | var isAdmin bool |
| 80 | defer func() { | 80 | defer func() { |
| 81 | - //log.Info(fmt.Sprintf("ValidUserAccess user:%v object:%v method:%v result:%v", userId, object, method, result)) | 81 | + log.Info(fmt.Sprintf("ValidUserAccess user:%v object:%v method:%v result:%v", userId, object, method, result)) |
| 82 | }() | 82 | }() |
| 83 | if isAdmin, err = svr.ValidUser(userId); err != nil { | 83 | if isAdmin, err = svr.ValidUser(userId); err != nil { |
| 84 | return | 84 | return |
| @@ -105,12 +105,28 @@ func KeyMatch3(key1 string, key2 string) bool { | @@ -105,12 +105,28 @@ func KeyMatch3(key1 string, key2 string) bool { | ||
| 105 | 105 | ||
| 106 | re := regexp.MustCompile(`\{[^/]+\}`) | 106 | re := regexp.MustCompile(`\{[^/]+\}`) |
| 107 | key2 = re.ReplaceAllString(key2, "$1[^/]+$2") | 107 | key2 = re.ReplaceAllString(key2, "$1[^/]+$2") |
| 108 | + if RegexMatch(key1HasVersion(key1)+"/", "^"+key2+"$") { | ||
| 109 | + return true | ||
| 110 | + } | ||
| 111 | + if RegexMatch(key1HasVersion(key1), "^"+key2+"$") { | ||
| 112 | + return true | ||
| 113 | + } | ||
| 108 | if RegexMatch(key1+"/", "^"+key2+"$") { | 114 | if RegexMatch(key1+"/", "^"+key2+"$") { |
| 109 | return true | 115 | return true |
| 110 | } | 116 | } |
| 111 | return RegexMatch(key1, "^"+key2+"$") | 117 | return RegexMatch(key1, "^"+key2+"$") |
| 112 | } | 118 | } |
| 113 | 119 | ||
| 120 | +func key1HasVersion(key1 string) string { | ||
| 121 | + vTags := []string{"v1", "v2", "v3", "v4"} //,"v5","v6","v7","v8","v9" | ||
| 122 | + for _, tag := range vTags { | ||
| 123 | + if index := strings.Index(key1, tag); index >= 0 { | ||
| 124 | + return key1[index+len(tag):] | ||
| 125 | + } | ||
| 126 | + } | ||
| 127 | + return key1 | ||
| 128 | +} | ||
| 129 | + | ||
| 114 | // KeyEqual case key1='*' or key1=' ' result=true | 130 | // KeyEqual case key1='*' or key1=' ' result=true |
| 115 | func ActionEqual(key1 string, key2 string) bool { | 131 | func ActionEqual(key1 string, key2 string) bool { |
| 116 | if key1 == "*" { | 132 | if key1 == "*" { |
pkg/application/cachex/cache_test.go
0 → 100644
| 1 | +package cachex | ||
| 2 | + | ||
| 3 | +import "testing" | ||
| 4 | + | ||
| 5 | +func TestKeyMatch3(t *testing.T) { | ||
| 6 | + inputObject := []struct { | ||
| 7 | + ReqObject string | ||
| 8 | + CmpObject string | ||
| 9 | + Result bool | ||
| 10 | + }{ | ||
| 11 | + { | ||
| 12 | + "/a/b", | ||
| 13 | + "/a/b", | ||
| 14 | + true, | ||
| 15 | + }, | ||
| 16 | + { | ||
| 17 | + "/v1/a/b", | ||
| 18 | + "/a/b", | ||
| 19 | + true, | ||
| 20 | + }, | ||
| 21 | + } | ||
| 22 | + for _, v := range inputObject { | ||
| 23 | + if KeyMatch3(v.ReqObject, v.CmpObject) != v.Result { | ||
| 24 | + t.Fatal(v.ReqObject, " not match ", v.CmpObject, "except:", v.Result) | ||
| 25 | + } | ||
| 26 | + } | ||
| 27 | +} |
| @@ -72,7 +72,7 @@ func (svr *ClientVersionService) UpdateClientVersion(header *protocol.RequestHea | @@ -72,7 +72,7 @@ func (svr *ClientVersionService) UpdateClientVersion(header *protocol.RequestHea | ||
| 72 | if clientVersion, err = ClientVersionRepository.FindOne(map[string]interface{}{"id": request.Id}); err != nil { | 72 | if clientVersion, err = ClientVersionRepository.FindOne(map[string]interface{}{"id": request.Id}); err != nil { |
| 73 | return | 73 | return |
| 74 | } | 74 | } |
| 75 | - if err = clientVersion.Update(common.ObjectToMap(request)); err != nil { | 75 | + if err = clientVersion.Update((utils.LoadCustomField(request, header.BodyKeys...)).(map[string]interface{})); err != nil { |
| 76 | return | 76 | return |
| 77 | } | 77 | } |
| 78 | if clientVersion, err = ClientVersionRepository.Save(clientVersion); err != nil { | 78 | if clientVersion, err = ClientVersionRepository.Save(clientVersion); err != nil { |
| @@ -165,7 +165,7 @@ func (svr *ClientVersionService) ListClientVersion(header *protocol.RequestHeade | @@ -165,7 +165,7 @@ func (svr *ClientVersionService) ListClientVersion(header *protocol.RequestHeade | ||
| 165 | rsp = map[string]interface{}{ | 165 | rsp = map[string]interface{}{ |
| 166 | "totalRow": total, | 166 | "totalRow": total, |
| 167 | "pageNumber": (request.Offset + request.Limit) / request.Limit, | 167 | "pageNumber": (request.Offset + request.Limit) / request.Limit, |
| 168 | - "list": utils.LoadCustomField(clientVersion, "Id", "ProjectName", "Version", "Title", "Remark", "CreateTime"), | 168 | + "lists": utils.LoadCustomField(clientVersion, "Id", "ProjectName", "Version", "Title", "Remark", "CreateTime"), |
| 169 | } | 169 | } |
| 170 | err = transactionContext.CommitTransaction() | 170 | err = transactionContext.CommitTransaction() |
| 171 | return | 171 | return |
| @@ -41,7 +41,7 @@ func (svr *ProjectModuleService) CreateProjectModule(header *protocol.RequestHea | @@ -41,7 +41,7 @@ func (svr *ProjectModuleService) CreateProjectModule(header *protocol.RequestHea | ||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | var ProjectModuleRepository, _ = factory.CreateProjectModuleRepository(transactionContext) | 43 | var ProjectModuleRepository, _ = factory.CreateProjectModuleRepository(transactionContext) |
| 44 | - if _, err = ProjectModuleRepository.FindOne(map[string]interface{}{"projectKey": request.ProjectKey}); err == nil { | 44 | + if _, err = ProjectModuleRepository.FindOne(map[string]interface{}{"projectKey": request.ProjectKey, "status": domain.StatusNormal}); err == nil { |
| 45 | err = protocol.NewCustomMessage(1, "项目键值已存在:"+request.ProjectKey) | 45 | err = protocol.NewCustomMessage(1, "项目键值已存在:"+request.ProjectKey) |
| 46 | return | 46 | return |
| 47 | } | 47 | } |
| @@ -87,10 +87,12 @@ func (svr *ProjectModuleService) UpdateProjectModule(header *protocol.RequestHea | @@ -87,10 +87,12 @@ func (svr *ProjectModuleService) UpdateProjectModule(header *protocol.RequestHea | ||
| 87 | err = protocol.NewCustomMessage(1, "模板项目不存在") | 87 | err = protocol.NewCustomMessage(1, "模板项目不存在") |
| 88 | return | 88 | return |
| 89 | } | 89 | } |
| 90 | - if _, err = ProjectModuleRepository.FindOne(map[string]interface{}{"projectKey": request.ProjectKey}); err == nil { | 90 | + if projectModule.ProjectKey != request.ProjectKey { |
| 91 | + if _, err = ProjectModuleRepository.FindOne(map[string]interface{}{"projectKey": request.ProjectKey, "status": domain.StatusNormal}); err == nil { | ||
| 91 | err = protocol.NewCustomMessage(1, "项目键值已存在:"+request.ProjectKey) | 92 | err = protocol.NewCustomMessage(1, "项目键值已存在:"+request.ProjectKey) |
| 92 | return | 93 | return |
| 93 | } | 94 | } |
| 95 | + } | ||
| 94 | if err = projectModule.Update(common.ObjectToMap(request)); err != nil { | 96 | if err = projectModule.Update(common.ObjectToMap(request)); err != nil { |
| 95 | return | 97 | return |
| 96 | } | 98 | } |
| @@ -181,13 +183,13 @@ func (svr *ProjectModuleService) ListProjectModule(header *protocol.RequestHeade | @@ -181,13 +183,13 @@ func (svr *ProjectModuleService) ListProjectModule(header *protocol.RequestHeade | ||
| 181 | var ProjectModuleRepository, _ = factory.CreateProjectModuleRepository(transactionContext) | 183 | var ProjectModuleRepository, _ = factory.CreateProjectModuleRepository(transactionContext) |
| 182 | var projectModule []*domain.ProjectModule | 184 | var projectModule []*domain.ProjectModule |
| 183 | var total int64 | 185 | var total int64 |
| 184 | - if total, projectModule, err = ProjectModuleRepository.Find(map[string]interface{}{"offset": (request.PageNumber - 1) * request.PageSize, "limit": request.PageSize, "sortByCreateTime": "DESC", "status": domain.StatusNormal}); err != nil { | 186 | + if total, projectModule, err = ProjectModuleRepository.Find(map[string]interface{}{"offset": (request.PageNumber - 1) * request.PageSize, "limit": request.PageSize, "sortByCreateTime": "DESC", "status": domain.StatusNormal, "searchByText": request.ProjectName}); err != nil { |
| 185 | return | 187 | return |
| 186 | } | 188 | } |
| 187 | rsp = map[string]interface{}{ | 189 | rsp = map[string]interface{}{ |
| 188 | "totalRow": total, | 190 | "totalRow": total, |
| 189 | "pageNumber": request.PageNumber, | 191 | "pageNumber": request.PageNumber, |
| 190 | - "list": utils.LoadCustomField(projectModule, "Id", "ProjectName", "ProjectKey", "Description", "Status", "CreateTime", "UpdateTime"), //listProjectModuleResponse.LoadDto(projectModule), | 192 | + "lists": utils.LoadCustomField(projectModule, "Id", "ProjectName", "ProjectKey", "Description", "Status", "CreateTime", "UpdateTime"), //listProjectModuleResponse.LoadDto(projectModule), |
| 191 | } | 193 | } |
| 192 | err = transactionContext.CommitTransaction() | 194 | err = transactionContext.CommitTransaction() |
| 193 | return | 195 | return |
| @@ -45,7 +45,7 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | @@ -45,7 +45,7 @@ func (svr *ProjectModuleFilesService) CreateProjectModuleFiles(header *protocol. | ||
| 45 | Remark: request.Remark, | 45 | Remark: request.Remark, |
| 46 | CreateTime: time.Now(), | 46 | CreateTime: time.Now(), |
| 47 | UpdateTime: time.Now(), | 47 | UpdateTime: time.Now(), |
| 48 | - Path: request.FileKey, | 48 | + Path: request.FileName, |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | if _, err = ProjectModuleVersion.FindOne(map[string]interface{}{"id": request.ProjectModuleVersionId, "projectModuleId": request.ProjectModuleId}); err != nil { | 51 | if _, err = ProjectModuleVersion.FindOne(map[string]interface{}{"id": request.ProjectModuleVersionId, "projectModuleId": request.ProjectModuleId}); err != nil { |
| @@ -85,20 +85,18 @@ func (svr *ProjectModuleFilesService) UpdateProjectModuleFiles(header *protocol. | @@ -85,20 +85,18 @@ func (svr *ProjectModuleFilesService) UpdateProjectModuleFiles(header *protocol. | ||
| 85 | if projectModuleFiles, err = ProjectModuleFilesRepository.FindOne(map[string]interface{}{"id": request.Id}); err != nil { | 85 | if projectModuleFiles, err = ProjectModuleFilesRepository.FindOne(map[string]interface{}{"id": request.Id}); err != nil { |
| 86 | return | 86 | return |
| 87 | } | 87 | } |
| 88 | + var oldProjectModuleFiles = *projectModuleFiles | ||
| 88 | oldFileName = projectModuleFiles.FileName | 89 | oldFileName = projectModuleFiles.FileName |
| 89 | if err = projectModuleFiles.Update(common.ObjectToMap(request)); err != nil { | 90 | if err = projectModuleFiles.Update(common.ObjectToMap(request)); err != nil { |
| 90 | return | 91 | return |
| 91 | } | 92 | } |
| 92 | - if projectModuleFiles, err = ProjectModuleFilesRepository.Save(projectModuleFiles); err != nil { | ||
| 93 | - return | ||
| 94 | - } | ||
| 95 | 93 | ||
| 96 | // 更新文件名称,修改子节点跟本身的路径 1.文件夹 2.文件 | 94 | // 更新文件名称,修改子节点跟本身的路径 1.文件夹 2.文件 |
| 97 | if request.FileName != oldFileName { | 95 | if request.FileName != oldFileName { |
| 98 | // TODO:判断是否重名 | 96 | // TODO:判断是否重名 |
| 99 | var oldPath = projectModuleFiles.Path | 97 | var oldPath = projectModuleFiles.Path |
| 100 | var newPath string | 98 | var newPath string |
| 101 | - if index := strings.LastIndex(projectModuleFiles.Path, oldFileName); index > 0 { | 99 | + if index := strings.LastIndex(projectModuleFiles.Path, oldFileName); index >= 0 { |
| 102 | newPath = projectModuleFiles.Path[:index] + request.FileName | 100 | newPath = projectModuleFiles.Path[:index] + request.FileName |
| 103 | projectModuleFiles.Path = newPath | 101 | projectModuleFiles.Path = newPath |
| 104 | } | 102 | } |
| @@ -108,26 +106,27 @@ func (svr *ProjectModuleFilesService) UpdateProjectModuleFiles(header *protocol. | @@ -108,26 +106,27 @@ func (svr *ProjectModuleFilesService) UpdateProjectModuleFiles(header *protocol. | ||
| 108 | } | 106 | } |
| 109 | } | 107 | } |
| 110 | } | 108 | } |
| 111 | - // TODO:移动文件文件夹时pid变更,底下路径需要都变掉 | 109 | + |
| 110 | + if projectModuleFiles, err = ProjectModuleFilesRepository.Save(projectModuleFiles); err != nil { | ||
| 111 | + return | ||
| 112 | + } | ||
| 113 | + // TODO:移动文件文件夹时pid变更,底下路径需要都变掉,单独提取一个移动文件的接口 | ||
| 112 | 114 | ||
| 113 | // 变更记录 | 115 | // 变更记录 |
| 114 | var OperatorLogRepository, _ = factory.CreateOperatorLogRepository(transactionContext) | 116 | var OperatorLogRepository, _ = factory.CreateOperatorLogRepository(transactionContext) |
| 115 | - //var UserRepository, _ = factory.CreateUserRepository(transactionContext) | ||
| 116 | - //user, _ := UserRepository.FindOne(map[string]interface{}{"id": header.UserId}) | ||
| 117 | - //if user == nil { | ||
| 118 | - // return | ||
| 119 | - //} | ||
| 120 | var OpLog *domain.OperatorLog = &domain.OperatorLog{ | 117 | var OpLog *domain.OperatorLog = &domain.OperatorLog{ |
| 121 | UserId: header.UserId, | 118 | UserId: header.UserId, |
| 122 | Operator: header.UserName, | 119 | Operator: header.UserName, |
| 123 | Code: domain.LogCodeEditModuleFile, | 120 | Code: domain.LogCodeEditModuleFile, |
| 124 | ResourceId: request.Id, | 121 | ResourceId: request.Id, |
| 125 | - Content: changeLog(request, projectModuleFiles), | 122 | + Content: changeLog(request, &oldProjectModuleFiles), |
| 126 | CreateTime: time.Now(), | 123 | CreateTime: time.Now(), |
| 127 | } | 124 | } |
| 125 | + if len(OpLog.Content) > 0 { | ||
| 128 | if _, err = OperatorLogRepository.Save(OpLog); err != nil { | 126 | if _, err = OperatorLogRepository.Save(OpLog); err != nil { |
| 129 | return | 127 | return |
| 130 | } | 128 | } |
| 129 | + } | ||
| 131 | 130 | ||
| 132 | err = transactionContext.CommitTransaction() | 131 | err = transactionContext.CommitTransaction() |
| 133 | return | 132 | return |
| @@ -212,6 +211,25 @@ func (svr *ProjectModuleFilesService) ListProjectModuleFiles(header *protocol.Re | @@ -212,6 +211,25 @@ func (svr *ProjectModuleFilesService) ListProjectModuleFiles(header *protocol.Re | ||
| 212 | transactionContext.RollbackTransaction() | 211 | transactionContext.RollbackTransaction() |
| 213 | }() | 212 | }() |
| 214 | 213 | ||
| 214 | + // 通过project_key version_key 获取列表 | ||
| 215 | + if len(request.ProjectKey) > 0 && len(request.VersionKey) > 0 { | ||
| 216 | + var ProjectModuleRepository, _ = factory.CreateProjectModuleRepository(transactionContext) | ||
| 217 | + if project, _ := ProjectModuleRepository.FindOne(map[string]interface{}{"projectKey": request.ProjectKey, "status": domain.StatusNormal}); project != nil { | ||
| 218 | + for _, v := range project.ProjectModuleVersion { | ||
| 219 | + if v.Version == request.VersionKey { | ||
| 220 | + request.ProjectModuleId = project.Id | ||
| 221 | + request.ProjectModuleVersionId = v.Id | ||
| 222 | + break | ||
| 223 | + } | ||
| 224 | + } | ||
| 225 | + } | ||
| 226 | + } | ||
| 227 | + | ||
| 228 | + if request.ProjectModuleVersionId == 0 && request.ProjectModuleId == 0 { | ||
| 229 | + err = protocol.NewCustomMessage(1, "不存在") | ||
| 230 | + return | ||
| 231 | + } | ||
| 232 | + | ||
| 215 | var ProjectModuleFilesRepository, _ = factory.CreateProjectModuleFilesRepository(transactionContext) | 233 | var ProjectModuleFilesRepository, _ = factory.CreateProjectModuleFilesRepository(transactionContext) |
| 216 | var projectModuleFiles []*domain.ProjectModuleFiles | 234 | var projectModuleFiles []*domain.ProjectModuleFiles |
| 217 | var total int64 | 235 | var total int64 |
| @@ -261,9 +279,9 @@ func (svr *ProjectModuleFilesService) Import(header *protocol.RequestHeader, req | @@ -261,9 +279,9 @@ func (svr *ProjectModuleFilesService) Import(header *protocol.RequestHeader, req | ||
| 261 | fileDir := filepath.Dir(f.FileName) | 279 | fileDir := filepath.Dir(f.FileName) |
| 262 | fileBase := filepath.Base(f.FileName) | 280 | fileBase := filepath.Base(f.FileName) |
| 263 | filename := strings.Split(fileBase, ".")[0] | 281 | filename := strings.Split(fileBase, ".")[0] |
| 264 | - var parentNode *domain.ProjectModuleFiles = &domain.ProjectModuleFiles{Path: "", ProjectModuleId: request.ProjectModuleId, ProjectModuleVersionId: request.ProjectModuleVersionId, Id: 0} | 282 | + var parentNode *domain.ProjectModuleFiles = &domain.ProjectModuleFiles{Path: "", ProjectModuleId: request.ProjectModuleId, ProjectModuleVersionId: request.ProjectModuleVersionId, Id: request.ParentId} |
| 265 | var ok bool | 283 | var ok bool |
| 266 | - if len(fileDir) > 0 { | 284 | + if len(fileDir) > 0 && f.FileName != fileBase { //如果文件名跟路径一致,说明path是空 |
| 267 | // create dir node | 285 | // create dir node |
| 268 | if parentNode, ok = mapParent[fileDir]; !ok { | 286 | if parentNode, ok = mapParent[fileDir]; !ok { |
| 269 | parentNodes, _ := svr.mkdirF(fileDir, request.ProjectModuleId, request.ProjectModuleVersionId, request.ParentId, ProjectModuleFilesRepository) | 287 | parentNodes, _ := svr.mkdirF(fileDir, request.ProjectModuleId, request.ProjectModuleVersionId, request.ParentId, ProjectModuleFilesRepository) |
| @@ -291,9 +309,10 @@ func (svr *ProjectModuleFilesService) Import(header *protocol.RequestHeader, req | @@ -291,9 +309,10 @@ func (svr *ProjectModuleFilesService) Import(header *protocol.RequestHeader, req | ||
| 291 | UpdateTime: time.Now(), | 309 | UpdateTime: time.Now(), |
| 292 | Path: filename, | 310 | Path: filename, |
| 293 | } | 311 | } |
| 294 | - if _, e := svr.save(newItem, ProjectModuleFilesRepository); e != nil { | ||
| 295 | - log.Error(e) | ||
| 296 | - continue | 312 | + if _, err = svr.save(newItem, ProjectModuleFilesRepository); err != nil { |
| 313 | + log.Error(err) | ||
| 314 | + //continue | ||
| 315 | + return | ||
| 297 | } | 316 | } |
| 298 | } | 317 | } |
| 299 | 318 | ||
| @@ -311,8 +330,8 @@ func (svr *ProjectModuleFilesService) save(request *domain.ProjectModuleFiles, P | @@ -311,8 +330,8 @@ func (svr *ProjectModuleFilesService) save(request *domain.ProjectModuleFiles, P | ||
| 311 | request.Path = filepath.Join(pfile.Path, request.Path) | 330 | request.Path = filepath.Join(pfile.Path, request.Path) |
| 312 | } | 331 | } |
| 313 | } | 332 | } |
| 314 | - if m, e := ProjectModuleFilesRepository.FindOne(map[string]interface{}{"fileKey": request.FileKey, "projectModuleId": request.ProjectModuleId, "projectModuleVersionId": request.ProjectModuleVersionId, "parentId": request.ParentId}); e == nil && m != nil { | ||
| 315 | - err = protocol.NewCustomMessage(1, "已存在 filekey:"+request.FileKey) | 333 | + if m, e := ProjectModuleFilesRepository.FindOne(map[string]interface{}{"path": request.Path, "projectModuleId": request.ProjectModuleId, "projectModuleVersionId": request.ProjectModuleVersionId, "parentId": request.ParentId}); e == nil && m != nil { |
| 334 | + err = protocol.NewCustomMessage(1, "已存在:"+request.Path) | ||
| 316 | rsp = m | 335 | rsp = m |
| 317 | return | 336 | return |
| 318 | } | 337 | } |
| @@ -382,14 +401,14 @@ func traverse(list []*protocolx.ModuleFiles, file *domain.ProjectModuleFiles) { | @@ -382,14 +401,14 @@ func traverse(list []*protocolx.ModuleFiles, file *domain.ProjectModuleFiles) { | ||
| 382 | } | 401 | } |
| 383 | func changeLog(request *protocolx.UpdateProjectModuleFilesRequest, old *domain.ProjectModuleFiles) string { | 402 | func changeLog(request *protocolx.UpdateProjectModuleFilesRequest, old *domain.ProjectModuleFiles) string { |
| 384 | buf := bytes.NewBuffer(nil) | 403 | buf := bytes.NewBuffer(nil) |
| 385 | - if len(request.FileName) > 0 { | ||
| 386 | - buf.WriteString(" 修改文件名为:" + request.FileName + "\n") | 404 | + if len(request.FileName) > 0 && request.FileName != old.FileName { |
| 405 | + buf.WriteString("【文件名】修改为:" + request.FileName + "\n") | ||
| 387 | } | 406 | } |
| 388 | - if len(request.Remark) > 0 { | ||
| 389 | - buf.WriteString(" 修改描述信息为:" + request.Remark + "\n") | 407 | + if len(request.Remark) > 0 && request.Remark != old.Remark { |
| 408 | + buf.WriteString("【描述信息】修改为:" + request.Remark + "\n") | ||
| 390 | } | 409 | } |
| 391 | - if len(request.CodeBlock) > 0 { | ||
| 392 | - buf.WriteString(" 修改模板代码") | 410 | + if len(request.CodeBlock) > 0 && request.CodeBlock != old.CodeBlock { |
| 411 | + buf.WriteString("【模板代码】修改为:\n" + old.CodeBlock) | ||
| 393 | } | 412 | } |
| 394 | return buf.String() | 413 | return buf.String() |
| 395 | } | 414 | } |
| @@ -50,7 +50,7 @@ func (svr *ProjectModuleVersionService) CreateProjectModuleVersion(header *proto | @@ -50,7 +50,7 @@ func (svr *ProjectModuleVersionService) CreateProjectModuleVersion(header *proto | ||
| 50 | } | 50 | } |
| 51 | newProjectModuleVersion.ProjectModuleId = srcVersion.ProjectModuleId | 51 | newProjectModuleVersion.ProjectModuleId = srcVersion.ProjectModuleId |
| 52 | 52 | ||
| 53 | - if _, e := ProjectModuleVersionRepository.FindOne(map[string]interface{}{"projectModuleId": srcVersion.ProjectModuleId, "version": strings.TrimSpace(request.Version)}); e == nil { | 53 | + if _, e := ProjectModuleVersionRepository.FindOne(map[string]interface{}{"projectModuleId": srcVersion.ProjectModuleId, "version": strings.TrimSpace(request.Version), "status": 0}); e == nil { |
| 54 | err = protocol.NewCustomMessage(1, fmt.Sprintf("当前版本已存在:"+request.Version)) | 54 | err = protocol.NewCustomMessage(1, fmt.Sprintf("当前版本已存在:"+request.Version)) |
| 55 | return | 55 | return |
| 56 | } | 56 | } |
| @@ -62,7 +62,7 @@ func (svr *ProjectModuleVersionService) CreateProjectModuleVersion(header *proto | @@ -62,7 +62,7 @@ func (svr *ProjectModuleVersionService) CreateProjectModuleVersion(header *proto | ||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | var ProjectModuleDao, _ = dao.NewProjectModuleDao(transactionContext) | 64 | var ProjectModuleDao, _ = dao.NewProjectModuleDao(transactionContext) |
| 65 | - if err = ProjectModuleDao.DuplicateVersion(srcVersion.ProjectModuleId, srcVersion.ProjectModuleId, currentPMVersionId); err != nil { | 65 | + if err = ProjectModuleDao.DuplicateVersion(srcVersion.ProjectModuleId, srcVersion.Id, currentPMVersionId); err != nil { |
| 66 | return | 66 | return |
| 67 | } | 67 | } |
| 68 | err = transactionContext.CommitTransaction() | 68 | err = transactionContext.CommitTransaction() |
| @@ -90,7 +90,7 @@ func (svr *UserService) UpdateUser(header *protocol.RequestHeader, request *prot | @@ -90,7 +90,7 @@ func (svr *UserService) UpdateUser(header *protocol.RequestHeader, request *prot | ||
| 90 | err = protocol.NewCustomMessage(1, "用户不存在") | 90 | err = protocol.NewCustomMessage(1, "用户不存在") |
| 91 | return | 91 | return |
| 92 | } | 92 | } |
| 93 | - if request.Phone != "" { | 93 | + if request.Phone != "" && request.Phone != user.Phone { |
| 94 | if _, err = UserRepository.FindOne(map[string]interface{}{"phone": request.Phone}); err == nil { | 94 | if _, err = UserRepository.FindOne(map[string]interface{}{"phone": request.Phone}); err == nil { |
| 95 | err = protocol.NewCustomMessage(1, "手机号已存在") | 95 | err = protocol.NewCustomMessage(1, "手机号已存在") |
| 96 | return | 96 | return |
| @@ -226,7 +226,7 @@ func (svr *UserService) ListUser(header *protocol.RequestHeader, request *protoc | @@ -226,7 +226,7 @@ func (svr *UserService) ListUser(header *protocol.RequestHeader, request *protoc | ||
| 226 | } | 226 | } |
| 227 | userList := make([]map[string]interface{}, 0) | 227 | userList := make([]map[string]interface{}, 0) |
| 228 | for _, v := range user { | 228 | for _, v := range user { |
| 229 | - item := map[string]interface{}{"id": v.Id, "name": v.Name, "adminType": v.AdminType, "status": v.Status, "createTime": v.CreateTime.Local().Format("2006-01-02 15:04:05")} | 229 | + item := map[string]interface{}{"id": v.Id, "name": v.Name, "phone": v.Phone, "adminType": v.AdminType, "status": v.Status, "createTime": v.CreateTime.Local().Format("2006-01-02 15:04:05")} |
| 230 | item["roles"] = getRoles(v.Roles) | 230 | item["roles"] = getRoles(v.Roles) |
| 231 | userList = append(userList, item) | 231 | userList = append(userList, item) |
| 232 | } | 232 | } |
| @@ -234,7 +234,7 @@ func (svr *UserService) ListUser(header *protocol.RequestHeader, request *protoc | @@ -234,7 +234,7 @@ func (svr *UserService) ListUser(header *protocol.RequestHeader, request *protoc | ||
| 234 | rsp = map[string]interface{}{ | 234 | rsp = map[string]interface{}{ |
| 235 | "totalRow": total, | 235 | "totalRow": total, |
| 236 | "pageNumber": request.PageNumber, | 236 | "pageNumber": request.PageNumber, |
| 237 | - "list": userList, | 237 | + "lists": userList, |
| 238 | } | 238 | } |
| 239 | if err = transactionContext.CommitTransaction(); err != nil { | 239 | if err = transactionContext.CommitTransaction(); err != nil { |
| 240 | err = application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 240 | err = application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| @@ -12,8 +12,8 @@ type ProjectModuleFilesDao struct { | @@ -12,8 +12,8 @@ type ProjectModuleFilesDao struct { | ||
| 12 | 12 | ||
| 13 | func (dao *ProjectModuleFilesDao) UpdateFilesPath(srcProjectId, srcVersionId int64, oldPath, newPath string) error { | 13 | func (dao *ProjectModuleFilesDao) UpdateFilesPath(srcProjectId, srcVersionId int64, oldPath, newPath string) error { |
| 14 | tx := dao.transactionContext.PgTx | 14 | tx := dao.transactionContext.PgTx |
| 15 | - _, err := tx.Exec(fmt.Sprintf(`update project_module_files set "path"= replace("path",?,?) where project_module_id=? and project_module_version_id=? and "path" like '%%%v%%'`, strings.Replace(oldPath, "\\", "\\\\", -1)), | ||
| 16 | - oldPath, newPath, srcProjectId, srcVersionId) | 15 | + _, err := tx.Exec(fmt.Sprintf(`update project_module_files set "path"= regexp_replace("path",'^%v',?) where project_module_id=? and project_module_version_id=? and "path" like '%%%v%%'`, oldPath, strings.Replace(oldPath, "\\", "\\\\", -1)), |
| 16 | + newPath, srcProjectId, srcVersionId) | ||
| 17 | return err | 17 | return err |
| 18 | } | 18 | } |
| 19 | 19 |
| @@ -97,6 +97,10 @@ func (repository *ClientVersionRepository) Find(queryOptions map[string]interfac | @@ -97,6 +97,10 @@ func (repository *ClientVersionRepository) Find(queryOptions map[string]interfac | ||
| 97 | SetOrder("create_time", "sortByCreateTime"). | 97 | SetOrder("create_time", "sortByCreateTime"). |
| 98 | SetOrder("update_time", "sortByUpdateTime"). | 98 | SetOrder("update_time", "sortByUpdateTime"). |
| 99 | SetLimit() | 99 | SetLimit() |
| 100 | + | ||
| 101 | + if searchByText, ok := queryOptions["searchByText"]; ok && len(searchByText.(string)) > 0 { | ||
| 102 | + query.Where(fmt.Sprintf(`project_name like '%%%v%%'`, searchByText)) | ||
| 103 | + } | ||
| 100 | var err error | 104 | var err error |
| 101 | if query.AffectRow, err = query.SelectAndCount(); err != nil { | 105 | if query.AffectRow, err = query.SelectAndCount(); err != nil { |
| 102 | return 0, ClientVersions, err | 106 | return 0, ClientVersions, err |
| @@ -75,9 +75,11 @@ func (repository *ProjectModuleFilesRepository) Find(queryOptions map[string]int | @@ -75,9 +75,11 @@ func (repository *ProjectModuleFilesRepository) Find(queryOptions map[string]int | ||
| 75 | SetOrder("create_time", "sortByCreateTime"). | 75 | SetOrder("create_time", "sortByCreateTime"). |
| 76 | SetOrder("update_time", "sortByUpdateTime"). | 76 | SetOrder("update_time", "sortByUpdateTime"). |
| 77 | SetOrder("parent_id", "sortByParentId"). | 77 | SetOrder("parent_id", "sortByParentId"). |
| 78 | + SetOrder("file_type", "sortByFileType"). | ||
| 78 | SetOrder("id", "sortById") | 79 | SetOrder("id", "sortById") |
| 79 | 80 | ||
| 80 | query.SetWhere("parent_id = ?", "parentId") | 81 | query.SetWhere("parent_id = ?", "parentId") |
| 82 | + query.SetWhere("file_name = ?", "fileName") | ||
| 81 | var err error | 83 | var err error |
| 82 | if query.AffectRow, err = query.SelectAndCount(); err != nil { | 84 | if query.AffectRow, err = query.SelectAndCount(); err != nil { |
| 83 | return 0, ProjectModuleFiless, err | 85 | return 0, ProjectModuleFiless, err |
| @@ -56,6 +56,8 @@ func (repository *ProjectModuleRepository) FindOne(queryOptions map[string]inter | @@ -56,6 +56,8 @@ func (repository *ProjectModuleRepository) FindOne(queryOptions map[string]inter | ||
| 56 | }), queryOptions) | 56 | }), queryOptions) |
| 57 | query.SetWhere("id = ?", "id") | 57 | query.SetWhere("id = ?", "id") |
| 58 | query.SetWhere("project_key = ?", "projectKey") | 58 | query.SetWhere("project_key = ?", "projectKey") |
| 59 | + | ||
| 60 | + query.SetWhere("status=?", "status") | ||
| 59 | if err := query.First(); err != nil { | 61 | if err := query.First(); err != nil { |
| 60 | return nil, fmt.Errorf("query row not found") | 62 | return nil, fmt.Errorf("query row not found") |
| 61 | } | 63 | } |
| @@ -77,6 +79,11 @@ func (repository *ProjectModuleRepository) Find(queryOptions map[string]interfac | @@ -77,6 +79,11 @@ func (repository *ProjectModuleRepository) Find(queryOptions map[string]interfac | ||
| 77 | SetWhere("status=?", "status"). | 79 | SetWhere("status=?", "status"). |
| 78 | SetOrder("create_time", "sortByCreateTime"). | 80 | SetOrder("create_time", "sortByCreateTime"). |
| 79 | SetOrder("update_time", "sortByUpdateTime").SetLimit() | 81 | SetOrder("update_time", "sortByUpdateTime").SetLimit() |
| 82 | + | ||
| 83 | + if searchByText, ok := queryOptions["searchByText"]; ok && len(searchByText.(string)) > 0 { | ||
| 84 | + query.Where(fmt.Sprintf(`project_name like '%%%v%%'`, searchByText)) | ||
| 85 | + } | ||
| 86 | + | ||
| 80 | var err error | 87 | var err error |
| 81 | if query.AffectRow, err = query.SelectAndCount(); err != nil { | 88 | if query.AffectRow, err = query.SelectAndCount(); err != nil { |
| 82 | return 0, ProjectModules, err | 89 | return 0, ProjectModules, err |
| @@ -63,6 +63,7 @@ func (repository *ProjectModuleVersionRepository) FindOne(queryOptions map[strin | @@ -63,6 +63,7 @@ func (repository *ProjectModuleVersionRepository) FindOne(queryOptions map[strin | ||
| 63 | query.SetWhere("id = ?", "id") | 63 | query.SetWhere("id = ?", "id") |
| 64 | query.SetWhere("project_module_id = ?", "projectModuleId") | 64 | query.SetWhere("project_module_id = ?", "projectModuleId") |
| 65 | query.SetWhere("version = ?", "version") | 65 | query.SetWhere("version = ?", "version") |
| 66 | + query.SetWhere("status = ?", "status") | ||
| 66 | if err := query.First(); err != nil { | 67 | if err := query.First(); err != nil { |
| 67 | return nil, fmt.Errorf("query row not found") | 68 | return nil, fmt.Errorf("query row not found") |
| 68 | } | 69 | } |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | 8 | ||
| 9 | func init() { | 9 | func init() { |
| 10 | beego.InsertFilter("*", beego.BeforeRouter, middleware.AllowCors()) | 10 | beego.InsertFilter("*", beego.BeforeRouter, middleware.AllowCors()) |
| 11 | + //beego.InsertFilter("*", beego.BeforeRouter, middleware.OpenTracingAdapter) | ||
| 11 | 12 | ||
| 12 | beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequestLogFilter()) | 13 | beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequestLogFilter()) |
| 13 | beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(), false) | 14 | beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(), false) |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "encoding/json" | 5 | "encoding/json" |
| 6 | "github.com/astaxie/beego" | 6 | "github.com/astaxie/beego" |
| 7 | "github.com/astaxie/beego/context" | 7 | "github.com/astaxie/beego/context" |
| 8 | + "github.com/tiptok/gocomm/common" | ||
| 8 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" | 9 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol" |
| 9 | ) | 10 | ) |
| 10 | 11 | ||
| @@ -23,6 +24,19 @@ func (controller BaseController) JsonUnmarshal(v interface{}) error { | @@ -23,6 +24,19 @@ func (controller BaseController) JsonUnmarshal(v interface{}) error { | ||
| 23 | return err | 24 | return err |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 27 | +func (controller BaseController) BodyKeys(firstCaseToUpper bool) []string { | ||
| 28 | + var bodyKV map[string]json.RawMessage | ||
| 29 | + controller.JsonUnmarshal(&bodyKV) | ||
| 30 | + if len(bodyKV) == 0 { | ||
| 31 | + return []string{} | ||
| 32 | + } | ||
| 33 | + var list []string | ||
| 34 | + for k, _ := range bodyKV { | ||
| 35 | + list = append(list, common.CamelCase(k, true)) | ||
| 36 | + } | ||
| 37 | + return list | ||
| 38 | +} | ||
| 39 | + | ||
| 26 | func (controller *BaseController) Resp(msg *protocol.ResponseMessage) { | 40 | func (controller *BaseController) Resp(msg *protocol.ResponseMessage) { |
| 27 | if msg.Errno != 0 { | 41 | if msg.Errno != 0 { |
| 28 | msg.Errno = -1 | 42 | msg.Errno = -1 |
| @@ -51,6 +65,6 @@ func (controller *BaseController) GetRequestHeader(ctx *context.Context) *protoc | @@ -51,6 +65,6 @@ func (controller *BaseController) GetRequestHeader(ctx *context.Context) *protoc | ||
| 51 | if v := ctx.Input.GetData("x-mmm-uname"); v != nil { | 65 | if v := ctx.Input.GetData("x-mmm-uname"); v != nil { |
| 52 | h.UserName = v.(string) | 66 | h.UserName = v.(string) |
| 53 | } | 67 | } |
| 54 | - | 68 | + h.BodyKeys = controller.BodyKeys(true) |
| 55 | return h | 69 | return h |
| 56 | } | 70 | } |
| @@ -45,6 +45,10 @@ func (controller *ClientVersionController) UpdateClientVersion() { | @@ -45,6 +45,10 @@ func (controller *ClientVersionController) UpdateClientVersion() { | ||
| 45 | defer func() { | 45 | defer func() { |
| 46 | controller.Resp(msg) | 46 | controller.Resp(msg) |
| 47 | }() | 47 | }() |
| 48 | + if err := controller.JsonUnmarshal(&request); err != nil { | ||
| 49 | + msg = protocol.NewResponseMessage(2, err.Error()) | ||
| 50 | + return | ||
| 51 | + } | ||
| 48 | request.Id, _ = controller.GetInt64(":clientVersionId") | 52 | request.Id, _ = controller.GetInt64(":clientVersionId") |
| 49 | header := controller.GetRequestHeader(controller.Ctx) | 53 | header := controller.GetRequestHeader(controller.Ctx) |
| 50 | data, err := svr.UpdateClientVersion(header, request) | 54 | data, err := svr.UpdateClientVersion(header, request) |
| @@ -106,6 +110,7 @@ func (controller *ClientVersionController) ListClientVersion() { | @@ -106,6 +110,7 @@ func (controller *ClientVersionController) ListClientVersion() { | ||
| 106 | controller.Resp(msg) | 110 | controller.Resp(msg) |
| 107 | }() | 111 | }() |
| 108 | request.Offset, request.Limit = controller.GetLimitInfo() | 112 | request.Offset, request.Limit = controller.GetLimitInfo() |
| 113 | + request.SearchByText = controller.GetString("projectName") | ||
| 109 | header := controller.GetRequestHeader(controller.Ctx) | 114 | header := controller.GetRequestHeader(controller.Ctx) |
| 110 | data, err := svr.ListClientVersion(header, request) | 115 | data, err := svr.ListClientVersion(header, request) |
| 111 | if err != nil { | 116 | if err != nil { |
| @@ -119,6 +119,7 @@ func (controller *OperatorLogController) ListOperatorLog() { | @@ -119,6 +119,7 @@ func (controller *OperatorLogController) ListOperatorLog() { | ||
| 119 | // return | 119 | // return |
| 120 | //} | 120 | //} |
| 121 | request.Offset, request.Limit = controller.GetLimitInfo() | 121 | request.Offset, request.Limit = controller.GetLimitInfo() |
| 122 | + request.ResourceId, _ = controller.GetInt64("resourceId") | ||
| 122 | header := controller.GetRequestHeader(controller.Ctx) | 123 | header := controller.GetRequestHeader(controller.Ctx) |
| 123 | data, err := svr.ListOperatorLog(header, request) | 124 | data, err := svr.ListOperatorLog(header, request) |
| 124 | if err != nil { | 125 | if err != nil { |
| @@ -115,6 +115,7 @@ func (controller *ProjectModuleController) ListProjectModule() { | @@ -115,6 +115,7 @@ func (controller *ProjectModuleController) ListProjectModule() { | ||
| 115 | } | 115 | } |
| 116 | request.PageNumber, _ = controller.GetInt("pageNumber") | 116 | request.PageNumber, _ = controller.GetInt("pageNumber") |
| 117 | request.PageSize, _ = controller.GetInt("pageSize") | 117 | request.PageSize, _ = controller.GetInt("pageSize") |
| 118 | + request.ProjectName = controller.GetString("projectName") | ||
| 118 | header := controller.GetRequestHeader(controller.Ctx) | 119 | header := controller.GetRequestHeader(controller.Ctx) |
| 119 | data, err := svr.ListProjectModule(header, request) | 120 | data, err := svr.ListProjectModule(header, request) |
| 120 | if err != nil { | 121 | if err != nil { |
| @@ -115,6 +115,10 @@ func (controller *ProjectModuleFilesController) ListProjectModuleFiles() { | @@ -115,6 +115,10 @@ func (controller *ProjectModuleFilesController) ListProjectModuleFiles() { | ||
| 115 | request.ProjectModuleVersionId, _ = controller.GetInt64("projectModuleVersionId") | 115 | request.ProjectModuleVersionId, _ = controller.GetInt64("projectModuleVersionId") |
| 116 | request.ProjectModuleId, _ = controller.GetInt64("projectModuleId") | 116 | request.ProjectModuleId, _ = controller.GetInt64("projectModuleId") |
| 117 | request.StructType = controller.GetString("structType") | 117 | request.StructType = controller.GetString("structType") |
| 118 | + | ||
| 119 | + request.ProjectKey = controller.GetString("projectKey") | ||
| 120 | + request.VersionKey = controller.GetString("versionKey") | ||
| 121 | + request.FileName = controller.GetString("fileName") | ||
| 118 | header := controller.GetRequestHeader(controller.Ctx) | 122 | header := controller.GetRequestHeader(controller.Ctx) |
| 119 | data, err := svr.ListProjectModuleFiles(header, request) | 123 | data, err := svr.ListProjectModuleFiles(header, request) |
| 120 | if err != nil { | 124 | if err != nil { |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "errors" | 5 | "errors" |
| 6 | "fmt" | 6 | "fmt" |
| 7 | "github.com/astaxie/beego/context" | 7 | "github.com/astaxie/beego/context" |
| 8 | + //"github.com/opentracing/opentracing-go" | ||
| 8 | "github.com/tiptok/gocomm/common" | 9 | "github.com/tiptok/gocomm/common" |
| 9 | "github.com/tiptok/gocomm/pkg/log" | 10 | "github.com/tiptok/gocomm/pkg/log" |
| 10 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/application/cachex" | 11 | "gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/application/cachex" |
| @@ -136,3 +137,19 @@ func AllowCors() func(ctx *context.Context) { | @@ -136,3 +137,19 @@ func AllowCors() func(ctx *context.Context) { | ||
| 136 | } | 137 | } |
| 137 | } | 138 | } |
| 138 | } | 139 | } |
| 140 | + | ||
| 141 | +//func OpenTracingAdapter(ctx *context.Context) { | ||
| 142 | +// var sp opentracing.Span | ||
| 143 | +// opName := ctx.Input.URL() | ||
| 144 | +// // Attempt to join a trace by getting trace context from the headers. | ||
| 145 | +// wireContext, err := opentracing.GlobalTracer().Extract( | ||
| 146 | +// opentracing.HTTPHeaders, | ||
| 147 | +// opentracing.HTTPHeadersCarrier(ctx.Request.Header)) | ||
| 148 | +// if err != nil { | ||
| 149 | +// // If for whatever reason we can't join, go ahead an start a new root span. | ||
| 150 | +// sp = opentracing.StartSpan(opName) | ||
| 151 | +// } else { | ||
| 152 | +// sp = opentracing.StartSpan(opName, opentracing.ChildOf(wireContext)) | ||
| 153 | +// } | ||
| 154 | +// defer sp.Finish() | ||
| 155 | +//} |
| @@ -13,4 +13,6 @@ func init() { | @@ -13,4 +13,6 @@ func init() { | ||
| 13 | beego.Router("/v1/project_module_files/", &controllers.ProjectModuleFilesController{}, "GET:ListProjectModuleFiles") | 13 | beego.Router("/v1/project_module_files/", &controllers.ProjectModuleFilesController{}, "GET:ListProjectModuleFiles") |
| 14 | 14 | ||
| 15 | beego.Router("/v1/project_module_files/import", &controllers.ProjectModuleFilesController{}, "post:Import") | 15 | beego.Router("/v1/project_module_files/import", &controllers.ProjectModuleFilesController{}, "post:Import") |
| 16 | + | ||
| 17 | + beego.Router("/v1/client/project_module_files/", &controllers.ProjectModuleFilesController{}, "GET:ListProjectModuleFiles") | ||
| 16 | } | 18 | } |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | type ListClientVersionRequest struct { | 8 | type ListClientVersionRequest struct { |
| 9 | Offset int `json:"offset"` | 9 | Offset int `json:"offset"` |
| 10 | Limit int `json:"limit"` | 10 | Limit int `json:"limit"` |
| 11 | + SearchByText string `json:"projectName,omitempty"` //按名称搜索 | ||
| 11 | } | 12 | } |
| 12 | 13 | ||
| 13 | func (ListClientVersionRequest *ListClientVersionRequest) ValidateCommand() error { | 14 | func (ListClientVersionRequest *ListClientVersionRequest) ValidateCommand() error { |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | type ListProjectModuleRequest struct { | 8 | type ListProjectModuleRequest struct { |
| 9 | PageSize int `json:"pageSize" valid:"Required"` | 9 | PageSize int `json:"pageSize" valid:"Required"` |
| 10 | PageNumber int `json:"pageNumber" valid:"Required"` | 10 | PageNumber int `json:"pageNumber" valid:"Required"` |
| 11 | + ProjectName string `json:"projectName,omitempty"` //按名称搜索 | ||
| 11 | } | 12 | } |
| 12 | 13 | ||
| 13 | func (ListProjectModuleRequest *ListProjectModuleRequest) ValidateCommand() error { | 14 | func (ListProjectModuleRequest *ListProjectModuleRequest) ValidateCommand() error { |
| @@ -7,15 +7,24 @@ import ( | @@ -7,15 +7,24 @@ import ( | ||
| 7 | 7 | ||
| 8 | type ListProjectModuleFilesRequest struct { | 8 | type ListProjectModuleFilesRequest struct { |
| 9 | // 项目模块编号 | 9 | // 项目模块编号 |
| 10 | - ProjectModuleId int64 `json:"projectModuleId,omitempty" valid:"Required"` | 10 | + ProjectModuleId int64 `json:"projectModuleId,omitempty"` |
| 11 | // 项目模块版本编号 | 11 | // 项目模块版本编号 |
| 12 | - ProjectModuleVersionId int64 `json:"projectModuleVersionId,omitempty" valid:"Required"` | 12 | + ProjectModuleVersionId int64 `json:"projectModuleVersionId,omitempty"` |
| 13 | // 返回结构类型 tree list 默认list | 13 | // 返回结构类型 tree list 默认list |
| 14 | StructType string `json:"structType,omitempty"` | 14 | StructType string `json:"structType,omitempty"` |
| 15 | // 按父级Id排序 | 15 | // 按父级Id排序 |
| 16 | SortByParentId string `json:"sortByParentId,omitempty"` | 16 | SortByParentId string `json:"sortByParentId,omitempty"` |
| 17 | // 按Id排序 | 17 | // 按Id排序 |
| 18 | SortById string `json:"sortById,omitempty"` | 18 | SortById string `json:"sortById,omitempty"` |
| 19 | + // 按文件类型 | ||
| 20 | + SortByFileType string `json:"sortByFileType,omitempty"` | ||
| 21 | + | ||
| 22 | + // 项目模块编号 | ||
| 23 | + ProjectKey string `json:"projectKey,omitempty"` | ||
| 24 | + // 项目模块版本编号 | ||
| 25 | + VersionKey string `json:"versionKey,omitempty"` | ||
| 26 | + // 项目模块文件 | ||
| 27 | + FileName string `json:"fileName,omitempty"` | ||
| 19 | } | 28 | } |
| 20 | 29 | ||
| 21 | func (ListProjectModuleFilesRequest *ListProjectModuleFilesRequest) ValidateCommand() error { | 30 | func (ListProjectModuleFilesRequest *ListProjectModuleFilesRequest) ValidateCommand() error { |
| @@ -27,6 +36,9 @@ func (ListProjectModuleFilesRequest *ListProjectModuleFilesRequest) ValidateComm | @@ -27,6 +36,9 @@ func (ListProjectModuleFilesRequest *ListProjectModuleFilesRequest) ValidateComm | ||
| 27 | if len(ListProjectModuleFilesRequest.SortById) == 0 { | 36 | if len(ListProjectModuleFilesRequest.SortById) == 0 { |
| 28 | ListProjectModuleFilesRequest.SortById = "ASC" | 37 | ListProjectModuleFilesRequest.SortById = "ASC" |
| 29 | } | 38 | } |
| 39 | + if len(ListProjectModuleFilesRequest.SortByFileType) == 0 { | ||
| 40 | + ListProjectModuleFilesRequest.SortByFileType = "ASC" | ||
| 41 | + } | ||
| 30 | if err != nil { | 42 | if err != nil { |
| 31 | return err | 43 | return err |
| 32 | } | 44 | } |
| @@ -133,4 +133,5 @@ var errmessge ErrorMap = map[int]string{ | @@ -133,4 +133,5 @@ var errmessge ErrorMap = map[int]string{ | ||
| 133 | type RequestHeader struct { | 133 | type RequestHeader struct { |
| 134 | UserId int64 //UserId 唯一标识 | 134 | UserId int64 //UserId 唯一标识 |
| 135 | UserName string | 135 | UserName string |
| 136 | + BodyKeys []string | ||
| 136 | } | 137 | } |
-
请 注册 或 登录 后发表评论