1 line
23 KiB
PHP
1 line
23 KiB
PHP
<?php
|
||
namespace app\api\model\food;
|
||
|
||
use app\common\model\food\Order as OrderModel;
|
||
use app\api\model\Setting as SettingModel;
|
||
use hema\delivery\Driver as Delivery;
|
||
use hema\wechat\Pay as WxPay;
|
||
use hema\alipay\Driver as AlipayPay;
|
||
use think\facade\Cache;
|
||
use think\facade\Db;
|
||
|
||
|
||
/**
|
||
* 订单模型
|
||
*/
|
||
class Order extends OrderModel
|
||
{
|
||
/**
|
||
* 隐藏字段
|
||
*/
|
||
protected $hidden = [
|
||
|
||
];
|
||
|
||
/**
|
||
* 订单确认-购物车结算
|
||
*/
|
||
public function getCart($order_mode,$shop_id,$user_id,$table_id)
|
||
{
|
||
$model = new Cart(self::$applet_id,$shop_id,$user_id,$table_id);
|
||
return $model->getList($order_mode);
|
||
}
|
||
|
||
/**
|
||
* 新增订单
|
||
*/
|
||
public function add(array $order,$coupon_user_id)
|
||
{
|
||
$order['order_no'] = order_no();
|
||
$order['activity_price'] = $order['activity_price'] + $order['vip_price'];//卡券优惠+会员优惠
|
||
$order['total_price'] = $order['order_total_price'];
|
||
$order['pay_price'] = $order['order_pay_price']; //实付金额
|
||
// 开启事务
|
||
Db::startTrans();
|
||
try {
|
||
// 记录订单信息
|
||
$this->save($order);
|
||
// 订单商品列表
|
||
$goodsList = [];
|
||
foreach ($order['goods_list'] as $goods) {
|
||
/* @var Goods $goods */
|
||
$goodsList[] = [
|
||
'user_id' => $order['user_id'],
|
||
'applet_id' => $order['applet_id'],
|
||
'goods_id' => $goods['goods_id'],
|
||
'goods_name' => $goods['goods_name'],
|
||
'image_id' => isset($goods['goods_sku']['image']['url'])?$goods['goods_sku']['image_id']:$goods['image'][0]['image_id'],
|
||
'spec_type' => $goods['spec_type'],
|
||
'spec_sku_id' => $goods['goods_sku']['spec_sku_id'],
|
||
'goods_spec_id' => $goods['goods_sku']['goods_spec_id'],
|
||
'goods_attr' => $goods['goods_sku']['goods_attr'],
|
||
'content' => $goods['content'],
|
||
'goods_price' => $goods['goods_sku']['goods_price'],
|
||
'line_price' => $goods['goods_sku']['line_price'],
|
||
'total_num' => $goods['total_num'],
|
||
'total_price' => $goods['total_price'],
|
||
];
|
||
}
|
||
//核销优惠券
|
||
if($coupon_user_id){
|
||
$coupon = CouponUser::get($coupon_user_id,['coupon']);
|
||
//满赠券
|
||
if($coupon['type']['value'] == 30){
|
||
//3满赠 = { condition=满足数值条件 {10金额 20数量} num = 数值 type = 赠品类型 {10优惠券 20商品} gift = 礼物{ id=编号 name=名称 image=图片 }
|
||
if($coupon['coupon']['values']['type'] == 10){
|
||
//优惠券
|
||
$quan[0] = Coupon::get($coupon['coupon']['values']['gift']['id']);
|
||
$model = new CouponUser;
|
||
$model->add($quan,$order['user_id']);
|
||
}
|
||
if($coupon['coupon']['values']['type'] == 20){
|
||
//商品
|
||
$goods = Goods::detail($coupon['coupon']['values']['gift']['id']);
|
||
$goodsList[] = [
|
||
'user_id' => $order['user_id'],
|
||
'applet_id' => $order['applet_id'],
|
||
'goods_id' => $goods['goods_id'],
|
||
'goods_name' => $goods['goods_name'],
|
||
'spec_type' => $goods['spec_type'],
|
||
'total_num' => 1,
|
||
'total_price' => 0.00,
|
||
'content' => $goods['content'],
|
||
'image_id' => $goods['image'][0]['image_id'],
|
||
'spec_sku_id' => $goods['spec'][0]['spec_sku_id'],
|
||
'goods_spec_id' => $goods['spec'][0]['goods_spec_id'],
|
||
'goods_attr' => '赠品',
|
||
'goods_price' => $goods['spec'][0]['goods_price'],
|
||
'line_price' => $goods['spec'][0]['line_price'],
|
||
];
|
||
}
|
||
}
|
||
$coupon->remove();
|
||
}
|
||
// 保存订单商品信息
|
||
$this->goods()->saveAll($goodsList);
|
||
//如果是外卖,记录收货地址
|
||
if($order['order_mode']==20){
|
||
$this->address()->save([
|
||
'user_id' => $order['user_id'],
|
||
'applet_id' => $order['applet_id'],
|
||
'name' => $order['address']['name'],
|
||
'gender' => $order['address']['gender']['value'],
|
||
'phone' => $order['address']['phone'],
|
||
'location' => $order['address']['location'],
|
||
'province' => $order['address']['province'],
|
||
'city' => $order['address']['city'],
|
||
'district' => $order['address']['district'],
|
||
'detail' => $order['address']['detail'],
|
||
]);
|
||
}
|
||
Db::commit();
|
||
return true;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 订单详情
|
||
*/
|
||
public static function getUserOrderDetail($order_id, $user_id)
|
||
{
|
||
if (!$order = self::get(['order_id' => $order_id,'user_id' => $user_id], ['goods' => ['spec', 'goods','image'], 'address', 'shop', 'table','delivery'])) {
|
||
$this->error = '订单不存在';
|
||
return false;
|
||
}
|
||
return $order;
|
||
}
|
||
|
||
/**
|
||
* 用户支付
|
||
*/
|
||
public function userPay($pay_mode,$mp)
|
||
{
|
||
// 发起微信支付
|
||
if($pay_mode==0){
|
||
$divide = false;//分账状态
|
||
//验证外卖订单是否要分账配送费
|
||
if($this->order_mode['value'] == 20){
|
||
$dv = new Delivery();
|
||
if($company = $dv->company()){
|
||
foreach ($company as $item){
|
||
if($item['name'] != 'sf' AND $item['config']['pay_mode'] == 1){
|
||
$divide = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//获取小程序配置的支付参数
|
||
$wxpay = new WxPay(SettingModel::getItem('wxpay',self::$applet_id));
|
||
if($mp == 'h5'){
|
||
if(!$result = $wxpay->h5($this->order_no,$this->pay_price,'api/food.notify/order/appletid/'.self::$applet_id,'订单支付')){
|
||
$this->error = $wxpay->getError();
|
||
return false;
|
||
}
|
||
}else{
|
||
if(!$result = $wxpay->jsapi($this->order_no,$this->pay_price,$this->user['open_id'],'api/food.notify/order/appletid/'.self::$applet_id,'订单支付')){
|
||
$this->error = $wxpay->getError();
|
||
return false;
|
||
}
|
||
}
|
||
$this->pay_mode = 0;//微信
|
||
$this->save();
|
||
return [
|
||
'payment' => $result,
|
||
'order_id' => $this->order_id
|
||
];
|
||
}
|
||
//支付宝小程序支付
|
||
if($pay_mode == 3){
|
||
$alipay = new AlipayPay(self::$applet_id);
|
||
if($mp == 'h5'){
|
||
if(!$result = $alipay->tradeWapPay($this->order_no,$this->pay_price,'api/food.notify/alipayOrder/appletid/'.self::$applet_id,'h5/food/#/pages/order/detail?id='.$this->order_id,'订单支付')){
|
||
$this->error = $alipay->getError();
|
||
return false;
|
||
}
|
||
}else{
|
||
if(!$result = $alipay->tradeCreate($this->order_no,$this->pay_price,$this->user['open_id'],'api/food.notify/alipayOrder/appletid/'.self::$applet_id,'订单支付')){
|
||
$this->error = $alipay->getError();
|
||
return false;
|
||
}
|
||
}
|
||
$this->pay_mode = 3;//支付宝
|
||
$this->save();
|
||
return [
|
||
'payment' => $result,
|
||
'order_id' => $this->order_id
|
||
];
|
||
}
|
||
//发起余额支付
|
||
if($pay_mode==1){
|
||
$user = User::get($this->user_id);
|
||
if($user['money'] < $this->pay_price){
|
||
$this->error = '余额不足!';
|
||
return false;
|
||
}
|
||
|
||
$user->money = ['dec',$this->pay_price];//扣除余额
|
||
$user->pay = ['inc', $this->pay_price];//增加消费金额
|
||
|
||
$this->pay_mode = 1;// 余额支付
|
||
$this->pay_status = 20;// 支付状态
|
||
|
||
//开通会员才有积分
|
||
if($user['v']['value'] > 0){
|
||
$score = intval($this->pay_price);
|
||
$user->score = ['inc', $score];//增加消费积分
|
||
$model = new Record;
|
||
$model->save([
|
||
'order_no' => $this['order_no'],
|
||
'money' => $score,
|
||
'user_id' => $this['user_id'],
|
||
'shop_id' => $this['shop_id'],
|
||
'applet_id' => $this['applet_id'],
|
||
'mode' => 40,//赠送
|
||
'type' => 90,//积分
|
||
'remark' => '订单支付'
|
||
]);
|
||
}
|
||
$user->save();
|
||
}
|
||
//发起后付款
|
||
if($pay_mode==2){
|
||
$this->pay_status = 30;// 支付状态
|
||
}
|
||
$this->pay_time = time();//付款时间
|
||
$this->save();
|
||
$other = Setting::getItem('other');
|
||
//是否启用库存
|
||
if($other['is_stock'] == 1){
|
||
$stock = true;
|
||
}else{
|
||
$stock = false;
|
||
}
|
||
// 更新商品库存、销量
|
||
$goods = new Goods;
|
||
$goods->updateStockSales($this->goods,$stock);
|
||
Device::push($this->shop_id,'new');//新订单提醒
|
||
Device::print($this);//打印订单
|
||
sand_new_order_msg($this);//发送模板消息 - 使用公众号
|
||
//商家是否自动接单
|
||
if($this->shop['is_order']['value'] == 1){
|
||
$this->setShopStatus();
|
||
//外卖自动推送订单
|
||
if($this->order_mode['value']==20 AND $this->shop['is_delivery']['value'] == 1){
|
||
if(!$this->setDelivery($this->shop['delivery'])){
|
||
$this->error = '外卖自动派单失败!' . $this->getError();
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
return [
|
||
'order_id' => $this->order_id
|
||
];
|
||
}
|
||
|
||
/**
|
||
* 退款订单
|
||
*/
|
||
public function userRefund(array $data)
|
||
{
|
||
$order = Cache::get('refund_' . $this->order_id . '_' . $this->user_id . '_' . $this->shop_id);
|
||
$order['refund_desc'] = $data['desc'];
|
||
$goods = [];
|
||
if($data['mode']==1){
|
||
//全单退
|
||
$order['refund_price'] = $order['pay_price'];
|
||
for($n=0;$n<sizeof($order['goods']);$n++){
|
||
$goods[$n]['order_goods_id'] = $order['goods'][$n]['order_goods_id'];
|
||
$goods[$n]['refund_num'] = $order['goods'][$n]['refund_num'];
|
||
$goods[$n]['refund_price'] = $order['goods'][$n]['refund_price'];
|
||
$order['goods'][$n]['refund_num'] = $order['goods'][$n]['total_num'];
|
||
$order['goods'][$n]['refund_price'] = $order['goods'][$n]['total_price'];
|
||
}
|
||
}else{
|
||
//部分退
|
||
for($n=0;$n<sizeof($order['goods']);$n++){
|
||
$goods[$n]['order_goods_id'] = $order['goods'][$n]['order_goods_id'];
|
||
$goods[$n]['refund_num'] = $order['goods'][$n]['refund_num'];
|
||
$goods[$n]['refund_price'] = $order['goods'][$n]['refund_price'];
|
||
}
|
||
}
|
||
// 开启事务
|
||
Db::startTrans();
|
||
try {
|
||
$this->save([
|
||
'refund_price' => $order['refund_price'],//退款金额
|
||
'refund_desc' => $order['refund_desc'],//退款理由
|
||
'order_status' => 40,//退款状态
|
||
'refund_time' => time(),//退款时间
|
||
]);
|
||
foreach ($goods as $value) {
|
||
OrderGoods::where('order_goods_id',$value['order_goods_id'])->update($value);
|
||
}
|
||
Db::commit();
|
||
sand_refund_msg($order);//给管理和店长发送退款申请模板消息
|
||
Device::print($order,1);//打印退款商品订单
|
||
return true;
|
||
} catch (\Exception $e) {
|
||
Db::rollback();
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 待支付订单详情 - 支付回调
|
||
*/
|
||
public function payDetail($order_no)
|
||
{
|
||
return self::with(['goods','shop','table','address'])->where(['order_no' => $order_no, 'pay_status' => 10])->find();
|
||
}
|
||
|
||
/**
|
||
* 更新付款状态 - 支付回调
|
||
*/
|
||
public function updatePayStatus($transaction_id)
|
||
{
|
||
if($this['pay_status']['value']==20){
|
||
//避免重复回调
|
||
return true;
|
||
}
|
||
$other = Setting::getItem('other',$this['applet_id']);
|
||
//是否启用库存
|
||
if($other['is_stock'] == 1){
|
||
$stock = true;
|
||
}else{
|
||
$stock = false;
|
||
}
|
||
// 更新商品库存、销量
|
||
$GoodsModel = new Goods;
|
||
$GoodsModel->updateStockSales($this->goods,$stock);
|
||
//更新用户信息
|
||
$user = User::get($this->user_id);
|
||
$user->pay = ['inc', $this->pay_price];//增加消费金额
|
||
|
||
$type = 30;//支付方式默认为微信
|
||
$this->pay_mode['value'] == 3 && $type = 40;//支付宝
|
||
|
||
//开通会员才有积分
|
||
if($user['v']['value'] > 0){
|
||
$score = intval($this->pay_price);
|
||
$user->score = ['inc', $score];//增加消费积分
|
||
$record = new Record;
|
||
$record->save([
|
||
'order_no' => $this['order_no'],
|
||
'money' => $score,
|
||
'user_id' => $this['user_id'],
|
||
'shop_id' => $this['shop_id'],
|
||
'applet_id' => $this['applet_id'],
|
||
'mode' => 40,//赠送
|
||
'type' => 90,//积分
|
||
'remark' => '订单支付'
|
||
]);
|
||
}
|
||
$user->save();
|
||
// 更新订单状态
|
||
$this->save([
|
||
'pay_status' => 20,
|
||
'pay_time' => time(),
|
||
'transaction_id' => $transaction_id,
|
||
]);
|
||
//发送新订单提醒,管理员,店长
|
||
sand_new_order_msg($this);
|
||
Device::print($this);//打印订单
|
||
Device::push($this->shop_id,'pay',$this->pay_price);//收款提醒
|
||
//商家是否自动接单
|
||
if($this['shop']['is_order']['value'] == 1){
|
||
$this->setShopStatus();
|
||
//外卖自动推送订单
|
||
if($this['order_mode']['value']==20 AND $this['shop']['is_delivery']['value'] == 1){
|
||
$this->setDelivery($this['shop']['delivery']);
|
||
}
|
||
}
|
||
$money_res = 15;
|
||
if($this->pay_price > $money_res){
|
||
// 推送消息
|
||
// 获取到此用户的unionid
|
||
$find = Db::name('foot_user')->where([
|
||
'user_id' => $this->user_id,
|
||
])->find();
|
||
|
||
if(!empty($find['union_id'])){
|
||
// 查询微信信息表
|
||
$find_we = Db::name('user_wx')->where([
|
||
'union_id' => $find['union_id'],
|
||
])->find();
|
||
if(!empty($find_we)){
|
||
// 发券
|
||
$find_hema_food_coupon_user_wx = Db::name('food_coupon_user_wx')->where([
|
||
'openid' => $find_we['openid'],
|
||
'type' => 2,
|
||
])->find();
|
||
if(empty($find_hema_food_coupon_user_wx)){
|
||
$insert = [
|
||
'openid' => $find_we['openid'],
|
||
'title' => "消费满{$money_res}元免费券",
|
||
'rule' => '',
|
||
'expiretime' => 0,
|
||
'create_time' => time(),
|
||
'update_time' => time(),
|
||
'status' => 1,
|
||
'type' => 2,
|
||
];
|
||
Db::name('food_coupon_user_wx')->insert($insert);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 待退款订单详情 - 微信退款回调
|
||
*/
|
||
public function refundDetail($order_no)
|
||
{
|
||
return self::get(['order_no' => $order_no, 'order_status' => 40, 'refund_status' => 10], ['goods']);
|
||
}
|
||
|
||
/**
|
||
* 更新退款款状态 - 微信退款回调
|
||
*/
|
||
public function updateRefundStatus($refund_id)
|
||
{
|
||
if(!empty($this->refund_id)){
|
||
//避免重复回调
|
||
return true;
|
||
}
|
||
$other = Setting::getItem('other',$this['applet_id']);
|
||
//是否启用库存
|
||
if($other['is_stock'] == 1){
|
||
$stock = true;
|
||
}else{
|
||
$stock = false;
|
||
}
|
||
//更新商品库存、销量
|
||
$GoodsModel = new Goods;
|
||
$GoodsModel->updateStockSales($this['goods'],$stock,false);
|
||
//更新用户信息
|
||
$user = User::get($this->user_id);
|
||
$user->pay = ['dec', $this->refund_price];//扣减消费金额
|
||
|
||
$type = 30;//支付方式默认为微信
|
||
$this->pay_mode['value'] == 3 && $type = 40;//支付宝
|
||
|
||
//开通会员才有积分
|
||
if($user['v']['value'] > 0){
|
||
$score = intval($this->refund_price);
|
||
$user->score = ['dec', $score];//扣减积分
|
||
$record = new Record;
|
||
$record->save([
|
||
'order_no' => $this['order_no'],
|
||
'money' => $score,
|
||
'user_id' => $this['user_id'],
|
||
'shop_id' => $this['shop_id'],
|
||
'applet_id' => $this['applet_id'],
|
||
'mode' => 50,//扣减
|
||
'type' => 90,//积分
|
||
'remark' => '订单退款'
|
||
]);
|
||
}
|
||
$user->save();
|
||
// 更新订单状态
|
||
$this->save([
|
||
'refund_status' => 20,
|
||
'refund_time' => time(),
|
||
'refund_id' => $refund_id,
|
||
]);
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 更新第三方配送状态
|
||
*/
|
||
public function updateDeliveryStatus($data,$mode)
|
||
{
|
||
$dev['delivery_time'] = time();
|
||
if($mode == 'dada'){
|
||
//待接单=1,待取货=2,配送中=3,已完成=4,已取消=5, 指派单=8,妥投异常之物品返回中=9, 妥投异常之物品返回完成=10, 骑士到店=100,创建达达运单失败=1000
|
||
switch ((string)$data['order_status']) {
|
||
case '2': //已接单 - 骑手正赶往商家
|
||
$dev = [
|
||
'delivery_status' => 20,
|
||
'linkman' => $data['dm_name'],
|
||
'phone' => $data['dm_mobile']
|
||
];
|
||
break;
|
||
case '100': //已到店 - 骑手已到店
|
||
$dev = [
|
||
'delivery_status' => 30
|
||
];
|
||
break;
|
||
case '3': //已取件 - 骑手开始配送
|
||
$dev = [
|
||
'delivery_status' => 40
|
||
];
|
||
break;
|
||
case '4';//到达目的地 - 骑手已送达
|
||
$dev = [
|
||
'delivery_status' => 50,
|
||
'status' => 30
|
||
];
|
||
$this->save([
|
||
'delivery_status' => 30,
|
||
'delivery_time' => time()
|
||
]);
|
||
break;
|
||
case '5': //订单被取消
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
default:
|
||
return true;
|
||
}
|
||
}
|
||
if($mode == 'sf'){
|
||
switch ((string)$data['order_status']) {
|
||
case '10': //已接单 - 骑手正赶往商家
|
||
$dev = [
|
||
'delivery_status' => 20,
|
||
'linkman' => $data['operator_name'],
|
||
'phone' => $data['operator_phone']
|
||
];
|
||
break;
|
||
case '12': //到店 - 骑手已到店
|
||
$dev = [
|
||
'delivery_status' => 30
|
||
];
|
||
break;
|
||
case '15': //已取件 - 骑手开始配送
|
||
$dev = [
|
||
'delivery_status' => 40
|
||
];
|
||
break;
|
||
case '17';//到达目的地 - 骑手已送达
|
||
$dev = [
|
||
'delivery_status' => 50,
|
||
'status' => 30
|
||
];
|
||
$this->save([
|
||
'delivery_status' => 30,
|
||
'delivery_time' => time()
|
||
]);
|
||
break;
|
||
case '22': //订单被取消 - 配送员撤单
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
case '2': //订单被取消 - 顺丰原因
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
default:
|
||
return true;
|
||
}
|
||
}
|
||
if($mode == 'uu'){
|
||
//当前状态1下单成功 3跑男抢单 4已到达 5已取件 6到达目的地 10收件人已收货 -1订单取消
|
||
switch ((string)$data['state']) {
|
||
case '3': //已接单 - 骑手正赶往商家
|
||
$dev = [
|
||
'delivery_status' => 20,
|
||
'linkman' => $data['driver_name'],
|
||
'phone' => $data['driver_mobile']
|
||
];
|
||
break;
|
||
case '4': //已到店 - 骑手已到店
|
||
$dev = [
|
||
'delivery_status' => 30
|
||
];
|
||
break;
|
||
case '5': //已取件 - 骑手开始配送
|
||
$dev = [
|
||
'delivery_status' => 40
|
||
];
|
||
break;
|
||
case '6';//到达目的地 - 骑手已送达
|
||
$dev = [
|
||
'delivery_status' => 50,
|
||
'status' => 30
|
||
];
|
||
$this->save([
|
||
'delivery_status' => 30,
|
||
'delivery_time' => time()
|
||
]);
|
||
break;
|
||
case '-1': //订单被取消
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
default:
|
||
return true;
|
||
}
|
||
}
|
||
if($mode == 'make'){
|
||
//loading = 待付款', cancel='订单已取消', payed='待接单',wait_to_shop='待到店', accepted='待取件', geted='待收件',gotoed= '待评价', completed='订单已完成');
|
||
switch ($data['status']) {
|
||
case 'accepted': //已接单 - 骑手正赶往商家
|
||
$dev = [
|
||
'delivery_status' => 20,
|
||
'linkman' => $data['rider_name'],
|
||
'phone' => $data['rider_mobile']
|
||
];
|
||
break;
|
||
case 'wait_to_shop': //已到店 - 骑手已到店
|
||
$dev = [
|
||
'delivery_status' => 30
|
||
];
|
||
break;
|
||
case 'geted': //已取件 - 骑手开始配送
|
||
$dev = [
|
||
'delivery_status' => 40
|
||
];
|
||
break;
|
||
case 'gotoed';//到达目的地 - 骑手已送达
|
||
$dev = [
|
||
'delivery_status' => 50,
|
||
'status' => 30
|
||
];
|
||
$this->save([
|
||
|
||
'delivery_status' => 30,
|
||
'delivery_time' => time()
|
||
]);
|
||
break;
|
||
case 'payed': //订单被取消
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
default:
|
||
return true;
|
||
}
|
||
}
|
||
if($mode == 'shansong'){
|
||
switch ($data['status']) {
|
||
case '30': //已接单
|
||
if($data['subStatus']==1){
|
||
$dev = [
|
||
'delivery_status' => 20,//待取货
|
||
'linkman' => $data['rider_name'],
|
||
'phone' => $data['rider_mobile']
|
||
];
|
||
}else{
|
||
$dev = [
|
||
'delivery_status' => 30//已到店
|
||
];
|
||
}
|
||
break;
|
||
case '40': //已取件
|
||
if($data['subStatus']==1){
|
||
$dev = [
|
||
'delivery_status' => 40//骑手开始配送
|
||
];
|
||
}else{
|
||
return true;
|
||
}
|
||
break;
|
||
case '50';//到达目的地 - 骑手已送达
|
||
$dev = [
|
||
'delivery_status' => 50,
|
||
'status' => 30
|
||
];
|
||
$this->save([
|
||
'delivery_status' => 30,
|
||
'delivery_time' => time()
|
||
]);
|
||
break;
|
||
case '60': //订单被取消
|
||
$dev = [
|
||
'delivery_status' => 10,
|
||
'shop_status' => 20
|
||
];
|
||
$this->save($dev);
|
||
OrderDelivery::where('order_id',$this->order_id)->delete();
|
||
return true;
|
||
break;
|
||
default:
|
||
return true;
|
||
}
|
||
}
|
||
if($dev['delivery_status'] == 20){
|
||
//骑手接单提醒
|
||
$this->sendMessage('horseman',$this->order_id);
|
||
}
|
||
OrderDelivery::where('order_id',$this->order_id)->update($dev);
|
||
return true;
|
||
}
|
||
|
||
}
|
||
|