PackageMemberLevelRoyalty.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\DataApiNew\Models;
  3. use Illuminate\Database\Eloquent\SoftDeletes;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Dcat\Admin\Traits\HasDateTimeFormatter;
  6. use Illuminate\Support\Facades\DB;
  7. use Illuminate\Support\Facades\Log;
  8. // 套餐头衔奖金表
  9. class PackageMemberLevelRoyalty extends Model
  10. {
  11. use HasDateTimeFormatter;
  12. protected $table = 'package_member_level_royalty';
  13. protected $dateFormat = 'Y-m-d H:i:s';
  14. // 表字段
  15. protected $fillable = [
  16. 'id',
  17. 'package_id', // 套餐id
  18. 'member_level_id', // 头衔id
  19. 'royalty_yj', // 头衔提成佣金
  20. 'created_at', // 创建时间
  21. 'updated_at', // 更新时间
  22. ];
  23. // 查询字段
  24. public static $selectFields = [
  25. 'id',
  26. 'package_id', // 套餐id
  27. 'member_level_id', // 头衔id
  28. 'royalty_yj',
  29. 'created_at', // 创建时间
  30. 'updated_at', // 更新时间
  31. ];
  32. public function member_level()
  33. {
  34. return $this->belongsTo(AdminUsersMemberLevel::class, 'member_level_id', 'id')
  35. ->select(['id','name','tag']);
  36. }
  37. // 重置套餐头衔提成
  38. public static function resetRoyalty($package_id, $package_member_level_royalty)
  39. {
  40. DB::beginTransaction();
  41. try {
  42. // 获取所有头衔id列表
  43. $member_level_list = AdminUsersMemberLevel::pluck('id')->toArray();
  44. // 获取当前修改的头衔id
  45. $member_level_ids = [];
  46. foreach ($package_member_level_royalty as $key => $value) {
  47. $member_level_ids[] = $value['member_level_id'];
  48. $package_member_level = self::where('package_id', $package_id)->where('member_level_id', $value['member_level_id'])->first();
  49. if ($package_member_level) {
  50. $package_member_level->royalty_yj = $value['royalty_yj'];
  51. $package_member_level->save();
  52. } else {
  53. self::create([
  54. 'package_id' => $package_id,
  55. 'member_level_id' => $value['member_level_id'],
  56. 'royalty_yj' => $value['royalty_yj'],
  57. ]);
  58. }
  59. }
  60. // 不设置的头衔id 设置为0
  61. $diff = array_diff($member_level_list, $member_level_ids);
  62. if (!empty($diff)) {
  63. foreach ($diff as $key => $value) {
  64. self::updateOrInsert(['package_id' => $package_id, 'member_level_id' => $value],['royalty_yj' => 0]);
  65. }
  66. }
  67. // 删除不存在的头衔id
  68. self::where('package_id', $package_id)->whereNotIn('member_level_id', $member_level_list)->delete();
  69. DB::commit();
  70. return true;
  71. } catch (\Throwable $th) {
  72. DB::rollBack();
  73. Log::error('重置套餐头衔提成失败', ['data' => $package_member_level_royalty, 'error' => $th]);
  74. return false;
  75. }
  76. }
  77. }