308 lines
9.3 KiB
Go
308 lines
9.3 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"strconv"
|
|
|
|
"go-common/app/admin/main/search/model"
|
|
"go-common/library/ecode"
|
|
"go-common/library/sync/errgroup"
|
|
)
|
|
|
|
// BusinessList .
|
|
func (s *Service) BusinessList(ctx context.Context, name string, pn, ps int) (list []*model.MngBusiness, total int64, err error) {
|
|
offset := (pn - 1) * ps
|
|
if list, err = s.dao.BusinessList(ctx, name, offset, ps); err != nil {
|
|
return
|
|
}
|
|
total, err = s.dao.BusinessTotal(ctx, name)
|
|
return
|
|
}
|
|
|
|
// BusinessAll .
|
|
func (s *Service) BusinessAll(ctx context.Context) (list []*model.MngBusiness, err error) {
|
|
list, err = s.dao.BusinessAll(ctx)
|
|
return
|
|
}
|
|
|
|
// BusinessInfo .
|
|
func (s *Service) BusinessInfo(ctx context.Context, id int64) (info *model.MngBusiness, err error) {
|
|
info, err = s.dao.BusinessInfo(ctx, id)
|
|
return
|
|
}
|
|
|
|
// AddBusiness .
|
|
func (s *Service) AddBusiness(ctx context.Context, b *model.MngBusiness) (id int64, err error) {
|
|
info, err := s.dao.BusinessInfoByName(ctx, b.Name)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if info != nil {
|
|
err = ecode.SearchBusinessExistErr
|
|
return
|
|
}
|
|
id, err = s.dao.AddBusiness(ctx, b)
|
|
return
|
|
}
|
|
|
|
// UpdateBusiness .
|
|
func (s *Service) UpdateBusiness(ctx context.Context, b *model.MngBusiness) (err error) {
|
|
err = s.dao.UpdateBusiness(ctx, b)
|
|
return
|
|
}
|
|
|
|
// UpdateBusinessApp .
|
|
func (s *Service) UpdateBusinessApp(ctx context.Context, business, app, incrWay string, isJob, incrOpen bool) (err error) {
|
|
info, err := s.dao.BusinessInfoByName(ctx, business)
|
|
if err != nil {
|
|
return
|
|
}
|
|
var exist bool
|
|
for k, v := range info.Apps {
|
|
if v.AppID == app {
|
|
exist = true
|
|
if !isJob {
|
|
info.Apps = append(info.Apps[:k], info.Apps[k+1:]...)
|
|
break
|
|
}
|
|
v.IncrWay = incrWay
|
|
v.IncrOpen = incrOpen
|
|
}
|
|
}
|
|
if !exist {
|
|
info.Apps = append(info.Apps, &model.MngBusinessApp{AppID: app, IncrWay: incrWay, IncrOpen: incrOpen})
|
|
}
|
|
bs, err := json.Marshal(info.Apps)
|
|
if err != nil {
|
|
return
|
|
}
|
|
info.AppsJSON = string(bs)
|
|
err = s.dao.UpdateBusiness(ctx, info)
|
|
return
|
|
}
|
|
|
|
// AssetList .
|
|
func (s *Service) AssetList(ctx context.Context, typ int, name string, pn, ps int) (list []*model.MngAsset, total int64, err error) {
|
|
offset := (pn - 1) * ps
|
|
if list, err = s.dao.AssetList(ctx, typ, name, offset, ps); err != nil {
|
|
return
|
|
}
|
|
total, err = s.dao.AssetTotal(ctx, typ, name)
|
|
return
|
|
}
|
|
|
|
// AssetAll .
|
|
func (s *Service) AssetAll(ctx context.Context) (list []*model.MngAsset, err error) {
|
|
list, err = s.dao.AssetAll(ctx)
|
|
return
|
|
}
|
|
|
|
// AssetInfo .
|
|
func (s *Service) AssetInfo(ctx context.Context, id int64) (info *model.MngAsset, err error) {
|
|
info, err = s.dao.AssetInfo(ctx, id)
|
|
return
|
|
}
|
|
|
|
// AddAsset .
|
|
func (s *Service) AddAsset(ctx context.Context, a *model.MngAsset) (id int64, err error) {
|
|
info, err := s.dao.AssetInfoByName(ctx, a.Name)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if info != nil {
|
|
err = ecode.SearchAssetExistErr
|
|
return
|
|
}
|
|
id, err = s.dao.AddAsset(ctx, a)
|
|
return
|
|
}
|
|
|
|
// UpdateAsset .
|
|
func (s *Service) UpdateAsset(ctx context.Context, a *model.MngAsset) (err error) {
|
|
if err = s.dao.UpdateAsset(ctx, a); err != nil {
|
|
return
|
|
}
|
|
if a.Type == model.MngAssetTypeDatabus {
|
|
if a.Config == "" {
|
|
return
|
|
}
|
|
v := new(model.MngAssetDatabus)
|
|
if err = json.Unmarshal([]byte(a.Config), &v); err != nil {
|
|
return
|
|
}
|
|
err = s.dao.UpdateAppAssetDatabus(ctx, a.Name, v)
|
|
return
|
|
}
|
|
if a.Type == model.MngAssetTypeTable {
|
|
if a.Config == "" {
|
|
return
|
|
}
|
|
v := new(model.MngAssetTable)
|
|
if err = json.Unmarshal([]byte(a.Config), &v); err != nil {
|
|
return
|
|
}
|
|
err = s.dao.UpdateAppAssetTable(ctx, a.Name, v)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// AppList .
|
|
func (s *Service) AppList(ctx context.Context, business string) (list []*model.MngApp, err error) {
|
|
list, err = s.dao.AppList(ctx, business)
|
|
return
|
|
}
|
|
|
|
// AppInfo .
|
|
func (s *Service) AppInfo(ctx context.Context, id int64) (info *model.MngApp, err error) {
|
|
info, err = s.dao.AppInfo(ctx, id)
|
|
return
|
|
}
|
|
|
|
// AddApp .
|
|
func (s *Service) AddApp(ctx context.Context, a *model.MngApp) (id int64, err error) {
|
|
info, err := s.dao.AppInfoByAppid(ctx, a.AppID)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if info != nil {
|
|
err = ecode.SearchAssetExistErr
|
|
return
|
|
}
|
|
id, err = s.dao.AddApp(ctx, a)
|
|
return
|
|
}
|
|
|
|
// UpdateApp .
|
|
func (s *Service) UpdateApp(ctx context.Context, a *model.MngApp) (err error) {
|
|
group := errgroup.Group{}
|
|
group.Go(func() error {
|
|
if a.TableName == "" {
|
|
a.TableFormat = ""
|
|
a.TablePrefix = ""
|
|
return nil
|
|
}
|
|
tb, e := s.dao.AssetInfoByName(ctx, a.TableName)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
if tb == nil || tb.Config == "" {
|
|
return nil
|
|
}
|
|
val := new(model.MngAssetTable)
|
|
if e := json.Unmarshal([]byte(tb.Config), val); e != nil {
|
|
return e
|
|
}
|
|
a.TablePrefix = val.TablePrefix
|
|
a.TableFormat = val.TableFormat
|
|
return nil
|
|
})
|
|
group.Go(func() error {
|
|
if a.DatabusName == "" {
|
|
a.DatabusInfo = ""
|
|
a.DatabusIndexID = ""
|
|
return nil
|
|
}
|
|
dbus, e := s.dao.AssetInfoByName(ctx, a.DatabusName)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
if dbus == nil || dbus.Config == "" {
|
|
return nil
|
|
}
|
|
val := new(model.MngAssetDatabus)
|
|
if e := json.Unmarshal([]byte(dbus.Config), val); e != nil {
|
|
return e
|
|
}
|
|
a.DatabusInfo = val.DatabusInfo
|
|
a.DatabusIndexID = val.DatabusIndexID
|
|
return nil
|
|
})
|
|
if err = group.Wait(); err != nil {
|
|
return
|
|
}
|
|
err = s.dao.UpdateApp(ctx, a)
|
|
return
|
|
}
|
|
|
|
// MngCountList .
|
|
func (s *Service) MngCountList(ctx context.Context) (list []*model.MngCount, err error) {
|
|
daily := "每日增量"
|
|
sum := "历史总量"
|
|
list = []*model.MngCount{
|
|
// 业务方
|
|
{Business: "业务方", Type: sum, Name: "业务方历史总量", Chart: "line", Param: "business=app&type=all"},
|
|
{Business: "业务方", Type: daily, Name: "业务方每日增量", Chart: "line", Param: "business=app&type=inc"},
|
|
// 视频+稿件
|
|
{Business: "视频稿件", Type: daily, Name: "archive每日增量", Chart: "line", Param: "business=archive&type=inc"},
|
|
{Business: "视频稿件", Type: daily, Name: "video每日增量", Chart: "line", Param: "business=archive_video&type=inc"},
|
|
{Business: "视频稿件", Type: sum, Name: "archive历史总量", Chart: "line", Param: "business=archive&type=all"},
|
|
{Business: "视频稿件", Type: sum, Name: "video历史总量", Chart: "line", Param: "business=archive_video&type=all"},
|
|
// 弹幕
|
|
{Business: "弹幕", Type: daily, Name: "弹幕每日增量", Chart: "line", Param: "business=dm&type=inc"},
|
|
{Business: "弹幕", Type: daily, Name: "弹幕举报每日增量", Chart: "line", Param: "business=dm_report&type=inc"},
|
|
{Business: "弹幕", Type: daily, Name: "弹幕监控每日增量", Chart: "line", Param: "business=dm_monitor&type=inc"},
|
|
{Business: "弹幕", Type: sum, Name: "弹幕历史总量", Chart: "line", Param: "business=dm&type=all"},
|
|
{Business: "弹幕", Type: sum, Name: "弹幕举报历史总量", Chart: "line", Param: "business=dm_report&type=all"},
|
|
{Business: "弹幕", Type: sum, Name: "弹幕监控历史总量", Chart: "line", Param: "business=dm_monitor&type=all"},
|
|
// 评论
|
|
{Business: "评论", Type: daily, Name: "评论每日增量", Chart: "line", Param: "business=reply&type=inc"},
|
|
// 日志
|
|
{Business: "日志", Type: "审核日志", Name: "审核日志每日查询量", Chart: "line", Param: "business=log_audit_access&type=inc"},
|
|
{Business: "日志", Type: "审核日志", Name: "审核日志昨日查询情况 - 业务维度", Chart: "pie", Param: "business=log_audit_business&type=inc"},
|
|
{Business: "日志", Type: "审核日志", Name: "审核日志昨日查询情况 - 用户维度", Chart: "pie", Param: "business=log_audit_uid&type=inc"},
|
|
{Business: "日志", Type: "用户日志", Name: "用户日志每日查询量", Chart: "line", Param: "business=log_user_action_access&type=inc"},
|
|
{Business: "日志", Type: "用户日志", Name: "用户日志昨日查询情况 - 业务维度", Chart: "pie", Param: "business=log_user_action_business&type=inc"},
|
|
{Business: "日志", Type: "用户日志", Name: "用户日志昨日查询情况 - 用户维度", Chart: "pie", Param: "business=log_user_action_uid&type=inc"},
|
|
// 用户
|
|
{Business: "用户", Type: sum, Name: "用户历史总量", Chart: "line", Param: "business=user&type=all"},
|
|
// 专栏
|
|
{Business: "专栏", Type: daily, Name: "专栏每日增量", Chart: "line", Param: "business=article&type=inc"},
|
|
{Business: "专栏", Type: sum, Name: "专栏历史总量", Chart: "line", Param: "business=article&type=all"},
|
|
}
|
|
return list, err
|
|
}
|
|
|
|
// MngCount .
|
|
func (s *Service) MngCount(ctx context.Context, c *model.MngCount) (list []*model.MngCountRes, err error) {
|
|
list, err = s.dao.MngCount(ctx, c)
|
|
return
|
|
}
|
|
|
|
// MngCount .
|
|
func (s *Service) MngPercent(ctx context.Context, c *model.MngCount) (list []*model.MngPercentRes, err error) {
|
|
list, err = s.dao.MngPercent(ctx, c)
|
|
switch c.Business {
|
|
case "log_audit_business":
|
|
for k, v := range list {
|
|
if id, e := strconv.Atoi(v.Name); e == nil {
|
|
if t, ok := s.dao.GetLogInfo("log_audit", id); ok {
|
|
list[k].Name = t.Name
|
|
}
|
|
}
|
|
}
|
|
case "log_user_action_business":
|
|
for k, v := range list {
|
|
if id, e := strconv.Atoi(v.Name); e == nil {
|
|
if t, ok := s.dao.GetLogInfo("log_user_action", id); ok {
|
|
list[k].Name = t.Name
|
|
}
|
|
}
|
|
}
|
|
case "log_audit_uid", "log_user_action_uid":
|
|
uid := []string{}
|
|
for _, v := range list {
|
|
uid = append(uid, v.Name)
|
|
}
|
|
if data, err := s.dao.Unames(ctx, uid); err == nil {
|
|
for k, v := range list {
|
|
if t, ok := data.Data[v.Name]; ok {
|
|
list[k].Name = t
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|