ProfitShareReceiverModel.php 1.6 KB

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