493 lines
12 KiB
Go
493 lines
12 KiB
Go
package http
|
|
|
|
import (
|
|
"encoding/json"
|
|
"go-common/app/admin/main/apm/model/ecode"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
bm "go-common/library/net/http/blademaster"
|
|
)
|
|
|
|
func ecodeList(c *bm.Context) {
|
|
v := new(struct {
|
|
Code string `form:"code"`
|
|
Pn int `form:"pn" default:"1"`
|
|
Ps int `form:"ps" default:"20"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
var (
|
|
cs []*codes.Codes
|
|
count int
|
|
lk = "%" + v.Code + "%"
|
|
)
|
|
if v.Code != "" {
|
|
err = apmSvc.DB.Where("CAST(code AS CHAR) LIKE ? OR message LIKE ?", lk, lk).Offset((v.Pn - 1) * v.Ps).Limit(v.Ps).Find(&cs).Error
|
|
} else {
|
|
err = apmSvc.DB.Offset((v.Pn - 1) * v.Ps).Limit(v.Ps).Find(&cs).Error
|
|
}
|
|
if err != nil {
|
|
log.Error("apmSvc.EcodeList error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
if v.Code != "" {
|
|
err = apmSvc.DB.Where("CAST(code AS CHAR) LIKE ? OR message LIKE ?", lk, lk).Model(&codes.Codes{}).Count(&count).Error
|
|
} else {
|
|
err = apmSvc.DB.Model(&codes.Codes{}).Count(&count).Error
|
|
}
|
|
if err != nil {
|
|
log.Error("apmSvc.EcodeList count error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
data := &Paper{
|
|
Pn: v.Pn,
|
|
Ps: v.Ps,
|
|
Items: cs,
|
|
Total: count,
|
|
}
|
|
c.JSON(data, nil)
|
|
}
|
|
|
|
func ecodeAdd(c *bm.Context) {
|
|
v := new(struct {
|
|
Code int32 `form:"code" validate:"required"`
|
|
Message string `form:"message" validate:"required"`
|
|
HantMessage string `form:"hant_message"`
|
|
Level int8 `form:"level" default:"2"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
cnt := 0
|
|
if err = apmSvc.DB.Model(&codes.Codes{}).Where("code=?", v.Code).Count(&cnt).Error; err != nil {
|
|
log.Error("apmSvc.EcodeAdd count error(%v)", err)
|
|
c.JSON(nil, ecode.RequestErr)
|
|
return
|
|
}
|
|
username := name(c)
|
|
code := &codes.Codes{
|
|
Code: v.Code,
|
|
Message: v.Message,
|
|
HantMessage: v.HantMessage,
|
|
Level: v.Level,
|
|
Operator: username,
|
|
}
|
|
if err = apmSvc.DB.Create(&code).Error; err != nil {
|
|
log.Error("apmSvc.EcodeAdd create error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 1, code.ID, "apmSvc.EcodeAdd", code)
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func ecodeEdit(c *bm.Context) {
|
|
v := new(struct {
|
|
ID int64 `form:"id" validate:"required"`
|
|
Code int32 `form:"code" validate:"required"`
|
|
Message string `form:"message" validate:"required"`
|
|
HantMessage string `form:"hant_message"`
|
|
Level int8 `form:"level" default:"2"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
code := &codes.Codes{}
|
|
if err = apmSvc.DB.Where("id = ?", v.ID).Find(code).Error; err != nil {
|
|
log.Error("apmSvc.EcodeEdit find(%d) error(%v)", v.ID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
ups := map[string]interface{}{
|
|
"code": v.Code,
|
|
"message": v.Message,
|
|
"operator": username,
|
|
"hant_message": v.HantMessage,
|
|
"level": v.Level,
|
|
}
|
|
if err = apmSvc.DB.Model(&codes.Codes{}).Where("id = ?", v.ID).Updates(ups).Error; err != nil {
|
|
log.Error("apmSvc.EcodeEdit updates error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
sqlLog := &map[string]interface{}{
|
|
"SQLType": "update",
|
|
"Where": "id = ?",
|
|
"Value1": v.ID,
|
|
"Update": ups,
|
|
"Old": code,
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 2, v.ID, "apmSvc.EcodeEdit", sqlLog)
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func ecodeDelete(c *bm.Context) {
|
|
v := new(struct {
|
|
ID int64 `form:"id" validate:"required"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
code := &codes.Codes{}
|
|
if err = apmSvc.DB.Where("id = ?", v.ID).Find(code).Error; err != nil {
|
|
log.Error("apmSvc.EcodeDelete find(%d) error(%v)", v.ID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
if err = apmSvc.DB.Delete(code).Error; err != nil {
|
|
log.Error("apmSvc.EcodeDelete delete(%d) error(%v)", v.ID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
apmSvc.SendLog(*c, username, 0, 3, code.ID, "apmSvc.EcodeDelete", code)
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func getEcodes(c *bm.Context) {
|
|
v := new(struct {
|
|
Interval1 int `form:"interval1" default:"0"`
|
|
Interval2 int `form:"interval2" default:"0"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
codes := []*codes.Codes{}
|
|
if err = apmSvc.DB.Where("code >= ? and code <= ?", v.Interval1, v.Interval2).Find(&codes).Error; err != nil {
|
|
log.Error("getEcodes error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
c.JSON(codes, nil)
|
|
}
|
|
|
|
func syncEcodes(c *bm.Context) {
|
|
res := map[string]interface{}{}
|
|
v := new(struct {
|
|
Data string `form:"data"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
username := name(c)
|
|
var Codes []*codes.Codes
|
|
err = json.Unmarshal([]byte(v.Data), &Codes)
|
|
if err != nil {
|
|
res["message"] = "解析失败"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
var in []int32
|
|
for _, val := range Codes {
|
|
in = append(in, val.Code)
|
|
}
|
|
oldCodes := []*codes.Codes{}
|
|
if err = apmSvc.DB.Where("code in (?)", in).Find(&oldCodes).Error; err != nil {
|
|
log.Error("getEcodes error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
tmp := make(map[int32]struct{})
|
|
for _, val := range oldCodes {
|
|
tmp[val.Code] = struct{}{}
|
|
}
|
|
var code *codes.Codes
|
|
tx := apmSvc.DB.Begin()
|
|
for _, val := range Codes {
|
|
code = &codes.Codes{}
|
|
code.Code = val.Code
|
|
code.Message = val.Message
|
|
code.HantMessage = val.HantMessage
|
|
code.Level = val.Level
|
|
code.Operator = username
|
|
if _, ok := tmp[val.Code]; ok {
|
|
//update
|
|
if err = tx.Model(codes.Codes{}).Where("code = ?", val.Code).Updates(code).Error; err != nil {
|
|
tx.Rollback()
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
} else {
|
|
//create
|
|
if err = tx.Create(code).Error; err != nil {
|
|
tx.Rollback()
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
tx.Commit()
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func getProdEcodes(c *bm.Context) {
|
|
v := new(struct {
|
|
Interval1 string `form:"interval1" default:"0"`
|
|
Interval2 string `form:"interval2" default:"0"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
Data, err := apmSvc.GetCodes(c, v.Interval1, v.Interval2)
|
|
if err != nil {
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
c.JSON(Data, nil)
|
|
}
|
|
|
|
func codeLangsList(c *bm.Context) {
|
|
v := new(struct {
|
|
Code string `form:"code"`
|
|
Pn int `form:"pn" default:"1"`
|
|
Ps int `form:"ps" default:"20"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
var (
|
|
cs []*codes.Codes
|
|
count int
|
|
lk = "%" + v.Code + "%"
|
|
in []int64
|
|
ts []*codes.CodeMsg
|
|
res []*codes.NewCodes
|
|
)
|
|
|
|
if v.Code != "" {
|
|
err = apmSvc.DB.Where("CAST(code AS CHAR) LIKE ? OR message LIKE ?", lk, lk).Offset((v.Pn - 1) * v.Ps).Limit(v.Ps).Find(&cs).Error
|
|
} else {
|
|
err = apmSvc.DB.Offset((v.Pn - 1) * v.Ps).Limit(v.Ps).Find(&cs).Error
|
|
}
|
|
if err != nil {
|
|
log.Error("apmSvc.EcodeList error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
for _, val := range cs {
|
|
in = append(in, val.ID)
|
|
}
|
|
err = apmSvc.DB.Where("code_id in(?)", in).Find(&ts).Error
|
|
if err != nil {
|
|
log.Error("apmSvc.EcodeList error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
for _, val := range cs {
|
|
list := make([]*codes.CodeMsg, 0)
|
|
for _, vv := range ts {
|
|
if vv.CodeID == val.ID {
|
|
list = append(list, vv)
|
|
}
|
|
}
|
|
res = append(res, &codes.NewCodes{Codes: val, List: list})
|
|
}
|
|
|
|
if v.Code != "" {
|
|
err = apmSvc.DB.Where("CAST(code AS CHAR) LIKE ? OR message LIKE ?", lk, lk).Model(&codes.Codes{}).Count(&count).Error
|
|
} else {
|
|
err = apmSvc.DB.Model(&codes.Codes{}).Count(&count).Error
|
|
}
|
|
if err != nil {
|
|
log.Error("apmSvc.EcodeList count error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
data := &Paper{
|
|
Pn: v.Pn,
|
|
Ps: v.Ps,
|
|
Items: res,
|
|
Total: count,
|
|
}
|
|
c.JSON(data, nil)
|
|
}
|
|
|
|
func ecodeLangsAdd(c *bm.Context) {
|
|
res := map[string]interface{}{}
|
|
v := new(struct {
|
|
Data string `form:"data" validate:"required"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
var Codes []*codes.CodeMsg
|
|
err = json.Unmarshal([]byte(v.Data), &Codes)
|
|
if err != nil {
|
|
res["message"] = "解析失败"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
for _, val := range Codes {
|
|
if !(val.CodeID > 0 && len(val.Locale) > 0 && len(val.Msg) > 0) {
|
|
err = ecode.RequestErr
|
|
res["message"] = "数据有误"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
code := &codes.CodeMsg{
|
|
CodeID: val.CodeID,
|
|
Locale: val.Locale,
|
|
Msg: val.Msg,
|
|
Operator: username,
|
|
}
|
|
if err = apmSvc.DB.Create(&code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsAdd create error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 1, code.ID, "apmSvc.ecodeLangsAdd", code)
|
|
}
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func ecodeLangsEdit(c *bm.Context) {
|
|
res := map[string]interface{}{}
|
|
v := new(struct {
|
|
Data string `form:"data" validate:"required"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
var Codes []*codes.CodeMsg
|
|
err = json.Unmarshal([]byte(v.Data), &Codes)
|
|
if err != nil {
|
|
res["message"] = "解析失败"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
for _, val := range Codes {
|
|
code := &codes.CodeMsg{}
|
|
if err = apmSvc.DB.Where("id = ?", val.ID).First(code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsEdit find(%d) error(%v)", val.ID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
ups := map[string]interface{}{
|
|
"operator": username,
|
|
"msg": val.Msg,
|
|
"locale": val.Locale,
|
|
}
|
|
if err = apmSvc.DB.Model(&codes.CodeMsg{}).Where("id = ?", val.ID).Updates(ups).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsEdit updates error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
sqlLog := &map[string]interface{}{
|
|
"SQLType": "update",
|
|
"Where": "id = ?",
|
|
"Value1": val.ID,
|
|
"Update": ups,
|
|
"Old": code,
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 2, val.ID, "apmSvc.ecodeLangsEdit", sqlLog)
|
|
}
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func ecodeLangsDelete(c *bm.Context) {
|
|
v := new(struct {
|
|
CID int64 `form:"cid" validate:"required"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
code := &codes.CodeMsg{}
|
|
if err = apmSvc.DB.Where("id = ?", v.CID).First(code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsDelete find(%d) error(%v)", v.CID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
if err = apmSvc.DB.Delete(code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsDelete delete(%d) error(%v)", v.CID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
apmSvc.SendLog(*c, username, 0, 3, code.ID, "apmSvc.ecodeLangsDelete", code)
|
|
c.JSON(nil, err)
|
|
}
|
|
|
|
func ecodeLangsSave(c *bm.Context) {
|
|
res := map[string]interface{}{}
|
|
v := new(struct {
|
|
Data string `form:"data" validate:"required"`
|
|
})
|
|
var err error
|
|
if err = c.Bind(v); err != nil {
|
|
return
|
|
}
|
|
var Codes []*codes.CodeMsg
|
|
err = json.Unmarshal([]byte(v.Data), &Codes)
|
|
if err != nil {
|
|
res["message"] = "解析失败"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
username := name(c)
|
|
for _, val := range Codes {
|
|
code := &codes.CodeMsg{}
|
|
if val.ID == 0 {
|
|
if !(val.CodeID > 0 && len(val.Locale) > 0 && len(val.Msg) > 0) {
|
|
err = ecode.RequestErr
|
|
res["message"] = "数据有误"
|
|
c.JSONMap(res, err)
|
|
return
|
|
}
|
|
code = &codes.CodeMsg{
|
|
CodeID: val.CodeID,
|
|
Locale: val.Locale,
|
|
Msg: val.Msg,
|
|
Operator: username,
|
|
}
|
|
if err = apmSvc.DB.Create(&code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsSvae create error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 1, code.ID, "apmSvc.ecodeLangsAdd", code)
|
|
} else {
|
|
if err = apmSvc.DB.Where("id = ?", val.ID).First(code).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsSvae find(%d) error(%v)", val.ID, err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
ups := map[string]interface{}{
|
|
"operator": username,
|
|
"msg": val.Msg,
|
|
"locale": val.Locale,
|
|
}
|
|
if err = apmSvc.DB.Model(&codes.CodeMsg{}).Where("id = ?", val.ID).Updates(ups).Error; err != nil {
|
|
log.Error("apmSvc.ecodeLangsSave updates error(%v)", err)
|
|
c.JSON(nil, err)
|
|
return
|
|
}
|
|
sqlLog := &map[string]interface{}{
|
|
"SQLType": "update",
|
|
"Where": "id = ?",
|
|
"Value1": val.ID,
|
|
"Update": ups,
|
|
"Old": code,
|
|
}
|
|
apmSvc.SendLog(*c, username, 0, 2, val.ID, "apmSvc.ecodeLangsSave", sqlLog)
|
|
}
|
|
}
|
|
c.JSON(nil, err)
|
|
}
|