275 lines
10 KiB
PHP
275 lines
10 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
|
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\store\shopapi\controller;
|
|
|
|
|
|
use app\model\express\ExpressCompany;
|
|
use app\model\express\ExpressCompanyTemplate;
|
|
use app\model\order\OrderCommon as OrderCommonModel;
|
|
use app\model\order\OrderCommon;
|
|
use app\model\order\OrderTrade as OrderTradeModel;
|
|
use app\model\verify\Verify as VerifyModel;
|
|
|
|
|
|
/**
|
|
* 订单控制器
|
|
* Class Sysorder
|
|
* @package addon\shop\siteapi\controller
|
|
*/
|
|
class Ordertrade extends BaseStoreApi
|
|
{
|
|
/**
|
|
* 订单修改收货地址
|
|
* @return mixed
|
|
*/
|
|
public function editAddress()
|
|
{
|
|
$order_id = input('order_id', 0);
|
|
|
|
$order_common_model = new OrderCommon();
|
|
$province_id = $this->params[ 'province_id' ] ?? 0;
|
|
$city_id = $this->params[ 'city_id' ] ?? 0;
|
|
$district_id = $this->params[ 'district_id' ] ?? 0;
|
|
$community_id = $this->params[ 'community_id' ] ?? 0;
|
|
$address = $this->params[ 'address' ] ?? '';
|
|
$full_address = $this->params[ 'full_address' ] ?? '';
|
|
$longitude = $this->params[ 'longitude' ] ?? '';
|
|
$latitude = $this->params[ 'latitude' ] ?? '';
|
|
$mobile = $this->params[ 'mobile' ] ?? '';
|
|
$telephone = $this->params[ 'telephone' ] ?? '';
|
|
$name = $this->params[ 'name' ] ?? '';
|
|
$data = array (
|
|
'province_id' => $province_id,
|
|
'city_id' => $city_id,
|
|
'district_id' => $district_id,
|
|
'community_id' => $community_id,
|
|
'address' => $address,
|
|
'full_address' => $full_address,
|
|
'longitude' => $longitude,
|
|
'latitude' => $latitude,
|
|
'mobile' => $mobile,
|
|
'telephone' => $telephone,
|
|
'name' => $name,
|
|
'order_id' => $order_id,
|
|
'site_id' => $this->site_id,
|
|
'uid' => $this->uid,
|
|
);
|
|
$condition = array (
|
|
[ 'order_id', '=', $order_id ],
|
|
[ 'site_id', '=', $this->site_id ]
|
|
);
|
|
$result = $order_common_model->orderAddressUpdate($data, $condition);
|
|
return $this->response($result);
|
|
|
|
}
|
|
|
|
|
|
/************************************************************* 物流相关 start **************************************************************************/
|
|
/**
|
|
* 获取待发货项
|
|
*/
|
|
public function getOrderExpressLists()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
//查询订单的可配送订单项
|
|
$order_trade_model = new OrderTradeModel();
|
|
$condition = array (
|
|
[ 'oe.site_id', '=', $this->site_id ],
|
|
[ 'oe.order_id', '=', $order_id ]
|
|
);
|
|
$result = $order_trade_model->getExpressOrderLists($condition);
|
|
return $this->response($result);
|
|
}
|
|
|
|
/**
|
|
* 订单发货
|
|
* @return mixed
|
|
*/
|
|
public function delivery()
|
|
{
|
|
$order_common_model = new OrderCommon();
|
|
$data = array (
|
|
'order_goods_ids' => $this->params[ 'order_goods_ids' ] ?? 0,//商品id
|
|
'express_company_id' => $this->params[ 'express_company_id' ] ?? 0,//物流公司
|
|
'delivery_no' => $this->params[ 'delivery_no' ] ?? '',//快递单号
|
|
'order_id' => $this->params[ 'order_id' ] ?? 0,//订单id
|
|
'delivery_type' => $this->params[ 'delivery_type' ] ?? 'not',//是否需要物流
|
|
'site_id' => $this->site_id,
|
|
'uid' => $this->uid
|
|
);
|
|
$result = $order_common_model->delivery($data);
|
|
return $this->response($result);
|
|
}
|
|
|
|
/**
|
|
* 确认收货(应该不会有)
|
|
*/
|
|
public function takeDelivery()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
$order_model = new OrderCommonModel();
|
|
$result = $order_model->orderCommonTakeDelivery($order_id);
|
|
return $this->response($result);
|
|
|
|
}
|
|
|
|
/**
|
|
* 查询可用的物流公司
|
|
* @return array
|
|
*/
|
|
public function getShopCompany()
|
|
{
|
|
$express_company_template_model = new ExpressCompanyTemplate();
|
|
//平台公用的物流公司
|
|
$company_list_result = $express_company_template_model->getExpressCompanyTemplateList([ [ "site_id", "=", 0 ] ]);
|
|
$company_list = $company_list_result[ "data" ];
|
|
$company_list = array_column($company_list, "company_id");
|
|
|
|
$express_company_model = new ExpressCompany();
|
|
$result = $express_company_model->getExpressCompanyList([ [ "site_id", "=", $this->site_id ], [ 'company_id', 'in', $company_list ] ]);
|
|
return $this->response($result);
|
|
}
|
|
|
|
/************************************************************* 物流相关 end **************************************************************************/
|
|
|
|
|
|
/************************************************************* 自提相关 start **************************************************************************/
|
|
/**
|
|
* 获取待发货项
|
|
*/
|
|
public function getOrderStoreLists()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
//查询订单的可配送订单项
|
|
$order_trade_model = new OrderTradeModel();
|
|
$condition = array (
|
|
[ 'site_id', '=', $this->site_id ],
|
|
[ 'order_id', '=', $order_id ]
|
|
);
|
|
$store_info = $order_trade_model->getOrderStore($condition, 'status')[ 'data' ] ?? [];
|
|
if (empty($store_info))
|
|
return $this->response($this->error());
|
|
|
|
$order_common_model = new OrderCommon();
|
|
$order_info = $order_common_model->getOrderInfo($condition)[ 'data' ] ?? [];
|
|
if (empty($order_info))
|
|
return $this->response($this->error());
|
|
|
|
$order_goods_list = $order_common_model->getOrderGoodsList($condition)[ 'data' ] ?? [];
|
|
if (empty($order_goods_list))
|
|
return $this->response($this->error());
|
|
|
|
foreach ($order_goods_list as $k => $v) {
|
|
$order_goods_list[ $k ][ 'store_info' ] = $store_info;
|
|
}
|
|
$order_info[ 'order_goods_list' ] = $order_goods_list;
|
|
|
|
return $this->response($order_common_model->success($order_info));
|
|
}
|
|
|
|
/**
|
|
* 自提操作
|
|
*/
|
|
public function takeStore()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
$store_type = $this->params[ 'store_type' ] ?? 'code';//提货方式 code 需要提货码 no_code无需提货码
|
|
$store_no = $this->params[ 'store_no' ] ?? '';//提货码
|
|
$order_trade_model = new OrderTradeModel();
|
|
$condition = array (
|
|
[ 'site_id', '=', $this->site_id ],
|
|
[ 'order_id', '=', $order_id ]
|
|
);
|
|
$store_info = $order_trade_model->getOrderStore($condition, 'member_verify_id')[ 'data' ] ?? [];
|
|
if (empty($store_info))
|
|
return $this->response($this->error());
|
|
|
|
$member_verify_id = $store_info[ 'member_verify_id' ];
|
|
$verify_model = new VerifyModel();
|
|
switch ( $store_type ) {
|
|
case 'code':
|
|
if (empty($store_no)) {
|
|
return $this->response($verify_model->error([], '核销码不能为空!'));
|
|
}
|
|
$verify_info = $verify_model->getMemberVerifyInfo([ [ 'verify_code', '=', $store_no ] ])[ 'data' ] ?? [];
|
|
if (empty($verify_info)) {
|
|
return $this->response($verify_model->error([], '核销码不是有效的!'));
|
|
}
|
|
if ($member_verify_id != $verify_info[ 'id' ])
|
|
return $this->response($verify_model->error([], '核销码和当前提货商品不匹配!'));
|
|
|
|
break;
|
|
case 'no_code':
|
|
|
|
break;
|
|
}
|
|
$result = $verify_model->verify($member_verify_id, $this->uid, $this->site_id);
|
|
return $this->response($result);
|
|
}
|
|
/************************************************************* 自提相关 end **************************************************************************/
|
|
|
|
|
|
/************************************************************* 本地配送相关 start **************************************************************************/
|
|
/**
|
|
* 获取待发货项
|
|
*/
|
|
public function getOrderLocalLists()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
//查询订单的可配送订单项
|
|
$order_trade_model = new OrderTradeModel();
|
|
$condition = array (
|
|
[ 'site_id', '=', $this->site_id ],
|
|
[ 'order_id', '=', $order_id ]
|
|
);
|
|
$local_info = $order_trade_model->getOrderLocal($condition, 'status')[ 'data' ] ?? [];
|
|
if (empty($local_info))
|
|
return $this->error();
|
|
|
|
$order_common_model = new OrderCommon();
|
|
$order_info = $order_common_model->getOrderInfo($condition)[ 'data' ] ?? [];
|
|
if (empty($order_info))
|
|
return $this->error();
|
|
|
|
$order_goods_list = $order_common_model->getOrderGoodsList($condition)[ 'data' ] ?? [];
|
|
if (empty($order_goods_list))
|
|
return $this->error();
|
|
|
|
foreach ($order_goods_list as $k => $v) {
|
|
$order_goods_list[ $k ][ 'local_info' ] = $local_info;
|
|
}
|
|
$order_info[ 'order_goods_list' ] = $order_goods_list;
|
|
|
|
return $this->response($order_common_model->success($order_info));
|
|
}
|
|
|
|
|
|
/**
|
|
* 配送操作
|
|
*/
|
|
public function doLocal()
|
|
{
|
|
$order_id = $this->params[ 'order_id' ] ?? 0;
|
|
$delivery_clerk_id = $this->params[ 'delivery_clerk_id' ] ?? 0;//配送员
|
|
|
|
$order_common_model = new OrderCommon();
|
|
$data = array (
|
|
'order_id' => $order_id,
|
|
'delivery_clerk_id' => $delivery_clerk_id,
|
|
'site_id' => $this->site_id,
|
|
);
|
|
$result = $order_common_model->localDelivery($data);
|
|
return $this->response($result);
|
|
}
|
|
/************************************************************* 本地配送相关 end **************************************************************************/
|
|
} |