修正代码合并逻辑,id唯一,先删除后添加

This commit is contained in:
EasyChen 2022-01-25 12:58:05 +08:00
parent ff21e69382
commit 3faff74557

View File

@ -60,7 +60,7 @@ class PushDeerUserController extends Controller
{ {
$validated = $request->validate( $validated = $request->validate(
[ [
'code' => 'string|required', 'code' => 'string',
] ]
); );
@ -115,7 +115,7 @@ class PushDeerUserController extends Controller
{ {
$validated = $request->validate( $validated = $request->validate(
[ [
'idToken' => 'string|required', 'idToken' => 'string',
] ]
); );
@ -163,8 +163,11 @@ class PushDeerUserController extends Controller
); );
$type_field = strtolower($validated['type']) == 'apple' ? 'apple_id' : 'wechat_id'; $type_field = strtolower($validated['type']) == 'apple' ? 'apple_id' : 'wechat_id';
$identiy_string = false; $identiy_string = false;
if ($type_field == 'apple_id') { if ($type_field == 'apple_id') {
$info = getUserDataFromIdentityToken($validated['tokenorcode']); $info = getUserDataFromIdentityToken($validated['tokenorcode']);
@ -194,32 +197,33 @@ class PushDeerUserController extends Controller
} }
$user2delete = PushDeerUser::where($type_field, $identiy_string)->get()->first(); $user2delete = PushDeerUser::where($type_field, $identiy_string)->get()->first();
// 更新对应的字段到当前用户
$current_user = PushDeerUser::where('id', uid())->get()->first(); $current_user = PushDeerUser::where('id', uid())->get()->first();
if ($user2delete && $user2delete['id'] == $current_user['id']) {
return send_error("不能合并当前账号本身", ErrorCode('ARGS'));
}
$current_user[$type_field] = $identiy_string;
$current_user->save();
// 如果存在旧用户,合并并删除 // 如果存在旧用户,合并并删除
if ($user2delete) { if ($user2delete) {
if ($user2delete['id'] == $current_user['id']) {
return send_error("不能合并当前账号本身", ErrorCode('ARGS'));
}
// 删除Key // 删除Key
PushDeerKey::where('uid', $user2delete['id'])->delete(); PushDeerKey::where('uid', $user2delete['id'])->delete();
// message合并 // message合并
PushDeerMessage::where('uid', $user2delete['id'])->update(['uid', uid()]); PushDeerMessage::where('uid', $user2delete['id'])->update(['uid'=>uid()]);
// 设备合并 // 设备合并
PushDeerDevice::where('uid', $user2delete['id'])->update(['uid', uid()]); PushDeerDevice::where('uid', $user2delete['id'])->update(['uid'=>uid()]);
// 删除用户 // 删除用户
$user2delete->delete(); $user2delete->delete();
} }
$current_user[$type_field] = $identiy_string;
$current_user->save();
return http_result(['result'=>'done']); return http_result(['result'=>'done']);
} }
} }