Commit 6f1e5966 authored by 郭勇志's avatar 郭勇志

o2o配送改价格相关接口

parent c526b25e
......@@ -250,6 +250,8 @@ return [
'extraPatterns'=>[
'GET,OPTIONS o2o-delivery-list' => 'o2o-delivery-list',
'PUT,OPTIONS o2o-delivery-update' => 'o2o-delivery-update',
'GET,OPTIONS o2o-delivery-export' => 'o2o-delivery-export',
'GET,OPTIONS o2o-delivery-view' => 'o2o-delivery-view',
],
],
//配送方式
......
<?php
namespace backend\controllers\v1\transport;
use backend\controllers\v1\BaseController;
use Yii;
use backend\controllers\v1\BaseController;
use app\models\v1\rbacuser\ShopRbacUser;
use yii\data\ArrayDataProvider;
use app\models\v1\branch\ShopCityDistributionRegion;
use yii\web\HttpException;
use backend\helpers\UploadFiles;
use yii\web\UploadedFile;
use yidas\phpSpreadsheet\Helper;
class O2oDeliveryController extends BaseController
{
......@@ -17,11 +21,11 @@ class O2oDeliveryController extends BaseController
* @OA\GET(
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-list",
* tags={"配送管理"},
* operationId="o2o-delivery-list",
* summary="O2O配送费(gyz)",
* description="O2O配送费",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")),
* @OA\Parameter(name="BRANCH_INFO",in="query",description="门店CODE或者名称",@OA\Schema(type="string")),
* @OA\Parameter(name="SCDS_GUID",in="query",description="电子围栏设置GUID,填写返回单条数据,列表返回的数据和详情返回数据一致,用一个接口即可",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* SCDS_GUID:电子围栏设置GUID,
* BRANCH_NAME:门店名称
......@@ -41,7 +45,6 @@ class O2oDeliveryController extends BaseController
$model = new $this->modelClass;
$model->scenario='search';
$model->attributes = $get;
$model->GUID = isset($get['SCDS_GUID'])?$get['SCDS_GUID']:'';
if ($model->validate()) {
$rbacModel = new ShopRbacUser();
$userGuid = Yii::$app->user->identity->GUID;
......@@ -68,14 +71,13 @@ class O2oDeliveryController extends BaseController
->andFilterWhere(['scds.SETTING_TYPE'=>2])//设定为o2o配送
->andFilterWhere(['or',['sb.CODE'=>$model->BRANCH_INFO],['like','sb.NAME',$model->BRANCH_INFO]])
->andFilterWhere(['sb.GUID'=>$branchGuid])
->andFilterWhere(['scds.GUID'=>$model->GUID])
->orFilterWhere(['sb.PARENTGUID'=>$parentBranchGuid])
->asArray()->all();
return new ArrayDataProvider(
[
'allModels' => $infoArr,
'pagination' => [
'pageSize'=>1,
'pageSize'=>PAGE_SIZE,
]
]
);
......@@ -83,6 +85,72 @@ class O2oDeliveryController extends BaseController
Yii::$app->response->statusCode = 422;
return $model->errors;
}
}
/**
* @OA\GET(
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-view",
* tags={"配送管理"},
* operationId="o2o-delivery-view",
* summary="O2O配送费详情(gyz)",
* description="O2O配送费详情",
* @OA\Parameter(name="SCDS_GUID",in="query",description="电子围栏设置GUID,填写返回单条数据,列表返回的数据和详情返回数据一致,用一个接口即可",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* SCDS_GUID:电子围栏设置GUID,
* BRANCH_NAME:门店名称
* BRANCH_CODE:门店编码,
* REGION_TYPE:收费方式,
* DELIVERY_PRICE:区域运费,
* REGION_DISTR_DISTANCE:基础公里数,
* REGION_DISTR_PRICE:基础运费,
* INCREASE_DISTANCE:不同配送费每增加X公里,
* INCREASE_PRICE:不同配送费每增加X公里增加X元"),
* security={{"Authorization":{}}}
* )
*/
public function actionO2oDeliveryView()
{
$get = Yii::$app->request->get();
$model = new $this->modelClass;
$model->scenario='search';
$model->attributes = $get;
$model->GUID = isset($get['SCDS_GUID'])?$get['SCDS_GUID']:'';
if ($model->validate()) {
$rbacModel = new ShopRbacUser();
$userGuid = Yii::$app->user->identity->GUID;
$userInfo = $rbacModel->getRbacUserInfo($userGuid);
switch ($userInfo['ROLE_ID']) {
case USER_ROLE_HEADQUARTERS_ADMIN:
$branchGuid='';
$parentBranchGuid='';
break;
case USER_ROLE_REGION_ADMIN:
$branchGuid=$userInfo['BRANCH_GUID'];
$parentBranchGuid=$userInfo['BRANCH_GUID'];
break;
case USER_ROLE_STORE_ADMIN:
$branchGuid=$userInfo['BRANCH_GUID'];
$parentBranchGuid='';
break;
}
$infoArr = $model->find()
->alias('scds')
->select('scds.GUID as SCDS_GUID ,sb.NAME as BRANCH_NAME,sb.CODE as BRANCH_CODE,scds.REGION_TYPE,scdr.DELIVERY_PRICE,scds.REGION_DISTR_DISTANCE,scds.REGION_DISTR_PRICE,scds.INCREASE_DISTANCE,scds.INCREASE_PRICE')
->leftjoin('shop_branch sb','sb.GUID=scds.BRANCH_GUID')
->leftjoin('shop_city_distribution_region scdr','scdr.CITY_DISTR_GUID=scds.GUID')
->andFilterWhere(['scds.SETTING_TYPE'=>2])//设定为o2o配送
->andFilterWhere(['sb.GUID'=>$branchGuid])
->andFilterWhere(['scds.GUID'=>$model->GUID])
->orFilterWhere(['sb.PARENTGUID'=>$parentBranchGuid])
->asArray()->all();
return new ArrayDataProvider(
[
'allModels' => $infoArr,
]
);
}else{
Yii::$app->response->statusCode = 422;
return $model->errors;
}
}
/**
......@@ -90,6 +158,7 @@ class O2oDeliveryController extends BaseController
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-update",
* tags={"配送管理"},
* summary="O2O配送费详情更新(gyz)",
* operationId="o2o-delivery-update",
* description="O2O配送费详情更新",
* @OA\RequestBody(
* @OA\MediaType(
......@@ -152,7 +221,128 @@ class O2oDeliveryController extends BaseController
}else{
return $model->errors;
}
}
/**
* @OA\Post(
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-import",
* tags={"配送管理"},
* summary="导入o2o配送价格(gyz)",
* operationId="o2o-delivery-import",
* @OA\Response(
* response=200,description="上传成功",
* ),
* security={{"Authorization":{}}},
* @OA\RequestBody(
* description="导入o2o配送价格",
* @OA\MediaType(
* mediaType="multipart/form-data",
* @OA\Schema(type="object",@OA\Property(property="uploadFile",type="string",format="binary"))
* )
* )
* )
*/
public function actionO2oDeliveryImport()
{
$model = new UploadFiles();
if (Yii::$app->request->isPost) {
//多文件用getInstances
$model->uploadFiles = UploadedFile::getInstance($model,'uploadFile');
$fileInfo = $model->upload();
if ($fileInfo['CODE']==200) {
$rows = Helper::newSpreadsheet($fileInfo['INFO'][0])->getRows();
$tempArr=array_slice($rows,2);
$scdsModel = new $this->modelClass();
$scdsModel->scenario = 'o2o_import';
//判断用户等级
$rbacModel = new ShopRbacUser();
$userGuid = Yii::$app->user->identity->GUID;
$userInfo = $rbacModel->getRbacUserInfo($userGuid);
switch ($userInfo['ROLE_ID']) {
case USER_ROLE_HEADQUARTERS_ADMIN:
break;
case USER_ROLE_REGION_ADMIN:
break;
case USER_ROLE_STORE_ADMIN:
break;
}
$transaction=$scdsModel->getDb()->beginTransaction();
try {
foreach ($tempArr as $key => $value) {
}
} catch (\Throwable $e) {
$transaction->rollBack();
@unlink($fileInfo['INFO'][0]);
throw $e;
}
}else{
return $fileInfo['INFO'];
}
}
}
/**
* @OA\Get(
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-export",
* tags={"配送管理"},
* operationId="o2o-delivery-export",
* description="o2o配送价格下载",
* summary="o2o配送价格下载(gyz)",
* @OA\Parameter(name="BRANCH_INFO",in="query",description="门店CODE或者名称",@OA\Schema(type="string")),
* @OA\Response(response="200",description="正常导入门店列表文件"),
* security={{"Authorization": {}}}
* )
*/
public function actionO2oDeliveryExport()
{
$get = Yii::$app->request->get();
$model = new $this->modelClass;
$model->scenario='search';
$model->attributes = $get;
if ($model->validate()) {
$rbacModel = new ShopRbacUser();
$userGuid = Yii::$app->user->identity->GUID;
$userInfo = $rbacModel->getRbacUserInfo($userGuid);
switch ($userInfo['ROLE_ID']) {
case USER_ROLE_HEADQUARTERS_ADMIN:
$branchGuid='';
$parentBranchGuid='';
break;
case USER_ROLE_REGION_ADMIN:
$branchGuid=$userInfo['BRANCH_GUID'];
$parentBranchGuid=$userInfo['BRANCH_GUID'];
break;
case USER_ROLE_STORE_ADMIN:
$branchGuid=$userInfo['BRANCH_GUID'];
$parentBranchGuid='';
break;
}
$infoArr = $model->find()
->alias('scds')
->select('sb.CODE as BRANCH_CODE,scds.REGION_TYPE,scdr.DELIVERY_PRICE,scds.REGION_DISTR_DISTANCE,scds.REGION_DISTR_PRICE,scds.INCREASE_DISTANCE,scds.INCREASE_PRICE')
->leftjoin('shop_branch sb','sb.GUID=scds.BRANCH_GUID')
->leftjoin('shop_city_distribution_region scdr','scdr.CITY_DISTR_GUID=scds.GUID')
->andFilterWhere(['scds.SETTING_TYPE'=>2])//设定为o2o配送
->andFilterWhere(['or',['sb.CODE'=>$model->BRANCH_INFO],['like','sb.NAME',$model->BRANCH_INFO]])
->andFilterWhere(['sb.GUID'=>$branchGuid])
->orFilterWhere(['sb.PARENTGUID'=>$parentBranchGuid])
->asArray()->all();
Helper::newSpreadsheet()
->addRow(['门店编号', '收费方式', '区域运费','基础公里数','基础运费','不同距离不同配送费增加*公里数值','不同距离不同配送费增加*公里*元数值'])
->addRows(
$infoArr
)->output('o2o配送价格','Csv');
}else{
Yii::$app->response->statusCode = 422;
return $model->errors;
}
}
}
......@@ -66,12 +66,12 @@ class ShopCityDistributionSetting extends BaseModel
[['BRANCH_INFO'],'match', 'pattern' => '/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u','message'=>'只能包含中文汉字,字母,数字','on' => 'search'],
[['GUID','REGION_TYPE'], 'required','on'=>['o2o_update'],'message'=>'{attribute}不能为空'],
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE','DELIVERY_PRICE'], 'double','on'=>['o2o_update']],
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'], 'required','on'=>['o2o_update'],'when' => function($model) {
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'], 'required','when' => function($model) {
return $model->REGION_TYPE == '2';
},'message' => '{attribute}不能为空'],
[['DELIVERY_PRICE'], 'required','on'=>['o2o_update'],'when' => function($model) {
},'message' => '{attribute}不能为空','on'=>['o2o_update']],
[['DELIVERY_PRICE'], 'required','when' => function($model) {
return $model->REGION_TYPE == '1';
},'message' => '{attribute}不能为空'],
},'message' => '{attribute}不能为空','on'=>['o2o_update']],
];
}
......@@ -94,8 +94,8 @@ class ShopCityDistributionSetting extends BaseModel
'SIMPLE_DISTR_PIC' => 'Simple Distr Pic',
'SIMPLE_DISTR_INITIAL_PRICE' => 'Simple Distr Initial Price',
'SIMPLE_DISTR_DELIVERY_PRICE ' => 'Simple Distr Delivery Price',
'REGION_DISTR_DISTANCE' => '不同距离不同配送费**公里内数值',
'REGION_DISTR_PRICE' => '不同距离不同配送费*公里内*元数值',
'REGION_DISTR_DISTANCE' => '基础公里',
'REGION_DISTR_PRICE' => '基础运费',
'INCREASE_DISTANCE' => '不同距离不同配送费增加*公里数值',
'INCREASE_PRICE' => '不同距离不同配送费增加*公里*元数值',
'LAT' => 'Lat',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment