mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-01-26 12:48:41 +08:00
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
// Package hook
|
|
// @Link https://github.com/bufanyun/hotgo
|
|
// @Copyright Copyright (c) 2023 HotGo CLI
|
|
// @Author Ms <133814250@qq.com>
|
|
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
|
|
package hook
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gogf/gf/v2/container/gvar"
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"hotgo/internal/library/location"
|
|
)
|
|
|
|
// CityLabel 城市地区标签
|
|
var CityLabel = gdb.HookHandler{
|
|
Select: func(ctx context.Context, in *gdb.HookSelectInput) (result gdb.Result, err error) {
|
|
result, err = in.Next(ctx)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
parse := func(id int64, index int) {
|
|
cityLabel, err := location.ParseSimpleRegion(ctx, id)
|
|
if err != nil {
|
|
g.Log().Warningf(ctx, "hook.CityLabel parse err:%+v", err)
|
|
}
|
|
result[index]["cityLabel"] = gvar.New(cityLabel)
|
|
return
|
|
}
|
|
|
|
for i, record := range result {
|
|
// 优先级: 区 > 市 > 省
|
|
|
|
cityId, ok := record["city_id"]
|
|
if ok && !cityId.IsEmpty() {
|
|
parse(cityId.Int64(), i)
|
|
continue
|
|
}
|
|
|
|
provinceId, ok := record["province_id"]
|
|
if ok && !provinceId.IsEmpty() {
|
|
parse(cityId.Int64(), i)
|
|
continue
|
|
}
|
|
|
|
// 以下是默认关联表 省市区字段
|
|
|
|
sysLogCityId, ok := record["sysLogCityId"]
|
|
if ok && !sysLogCityId.IsEmpty() {
|
|
parse(sysLogCityId.Int64(), i)
|
|
continue
|
|
}
|
|
|
|
sysLogProvinceId, ok := record["sysLogProvinceId"]
|
|
if ok && !sysLogProvinceId.IsEmpty() {
|
|
parse(cityId.Int64(), i)
|
|
continue
|
|
}
|
|
}
|
|
return
|
|
},
|
|
}
|