admin/addon/jielong/model/JielongOrderCommon.php

225 lines
7.4 KiB
PHP

<?php
/**
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.cdcloudshop.com
* =========================================================
*/
namespace addon\jielong\model;
use addon\store\model\StoreGoodsSku;
use app\model\BaseModel;
use app\model\order\Order;
/**
* 商品接龙
*/
class JielongOrderCommon extends BaseModel
{
// 订单待付款
const ORDER_CREATE = 0;
//订单完成(尾款已支付)
const ORDER_PAY = 1;
// 订单已关闭
const ORDER_CLOSE = -1;
/**
* 基础订单状态(不同类型的订单可以不使用这些状态,但是不能冲突)
* @var unknown
*/
public $order_status = [
self::ORDER_CREATE => [
'status' => self::ORDER_CREATE,
'name' => '待付款',
'is_allow_refund' => 0,
'icon' => 'public/uniapp/order/order-icon-send.png',
'action' => [
[
'action' => 'orderClose',
'title' => '关闭订单',
'color' => ''
],
[
'action' => 'offlinePayDeposit',
'title' => '线下支付定金',
'color' => ''
],
],
'member_action' => [
[
'action' => 'orderClose',
'title' => '关闭订单',
'color' => ''
],
[
'action' => 'orderPayDeposit',
'title' => '支付定金',
'color' => ''
],
],
'color' => ''
],
self::ORDER_PAY => [
'status' => self::ORDER_PAY,
'name' => '已完成',
'is_allow_refund' => 0,
'icon' => 'public/uniapp/order/order-icon-send.png',
'action' => [],
'member_action' => [],
'color' => ''
],
self::ORDER_CLOSE => [
'status' => self::ORDER_CLOSE,
'name' => '已关闭',
'is_allow_refund' => 0,
'icon' => 'public/uniapp/order/order-icon-close.png',
'action' => [
[
'action' => 'deleteOrder',
'title' => '删除订单',
'color' => ''
],
],
'member_action' => [
[
'action' => 'deleteOrder',
'title' => '删除订单',
'color' => ''
],
],
'color' => ''
],
];
/**
* 订单状态
* @return array
*/
public function getOrderStatus()
{
return $this->success($this->order_status);
}
/**
* 会员接龙订单分页列表
* @param array $condition
* @param int $page
* @param int $page_size
* @param string $order
* @param string $field
* @return array
*/
public function getMemberOrderPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
{
$order_list = model('promotion_jielong_order')->pageList($condition, $field, $order, $page, $page_size);
if (!empty($order_list[ 'list' ])) {
foreach ($order_list[ 'list' ] as $k => $v) {
$order_goods_list = model("order_goods")->getList([
'order_id' => $v[ 'relate_order_id' ]
]);
$order_list[ 'list' ][ $k ][ 'order_goods' ] = $order_goods_list;
$action = empty($v[ "order_status_action" ]) ? [] : json_decode($v[ "order_status_action" ], true);
$member_action = $action[ "member_action" ] ?? [];
$order_list[ 'list' ][ $k ][ 'action' ] = $member_action;
}
}
return $this->success($order_list);
}
/**
* 会员订单详情
* @param $id
* @param $member_id
*/
public function getMemberOrderDetail($id, $member_id, $site_id)
{
$order_info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ], [ "member_id", "=", $member_id ], [ "site_id", "=", $site_id ] ]);
if (empty($order_info))
return $this->error([], "当前订单不是本账号的订单!");
$action = empty($order_info[ "order_status_action" ]) ? [] : json_decode($order_info[ "order_status_action" ], true);
$member_action = $action[ "member_action" ] ?? [];
$order_info[ 'action' ] = $member_action;
$order_goods_list = model('order_goods')->getList([ [ 'order_id', "=", $order_info[ 'relate_order_id' ] ], [ "member_id", "=", $member_id ] ]);
foreach ($order_goods_list as $k => $v) {
$refund_action = empty($v[ "refund_status_action" ]) ? [] : json_decode($v[ "refund_status_action" ], true);
$refund_action = $refund_action[ "member_action" ] ?? [];
$order_goods_list[ $k ][ "refund_action" ] = $refund_action;
}
$order_info[ 'order_goods' ] = $order_goods_list;
$order_info[ 'order_id' ] = $order_info[ 'relate_order_id' ];
switch ( $order_info[ 'order_type' ] ) {
case 1:
$order_model = new Order();
break;
case 2:
$order_model = new StoreOrder();
break;
case 3:
$order_model = new LocalOrder();
break;
case 4:
$order_model = new VirtualOrder();
break;
}
$temp_info = $order_model->orderDetail($order_info);
$order_info = array_merge($order_info, $temp_info);
return $this->success($order_info);
}
//获取接龙订单id
public function getJielongOrderId($id)
{
$info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ] ], 'relate_order_id');
return $info[ 'relate_order_id' ];
}
/**
* 订单关闭增加门店商品库存
* @param $data
* @return array
*/
public function incStoreGoodsStock($data)
{
$store_goods_sku_model = new StoreGoodsSku();
$stock_result = $store_goods_sku_model->incStock([ "store_id" => $data[ "delivery_store_id" ], "sku_id" => $data[ "sku_id" ], 'stock' => $data[ "num" ] ]);
if ($stock_result[ "code" ] < 0) {
return $stock_result;
}
}
/*********************************************** 订单异步回调 end *****************************************************************/
/**
* 订单删除
* @param $condition
* @return array
*/
public function deleteOrder($condition)
{
$info = model('promotion_jielong_order')->getInfo($condition, 'order_status');
if (empty($info)) {
return $this->error('', '订单不存在');
}
if ($info[ 'order_status' ] != self::ORDER_CLOSE) {
return $this->error('', '抱歉,只有已关闭的订单才可以删除');
}
$res = model('promotion_jielong_order')->delete($condition);
if ($res) {
return $this->success($res);
} else {
return $this->error();
}
}
}