forked from free-lancers/electricity_bill_calc_service
feat(user):增加生成用户名称的拼音缩写,并提供带有限制条数的企业检索。
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user