189 lines
5.3 KiB
Go
189 lines
5.3 KiB
Go
package kafka
|
||
|
||
import (
|
||
"context"
|
||
"encoding/json"
|
||
"finclip-app-manager/infrastructure/client/httpcall"
|
||
"finclip-app-manager/infrastructure/config"
|
||
"finclip-app-manager/infrastructure/utils"
|
||
"fmt"
|
||
"github.com/bitly/go-simplejson"
|
||
"github.com/gin-gonic/gin"
|
||
uuid "github.com/satori/go.uuid"
|
||
"io/ioutil"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
var (
|
||
hCaller = httpcall.NewClient()
|
||
)
|
||
|
||
//应用管理日志
|
||
const (
|
||
BIND_ADD_LOG = "新增合作应用(%s)" //新增合作应用
|
||
BIND_UP_LOG = "修改合作应用名称(由%s修改为%s)" //修改
|
||
BIND_STOP_COOP_LOG = "停止合作(%s)" //停止合作
|
||
BIND_RECOVE_COOP_LOG = "恢复合作(%s)" //恢复合作
|
||
BIND_ASS_APP_LOG = "合作应用 %s 新增关联小程序" //关联小程序
|
||
BIND_CANCEL_ASS_APP_LOG = "合作应用 %s 取消关联小程序" //取消关联
|
||
BIND_AUDIT_APPLY_LOG = "合作应用 %s 申请关联小程序" //关联小程序
|
||
)
|
||
|
||
//小程序管理日志
|
||
const (
|
||
APP_ADD_LOG = "创建小程序(%s-%s)" //创建小程序
|
||
APP_SUB_REVIEW_LOG = "提交小程序审核(%s-%s)" //提交审核
|
||
APP_CANCEL_REVIEW_LOG = "撤销小程序审核(%s-%s)" //撤销审核
|
||
APP_PUB_LOG = "上架小程序(%s-%s,开发版本号%d)" //上架
|
||
APP_DOWN_LOG = "下架小程序(%s-%s,开发版本号%d)" //下架
|
||
APP_EDIT_INFO_LOG = "修改小程序详情信息成功(%s-%s)" //基本信息-编辑
|
||
APP_EDIT_TEST_DIREC_LOG = "修改小程序测试说明成功(%s-%s)" //测试说明-编辑
|
||
)
|
||
|
||
func GenContent(s string, v ...interface{}) string {
|
||
return fmt.Sprintf(s, v...)
|
||
}
|
||
|
||
//关联/取消关连小程序
|
||
func GenContentAssApp(s string, bindName string, m map[string]string) string {
|
||
str := fmt.Sprintf(s, bindName)
|
||
mLen := len(m)
|
||
i := 1
|
||
for k, v := range m {
|
||
if i != mLen {
|
||
i += 1
|
||
str += fmt.Sprintf("%s-%s、", v, k)
|
||
} else {
|
||
str += fmt.Sprintf("%s-%s", v, k)
|
||
}
|
||
}
|
||
return str
|
||
}
|
||
|
||
type OperateData struct {
|
||
Id string `json:"id"`
|
||
CreateTime int64 `json:"createTime"`
|
||
Operator string `json:"operator"`
|
||
IP string `json:"IP"`
|
||
Content string `json:"content"`
|
||
Url string `json:"url"`
|
||
OrganId string `json:"organId"`
|
||
Header interface{} `json:"header"`
|
||
Body interface{} `json:"body"`
|
||
Query interface{} `json:"query"`
|
||
Extra interface{} `json:"extra"`
|
||
}
|
||
|
||
//操作日志
|
||
func GenOperateData(ctx context.Context, c *gin.Context, organId, content string, extra interface{}, oper string) error {
|
||
if producer == nil {
|
||
return nil
|
||
}
|
||
var data OperateData
|
||
data.Id = uuid.NewV4().String()
|
||
data.CreateTime = time.Now().UnixNano() / 1000000
|
||
data.Operator = oper
|
||
if data.Operator == "" {
|
||
account, err := utils.DesEcbDecrypt(c.GetHeader("user-account"))
|
||
if err != nil || account == "" {
|
||
data.Operator = c.GetHeader("user-account")
|
||
} else {
|
||
data.Operator = account
|
||
}
|
||
}
|
||
data.IP = c.Request.Header.Get("X-Real-Ip")
|
||
|
||
if data.IP == "" {
|
||
ip := strings.Split(c.Request.RemoteAddr, ":")
|
||
fmt.Println("ip", ip)
|
||
if len(ip) != 0 {
|
||
data.IP = ip[0]
|
||
}
|
||
}
|
||
data.Content = content
|
||
data.Url = c.Request.RequestURI
|
||
data.OrganId = organId
|
||
data.Header = c.Request.Header
|
||
body, _ := ioutil.ReadAll(c.Request.Body)
|
||
data.Body, _ = simplejson.NewJson(body)
|
||
data.Extra = extra
|
||
fmt.Println("data", data)
|
||
|
||
jsonBytes, _ := json.Marshal(data)
|
||
return sendMsg(ctx, config.GetConfig().KafkaDataLogTopic, string(jsonBytes))
|
||
|
||
}
|
||
|
||
//操作日志
|
||
type GenOperateDataV2Req struct {
|
||
OrganId string
|
||
Content string
|
||
Extra interface{}
|
||
Oper string
|
||
AccountId string
|
||
IsDev bool
|
||
}
|
||
|
||
func GenOperateDataV2(ctx context.Context, c *gin.Context, req GenOperateDataV2Req) error {
|
||
if producer == nil {
|
||
return nil
|
||
}
|
||
var data OperateData
|
||
data.Id = uuid.NewV4().String()
|
||
data.CreateTime = time.Now().UnixNano() / 1000000
|
||
if req.AccountId != "" {
|
||
account, err := getAccountById(ctx, req.AccountId, req.IsDev)
|
||
if err == nil {
|
||
data.Operator = account
|
||
}
|
||
}
|
||
if data.Operator == "" {
|
||
data.Operator = req.Oper
|
||
if data.Operator == "" {
|
||
account, err := utils.DesEcbDecrypt(c.GetHeader("user-account"))
|
||
if err != nil || account == "" {
|
||
data.Operator = c.GetHeader("user-account")
|
||
} else {
|
||
data.Operator = account
|
||
}
|
||
//data.Operator = c.GetHeader("user-account")
|
||
}
|
||
}
|
||
//data.IP = getAddrIp(c.Request.Header.Get("X-Forwarded-For"))
|
||
data.IP = c.Request.Header.Get("X-Real-Ip")
|
||
if data.IP == "" {
|
||
ip := strings.Split(c.Request.RemoteAddr, ":")
|
||
if len(ip) != 0 {
|
||
data.IP = ip[0]
|
||
}
|
||
}
|
||
data.Content = req.Content
|
||
data.Url = c.Request.RequestURI
|
||
data.OrganId = req.OrganId
|
||
data.Header = c.Request.Header
|
||
body, _ := ioutil.ReadAll(c.Request.Body)
|
||
data.Body, _ = simplejson.NewJson(body)
|
||
data.Extra = req.Extra
|
||
|
||
jsonBytes, _ := json.Marshal(data)
|
||
|
||
//return sendMsg("mop_operation_log", string(jsonBytes))
|
||
return sendMsg(ctx, config.GetConfig().KafkaDataLogTopic, string(jsonBytes))
|
||
|
||
}
|
||
|
||
func getAccountById(ctx context.Context, id string, isDev bool) (string, error) {
|
||
if isDev {
|
||
accountInfo, err := hCaller.GetAccountInfo(ctx, id)
|
||
if accountInfo != nil {
|
||
return accountInfo.Account, err
|
||
}
|
||
}
|
||
accountInfo, err := hCaller.GetAdminAccountInfo(ctx, id)
|
||
if accountInfo == nil {
|
||
return "", err
|
||
}
|
||
return accountInfo.Account, err
|
||
}
|