|
|
<?php
namespace App\Models;
use App\Admin\Common\Rpc;use Dcat\Admin\Traits\HasDateTimeFormatter;use App\Models\v3\Market as MarketModel;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Facades\DB;use App\Models\v3\LanzuEmployees as EmployeesModel;
class ImsCjdcOrderMain extends Model{ // 线上订单,外卖
const ORDER_TYPE_ONLINE = 1; // 线下订单,当面付
const ORDER_TYPE_OFFLINE = 4;
// 配送方式:1服务站配送,2达达配送,3用户自提 shipping_type
const ORDER_SHIPPING_TYPE_MARKET = 1; const ORDER_SHIPPING_TYPE_DADA = 2; const ORDER_SHIPPING_TYPE_USER_SELF = 3;
// 订单状态
// 待付款
const ORDER_STATE_UNPAY = 1; // 待接单
const ORDER_STATE_UNTAKE = 2; // 待送达
const ORDER_STATE_DELIVERY = 3; // 已完成
const ORDER_STATE_COMPLETE = 4; // 已评价
const ORDER_STATE_EVALUATED = 5; // 已取消
const ORDER_STATE_CANCEL = 6; // 已拒单
const ORDER_STATE_REFUSE = 7; // 退款中
const ORDER_STATE_REFUNDING = 8; // 已退款
const ORDER_STATE_REFUNDED = 9; // 拒绝退款
const ORDER_STATE_UNREFUND = 10; // 部分退款
const ORDER_STATE_REBATES = 11; // 完成状态组合
const ORDER_STATE_FINISH = [self::ORDER_STATE_COMPLETE, self::ORDER_STATE_EVALUATED, self::ORDER_STATE_UNREFUND, self::ORDER_STATE_REBATES];
const STATE_LIST = [ self::ORDER_STATE_UNPAY => '待支付', self::ORDER_STATE_UNTAKE => '待接单', self::ORDER_STATE_DELIVERY => '待送达', self::ORDER_STATE_COMPLETE => '已完成', self::ORDER_STATE_EVALUATED => '已评价', self::ORDER_STATE_CANCEL => '已取消', self::ORDER_STATE_REFUSE => '已拒单', self::ORDER_STATE_REFUNDING => '退款中', self::ORDER_STATE_REFUNDED => '已退款', self::ORDER_STATE_UNREFUND => '拒绝退款', self::ORDER_STATE_REBATES => '部分退款', ]; const SHIPPING_TYPE_LIST = [ self::ORDER_SHIPPING_TYPE_MARKET => '服务站配送', self::ORDER_SHIPPING_TYPE_DADA => '达达配送', self::ORDER_SHIPPING_TYPE_USER_SELF => '用户自提' ]; const TABLE_NAME = 'lanzu_order_main'; // 订单支付方式
// 微信支付
const ORDER_PAY_WX = 1; // 余额支付
const ORDER_PAY_BALANCE = 2;
use HasDateTimeFormatter; protected $table = 'lanzu_order_main'; public $timestamps = false;
public static $tableName = 'lanzu_order_main';
public function imsCjdcUser() { return $this->hasOne('\App\Models\ImsCjdcUser', 'id', 'user_id'); }
public function market() { return $this->hasOne('\App\Models\ImsCjdcMarket', 'id', 'market_id'); }
/** * 变更订单状态, * @param $oid //主订单id
* @param $state //订单状态
*/ public function modifyState($oid, $state) { $where = []; $where['state'] = $state; $where['updated_at'] = time(); if ($state == 3) { $where['receive_time'] = time(); } elseif ($state == 4) { $where['complete_time'] = time(); } elseif ($state == 6) { $where['cancel_time'] = time(); }
return self::where('id', $oid)->update($where);
}
public function updateShippingType($oid, $type) { return self::where('id', $oid)->update(['shipping_type' => $type]); }
public static function getOrderData($oid) { $order = ImsCjdcOrderMain::where('id', $oid)->first()->toArray(); $order['created_at'] = date('Y-m-d H:i:s', $order['created_at']); $order['updated_at'] = $order['updated_at'] ? date('Y-m-d H:i:s', $order['updated_at']) : null; $order['pay_type'] = config('order.pay_type')[$order['pay_type']]; $order['shipping_type_num'] = $order['shipping_type']; $order['shipping_type'] = config('order.shipping_type')[$order['shipping_type']]; $order['horseman_name'] = $order['shipping_name'] ?? LanzuServiceHorseman::getName($order['horseman_id']);
// 获取市场
$marketId = $order['market_id']?$order['market_id']:0; $market = MarketModel::getMarketInfo($marketId,['name','lat','lng']);
$order['market_name'] = $market?$market['name']:''; $order['market_lat'] = $market?$market['lat']:''; $order['market_lng'] = $market?$market['lng']:'';
//获取市场经纬度
//$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray();
//$order['distance'] = Rpc::getDistance($market['lng'],$market['lat'],$order['lng'],$order['lat'])['result'];
if ($order['delivery_distance'] > 1000) { $order['delivery_distance'] = number_format(($order['delivery_distance'] / 1000), 1) . 'km'; } else { $order['delivery_distance'] .= '米'; } return $order; }
/** * 根据订单状态统计数量 * @param $state * @param null $marketId * @return mixed */ public static function getOrderStateCount($state, $marketId = null) { $builder = self::where('type', 1) ->where('created_at','>=',time()-(7*86400)); if ($marketId) { $builder = $builder->where('market_id',$marketId); } if ($state==3){ $builder = $builder->where('state',$state)->where('shipping_type',1)->where('horseman_id',0); }elseif ($state==311){ $builder = $builder->where('state',3)->where('shipping_type',1)->where('horseman_id','>',0); }else{ $builder = $builder->where('state',$state); } $count = $builder->count(); return $count; }
/** * 关联懒族员工表 */ public function employees() { return $this->belongsTo(new EmployeesModel(),'horseman_id','id','left'); }}
|