RiceCardOrder.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace app\store\model\card;
  3. use app\common\model\order\RiceCardOrder as RiceCardOrderModel;
  4. use app\common\model\UserVerify;
  5. /**
  6. * 米卡订单模型
  7. * @package app\common\model
  8. */
  9. class RiceCardOrder extends RiceCardOrderModel
  10. {
  11. protected $append = [
  12. 'state_text',
  13. 'pay_type_text',
  14. 'rice_card_type_text'
  15. ];
  16. /**
  17. * 订单状态文字描述
  18. * @param $value
  19. * @param $data
  20. * @return string
  21. */
  22. public function getStateTextAttr($value, $data)
  23. {
  24. $value = '-';
  25. // 已付款
  26. if ($data['pay_status'] == 1) {
  27. $value = '已付款';
  28. }
  29. // 已取消
  30. if ($data['order_status'] == 40) {
  31. $value = '已关闭';
  32. }
  33. if ($data['order_status'] == 10 && $data['pay_status'] == 0) {
  34. $value = '待付款';
  35. }
  36. return $value;
  37. }
  38. public function getPayTypeTextAttr($value, $data)
  39. {
  40. return self::PAY_TYPE[$data['pay_type']] ?? '';
  41. }
  42. public function getRiceCardTypeTextAttr($value, $data)
  43. {
  44. return RiceCard::TYPE[$data['rice_card_type']] ?? '';
  45. }
  46. public function getList(array $param = [])
  47. {
  48. // 检索查询条件
  49. $filter = $this->getQueryFilter($param);
  50. $userVerifyModel = new UserVerify();
  51. /* $userCardModel = new UserRiceCard();
  52. $startTime = date("Y-m-d H:i:s",strtotime("-1 year"));
  53. $endTime = date("Y-m-d H:i:s");*/
  54. // 查询列表数据
  55. return $this->with(['user.avatar'])
  56. ->alias('order')
  57. ->field('order.*')
  58. ->leftJoin('user', 'user.user_id = order.user_id')
  59. ->where($filter)
  60. ->where('order.is_del', '=', 0)
  61. ->order(['order.create_time' => 'desc'])
  62. ->paginate(15)->each(function ($item) use ($userVerifyModel){
  63. $item->user_verify = $userVerifyModel->where('user_id',$item->user_id)->field('mobile,user_name,id_card')->find();
  64. });
  65. }
  66. /**
  67. * 设置检索查询条件
  68. * @param array $param
  69. * @return array
  70. */
  71. private function getQueryFilter(array $param)
  72. {
  73. // 查询参数
  74. $params = $this->setQueryDefaultValue($param, [
  75. 'state' => -1, // 订单状态(10待付款 30已付款 40交易关闭)
  76. 'pay_type' => -1, // 支付方式(10余额支付 20微信支付)
  77. 'order_no' => '', // 订单编号
  78. 'rice_card_name' => '', // 米卡名称
  79. 'rice_card_type' => -1, // 米卡类型 1-电子套餐卡 2-电子现金卡 3-电子实物兑换卡
  80. 'nick_name' => '', // 付款人姓名
  81. 'mobile' => '', // 付款人手机号
  82. 'betweenTime' => [], // 下单起止时间
  83. 'betweenPayTime' => [], // 付款起止时间
  84. ]);
  85. // 检索查询条件
  86. $filter = [];
  87. if ($params['state'] == 10) { // 待付款
  88. $filter[] = ["order.order_status", '=', 10];
  89. $filter[] = ["order.pay_status", '=', 0];
  90. } elseif ($params['state'] == 30) { // 已付款
  91. $filter[] = ["order.pay_status", '=', 1];
  92. } elseif ($params['state'] == 40) { // 已关闭
  93. $filter[] = ["order.order_status", '=', 40];
  94. }
  95. $params['pay_type'] > -1 && $filter[] = ["order.pay_type", '=', $params['pay_type']];
  96. !empty($params['order_no']) && $filter[] = ["order.order_no", 'like', "%{$params['order_no']}%"];
  97. !empty($params['rice_card_name']) && $filter[] = ["order.rice_card_name", 'like', "%{$params['rice_card_name']}%"];
  98. $params['rice_card_type'] > -1 && $filter[] = ["order.rice_card_type", '=', $params['rice_card_type']];
  99. !empty($params['nick_name']) && $filter[] = ["user.nick_name", 'like', "%{$params['nick_name']}%"];
  100. !empty($params['mobile']) && $filter[] = ["order.user_mobile", 'like', "%{$params['mobile']}%"];
  101. // 下单起止时间
  102. if (!empty($params['betweenTime'])) {
  103. if (isset($params['betweenTime'][0]) && $params['betweenTime'][0] && isset($params['betweenTime'][1]) && $params['betweenTime'][1]) {
  104. $times = between_date($params['betweenTime']);
  105. $filter[] = ['order.create_time', 'between', [$times['start_date'], $times['end_date']]];
  106. }
  107. }
  108. // 付款起止时间
  109. if (!empty($params['betweenPayTime'])) {
  110. if (isset($params['betweenPayTime'][0]) && $params['betweenPayTime'][0] && isset($params['betweenPayTime'][1]) && $params['betweenPayTime'][1]) {
  111. $times = between_date($params['betweenPayTime']);
  112. $filter[] = ['order.pay_time', 'between', [$times['start_date'], $times['end_date']]];
  113. }
  114. }
  115. return $filter;
  116. }
  117. }