belongsTo(AdminUsersMemberLevel::class, 'member_level_id', 'id') ->select(['id','name','tag']); } // 重置套餐头衔提成 public static function resetRoyalty($package_id, $package_member_level_royalty) { DB::beginTransaction(); try { // 获取所有头衔id列表 $member_level_list = AdminUsersMemberLevel::pluck('id')->toArray(); // 获取当前修改的头衔id $member_level_ids = []; foreach ($package_member_level_royalty as $key => $value) { $member_level_ids[] = $value['member_level_id']; $package_member_level = self::where('package_id', $package_id)->where('member_level_id', $value['member_level_id'])->first(); if ($package_member_level) { $package_member_level->royalty_yj = $value['royalty_yj']; $package_member_level->save(); } else { self::create([ 'package_id' => $package_id, 'member_level_id' => $value['member_level_id'], 'royalty_yj' => $value['royalty_yj'], ]); } } // 不设置的头衔id 设置为0 $diff = array_diff($member_level_list, $member_level_ids); if (!empty($diff)) { foreach ($diff as $key => $value) { self::updateOrInsert(['package_id' => $package_id, 'member_level_id' => $value],['royalty_yj' => 0]); } } // 删除不存在的头衔id self::where('package_id', $package_id)->whereNotIn('member_level_id', $member_level_list)->delete(); DB::commit(); return true; } catch (\Throwable $th) { DB::rollBack(); Log::error('重置套餐头衔提成失败', ['data' => $package_member_level_royalty, 'error' => $th]); return false; } } }