ProfitShareReceiverModel.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixShop\Lakala\Model;
  4. use SixShop\Lakala\Enum\ReceiverActionEnum;
  5. use SixShop\Lakala\Enum\ReceiverStatusEnum;
  6. use SixShop\Payment\Enum\NumberBizEnum;
  7. use think\db\Query;
  8. use think\Model;
  9. use think\model\concern\SoftDelete;
  10. class ProfitShareReceiverModel extends Model
  11. {
  12. use SoftDelete;
  13. protected function getOptions(): array
  14. {
  15. return [
  16. 'name' => 'profit_share_receiver',
  17. 'type' => [
  18. 'action' => ReceiverActionEnum::class,
  19. 'status' => ReceiverStatusEnum::class
  20. ],
  21. 'insert' => ['order_no'],
  22. 'readonly' => ['user_id', 'order_no'],
  23. ];
  24. }
  25. protected function setOrderNoAttr($value, $data): string
  26. {
  27. return generate_number(NumberBizEnum::PROFIT_SHARE_RECEIVER, 5);
  28. }
  29. public function getActionTextAttr($value, $data)
  30. {
  31. return $data['action']->toString();
  32. }
  33. public function getStatusTextAttr($value, $data)
  34. {
  35. return $data['status']->toString();
  36. }
  37. public function searchStatusAttr(Query $query, $value, $data)
  38. {
  39. if ($value === null) return;
  40. $status = ReceiverStatusEnum::tryFrom($value);
  41. $status && $query->where('status', $value);
  42. }
  43. public function searchOrderNoAttr(Query $query, $value, $data)
  44. {
  45. $value && $query->where('order_no', 'like', "%{$value}%");
  46. }
  47. }