387 lines
9.5 KiB
Go
387 lines
9.5 KiB
Go
|
package service
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"go-common/app/admin/ep/marthe/model"
|
||
|
"go-common/library/ecode"
|
||
|
)
|
||
|
|
||
|
// UpdateBuglyVersion update Bugly Version.
|
||
|
func (s *Service) UpdateBuglyVersion(c context.Context, username string, req *model.AddVersionRequest) (rep map[string]interface{}, err error) {
|
||
|
var (
|
||
|
bugVersionID int64
|
||
|
buglyProject *model.BuglyProject
|
||
|
)
|
||
|
|
||
|
// check project
|
||
|
if buglyProject, err = s.dao.QueryBuglyProject(req.BuglyProjectID); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if buglyProject.ID == 0 {
|
||
|
err = ecode.NothingFound
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if req.ID > 0 {
|
||
|
// update
|
||
|
var tmpVersion *model.BuglyVersion
|
||
|
|
||
|
if tmpVersion, err = s.dao.QueryBuglyVersion(req.ID); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if tmpVersion.ID == 0 {
|
||
|
err = ecode.NothingFound
|
||
|
return
|
||
|
}
|
||
|
|
||
|
tmpVersion.BuglyProjectID = req.BuglyProjectID
|
||
|
tmpVersion.Version = req.Version
|
||
|
tmpVersion.Action = req.Action
|
||
|
|
||
|
if err = s.dao.UpdateBuglyVersion(tmpVersion); err != nil {
|
||
|
return
|
||
|
}
|
||
|
bugVersionID = tmpVersion.ID
|
||
|
|
||
|
} else {
|
||
|
// add
|
||
|
var tmpVersion *model.BuglyVersion
|
||
|
|
||
|
//check name
|
||
|
if tmpVersion, err = s.dao.QueryBuglyVersionByVersion(req.Version); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if tmpVersion.ID > 0 {
|
||
|
err = ecode.MartheDuplicateErr
|
||
|
return
|
||
|
}
|
||
|
|
||
|
buglyVersion := &model.BuglyVersion{
|
||
|
ID: req.ID,
|
||
|
Version: req.Version,
|
||
|
BuglyProjectID: req.BuglyProjectID,
|
||
|
Action: req.Action,
|
||
|
TaskStatus: model.BuglyVersionTaskStatusReady,
|
||
|
UpdateBy: username,
|
||
|
}
|
||
|
|
||
|
if err = s.dao.InsertBuglyVersion(buglyVersion); err != nil {
|
||
|
return
|
||
|
}
|
||
|
bugVersionID = buglyVersion.ID
|
||
|
}
|
||
|
|
||
|
rep = make(map[string]interface{})
|
||
|
rep["bug_version_id"] = bugVersionID
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// QueryBuglyVersions Query Bugly Versions.
|
||
|
func (s *Service) QueryBuglyVersions(c context.Context, req *model.QueryBuglyVersionRequest) (rep *model.PaginateBuglyProjectVersions, err error) {
|
||
|
var (
|
||
|
total int64
|
||
|
buglyProjectVersions []*model.BuglyProjectVersion
|
||
|
)
|
||
|
if total, buglyProjectVersions, err = s.dao.FindBuglyProjectVersions(req); err != nil {
|
||
|
return
|
||
|
}
|
||
|
rep = &model.PaginateBuglyProjectVersions{
|
||
|
PaginationRep: model.PaginationRep{
|
||
|
Total: total,
|
||
|
PageSize: req.PageSize,
|
||
|
PageNum: req.PageNum,
|
||
|
},
|
||
|
BuglyProjectVersions: buglyProjectVersions,
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// BuglyVersionAndProjectList Bugly Version and project List.
|
||
|
func (s *Service) BuglyVersionAndProjectList(c context.Context) (rep map[string]interface{}, err error) {
|
||
|
var (
|
||
|
versionList []string
|
||
|
projectList []string
|
||
|
)
|
||
|
|
||
|
rep = make(map[string]interface{})
|
||
|
|
||
|
if versionList, err = s.dao.QueryBuglyVersionList(); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if projectList, err = s.dao.QueryBuglyProjectList(); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
rep["versions"] = versionList
|
||
|
|
||
|
rep["projects"] = projectList
|
||
|
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpdateCookie update Cookie.
|
||
|
func (s *Service) UpdateCookie(c context.Context, username string, req *model.AddCookieRequest) (rep map[string]interface{}, err error) {
|
||
|
var cookieID int64
|
||
|
|
||
|
if req.ID > 0 {
|
||
|
buglyCookie := &model.BuglyCookie{
|
||
|
ID: req.ID,
|
||
|
QQAccount: req.QQAccount,
|
||
|
Cookie: req.Cookie,
|
||
|
Token: req.Token,
|
||
|
Status: req.Status,
|
||
|
UpdateBy: username,
|
||
|
}
|
||
|
if err = s.dao.UpdateCookie(buglyCookie); err != nil {
|
||
|
return
|
||
|
}
|
||
|
cookieID = req.ID
|
||
|
} else {
|
||
|
buglyCookie := &model.BuglyCookie{
|
||
|
QQAccount: req.QQAccount,
|
||
|
Cookie: req.Cookie,
|
||
|
Token: req.Token,
|
||
|
Status: req.Status,
|
||
|
UpdateBy: username,
|
||
|
}
|
||
|
if err = s.dao.InsertCookie(buglyCookie); err != nil {
|
||
|
return
|
||
|
}
|
||
|
cookieID = buglyCookie.ID
|
||
|
}
|
||
|
|
||
|
rep = make(map[string]interface{})
|
||
|
rep["cookie_id"] = cookieID
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// QueryCookies Add Cookie.
|
||
|
func (s *Service) QueryCookies(c context.Context, req *model.QueryBuglyCookiesRequest) (rep *model.PaginateBuglyCookies, err error) {
|
||
|
var (
|
||
|
total int64
|
||
|
buglyCookies []*model.BuglyCookie
|
||
|
)
|
||
|
if total, buglyCookies, err = s.dao.FindCookies(req); err != nil {
|
||
|
return
|
||
|
}
|
||
|
rep = &model.PaginateBuglyCookies{
|
||
|
PaginationRep: model.PaginationRep{
|
||
|
Total: total,
|
||
|
PageSize: req.PageSize,
|
||
|
PageNum: req.PageNum,
|
||
|
},
|
||
|
BuglyCookies: buglyCookies,
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpdateCookieStatus Update Cookie Status.
|
||
|
func (s *Service) UpdateCookieStatus(c context.Context, cookieID int64, status int) (err error) {
|
||
|
err = s.dao.UpdateCookieStatus(cookieID, status)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// GetEnableCookie Get Enable Cookie.
|
||
|
func (s *Service) GetEnableCookie() (buglyCookie *model.BuglyCookie, err error) {
|
||
|
var buglyCookies []*model.BuglyCookie
|
||
|
|
||
|
if buglyCookies, err = s.dao.QueryCookieByStatus(model.BuglyCookieStatusEnable); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
/*for _, ele := range buglyCookies {
|
||
|
if ele.UsageCount < s.c.Bugly.CookieUsageUpper {
|
||
|
buglyCookie = ele
|
||
|
err = s.dao.UpdateCookieUsageCount(buglyCookie.ID, buglyCookie.UsageCount+1)
|
||
|
return
|
||
|
}
|
||
|
}*/
|
||
|
|
||
|
if len(buglyCookies) > 0 {
|
||
|
buglyCookie = buglyCookies[0]
|
||
|
err = s.dao.UpdateCookieUsageCount(buglyCookie.ID, buglyCookie.UsageCount+1)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
//not found enable cookie
|
||
|
s.DoWhenNoEnableCookie()
|
||
|
err = ecode.MartheNoCookie
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// DisableCookie Disable Cookie.
|
||
|
func (s *Service) DisableCookie(c context.Context, cookieID int64) (err error) {
|
||
|
err = s.dao.UpdateCookieStatus(cookieID, model.BuglyCookieStatusDisable)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// DoWhenNoEnableCookie Do When No Enable Cookie.
|
||
|
func (s *Service) DoWhenNoEnableCookie() {
|
||
|
// todo notice
|
||
|
s.SendMail(s.c.Mail.NoticeOwner, "marthe has no enable cookie", "")
|
||
|
}
|
||
|
|
||
|
// QueryBuglyIssueRecords Query Bugly Issue Records
|
||
|
func (s *Service) QueryBuglyIssueRecords(c context.Context, req *model.QueryBuglyIssueRequest) (rep *model.PaginateBuglyIssues, err error) {
|
||
|
var (
|
||
|
total int64
|
||
|
buglyIssues []*model.BuglyIssue
|
||
|
)
|
||
|
if total, buglyIssues, err = s.dao.FindBuglyIssues(req); err != nil {
|
||
|
return
|
||
|
}
|
||
|
rep = &model.PaginateBuglyIssues{
|
||
|
PaginationRep: model.PaginationRep{
|
||
|
Total: total,
|
||
|
PageSize: req.PageSize,
|
||
|
PageNum: req.PageNum,
|
||
|
},
|
||
|
BuglyIssues: buglyIssues,
|
||
|
}
|
||
|
return
|
||
|
|
||
|
}
|
||
|
|
||
|
// QueryBatchRuns Query Batch Runs
|
||
|
func (s *Service) QueryBatchRuns(c context.Context, req *model.QueryBuglyBatchRunsRequest) (rep *model.PaginateBuglyBatchRuns, err error) {
|
||
|
var (
|
||
|
total int64
|
||
|
buglyBatchRuns []*model.BuglyBatchRun
|
||
|
)
|
||
|
if total, buglyBatchRuns, err = s.dao.FindBuglyBatchRuns(req); err != nil {
|
||
|
return
|
||
|
}
|
||
|
rep = &model.PaginateBuglyBatchRuns{
|
||
|
PaginationRep: model.PaginationRep{
|
||
|
Total: total,
|
||
|
PageSize: req.PageSize,
|
||
|
PageNum: req.PageNum,
|
||
|
},
|
||
|
BuglyBatchRuns: buglyBatchRuns,
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpdateBuglyProject update bugly project.
|
||
|
func (s *Service) UpdateBuglyProject(c context.Context, username string, req *model.AddProjectRequest) (rep map[string]interface{}, err error) {
|
||
|
var buglyProjectID int64
|
||
|
|
||
|
if req.ID > 0 {
|
||
|
buglyProject := &model.BuglyProject{
|
||
|
ID: req.ID,
|
||
|
ProjectID: req.ProjectID,
|
||
|
//ProjectName: req.ProjectName,
|
||
|
PlatformID: req.PlatformID,
|
||
|
ExceptionType: req.ExceptionType,
|
||
|
UpdateBy: username,
|
||
|
}
|
||
|
if err = s.dao.UpdateBuglyProject(buglyProject); err != nil {
|
||
|
return
|
||
|
}
|
||
|
buglyProjectID = req.ID
|
||
|
} else {
|
||
|
var buglyProjectInDB *model.BuglyProject
|
||
|
if buglyProjectInDB, err = s.dao.QueryBuglyProjectByName(req.ProjectName); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if buglyProjectInDB.ID > 0 {
|
||
|
err = ecode.MartheDuplicateErr
|
||
|
return
|
||
|
}
|
||
|
|
||
|
buglyProject := &model.BuglyProject{
|
||
|
ProjectID: req.ProjectID,
|
||
|
ProjectName: req.ProjectName,
|
||
|
PlatformID: req.PlatformID,
|
||
|
ExceptionType: req.ExceptionType,
|
||
|
UpdateBy: username,
|
||
|
}
|
||
|
if err = s.dao.InsertBuglyProject(buglyProject); err != nil {
|
||
|
return
|
||
|
}
|
||
|
buglyProjectID = buglyProject.ID
|
||
|
}
|
||
|
|
||
|
rep = make(map[string]interface{})
|
||
|
rep["bugly_project_id"] = buglyProjectID
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// QueryBuglyProjects Query Bugly Project.
|
||
|
func (s *Service) QueryBuglyProjects(c context.Context, req *model.QueryBuglyProjectRequest) (rep *model.PaginateBuglyProjects, err error) {
|
||
|
var (
|
||
|
total int64
|
||
|
buglyProjects []*model.BuglyProject
|
||
|
)
|
||
|
if total, buglyProjects, err = s.dao.FindBuglyProjects(req); err != nil {
|
||
|
return
|
||
|
}
|
||
|
rep = &model.PaginateBuglyProjects{
|
||
|
PaginationRep: model.PaginationRep{
|
||
|
Total: total,
|
||
|
PageSize: req.PageSize,
|
||
|
PageNum: req.PageNum,
|
||
|
},
|
||
|
BuglyProjects: buglyProjects,
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// QueryBuglyProject Query Bugly Project.
|
||
|
func (s *Service) QueryBuglyProject(c context.Context, id int64) (buglyProject *model.BuglyProject, err error) {
|
||
|
return s.dao.QueryBuglyProject(id)
|
||
|
}
|
||
|
|
||
|
// QueryAllBuglyProjects Query All Bugly Projects.
|
||
|
func (s *Service) QueryAllBuglyProjects(c context.Context) (buglyProjects []*model.BuglyProject, err error) {
|
||
|
return s.dao.QueryAllBuglyProjects()
|
||
|
}
|
||
|
|
||
|
// QueryBuglyProjectVersions Query Bugly Project Versions.
|
||
|
func (s *Service) QueryBuglyProjectVersions(c context.Context, buglyProjectID int64) (rep map[string]interface{}, err error) {
|
||
|
var (
|
||
|
buglyProject *model.BuglyProject
|
||
|
buglyCookie *model.BuglyCookie
|
||
|
buglyVersions []*model.BugVersion
|
||
|
versions []string
|
||
|
)
|
||
|
|
||
|
defer func() {
|
||
|
if err != nil && err == ecode.MartheCookieExpired {
|
||
|
s.DisableCookie(c, buglyCookie.ID)
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
if buglyProject, err = s.dao.QueryBuglyProject(buglyProjectID); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if buglyProject.ID == 0 {
|
||
|
err = ecode.NothingFound
|
||
|
return
|
||
|
}
|
||
|
|
||
|
//get enable cookie
|
||
|
if buglyCookie, err = s.GetEnableCookie(); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if buglyVersions, err = s.dao.BuglyVersion(c, buglyCookie, buglyProject.ProjectID, buglyProject.PlatformID); err != nil || buglyVersions == nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for _, buglyVersion := range buglyVersions {
|
||
|
versions = append(versions, buglyVersion.Name)
|
||
|
}
|
||
|
|
||
|
rep = make(map[string]interface{})
|
||
|
rep["versions"] = versions
|
||
|
return
|
||
|
}
|