Commit 7a95cd5a authored by 姚书霞's avatar 姚书霞 🐘

代码优化

parent 097b0e1b
......@@ -5,8 +5,7 @@ namespace backend\controllers\v1\branch;
use Yii;
use backend\controllers\v1\BaseController;
use backend\helpers\Func;
use yii\web\BadRequestHttpException;
use yii\web\ServerErrorHttpException;
use yii\web\HttpException;
use yii\data\ActiveDataProvider;
use yidas\phpSpreadsheet\Helper;
use app\models\v1\branch\ShopCityDistributionRegion;
......@@ -43,13 +42,15 @@ class CityDistributionSettingController extends BaseController
* B2C_ISSETTING:是否设置B2C
* 020_ISSETTING:是否设置020
* "),
* @OA\Response(response = 403,description = "权限错误"),
* @OA\Response(response = 500,description = "系统错误"),
* security={{"Authorization": {}}}
* )
*/
//重写index
//列表
public function actionCityDistributionSettingList()
{
$params = Yii::$app->getRequest()->get();
$params = Yii::$app->request->getQueryparams();
$model = new $this->modelClass();
$query = $model->getList($params);
......@@ -57,7 +58,7 @@ class CityDistributionSettingController extends BaseController
[
'query' => $query,
'pagination' => [
'pageSize'=>$params['pageSize']??20,
'pageSize'=>$params['pageSize']??PAGE_SIZE,
]
]
);
......@@ -81,7 +82,7 @@ class CityDistributionSettingController extends BaseController
return $result;
}
/**
/**
* @OA\Get(
* path="/backend/web/v1/branch/city-distribution-settings/city-distribution-setting-export",
* tags={"门店&DC"},
......@@ -93,14 +94,16 @@ class CityDistributionSettingController extends BaseController
* @OA\Parameter(in = "query",name = "region",description = "县区",required = false,@OA\Schema(type="string")),
* @OA\Parameter(in = "query",name = "b2c_issetting",description = "是否设置B2C(1是 0否)",required = false,@OA\Schema(type="string")),
* @OA\Parameter(in = "query",name = "o2o_issetting",description = "是否设置020(1是 0否)",required = false,@OA\Schema(type="string")),
* @OA\Response(response="200",description=""),
* @OA\Response(response = 200,description = "导出成功"),
* @OA\Response(response = 403,description = "权限错误"),
* @OA\Response(response = 500,description = "系统错误"),
* security={{"Authorization": {}}}
* )
*/
//重写index
public function actionCityDistributionSettingExport()
{
$params = Yii::$app->getRequest()->get();
$params = Yii::$app->request->getQueryparams();
$model = new $this->modelClass();
$query = $model->getList($params);
......@@ -170,16 +173,24 @@ class CityDistributionSettingController extends BaseController
* IS_TYPE:配送时段和区域,QY为区域,SJ为时间,INITIAL_PRICE和DELIVERY_PRICE为起始时间字段,
* B2C:门店B2C电子围栏信息数组(字段注释同020),
* "),
* @OA\Response(response = 400,description = "失败的请求"),
* @OA\Response(response = 403,description = "权限错误"),
* @OA\Response(response = 500,description = "系统错误"),
* security={{"Authorization": {}}}
* )
*/
//编辑用
public function actionCityDistributionSettingDetail()
{
$branchguid = Yii::$app->getRequest()->get('guid');
$branchguid = Yii::$app->request->getQueryparam('guid');
$model = new $this->modelClass();
$result = $model->getDetail($branchguid);
return $result;
return new ActiveDataProvider(
[
'models' => $result,
'pagination' =>false
]
);
}
/**
......@@ -219,33 +230,36 @@ class CityDistributionSettingController extends BaseController
* )
* )
* ),
* @OA\Response(response = 200,description = "success"),
* @OA\Response(response = 200,description = "返回详情"),
* @OA\Response(response = 400,description = "失败的请求"),
* @OA\Response(response = 403,description = "权限错误"),
* @OA\Response(response = 500,description = "系统错误"),
* security={{"Authorization": {}}}
* )
*/
//编辑用
public function actionCityDistributionSettingSave()
{
$setting_type = Yii::$app->getRequest()->post('SETTING_TYPE');
$branch_guid = Yii::$app->getRequest()->post('BRANCH_GUID');
$guid = Yii::$app->getRequest()->post('GUID');
$region = Yii::$app->getRequest()->post('REGION');
$setting_type = Yii::$app->request->getBodyparam('SETTING_TYPE');
$branch_guid = Yii::$app->request->getBodyparam('BRANCH_GUID');
$guid = Yii::$app->request->getBodyparam('GUID');
$region = Yii::$app->request->getBodyparam('REGION');
if(!empty($guid)){
$model = $this->modelClass::findOne($guid);
$model->scenario = 'update';//创建的场景
if(!$model){
throw new BadRequestHttpException('没有找到记录');
throw new HttpException(400,'记录不存在');
}
$model->setAttributes(Yii::$app->getRequest()->post());
$model->scenario = 'update';//创建的场景
$model->setAttributes(Yii::$app->request->getBodyparams());
}else{
$model = $this->modelClass::findOne(['SETTING_TYPE'=>$setting_type,'BRANCH_GUID'=>$branch_guid]);
if($model){
throw new BadRequestHttpException('请勿重复添加电子围栏设置');
throw new HttpException(400,'请勿重复添加电子围栏设置');
}else{
$model = new $this->modelClass();
}
$model->scenario = 'insert';//创建的场景
$model->setAttributes(Yii::$app->getRequest()->post());
$model->scenario = 'create';//创建的场景
$model->setAttributes(Yii::$app->request->getBodyparams());
$other_param = array(
'GUID'=>Func::create_guid(),
'ORG_GUID'=>'100',//Yii::$app->user->identity->ORG_GUID,
......@@ -253,14 +267,14 @@ class CityDistributionSettingController extends BaseController
$model->setAttributes($other_param);
}
$region_model = new ShopCityDistributionRegion();
// var_dump($model);die;
//开启事务
$trans = $model->getDb()->beginTransaction();
try{
//添加主表
if($model->save()===false){
if(!$model->hasErrors()){
throw new ServerErrorHttpException('Failed to update the object for unknown reason.');
throw new HttpException(500,'保存失败');
}else{
return $model;
}
......@@ -273,14 +287,14 @@ class CityDistributionSettingController extends BaseController
//传过来的数据全部新增
$region_value = [];
foreach($region as $value){
$region_model->scenario = 'save';//创建的场景
$region_model->scenario = 'insert';//创建的场景
$region_model->setAttributes($value);
$other_param_region = array(
'GUID'=>Func::create_guid(),
'ORG_GUID'=>'100',//Yii::$app->user->identity->ORG_GUID,
"CITY_DISTR_GUID"=>$model->GUID,
);
$region_model->setAttributes($other_param_region,false);
$region_model->setAttributes($other_param_region);
if ($region_model->validate()) {
$region_value[] = $region_model->getAttributes(["GUID","ORG_GUID","CITY_DISTR_GUID","SORT","COLORS","DIVIDE_TYPE","REGION_R","REGION_RANGE","INITIAL_PRICE","DELIVERY_PRICE"]);
......@@ -290,10 +304,10 @@ class CityDistributionSettingController extends BaseController
}
$model->getDb()->createCommand()->batchInsert(ShopCityDistributionRegion::tableName(), ["GUID","ORG_GUID","CITY_DISTR_GUID","SORT","COLORS","DIVIDE_TYPE","REGION_R","REGION_RANGE","INITIAL_PRICE","DELIVERY_PRICE"], $region_value)->execute();
$trans->commit();
return $model;
return Func::returnResult(200,"保存成功");
} catch (\Throwable $e){
$trans->rollBack();
throw new ServerErrorHttpException($e);
throw new HttpException(500,'保存失败');
}
}
......@@ -314,7 +328,8 @@ class CityDistributionSettingController extends BaseController
* )
* ),
* @OA\Response(response=204,description="删除成功"),
* security={{"Authorization": {}}}
* @OA\Response(response=500,description="删除失败"),
* security={{"Authorization": {}}}
* )
*/
public function actionCityDistributionSettingDelete()
......@@ -323,11 +338,10 @@ class CityDistributionSettingController extends BaseController
//删除所有门店ID下的电子围栏 数据库外键会删除region表
$res = $this->modelClass::deleteAll(["BRANCH_GUID"=>$guid]);
if ($res === false) {
throw new ServerErrorHttpException('Failed to delete the object for unknown reason.');
throw new HttpException(500,'删除失败');
}
Yii::$app->getResponse()->setStatusCode(204);
return null;
return Func::returnResult(204,"删除成功");
}
}
\ No newline at end of file
......@@ -56,7 +56,7 @@ class ShopUserMembergradeController extends BaseController
[
'query' => $query,
'pagination' => [
'pageSize'=>$requestParams['pageSize']??20,
'pageSize'=>$requestParams['pageSize']??PAGE_SIZE,
]
]
);
......@@ -137,7 +137,7 @@ class ShopUserMembergradeController extends BaseController
$model->setAttributes($other_param);
if ($model->save()) {
throw new HttpException(201,'添加成功');
return Func::returnResult(201,"添加成功");
} elseif (!$model->hasErrors()) {
throw new HttpException(500,'添加失败');
}else{
......@@ -183,7 +183,7 @@ class ShopUserMembergradeController extends BaseController
$model->setAttributes(Yii::$app->request->getBodyparams());
if ($model->save()) {
throw new HttpException(200,'修改成功');
return Func::returnResult(200,"添加成功");
} elseif (!$model->hasErrors()) {
throw new HttpException(500,'添加失败');
}else{
......@@ -223,7 +223,7 @@ class ShopUserMembergradeController extends BaseController
}else if ($model->delete() === false) {
throw new HttpException(500,'删除失败');
}
throw new HttpException(204,'删除成功');
return Func::returnResult(204,"删除成功");
}
}
\ No newline at end of file
......@@ -43,7 +43,7 @@ class CompanyController extends BaseController
[
'query' => $query,
'pagination' => [
'pageSize'=>$params['pageSize']??20,
'pageSize'=>$params['pageSize']??PAGE_SIZE,
]
]
);
......@@ -124,7 +124,7 @@ class CompanyController extends BaseController
$model->setAttributes(Yii::$app->request->getBodyparams());
if ($model->save()) {
throw new HttpException(201,'添加成功');
return Func::returnResult(201,"添加成功");
} elseif (!$model->hasErrors()) {
throw new HttpException(500,'添加失败');
}else{
......@@ -172,7 +172,7 @@ class CompanyController extends BaseController
$model->setAttributes(Yii::$app->request->getBodyparams());
if ($model->save()) {
throw new HttpException(200,'修改成功');
return Func::returnResult(200,"修改成功");
} elseif (!$model->hasErrors()) {
throw new HttpException(500,'添加失败');
}else{
......@@ -212,7 +212,7 @@ class CompanyController extends BaseController
}else if ($model->delete() === false) {
throw new HttpException(500,'删除失败');
}
throw new HttpException(204,'删除成功');
return Func::returnResult(204,"删除成功");
}
}
\ No newline at end of file
<?php
namespace backend\helpers;
use Yii;
class Func
{
/**
* 创建GUID
*/
public static function create_guid()
{
if (function_exists('com_create_guid') === true) {
......@@ -11,6 +15,26 @@ class Func
}
return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
/**
* 返回请求结果
*/
public static function returnResult($status=200,$message='',$code=0)
{
switch($status){
case 201:
Yii::$app->response->statusCode = 201;
break;
case 204:
Yii::$app->response->statusCode = 204;
break;
default:
}
return [
'message'=>$message,
'code'=>$code,
];
}
/**
* 格式化redis key
* @return string
......@@ -23,21 +47,19 @@ class Func
}
return $preFix.$key;
}
/**
* 生成数字随机数
* @param unknown $len
* @return string
*/
public static function getDigitRandomStr($length) {
$str = '1234567890';
$len = strlen($str) - 1;
$randstr = '';
for($i=0; $i<$length; $i++) {
$num = mt_rand(0, $len);
$randstr .= $str[$num];
}
return $randstr;
}
* 生成数字随机数
* @param unknown $len
* @return string
*/
public static function getDigitRandomStr($length) {
$str = '1234567890';
$len = strlen($str) - 1;
$randstr = '';
for($i=0; $i<$length; $i++) {
$num = mt_rand(0, $len);
$randstr .= $str[$num];
}
return $randstr;
}
}
......@@ -27,6 +27,9 @@ use yii\data\ActiveDataProvider;
*/
class ShopCityDistributionRegion extends BaseModel
{
//定义场景值
const SCENARIO_INSERT = 'insert';//电子围栏里面的新增
/**
* {@inheritdoc}
*/
......@@ -35,21 +38,36 @@ class ShopCityDistributionRegion extends BaseModel
return 'shop_city_distribution_region';
}
/**
* 场景值设置
* {@inheritdoc}
*/
public function scenarios()
{
$scenarios = [
self::SCENARIO_INSERT => ['GUID','ORG_GUID','CITY_DISTR_GUID','SORT', 'COLORS', 'DIVIDE_TYPE', 'REGION_R','REGION_RANGE',
'INITIAL_PRICE', 'DELIVERY_PRICE'],
];
return array_merge (parent::scenarios(),$scenarios);
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['GUID', 'SORT', 'COLORS', 'DIVIDE_TYPE', 'REGION_R', 'REGION_RANGE', 'INITIAL_PRICE', 'DELIVERY_PRICE'], 'required', 'on' => "save"],
[['DIVIDE_TYPE'], 'in', 'range' => [1, 2], 'on' => "save"],
//default
[['INITIAL_PRICE', 'DELIVERY_PRICE', 'REGION_R'], 'double'],
[['SORT'], 'integer'],
[['REGION_RANGE', 'COLORS'], 'string'],
[['INITIAL_PRICE', 'DELIVERY_PRICE', 'REGION_R'], 'double'],
//other
[['GUID', 'ORG_GUID','CITY_DISTR_GUID','SORT', 'COLORS', 'DIVIDE_TYPE', 'INITIAL_PRICE', 'DELIVERY_PRICE'], 'required', 'on' => [self::SCENARIO_INSERT]],
[['DIVIDE_TYPE'], 'in', 'range' => [1, 2], 'on' =>[self::SCENARIO_INSERT]],
[['GUID', 'REGION_RANGE'], 'required', 'on' => ['create']],
[['GUID'], 'required', 'on' => ['update']],
[['GUID', 'ORG_GUID', 'CITY_DISTR_GUID', 'ORDEX', 'COLORS', 'WEEK', 'IS_TYPE'], 'string', 'max' => 50, 'on' => ['create']],
[['GUID', 'ORG_GUID', 'CITY_DISTR_GUID', 'SORT', 'COLORS', 'WEEK', 'IS_TYPE'], 'string', 'max' => 50, 'on' => ['create']],
[['GUID'], 'unique', 'on' => ['create']],
[['INITIAL_PRICE'], 'required', 'on' => ['import'], 'message' => '{attribute}不能为空'],
];
......@@ -62,15 +80,15 @@ class ShopCityDistributionRegion extends BaseModel
{
return [
'GUID' => 'Guid',
'ORG_GUID' => 'Org Guid',
'CITY_DISTR_GUID' => 'City Distr Guid',
'SORT' => 'Sort',
'COLORS' => 'Colors',
'DIVIDE_TYPE' => 'Divide Type',
'REGION_R' => 'Region R',
'REGION_RANGE' => 'Region Range',
'INITIAL_PRICE' => 'Initial Price',
'DELIVERY_PRICE' => 'Delivery Price',
'ORG_GUID' => '组织机构号',
'CITY_DISTR_GUID' => '电子围栏GUID',
'SORT' => '区域序号',
'COLORS' => '区域颜色',
'DIVIDE_TYPE' => '区域划分方式',
'REGION_R' => '半径值',
'REGION_RANGE' => '自定义节点数组',
'INITIAL_PRICE' => '起送价格',
'DELIVERY_PRICE' => '配送价格',
'WEEK' => 'Week',
'IS_TYPE' => 'Is Type',
];
......
......@@ -41,6 +41,10 @@ use app\models\v1\branch\ShopCityDistributionRegion;
*/
class ShopCityDistributionSetting extends BaseModel
{
//定义场景值
const SCENARIO_CREATE = 'create';
const SCENARIO_UPDATE = 'update';
// 输入的门店编码或者门店名称
public $BRANCH_INFO;
// 区域运费
......@@ -53,16 +57,39 @@ class ShopCityDistributionSetting extends BaseModel
return 'shop_city_distribution_setting';
}
/**
* 场景值设置
* {@inheritdoc}
*/
public function scenarios()
{
$scenarios = [
self::SCENARIO_CREATE => ['GUID', 'ORG_GUID', 'BRANCH_GUID', 'SETTING_TYPE', 'STATUS', 'REGION_TYPE', 'REGION_DISTR_DISTANCE',
'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'],
self::SCENARIO_UPDATE =>['STATUS', 'REGION_TYPE', 'REGION_DISTR_DISTANCE','REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'],
];
return array_merge (parent::scenarios(),$scenarios);
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['ORG_GUID', 'GUID', 'BRANCH_GUID', 'REGION_TYPE', 'SETTING_TYPE'], 'required', 'on' => ['insert', 'update']],
[['STATUS'], 'boolean'],
[['REGION_TYPE','SETTING_TYPE'], 'in', 'range' => [1, 2],'on'=>['insert','update','o2o_update'],'message' => '{attribute}只能为1或2'],
//default
[['BRANCH_GUID'], 'exist', 'skipOnError' => true, 'targetClass' => ShopBranch::className(), 'targetAttribute' => ['BRANCH_GUID' => 'GUID']],
[['STATUS'], 'boolean'],
//other
[['ORG_GUID', 'GUID', 'BRANCH_GUID', 'REGION_TYPE', 'SETTING_TYPE','STATUS'], 'required', 'on' => [self::SCENARIO_CREATE]],
[['REGION_TYPE','STATUS'], 'required', 'on' => [self::SCENARIO_UPDATE]],
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'], 'double','on'=>[self::SCENARIO_CREATE,self::SCENARIO_UPDATE]],
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE'], 'required','when' => function($model) {
return $model->REGION_TYPE == '2';
},'message' => '配送区域类型为2时,{attribute}不能为空','on'=>[self::SCENARIO_CREATE]],
[['REGION_TYPE','SETTING_TYPE'], 'in', 'range' => [1, 2],'on'=>[self::SCENARIO_CREATE,self::SCENARIO_UPDATE,'o2o_update'],'message' => '{attribute}只能为1或2'],
[['BRANCH_INFO'],'match', 'pattern' => '/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u','message'=>'只能包含中文汉字,字母,数字','on' => 'search'],
[['REGION_TYPE'], 'required','on'=>['o2o_update'],'message'=>'{attribute}不能为空'],
[['REGION_DISTR_DISTANCE', 'REGION_DISTR_PRICE','INCREASE_DISTANCE','INCREASE_PRICE','DELIVERY_PRICE'], 'double','on'=>['o2o_update']],
......@@ -83,13 +110,13 @@ class ShopCityDistributionSetting extends BaseModel
return [
'DELIVERY_PRICE' => '配送价格',
'GUID' => '主键GUID',
'ORG_GUID' => 'Org Guid',
'BRANCH_GUID' => 'Branch Guid',
'ORG_GUID' => '组织机构号',
'BRANCH_GUID' => '门店GUID',
'IS_OWN_DISTR' => 'Is Own Distr',
'IS_OTHER_DISTR' => 'Is Other Distr',
'WORK_TYPE' => 'Work Type',
'IS_DADA_DISTR' => 'Is Dada Distr',
'REGION_TYPE' => '费用类型',
'REGION_TYPE' => '配送区域类型',
'SIMPLE_DISTR_NOTES' => 'Simple Distr Notes',
'SIMPLE_DISTR_PIC' => 'Simple Distr Pic',
'SIMPLE_DISTR_INITIAL_PRICE' => 'Simple Distr Initial Price',
......@@ -98,15 +125,15 @@ class ShopCityDistributionSetting extends BaseModel
'REGION_DISTR_PRICE' => '基础运费',
'INCREASE_DISTANCE' => '不同距离不同配送费增加*公里数值',
'INCREASE_PRICE' => '不同距离不同配送费增加*公里*元数值',
'LAT' => 'Lat',
'LNG' => 'Lng',
'LAT' => '门店LAT',
'LNG' => '门店LNG',
'ADDRESS' => 'Address',
'IS_TIMING' => 'Is Timing',
'TIME_SUBDIVISION' => 'Time Subdivision',
'BOOKING_ORDER' => 'Booking Order',
'MAX_BOOKING' => 'Max Booking',
'STATUS' => 'Status',
'SETTING_TYPE' => 'Setting Type',
'STATUS' => '是否开启电子围栏',
'SETTING_TYPE' => '电子围栏类型',
];
}
......
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