You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
315 lines
9.6 KiB
315 lines
9.6 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | Niucloud-admin 企业快速开发的多应用管理平台
|
|
// +----------------------------------------------------------------------
|
|
// | 官方网址:https://www.niucloud.com
|
|
// +----------------------------------------------------------------------
|
|
// | niucloud团队 版权所有 开源版本可自由商用
|
|
// +----------------------------------------------------------------------
|
|
// | Author: Niucloud Team
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\api\controller\apiController;
|
|
|
|
use app\dict\member\MemberLoginTypeDict;
|
|
use app\model\reimbursement\Reimbursement;
|
|
use app\Request;
|
|
use app\service\api\apiService\PersonnelService;
|
|
use app\service\api\apiService\ServiceService;
|
|
use app\service\api\captcha\CaptchaService;
|
|
use app\service\api\login\ConfigService;
|
|
use app\service\api\login\LoginService;
|
|
use core\base\BaseApiService;
|
|
use Exception;
|
|
use think\Response;
|
|
|
|
/**
|
|
* 员工端相关接口
|
|
* Class Personnel
|
|
* @package app\api\controller\apiController
|
|
*/
|
|
class Personnel extends BaseApiService
|
|
{
|
|
|
|
//员工详情
|
|
public function info(Request $request){
|
|
//获取员工信息
|
|
$where = [
|
|
'id'=>$this->member_id,
|
|
];
|
|
$res = (new PersonnelService())->info($where);
|
|
if(!$res['code']){
|
|
return fail($res['msg']);
|
|
}
|
|
return success($res['data']);
|
|
}
|
|
|
|
//员工修改
|
|
public function edit(Request $request){
|
|
$params = $request->all();
|
|
|
|
// 构建基础数据,使用isset检查避免undefined key错误
|
|
$data = [];
|
|
|
|
// 基础信息字段
|
|
$baseFields = ['head_img', 'name', 'gender', 'birthday', 'phone', 'email', 'wx', 'address', 'native_place', 'education', 'profile', 'emergency_contact_phone', 'id_card_front', 'id_card_back'];
|
|
|
|
foreach ($baseFields as $field) {
|
|
if (isset($params[$field])) {
|
|
$data[$field] = $params[$field];
|
|
}
|
|
}
|
|
|
|
// 详细信息
|
|
if (isset($params['info']) && is_array($params['info'])) {
|
|
$data['info'] = $params['info'];
|
|
}
|
|
|
|
//获取员工信息
|
|
$where = [
|
|
'id'=>$this->member_id,
|
|
];
|
|
$res = (new PersonnelService())->edit($where,$data);
|
|
if(!$res['code']){
|
|
return fail($res['msg'] ?? '操作失败');
|
|
}
|
|
return success([]);
|
|
}
|
|
|
|
//人力资源-人员表
|
|
public function getPersonnelAll(Request $request){
|
|
//获取员工信息
|
|
$where = [
|
|
'account_type' => $request->param('account_type', ''),//账号类型|teacher=老师,market=销售
|
|
'personnel_id' => $request->param('personnel_id', ''),//员工id
|
|
'campus' => $request->param('campus', ''),//校区id
|
|
];
|
|
|
|
$field = 'id,name';
|
|
$res = (new PersonnelService())->getAll($where,$field);
|
|
// if(!$res){
|
|
// return fail('账户信息有误');
|
|
// }
|
|
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']);
|
|
|
|
}
|
|
|
|
|
|
public function reimbursement_list(){
|
|
return success((new PersonnelService())->reimbursement_list());
|
|
|
|
}
|
|
|
|
public function reimbursement_info(Request $request){
|
|
$data = [
|
|
'id' => $request->param('id', ''),
|
|
];
|
|
return success((new PersonnelService())->reimbursement_info($data));
|
|
|
|
}
|
|
|
|
public function reimbursement_add(Request $request){
|
|
$data = [
|
|
'id' => $request->param('id', ''),
|
|
'amount' => $request->param('amount', ''),
|
|
'description' => $request->param('description', ''),
|
|
'receipt_url' => $request->param('receipt_url', ''),
|
|
];
|
|
return success((new PersonnelService())->reimbursement_add($data));
|
|
|
|
}
|
|
|
|
/**
|
|
* 添加新员工信息
|
|
* @param Request $request
|
|
* @return mixed
|
|
*/
|
|
public function add(Request $request)
|
|
{
|
|
$params = $request->all();
|
|
|
|
// 验证必填字段
|
|
if (empty($params['name'])) {
|
|
return fail('员工姓名不能为空');
|
|
}
|
|
|
|
if (!isset($params['gender']) || $params['gender'] === '') {
|
|
return fail('请选择性别');
|
|
}
|
|
|
|
if (empty($params['phone'])) {
|
|
return fail('手机号码不能为空');
|
|
}
|
|
|
|
if (empty($params['account_type'])) {
|
|
return fail('请选择职位类型');
|
|
}
|
|
|
|
// 验证手机号格式
|
|
if (!preg_match('/^1[3-9]\d{9}$/', $params['phone'])) {
|
|
return fail('请输入正确的手机号码');
|
|
}
|
|
|
|
// 验证邮箱格式(如果提供了邮箱)
|
|
if (!empty($params['email']) && !filter_var($params['email'], FILTER_VALIDATE_EMAIL)) {
|
|
return fail('请输入正确的邮箱地址');
|
|
}
|
|
|
|
try {
|
|
$res = (new PersonnelService())->addPersonnel($params);
|
|
if (!$res['code']) {
|
|
return fail($res['msg']);
|
|
}
|
|
return success($res['data']);
|
|
} catch (\Exception $e) {
|
|
return fail('添加员工信息失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取我的服务记录列表
|
|
* @param Request $request
|
|
* @return \think\Response
|
|
*/
|
|
public function myServiceLogs(Request $request)
|
|
{
|
|
try {
|
|
$params = $request->all();
|
|
$res = (new ServiceService())->getMyServiceLogs($params);
|
|
return success($res);
|
|
} catch (\Exception $e) {
|
|
return fail('获取服务记录失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取服务记录详情
|
|
* @param Request $request
|
|
* @return \think\Response
|
|
*/
|
|
public function serviceLogDetail(Request $request)
|
|
{
|
|
try {
|
|
$params = $request->all();
|
|
$id = $params['id'] ?? 0;
|
|
|
|
if (empty($id)) {
|
|
return fail('服务记录ID不能为空');
|
|
}
|
|
|
|
$res = (new ServiceService())->getServiceLogDetail($id);
|
|
if (empty($res)) {
|
|
return fail('服务记录不存在');
|
|
}
|
|
|
|
return success($res);
|
|
} catch (\Exception $e) {
|
|
return fail('获取服务记录详情失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 更新服务结果
|
|
* @param Request $request
|
|
* @return \think\Response
|
|
*/
|
|
public function updateServiceRemark(Request $request)
|
|
{
|
|
try {
|
|
$params = $request->all();
|
|
$id = $params['id'] ?? 0;
|
|
$serviceRemark = $params['service_remark'] ?? '';
|
|
|
|
if (empty($id)) {
|
|
return fail('服务记录ID不能为空');
|
|
}
|
|
|
|
if (empty($serviceRemark)) {
|
|
return fail('服务结果内容不能为空');
|
|
}
|
|
|
|
$res = (new ServiceService())->updateServiceRemark($id, $serviceRemark);
|
|
if (!$res['code']) {
|
|
return fail($res['msg']);
|
|
}
|
|
|
|
return success([], '更新成功');
|
|
} catch (\Exception $e) {
|
|
return fail('更新服务结果失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取教练数据列表
|
|
* @param Request $request
|
|
* @return \think\Response
|
|
*/
|
|
public function getCoachList(Request $request)
|
|
{
|
|
try {
|
|
$res = (new PersonnelService())->getCoachList();
|
|
if (!$res['code']) {
|
|
return fail($res['msg']);
|
|
}
|
|
return success($res['data']);
|
|
} catch (\Exception $e) {
|
|
return fail('获取教练列表失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取教练列表(用于添加课程安排)
|
|
* @param Request $request
|
|
* @return \think\Response
|
|
*/
|
|
public function getCoachListForSchedule(Request $request)
|
|
{
|
|
try {
|
|
$data = $this->request->params([
|
|
["campus_id", 0], // 校区ID筛选
|
|
["keyword", ""], // 教练姓名关键词搜索
|
|
["status", 1] // 状态筛选,默认获取有效教练
|
|
]);
|
|
|
|
$res = (new PersonnelService())->getCoachListForSchedule($data);
|
|
if (!$res['code']) {
|
|
return fail($res['msg']);
|
|
}
|
|
return success('获取成功', $res['data']);
|
|
} catch (\Exception $e) {
|
|
return fail('获取教练列表失败:' . $e->getMessage());
|
|
}
|
|
}
|
|
|
|
}
|
|
|