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

o2o配送改价格相关接口

parent c526b25e
...@@ -250,6 +250,8 @@ return [ ...@@ -250,6 +250,8 @@ return [
'extraPatterns'=>[ 'extraPatterns'=>[
'GET,OPTIONS o2o-delivery-list' => 'o2o-delivery-list', 'GET,OPTIONS o2o-delivery-list' => 'o2o-delivery-list',
'PUT,OPTIONS o2o-delivery-update' => 'o2o-delivery-update', '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 <?php
namespace backend\controllers\v1\transport; namespace backend\controllers\v1\transport;
use backend\controllers\v1\BaseController;
use Yii; use Yii;
use backend\controllers\v1\BaseController;
use app\models\v1\rbacuser\ShopRbacUser; use app\models\v1\rbacuser\ShopRbacUser;
use yii\data\ArrayDataProvider; use yii\data\ArrayDataProvider;
use app\models\v1\branch\ShopCityDistributionRegion; use app\models\v1\branch\ShopCityDistributionRegion;
use yii\web\HttpException; use yii\web\HttpException;
use backend\helpers\UploadFiles;
use yii\web\UploadedFile;
use yidas\phpSpreadsheet\Helper;
class O2oDeliveryController extends BaseController class O2oDeliveryController extends BaseController
{ {
...@@ -17,11 +21,11 @@ class O2oDeliveryController extends BaseController ...@@ -17,11 +21,11 @@ class O2oDeliveryController extends BaseController
* @OA\GET( * @OA\GET(
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-list", * path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-list",
* tags={"配送管理"}, * tags={"配送管理"},
* operationId="o2o-delivery-list",
* summary="O2O配送费(gyz)", * summary="O2O配送费(gyz)",
* description="O2O配送费", * description="O2O配送费",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")), * @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="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=" * @OA\Response(response="200",description="
* SCDS_GUID:电子围栏设置GUID, * SCDS_GUID:电子围栏设置GUID,
* BRANCH_NAME:门店名称 * BRANCH_NAME:门店名称
...@@ -41,7 +45,6 @@ class O2oDeliveryController extends BaseController ...@@ -41,7 +45,6 @@ class O2oDeliveryController extends BaseController
$model = new $this->modelClass; $model = new $this->modelClass;
$model->scenario='search'; $model->scenario='search';
$model->attributes = $get; $model->attributes = $get;
$model->GUID = isset($get['SCDS_GUID'])?$get['SCDS_GUID']:'';
if ($model->validate()) { if ($model->validate()) {
$rbacModel = new ShopRbacUser(); $rbacModel = new ShopRbacUser();
$userGuid = Yii::$app->user->identity->GUID; $userGuid = Yii::$app->user->identity->GUID;
...@@ -68,14 +71,13 @@ class O2oDeliveryController extends BaseController ...@@ -68,14 +71,13 @@ class O2oDeliveryController extends BaseController
->andFilterWhere(['scds.SETTING_TYPE'=>2])//设定为o2o配送 ->andFilterWhere(['scds.SETTING_TYPE'=>2])//设定为o2o配送
->andFilterWhere(['or',['sb.CODE'=>$model->BRANCH_INFO],['like','sb.NAME',$model->BRANCH_INFO]]) ->andFilterWhere(['or',['sb.CODE'=>$model->BRANCH_INFO],['like','sb.NAME',$model->BRANCH_INFO]])
->andFilterWhere(['sb.GUID'=>$branchGuid]) ->andFilterWhere(['sb.GUID'=>$branchGuid])
->andFilterWhere(['scds.GUID'=>$model->GUID])
->orFilterWhere(['sb.PARENTGUID'=>$parentBranchGuid]) ->orFilterWhere(['sb.PARENTGUID'=>$parentBranchGuid])
->asArray()->all(); ->asArray()->all();
return new ArrayDataProvider( return new ArrayDataProvider(
[ [
'allModels' => $infoArr, 'allModels' => $infoArr,
'pagination' => [ 'pagination' => [
'pageSize'=>1, 'pageSize'=>PAGE_SIZE,
] ]
] ]
); );
...@@ -83,6 +85,72 @@ class O2oDeliveryController extends BaseController ...@@ -83,6 +85,72 @@ class O2oDeliveryController extends BaseController
Yii::$app->response->statusCode = 422; Yii::$app->response->statusCode = 422;
return $model->errors; 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 ...@@ -90,6 +158,7 @@ class O2oDeliveryController extends BaseController
* path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-update", * path="/backend/web/v1/transport/o2o-deliveries/o2o-delivery-update",
* tags={"配送管理"}, * tags={"配送管理"},
* summary="O2O配送费详情更新(gyz)", * summary="O2O配送费详情更新(gyz)",
* operationId="o2o-delivery-update",
* description="O2O配送费详情更新", * description="O2O配送费详情更新",
* @OA\RequestBody( * @OA\RequestBody(
* @OA\MediaType( * @OA\MediaType(
...@@ -152,7 +221,128 @@ class O2oDeliveryController extends BaseController ...@@ -152,7 +221,128 @@ class O2oDeliveryController extends BaseController
}else{ }else{
return $model->errors; 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 ...@@ -66,12 +66,12 @@ class ShopCityDistributionSetting extends BaseModel
[['BRANCH_INFO'],'match', 'pattern' => '/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u','message'=>'只能包含中文汉字,字母,数字','on' => 'search'], [['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}不能为空'], [['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','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'; return $model->REGION_TYPE == '2';
},'message' => '{attribute}不能为空'], },'message' => '{attribute}不能为空','on'=>['o2o_update']],
[['DELIVERY_PRICE'], 'required','on'=>['o2o_update'],'when' => function($model) { [['DELIVERY_PRICE'], 'required','when' => function($model) {
return $model->REGION_TYPE == '1'; return $model->REGION_TYPE == '1';
},'message' => '{attribute}不能为空'], },'message' => '{attribute}不能为空','on'=>['o2o_update']],
]; ];
} }
...@@ -94,8 +94,8 @@ class ShopCityDistributionSetting extends BaseModel ...@@ -94,8 +94,8 @@ class ShopCityDistributionSetting extends BaseModel
'SIMPLE_DISTR_PIC' => 'Simple Distr Pic', 'SIMPLE_DISTR_PIC' => 'Simple Distr Pic',
'SIMPLE_DISTR_INITIAL_PRICE' => 'Simple Distr Initial Price', 'SIMPLE_DISTR_INITIAL_PRICE' => 'Simple Distr Initial Price',
'SIMPLE_DISTR_DELIVERY_PRICE ' => 'Simple Distr Delivery Price', 'SIMPLE_DISTR_DELIVERY_PRICE ' => 'Simple Distr Delivery Price',
'REGION_DISTR_DISTANCE' => '不同距离不同配送费**公里内数值', 'REGION_DISTR_DISTANCE' => '基础公里',
'REGION_DISTR_PRICE' => '不同距离不同配送费*公里内*元数值', 'REGION_DISTR_PRICE' => '基础运费',
'INCREASE_DISTANCE' => '不同距离不同配送费增加*公里数值', 'INCREASE_DISTANCE' => '不同距离不同配送费增加*公里数值',
'INCREASE_PRICE' => '不同距离不同配送费增加*公里*元数值', 'INCREASE_PRICE' => '不同距离不同配送费增加*公里*元数值',
'LAT' => 'Lat', '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