优化花名册名字切片报错问题 (#263)

This commit is contained in:
方柳煜 2022-06-16 13:27:47 +08:00 committed by GitHub
parent 668418c48a
commit f768081849
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,7 +5,6 @@ import (
"math/rand" "math/rand"
"sort" "sort"
"strconv" "strconv"
"strings"
"sync" "sync"
"time" "time"
@ -181,30 +180,23 @@ func (sql *婚姻登记) 花名册(gid int64) (list [][4]string, number int, err
return return
} }
func slicename(name string) (resultname string) { func slicename(name string, canvas *gg.Context) (resultname string) {
if len(name) <= 21 { // 如果长度在宽度之内直接输出 usermane := []rune(name) //将每个字符单独放置
resultname = name widthlen := 0
return numberlen := 0
}
usermane := []rune(name) // 转utf8形式
usermanelen := 0 // 总长度
numberlen := 0 // 字个数
var singlestr = " ,.;:'|!()[]" // 单宽度长度的字符集
for i, v := range usermane { for i, v := range usermane {
if usermanelen > 18 { // 6个汉字或者9个字符 width, _ := canvas.MeasureString(string(v)) //获取单个字符的宽度
widthlen += int(width)
if widthlen > 350 {
break //总宽度不能超过350
}
numberlen = i numberlen = i
break
} }
switch { if widthlen > 350 {
case v/10000 >= 1: resultname = string(usermane[:numberlen-1]) + "......" // 名字切片
usermanelen += 3 } else {
case strings.Contains(singlestr, string(v)): resultname = name
usermanelen++
default:
usermanelen += 2
} }
}
resultname = string(usermane[:numberlen-2]) + "......" // 名字切片
return return
} }
@ -567,10 +559,10 @@ func init() {
} }
_, h = canvas.MeasureString("焯") _, h = canvas.MeasureString("焯")
for i, info := range list { for i, info := range list {
canvas.DrawString(slicename(info[0]), 0, float64(260+50*i)-h) canvas.DrawString(slicename(info[0], canvas), 0, float64(260+50*i)-h)
canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h) canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h)
canvas.DrawString("←→", 700, float64(260+50*i)-h) canvas.DrawString("←→", 700, float64(260+50*i)-h)
canvas.DrawString(slicename(info[2]), 800, float64(260+50*i)-h) canvas.DrawString(slicename(info[2], canvas), 800, float64(260+50*i)-h)
canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h) canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h)
} }
data, cl := writer.ToBytes(canvas.Image()) data, cl := writer.ToBytes(canvas.Image())
@ -667,13 +659,13 @@ func iscding(ctx *zero.Ctx) {
// 注入判断 是否为单身 // 注入判断 是否为单身
func checkdog(ctx *zero.Ctx) bool { func checkdog(ctx *zero.Ctx) bool {
// 得先判断用户是否存在才行在,再重置 //得先判断用户是否存在才行在,再重置
fiancee, err := strconv.ParseInt(ctx.State["regex_matched"].([]string)[2], 10, 64) fiancee, err := strconv.ParseInt(ctx.State["regex_matched"].([]string)[2], 10, 64)
if err != nil { if err != nil {
ctx.SendChain(message.Text("额你的target好像不存在")) ctx.SendChain(message.Text("额你的target好像不存在"))
return false return false
} }
// 判断是否需要重置 //判断是否需要重置
gid := ctx.Event.GroupID gid := ctx.Event.GroupID
updatetime, err := 民政局.checkupdate(gid) updatetime, err := 民政局.checkupdate(gid)
switch { switch {