no message

This commit is contained in:
kuaifan 2025-04-21 11:35:52 +08:00
parent f7206c1603
commit 52c389edd8
5 changed files with 64 additions and 27 deletions

View File

@ -1202,30 +1202,27 @@ class UsersController extends AbstractController
} }
// //
$user = User::auth(); $user = User::auth();
$version = $data['appVersion'] ? ($data['appVersionName'] . " ({$data['appVersion']})") : '';
$isNotified = trim($data['isNotified']) === 'true' || $data['isNotified'] === true ? 1 : intval($data['isNotified']);
$inArray = [ $inArray = [
'userid' => $user->userid, 'userid' => $user->userid,
'alias' => $data['alias'], 'alias' => $data['alias'],
'platform' => Base::platform(), 'platform' => Base::platform(),
]; ];
$version = $data['appVersion'] ? ($data['appVersionName'] . " ({$data['appVersion']})") : ''; $upArray = [
$isNotified = trim($data['isNotified']) === 'true' || $data['isNotified'] === true ? 1 : intval($data['isNotified']); 'ua' => $data['userAgent'],
'device' => $data['deviceModel'],
'device_hash' => UserDevice::check(),
'version' => $version,
'is_notified' => $isNotified,
];
$row = UmengAlias::where($inArray); $row = UmengAlias::where($inArray);
if ($row->exists()) { if ($row->exists()) {
$row->update([ $upArray['updated_at'] = Carbon::now();
'ua' => $data['userAgent'], $row->update($upArray);
'device' => $data['deviceModel'],
'version' => $version,
'is_notified' => $isNotified,
'updated_at' => Carbon::now()
]);
return Base::retSuccess('别名已存在'); return Base::retSuccess('别名已存在');
} }
$row = UmengAlias::createInstance(array_merge($inArray, [ $row = UmengAlias::createInstance(array_merge($inArray, $upArray));
'ua' => $data['userAgent'],
'device' => $data['deviceModel'],
'version' => $version,
'is_notified' => $isNotified,
]));
if ($row->save()) { if ($row->save()) {
return Base::retSuccess('添加成功'); return Base::retSuccess('添加成功');
} else { } else {

View File

@ -15,6 +15,8 @@ use Hedeqiang\UMeng\IOS;
* @property string|null $alias 别名 * @property string|null $alias 别名
* @property string|null $platform 平台类型 * @property string|null $platform 平台类型
* @property string|null $device 设备类型 * @property string|null $device 设备类型
* @property string|null $device_hash 设备哈希值用于关联UserDevice表
* @property string|null $user_lang 用户语言
* @property string|null $version 应用版本号 * @property string|null $version 应用版本号
* @property string|null $ua userAgent * @property string|null $ua userAgent
* @property int|null $is_notified 通知权限 * @property int|null $is_notified 通知权限
@ -32,11 +34,13 @@ use Hedeqiang\UMeng\IOS;
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereAlias($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereAlias($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereDevice($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereDevice($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereDeviceHash($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereIsNotified($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereIsNotified($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias wherePlatform($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias wherePlatform($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUa($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUa($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUserLang($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUserid($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereUserid($value)
* @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereVersion($value) * @method static \Illuminate\Database\Eloquent\Builder|UmengAlias whereVersion($value)
* @mixin \Eloquent * @mixin \Eloquent

View File

@ -21,6 +21,7 @@ use Request;
* @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $updated_at
* @property \Illuminate\Support\Carbon|null $deleted_at * @property \Illuminate\Support\Carbon|null $deleted_at
* @property-read int $is_current
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend() * @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelHidden() * @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelHidden()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel change($array) * @method static \Illuminate\Database\Eloquent\Builder|AbstractModel change($array)
@ -173,36 +174,35 @@ class UserDevice extends AbstractModel
/** /**
* 检查用户是否存在 * 检查用户是否存在
* @return bool * @return string|null
*/ */
public static function check(): bool public static function check(): ?string
{ {
$token = Doo::userToken(); $token = Doo::userToken();
$userid = Doo::userId(); $userid = Doo::userId();
$hash = md5($token); $hash = md5($token);
if (Cache::has(self::ck($hash))) { if (Cache::has(self::ck($hash))) {
return true; return $hash;
} }
$row = self::whereHash($hash)->first(); $row = self::whereHash($hash)->first();
if ($row) { if ($row) {
// 判断是否过期 // 判断是否过期
if (Carbon::parse($row->expired_at)->isPast()) { if (Carbon::parse($row->expired_at)->isPast()) {
Cache::forget(self::ck($hash)); self::forget($row);
$row->delete(); return null;
return false;
} }
// 更新缓存 // 更新缓存
self::record(); self::record();
return true; return $hash;
} }
// 没有记录,尝试创建一个(防止升级后所有登录都失效,保证留一个可以保持登录) // todo 后期删除 // 没有记录,尝试创建一个(防止升级后所有登录都失效,保证留一个可以保持登录) // todo 后期删除
return AbstractModel::transaction(function () use ($userid) { return AbstractModel::transaction(function () use ($hash, $userid) {
if (self::whereUserid($userid)->withoutTrashed()->lockForUpdate()->exists()) { if (self::whereUserid($userid)->withoutTrashed()->lockForUpdate()->exists()) {
return false; return null;
} }
return (bool)self::record(); return self::record() ? $hash : null;
}); });
} }
@ -285,6 +285,7 @@ class UserDevice extends AbstractModel
} }
if (isset($hash)) { if (isset($hash)) {
Cache::forget(self::ck($hash)); Cache::forget(self::ck($hash));
UmengAlias::whereDeviceHash($hash)->delete();
} }
} }
} }

View File

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddDeviceHashAndUserLangToUmengAliasTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('umeng_alias', function (Blueprint $table) {
if (!Schema::hasColumn('umeng_alias', 'device_hash')) {
$table->string('device_hash')->index()->nullable()->after('device')->comment('设备哈希值用于关联UserDevice表');
$table->string('user_lang', 10)->nullable()->after('device_hash')->comment('用户语言');
}
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('umeng_alias', function (Blueprint $table) {
$table->dropColumn(['device_hash', 'user_lang']);
});
}
}

View File

@ -231,8 +231,8 @@ services:
deploy: deploy:
resources: resources:
limits: limits:
cpus: '1' cpus: '2'
memory: 1G memory: 4G
networks: networks:
extnetwork: extnetwork:
ipv4_address: "${APP_IPPR}.15" ipv4_address: "${APP_IPPR}.15"