Commit 221f9c31 authored by 侯贺政's avatar 侯贺政

员工控制器模型调整

Signed-off-by: 侯贺政's avatarhouhezheng <houhezheng@romens.cn>
parent 70bec9af
...@@ -5,46 +5,46 @@ return [ ...@@ -5,46 +5,46 @@ return [
'urlManager' => [ 'urlManager' => [
'enablePrettyUrl' => true, 'enablePrettyUrl' => true,
'showScriptName' => false, 'showScriptName' => false,
'enableStrictParsing'=>true, 'enableStrictParsing' => true,
'rules' => [ 'rules' => [
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'swagger', 'swagger',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET swagger'=>'swagger', 'GET swagger' => 'swagger',
], ],
], ],
//swagger //swagger
'GET swaggers/swagger/<id>'=>'swagger/swagger', 'GET swaggers/swagger/<id>' => 'swagger/swagger',
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/branch', 'v1/branch/branch',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS branch-list'=>'branch-list', 'GET,OPTIONS branch-list' => 'branch-list',
'POST,OPTIONS upload'=>'upload', 'POST,OPTIONS upload' => 'upload',
], ],
], ],
//门店 //门店
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/branch', 'v1/branch/branch',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS branch-list'=>'branch-list', 'GET,OPTIONS branch-list' => 'branch-list',
'POST,OPTIONS upload'=>'upload', 'POST,OPTIONS upload' => 'upload',
'POST,OPTIONS import-branch'=>'import-branch', 'POST,OPTIONS import-branch' => 'import-branch',
'GET,OPTIONS branch-detail' => 'branch-detail', 'GET,OPTIONS branch-detail' => 'branch-detail',
'GET,OPTIONS branch-services' => 'branch-services', 'GET,OPTIONS branch-services' => 'branch-services',
'GET,OPTIONS branch-sup-company' => 'branch-sup-company', 'GET,OPTIONS branch-sup-company' => 'branch-sup-company',
'GET,OPTIONS branch-sup-region' => 'branch-sup-region', 'GET,OPTIONS branch-sup-region' => 'branch-sup-region',
'GET,OPTIONS sup-company-region' => 'sup-company-region', 'GET,OPTIONS sup-company-region' => 'sup-company-region',
'GET,OPTIONS branch-transport-type'=>'branch-transport-type', 'GET,OPTIONS branch-transport-type' => 'branch-transport-type',
'POST,OPTIONS add-branch' => 'add-branch', 'POST,OPTIONS add-branch' => 'add-branch',
'PUT,OPTIONS revise-branch' => 'revise-branch', 'PUT,OPTIONS revise-branch' => 'revise-branch',
'DELETE,OPTIONS del-branch' => 'del-branch', 'DELETE,OPTIONS del-branch' => 'del-branch',
...@@ -58,37 +58,37 @@ return [ ...@@ -58,37 +58,37 @@ return [
], ],
//门店评分 //门店评分
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/branch-score', 'v1/branch/branch-score',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS branch-score-list' => 'branch-score-list', 'GET,OPTIONS branch-score-list' => 'branch-score-list',
'GET,OPTIONS score-info' => 'score-info', 'GET,OPTIONS score-info' => 'score-info',
'PUT,OPTIONS score-info-update'=>'score-info-update', 'PUT,OPTIONS score-info-update' => 'score-info-update',
'DELETE,OPTIONS score-info-del'=>'score-info-del', 'DELETE,OPTIONS score-info-del' => 'score-info-del',
'POST,OPTIONS add-branch-score'=>'add-branch-score', 'POST,OPTIONS add-branch-score' => 'add-branch-score',
'GET,OPTIONS score-export' => 'score-export', 'GET,OPTIONS score-export' => 'score-export',
'POST,OPTIONS score-import' => 'score-import', 'POST,OPTIONS score-import' => 'score-import',
], ],
], ],
//后台管理员 //后台管理员
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/rbacuser/rbac-user', 'v1/rbacuser/rbac-user',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'POST,OPTIONS login'=>'login', 'POST,OPTIONS login' => 'login',
], ],
], ],
//用户组 //用户组
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/shopuser/shop-user-membergrade', 'v1/shopuser/shop-user-membergrade',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS membergrade-list' => 'membergrade-list', 'GET,OPTIONS membergrade-list' => 'membergrade-list',
'GET,OPTIONS membergrade-detail' => 'membergrade-detail', 'GET,OPTIONS membergrade-detail' => 'membergrade-detail',
'PUT,OPTIONS membergrade-revise' => 'membergrade-revise', 'PUT,OPTIONS membergrade-revise' => 'membergrade-revise',
...@@ -98,21 +98,29 @@ return [ ...@@ -98,21 +98,29 @@ return [
], ],
//部门信息 //部门信息
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/shopuser/user-department', 'v1/shopuser/user-department',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS department'=>'department', 'GET,OPTIONS department' => 'department',
], ],
], ],
//用户 //用户
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/shopuser/shop-user', 'v1/shopuser/shop-user',
], ],
'extraPatterns'=>[ 'extraPatterns' => [],
],
//员工
[
'class' => 'yii\rest\UrlRule',
'controller' => [
'v1/shopuser/shop-employee',
],
'extraPatterns' => [
'GET,OPTIONS employee-info' => 'employee-info', 'GET,OPTIONS employee-info' => 'employee-info',
'GET,OPTIONS employee-list' => 'employee-list', 'GET,OPTIONS employee-list' => 'employee-list',
'POST,OPTIONS employee-import' => 'employee-import', 'POST,OPTIONS employee-import' => 'employee-import',
...@@ -120,21 +128,21 @@ return [ ...@@ -120,21 +128,21 @@ return [
], ],
//用户评论 //用户评论
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/shopuser/user-complain', 'v1/shopuser/user-complain',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS user-complain'=>'user-complain', 'GET,OPTIONS user-complain' => 'user-complain',
], ],
], ],
//门店服务类型 //门店服务类型
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/branch-service-type', 'v1/branch/branch-service-type',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS branch-service-list' => 'branch-service-list', 'GET,OPTIONS branch-service-list' => 'branch-service-list',
'GET,OPTIONS branch-service-info' => 'branch-service-info', 'GET,OPTIONS branch-service-info' => 'branch-service-info',
'POST,OPTIONS add-branch-service' => 'add-branch-service', 'POST,OPTIONS add-branch-service' => 'add-branch-service',
...@@ -146,11 +154,11 @@ return [ ...@@ -146,11 +154,11 @@ return [
], ],
//门店电子围栏 //门店电子围栏
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/city-distribution-setting', 'v1/branch/city-distribution-setting',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS city-distribution-setting-list' => 'city-distribution-setting-list', 'GET,OPTIONS city-distribution-setting-list' => 'city-distribution-setting-list',
'GET,OPTIONS city-distribution-setting-export' => 'city-distribution-setting-export', 'GET,OPTIONS city-distribution-setting-export' => 'city-distribution-setting-export',
'GET,OPTIONS city-distribution-setting-detail' => 'city-distribution-setting-detail', 'GET,OPTIONS city-distribution-setting-detail' => 'city-distribution-setting-detail',
...@@ -160,11 +168,11 @@ return [ ...@@ -160,11 +168,11 @@ return [
], ],
//快递方式 //快递方式
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/transport/company', 'v1/transport/company',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS company-list' => 'company-list', 'GET,OPTIONS company-list' => 'company-list',
'GET,OPTIONS company-detail' => 'company-detail', 'GET,OPTIONS company-detail' => 'company-detail',
'POST,OPTIONS company-add' => 'company-add', 'POST,OPTIONS company-add' => 'company-add',
...@@ -174,62 +182,62 @@ return [ ...@@ -174,62 +182,62 @@ return [
], ],
//用户列表 //用户列表
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/shopuser/shop-user-list', 'v1/shopuser/shop-user-list',
'v1/branch/branch-licence', 'v1/branch/branch-licence',
'v1/common/shop-transport-area', 'v1/common/shop-transport-area',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS user-list' => 'user-list', 'GET,OPTIONS user-list' => 'user-list',
'GET,OPTIONS user-detail'=>'user-detail', 'GET,OPTIONS user-detail' => 'user-detail',
'POST user-update'=>'user-update', 'POST user-update' => 'user-update',
// 'GET,OPTIONS user-delete'=>'user-delete', // 'GET,OPTIONS user-delete'=>'user-delete',
'GET,OPTIONS get-member-grade-list'=>'get-member-grade-list', 'GET,OPTIONS get-member-grade-list' => 'get-member-grade-list',
], ],
], ],
//门店证照 //门店证照
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/branch/branch-licence', 'v1/branch/branch-licence',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS licence-list'=>'licence-list', 'GET,OPTIONS licence-list' => 'licence-list',
'GET,OPTIONS licence-detail'=>'licence-detail', 'GET,OPTIONS licence-detail' => 'licence-detail',
'GET,OPTIONS licence-excel-download'=>'licence-excel-download', 'GET,OPTIONS licence-excel-download' => 'licence-excel-download',
'POST,OPTIONS licence-insert'=>'licence-insert', 'POST,OPTIONS licence-insert' => 'licence-insert',
'POST,OPTIONS licence-img-upload'=>'licence-img-upload', 'POST,OPTIONS licence-img-upload' => 'licence-img-upload',
'POST,OPTIONS licence-excel-upload'=>'licence-excel-upload', 'POST,OPTIONS licence-excel-upload' => 'licence-excel-upload',
], ],
], ],
//省市区 //省市区
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/common/shop-transport-area', 'v1/common/shop-transport-area',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS area' => 'area', 'GET,OPTIONS area' => 'area',
], ],
], ],
//模板下载类 //模板下载类
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/common/down-template', 'v1/common/down-template',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS template-file' => 'template-file', 'GET,OPTIONS template-file' => 'template-file',
], ],
], ],
//快递配送价格 //快递配送价格
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/transport/transport-setting', 'v1/transport/transport-setting',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS transport-templates' => 'transport-templates', 'GET,OPTIONS transport-templates' => 'transport-templates',
'GET,OPTIONS transport-fee-details' => 'transport-fee-details', 'GET,OPTIONS transport-fee-details' => 'transport-fee-details',
'GET,OPTIONS get-branches-packaging' => 'get-branches-packaging', 'GET,OPTIONS get-branches-packaging' => 'get-branches-packaging',
...@@ -240,23 +248,23 @@ return [ ...@@ -240,23 +248,23 @@ return [
], ],
//o2o起送价设置 //o2o起送价设置
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/transport/transport-initial-price', 'v1/transport/transport-initial-price',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS initial-price-list' => 'initial-price-list', 'GET,OPTIONS initial-price-list' => 'initial-price-list',
'PUT,OPTIONS revise-initial-price' => 'revise-initial-price', 'PUT,OPTIONS revise-initial-price' => 'revise-initial-price',
'POST,OPTIONS initial-price-import'=>'initial-price-import', 'POST,OPTIONS initial-price-import' => 'initial-price-import',
], ],
], ],
//o2o配送价格 //o2o配送价格
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/transport/o2o-delivery', 'v1/transport/o2o-delivery',
], ],
'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-export' => 'o2o-delivery-export',
...@@ -265,11 +273,11 @@ return [ ...@@ -265,11 +273,11 @@ return [
], ],
//配送方式 //配送方式
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/transport/transport-method', 'v1/transport/transport-method',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS get-transport-method' => 'get-transport-method', 'GET,OPTIONS get-transport-method' => 'get-transport-method',
'GET,OPTIONS make-use' => 'make-use', 'GET,OPTIONS make-use' => 'make-use',
'POST,OPTIONS transport-method-insert' => 'transport-method-insert', 'POST,OPTIONS transport-method-insert' => 'transport-method-insert',
...@@ -278,13 +286,13 @@ return [ ...@@ -278,13 +286,13 @@ return [
], ],
//权限-角色 //权限-角色
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/authority/authority-role', 'v1/authority/authority-role',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS authority-role-list' => 'authority-role-list', 'GET,OPTIONS authority-role-list' => 'authority-role-list',
'GET,OPTIONS authority-role-detail'=>'authority-role-detail', 'GET,OPTIONS authority-role-detail' => 'authority-role-detail',
'POST,OPTIONS add-authority-role' => 'add-authority-role', 'POST,OPTIONS add-authority-role' => 'add-authority-role',
'PUT,OPTIONS revise-authority-role' => 'revise-authority-role', 'PUT,OPTIONS revise-authority-role' => 'revise-authority-role',
'GET,OPTIONS role-authorities' => 'role-authorities', 'GET,OPTIONS role-authorities' => 'role-authorities',
...@@ -306,17 +314,17 @@ return [ ...@@ -306,17 +314,17 @@ return [
'DELETE,OPTIONS node-del' => 'node-del', 'DELETE,OPTIONS node-del' => 'node-del',
] ]
], ],
//权限-管理员列表 //权限-管理员列表
[ [
'class'=>'yii\rest\UrlRule', 'class' => 'yii\rest\UrlRule',
'controller'=>[ 'controller' => [
'v1/authority/manage-list', 'v1/authority/manage-list',
], ],
'extraPatterns'=>[ 'extraPatterns' => [
'GET,OPTIONS get-manage-list' => 'get-manage-list', 'GET,OPTIONS get-manage-list' => 'get-manage-list',
], ],
], ],
], ],
], ],
] ]
]; ];
<?php
namespace backend\controllers\v1\shopuser;
use app\models\v1\branch\ShopBranch;
use Yii;
use backend\controllers\v1\BaseController;
use backend\helpers\Func;
use backend\helpers\UploadFiles;
use yidas\phpSpreadsheet\Helper;
use yii\web\UploadedFile;
use yii\web\BadRequestHttpException;
use yii\web\HttpException;
class ShopEmployeeController extends BaseController
{
public $modelClass = 'app\models\v1\shopuser\ShopEmployee';
/**
* @OA\GET(
* path="/backend/web/v1/shopuser/shop-employees/employee-list",
* tags={"用户&员工接口"},
* summary="员工信息列表(侯贺政)",
* description="员工信息列表",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")),
* @OA\Parameter(name="NAME",in="query",description="员工姓名",@OA\Schema(type="string")),
* @OA\Parameter(name="EMPLOYEE_CODE",in="query",description="员工编号",@OA\Schema(type="string")),
* @OA\Parameter(name="MOBILEPHONE",in="query",description="手机号",@OA\Schema(type="string")),
* @OA\Parameter(name="EMPLOYEE_BRANCH_NAME",description="用户所属门店",in="query",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* GUID:用户GUID,
* NAME:姓名,
* EMPLOYEE_CODE:员工编号,
* MOBILE_PHONE:手机号,
* EMPLOYEE_BRANCH_NAME:用户所属门店"),
* security={{"Authorization": {}}}
* )
*/
public function actionEmployeeList()
{
$model = new $this->modelClass();
$params = Yii::$app->request->queryParams;
$model->attributes = $params;
if (!$model->validate()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
$list = $model->employeeSearch($params);
if (!$list->getModels()) {
throw new BadRequestHttpException('未找到符合条件的数据');
}
return $list;
}
/**
* @OA\GET(
* path="/backend/web/v1/shopuser/shop-employees/employee-info",
* tags={"用户&员工接口"},
* summary="员工信息详情(侯贺政)",
* description="某员工的信息详情",
* @OA\Parameter(name="id",in="query",required=true,description="员工GUID",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* GUID:用户GUID,
* NAME:姓名,
* EMPLOYEE_CODE:员工编号,
* MOBILE_PHONE:手机号,
* AGE:年龄,
* CONTACT_SEX:性别,
* MEMBER_NO:会员卡号,
* IS_DISTRIBUTOR:分销商标识(0:否,1:是),
* EMPLOYEE_IS_MANAGER:员工是否为门店店长,
* BRANCH_CODE:用户所属门店编号"),
* security={{"Authorization": {}}}
* )
*/
public function actionEmployeeInfo($id)
{
$model = new $this->modelClass();
$model->GUID = $id;
if (!$model->validate()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
$data = $model->employeeInfo($id);
if (!$data) {
throw new BadRequestHttpException('请求错误,该员工不存在');
}
return $data;
}
/**
* @OA\Post(
* path="/backend/web/v1/shopuser/shop-employees/employee-import",
* tags={"用户&员工接口"},
* summary="导入员工信息(侯贺政)",
* description="导入员工的信息,员工已存在为更新,不存在则新建",
* @OA\RequestBody(
* description="导入员工信息",
* @OA\MediaType(
* mediaType="multipart/form-data",
* @OA\Schema(
* type="object",
* @OA\Property(
* property="uploadFile",
* type="string",
* format="binary"
* ),
* )
* )
* ),
* @OA\Response(
* response=200,
* description="导入成功",
* ),
* @OA\Response(
* response=422,
* description="导入失败,数据验证错误,返回错误数据行号及错误信息(数组)。",
* ),
* security={{"Authorization":{}}}
* )
*/
public function actionEmployeeImport()
{
$upload_file = new UploadFiles(['xlsx', 'xls']);
$upload_file->uploadFiles = UploadedFile::getInstance($upload_file, 'uploadFile');
$fileInfo = $upload_file->upload();
if ($fileInfo['CODE'] != '200') {
Yii::$app->response->statusCode = 422;
if ($fileInfo['INFO']['uploadFiles'][0] == "类型不对") {
$fileInfo['INFO']['uploadFiles'][0] = '文件类型要求97-2003工作簿 xls格式!';
}
return $fileInfo['INFO'];
}
$arr = Helper::newSpreadsheet($fileInfo['INFO'][0])->getRows(true, ['rowOffset' => 2, 'columns' => 9]);
$model = new $this->modelClass();
$model->scenario = 'import';
$transcation = $model->getDb()->beginTransaction();
if (is_array($arr) && !empty($arr)) {
try {
foreach ($arr as $key => $value) {
$branch_info = ShopBranch::findOne(['CODE' => $value[8]]);
if (!$branch_info) {
$returnInfo = [
($key + 1) => ['error' => '不存在该门店,检查并更正所属门店编码,或删除此条数据']
];
@unlink($fileInfo['INFO'][0]);
Yii::$app->response->statusCode = 422;
return $returnInfo;
}
$_model = $model::findOne(['EMPLOYEE_CODE' => $value[1]]);
if ($_model === null) {
$_model = clone $model;
$_model->GUID = Func::create_guid();
$_model->CODE = $value[2];
$_model->CREATE_DATE = date('Y-m-d H:i:s', time());
}
//性别
if ($value[4] == '男') {
$value[4] = '1';
} elseif ($value[4] == '女') {
$value[4] = '0';
} elseif (!in_array($value[4], ['1', '0', ''])) {
$value[4] = '';
}
$_model->NAME = $value[0];
$_model->EMPLOYEE_CODE = $value[1];
$_model->MEMBER_NO = $value[3];
$_model->CONTACT_SEX = $value[4];
$_model->CONTACTBIRTH_DATE = $value[5];
$_model->EMPLOYEE_IS_MANAGER = $value[6];
$_model->IS_DISTRIBUTOR = $value[7];
$_model->EMPLOYEE_BRANCH_GUID = $branch_info['GUID'];
$_model->UPDATE_DATE = date('Y-m-d H:i:s', time());
if (!$_model->save()) {
$transcation->rollBack();
$returnInfo = [
($key + 1) => $_model->errors
];
@unlink($fileInfo['INFO'][0]);
Yii::$app->response->statusCode = 422;
return $returnInfo;
}
}
$transcation->commit();
@unlink($fileInfo['INFO'][0]);
throw new HttpException(200,"导入成功!");
} catch (\Throwable $th) {
$transcation->rollBack();
@unlink($fileInfo['INFO'][0]);
throw $th;
}
}
throw new BadRequestHttpException('导入失败!');
}
}
...@@ -2,200 +2,11 @@ ...@@ -2,200 +2,11 @@
namespace backend\controllers\v1\shopuser; namespace backend\controllers\v1\shopuser;
use app\models\v1\branch\ShopBranch;
use Yii; use Yii;
use backend\controllers\v1\BaseController; use backend\controllers\v1\BaseController;
use backend\helpers\Func;
use backend\helpers\UploadFiles;
use yidas\phpSpreadsheet\Helper;
use yii\web\UploadedFile;
use yii\web\BadRequestHttpException;
use yii\web\HttpException;
class ShopUserController extends BaseController class ShopUserController extends BaseController
{ {
public $modelClass = 'app\models\v1\shopuser\ShopUser'; public $modelClass = 'app\models\v1\shopuser\ShopUser';
/**
* @OA\GET(
* path="/backend/web/v1/shopuser/shop-users/employee-list",
* tags={"用户&员工接口"},
* summary="员工信息列表(侯贺政)",
* description="员工信息列表",
* @OA\Parameter(name="page",in="query",description="分页页码",@OA\Schema(type="int")),
* @OA\Parameter(name="NAME",in="query",description="员工姓名",@OA\Schema(type="string")),
* @OA\Parameter(name="EMPLOYEE_CODE",in="query",description="员工编号",@OA\Schema(type="string")),
* @OA\Parameter(name="MOBILEPHONE",in="query",description="手机号",@OA\Schema(type="string")),
* @OA\Parameter(name="EMPLOYEE_BRANCH_NAME",description="用户所属门店",in="query",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* GUID:用户GUID,
* NAME:姓名,
* EMPLOYEE_CODE:员工编号,
* MOBILE_PHONE:手机号,
* EMPLOYEE_BRANCH_NAME:用户所属门店"),
* security={{"Authorization": {}}}
* )
*/
public function actionEmployeeList()
{
$model = new $this->modelClass();
$params = Yii::$app->request->queryParams;
$model->attributes = $params;
if (!$model->validate()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
$list = $model->employeeSearch($params);
if (!$list->getModels()) {
throw new BadRequestHttpException('未找到符合条件的数据');
}
return $list;
}
/**
* @OA\GET(
* path="/backend/web/v1/shopuser/shop-users/employee-info",
* tags={"用户&员工接口"},
* summary="员工信息详情(侯贺政)",
* description="某员工的信息详情",
* @OA\Parameter(name="id",in="query",required=true,description="员工GUID",@OA\Schema(type="string")),
* @OA\Response(response="200",description="
* GUID:用户GUID,
* NAME:姓名,
* EMPLOYEE_CODE:员工编号,
* MOBILE_PHONE:手机号,
* AGE:年龄,
* CONTACT_SEX:性别,
* MEMBER_NO:会员卡号,
* IS_DISTRIBUTOR:分销商标识(0:否,1:是),
* EMPLOYEE_IS_MANAGER:员工是否为门店店长,
* BRANCH_CODE:用户所属门店编号"),
* security={{"Authorization": {}}}
* )
*/
public function actionEmployeeInfo($id)
{
$model = new $this->modelClass();
$model->GUID = $id;
if (!$model->validate()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
$data = $model->employeeInfo($id);
if (!$data) {
throw new BadRequestHttpException('请求错误,该员工不存在');
}
return $data;
}
/**
* @OA\Post(
* path="/backend/web/v1/shopuser/shop-users/employee-import",
* tags={"用户&员工接口"},
* summary="导入员工信息(侯贺政)",
* description="导入员工的信息,员工已存在为更新,不存在则新建",
* @OA\RequestBody(
* description="导入员工信息",
* @OA\MediaType(
* mediaType="multipart/form-data",
* @OA\Schema(
* type="object",
* @OA\Property(
* property="uploadFile",
* type="string",
* format="binary"
* ),
* )
* )
* ),
* @OA\Response(
* response=200,
* description="导入成功",
* ),
* @OA\Response(
* response=422,
* description="导入失败,数据验证错误,返回错误数据行号及错误信息(数组)。",
* ),
* security={{"Authorization":{}}}
* )
*/
public function actionEmployeeImport()
{
$upload_file = new UploadFiles(['xlsx', 'xls']);
$upload_file->uploadFiles = UploadedFile::getInstance($upload_file, 'uploadFile');
$fileInfo = $upload_file->upload();
if ($fileInfo['CODE'] != '200') {
Yii::$app->response->statusCode = 422;
if ($fileInfo['INFO']['uploadFiles'][0] == "类型不对") {
$fileInfo['INFO']['uploadFiles'][0] = '文件类型要求97-2003工作簿 xls格式!';
}
return $fileInfo['INFO'];
}
$arr = Helper::newSpreadsheet($fileInfo['INFO'][0])->getRows(true, ['rowOffset' => 2, 'columns' => 9]);
$model = new $this->modelClass();
$model->scenario = 'import';
$transcation = $model->getDb()->beginTransaction();
if (is_array($arr) && !empty($arr)) {
try {
foreach ($arr as $key => $value) {
$branch_info = ShopBranch::findOne(['CODE' => $value[8]]);
if (!$branch_info) {
$returnInfo = [
($key + 1) => ['error' => '不存在该门店,检查并更正所属门店编码,或删除此条数据']
];
@unlink($fileInfo['INFO'][0]);
Yii::$app->response->statusCode = 422;
return $returnInfo;
}
$_model = $model::findOne(['EMPLOYEE_CODE' => $value[1]]);
if ($_model === null) {
$_model = clone $model;
$_model->GUID = Func::create_guid();
$_model->CODE = $value[2];
$_model->CREATE_DATE = date('Y-m-d H:i:s', time());
}
//性别
if ($value[4] == '男') {
$value[4] = '1';
} elseif ($value[4] == '女') {
$value[4] = '0';
} elseif (!in_array($value[4], ['1', '0', ''])) {
$value[4] = '';
}
$_model->NAME = $value[0];
$_model->EMPLOYEE_CODE = $value[1];
$_model->MEMBER_NO = $value[3];
$_model->CONTACT_SEX = $value[4];
$_model->CONTACTBIRTH_DATE = $value[5];
$_model->EMPLOYEE_IS_MANAGER = $value[6];
$_model->IS_DISTRIBUTOR = $value[7];
$_model->EMPLOYEE_BRANCH_GUID = $branch_info['GUID'];
$_model->UPDATE_DATE = date('Y-m-d H:i:s', time());
if (!$_model->save()) {
$transcation->rollBack();
$returnInfo = [
($key + 1) => $_model->errors
];
@unlink($fileInfo['INFO'][0]);
Yii::$app->response->statusCode = 422;
return $returnInfo;
}
}
$transcation->commit();
@unlink($fileInfo['INFO'][0]);
throw new HttpException(200,"导入成功!");
} catch (\Throwable $th) {
$transcation->rollBack();
@unlink($fileInfo['INFO'][0]);
throw $th;
}
}
throw new BadRequestHttpException('导入失败!');
}
} }
<?php
namespace app\models\v1\shopuser;
use yii\data\ActiveDataProvider;
class ShopEmployee extends ShopUser
{
public $branch_code; //别名(所属门店别名)
public $birthday; //出生日期
/**
* 查询员工信息列表
*
* @param array $params 查询参数数组
* @return array|null 匹配到的员工列表
*/
public function employeeSearch($params)
{
$query = static::find()->alias('su')
->select('su.GUID,su.NAME,su.EMPLOYEE_CODE,su.MOBILE_PHONE,sb.NAME as SHOP_BRANCH_NAME')
->leftJoin('shop_branch sb', 'sb.GUID=su.EMPLOYEE_BRANCH_GUID')
->where(['su.BELONG' => 1]);
if (isset($params['NAME'])) {
$query->andfilterWhere(['like', 'su.NAME', $params['NAME']]);
}
if (isset($params['EMPLOYEE_CODE'])) {
$query->andfilterWhere(['like', 'su.EMPLOYEE_CODE', $params['EMPLOYEE_CODE']]);
}
if (isset($params['MOBILEPHONE'])) {
$query->andfilterWhere(['like', 'su.MOBILEPHONE', $params['MOBILEPHONE']]);
}
if (isset($params['EMPLOYEE_BRANCH_NAME'])) {
$query->andfilterWhere(['like', 'sb.NAME', $params['EMPLOYEE_BRANCH_NAME']]);
}
return new ActiveDataProvider(
[
'query' => $query->asArray(),
'pagination' => [
'pageSize' => 10,
]
]
);
}
/**
* {@inheritdoc}
*/
public function fields()
{
$fields = parent::fields();
$fields['BRANCH_CODE'] = 'branch_code'; //增加(所属门店别名)属性
$fields['AGE'] = function () { //根据生日计算年龄
list($year, $month, $day) = explode("-", date('Y-m-d',strtotime($this->birthday)));
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0)
$year_diff--;
return $year_diff;
};
return $fields;
}
/**
* 查询员工信息
*
* @param string $id 员工GUID
* @return array $info 该员工信息
*/
public function employeeInfo($id)
{
$info = static::find()->alias('su')
->select('su.GUID,su.NAME,su.EMPLOYEE_CODE,su.MOBILE_PHONE,su.CONTACTBIRTH_DATE as birthday,su.CONTACT_SEX,su.MEMBER_NO,su.IS_DISTRIBUTOR,su.EMPLOYEE_IS_MANAGER,sb.CODE as branch_code')
->leftJoin('shop_branch sb', 'sb.GUID=su.EMPLOYEE_BRANCH_GUID')
->where(['su.GUID' => $id, 'su.BELONG' => 1])
->one();
return $info;
}
}
...@@ -4,7 +4,6 @@ namespace app\models\v1\shopuser; ...@@ -4,7 +4,6 @@ namespace app\models\v1\shopuser;
use app\models\v1\BaseModel; use app\models\v1\BaseModel;
use Yii; use Yii;
use yii\data\ActiveDataProvider;
/** /**
* This is the model class for table "shop_user". * This is the model class for table "shop_user".
...@@ -71,9 +70,6 @@ use yii\data\ActiveDataProvider; ...@@ -71,9 +70,6 @@ use yii\data\ActiveDataProvider;
*/ */
class ShopUser extends BaseModel class ShopUser extends BaseModel
{ {
public $branch_code; //别名(所属门店别名)
public $birthday; //出生日期
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
...@@ -175,78 +171,4 @@ class ShopUser extends BaseModel ...@@ -175,78 +171,4 @@ class ShopUser extends BaseModel
'EMPDISTRIBUTO_RCODE' => 'Empdistributo Rcode', 'EMPDISTRIBUTO_RCODE' => 'Empdistributo Rcode',
]; ];
} }
/**
* 查询员工信息列表
*
* @param array $params 查询参数数组
* @return array|null 匹配到的员工列表
*/
public function employeeSearch($params)
{
$query = static::find()->alias('su')
->select('su.GUID,su.NAME,su.EMPLOYEE_CODE,su.MOBILE_PHONE,sb.NAME as SHOP_BRANCH_NAME')
->leftJoin('shop_branch sb', 'sb.GUID=su.EMPLOYEE_BRANCH_GUID')
->where(['su.BELONG' => 1]);
if (isset($params['NAME'])) {
$query->andfilterWhere(['like', 'su.NAME', $params['NAME']]);
}
if (isset($params['EMPLOYEE_CODE'])) {
$query->andfilterWhere(['like', 'su.EMPLOYEE_CODE', $params['EMPLOYEE_CODE']]);
}
if (isset($params['MOBILEPHONE'])) {
$query->andfilterWhere(['like', 'su.MOBILEPHONE', $params['MOBILEPHONE']]);
}
if (isset($params['EMPLOYEE_BRANCH_NAME'])) {
$query->andfilterWhere(['like', 'sb.NAME', $params['EMPLOYEE_BRANCH_NAME']]);
}
return new ActiveDataProvider(
[
'query' => $query->asArray(),
'pagination' => [
'pageSize' => 10,
]
]
);
}
/**
* {@inheritdoc}
*/
public function fields()
{
$fields = parent::fields();
$fields['BRANCH_CODE'] = 'branch_code'; //增加(所属门店别名)属性
$fields['AGE'] = function () { //根据生日计算年龄
list($year, $month, $day) = explode("-", date('Y-m-d',strtotime($this->birthday)));
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0)
$year_diff--;
return $year_diff;
};
return $fields;
}
/**
* 查询员工信息
*
* @param string $id 员工GUID
* @return array $info 该员工信息
*/
public function employeeInfo($id)
{
$info = static::find()->alias('su')
->select('su.GUID,su.NAME,su.EMPLOYEE_CODE,su.MOBILE_PHONE,su.CONTACTBIRTH_DATE as birthday,su.CONTACT_SEX,su.MEMBER_NO,su.IS_DISTRIBUTOR,su.EMPLOYEE_IS_MANAGER,sb.CODE as branch_code')
->leftJoin('shop_branch sb', 'sb.GUID=su.EMPLOYEE_BRANCH_GUID')
->where(['su.GUID' => $id, 'su.BELONG' => 1])
->one();
return $info;
}
} }
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