Agent.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace app\admin\model\shopro\commission;
  3. use app\admin\model\shopro\Common;
  4. use app\admin\model\shopro\user\User;
  5. class Agent extends Common
  6. {
  7. protected $pk = 'user_id';
  8. protected $name = 'shopro_commission_agent';
  9. protected $type = [
  10. 'become_time' => 'timestamp',
  11. 'apply_info' => 'json',
  12. 'child_agent_level_1' => 'json',
  13. 'child_agent_level_all' => 'json',
  14. ];
  15. protected $append = [
  16. 'status_text',
  17. 'pending_reward'
  18. ];
  19. // 分销商状态 AGENT_STATUS
  20. const AGENT_STATUS_NORMAL = 'normal'; // 正常
  21. const AGENT_STATUS_PENDING = 'pending'; // 审核中 不分佣、不打款、没有团队信息
  22. const AGENT_STATUS_FREEZE = 'freeze'; // 冻结 正常记录分佣、不打款,记录业绩和团队信息 冻结解除后立即打款
  23. const AGENT_STATUS_FORBIDDEN = 'forbidden'; // 禁用 不分佣、不记录业绩和团队信息
  24. const AGENT_STATUS_NEEDINFO = 'needinfo'; // 需要完善表单资料 临时状态
  25. const AGENT_STATUS_REJECT = 'reject'; // 审核驳回, 重新修改 临时状态
  26. const AGENT_STATUS_NULL = NULL; // 未满足成为分销商条件
  27. // 分销商升级锁 UPGRADE_LOCK
  28. const UPGRADE_LOCK_OPEN = 1; // 禁止分销商升级
  29. const UPGRADE_LOCK_CLOSE = 0; // 允许分销商升级
  30. public function statusList()
  31. {
  32. return [
  33. 'normal' => '正常',
  34. 'pending' => '审核中',
  35. 'freeze' => '冻结',
  36. 'forbidden' => '禁用',
  37. 'reject' => '拒绝'
  38. ];
  39. }
  40. /**
  41. * 可用分销商
  42. */
  43. public function scopeAvaliable($query)
  44. {
  45. return $query->where('status', 'in', [self::AGENT_STATUS_NORMAL, self::AGENT_STATUS_FREEZE]);
  46. }
  47. public function user()
  48. {
  49. return $this->belongsTo(User::class, 'user_id', 'id')->field('id, nickname, avatar, mobile, total_consume, parent_user_id');
  50. }
  51. public function levelInfo()
  52. {
  53. return $this->belongsTo(Level::class, 'level', 'level')->field(['level', 'name', 'image', 'commission_rules']);
  54. }
  55. public function getPendingRewardAttr($value, $data)
  56. {
  57. $amount = Reward::pending()->where('agent_id', $data['user_id'])->sum('commission');
  58. return number_format($amount, 2, '.', '');
  59. }
  60. public function levelStatusInfo()
  61. {
  62. return $this->belongsTo(Level::class, 'level_status', 'level');
  63. }
  64. public function upgradeLevel()
  65. {
  66. return $this->belongsTo(Level::class, 'level_status', 'level');
  67. }
  68. }