Files
2019-04-22 18:49:16 +08:00

161 lines
5.9 KiB
Go

package blocked
import (
"encoding/json"
"fmt"
"strconv"
"go-common/app/admin/main/credit/model"
"go-common/library/log"
xtime "go-common/library/time"
)
// const info
const (
// info publish_status
StatusClose = int8(0) // 案件关闭状态
StatusOpen = int8(1) // 案件公开状态
// info block_type
PunishBlock = 0 // 系统封禁
PunishJury = 1 // 风纪仲裁
// punish type.
PunishTypeMoral = int8(1) // 节操
PunishTypeBlockTime = int8(2) // 封禁
PunishTypeBlockForever = int8(3) // 永久封禁
// info status.
BlockStateOpen = int8(0) // 未解禁
BlockStateClose = int8(1) // 已解禁
)
// var info
var (
PStatusDesc = map[int8]string{
StatusClose: "不公开",
StatusOpen: "公开",
}
BTypeDesc = map[int8]string{
PunishBlock: "系统封禁",
PunishJury: "风纪仲裁",
}
)
// Info is blocked_info model.
type Info struct {
ID int64 `gorm:"column:id" json:"id"`
UID int64 `gorm:"column:uid" json:"uid"`
UName string `gorm:"column:uname" json:"uname"`
Status int8 `gorm:"column:status" json:"status"`
OriginTitle string `gorm:"column:origin_title" json:"origin_title"`
OriginURL string `gorm:"column:origin_url" json:"origin_url"`
OriginContent string `gorm:"column:origin_content" json:"origin_content"`
OriginContentModify string `gorm:"column:origin_content_modify" json:"origin_content_modify"`
OriginType int8 `gorm:"column:origin_type" json:"origin_type"`
BlockedDays int `gorm:"column:blocked_days" json:"blocked_days"`
BlockedForever int8 `gorm:"column:blocked_forever" json:"blocked_forever"`
BlockedType int8 `gorm:"column:blocked_type" json:"blocked_type"`
BlockedRemark string `gorm:"column:blocked_remark" json:"blocked_remark"`
CaseID int64 `gorm:"column:case_id" json:"case_id"`
MoralNum int `gorm:"column:moral_num" json:"moral_num"`
ReasonType int8 `gorm:"column:reason_type" json:"reason_type"`
PublishStatus int8 `gorm:"column:publish_status" json:"publish_status"`
PunishType int8 `gorm:"column:punish_type" json:"punish_type"`
PunishTime xtime.Time `gorm:"column:punish_time" json:"punish_time"`
PublishTime xtime.Time `gorm:"column:publish_time" json:"publish_time"`
OperID int64 `gorm:"column:oper_id" json:"oper_id"`
CTime xtime.Time `gorm:"column:ctime" json:"ctime"`
MTime xtime.Time `gorm:"column:mtime" json:"mtime"`
PublishStatusDesc string `gorm:"-" json:"publish_status_desc"`
OriginTypeDesc string `gorm:"-" json:"origin_type_desc"`
BlockedTypeDesc string `gorm:"-" json:"blocked_type_desc"`
BlockedDaysDesc string `gorm:"-" json:"blocked_days_desc"`
ReasonTypeDesc string `gorm:"-" json:"reason_type_desc"`
OPName string `gorm:"-" json:"oname"`
OOPName string `gorm:"column:operator_name" json:"-"`
}
// InfoList is info list.
type InfoList struct {
IDs []int64
List []*Info
}
// InfoDesc is Info_desc model.
type InfoDesc struct {
ID string `json:"id"`
PunishTime string `json:"punish_time"`
OriginTypeDesc string `json:"origin_type_desc"`
ReasonTypeDesc string `json:"reason_type_desc"`
PublishStatusDesc string `json:"publish_status_desc"`
BlockedTypeDesc string `json:"blocked_type_desc"`
OriginContent string `json:"origin_content"`
BlockedDaysDesc string `json:"blocked_days_desc"`
UName string `json:"uname"`
UID string `json:"uid"`
OPName string `json:"oname"`
}
// TableName Info tablename
func (*Info) TableName() string {
return "blocked_info"
}
// DealInfo deal with info data.
func DealInfo(infos []*Info) (data [][]string, err error) {
var infoDescs []*InfoDesc
for _, v := range infos {
infoDesc := &InfoDesc{
ID: strconv.FormatInt(v.ID, 10),
PunishTime: v.PunishTime.Time().Format(model.TimeFormatSec),
OriginTypeDesc: v.OriginTypeDesc,
PublishStatusDesc: v.PublishStatusDesc,
BlockedTypeDesc: v.BlockedTypeDesc,
ReasonTypeDesc: v.ReasonTypeDesc,
OriginContent: v.OriginContent,
BlockedDaysDesc: v.BlockedDaysDesc,
UName: v.UName,
UID: strconv.FormatInt(v.UID, 10),
OPName: v.OPName,
}
infoDescs = append(infoDescs, infoDesc)
}
infoMap, _ := json.Marshal(infoDescs)
var objmap []map[string]string
if err = json.Unmarshal(infoMap, &objmap); err != nil {
log.Error("Unmarshal(%s) error(%v)", string(infoMap), err)
return
}
data = append(data, []string{"ID", "惩罚时间", "类型", "状态", "封禁类型", "理由类型", "原文概要", "处罚结果", "用户", "用户ID", "操作者"})
for _, v := range objmap {
var fields []string
fields = append(fields, v["id"])
fields = append(fields, v["punish_time"])
fields = append(fields, v["origin_type_desc"])
fields = append(fields, v["publish_status_desc"])
fields = append(fields, v["blocked_type_desc"])
fields = append(fields, v["reason_type_desc"])
fields = append(fields, v["origin_content"])
fields = append(fields, v["blocked_days_desc"])
fields = append(fields, v["uname"])
fields = append(fields, v["uid"])
fields = append(fields, v["oname"])
data = append(data, fields)
}
return
}
// BDaysDesc is blocked_days_desc.
func BDaysDesc(bDays, moralNum int, pType, bForever int8) string {
switch {
case pType == PunishTypeMoral:
return fmt.Sprintf(blockedDesc[BlockMoralNum], moralNum)
case bDays == BlockForever && bForever == OnBlockedForever:
return blockedDesc[BlockForever]
case pType == PunishTypeBlockTime:
if bDays == BlockThree || bDays == BlockSeven || bDays == BlockFifteen {
return blockedDesc[bDays]
}
return strconv.Itoa(bDays) + blockedDesc[BlockCustom]
}
return ""
}