mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-03 07:37:05 +00:00
feat: 支持通过拼音搜索联系人
This commit is contained in:
parent
d386b4e7ac
commit
adf9225180
@ -271,8 +271,10 @@ class UsersController extends AbstractController
|
||||
return Base::retError('昵称不可以少于2个字');
|
||||
} elseif (mb_strlen($nickname) > 20) {
|
||||
return Base::retError('昵称最多只能设置20个字');
|
||||
} else {
|
||||
} elseif ($nickname != $user->nickname) {
|
||||
$user->nickname = $nickname;
|
||||
$user->az = Base::getFirstCharter($nickname);
|
||||
$user->pinyin = Base::cn2pinyin($nickname);
|
||||
}
|
||||
}
|
||||
// 职位/职称
|
||||
@ -289,7 +291,6 @@ class UsersController extends AbstractController
|
||||
//
|
||||
$user->save();
|
||||
User::token($user);
|
||||
User::AZUpdate($user->userid);
|
||||
//
|
||||
if (empty($user->userimg)) {
|
||||
$user->userimg = $user->getUserimgAttribute(null);
|
||||
@ -367,7 +368,7 @@ class UsersController extends AbstractController
|
||||
*/
|
||||
public function search()
|
||||
{
|
||||
$builder = User::select(['userid', 'email', 'nickname', 'profession', 'userimg', 'az', 'line_at', 'disable_at']);
|
||||
$builder = User::select(['userid', 'email', 'nickname', 'profession', 'userimg', 'az', 'pinyin', 'line_at', 'disable_at']);
|
||||
//
|
||||
$keys = Request::input('keys');
|
||||
$sorts = Request::input('sorts');
|
||||
@ -640,6 +641,8 @@ class UsersController extends AbstractController
|
||||
return Base::retError('昵称最多只能设置20个字');
|
||||
} else {
|
||||
$upArray['nickname'] = $nickname;
|
||||
$upArray['az'] = Base::getFirstCharter($nickname);
|
||||
$upArray['pinyin'] = Base::cn2pinyin($nickname);
|
||||
}
|
||||
}
|
||||
// 职位/职称
|
||||
|
||||
@ -14,6 +14,7 @@ use Carbon\Carbon;
|
||||
* @property int $userid
|
||||
* @property array $identity 身份
|
||||
* @property string|null $az A-Z
|
||||
* @property string|null $pinyin 拼音(主要用于搜索)
|
||||
* @property string|null $email 邮箱
|
||||
* @property string $nickname 昵称
|
||||
* @property string|null $profession 职位/职称
|
||||
@ -52,6 +53,7 @@ use Carbon\Carbon;
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereLoginNum($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereNickname($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User wherePinyin($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereProfession($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereTaskDialogId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
|
||||
@ -226,8 +228,9 @@ class User extends AbstractModel
|
||||
$inArray = array_merge($inArray, $other);
|
||||
}
|
||||
$user = User::createInstance($inArray);
|
||||
$user->az = Base::getFirstCharter($user->nickname);
|
||||
$user->pinyin = Base::cn2pinyin($user->nickname);
|
||||
$user->save();
|
||||
User::AZUpdate($user->userid);
|
||||
return $user->find($user->userid);
|
||||
}
|
||||
|
||||
@ -427,7 +430,7 @@ class User extends AbstractModel
|
||||
if (isset($_A["__static_userid2basic_" . $userid])) {
|
||||
return $_A["__static_userid2basic_" . $userid];
|
||||
}
|
||||
$fields = ['userid', 'email', 'nickname', 'profession', 'userimg', 'az', 'line_at', 'disable_at'];
|
||||
$fields = ['userid', 'email', 'nickname', 'profession', 'userimg', 'az', 'pinyin', 'line_at', 'disable_at'];
|
||||
$userInfo = self::whereUserid($userid)->select($fields)->first();
|
||||
if ($userInfo) {
|
||||
$userInfo->online = $userInfo->getOnlineStatus();
|
||||
@ -447,19 +450,6 @@ class User extends AbstractModel
|
||||
return $basic ? $basic->nickname : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新首字母
|
||||
* @param $userid
|
||||
*/
|
||||
public static function AZUpdate($userid)
|
||||
{
|
||||
$row = self::whereUserid($userid)->first();
|
||||
if ($row) {
|
||||
$row->az = Base::getFirstCharter($row->nickname);
|
||||
$row->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否需要验证码
|
||||
* @param $email
|
||||
|
||||
@ -2849,6 +2849,23 @@ class Base
|
||||
return $first ? strtoupper($first) : '#';
|
||||
}
|
||||
|
||||
/**
|
||||
* 中文转拼音
|
||||
* @param $str
|
||||
* @return string
|
||||
*/
|
||||
public static function cn2pinyin($str)
|
||||
{
|
||||
if (empty($str)) {
|
||||
return '';
|
||||
}
|
||||
if (!preg_match("/^[a-zA-Z0-9_.]+$/", $str)) {
|
||||
$pinyin = new Pinyin();
|
||||
$str = $pinyin->permalink($str, '');
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存数据
|
||||
* @param $name
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddWebUsersPinyin extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$isAdd = false;
|
||||
Schema::table('users', function (Blueprint $table) use (&$isAdd) {
|
||||
if (!Schema::hasColumn('users', 'pinyin')) {
|
||||
$isAdd = true;
|
||||
$table->string('pinyin', 255)->nullable()->default('')->after('az')->comment('拼音(主要用于搜索)');
|
||||
}
|
||||
});
|
||||
if ($isAdd) {
|
||||
\App\Models\User::chunkById(100, function ($lists) {
|
||||
/** @var \App\Models\User $item */
|
||||
foreach ($lists as $item) {
|
||||
$item->pinyin = \App\Module\Base::cn2pinyin($item->nickname);
|
||||
$item->save();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->dropColumn("pinyin");
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -286,7 +286,7 @@ export default {
|
||||
return [];
|
||||
}
|
||||
if (contactsKey) {
|
||||
return contactsData.filter(item => $A.strExists(`${item.email}||${item.nickname}`, contactsKey))
|
||||
return contactsData.filter(item => $A.strExists(`${item.email}||${item.nickname}||${item.profession}||${item.pinyin}`, contactsKey))
|
||||
}
|
||||
return contactsData;
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user