feat(user):增加生成用户名称的拼音缩写,并提供带有限制条数的企业检索。

This commit is contained in:
徐涛
2022-08-15 09:58:54 +08:00
parent 3c61cd9e82
commit c3d3167e62
4 changed files with 49 additions and 0 deletions

View File

@@ -10,9 +10,12 @@ import (
"electricity_bill_calc/repository"
"electricity_bill_calc/utils"
"fmt"
"log"
"strings"
"time"
"github.com/google/uuid"
"github.com/mozillazg/go-pinyin"
"xorm.io/builder"
)
@@ -193,6 +196,17 @@ func (u _UserService) CreateUser(user *model.User, detail *model.UserDetail) (st
user.Password = fmt.Sprintf("%x", hash.Sum(nil))
user.ResetNeeded = true
if detail.Name != nil {
abbr := pinyin.Pinyin(*detail.Name, pinyin.NewArgs())
var abbrCollect = make([]string, 0)
for _, a := range abbr {
abbrCollect = append(abbrCollect, a[0][0:1])
}
finalAbbr := strings.Join(abbrCollect, "")
detail.Abbr = &finalAbbr
log.Printf("[service] [debug] detail: %v", detail)
}
tx := global.DBConn.NewSession()
defer tx.Close()
if err := tx.Begin(); err != nil {
@@ -229,3 +243,23 @@ func (u _UserService) SwitchUserState(uid string, enabled bool) error {
_, err = global.DBConn.ID(uid).Cols("enabled").Update(newStateUser)
return err
}
func (_UserService) SearchLimitUsers(keyword string, limit int) ([]model.JoinedUserDetail, error) {
var users = make([]model.JoinedUserDetail, 0)
err := global.DBConn.
Table("user_detail").Alias("d").
Join("INNER", []string{"user", "u"}, "d.id=u.id").
Where(
builder.NewCond().
Or(builder.Like{"u.username", keyword}).
Or(builder.Like{"d.name", keyword}).
Or(builder.Like{"d.abbr", keyword})).
And(builder.Eq{"u.type": 0}).
Asc("u.created_at").
Limit(limit).
Find(&users)
if err != nil {
return make([]model.JoinedUserDetail, 0), err
}
return users, nil
}