Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"business.go",
"department.go",
"http.go",
"journal.go",
"rank.go",
"reason.go",
"tag.go",
"user.go",
],
importpath = "go-common/app/admin/main/manager/server/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/manager/conf:go_default_library",
"//app/admin/main/manager/model:go_default_library",
"//app/admin/main/manager/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/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/rpc/warden:go_default_library",
"//library/xstr: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"],
)

View File

@@ -0,0 +1,235 @@
package http
import (
"strconv"
"go-common/app/admin/main/manager/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// addBusiness .
func addBusiness(c *bm.Context) {
b := &model.Business{}
if err := c.Bind(b); err != nil {
return
}
c.JSON(nil, mngSvc.AddBusiness(c, b))
}
// updateBusiness .
func updateBusiness(c *bm.Context) {
b := &model.Business{}
if err := c.Bind(b); err != nil {
return
}
if b.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateBusiness(c, b))
}
// addRole .
func addRole(c *bm.Context) {
br := &model.BusinessRole{}
if err := c.Bind(br); err != nil {
return
}
c.JSON(nil, mngSvc.AddRole(c, br))
}
// updateRole .
func updateRole(c *bm.Context) {
br := &model.BusinessRole{}
if err := c.Bind(br); err != nil {
return
}
if br.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateRole(c, br))
}
// addUser .
func addUser(c *bm.Context) {
res := map[string]interface{}{}
bur := &model.BusinessUserRole{}
if err := c.Bind(bur); err != nil {
return
}
if cuid, exists := c.Get("uid"); exists {
bur.CUID = cuid.(int64)
}
if err := mngSvc.AddUser(c, bur); err != nil {
if err == ecode.ManagerUIDNOTExist {
res["message"] = "这个uid是不存在的, 请你不要乱来哦!"
c.JSONMap(res, ecode.ManagerUIDNOTExist)
return
}
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// updateUser .
func updateUser(c *bm.Context) {
bur := &model.BusinessUserRole{}
if err := c.Bind(bur); err != nil {
return
}
if bur.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateUser(c, bur))
}
// stateUpdate .
func updateState(c *bm.Context) {
su := &model.StateUpdate{}
res := map[string]interface{}{}
if err := c.Bind(su); err != nil {
return
}
if err := mngSvc.UpdateState(c, su); err != nil {
if err == ecode.ManagerFlowForbidden {
res["message"] = "business flow is forbidden"
c.JSONMap(res, ecode.ManagerFlowForbidden)
return
}
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// businessList .
func businessList(c *bm.Context) {
bp := &model.BusinessListParams{}
if err := c.Bind(bp); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
bp.UID = uid.(int64)
}
c.JSON(mngSvc.BusinessList(c, bp))
}
// flowList .
func flowList(c *bm.Context) {
bp := &model.BusinessListParams{}
if err := c.Bind(bp); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
bp.UID = uid.(int64)
}
c.JSON(mngSvc.FlowList(c, bp))
}
// userList .
func userList(c *bm.Context) {
isAdmin := false
u := &model.UserListParams{}
if err := c.Bind(u); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
isAdmin = mngSvc.IsAdmin(c, u.BID, uid.(int64))
}
data, total, err := mngSvc.UserList(c, u)
if err != nil {
c.JSON(nil, err)
return
}
page := map[string]int64{
"num": u.PN,
"size": u.PS,
"total": total,
}
c.JSON(map[string]interface{}{
"page": page,
"data": data,
"isAdmin": isAdmin,
}, err)
}
// roleList .
func roleList(c *bm.Context) {
br := &model.BusinessRole{}
if err := c.Bind(br); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
br.UID = uid.(int64)
}
c.JSON(mngSvc.RoleList(c, br))
}
// deleteUser .
func deleteUser(c *bm.Context) {
bur := &model.BusinessUserRole{}
if err := c.Bind(bur); err != nil {
return
}
if bur.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.DeleteUser(c, bur))
}
// userRole .
func userRole(c *bm.Context) {
brl := &model.BusinessUserRoleList{}
if err := c.Bind(brl); err != nil {
return
}
if brl.BID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if brl.UID <= 0 {
if uid, exists := c.Get("uid"); exists {
uid = uid.(int64)
}
}
c.JSON(mngSvc.UserRole(c, brl))
}
// userRoles .
func userRoles(c *bm.Context) {
uid, _ := strconv.ParseInt(c.Request.Form.Get("uid"), 10, 64)
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.UserRoles(c, uid))
}
// userRoles .
func stateUp(c *bm.Context) {
p := &model.UserStateUp{}
if err := c.Bind(p); err != nil {
return
}
c.JSON(nil, mngSvc.StateUp(c, p))
}
// allRoles .
func allRoles(c *bm.Context) {
pid, _ := strconv.ParseInt(c.Request.Form.Get("pid"), 10, 64)
if pid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
uid, _ := strconv.ParseInt(c.Request.Form.Get("uid"), 10, 64)
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.AllRoles(c, pid, uid))
}

View File

@@ -0,0 +1,41 @@
package http
import (
"strconv"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// departments .
func departments(c *bm.Context) {
c.JSON(mngSvc.Departments(c))
}
// roles .
func roles(c *bm.Context) {
c.JSON(mngSvc.Roles(c))
}
// userByDepartment .
func usersByDepartment(c *bm.Context) {
ID, _ := strconv.ParseInt(c.Request.Form.Get("id"), 10, 64)
if ID <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("ID unnarmal (%d)", ID)
return
}
c.JSON(mngSvc.UsersByDepartment(c, ID))
}
// userByRole .
func usersByRole(c *bm.Context) {
ID, _ := strconv.ParseInt(c.Request.Form.Get("id"), 10, 64)
if ID <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("ID unnarmal (%d)", ID)
return
}
c.JSON(mngSvc.UsersByRole(c, ID))
}

View File

@@ -0,0 +1,147 @@
package http
import (
"net/http"
"go-common/app/admin/main/manager/conf"
"go-common/app/admin/main/manager/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
"go-common/library/net/http/blademaster/middleware/verify"
"go-common/library/net/rpc/warden"
)
var (
mngSvc *service.Service
vfySvc *verify.Verify
permitSvc *permit.Permit
)
// Init init http sever instance.
func Init(c *conf.Config, s *service.Service) {
mngSvc = s
vfySvc = verify.New(nil)
wardenConf := &warden.ClientConfig{
NonBlock: true,
}
permitSvc = permit.New2(wardenConf)
// init inner router
engine := bm.DefaultServer(c.HTTPServer)
innerRouter(engine)
// init inner server
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
func innerRouter(e *bm.Engine) {
e.Ping(ping)
g := e.Group("/x/admin/manager")
{
g.GET("/auth", permitSvc.Verify2(), authUser)
g.GET("/heartbeat", permitSvc.Verify2(), heartbeat)
g.GET("/logout", logout)
g.GET("/permission", vfySvc.Verify, permissions)
log := g.Group("/log", permitSvc.Permit2(""))
{
log.GET("/audit", searchLogAudit)
log.GET("/action", searchLogAction)
}
internal := g.Group("/internal", vfySvc.Verify)
{
internal.GET("/user/role", userRole)
internal.GET("/business/role", roleList)
internal.GET("/tag/list", tagList)
internal.GET("/control/list", tagControl)
internal.GET("/user/roles", userRoles)
internal.GET("/user/state/up", stateUp)
internal.GET("/user/list", userList)
internal.GET("/roles", allRoles)
internal.POST("/role/add", addRole)
}
gusers := g.Group("/users", vfySvc.Verify)
{
gusers.GET("/department/all", departments)
gusers.GET("/role/all", roles)
gusers.GET("/department/relation", usersByDepartment)
gusers.GET("/role/relation", usersByRole)
gusers.GET("", users)
gusers.GET("/total", usersTotal)
gusers.GET("/unames", usersNames)
gusers.GET("/uids", userIds)
gusers.GET("/udepts", usersDepts)
}
grank := g.Group("/rank", permitSvc.Verify2())
{
grank.GET("/group/info", rankGroup)
grank.GET("/group/list", rankGroups)
grank.POST("/group/add", addRankGroup)
grank.POST("/group/update", updateRankGroup)
grank.POST("/group/del", delRankGroup)
grank.POST("/user/add", addRankUser)
grank.GET("/user/list", rankUsers)
grank.POST("/user/save", saveRankUser)
grank.POST("/user/del", delRankUser)
}
tag := g.Group("/tag", permitSvc.Permit2(""))
{
tag.POST("/type/add", addType)
tag.POST("/type/update", updateType)
tag.POST("/type/delete", deleteType)
tag.POST("/add", addTag)
tag.POST("/update", updateTag)
tag.POST("/batch/state/update", batchUpdateState)
tag.POST("/control/add", addControl)
tag.POST("/control/update", updateControl)
tag.POST("/attr/update", attrUpdate)
tag.GET("/attr/list", attrList)
tag.GET("/list", tagList)
tag.GET("/type/list", typeList)
tag.GET("/control", tagControl)
}
reason := g.Group("/reason", permitSvc.Permit2(""))
{
reason.GET("/catesecext/list", cateSecExtList)
reason.POST("/catesecext/add", addCateSecExt)
reason.POST("/catesecext/update", updateCateSecExt)
reason.POST("/catesecext/ban", banCateSecExt)
reason.GET("/association/list", associationList)
reason.POST("/association/add", addAssociation)
reason.POST("/association/update", updateAssociation)
reason.POST("/association/ban", banAssociation)
reason.GET("/list", reasonList)
reason.POST("/add", addReason)
reason.POST("/update", updateReason)
reason.POST("/batch/state/update", batchUpdateReasonState)
reason.GET("/dropdown/list", dropDownList)
reason.GET("/business/attr", businessAttr)
}
business := g.Group("/business", permitSvc.Permit2(""))
{
business.POST("/add", addBusiness)
business.POST("/update", updateBusiness)
business.POST("/role/add", addRole)
business.POST("/role/update", updateRole)
business.POST("/user/add", addUser)
business.POST("/user/update", updateUser)
business.POST("/state/update", updateState)
business.POST("/user/delete", deleteUser)
business.GET("/list", businessList)
business.GET("/flow/list", flowList)
business.GET("/user/list", userList)
business.GET("/role/list", roleList)
business.GET("/user/role", userRole)
}
}
}
// ping check server ok.
func ping(c *bm.Context) {
var err error
if err = mngSvc.Ping(c); err != nil {
log.Error("service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@@ -0,0 +1,39 @@
package http
import (
"fmt"
bm "go-common/library/net/http/blademaster"
)
// searchLogAudit .
func searchLogAudit(c *bm.Context) {
var (
err error
result []byte
)
if result, err = mngSvc.SearchLogAudit(c); err != nil {
c.Bytes(-500, "application/csv", nil)
return
}
c.Writer.Header().Set("Content-Type", "application/csv")
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.csv", "Authority_Record"))
c.Writer.Write([]byte("\xEF\xBB\xBF"))
c.Writer.Write(result)
}
// searchLogAction .
func searchLogAction(c *bm.Context) {
var (
err error
result []byte
)
if result, err = mngSvc.SearchLogAction(c); err != nil {
c.Bytes(-500, "application/csv", nil)
return
}
c.Writer.Header().Set("Content-Type", "application/csv")
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.csv", "Authority_Record"))
c.Writer.Write([]byte("\xEF\xBB\xBF"))
c.Writer.Write(result)
}

View File

@@ -0,0 +1,172 @@
package http
import (
"encoding/json"
"strconv"
"go-common/app/admin/main/manager/conf"
"go-common/app/admin/main/manager/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
func rankGroups(c *bm.Context) {
form := c.Request.Form
pn, _ := strconv.Atoi(form.Get("pn"))
if pn < 1 {
pn = 1
}
ps, _ := strconv.Atoi(form.Get("ps"))
if ps < 1 || ps > conf.Conf.Cfg.RankGroupMaxPs {
ps = conf.Conf.Cfg.RankGroupMaxPs
}
groups, total, err := mngSvc.RankGroups(c, pn, ps)
if err != nil {
c.JSON(nil, err)
return
}
page := map[string]int{
"page": pn,
"pagesize": ps,
"total": total,
}
c.JSONMap(map[string]interface{}{
"pager": page,
"data": groups,
}, err)
}
func rankGroup(c *bm.Context) {
form := c.Request.Form
gid, _ := strconv.ParseInt(form.Get("id"), 10, 64)
if gid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("id unnarmal (%d)", gid)
return
}
c.JSON(mngSvc.RankGroup(c, gid))
}
func addRankGroup(c *bm.Context) {
form := c.Request.Form
name := form.Get("name")
if name == "" {
c.JSON(nil, ecode.RequestErr)
log.Error("name is empty")
return
}
desc := form.Get("desc")
auths, _ := xstr.SplitInts(form.Get("auths"))
g := &model.RankGroup{Name: name, Desc: desc}
c.JSON(mngSvc.AddRankGroup(c, g, auths))
}
func updateRankGroup(c *bm.Context) {
form := c.Request.Form
gid, _ := strconv.ParseInt(form.Get("id"), 10, 64)
if gid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("id unnarmal (%d)", gid)
return
}
name := form.Get("name")
if name == "" {
c.JSON(nil, ecode.RequestErr)
log.Error("name is empty")
return
}
desc := form.Get("desc")
auths, _ := xstr.SplitInts(form.Get("auths"))
g := &model.RankGroup{ID: gid, Name: name, Desc: desc}
c.JSON(nil, mngSvc.UpdateRankGroup(c, g, auths))
}
func delRankGroup(c *bm.Context) {
form := c.Request.Form
gid, _ := strconv.ParseInt(form.Get("id"), 10, 64)
if gid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("id unnarmal (%d)", gid)
return
}
c.JSON(nil, mngSvc.DelRankGroup(c, gid))
}
func addRankUser(c *bm.Context) {
form := c.Request.Form
uid, _ := strconv.ParseInt(form.Get("uid"), 10, 64)
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("uid unnarmal (%d)", uid)
return
}
c.JSON(nil, mngSvc.AddRankUser(c, uid))
}
func rankUsers(c *bm.Context) {
form := c.Request.Form
pn, _ := strconv.Atoi(form.Get("pn"))
if pn < 1 {
pn = 1
}
ps, _ := strconv.Atoi(form.Get("ps"))
if ps < 1 || ps > conf.Conf.Cfg.RankGroupMaxPs {
ps = conf.Conf.Cfg.RankGroupMaxPs
}
un := form.Get("username")
users, total, err := mngSvc.RankUsers(c, pn, ps, un)
if err != nil {
c.JSON(nil, err)
return
}
page := map[string]int{
"page": pn,
"pagesize": ps,
"total": total,
}
c.JSONMap(map[string]interface{}{
"pager": page,
"data": users,
}, err)
}
func saveRankUser(c *bm.Context) {
form := c.Request.Form
uid, _ := strconv.ParseInt(form.Get("uid"), 10, 64)
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("uid unnormal (%d)", uid)
return
}
ranks := form.Get("ranks")
if ranks == "" {
c.JSON(nil, ecode.RequestErr)
log.Error("ranks is empty")
return
}
rs := make(map[string]int)
if err := json.Unmarshal([]byte(ranks), &rs); err != nil {
c.JSON(nil, ecode.RequestErr)
log.Error("ranks unnormal (%s) error(%v)", ranks, err)
return
}
rMap := make(map[int64]int)
for g, r := range rs {
gid, _ := strconv.ParseInt(g, 10, 64)
rMap[gid] = r
}
c.JSON(nil, mngSvc.SaveRankUser(c, uid, rMap))
}
func delRankUser(c *bm.Context) {
form := c.Request.Form
uid, _ := strconv.ParseInt(form.Get("uid"), 10, 64)
if uid <= 0 {
c.JSON(nil, ecode.RequestErr)
log.Error("uid unnormal (%d)", uid)
return
}
c.JSON(nil, mngSvc.DelRankUser(c, uid))
}

View File

@@ -0,0 +1,182 @@
package http
import (
"go-common/app/admin/main/manager/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// cateSecExtList .
func cateSecExtList(c *bm.Context) {
arg := new(model.CateSecExt)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(mngSvc.CateSecExtList(c, arg))
}
// AssociationList .
func associationList(c *bm.Context) {
// Display all record
arg := new(model.Association)
if err := c.Bind(arg); err != nil {
return
}
if arg.BusinessID < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.AssociationList(c, arg))
}
// addCateSecExt .
func addCateSecExt(c *bm.Context) {
arg := new(model.CateSecExt)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(nil, mngSvc.AddCateSecExt(c, arg))
}
// updateCateSecExt .
func updateCateSecExt(c *bm.Context) {
arg := new(model.CateSecExt)
if err := c.Bind(arg); err != nil {
return
}
if arg.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateCateSecExt(c, arg))
}
// banCateSecExt .
func banCateSecExt(c *bm.Context) {
arg := new(model.CateSecExt)
if err := c.Bind(arg); err != nil {
return
}
if arg.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.BanCateSecExt(c, arg))
}
// addAssociation .
func addAssociation(c *bm.Context) {
arg := new(model.Association)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(nil, mngSvc.AddAssociation(c, arg))
}
// updateAssociation .
func updateAssociation(c *bm.Context) {
arg := new(model.Association)
if err := c.Bind(arg); err != nil {
return
}
if arg.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateAssociation(c, arg))
}
// banAssocaition .
func banAssociation(c *bm.Context) {
arg := new(model.Association)
if err := c.Bind(arg); err != nil {
return
}
if arg.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.BanAssociation(c, arg))
}
// addReason .
func addReason(c *bm.Context) {
arg := new(model.Reason)
if err := c.Bind(arg); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
arg.UID = uid.(int64)
}
c.JSON(nil, mngSvc.AddReason(c, arg))
}
// updateReason .
func updateReason(c *bm.Context) {
arg := new(model.Reason)
if err := c.Bind(arg); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
arg.UID = uid.(int64)
}
if arg.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateReason(c, arg))
}
// reasonList .
func reasonList(c *bm.Context) {
arg := new(model.SearchReasonParams)
if err := c.Bind(arg); err != nil {
return
}
data, total, err := mngSvc.ReasonList(c, arg)
if err != nil {
c.JSON(nil, err)
return
}
page := map[string]int64{
"num": arg.PN,
"size": arg.PS,
"total": total,
}
c.JSON(map[string]interface{}{
"page": page,
"data": data,
}, err)
}
// batchUpdateReasonState .
func batchUpdateReasonState(c *bm.Context) {
arg := new(model.BatchUpdateReasonState)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(nil, mngSvc.BatchUpdateReasonState(c, arg))
}
// dropList .
func dropDownList(c *bm.Context) {
arg := new(model.Association)
if err := c.Bind(arg); err != nil {
return
}
if arg.BusinessID < 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.DropDownList(c, arg))
}
// businessAttr .
func businessAttr(c *bm.Context) {
arg := &model.BusinessAttr{}
if err := c.Bind(arg); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.BusinessAttr(c, arg))
}

View File

@@ -0,0 +1,172 @@
package http
import (
"go-common/app/admin/main/manager/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// addType .
func addType(c *bm.Context) {
tt := &model.TagType{}
if err := c.Bind(tt); err != nil {
return
}
c.JSON(nil, mngSvc.AddType(c, tt))
}
// updateType .
func updateType(c *bm.Context) {
tt := &model.TagType{}
if err := c.Bind(tt); err != nil {
return
}
c.JSON(nil, mngSvc.UpdateType(c, tt))
}
// deleteType .
func deleteType(c *bm.Context) {
td := &model.TagTypeDel{}
res := map[string]interface{}{}
if err := c.Bind(td); err != nil {
return
}
if td.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
if err := mngSvc.DeleteType(c, td); err != nil {
if err == ecode.ManagerTagTypeDelErr {
res["message"] = "这个类型下可是关联了Tag的哦你真的考虑清楚了吗???"
c.JSONMap(res, ecode.ManagerTagTypeDelErr)
return
}
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
// addTag .
func addTag(c *bm.Context) {
t := &model.Tag{}
if err := c.Bind(t); err != nil {
return
}
if uid, exists := c.Get("uid"); exists {
t.UID = uid.(int64)
}
c.JSON(nil, mngSvc.AddTag(c, t))
}
// updateTag .
func updateTag(c *bm.Context) {
t := &model.Tag{}
if err := c.Bind(t); err != nil {
return
}
if t.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateTag(c, t))
}
// batchUpdateState .
func batchUpdateState(c *bm.Context) {
b := &model.BatchUpdateState{}
if err := c.Bind(b); err != nil {
return
}
c.JSON(nil, mngSvc.BatchUpdateState(c, b))
}
// tagList .
func tagList(c *bm.Context) {
t := &model.SearchTagParams{}
if err := c.Bind(t); err != nil {
return
}
data, total, err := mngSvc.TagList(c, t)
if err != nil {
c.JSON(nil, err)
return
}
page := map[string]int64{
"num": t.PN,
"size": t.PS,
"total": total,
}
c.JSON(map[string]interface{}{
"page": page,
"data": data,
}, err)
}
// typeList .
func typeList(c *bm.Context) {
tl := &model.TagTypeList{}
if err := c.Bind(tl); err != nil {
return
}
if tl.BID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.TypeList(c, tl))
}
// attrList .
func attrList(c *bm.Context) {
tba := &model.TagBusinessAttr{}
if err := c.Bind(tba); err != nil {
return
}
if tba.Bid <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.AttrList(c, tba))
}
// attrUpdate .
func attrUpdate(c *bm.Context) {
tba := &model.TagBusinessAttr{}
if err := c.Bind(tba); err != nil {
return
}
c.JSON(nil, mngSvc.AttrUpdate(c, tba))
}
// addControl .
func addControl(c *bm.Context) {
tc := &model.TagControl{}
if err := c.Bind(tc); err != nil {
return
}
c.JSON(nil, mngSvc.AddControl(c, tc))
}
// updateControl .
func updateControl(c *bm.Context) {
tc := &model.TagControl{}
if err := c.Bind(tc); err != nil {
return
}
if tc.ID <= 0 {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(nil, mngSvc.UpdateControl(c, tc))
}
// tagControl .
func tagControl(c *bm.Context) {
tc := &model.TagControlParam{}
if err := c.Bind(tc); err != nil {
return
}
c.JSON(mngSvc.TagControl(c, tc))
}

View File

@@ -0,0 +1,142 @@
package http
import (
"net/http"
"strconv"
"strings"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/xstr"
)
const _logout = "http://dashboard-mng.bilibili.co/logout?caller=manager-admin"
func authUser(c *bm.Context) {
var (
username string
)
if un, ok := c.Get("username"); ok {
username = un.(string)
} else {
c.JSON(nil, ecode.Unauthorized)
return
}
c.JSON(mngSvc.Auth(c, username))
}
func logout(c *bm.Context) {
// purge mid cache
c.Redirect(http.StatusFound, _logout)
}
func permissions(c *bm.Context) {
var username string
if username = c.Request.Form.Get("username"); username == "" {
c.JSON(nil, ecode.RequestErr)
return
}
c.JSON(mngSvc.Permissions(c, username))
}
func users(c *bm.Context) {
var (
err error
pn, ps int
params = c.Request.Form
pnStr = params.Get("pn")
psStr = params.Get("ps")
)
if pn, err = strconv.Atoi(pnStr); err != nil || pn <= 0 {
pn = 1
}
if ps, err = strconv.Atoi(psStr); err != nil || ps <= 0 {
ps = 20
}
c.JSON(mngSvc.Users(c, pn, ps))
}
func usersTotal(c *bm.Context) {
var (
err error
total int64
)
if total, err = mngSvc.UsersTotal(c); err != nil {
log.Error("mngSvc.UsersTotal error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(struct {
Total int64 `json:"total"`
}{total}, nil)
}
func heartbeat(c *bm.Context) {
un, ok := c.Get("username")
if !ok {
log.Error("username not found in context")
return
}
c.JSON(nil, mngSvc.Heartbeat(c, un.(string)))
}
// batch check unames
func usersNames(c *bm.Context) {
var (
err error
params = c.Request.Form
uids string
uidsV []int64
items map[int64]string
)
if uids = params.Get("uids"); uids == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if uidsV, err = xstr.SplitInts(uids); err != nil {
log.Error("mngSvc.Unames(%s) error(%v)", uids, err)
c.JSON(nil, err)
return
}
items = mngSvc.Unames(c, uidsV)
c.JSON(items, nil)
}
// batch check users' departments
func usersDepts(c *bm.Context) {
var (
err error
params = c.Request.Form
uids string
uidsV []int64
items map[int64]string
)
if uids = params.Get("uids"); uids == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if uidsV, err = xstr.SplitInts(uids); err != nil {
log.Error("mngSvc.Udepts(%s) error(%v)", uids, err)
c.JSON(nil, err)
return
}
items = mngSvc.Udepts(c, uidsV)
c.JSON(items, nil)
}
func userIds(c *bm.Context) {
var (
params = c.Request.Form
unames string
unamesV []string
items map[string]int64
)
if unames = params.Get("unames"); unames == "" {
c.JSON(nil, ecode.RequestErr)
return
}
unamesV = strings.Split(unames, ",")
items = mngSvc.UIds(c, unamesV)
c.JSON(items, nil)
}