Commit 286a9cc4 authored by 侯贺政's avatar 侯贺政

员工的更新和新建

Signed-off-by: 侯贺政's avatarhouhezheng <houhezheng@romens.cn>
parent 02b4f2da
...@@ -116,6 +116,8 @@ return [ ...@@ -116,6 +116,8 @@ return [
'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',
'POST,OPTIONS employee-add' => 'employee-add',
'PUT,OPTIONS employee-update' => 'employee-update',
], ],
], ],
//用户评论 //用户评论
......
...@@ -65,6 +65,7 @@ class ShopEmployeeController extends BaseController ...@@ -65,6 +65,7 @@ class ShopEmployeeController extends BaseController
* NAME:姓名, * NAME:姓名,
* EMPLOYEE_CODE:员工编号, * EMPLOYEE_CODE:员工编号,
* MOBILE_PHONE:手机号, * MOBILE_PHONE:手机号,
* CONTACTBIRTH_DATE:出生日期,
* AGE:年龄, * AGE:年龄,
* CONTACT_SEX:性别, * CONTACT_SEX:性别,
* MEMBER_NO:会员卡号, * MEMBER_NO:会员卡号,
...@@ -189,7 +190,7 @@ class ShopEmployeeController extends BaseController ...@@ -189,7 +190,7 @@ class ShopEmployeeController extends BaseController
} }
$transcation->commit(); $transcation->commit();
@unlink($fileInfo['INFO'][0]); @unlink($fileInfo['INFO'][0]);
throw new HttpException(200,"导入成功!"); throw new HttpException(200, "导入成功!");
} catch (\Throwable $th) { } catch (\Throwable $th) {
$transcation->rollBack(); $transcation->rollBack();
@unlink($fileInfo['INFO'][0]); @unlink($fileInfo['INFO'][0]);
...@@ -198,4 +199,111 @@ class ShopEmployeeController extends BaseController ...@@ -198,4 +199,111 @@ class ShopEmployeeController extends BaseController
} }
throw new BadRequestHttpException('导入失败!'); throw new BadRequestHttpException('导入失败!');
} }
/**
* @OA\POST(
* path="/backend/web/v1/shopuser/shop-employees/employee-add",
* tags={"用户&员工接口"},
* summary="添加员工(侯贺政)",
* description="添加新员工",
* @OA\RequestBody(
* required=true,
* description="注:年龄为生日计算所得,不参与更新,详情页仅有展示作用;出生日期格式为Y-m-d,如示例所示",
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* type="object",
* required={"NAME","EMPLOYEE_CODE","MOBILE_PHONE","BRANCH_CODE"},
* @OA\Property(property="NAME",type="string",description="员工姓名"),
* @OA\Property(property="EMPLOYEE_CODE",type="string",description="员工编号"),
* @OA\Property(property="MOBILE_PHONE",type="string",description="手机号"),
* @OA\Property(property="CONTACTBIRTH_DATE",type="date",description="出生日期(Y-m-d)",example="2000-01-01"),
* @OA\Property(property="CONTACT_SEX",type="string",description="性别(1:男,0:女)",example="1"),
* @OA\Property(property="MEMBER_NO",type="string",description="会员卡号"),
* @OA\Property(property="IS_DISTRIBUTOR",type="int",description="分销商标识(默认1:是,0:否)",example="1"),
* @OA\Property(property="EMPLOYEE_IS_MANAGER",type="string",description="员工是否为门店店长(默认0:否,1:是)",example="0"),
* @OA\Property(property="PASSWORD",type="string",description="员工密码(默认"0000000")",example="000000"),
* @OA\Property(property="BRANCH_CODE",type="string",description="用户所属门店编号"),
* )
* )
* ),
* @OA\Response(response=200,description="添加成功!"),
* @OA\Response(response=422,description="数据验证失败,返回错误信息(数组)"),
* security={{"Authorization":{}}}
* )
*/
public function actionEmployeeAdd()
{
$params = Yii::$app->request->bodyParams;
$model = new $this->modelClass();
$model->scenario = 'add';
$model->attributes = $params;
$model->GUID = Func::create_guid();
$model->CODE = $params['MOBILE_PHONE'];
$model->CREATE_GUID = Yii::$app->user->identity->GUID;
$model->CREATE_NAME = Yii::$app->user->identity->NAME;
$model->CREATE_DATE = date('Y-m-d H:i:s');
if (!$model->save()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
throw new HttpException(200, '添加成功!');
}
/**
* @OA\PUT(
* path="/backend/web/v1/shopuser/shop-employees/employee-update",
* tags={"用户&员工接口"},
* summary="添加员工(侯贺政)",
* description="添加新员工",
* @OA\RequestBody(
* required=true,
* description="注:年龄为生日计算所得,不参与更新,详情页仅有展示作用;出生日期格式为Y-m-d,如示例所示",
* @OA\MediaType(
* mediaType="application/x-www-form-urlencoded",
* @OA\Schema(
* type="object",
* required={"GUID","MOBILE_PHONE",'BRANCH_CODE','NAME'},
* @OA\Property(property="NAME",type="string",description="员工姓名"),
* @OA\Property(property="EMPLOYEE_CODE",type="string",description="员工编号"),
* @OA\Property(property="MOBILE_PHONE",type="string",description="手机号"),
* @OA\Property(property="CONTACTBIRTH_DATE",type="date",description="出生日期(Y-m-d)",example="2000-01-01"),
* @OA\Property(property="CONTACT_SEX",type="string",description="性别(1:男,0:女)",example="1"),
* @OA\Property(property="MEMBER_NO",type="string",description="会员卡号"),
* @OA\Property(property="IS_DISTRIBUTOR",type="int",description="分销商标识(1:是,0:否)",example="1"),
* @OA\Property(property="EMPLOYEE_IS_MANAGER",type="string",description="员工是否为门店店长(0:否,1:是)",example="0"),
* @OA\Property(property="PASSWORD",type="string",description="员工密码(默认"0000000")",example="000000"),
* @OA\Property(property="BRANCH_CODE",type="string",description="用户所属门店编号"),
* )
* )
* ),
* @OA\Response(response=200,description="添加成功!"),
* @OA\Response(response=422,description="数据验证失败,返回错误信息(数组)"),
* security={{"Authorization":{}}}
* )
*/
public function actionEmployeeUpdate()
{
$params = Yii::$app->request->bodyParams;
$model = new $this->modelClass();
$model->scenario = 'employeeUpdate';
//过滤掉部分为空的参数
foreach ($params as $key => $value) {
if (in_array($key, ['EMPLOYEE_CODE', 'CONTACTBIRTH_DATE', 'IS_DISTRIBUTOR', 'EMPLOYEE_IS_MANAGER', 'PASSWORD']) && empty(trim($value))) {
unset($params[$key]);
}
}
$model->CODE = $params['MOBILE_PHONE'];
$model->UPDATE_GUID = Yii::$app->user->identity->GUID;
$model->UPDATE_NAME = Yii::$app->user->identity->NAME;
$model->UPDATE_DATE = date('Y-m-d H:i:s');
if (!$model->save()) {
Yii::$app->response->statusCode = 422;
return $model->errors;
}
throw new HttpException(200, '更新成功!');
}
} }
...@@ -483,4 +483,25 @@ class ShopBranch extends BaseModel ...@@ -483,4 +483,25 @@ class ShopBranch extends BaseModel
$dataProvider->setModels($temp); $dataProvider->setModels($temp);
return $dataProvider; return $dataProvider;
} }
/**
* 获取某省级下的所有门店GUID
*
* @param string $ProvinceBranchGuid 省级门店GUID
* @return array|null 返回此省级下的所有门店
*/
public function getBranches($ProvinceBranchGuid)
{
$query = static::find()
->select('GUID')
->where(['BRANCH_TYPE' => BRANCH_TYPE_STORE])
->andWhere(['PARENT_GUID' => $ProvinceBranchGuid])
->asArray()
->all();
$temp = [];
foreach ($query as $value) {
$temp[] = $value['GUID'];
}
return $temp;
}
} }
...@@ -2,12 +2,73 @@ ...@@ -2,12 +2,73 @@
namespace app\models\v1\shopuser; namespace app\models\v1\shopuser;
use Yii;
use app\models\v1\branch\ShopBranch;
use app\models\v1\rbacuser\ShopRbacUser;
use yii\data\ActiveDataProvider; use yii\data\ActiveDataProvider;
class ShopEmployee extends ShopUser class ShopEmployee extends ShopUser
{ {
public $branch_code; //别名(所属门店别名) public $BRANCH_CODE; //所属门店编码
public $birthday; //出生日期
/**
* {@inheritdoc}
*/
public function rules()
{
$fields = parent::rules();
$fields[] = [['NAME', 'MOBILE_PHONE', 'BRANCH_CODE'], 'required', 'on' => ['add', 'employeeUpdate']];
$fields[] = [['EMPLOYEE_CODE'], 'unique', 'on' => ['add', 'employeeUpdate']];
$fields[] = [['EMPLOYEE_CODE'], 'required', 'on' => ['import', 'add']];
$fields[] = ['MOBILE_PHONE', 'match', 'pattern' => '/^[1][34578][0-9]{9}$/', 'message' => '请输入有效的手机号码'];
$fields[] = [['CONTACTBIRTH_DATE'], 'date', 'format' => 'Y-m-d'];
$fields[] = ['BRANCH_CODE', 'validateBranchCode', 'on' => ['add', 'employeeUpdate']];
return $fields;
}
/**
* 验证输入门店是否为权限范围内的门店
*/
public function validateBranchCode()
{
$allowed = 1;
$branchModel = new ShopBranch();
$userInfo = (new ShopRbacUser)->getRbacUserInfo(Yii::$app->user->identity->GUID);
$branchInfo = $branchModel::find()->select('GUID')->where(['CODE' => $this->BRANCH_CODE])->one();
if (!$branchInfo) {
$allowed = 0;
}
switch ($userInfo['ROLE_ID']) {
case USER_ROLE_REGION_ADMIN:
$branches = $branchModel->getBranches($userInfo['BRANCH_GUID']);
if (!in_array($branchInfo['GUID'], $branches)) {
$allowed = 0;
}
break;
case USER_ROLE_STORE_ADMIN:
if ($userInfo['BRANCH_GUID'] != $branchInfo['GUID']) {
$allowed = 0;
}
break;
default:
$allowed = 1;
break;
}
if ($allowed == 0) {
$this->addError('BRANCH_CODE', '门店编号不正确');
}
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
$attributeLables = parent::attributeLabels();
$attributeLables['BRANCH_CODE'] = "员工所属门店编号";
return $attributeLables;
}
/** /**
* 查询员工信息列表 * 查询员工信息列表
...@@ -54,9 +115,9 @@ class ShopEmployee extends ShopUser ...@@ -54,9 +115,9 @@ class ShopEmployee extends ShopUser
public function fields() public function fields()
{ {
$fields = parent::fields(); $fields = parent::fields();
$fields['BRANCH_CODE'] = 'branch_code'; //增加(所属门店别名)属性 $fields['BRANCH_CODE'] = 'BRANCH_CODE'; //增加(所属门店别名)属性
$fields['AGE'] = function () { //根据生日计算年龄 $fields['AGE'] = function () { //根据生日计算年龄
list($year, $month, $day) = explode("-", date('Y-m-d',strtotime($this->birthday))); list($year, $month, $day) = explode("-", date('Y-m-d', strtotime($this->CONTACTBIRTH_DATE)));
$year_diff = date("Y") - $year; $year_diff = date("Y") - $year;
$month_diff = date("m") - $month; $month_diff = date("m") - $month;
$day_diff = date("d") - $day; $day_diff = date("d") - $day;
...@@ -76,7 +137,7 @@ class ShopEmployee extends ShopUser ...@@ -76,7 +137,7 @@ class ShopEmployee extends ShopUser
public function employeeInfo($id) public function employeeInfo($id)
{ {
$info = static::find()->alias('su') $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') ->select('su.GUID,su.NAME,su.EMPLOYEE_CODE,su.MOBILE_PHONE,su.CONTACTBIRTH_DATE,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') ->leftJoin('shop_branch sb', 'sb.GUID=su.EMPLOYEE_BRANCH_GUID')
->where(['su.GUID' => $id, 'su.BELONG' => 1]) ->where(['su.GUID' => $id, 'su.BELONG' => 1])
->one(); ->one();
......
...@@ -85,7 +85,7 @@ class ShopUser extends BaseModel ...@@ -85,7 +85,7 @@ class ShopUser extends BaseModel
{ {
return [ return [
[['GUID', 'CODE'], 'required', 'on' => ['creation']], [['GUID', 'CODE'], 'required', 'on' => ['creation']],
[['CREATE_DATE', 'UPDATE_DATE', 'CONTACTBIRTH_DATE', 'PROTECTED_DATE'], 'safe'], [['CREATE_DATE', 'UPDATE_DATE', 'PROTECTED_DATE'], 'safe'],
[['BINDCARD'], 'string'], [['BINDCARD'], 'string'],
[['SIGNIN_POINT', 'CONSUMPTION_POINT'], 'number'], [['SIGNIN_POINT', 'CONSUMPTION_POINT'], 'number'],
[['BELONG', 'AGE', 'IS_HSDISTRIBUTOR', 'IS_HS_DISTRIBUTOR_PARENT', 'IS_EMPDISTRIBUTOR'], 'integer'], [['BELONG', 'AGE', 'IS_HSDISTRIBUTOR', 'IS_HS_DISTRIBUTOR_PARENT', 'IS_EMPDISTRIBUTOR'], 'integer'],
...@@ -98,9 +98,8 @@ class ShopUser extends BaseModel ...@@ -98,9 +98,8 @@ class ShopUser extends BaseModel
[['IS_FOCUSON', 'CRM_CUSTOMER_ID', 'USER_REGION_NUMBER', 'USER_SELF_NUMBER'], 'string', 'max' => 20], [['IS_FOCUSON', 'CRM_CUSTOMER_ID', 'USER_REGION_NUMBER', 'USER_SELF_NUMBER'], 'string', 'max' => 20],
[['LABEL', 'SHARE_QRPATH', 'HS_SHAREQR_PATH', 'HSDIS_PARENT_GUID'], 'string', 'max' => 200], [['LABEL', 'SHARE_QRPATH', 'HS_SHAREQR_PATH', 'HSDIS_PARENT_GUID'], 'string', 'max' => 200],
[['ALIPAYAC_COUNT'], 'string', 'max' => 30], [['ALIPAYAC_COUNT'], 'string', 'max' => 30],
[['CODE'], 'unique', 'on' => ['creation','update']], [['CODE'], 'unique', 'on' => ['creation']],
[['GUID'], 'unique', 'on' => ['creation']], [['GUID'], 'unique', 'on' => ['creation','add']],
[['EMPLOYEE_CODE'],'required','on'=>['import']],
]; ];
} }
......
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