feat(backend): 出入库编码搜索双路匹配+建单填快照;finance 趋势/日期区间;partner/product 拼音搜索
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJ1g8XV1YhhmHRzhwWEW7o
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/wangjia/jiu/backend/internal/model"
|
||||
"github.com/wangjia/jiu/backend/internal/router"
|
||||
"github.com/wangjia/jiu/backend/internal/service"
|
||||
"github.com/wangjia/jiu/backend/internal/util"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -35,6 +36,9 @@ func main() {
|
||||
// 自动迁移(GORM AutoMigrate 只增不删,生产安全)
|
||||
autoMigrate(db)
|
||||
|
||||
// 回填存量往来单位的拼音搜索列(幂等,只处理空值行)
|
||||
backfillPartnerPinyin(db)
|
||||
|
||||
// 启动会话/失败登录保留期清理任务(后台 goroutine)
|
||||
service.StartSessionCleanup(db, config.C.Session.RetentionDays)
|
||||
|
||||
@@ -153,3 +157,23 @@ func autoMigrate(db *gorm.DB) {
|
||||
}
|
||||
log.Println("AutoMigrate completed")
|
||||
}
|
||||
|
||||
// backfillPartnerPinyin 为存量往来单位生成拼音搜索列(name_pinyin 为空的行)。
|
||||
// 与 products 的拼音列同机制:写入时自动生成,这里兜底历史数据。
|
||||
func backfillPartnerPinyin(db *gorm.DB) {
|
||||
var partners []model.Partner
|
||||
db.Where("(name_pinyin = '' OR name_pinyin IS NULL) AND deleted_at IS NULL").Find(&partners)
|
||||
filled := 0
|
||||
for i := range partners {
|
||||
py, ini := util.ToPinyin(partners[i].Name)
|
||||
if py == "" && ini == "" {
|
||||
continue
|
||||
}
|
||||
db.Model(&model.Partner{}).Where("id = ?", partners[i].ID).
|
||||
Updates(map[string]interface{}{"name_pinyin": py, "name_initials": ini})
|
||||
filled++
|
||||
}
|
||||
if filled > 0 {
|
||||
log.Printf("backfill partner pinyin: %d rows", filled)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user