Create & Init Project...
This commit is contained in:
45
app/admin/main/laser/http/BUILD
Normal file
45
app/admin/main/laser/http/BUILD
Normal file
@ -0,0 +1,45 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"csv.go",
|
||||
"http.go",
|
||||
"stat.go",
|
||||
"task.go",
|
||||
"task_log.go",
|
||||
],
|
||||
importpath = "go-common/app/admin/main/laser/http",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/admin/main/laser/conf:go_default_library",
|
||||
"//app/admin/main/laser/model:go_default_library",
|
||||
"//app/admin/main/laser/service:go_default_library",
|
||||
"//library/ecode:go_default_library",
|
||||
"//library/log:go_default_library",
|
||||
"//library/net/http/blademaster:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/permit:go_default_library",
|
||||
"//library/xstr:go_default_library",
|
||||
"//vendor/github.com/pkg/errors:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
47
app/admin/main/laser/http/csv.go
Normal file
47
app/admin/main/laser/http/csv.go
Normal file
@ -0,0 +1,47 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// CSVContentType
|
||||
var (
|
||||
CSVContentType = []string{"application/csv"}
|
||||
_ Render = CSV{}
|
||||
)
|
||||
|
||||
// Render http response render.
|
||||
type Render interface {
|
||||
Render(http.ResponseWriter) error
|
||||
WriteContentType(w http.ResponseWriter)
|
||||
}
|
||||
|
||||
// CSV str.
|
||||
type CSV struct {
|
||||
Content []byte
|
||||
Title string
|
||||
}
|
||||
|
||||
// WriteContentType fn
|
||||
func (j CSV) WriteContentType(w http.ResponseWriter) {
|
||||
writeContentType(w, CSVContentType, j.Title)
|
||||
}
|
||||
|
||||
func writeContentType(w http.ResponseWriter, value []string, title string) {
|
||||
header := w.Header()
|
||||
if val := header["Content-Type"]; len(val) == 0 {
|
||||
header["Content-Type"] = value
|
||||
}
|
||||
header["Content-Disposition"] = append(header["Content-Disposition"], fmt.Sprintf("attachment; filename=\"%s\".csv", title))
|
||||
}
|
||||
|
||||
// Render (JSON) writes data with json ContentType.
|
||||
func (j CSV) Render(w http.ResponseWriter) (err error) {
|
||||
if _, err = w.Write(j.Content); err != nil {
|
||||
err = errors.WithStack(err)
|
||||
}
|
||||
return
|
||||
}
|
76
app/admin/main/laser/http/http.go
Normal file
76
app/admin/main/laser/http/http.go
Normal file
@ -0,0 +1,76 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"go-common/app/admin/main/laser/conf"
|
||||
"go-common/app/admin/main/laser/service"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/permit"
|
||||
)
|
||||
|
||||
var (
|
||||
svc *service.Service
|
||||
authSrc *permit.Permit
|
||||
)
|
||||
|
||||
// Init http server
|
||||
func Init(c *conf.Config) {
|
||||
svc = service.New(c)
|
||||
authSrc = permit.New(c.Auth)
|
||||
engine := bm.DefaultServer(c.BM)
|
||||
initRouter(engine)
|
||||
if err := engine.Start(); err != nil {
|
||||
log.Error("engine.Start error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func initRouter(e *bm.Engine) {
|
||||
e.Ping(ping)
|
||||
laser := e.Group("/x/admin/laser", authSrc.Verify())
|
||||
{
|
||||
task := laser.Group("/task")
|
||||
{
|
||||
task.POST("/add", addTask)
|
||||
task.GET("/list", queryTask)
|
||||
task.POST("/edit", updateTask)
|
||||
task.POST("/delete", deleteTask)
|
||||
}
|
||||
taskLog := laser.Group("/task_log")
|
||||
{
|
||||
taskLog.GET("/list", queryTaskLog)
|
||||
}
|
||||
recheck := laser.Group("/archive/stat")
|
||||
{
|
||||
recheck.GET("/panel", recheckPanel)
|
||||
recheck.GET("/user", recheckUser)
|
||||
recheck.GET("/123_recheck", recheck123)
|
||||
}
|
||||
cargo := laser.Group("/archive/cargo")
|
||||
{
|
||||
cargo.GET("/audit/csv", auditCargoCsv)
|
||||
cargo.GET("/auditors", auditorCargo)
|
||||
}
|
||||
tag := laser.Group("/archive/tag")
|
||||
{
|
||||
tag.GET("/recheck", tagRecheck)
|
||||
}
|
||||
video := laser.Group("/video/stat")
|
||||
{
|
||||
video.GET("/random_video", randomVideo)
|
||||
video.GET("/random_video/csv", csvRandomVideo)
|
||||
video.GET("/fixed_video", fixedVideo)
|
||||
video.GET("/fixed_video/csv", csvFixedVideo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ping check server ok.
|
||||
func ping(c *bm.Context) {
|
||||
if err := svc.Ping(c); err != nil {
|
||||
log.Error("laser-admin service ping error")
|
||||
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||||
}
|
||||
}
|
275
app/admin/main/laser/http/stat.go
Normal file
275
app/admin/main/laser/http/stat.go
Normal file
@ -0,0 +1,275 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/xstr"
|
||||
"net/http"
|
||||
"sort"
|
||||
"time"
|
||||
)
|
||||
|
||||
func recheckPanel(c *bm.Context) {
|
||||
v := new(struct {
|
||||
TypeIDStr string `form:"type_id"`
|
||||
StartDate int64 `form:"start_date"`
|
||||
EndDate int64 `form:"end_date"`
|
||||
UName string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
recheckViews, err := svc.ArchiveRecheck(c, typeIDS, v.UName, v.StartDate, v.EndDate)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(recheckViews, func(i, j int) bool {
|
||||
return recheckViews[i].Date > recheckViews[j].Date
|
||||
})
|
||||
c.JSON(recheckViews, nil)
|
||||
}
|
||||
|
||||
func recheckUser(c *bm.Context) {
|
||||
v := new(struct {
|
||||
TypeIDStr string `form:"type_id"`
|
||||
StartDate int64 `form:"start_date"`
|
||||
EndDate int64 `form:"end_date"`
|
||||
UName string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
recheckViews, err := svc.UserRecheck(c, typeIDS, v.UName, v.StartDate, v.EndDate)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(recheckViews, func(i, j int) bool {
|
||||
return recheckViews[i].Date > recheckViews[j].Date
|
||||
})
|
||||
c.JSON(recheckViews, nil)
|
||||
}
|
||||
|
||||
func auditCargoCsv(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
Uname string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
content, err := svc.CsvAuditCargo(c, v.StartDate, v.EndDate, v.Uname)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.Render(http.StatusOK, CSV{
|
||||
Content: content,
|
||||
Title: fmt.Sprintf("%s~%s-%s", time.Unix(v.StartDate, 0).Format("2006/01/02_15"), time.Unix(v.EndDate, 0).Format("2006/01/02_15"), v.Uname),
|
||||
})
|
||||
}
|
||||
|
||||
func auditorCargo(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
Uname string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
wrappers, _, err := svc.AuditorCargoList(c, v.StartDate, v.EndDate, v.Uname)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(wrappers, func(i, j int) bool {
|
||||
return wrappers[i].Date > wrappers[j].Date
|
||||
})
|
||||
c.JSON(wrappers, nil)
|
||||
}
|
||||
|
||||
func tagRecheck(c *bm.Context) {
|
||||
v := new(struct {
|
||||
Uname string `form:"uname"`
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
tagViews, err := svc.TagRecheck(c, v.StartDate, v.EndDate, v.Uname)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
|
||||
sort.Slice(tagViews, func(i, j int) bool {
|
||||
return tagViews[i].Date > tagViews[j].Date
|
||||
})
|
||||
c.JSON(tagViews, nil)
|
||||
}
|
||||
|
||||
func recheck123(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
TypeIDStr string `form:"type_id"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
recheckViews, err := svc.Recheck123(c, v.StartDate, v.EndDate, typeIDS)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(recheckViews, func(i, j int) bool {
|
||||
return recheckViews[i].Date > recheckViews[j].Date
|
||||
})
|
||||
c.JSON(recheckViews, nil)
|
||||
}
|
||||
|
||||
func randomVideo(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
TypeIDStr string `form:"type_id"`
|
||||
Uname string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
statViewExts, _, err := svc.RandomVideo(c, v.StartDate, v.EndDate, typeIDS, v.Uname)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(statViewExts, func(i, j int) bool {
|
||||
return statViewExts[i].Date > statViewExts[j].Date
|
||||
})
|
||||
c.JSON(statViewExts, nil)
|
||||
}
|
||||
|
||||
func fixedVideo(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
TypeIDStr string `form:"type_id"`
|
||||
Uname string `form:"uname"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
statViewExts, _, err := svc.FixedVideo(c, v.StartDate, v.EndDate, typeIDS, v.Uname)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
sort.Slice(statViewExts, func(i, j int) bool {
|
||||
return statViewExts[i].Date > statViewExts[j].Date
|
||||
})
|
||||
c.JSON(statViewExts, nil)
|
||||
}
|
||||
|
||||
func csvFixedVideo(c *bm.Context) {
|
||||
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
Uname string `form:"uname"`
|
||||
TypeIDStr string `form:"type_id"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
content, err := svc.CsvFixedVideoAudit(c, v.StartDate, v.EndDate, v.Uname, typeIDS)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.Render(http.StatusOK, CSV{
|
||||
Content: content,
|
||||
Title: fmt.Sprintf("%s_%s~%s-%s", "(定时发布)视频审核操作数据", time.Unix(v.StartDate, 0).Format("2006-01-02"), time.Unix(v.EndDate, 0).Format("2006-01-02"), v.Uname),
|
||||
})
|
||||
}
|
||||
|
||||
func csvRandomVideo(c *bm.Context) {
|
||||
v := new(struct {
|
||||
StartDate int64 `form:"stime"`
|
||||
EndDate int64 `form:"etime"`
|
||||
Uname string `form:"uname"`
|
||||
TypeIDStr string `form:"type_id"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
var typeIDS []int64
|
||||
if typeIDS, err = xstr.SplitInts(v.TypeIDStr); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
content, err := svc.CsvRandomVideoAudit(c, v.StartDate, v.EndDate, v.Uname, typeIDS)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.Render(http.StatusOK, CSV{
|
||||
Content: content,
|
||||
Title: fmt.Sprintf("%s_%s~%s-%s", "(非定时)视频审核操作数据", time.Unix(v.StartDate, 0).Format("2006-01-02"), time.Unix(v.EndDate, 0).Format("2006-01-02"), v.Uname),
|
||||
})
|
||||
}
|
179
app/admin/main/laser/http/task.go
Normal file
179
app/admin/main/laser/http/task.go
Normal file
@ -0,0 +1,179 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
|
||||
"go-common/app/admin/main/laser/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
const (
|
||||
emailRegex = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
|
||||
)
|
||||
|
||||
func addTask(c *bm.Context) {
|
||||
req := c.Request
|
||||
v := new(struct {
|
||||
MID int64 `form:"mid" validate:"required"`
|
||||
LogDate int64 `form:"log_date" validate:"required"`
|
||||
ContactEmail string `form:"contact_email" validate:"required"`
|
||||
Platform int `form:"platform" validate:"required"`
|
||||
SourceType int `form:"source_type" validate:"required"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if v.LogDate <= 0 || v.MID <= 0 || !checkEmail(v.ContactEmail) || v.Platform <= 0 || v.SourceType <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
userCookie, err := req.Cookie("username")
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
username := userCookie.Value
|
||||
|
||||
uidCookie, err := req.Cookie("uid")
|
||||
var adminID int64
|
||||
if err != nil {
|
||||
adminID = 0
|
||||
} else {
|
||||
adminID, err = strconv.ParseInt(uidCookie.Value, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
err = svc.AddTask(c, v.MID, username, adminID, v.LogDate, v.ContactEmail, v.Platform, v.SourceType)
|
||||
if err != nil {
|
||||
log.Error("svc.AddTask() error(%v)", err)
|
||||
}
|
||||
c.JSON(nil, err)
|
||||
}
|
||||
|
||||
func checkEmail(emailAddr string) (match bool) {
|
||||
if emailAddr == "" {
|
||||
return false
|
||||
}
|
||||
match, err := regexp.MatchString(emailRegex, emailAddr)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return match
|
||||
}
|
||||
|
||||
func deleteTask(c *bm.Context) {
|
||||
req := c.Request
|
||||
v := new(struct {
|
||||
TaskID int64 `form:"task_id"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
uidCookie, err := req.Cookie("uid")
|
||||
var adminID int64
|
||||
if err != nil {
|
||||
adminID = 0
|
||||
} else {
|
||||
adminID, err = strconv.ParseInt(uidCookie.Value, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
userCookie, err := req.Cookie("username")
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.Unauthorized)
|
||||
return
|
||||
}
|
||||
username := userCookie.Value
|
||||
|
||||
if err = svc.DeleteTask(c, v.TaskID, username, adminID); err != nil {
|
||||
log.Error("svc.DeleteTask() error(%v)", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func queryTask(c *bm.Context) {
|
||||
v := new(struct {
|
||||
Mid int64 `form:"mid"`
|
||||
LogDateStart int64 `form:"log_date_start"`
|
||||
LogDateEnd int64 `form:"log_date_end"`
|
||||
SourceType int `form:"source_type"`
|
||||
Platform int `form:"platform"`
|
||||
State int `form:"state"`
|
||||
SortBy string `form:"sort"`
|
||||
PageNo int `form:"page_no"`
|
||||
PageSize int `form:"page_size"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
tasks, count, err := svc.QueryTask(c, v.Mid, v.LogDateStart, v.LogDateEnd, v.SourceType, v.Platform, v.State, v.SortBy, v.PageNo, v.PageSize)
|
||||
if err != nil {
|
||||
log.Error("svc.QueryTask() error(%v)", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
pager := &model.TaskPager{
|
||||
PageSize: v.PageSize,
|
||||
PageNo: v.PageNo,
|
||||
Total: count,
|
||||
Items: tasks,
|
||||
}
|
||||
c.JSON(pager, nil)
|
||||
}
|
||||
|
||||
func updateTask(c *bm.Context) {
|
||||
req := c.Request
|
||||
v := new(struct {
|
||||
TaskID int64 `form:"task_id" validate:"required"`
|
||||
MID int64 `form:"mid" validate:"required"`
|
||||
LogDate int64 `form:"log_date" validate:"required"`
|
||||
ContactEmail string `form:"contact_email" validate:"required"`
|
||||
SourceType int `form:"source_type" validate:"required"`
|
||||
Platform int `form:"platform" validate:"required"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if v.ContactEmail != "" && !checkEmail(v.ContactEmail) {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
|
||||
uidCookie, err := req.Cookie("uid")
|
||||
var adminID int64
|
||||
if err != nil {
|
||||
adminID = 0
|
||||
} else {
|
||||
adminID, err = strconv.ParseInt(uidCookie.Value, 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
userCookie, err := req.Cookie("username")
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
username := userCookie.Value
|
||||
err = svc.UpdateTask(c, username, adminID, v.TaskID, v.MID, v.LogDate, v.ContactEmail, v.SourceType, v.Platform)
|
||||
if err != nil {
|
||||
log.Error("svc.UpdateTask() error(%v)", err)
|
||||
}
|
||||
c.JSON(nil, err)
|
||||
}
|
39
app/admin/main/laser/http/task_log.go
Normal file
39
app/admin/main/laser/http/task_log.go
Normal file
@ -0,0 +1,39 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/laser/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
"go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func queryTaskLog(c *blademaster.Context) {
|
||||
v := new(struct {
|
||||
MID int64 `form:"mid"`
|
||||
TaskID int64 `form:"task_id"`
|
||||
Platform int `form:"platform"`
|
||||
TaskState int `form:"task_state"`
|
||||
Sortby string `form:"sort"`
|
||||
PageNo int `form:"page_no"`
|
||||
PageSize int `form:"page_size"`
|
||||
})
|
||||
err := c.Bind(v)
|
||||
if err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
|
||||
logs, count, err := svc.QueryTaskLog(c, v.MID, v.TaskID, v.Platform, v.TaskState, v.Sortby, v.PageNo, v.PageSize)
|
||||
if err != nil {
|
||||
log.Error("svc.QueryTaskLog() error(%v)", err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
pager := &model.TaskLogPager{
|
||||
PageNo: v.PageNo,
|
||||
PageSize: v.PageSize,
|
||||
Items: logs,
|
||||
Total: count,
|
||||
}
|
||||
c.JSON(pager, nil)
|
||||
}
|
Reference in New Issue
Block a user