| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <?php
- /**
- * Created by PhpStorm.
- * Name: 芸众商城系统
- * Author: 广州市芸众信息科技有限公司
- * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
- * Date: 2022/10/20
- * Time: 16:18
- */
- namespace app\backend\modules\refund\models;
- use app\backend\modules\order\models\VueOrder;
- use app\common\models\OrderGoods;
- use app\common\models\refund\RefundGoodsLog;
- use app\framework\Database\Eloquent\Builder;
- /**
- * Class OrderRefund
- * @method static self backendSearch($search)
- * @package app\backend\modules\refund\models
- */
- class OrderRefund extends \app\common\models\refund\RefundApply
- {
- protected $appends = [
- 'plugin_id','refund_type_name', 'status_name',
- 'receive_status_name', 'refund_way_type_name', 'order_type_name',
- ];
- public function getOrderTypeNameAttribute()
- {
- return $this->order->getOrderType()->getName();
- }
- public function getBackendButtonModels()
- {
- return (new \app\backend\modules\refund\services\BackendRefundButtonService($this))->getButtonModels();
- }
- public function getBackendRefundSteps()
- {
- return (new \app\backend\modules\refund\services\steps\RefundStatusStepManager($this))->getStepItems();
- }
- public static function detail($id)
- {
- return self::with([
- 'hasOneMember' => function ($member) {
- $member->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime',
- 'credit1', 'credit2',]);
- },
- 'order',
- 'refundOrderGoods',
- 'processLog',
- 'returnExpress',
- 'hasManyResendExpress',
- 'changeLog',
- ])->find($id);
- }
- public function scopeBackendSearch(Builder $query, $search = [])
- {
- $model = $query->select('yz_order_refund.*');
- if ($search['order_sn']) {
- $model->leftJoin('yz_order', 'yz_order_refund.order_id', 'yz_order.id')
- ->where('yz_order.order_sn', trim($search['order_sn']));
- //$order_id = Order::where('order_sn', $search['order_sn'])->value('id');
- //$model->where('yz_order_refund.order_id', $order_id);
- }
- if ($search['refund_sn']) {
- $model->where('yz_order_refund.refund_sn', trim($search['refund_sn']));
- }
- if (isset($search['refund_type']) && is_numeric($search['refund_type'])) {
- $model->where('refund_type', $search['refund_type']);
- }
- if (isset($search['status']) && is_numeric($search['status'])) {
- if ($search['status'] == 99) {
- $model->whereIn('status', [self::COMPLETE,self::CONSENSUS,self::CLOSE]);
- } else {
- $model->where('status', $search['status']);
- }
- }
- if ($search['member_id']) {
- $model->where('yz_order_refund.uid', $search['member_id']);
- }
- if (!empty($search['member_info']) && isset($search['member_type'])) {
- $model->whereHas('hasOneMember', function ($member) use ($search) {
- $member->select('uid', 'nickname', 'realname', 'mobile', 'avatar')
- ->where(function ($query) use ($search) {
- switch ($search['member_type']) {
- case 1 :
- $query->where('nickname', 'like', '%' . $search['member_info'] . '%');
- break;
- case 2 :
- $query->where('realname', 'like', '%' . $search['member_info'] . '%');
- break;
- case 3 :
- $query->where('mobile', 'like', '%' . $search['member_info'] . '%');
- break;
- default :
- }
- });
- });
- }
- //商品id 商品名称
- if ($search['goods_id'] || $search['goods_title']) {
- $orderGoodsModel = OrderGoods::uniacid();
- if ($search['goods_id']) {
- $orderGoodsModel->where('goods_id', $search['goods_id']);
- }
- if ($search['goods_title']) {
- $orderGoodsModel->where('title', 'like', "%".trim($search['goods_title'])."%");
- }
- $order_ids = $orderGoodsModel->pluck('order_id')->unique()->toArray();
- $model->whereIn('yz_order_refund.order_id', $order_ids);
- }
- //操作时间范围
- if ($search['start_time'] && $search['end_time'] && $search['time_field']) {
- $range = [strtotime($search['start_time']), strtotime($search['end_time'])];
- $model->whereBetween('yz_order_refund.'.$search['time_field'], $range);
- }
- $model->with([
- 'hasOneMember' => function ($member) {
- $member->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime',
- 'credit1', 'credit2',]);
- },
- 'order' => function ($order) {
- $order->with(['address']);
- },
- 'refundOrderGoods',
- ]);
- return $model;
- }
- public function order()
- {
- return $this->belongsTo(VueOrder::class, 'order_id', 'id');
- }
- }
|