mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-17 11:13:26 +00:00
feat: 支持通过拼音搜索联系人
This commit is contained in:
parent
d386b4e7ac
commit
adf9225180
@ -271,8 +271,10 @@ class UsersController extends AbstractController
|
|||||||
return Base::retError('昵称不可以少于2个字');
|
return Base::retError('昵称不可以少于2个字');
|
||||||
} elseif (mb_strlen($nickname) > 20) {
|
} elseif (mb_strlen($nickname) > 20) {
|
||||||
return Base::retError('昵称最多只能设置20个字');
|
return Base::retError('昵称最多只能设置20个字');
|
||||||
} else {
|
} elseif ($nickname != $user->nickname) {
|
||||||
$user->nickname = $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->save();
|
||||||
User::token($user);
|
User::token($user);
|
||||||
User::AZUpdate($user->userid);
|
|
||||||
//
|
//
|
||||||
if (empty($user->userimg)) {
|
if (empty($user->userimg)) {
|
||||||
$user->userimg = $user->getUserimgAttribute(null);
|
$user->userimg = $user->getUserimgAttribute(null);
|
||||||
@ -367,7 +368,7 @@ class UsersController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function search()
|
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');
|
$keys = Request::input('keys');
|
||||||
$sorts = Request::input('sorts');
|
$sorts = Request::input('sorts');
|
||||||
@ -640,6 +641,8 @@ class UsersController extends AbstractController
|
|||||||
return Base::retError('昵称最多只能设置20个字');
|
return Base::retError('昵称最多只能设置20个字');
|
||||||
} else {
|
} else {
|
||||||
$upArray['nickname'] = $nickname;
|
$upArray['nickname'] = $nickname;
|
||||||
|
$upArray['az'] = Base::getFirstCharter($nickname);
|
||||||
|
$upArray['pinyin'] = Base::cn2pinyin($nickname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 职位/职称
|
// 职位/职称
|
||||||
|
|||||||
@ -14,6 +14,7 @@ use Carbon\Carbon;
|
|||||||
* @property int $userid
|
* @property int $userid
|
||||||
* @property array $identity 身份
|
* @property array $identity 身份
|
||||||
* @property string|null $az A-Z
|
* @property string|null $az A-Z
|
||||||
|
* @property string|null $pinyin 拼音(主要用于搜索)
|
||||||
* @property string|null $email 邮箱
|
* @property string|null $email 邮箱
|
||||||
* @property string $nickname 昵称
|
* @property string $nickname 昵称
|
||||||
* @property string|null $profession 职位/职称
|
* @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 whereLoginNum($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereNickname($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 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 whereProfession($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereTaskDialogId($value)
|
* @method static \Illuminate\Database\Eloquent\Builder|User whereTaskDialogId($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
|
* @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
|
||||||
@ -226,8 +228,9 @@ class User extends AbstractModel
|
|||||||
$inArray = array_merge($inArray, $other);
|
$inArray = array_merge($inArray, $other);
|
||||||
}
|
}
|
||||||
$user = User::createInstance($inArray);
|
$user = User::createInstance($inArray);
|
||||||
|
$user->az = Base::getFirstCharter($user->nickname);
|
||||||
|
$user->pinyin = Base::cn2pinyin($user->nickname);
|
||||||
$user->save();
|
$user->save();
|
||||||
User::AZUpdate($user->userid);
|
|
||||||
return $user->find($user->userid);
|
return $user->find($user->userid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +430,7 @@ class User extends AbstractModel
|
|||||||
if (isset($_A["__static_userid2basic_" . $userid])) {
|
if (isset($_A["__static_userid2basic_" . $userid])) {
|
||||||
return $_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();
|
$userInfo = self::whereUserid($userid)->select($fields)->first();
|
||||||
if ($userInfo) {
|
if ($userInfo) {
|
||||||
$userInfo->online = $userInfo->getOnlineStatus();
|
$userInfo->online = $userInfo->getOnlineStatus();
|
||||||
@ -447,19 +450,6 @@ class User extends AbstractModel
|
|||||||
return $basic ? $basic->nickname : '';
|
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
|
* @param $email
|
||||||
|
|||||||
@ -2849,6 +2849,23 @@ class Base
|
|||||||
return $first ? strtoupper($first) : '#';
|
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
|
* @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 [];
|
return [];
|
||||||
}
|
}
|
||||||
if (contactsKey) {
|
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;
|
return contactsData;
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user