Reward.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace app\common\model\commission;
  3. use app\common\model\User as UserModel;
  4. use app\common\model\Order as OrderModel;
  5. use app\common\model\OrderGoods as OrderItemModel;
  6. use think\Model;
  7. class Reward extends Model
  8. {
  9. const COMMISSION_REWARD_STATUS_PENDING = 0; // 未结算、待入账
  10. const COMMISSION_REWARD_STATUS_ACCOUNTED = 1; // 已结算、已入账
  11. const COMMISSION_REWARD_STATUS_CANCEL = -1; // 已取消
  12. const COMMISSION_REWARD_STATUS_BACK = -2; // 已退回
  13. protected $name = 'shop_commission_reward';
  14. // 定义时间戳字段名
  15. protected $createTime = 'createtime';
  16. protected $updateTime = 'updatetime';
  17. protected $type = [
  18. 'commission_rules' => 'json',
  19. 'commission_time' => 'timestamp'
  20. ];
  21. protected $append = [
  22. 'status_text',
  23. 'type_text'
  24. ];
  25. public function statusList()
  26. {
  27. return [
  28. -2 => '已退回',
  29. -1 => '已取消',
  30. 0 => '未结算',
  31. 1 => '已结算'
  32. ];
  33. }
  34. public function typeList()
  35. {
  36. return [
  37. 'commission' => '佣金钱包',
  38. 'money' => '余额钱包',
  39. 'score' => '积分钱包',
  40. 'bank' => '企业付款到银行卡',
  41. 'change' => '企业付款到零钱'
  42. ];
  43. }
  44. /**
  45. * 获取状态文本
  46. */
  47. public function getStatusTextAttr($value, $data)
  48. {
  49. $status = isset($data['status']) ? $data['status'] : $this->getData('status');
  50. $statusList = $this->statusList();
  51. return isset($statusList[$status]) ? $statusList[$status] : '未知';
  52. }
  53. /**
  54. * 获取类型文本
  55. */
  56. public function getTypeTextAttr($value, $data)
  57. {
  58. $type = isset($data['type']) ? $data['type'] : $this->getData('type');
  59. $typeList = $this->typeList();
  60. return isset($typeList[$type]) ? $typeList[$type] : '未知';
  61. }
  62. /**
  63. * 待入账
  64. */
  65. public function scopePending($query)
  66. {
  67. return $query->where('status', self::COMMISSION_REWARD_STATUS_PENDING);
  68. }
  69. /**
  70. * 已退回
  71. */
  72. public function scopeBack($query)
  73. {
  74. return $query->where('status', self::COMMISSION_REWARD_STATUS_BACK);
  75. }
  76. /**
  77. * 已入账
  78. */
  79. public function scopeAccounted($query)
  80. {
  81. return $query->where('status', self::COMMISSION_REWARD_STATUS_ACCOUNTED);
  82. }
  83. /**
  84. * 已取消
  85. */
  86. public function scopeCancel($query)
  87. {
  88. return $query->where('status', self::COMMISSION_REWARD_STATUS_CANCEL);
  89. }
  90. /**
  91. * 待入账和已入账
  92. *
  93. * @return void
  94. */
  95. public function scopeIncome($query)
  96. {
  97. return $query->where('status', 'in', [self::COMMISSION_REWARD_STATUS_ACCOUNTED, self::COMMISSION_REWARD_STATUS_PENDING]);
  98. }
  99. public function buyer()
  100. {
  101. return $this->belongsTo(UserModel::class, 'buyer_id', 'id')->field('id, nickname, avatar, mobile');
  102. }
  103. public function agent()
  104. {
  105. return $this->belongsTo(UserModel::class, 'agent_id', 'id')->field('id, nickname, avatar, mobile');
  106. }
  107. public function order()
  108. {
  109. return $this->belongsTo(OrderModel::class, 'order_id', 'id');
  110. }
  111. public function orderItem()
  112. {
  113. return $this->belongsTo(OrderItemModel::class, 'order_item_id', 'id');
  114. }
  115. /**
  116. * 关联分销订单
  117. */
  118. public function commissionOrder()
  119. {
  120. return $this->belongsTo('app\common\model\commission\Order', 'commission_order_id', 'id');
  121. }
  122. }