You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.9 KiB
160 lines
5.9 KiB
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 "" |
|
}
|
|
|