Преглед на файлове

省外经纪人核销及分佣

linwu преди 1 година
родител
ревизия
dfec0a90ae
променени са 6 файла, в които са добавени 356 реда и са изтрити 19 реда
  1. 30 0
      app/admin/controller/Out.php
  2. 60 0
      app/admin/view/out/setting.html
  3. 103 0
      app/agent/controller/Out.php
  4. 12 4
      app/agent/view/index.html
  5. 129 0
      app/agent/view/out/resumelist.html
  6. 22 15
      app/common/model/OutResume.php

+ 30 - 0
app/admin/controller/Out.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\admin\BaseController;
+use app\common\model\Config as ConfigModel;
+
+class Out extends BaseController
+{
+    public function setting()
+    {
+        $setting = ConfigModel::getConfigValue(['out_resume_broker','out_resume_agent']);
+        return view('out/setting', [
+            'setting' => $setting,
+        ]);
+    }
+
+    public function editSetting()
+    {
+        $data = [
+            'out_resume_broker' => input('out_resume_broker/f'),
+            'out_resume_agent' => input('out_resume_agent/f'),
+        ];
+        ConfigModel::setConfigValue($data);
+        exit(json_encode([
+            'code' => 0,
+            'msg'  => "",
+        ]));
+    }
+}

+ 60 - 0
app/admin/view/out/setting.html

@@ -0,0 +1,60 @@
+<div class="layui-fluid">
+	<div class="layui-row layui-col-space15">
+		<div class="layui-col-md12">
+			<div class="layui-card">
+				<div class="layui-card-header">佣金设置</div>
+				<div class="layui-card-body" pad15>
+
+					<div class="layui-form layui-form-pane" lay-filter="LAY-out-setting-form">
+						<div class="layui-form-item">
+							<label class="layui-form-label">简历经纪人</label>
+							<div class="layui-input-block">
+								<input type="text" placeholder="请输入佣金" name="out_resume_broker" value="{$setting['out_resume_broker']}" class="layui-input">
+								<div class="layui-form-mid layui-word-aux">简历核验通过时,经纪人获取的佣金,单位元</div>
+							</div>
+						</div>
+						<div class="layui-form-item">
+							<label class="layui-form-label">简历门店</label>
+							<div class="layui-input-block">
+								<input type="text" placeholder="请输入佣金" name="out_resume_agent" value="{$setting['out_resume_agent']}"
+								 class="layui-input">
+								<div class="layui-form-mid layui-word-aux">简历核验通过时,经纪人获取的佣金,单位元</div>
+							</div>
+						</div>
+						<div class="layui-form-item">
+							<div class="layui-input-block">
+								<button class="layui-btn" lay-submit lay-filter="LAY-out-setting-form-submit">确认修改</button>
+							</div>
+						</div>
+					</div>
+
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'set'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			form = layui.form
+		form.render();
+
+		form.on('submit(LAY-out-setting-form-submit)', function(obj) {
+			admin.req({
+				url: setter.baseAdminUrl + 'out/editsetting',
+				data: obj.field,
+				done: function(res) {
+					layer.msg("提交成功", { icon: 1 });
+				}
+			});
+
+		});
+	});
+</script>

+ 103 - 0
app/agent/controller/Out.php

@@ -0,0 +1,103 @@
+<?php
+
+namespace app\agent\controller;
+
+use app\agent\BaseController;
+use app\common\model\OutResume as OutResumeModel;
+use app\common\model\Broker as BrokerModel;
+use app\common\model\Config as ConfigModel;
+use app\common\service\AgentMoneyService;
+use app\common\service\IncomeService;
+
+class Out extends BaseController
+{
+    /**
+     * 简历库
+     */
+    public function resume()
+    {
+        $statuslist = OutResumeModel::$confirm_status;
+        return view('out/resumelist', [
+            'statuslist' => $statuslist,
+        ]);
+    }
+
+    public function listResume()
+    {
+        $limit   = input('limit');
+        $page    = input('page');
+        $map     = [];
+        $keyword = input('keywords/s');
+        if (!empty($keyword)) {
+            $map[] = ['name|mobile', 'like', "%{$keyword}%"];
+        }
+        $confirm_status = input('confirm_status/d');
+        if (!empty($confirm_status)) {
+            $map[] = ['confirm_status', '=', $confirm_status];
+        }
+        $broker_ids = BrokerModel::where('agentid', $this->access_agent['id'])->column('id');
+        if (empty($broker_ids)) {
+            $map[] = ['brokerid', '=', 0];
+        } else {
+            $map[] = ['brokerid', 'in', $broker_ids];
+        }
+        $list  = OutResumeModel::with('broker')
+            ->where($map)
+            ->order(['confirm_status' => 'asc'])
+            ->limit($limit)
+            ->page($page)
+            ->append(['confirm_status_text', 'gender_text'])
+            ->select();
+        $count = OutResumeModel::where($map)->count();
+        if ($count == 0) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "未查询到数据",
+            ]));
+        }
+        exit(json_encode([
+            'code'  => 0,
+            'msg'   => "",
+            'count' => $count,
+            'data'  => $list,
+        ]));
+    }
+
+    public function statusResume()
+    {
+        $id     = input('id/d', 0);
+        $status = input('status/d', 1);
+
+        $resume = OutResumeModel::find($id);
+        if (empty($resume)) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "该记录不存在。",
+            ]));
+        }
+
+        if ($resume['status'] != 1) {
+            exit(json_encode([
+                'code' => 1,
+                'msg'  => "请勿重复操作。",
+            ]));
+        }
+
+        $resume->confirm_status = $status;
+        $resume->save();
+
+        //分佣
+        if ($status == 2) {
+            $setting = ConfigModel::getConfigValue(['out_resume_broker','out_resume_agent']);
+            $incomeService = new IncomeService();
+            $incomeService->add($resume['brokerid'], $setting['out_resume_broker'], '录入简历', '省外经纪人录入简历并核验通过');
+            $broker = BrokerModel::find($resume['brokerid']);
+            $moneyService = new AgentMoneyService();
+            $moneyService->add($broker['id'], $setting['out_resume_agent'], '录入简历', '省外经纪人录入简历并核验通过后,门店奖励金额');
+        }
+
+        exit(json_encode([
+            'code' => 0,
+        ]));
+    }
+}

+ 12 - 4
app/agent/view/index.html

@@ -71,7 +71,7 @@
 						</a>
 					</li>
 
-					<li data-name="broker" class="layui-nav-item">
+					<li data-name="user" class="layui-nav-item">
 						<a lay-href="{:url('/user/userlist')}" lay-tips="用户管理">
 							<i class="layui-icon layui-icon-user"></i>
 							<cite>用户管理</cite>
@@ -83,19 +83,27 @@
 							<cite>经纪人管理</cite>
 						</a>
 					</li>
-					<li data-name="broker" class="layui-nav-item">
+					<li data-name="comjobs_report" class="layui-nav-item">
 						<a lay-href="{:url('/comjobs/report')}" lay-tips="悬赏报备管理">
 							<i class="layui-icon layui-icon-user"></i>
 							<cite>悬赏报备管理</cite>
 						</a>
 					</li>
+					{eq name="access_agent.type" value="2"}
+					<li data-name="out_resume" class="layui-nav-item">
+						<a lay-href="{:url('/out/resume')}" lay-tips="省外简历管理">
+							<i class="layui-icon layui-icon-user"></i>
+							<cite>省外简历管理</cite>
+						</a>
+					</li>
+					{/eq}
 					<!--<li data-name="broker" class="layui-nav-item">-->
 						<!--<a lay-href="{:url('/comjobs/report')}" lay-tips="派遣订单报备">-->
 							<!--<i class="layui-icon layui-icon-user"></i>-->
 							<!--<cite>派遣订单报备</cite>-->
 						<!--</a>-->
 					<!--</li>-->
-					<li data-name="broker" class="layui-nav-item">
+					<li data-name="mobilefollow" class="layui-nav-item">
 						<a lay-href="{:url('/mobilefollow/followList')}" lay-tips="拓客跟进">
 							<i class="layui-icon layui-icon-user"></i>
 							<cite>拓客跟进</cite>
@@ -149,7 +157,7 @@
 						<!--</dl>-->
 					<!--</li>-->
 
-					<li data-name="broker" class="layui-nav-item">
+					<li data-name="coach" class="layui-nav-item">
 						<a lay-href="{:url('/coach/coachlist')}" lay-tips="辅导培训">
 							<i class="layui-icon layui-icon-engine"></i>
 							<cite>辅导培训</cite>

+ 129 - 0
app/agent/view/out/resumelist.html

@@ -0,0 +1,129 @@
+<div class="layui-fluid">
+	<div class="layui-card">
+		<div class="layui-form layui-form-pane layui-card-header layuiadmin-card-header-auto" lay-filter="LAY-out-resumelist-search">
+			<div class="layui-form-item">
+				<div class="layui-inline">
+					<label class="layui-form-label">标题</label>
+					<div class="layui-input-block">
+						<input type="text" name="keywords" placeholder="请输入姓名或电话" autocomplete="off" class="layui-input">
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="layui-form-label">状态</label>
+					<div class="layui-input-block">
+						<select name="confirm_status">
+							<option value="">全部状态</option>
+							{volist name="statuslist" id="vo"}
+							<option value="{$key}">{$vo}</option>
+							{/volist}
+						</select>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<button class="layui-btn" lay-submit lay-filter="LAY-out-resumelist-search-btn">
+						<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
+					</button>
+				</div>
+			</div>
+		</div>
+
+		<div class="layui-card-body">
+			<table id="LAY-out-resumelist-table" lay-filter="LAY-out-resumelist-table"></table>
+			<script type="text/html" id="broker">
+				{{d.broker.title}}({{d.broker.mobile}})
+			</script>
+			<script type="text/html" id="setTpl">
+				{{#  if(d.confirm_status == 1){ }}
+					<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="pass"><i class="layui-icon layui-icon-edit"></i>通过</a>
+					<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="reject"><i class="layui-icon layui-icon-delete"></i>拒绝</a>
+				{{#  } }}
+			</script>
+		</div>
+
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'form', 'set', 'table'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			admin = layui.admin,
+			form = layui.form,
+			table = layui.table;
+		form.render();
+
+		//列表
+		table.render({
+			elem: '#LAY-out-resumelist-table',
+			url: setter.baseAgentUrl + 'out/listResume',
+			cols: [
+				[
+					{ title: '经纪人', align: 'center', toolbar: '#broker' },
+					{ field: 'name', title: '姓名', width: 100},
+					{ field: 'mobile', title: '联系方式', width: 160 },
+					{ field: 'idcard', title: '身份证号', width: 220 },
+					{ field: 'gender_text', title: '性别', width: 60 },
+					{ field: 'confirm_status_text', title: '状态', width: 100, align: 'center' },
+					{ field: 'jobintention', title: '求职意向', width: 200, align: 'center' },
+					{ field: 'address', title: '现居住地', width: 200, align: 'center' },
+					{ field: 'education', title: '学历', width: 100, align: 'center' },
+					{ title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#setTpl' }
+				]
+			],
+			page: true,
+			limit: 50,
+			cellMinWidth: 150,
+			text: '对不起,加载出现异常!'
+		});
+
+		//监听搜索
+		form.on('submit(LAY-out-resumelist-search-btn)', function(data) {
+			table.reload('LAY-out-resumelist-table', {
+				where: data.field,
+				page: {
+					curr: 1
+				}
+			});
+		});
+
+		//监听工具条
+		table.on('tool(LAY-out-resumelist-table)', function(obj) {
+			var data = obj.data;
+			if (obj.event === 'pass') {
+				layer.confirm('通过核验,佣金将自动分配,确定通过吗?', function(index) {
+					admin.req({
+						url: setter.baseAgentUrl + 'out/statusresume',
+						data: {
+							id: data.id,
+							status: 2,
+						},
+						done: function(res) {
+							table.reload('LAY-out-resumelist-table');
+							layer.msg('处理完成');
+						}
+					});
+					layer.close(index);
+				});
+			} else if (obj.event === 'reject') {
+				layer.confirm('核验失败,经纪人无法获得佣金,确定拒绝吗?', function(index) {
+					admin.req({
+						url: setter.baseAgentUrl + 'out/statusresume',
+						data: {
+							id: data.id,
+							status: 3,
+						},
+						done: function(res) {
+							table.reload('LAY-out-resumelist-table');
+							layer.msg('处理完成');
+						}
+					});
+					layer.close(index);
+				});
+			}
+		});
+	});
+</script>

+ 22 - 15
app/common/model/OutResume.php

@@ -9,21 +9,22 @@ class OutResume extends Model
 
     // 设置字段信息
     protected $schema = [
-        'id'           => 'int',
-        'brokerid'     => 'int',
-        'name'         => 'string',
-        'avatar'       => 'string',
-        'mobile'       => 'string',
-        'idcard'       => 'string',
-        'gender'       => 'tinyint',
-        'age'          => 'int',
-        'jobintention' => 'string',
-        'address'      => 'string',
-        'education'    => 'string',
-        'createtime'   => 'int',
-        'updatetime'   => 'int',
-        'comment'      => 'string',
-        'status'       => 'int',
+        'id'             => 'int',
+        'brokerid'       => 'int',
+        'name'           => 'string',
+        'avatar'         => 'string',
+        'mobile'         => 'string',
+        'idcard'         => 'string',
+        'gender'         => 'tinyint',
+        'age'            => 'int',
+        'jobintention'   => 'string',
+        'address'        => 'string',
+        'education'      => 'string',
+        'createtime'     => 'int',
+        'updatetime'     => 'int',
+        'comment'        => 'string',
+        'status'         => 'int',
+        'confirm_status' => 'int',
     ];
 
     // 设置字段自动转换类型
@@ -34,12 +35,18 @@ class OutResume extends Model
 
     static $status = [1 => '未跟进', 2 => '未面试', 3 => '面试通过', 4 => '面试未通过', 5 => '用户放弃', 6 => '已入职', 7 => '已离职'];
     static $gender = [1 => '男', 2 => '女'];
+    static $confirm_status = [1 => '待核销', 2 => '核验通过', 3 => '核验失败'];
 
     public function getStatusTextAttr($value, $data)
     {
         return self::$status[$data['status']];
     }
 
+    public function getConfirmStatusTextAttr($value, $data)
+    {
+        return self::$confirm_status[$data['confirm_status']];
+    }
+
     public function getGenderTextAttr($value, $data)
     {
         return self::$gender[$data['gender']];