1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace App\DataApiNew\Models;
- use Illuminate\Database\Eloquent\SoftDeletes;
- use Illuminate\Database\Eloquent\Model;
- use Dcat\Admin\Traits\HasDateTimeFormatter;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- // 套餐头衔奖金表
- class PackageMemberLevelRoyalty extends Model
- {
- use HasDateTimeFormatter;
- protected $table = 'package_member_level_royalty';
- protected $dateFormat = 'Y-m-d H:i:s';
- // 表字段
- protected $fillable = [
- 'id',
- 'package_id', // 套餐id
- 'member_level_id', // 头衔id
- 'royalty_yj', // 头衔提成佣金
- 'created_at', // 创建时间
- 'updated_at', // 更新时间
- ];
- // 查询字段
- public static $selectFields = [
- 'id',
- 'package_id', // 套餐id
- 'member_level_id', // 头衔id
- 'royalty_yj',
- 'created_at', // 创建时间
- 'updated_at', // 更新时间
- ];
- public function member_level()
- {
- return $this->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;
- }
- }
- }
|