Browse Source

feat(personnel): 员工端增加修改密码功能

- 新增 checkOldPwd 方法用于验证旧密码是否正确
- 新增 edidPassword 方法用于修改员工登录密码
- 在路由中添加相应的 API 接口
- 优化了代码格式和命名规范
master
liutong 11 months ago
parent
commit
f9ac6fbae0
  1. 31
      niucloud/app/api/controller/apiController/Personnel.php
  2. 6
      niucloud/app/api/route/route.php
  3. 114
      niucloud/app/service/api/apiService/PersonnelService.php

31
niucloud/app/api/controller/apiController/Personnel.php

@ -81,5 +81,36 @@ class Personnel extends BaseApiService
return success($res); return success($res);
} }
//验证新旧密码是否正确
public function checkOldPwd(Request $request){
//获取员工信息
$old_password = $request->param('old_password','');
if(empty($old_password)){
return fail('请输入旧密码');
}
$res = (new PersonnelService())->checkOldPwd($old_password);
if(!$res['code']){
return fail('旧密码不正确');
}
return success($res['data']);
}
//员工端-修改登录密码
public function edidPassword(Request $request){
$new_password = $request->param('new_password','');//新密码
$key_value = $request->param('key_value','');//修改密码的key_value
$phone = $request->param('phone','');//登录账号
if(empty($new_password) || empty($key_value)){
return fail('缺少参数');
}
$res = (new PersonnelService())->edidPassword($phone,$new_password,$key_value);
if(!$res['code']){
return fail($res['msg']);
}
return success($res['data']);
}
} }

6
niucloud/app/api/route/route.php

@ -173,6 +173,8 @@ Route::group(function () {
Route::post('personnelLogin', 'login.Login/personnelLogin'); Route::post('personnelLogin', 'login.Login/personnelLogin');
//获取字典 //获取字典
Route::get('common/getDictionary', 'apiController.Common/getDictionary'); Route::get('common/getDictionary', 'apiController.Common/getDictionary');
//员工端-修改密码操作
Route::post('personnel/edidPassword', 'apiController.Personnel/edidPassword');
@ -202,6 +204,10 @@ Route::group(function () {
Route::get('personnel/info', 'apiController.Personnel/info'); Route::get('personnel/info', 'apiController.Personnel/info');
//员工端-修改 //员工端-修改
Route::post('personnel/edit', 'apiController.Personnel/edit'); Route::post('personnel/edit', 'apiController.Personnel/edit');
//员工端-验证旧密码是否正确
Route::post('personnel/checkOldPwd', 'apiController.Personnel/checkOldPwd');
//员工端-获取全部人员列表 //员工端-获取全部人员列表
Route::get('personnel/getPersonnelAll', 'apiController.Personnel/getPersonnelAll'); Route::get('personnel/getPersonnelAll', 'apiController.Personnel/getPersonnelAll');
//客户资源-添加 //客户资源-添加

114
niucloud/app/service/api/apiService/PersonnelService.php

@ -16,10 +16,9 @@ use app\model\departments\Departments;
use app\model\member\Member; use app\model\member\Member;
use app\model\personnel\Personnel; use app\model\personnel\Personnel;
use app\model\sys\SysRole; use app\model\sys\SysRole;
use app\service\core\member\CoreMemberService; use app\model\sys\SysUser;
use core\base\BaseApiService; use core\base\BaseApiService;
use core\exception\ApiException; use think\facade\Cache;
use core\util\Barcode;
use think\Model; use think\Model;
/** /**
@ -36,7 +35,8 @@ class PersonnelService extends BaseApiService
} }
//获取员工信息 //获取员工信息
public function info(array $where,string $field = '*'){ public function info(array $where, string $field = '*')
{
$model = $this->model; $model = $this->model;
$res = [ $res = [
@ -56,9 +56,12 @@ class PersonnelService extends BaseApiService
//查询用户角色校区部门信息 //查询用户角色校区部门信息
$campus_person_role = CampusPersonRole::where('person_id', $where['id']) $campus_person_role = CampusPersonRole::where('person_id', $where['id'])
->with([ ->with([
'campus' => function ($query) {}, 'campus' => function ($query) {
'sysRole' => function ($query) {}, },
'departments' => function ($query) {} 'sysRole' => function ($query) {
},
'departments' => function ($query) {
}
]) ])
->select()->toArray(); ->select()->toArray();
$role_id = array_unique(array_column($campus_person_role, 'role_id')); $role_id = array_unique(array_column($campus_person_role, 'role_id'));
@ -130,7 +133,7 @@ class PersonnelService extends BaseApiService
} else { } else {
$data = []; $data = [];
$res['code'] = 0; $res['code'] = 0;
$res['msg'] = '找到数据'; $res['msg'] = '找到数据';
$res['data'] = $data; $res['data'] = $data;
} }
@ -139,7 +142,8 @@ class PersonnelService extends BaseApiService
} }
//员工信息-修改 //员工信息-修改
public function edit(array $where,array $data){ public function edit(array $where, array $data)
{
$data['update_time'] = date('Y-m-d H:i:s'); $data['update_time'] = date('Y-m-d H:i:s');
if (!$where) { if (!$where) {
@ -209,7 +213,96 @@ class PersonnelService extends BaseApiService
return $res; return $res;
} }
//验证旧密码
public function checkOldPwd(string $old_passowrd)
{
$res = [
'code' => 0,
'msg' => '操作失败',
'data' => []
];
$personnel_id = $this->member_id;
$phone = $this->model->where('id', $personnel_id)->value('phone');
$password = (new SysUser())->where('username', $phone)->value('password');
if (!check_password($old_passowrd, $password)) {
$res['msg'] = '旧密码错误';
return $res;
}
$res['code'] = 1;
$res['msg'] = '密码正确';
$res['data'] = [
'key_value' => $this->setEditPasswordKey($phone)
];
return $res;
}
//设置新密码
public function edidPassword($phone, $new_password, $key_value)
{
$checkEditPasswordKey = $this->checkEditPasswordKey($phone, $key_value);//验证修改密码允许的缓存key
if (!$checkEditPasswordKey['code']) {
return $checkEditPasswordKey;
}
//查询用户修改密码
$update = (new SysUser())->where('username', $phone)->update([
'password' => create_password($new_password),//创建密码
'update_time' => time(),
]);
if (!$update) {
$res = [
'code' => 0,
'msg' => '操作失败',
'data' => []
];
} else {
$res = [
'code' => 1,
'msg' => '操作成功',
'data' => []
];
}
return $res;
}
//生成修改密码允许的缓存key
public function setEditPasswordKey(string $phone)
{
$key_name = 'edit_password_' . $phone;
//生成字符串,存入cache中
//check_password()//验证
//create_password()//创建
$key_value = create_password($key_name);
// 缓存在3600秒之后过期
Cache::set($key_name, $key_value, 3600);
return $key_value;
}
//验证修改密码允许的缓存key
public function checkEditPasswordKey(string $phone, string $key_value)
{
$res = [
'code' => 0,
'msg' => ''
];
$key_name = 'edit_password_' . $phone;
$key_value_cache = Cache::get($key_name);
if (empty($key_value_cache)) {
$res['msg'] = '参数已过期,请重新输入旧密码进行验证';
return $res;
}
//验证
if ($key_value_cache != $key_value) {
$res['msg'] = '参数不正确,请重新输入旧密码进行验证';
return $res;
}
$res['code'] = 1;
$res['msg'] = '操作成功';
return $res;
}
/** /**
@ -217,7 +310,8 @@ class PersonnelService extends BaseApiService
* @param array $data * @param array $data
* @return Member|array|mixed|Model !!! 仔细看,返回值是模型对象 如果想要判断是否为空 请用 $member->isEmpty() * @return Member|array|mixed|Model !!! 仔细看,返回值是模型对象 如果想要判断是否为空 请用 $member->isEmpty()
*/ */
public function findMemberInfo(array $data){ public function findMemberInfo(array $data)
{
//会员账号 //会员账号
if (!empty($data['username'])) if (!empty($data['username']))
$where[] = ['username', '=', $data['username']]; $where[] = ['username', '=', $data['username']];

Loading…
Cancel
Save