php版本 悟空crm自主开发HR人力资源模块(定制开发)

PHP开发好的人力资源管理功能,人事行政部门可以轻松管理、人员招聘、简历管理、offer管理、人员面试等等日常工作,帮助企业提升工作效率

1、自己开发的部分CRM核心代码披露:

// 员工提醒 (转正之前一周显示提醒)

 public function remind()
    {
        $sdate = date('Y-m-d');
        $edate = date('Y-m-d', strtotime('+1 week', strtotime(date('Y-m-d'))));
        // echo $date;exit;
        $data = model('Offer')->alias('o')
                ->join('hrm_option ho', 'ho.id=o.classId')
                ->field('o.*,ho.op_txt as classId_txt')
                ->where('o.zzzr','>=', $sdate)
                ->where('o.zzzr','<=', $edate)
                ->where('o.check_status', 2)
                ->order('o.zzzr asc')
                ->select();
        return resultArray(['data' => $data]);
    }

//用户信息导出

 public function excelExport()
    {
        $param = $this->param;
        $userInfo = $this->userInfo;
        $param['user_id'] = $userInfo['id'];
        $action_name = '导出';
        // $action_name = '导出全部';
        // if ($param['customer_id']) {
        //     $param['customer_id'] = ['condition' => 'in', 'value' => $param['customer_id'], 'form_type' => 'text', 'name' => ''];
        //     $action_name = '导出选中';
        // }
        $excelModel = new \app\admin\model\Excel();
        // 导出的字段列表
        $fieldModel = new \app\admin\model\Field();
        $field_list = $param['fieldList'];
        // 文件名
        $file_name = 'offer_' . date('Ymd');

        $model = model('Offer');
        $temp_file = $param['temp_file'];
        unset($param['temp_file']);
        $page = $param['page'] ?: 1;
        unset($param['page']);
        unset($param['export_queue_index']);
        RecordActionLog($userInfo['id'], 'hrm_offer', 'excelexport', $action_name, '', '', '导出offer');
        return $excelModel->batchExportCsv($file_name, $temp_file, $field_list, $page, function ($page, $limit) use ($model, $param, $field_list) {
            $param['page'] = $page;
            $param['limit'] = $limit;
            $data = $model->getDataList($param);
            $data['list'] = $model->exportHandle($data['list'], $field_list, 'hrm_offer');
            return $data;
        });

    }

2、人力资源的菜单

在这里插入图片描述

3、创建招聘需求:

在这里插入图片描述

4、简历管理的列表页:

在这里插入图片描述

5、面试者的个人信息都会记录到系统的,实现企业无纸化办公:

在这里插入图片描述

6、面试者的面试记录过程都会记录到系统里面的:

在这里插入图片描述

7、面试转态,是否通过还是被pass都会记录下来的

在这里插入图片描述

<?php

namespace app\hrm\model;

use app\admin\controller\ApiCommon;
use app\admin\model\User;
use app\admin\traits\FieldVerificationTrait;
use think\Db;
use app\admin\model\Common;
use think\response\Json;

class Miansjl extends Common
{
    use FieldVerificationTrait;

	protected $name = 'hrm_miansjl';
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';
	protected $autoWriteTimestamp = true;

}
public function getDataList($request)
{
    # 格式化参数
    $request    = $this->fmtRequest( $request );
    $requestMap = $request['map'] ? : [];

    # 普通筛选
    $searchMap = [];
    if(isset($request['khmcId']) && $request['khmcId']){ //客户名称
        $searchMap['bring.khmcId'] = ['=', $request['khmcId']];
    }
    if(isset($request['zprq']) && $request['zprq'] && isset($request['zprq2']) && $request['zprq2']){ //发布日期
        $searchMap['bring.create_time'] = [ ['>=',$request['zprq']], ['<=',$request['zprq2']], 'and'];
    }else if(isset($request['zprq']) && $request['zprq']){
        $searchMap['bring.create_time'] = ['>=',$request['zprq']];
    }else if(isset($request['zprq2']) && $request['zprq2']){
        $searchMap['bring.create_time'] = ['<=',$request['zprq2']];
    }
    if(isset($request['zpzw']) && $request['zpzw']){ //招聘职位
        $searchMap['bring.zpzw'] = ['like', '%'.$request['zpzw'].'%'];
    }
    if(isset($request['chengs']) && $request['chengs']){ //城市
        $searchMap['bring.chengs'] = ['like', '%'.$request['chengs'].'%'];
    }
    if(isset($request['zpzyId']) && $request['zpzyId']){ //招聘专员
        $searchMap['bring.zpzyId'] = ['=', $request['zpzyId']];
    }
    if(isset($request['is_zt']) && $request['is_zt']){ //状态
        $searchMap['bring.is_zt'] = ['=', $request['is_zt']-1];
    }
    
    if(isset($requestMap['is_zt']) && $requestMap['is_zt']){ //状态
        $searchMap['bring.is_zt'] = ['=', $requestMap['is_zt']];
    }
    
    if(isset($requestMap['ids']) && $requestMap['ids']){
        $searchMap['bring.id'] = ['in', $requestMap['ids']];
    }
    if(isset($requestMap['khmcId']) && $requestMap['khmcId']){ //客户名称
        $searchMap['bring.khmcId'] = ['=', $requestMap['khmcId']];
    }
    if(isset($requestMap['postName']) && $requestMap['postName']){ //招聘职位
        $searchMap['bring.zpzw'] = ['like', '%'.$requestMap['postName'].'%'];
    }

    # 排序
    // if ($order_type && $order_field && $order_field != 'owner_user_structure_name') {
    //     $order = $fieldModel->getOrderByFormtype('crm_customer','customer',$order_field,$order_type);
    // } else {
        $order = 'bring.update_time desc';
    // }

	$list = db('hrm_bring')->alias('bring')
            ->where($map)
            ->where($searchMap)
            ->limit($request['offset'], $request['length'])
            // ->field($indexField)
            ->orderRaw($order)
            ->select();

    $totalRow = db('hrm_bring')->alias('bring')
            ->where($map)
            ->where($searchMap)
            ->count();

    foreach($list as $key=>$row){
        $list[$key]['create_time_txt'] = date('Y-m-d H:i:s', $row['create_time']);

        $khmcId_name = db('crm_customer')->where(['customer_id' => $row['khmcId']])->value('name');
        $khmcId_info = [
            'customer_id' => $row['khmcId'],
            'name' => $khmcId_name,
        ];

        $list[$key]['khmcId_name'] = $khmcId_name;
        // $list[$key]['khmcId'] = $khmcId_info;

        if(!$row['jjcdId']) $list[$key]['jjcdId'] = '';

        $zpzyId_name = db('admin_user')->where(['id' => $row['zpzyId']])->value('realname');
        $list[$key]['zpzyId_name'] = $zpzyId_name;
        
        $nUserId_name = db('admin_user')->where(['id' => $row['nUserId']])->value('realname');
        $list[$key]['nUserId_name'] = $nUserId_name;

        // 招聘人数(需求人数)
        $rs = intval($row['rs']);
        if($rs>0){
            // 入职人数
            $list[$key]['sjmzrs'] = Resume::alias('resume')
                                    ->join('(select msztId,nParentId,msrqsjian,create_time from 5kcrm_hrm_miansjl where id in (select max(id) from 5kcrm_hrm_miansjl group by nParentId)) ms', 'ms.nParentId=resume.id', 'left')
                                    ->where('resume.bring_id', $row['id'])
                                    ->where('ms.msztId','142')
                                    ->where('ms.msrqsjian','<=',strtotime($row['qwmzsj'].' 23:59:59'))
                                    ->count();

            // 满足率计算= 入职人数/需求人数 (只计算在新增需求--期望满足时间期内)
            $list[$key]['xqmzl'] = round($list[$key]['sjmzrs'] / $rs * 100, 2);

            $mslist_temp = Resume::alias('resume')
                                    ->join('(select msztId,nParentId,msrqsjian,create_time from 5kcrm_hrm_miansjl where id in (select max(id) from 5kcrm_hrm_miansjl group by nParentId)) ms', 'ms.nParentId=resume.id', 'left')
                                    ->where('resume.bring_id', $row['id'])
                                    ->where('ms.msztId','142')
                                    ->order('ms.msrqsjian asc')
                                    ->limit($rs)
                                    ->select();
            $list[$key]['sjmzsj'] = isset($mslist_temp[$rs-1]['msrqsjian'])?date('Y-m-d', $mslist_temp[$rs-1]['msrqsjian']):'';
        }else{
            $list[$key]['xqmzl'] = 0;
            $list[$key]['sjmzsj'] = '';
        }

        $list[$key]['check_status_info'] = $this->statusArr[$row['check_status']];
        $list[$key]['create_user_id_info'] = isset($row['create_user_id']) ? $userModel->getUserById($row['create_user_id']) : [];
    }

    $data = [];
    $data['list'] = $list ? : [];
    $data['totalRow'] = $totalRow ? : 0;
    return $data;
}

8、悟空crm安装搭建、二次开发、技术交流的可以 扫一扫
在这里插入图片描述

  • 23
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
悟空CRM采用全新的前后端分离模式,本仓库代码中已集成前端vue打包后文件,可免去打包操作 如需调整前端代码,请单独下载前端代码,前端代码在根目录的ux文件夹中 主要技术栈 后端框架:ThinkPHP 5.0.2 前端MVVM框架:Vue.JS 2.5.x 路由:Vue-Router 3.x 数据交互:Axios UI框架:Element-UI 2.6.3 悟空crm9.0的运行环境要求PHP5.6以上 一键安装 代码中已集成前端vue打包后文件,可免去打包操作: 以本地(phpstudy集成环境)搭建举例: 下载悟空CRM9.0开源版,在服务器根目录(www目录)下创建72crm文件夹,并放置代码; 浏览器访问 http://localhost/72crm/index.php/admin/install/index.html 根据安装提示步骤,完成悟空CRM9.0 的部署安装 开发依赖(需个性化安装或调整前端代码请按照以下教程,一键安装用户可忽略) 数据交互 数据交互通过axios以及RESTful架构来实现 用户校验通过登录返回的auth_key放在header 值得注意的一点是:跨域的情况下,会有预请求OPTION的情况 Server搭建 服务端使用的框架为thinkphp5.0.2,搭建前请确保拥有lamp/lnmp/wamp环境。 这里所说的搭建其实就是把server框架放入WEB运行环境,并使用80端口。 导入服务端根文件夹数据库文件public/sql/5kcrm.sql,并修改config/database.php配置文件。 配置要求 PHP >= 5.6.0 (暂不支持PHP7及以上版本) 当访问 http://localhost/, 出现“悟空软件”即代表后端接口搭建成功。 前端部署 安装node.js 前端部分是基于node.js上运行的,所以必须先安装node.js,版本要求为6.0以上 使用npm安装依赖 下载悟空CRM9.0前端代码; 可将代码放置在后端同级目录frontend,执行命令安装依赖: npm install 修改内部配置 修改请求地址或域名:config/dev.env.js里修改BASE_API(开发环境服务端地址,默认localhost) 修改自定义端口:config/index.js里面的dev对象的port参数(默认8080,不建议修改) 运行前端 npm run dev 注意:前端服务启动,默认会占用8080端口,所以在启动前端服务之前,请确认8080端口没有被占用。 程序运行之前需搭建好Server端
悟空HRM系统是一款开源免费的通用人力资源管理软件,采用先进的LAMP架构,具有良好的开放性、可扩展性、安全性和透明性;我们以HRM理念为基础,结合长期合作的用户向我们提出的建议,悟出了企业管理之道,形成了自身特有的特点和优势,志在为改善企业管理能力,实现企业信息化等方面提供现实有效的支持和帮助。 【主要特点】 > 开放源代码:用户可以免费使用; > 用户数不限:您可以在后台任意添加、修改、删除用户帐号; > 使用期不限:一次安装,终身使用; > 跨区域使用:基于B/S架构,只要通过可以连接互联网的设备,就可以随时使用; > 注重核心管理:帮助企业智能化管理薪资福利和考勤排班; > 安装简单:只需数秒即可全部安装完毕,正式开始使用; > 操作简单:系统流程设计简捷,功能实用,使用起来非常方便; > 个性定制:可以根据客户需要做个性化定制开发,满足客户更多的个性化需求; 【使用悟空HRM的好处】 > 操作便捷,功能使用 > 帮助企业提高企业人力资源管理水平 > 促使人力资源更有效的服务于组织或团体目标 > 丰富报表提供大量统计数据 > 安排调整培训计划,加强员工职业素养 > 合理安排薪资福利,避免员工频繁跳槽 > 完整管理人事档案 > 掌握员工的生产能力与投入成本的关系 > 科学评估执行效果,发现能力短板 > 维持竞争优势,适时作出调整 > 有效的促使组织经营目标的达成 > 方面员工查询个人信息记录 > 实现及时响应,快速决策 【悟空HRM的目标】 1、促进组织目标的达成。 人资主管可以清晰了解到公司的经营目标,帮助人资主管掌握全局经营观念。 2、帮助企业训练高素质员工,为公司培养贴合自身需求的得力员工。 通过悟空HRM系统,可以帮助企业管理员工培训,使管理层快速准确了解到员工职业素质水平,帮助员工提升个人能力。 3、协同工作,提高工作效率。 悟空HRM系统可以有效的将薪资福利、考勤排班、培训计划整合在一起,帮助企业各个部门协同处理问题,提高工作效率。 4、及时了解企业人力资源状况,合理配置人力资源。 帮助企业预知人力资源短缺,及时招聘与调动岗职位,以达到人力资源最有配置 5、提高员工满意度,防止频繁跳槽。 一目了然的薪资福利管理可帮助员工随时查阅奖惩与福利,使员工清晰了解到薪资发放依据,提高员工满意度,避免员工频繁跳槽给企业带来的损失。 6、多种绩效考核方式,评估员工工作能力。 在绩效考核中,可自己设置考核内容以生成考核模板。通过启用考核模板并设置评分对象和考核对象可以完成多人同时评分,准确把握员工各种能力。
很高兴为您解答关于悟空CRM二次开发的问题。 悟空CRM是一款基于云计算的客户关系管理系统,它提供了丰富的功能模块,包括销售管理、客户服务、营销管理等。同时,悟空CRM也提供了二次开发平台,使得用户可以根据自己的业务需求进行个性化定制。 以下是悟空CRM二次开发的教学步骤: 1.注册开发者账号 首先,您需要注册悟空CRM开发者账号,登录后即可进入二次开发平台。 2.了解二次开发平台 在二次开发平台中,您可以使用开放API接口、Webhook、自定义组件等方式进行二次开发。其中,API接口是最为常用的一种方式,通过调用API接口,可以实现对悟空CRM中数据的增删改查等操作。 3.创建应用 在二次开发平台中,您需要创建应用来进行二次开发。创建应用后,您可以获取到应用的AppId和AppSecret,这些信息在调用API接口时需要用到。 4.调用API接口 在二次开发中,您可以使用HTTP请求方式调用API接口。调用API接口的URL格式为:https://api.wukongcrm.com/api/{version}/{module}/{action},其中version为API版本,module为操作模块,action为执行操作。 例如,如果您要调用获取客户列表的接口,URL格式为:https://api.wukongcrm.com/api/v1/Customer/GetList。 5.使用自定义组件 在二次开发平台中,您也可以使用自定义组件来进行二次开发。自定义组件可以添加到悟空CRM中的页面上,实现对页面的个性化定制。 总的来说,悟空CRM二次开发是一个非常灵活和强大的工具,它可以满足不同用户的不同需求。但是,二次开发过程中需要有一定的编程基础和技术能力,如果您对此不太熟悉,建议寻求专业人士的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值