Order.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace app\admin\model\shopro\commission;
  3. use app\admin\model\shopro\Common;
  4. use app\admin\model\shopro\user\User as UserModel;
  5. use app\admin\model\shopro\order\Order as OrderModel;
  6. use app\admin\model\shopro\order\OrderItem as OrderItemModel;
  7. class Order extends Common
  8. {
  9. const COMMISSION_ORDER_STATUS_NO = 0; // 不计入
  10. const COMMISSION_ORDER_STATUS_YES = 1; // 已计入
  11. const COMMISSION_ORDER_STATUS_CANCEL = -1; // 已取消
  12. const COMMISSION_ORDER_STATUS_BACK = -2; // 已扣除
  13. protected $name = 'shopro_commission_order';
  14. protected $type = [
  15. 'commission_rules' => 'json',
  16. 'commission_time' => 'timestamp'
  17. ];
  18. protected $append = [
  19. 'reward_event_text',
  20. 'reward_type_text',
  21. 'commission_order_status_text',
  22. 'commission_reward_status_text'
  23. ];
  24. public function getRewardEventTextAttr($value, $data)
  25. {
  26. $value = $value ?: ($data['reward_event'] ?? '');
  27. $eventMap = [
  28. 'paid' => '支付后结算',
  29. 'confirm' => '收货后结算',
  30. 'finish' => '订单完成结算',
  31. 'admin' => '手动结算'
  32. ];
  33. return isset($eventMap[$value]) ? $eventMap[$value] : '-';
  34. }
  35. public function getRewardTypeTextAttr($value, $data)
  36. {
  37. $value = $value ?: ($data['reward_type'] ?? '');
  38. $eventMap = [
  39. 'goods_price' => '商品价',
  40. 'pay_price' => '实际支付价'
  41. ];
  42. return isset($eventMap[$value]) ? $eventMap[$value] : '-';
  43. }
  44. public function getCommissionOrderStatusTextAttr($value, $data)
  45. {
  46. $value = $value ?: ($data['commission_order_status'] ?? '');
  47. $eventMap = [
  48. -2 => '已扣除',
  49. -1 => '已取消',
  50. 0 => '不计入',
  51. 1 => '已计入'
  52. ];
  53. return isset($eventMap[$value]) ? $eventMap[$value] : '-';
  54. }
  55. public function getCommissionRewardStatusTextAttr($value, $data)
  56. {
  57. $value = $value ?: ($data['commission_reward_status'] ?? '');
  58. $eventMap = [
  59. -2 => '已退回',
  60. -1 => '已取消',
  61. 0 => '未结算',
  62. 1 => '已结算'
  63. ];
  64. return isset($eventMap[$value]) ? $eventMap[$value] : '-';
  65. }
  66. public function scopeBack($query)
  67. {
  68. return $query->where('commission_order_status', self::COMMISSION_ORDER_STATUS_BACK);
  69. }
  70. public function scopeYes($query)
  71. {
  72. return $query->where('commission_order_status', self::COMMISSION_ORDER_STATUS_YES);
  73. }
  74. public function scopeCancel($query)
  75. {
  76. return $query->where('commission_order_status', self::COMMISSION_ORDER_STATUS_CANCEL);
  77. }
  78. public function buyer()
  79. {
  80. return $this->belongsTo(UserModel::class, 'buyer_id', 'id')->field('id, nickname, avatar, mobile');
  81. }
  82. public function agent()
  83. {
  84. return $this->belongsTo(UserModel::class, 'agent_id', 'id')->field('id, nickname, avatar, mobile');
  85. }
  86. public function order()
  87. {
  88. return $this->belongsTo(OrderModel::class, 'order_id', 'id');
  89. }
  90. public function orderItem()
  91. {
  92. return $this->belongsTo(OrderItemModel::class, 'order_item_id', 'id');
  93. }
  94. public function rewards()
  95. {
  96. return $this->hasMany(Reward::class, 'commission_order_id', 'id');
  97. }
  98. }