12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244 |
- <?php
- namespace app\sys\controller;
- use app\event\Msg;
- use app\logics\EmployeeLogic;
- use app\logics\GrantLogic;
- use app\logics\OrgLogic;
- use app\model\AgentUser;
- use app\model\Company;
- use app\model\Customer;
- use app\model\CustomerClue;
- use app\model\CustomerVisitLog;
- use app\model\DesignerReserve;
- use app\model\EmployeeCard;
- use app\model\MaterialCase;
- use app\model\User;
- use think\facade\View;
- use app\model\Employee as EmployeeModel;
- use app\model\EmployeeWorkWx;
- use app\model\Miniprogram;
- use wx\Oplatform;
- use wx\work\Work;
- use app\model\Org;
- use app\model\UserSignLog;
- use think\exception\HttpException;
- use app\model\EmployeeMsg;
- use app\model\UserCollect;
- use app\model\Credits;
- use app\model\CreditsLog;
- use app\model\Designer;
- use think\facade\Db;
- use think\facade\Request;
- use app\model\Talkskill;
- use app\model\TalkskillComment;
- use app\model\Building;
- use app\model\ShortUrl;
- use app\model\Setting;
- use app\model\OperateLog;
- use app\model\Wechat;
- use wx\miniprogram\Qrcode;
- use app\model\CustomerInvalidLog;
- use toolkits\Aec;
- use app\model\FishData;
- class Employee
- {
- /**
- * 面板
- */
- public function index()
- {
- return View::fetch();
- }
- /**
- * 员工邀请
- */
- public function invite()
- {
- $id = request()->employee['root_id'];
- //不同开放平台小程序判断
- $mini = appletConfiguration();
- //薛鹊开放平台web应用 先不推,所以先使用旧的 这1行以后要注释
- // if ($mini['name']=='装修宝mini') {
- if (false) {
- $employee_qr = Setting::where([['root_id','=',$id],['state','=',1],['name','=','employeeQrcode']])->findOrEmpty();
- $manager_qr = Setting::where([['root_id','=',$id],['state','=',1],['name','=','managerQrcode']])->findOrEmpty();
- $employee_qr = $employee_qr->isEmpty() ? $this->createQrcode('employee') : $employee_qr->content;
- $manager_qr = $manager_qr->isEmpty() ? $this->createQrcode('manager') : $manager_qr->content;
- if($employee_qr===false || $manager_qr===false) return View::display('<script>alert("暂未配置小程序");</script>');
- $employee_qr = 'https://' . config('app.ali_oss_bindurl') . '/' . $employee_qr;
- $manager_qr = 'https://' . config('app.ali_oss_bindurl') . '/' . $manager_qr;
- }else{
- $miniprogram = Miniprogram::where('root_id', $id)->findOrEmpty();
- if ($miniprogram->isEmpty()) {
- return View::display('<script>alert("暂未配置小程序");</script>');
- }
- $employee_qr = $miniprogram->employee_qr;
- $manager_qr = $miniprogram->manager_qr;
- }
- View::assign('managerQr', $manager_qr);
- View::assign('employeeQr', $employee_qr);
- return View::fetch();
- }
- /**
- * 生成员工店面邀请码
- */
- private function createQrcode($type)
- {
- $id = request()->employee['root_id'];
- $mini = appletConfiguration();
- $info = Wechat::where('appid',$mini['mini']['appid'])->find();
- // 邀请二维码生成
- $miniQr = new Qrcode();
- // 1)管理员二维码
- $qr = $miniQr->getUnlimited($info->accesstoken, [
- 'scene' => $type.'=' . $id,
- 'page' => 'mycustomer/pages/invite/invite',
- 'width' => '280px',
- 'check_path' => false
- ]);
- $rs = json_decode($qr, true);
- if (!is_null($rs)) {
- trace($rs, 'error');
- return false;
- }
- $managerQr = 'invite' . DIRECTORY_SEPARATOR . uniqid() . '.jpeg';
- ossContentUpload($managerQr, $qr);
- Setting::insertGetId([
- 'root_id'=>$id,
- 'state'=>1,
- 'name'=>$type.'Qrcode',
- 'content'=>$managerQr
- ]);
- return $managerQr;
- }
- public function list()
- {
- $request = request();
- $param = $request->param();
- $orgid = $request->get('orgid', $request->employee['root_id']);
- $condition = [];
- if (isset($param['verified']) && $param['verified'] == 0) {
- $condition[] = ['state', '=', '待审核'];
- $state = '待审核';
- } else {
- $state = '在职';
- $condition[] = ['state', '=', '在职'];
- }
- $keyword = null;
- if (!empty($param['keyword'])) {
- $keyword = trim($param['keyword'], ' ');
- $condition[] = ['name', 'like', '%' . $keyword . '%'];
- }
- if (isset($param['disable']) && $param['disable'] !== '') {
- $condition[] = ['disable', '=', $param['disable']];
- }
- // $list = EmployeeLogic::employeelist($orgid, $condition, $param['page'], $param['limit']);
- $org = Org::find($orgid);
- $orgIds = Org::where([['path', 'like', $org->path . '%']])->column('id');
- $condition[] = ['org_id', 'in', $orgIds];
- $condition[] = ['uid', '<>', 0];
- $empObjList = EmployeeModel::where($condition)->with(['org', 'grant', 'user'])->order('org_id asc, is_manager desc')->page($param['page'], $param['limit'])->select();
- $list = $empObjList->visible([
- 'id','user.headimgurl', 'name','org.info','disable', 'is_manager', 'last_login_time', 'state', 'empcrm_disable', 'community_disable', 'clue_disable'
- // ,'empcrm_disable', 'community_disable', 'clue_disable', 'weworksingle_uid', 'grant.name'
- ])->toArray();
- foreach ($list as $k => $v) {
- $list[$k]['user']['headimgurl'] = $v['user'] ?$v['user']['headimgurl']: 'https://thirdwx.qlogo.cn/mmopen/vi_32/4cjgCtJ67wtIU56FIgcwQkcYIjvwBEEichSbRVIMqo9FEuHXwTibYkGnJ0VqQW2esdLJwXo4Bad4Gp2czGPVZWCw/132';
- }
- $count = EmployeeModel::where($condition)->count();
- return json(['code' => 0, 'data' => $list, 'count' => $count]);
- }
- public function grant()
- {
- $employeeid = input('employeeid');
- View::assign('employeeid', $employeeid);
- $grantlist = GrantLogic::grantselectorlist();
- View::assign('grantlist', $grantlist);
- return View::fetch();
- }
- public function grantlink()
- {
- $param = input();
- $employeeid = $param['employeeid'];
- $grantid = $param['grantid'];
- if (EmployeeLogic::linkgrant($employeeid, $grantid)) {
- return ['code' => 0, 'msg' => '权限关联成功'];
- } else {
- return ['code' => 1, 'msg' => '权限关联失败'];
- }
- }
- public function delete()
- {
- $employee_id = input('empid');
- if (EmployeeLogic::delete($employee_id)) {
- return json(['code' => 0, 'msg' => '删除成功']);
- } else {
- return json(['code' => 1, 'msg' => '删除失败']);
- }
- }
- public function details()
- {
- $employeeid = input('employeeid');
- View::assign('employeeid', $employeeid);
- $data = EmployeeModel::where('id', $employeeid)->with(['org', 'grant', 'user'])->find();
- $data['phone'] = substr_replace($data['phone'], '******', 3, 6);
- View::assign('data', $data);
- $employee_card = EmployeeCard::where('employee_id', '=', $employeeid)->find();
- View::assign('employee_card', $employee_card);
- return View::fetch();
- }
- /**
- * 更新员工手机号
- */
- public function set_phone()
- {
- $param = Request::only(['employee_id', 'phone']);
- if (!preg_match("/^1[3456789]\d{9}$/", $param['phone'])) {
- return ['code' => 1, 'msg' => '手机号码格式不正确'];
- }
- $find = EmployeeModel::where(['id' => $param['employee_id'], 'root_id' => request()->employee->root_id])->find();
- if (empty($find)) {
- return ['code' => 1, 'msg' => '未查询到员工信息'];
- }
- $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
- $phone = $aec->encrypt($param['phone']);
- $empCount = EmployeeModel::whereOr([
- [['phone', '=', $phone], ['root_id', '=', request()->employee->root_id], ['uid', '<>', 0], ['state', 'in', ['在职']]],
- [['phone', '=', $phone], ['root_id', '=', request()->employee->root_id], ['grant_id', '>', 0]]
- ])->count();
- if ($empCount > 0) {
- return json(['code' => 1, 'msg' => '手机号已存在']);
- }
- $result = $find->save(['phone' => $param['phone']]);
- if ($result) {
- return ['code' => 0, 'msg' => '操作成功', 'data' => substr_replace($param['phone'], '******', 3, 6)];
- } else {
- return ['code' => 1, 'msg' => '操作失败'];
- }
- }
- /**
- * 保存形象照和微信
- */
- public function save_card()
- {
- $employee_id = input('employee_id', '', 'intval');
- $param = Request::only(['wx', 'image_photo', 'position']);
- $find = EmployeeModel::where('id', '=', $employee_id)->find();
- $result = $find->save($param);
- if (!empty($param['image_photo'])) {
- Designer::where('employee_id', '=', $employee_id)->save(['headimgurl' => $param['image_photo']]);
- }
- if ($result) {
- return ['code' => 0, 'msg' => '操作成功'];
- } else {
- return ['code' => 1, 'msg' => '操作失败'];
- }
- }
- public function hr()
- {
- /** 部门跳转 */
- $employeeid = input('employeeid');
- View::assign('employeeid', $employeeid);
- $data = EmployeeModel::where(['id' => $employeeid, 'root_id' => request()->employee->root_id])->with(['org'])->find();
- if (empty($data)) throw new HttpException(404, '数据不存在');
- View::assign('data', $data);
- View::assign('currentEmpOrg', $data->org);
- $org = Org::where([['path', 'like', request()->employee->root_id . '-%']])->field('id,name,level,org_type')->order('path')->select();
- View::assign('depart', $org);
- /** 离职交接 */
- // 同部门人员查找
- $orgEmployee = EmployeeModel::field('id,name')->where([['org_id', '=', $data->org_id], ['state', '=', '在职'], ['id', '<>', $employeeid], ['root_id', '=', request()->employee->root_id], ['uid', '<>', 0]])->select();
- View::assign('employeelist', $orgEmployee);
- // 该部门以上部门获取
- $orgPath = Org::where('id', $data->org_id)->value('path');
- $prevOrg = Org::field('id,name')->where([['id', 'in', explode('-', $orgPath)]])->select();
- View::assign('prevOrg', $prevOrg);
- return View::fetch();
- }
- /**
- * 2022-10-28 判断是否存在重复客户
- * $id 要转移/离职 的业务员
- * $eid 接受的业务员
- * 该员工名下客户“客户名称”为重复客户,是否继续交接不重复客户(3个)
- */
- private function checkRepeat($id,$eid){
- //判断客户重复
- $phone = Customer::where('employee_id',$eid)->column('phone,phone1,phone2');
- $phones = [];
- foreach ($phone as $v) {
- $phones = array_merge($phones,$v);
- }
- $phones = array_filter($phones);
- $cid = Customer::where('employee_id',$id)->column('id,name,phone,phone1,phone2');
- $repeat = $no_repeat = [];
- foreach ($cid as $v2) {
- $l_phone = array_filter([$v2['phone'],$v2['phone1'],$v2['phone2']]);
- array_intersect($phones,$l_phone) ? $repeat[] = $v2['name'] : $no_repeat[] = $v2['id'];
- }
- $data['repeat_count'] = count($repeat);
- $data['repeat'] = $repeat ? implode(',',$repeat) : '';
- $data['no_repeat'] = count($no_repeat);
- return json(['code' => 0, 'data'=>$data]);
- }
- public function apiChangeDepartment()
- {
-
- $request = request();
- $params = $request->param();
- if (!isset($params['empid']) || !isset($params['orgid'])) return json(['code' => 1, 'msg' => '异常请求']);
- if ($params['way'] == 2) {
- if (empty($params['recipient'])) {
- return json(['code' => 1, 'msg' => '请选择部门接收人']);
- }
- if (empty($params['assign_emp'])) {
- return json(['code' => 1, 'msg' => '请选择指派客户接收人']);
- }
- }
- //检测是否重复
- if(!empty($params['repeat']) && !empty($params['recipient'])) return $this->checkRepeat($params['empid'],$params['recipient']);
- $newdata = [];
- $newdata['org_id'] = $params['orgid'];
- if (isset($params['therole'])) {
- $newdata['role'] = $params['therole'];
- }
- $newdata['is_manager'] = isset($params['is_manager']) && $params['is_manager'] == 1 ? 1 : 0;
- $employee = EmployeeModel::where([['id', '=', $params['empid']], ['root_id', '=', $request->employee->root_id]])->find();
- if (empty($employee)) return json(['code' => 1, 'msg' => '数据不存在']);
- // 部门跨属性部门进行转移
- // $orgTypes = Org::where([['id', 'in', [$employee->org_id, $newdata['org_id']]]])->group('org_type')->column('org_type');
- // if (count($orgTypes) > 1 && in_array(2, $orgTypes)) return json(['code' => 1, 'msg' => '只能调整到相同属性的部门']);
- Db::startTrans();
- try {
- //更新是否管理层
- $employee->save(['is_manager'=>$newdata['is_manager']]);
- // 客户交接方式
- if ($params['way'] == 1 && $newdata['org_id'] != $employee->org_id) {
- // 更新业务员下级推广员关联的部门
- AgentUser::where(['root_id' => $request->employee->root_id, 'agent_employee_id' => $employee->id])->update(['org_id' => $newdata['org_id']]);
- // 更新客户所属部门
- Customer::where(['employee_id' => $employee->id])->update(['org_id' => $newdata['org_id']]);
- // 更新属于这个员工的跟踪记录
- CustomerVisitLog::where('employee_id', '=', $employee->id)->update(['org_id' => $newdata['org_id'],'customer_org_id'=>$newdata['org_id']]);
- //更新属于这个员工的线索量(带走)
- CustomerClue::where('employee_id', '=', $employee->id)->update(['org_id' => $newdata['org_id']]);
- $employee->save($newdata);
- //更新飞鱼线索
- FishData::where(['employee_id' => $employee->id])->update(['org_id' => $newdata['org_id']]);
- } elseif ($params['way'] == 2) {
- $cids = Customer::where(['employee_id' => $employee->id])->column('id,phone,phone1,phone2');
- $orgids = orgSubIds($request->employee->root_id);
- $assign_list = Customer::where([['assigned_personnel', 'find in set', $employee->id], ['org_id', 'in', $orgids]])->select()->toArray();
- $designer_have = Customer::where([['designer_id', '=', $employee->id], ['org_id', 'in', $orgids]])->count();
- // 留客户在原部门中
- if (empty($params['recipient']) && !empty($cids)) {
- return json(['code' => 1, 'msg' => '请选择部门接收人']);
- }
- if (!empty($params['recipient'])) {
- $recipient = EmployeeModel::where(['id' => $params['recipient'], 'org_id' => $employee->org_id])->find();
- if (empty($recipient) && !empty($cids)) return json(['code' => 1, 'msg' => '请选择部门接收人']);
- }
- if (empty($params['assign_emp']) && (!empty($assign_list) || !empty($designer_have))) {
- return json(['code' => 1, 'msg' => '请选择指派客户接收人']);
- }
- if (!empty($params['assign_emp'])) {
- $assign = EmployeeModel::where(['id' => $params['assign_emp'], 'org_id' => $employee->org_id])->find();
- if (empty($assign) && (!empty($assign_list) || !empty($designer_have))) return json(['code' => 1, 'msg' => '请选择指派客户接收人']);
- }
- // 更新业务员的经纪人为新交接员工
- AgentUser::where(['root_id' => $request->employee->root_id, 'agent_employee_id' => $employee->id])->update(['agent_employee_id' => $recipient->id]);
- //判断客户重复
- $phone = Customer::where('employee_id',$recipient->id)->column('phone,phone1,phone2');
- $phones = [];
- foreach ($phone as $v) {
- $phones = array_merge($phones,$v);
- }
- $phones = array_filter($phones);
- $repeat = $no_repeat = [];
- foreach ($cids as $v2) {
- $l_phone = array_filter([$v2['phone'],$v2['phone1'],$v2['phone2']]);
- array_intersect($phones,$l_phone) ? $repeat[] = $v2['id'] : $no_repeat[] = $v2['id'];
- }
- //不重复的可以迁移
- if ($no_repeat) {
- Customer::where([['id','in',$no_repeat]])->update(['employee_id' => $recipient->id,'employee_time' => date('Y-m-d H:i:s', time())]);
- //更新属于这个员工的线索量(带走)
- CustomerClue::where('employee_id', '=', $employee->id)->update(['org_id' => $employee->org_id]);
- //交接跟进记录中的customer_employee_id为新员工的id
- CustomerVisitLog::where([['customer_id','in',$no_repeat]])->update(['customer_employee_id'=>$recipient->id]);
- //处理无效的客户的员工id为新员工的id
- CustomerInvalidLog::where([['employee_id','=',$employee->id],['root_id','=',$employee->root_id]])->update(['employee_id'=>$recipient->id]);
- }
- // 指派的客户处理
- foreach ($assign_list as $k => $v) {
- $assign_personal = explode(',', $v['assigned_personnel']);
- $assign_personal = array_diff($assign_personal, [$employee->id]);
- $assign_personal[] = $params['assign_emp'];
- $assign_personal = array_unique($assign_personal);
- Customer::where('id', $v['id'])->save(['assigned_personnel'=> implode(',', $assign_personal)]);
- }
- // 设计师变更
- Customer::where([['designer_id', '=', $employee->id], ['org_id', 'in', $orgids]])->save(['designer_id'=> $params['assign_emp']]);
- //如果没有重复才能变更部门
- $res = true;
- if(empty($repeat)){
- $res = false;
- $employee->save($newdata);
- }
- // 更新交接客户
- // Customer::where(['employee_id' => $employee->id])->update(['org_id' => $recipient->org_id, 'employee_id' => $recipient->id, 'employee_time' => date('Y-m-d H:i:s', time())]);
- //更新飞鱼线索
- $targetName = EmployeeModel::where(['id' => $recipient->id])->value('name');
- FishData::where(['employee_id' => $employee->id])->update(['org_id' => $recipient->org_id,'employee_id' => $recipient->id, 'clue_owner_name' => $targetName]);
- }
-
- Db::commit();
- } catch (\Exception $e) {
- trace($e->getMessage(), 'error');
- // 回滚事务
- Db::rollback();
- return json(['code' => 1, 'msg' => $e->getMessage()]);
- }
- if($params['way'] == 2 && $res==true) {
- return json(['code' => 0, 'msg' => '已交接' . count($no_repeat) . '个客户,' . count($assign_list) . '个被指派客户,剩余' . count($repeat) . '个客户。请选择其他人员交接']);
- }
- if ($request->employee->id == $params['empid']) session('employee', $employee);
- event(new Msg($params['empid'], '您的部门岗位发生变动,请知晓!', 'apiChangeDepartment'));
- return json(['code' => 0, 'msg' => '部门调整成功']);
- }
- public function apiQuitHandling()
- {
- $request = request();
- $params = $request->param();
- if (!isset($params['empid'])) return false;
- if (!isset($params['target_employee_id']) || $params['target_employee_id'] == 0) return json(['code' => 1, 'msg' => '必须选择交接人']);
- //检测重复客户
- if(!empty($params['repeat']) && !empty($params['target_employee_id'])) return $this->checkRepeat($params['empid'],$params['target_employee_id']);
- // 检测接收人和离职人是否再同一企业
- $check = EmployeeModel::where([['id', 'in', [$params['target_employee_id'], $params['empid']]], ['root_id', '=', $request->employee->root_id], ['state', '=', '在职']])->count();
- if ($check != 2) return json(['code' => 1, 'msg' => '交接失败']);
- $info = EmployeeModel::where('id', $params['empid'])->value('state');
- if($info=='离职') return json(['code' => 1, 'msg' => '人员已离职']);
- Db::startTrans();
- try {
- //
- //$targetArr = EmployeeModel::find($params['target_employee_id'])->toArray();
- //handle customers
- //接收人 和 接受人的客户
- $targetOrg = EmployeeModel::where(['id' => $params['target_employee_id']])->value('org_id');
- $phone = Customer::where('employee_id',$params['target_employee_id'])->column('phone,phone1,phone2');
- $phones = [];
- foreach ($phone as $v) {
- $phones = array_merge($phones,$v);
- }
- $phones = array_filter($phones);
- //离职人员的客户
- $cids = Customer::where(['employee_id' => $params['empid']])->column('id,phone,phone1,phone2');
- $repeat = $no_repeat = [];
- foreach ($cids as $v2) {
- $l_phone = array_filter([$v2['phone'],$v2['phone1'],$v2['phone2']]);
- array_intersect($phones,$l_phone) ? $repeat[] = $v2['id'] : $no_repeat[] = $v2['id'];
- }
- //不重复的可以迁移
- if ($no_repeat) {
- $ori_info_arr = [
- //'uid' => $item->uid,
- 'employee_id' => $params['empid']
- ];
- Customer::where([['id','in',$no_repeat]])->update([
- 'employee_id' => $params['target_employee_id'],
- 'org_id' => $targetOrg,
- //'uid' => (isset($targetArr['uid'])) ? $targetArr['uid'] : NULL,
- 'changed_ori_info' => json($ori_info_arr),
- 'employee_time' => date('Y-m-d H:i:s', time())
- ]);
- //交接线索
- }
- //交接跟进记录中的customer_employee_id为新员工的id
- CustomerVisitLog::where([['customer_id', 'not in', $repeat], ['customer_employee_id', '=', $params['empid']]])->update(['customer_employee_id'=> $params['target_employee_id'], 'customer_org_id'=> $targetOrg]);
- //如果没有重复才能变更部门
- if(empty($repeat)){
- if (!EmployeeModel::where('id', $params['empid'])->update(['state' => '离职', 'left_to_empid' => $params['target_employee_id'], 'is_manager' => 0, 'verified' => 0])) {
- return json(['code' => 1, 'msg' => '人员不存在,或离职状态未更改']);
- }
- //交接人的客户
- $old_data = Customer::where(['employee_id' => $params['empid']])->select();
- foreach ($old_data as $item) {
- $ori_info_arr = [
- //'uid' => $item->uid,
- 'employee_id' => $item->employee_id
- ];
- Customer::where(['id' => $item->id])->update([
- 'employee_id' => $params['target_employee_id'],
- 'org_id' => $targetOrg,
- //'uid' => (isset($targetArr['uid'])) ? $targetArr['uid'] : NULL,
- 'changed_ori_info' => json($ori_info_arr),
- 'employee_time' => date('Y-m-d H:i:s', time())
- ]);
- }
- //handle customer clue
- // 指派给设计师的客户交接
- $designer_data = Customer::where(['designer_id' => $params['empid']])->select();
- foreach ($designer_data as $item) {
- Customer::where(['id' => $item->id])->update([
- 'designer_id' => $params['target_employee_id']
- ]);
- }
- // 共享指派客户交接
- $assigned_personnel_data = Customer::where([['assigned_personnel', 'find in set', $params['empid']]])->select();
- foreach ($assigned_personnel_data as $item) {
- $arr = explode(',',$item['assigned_personnel']);
- $arr = str_replace($params['empid'], $params['target_employee_id'], $arr);
- Customer::where(['id' => $item->id])->update([
- 'assigned_personnel' => implode(',',$arr)
- ]);
- }
- //删除签到记录
- $info = EmployeeModel::where('id', $params['empid'])->find()->toarray();
- $d_where[] = ['user_id', '=', $info['uid']];
- $d_where[] = ['root_id', '=', $info['root_id']];
- UserSignLog::where($d_where)->delete();
- // 1、我的话术清空(我提问的、我回答的、我共享的),不交接给交接人
- // 2、之前回答的问题,回答的记录不清除,回答人的名称改为“匿名用
- // 3、我的收藏清空
- $d_where2[] = ['user_id', '=', $info['uid']];
- UserCollect::where($d_where2)->delete();
- // 4、系统消息清空
- // $d_where1[] = ['type','=','system_msg_'.$info['root_id']];
- $d_where1[] = ['employee_id', '=', $params['empid']];
- EmployeeMsg::where($d_where1)->delete();
- //5贡献值积分清空
- $d_where3[] = ['root_id', '=', $info['root_id']];
- $d_where3[] = ['employee_id', '=', $params['empid']];
- Credits::where($d_where3)->delete();
- CreditsLog::where($d_where3)->delete();
- // 设计师离职,关联装修案例清空
- $employee = EmployeeModel::where('id', $params['empid'])->find();
- $org_type = Org::where('id', $employee['org_id'])->value('org_type');
- if ($org_type == 2) {
- MaterialCase::where([['root_id', '=', $employee['root_id']], ['designer_id', '=', $params['empid']]])->save(['designer_id' => 0]);
- }
- //楼盘离职交接
- $building = Building::where('employee_id', $params['empid'])->column('id');
- Building::where([['id', 'in', $building]])->update(['employee_id' => $params['target_employee_id'], 'handover_employee_id' => $params['empid']]);
- //交接拓客案例
- $matcase_list = MaterialCase::where(['employee_id' => $params['empid'], 'root_id' => $request->employee->root_id])->column('id');
- MaterialCase::where([['id', 'in', $matcase_list]])->update(array('employee_id' => $params['target_employee_id'], 'handover_empid' => $params['empid']));
- //交接话术(我共享的,我回答的,我提问的)
- $talk_list = Talkskill::where([['employee_id', '=', $params['empid']], ['root_id', '=', $request->employee->root_id], ['type', 'in', ['share', 'submit']]])->column('id');
- Talkskill::where([['id', 'in', $talk_list]])->update(array('employee_id' => $params['target_employee_id'], 'handover_empid' => $params['empid']));
- $lzemp = EmployeeModel::where([['id', 'in', [$params['empid'], $params['target_employee_id']]]])->column('uid', 'id');
- $answer_list = TalkskillComment::where([['uid', '=', $lzemp[$params['empid']]], ['root_id', '=', $request->employee->root_id]])->column('id');
- TalkskillComment::where([['id', 'in', $answer_list]])->update(array('uid' => $lzemp[$params['target_employee_id']]));
- dataStatistics($request->employee->root_id,'emp_count',1,'dec');//manage应用首页统计数据
- if(Org::where('id',$info['org_id'])->value('org_type') == 2) dataStatistics($request->employee->root_id,'designer_count',1,'dec');//manage应用首页统计数据
- //处理无效的客户的员工id为新员工的id
- CustomerInvalidLog::where([['employee_id','=',$params['empid']],['root_id','=',$request->employee->root_id]])->update(['employee_id'=>$params['target_employee_id']]);
- //更新飞鱼线索
- $targetName = EmployeeModel::where(['id' => $params['target_employee_id']])->value('name');
- FishData::where(['employee_id' => $params['empid']])->update(['org_id' => $targetOrg, 'employee_id' => $params['target_employee_id'],'clue_owner_name' => $targetName]);
- }
- Db::commit();
- } catch (\Exception $e) {
- trace($e->getMessage(), 'error');
- // 回滚事务
- Db::rollback();
- return json(['code' => 1, 'msg' => $e->getMessage()]);
- }
- if($repeat) return json(['code' => 1, 'msg' => '剩余重复客户请选择其他人员继续交接']);
- return json(['code' => 0, 'msg' => '处理离职完成']);
- }
- public function info()
- {
- $request = request();
- if (!$request->isAjax()) {
- $empid = $request->employee->id;
- $empobj = EmployeeModel::where('id', $empid)->with('user')->find();
- $workwx = EmployeeWorkWx::where('employee_id', $empid)->field('name')->find();
- $empobj['workwxname'] = !empty($workwx['name']) ? $workwx['name'] : '';
- View::assign('data', $empobj);
- // 微信登陆验证
- $state = rand(1000, 9999);
- session('login_state', $state);
- View::assign('state', $state);
- View::assign('domain', request()->domain());
- View::assign('appid', config('app.kfweb_appid'));
- //企业微信绑定参数
- View::assign('qywx_agentid', config('app.ays_agentid'));
- View::assign('qywx_state', $state);
- View::assign('qywx_appid', config('app.corpid'));
- return View::fetch();
- }
- }
- // /**
- // * 微信扫码换绑
- // */
- // public function wechat()
- // {
- // $request = request();
- // $code = $request->param('code');
- // View::assign('code', $code);
- // return View::display("<script>parent.bind('" . $code . "');</script>");
- // }
- // public function wxBind($code)
- // {
- // // 授权获取accesstoken
- // $tokendata = (new Oplatform())->getAccessToken(config('app.kfweb_appid'), config('app.kfweb_secret'), $code);
- // if (!$tokendata) {
- // trace('授权获取用户信息', 'error');
- // trace($tokendata, 'error');
- // return json(['code' => 1, 'msg' => '请求失败,请刷新页面后重试!']);
- // }
- // if (isset($tokendata['errcode'])) { // code已经被使用
- // if (in_array($tokendata['errcode'], [40029, 40163, 41008, 42003])) {
- // return json(['code' => 1, 'msg' => '请求失败,请刷新页面后重试!']);
- // } else {
- // trace('授权获取用户信息', 'error');
- // trace($tokendata, 'error');
- // return json(['code' => 1, 'msg' => $tokendata['errmsg']]);
- // }
- // }
- // // 拉取用户信息
- // $getUserInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $tokendata['access_token'] . '&openid=' . $tokendata['openid'] . '&lang=zh_CN';
- // $data = curl($getUserInfoUrl);
- // $data = json_decode($data, true);
- // if (isset($data['errcode']) || empty($data['openid'])) {
- // trace('拉取用户信息', 'error');
- // trace($data, 'error');
- // return json(['code' => 1, 'msg' => '请求失败']);
- // }
- // // 更新用户数据
- // $bindUser = User::where(['unionid' => $tokendata['unionid']])->findOrEmpty();
- // $updatedata = [
- // 'nickname' => $data['nickname'],
- // 'sex' => $data['sex'],
- // 'headimgurl' => $data['headimgurl'],
- // 'province' => $data['province'],
- // 'city' => $data['city'],
- // 'country' => $data['country'],
- // 'openid' => $data['openid'],
- // 'unionid' => $data['unionid'] ?? '',
- // ];
- // $bindUser->save($updatedata);
- // $empid = request()->employee->id;
- // $empobj = EmployeeModel::where('id', $empid)->find();
- // $user_id = $empobj->uid;
- // // 同一微信,换绑失败
- // if ($bindUser->id == $user_id) {
- // return json(['code' => 1, 'msg' => '换绑微信不能与已绑定微信相同!']);
- // }
- // // 换绑的微信已经绑定
- // $bind = EmployeeModel::where('uid', $bindUser->id)->count();
- // if ($bind) {
- // return json(['code' => 1, 'msg' => '该微信已绑定员工,换绑失败!']);
- // }
- // EmployeeModel::where('id', $empid)->save(['uid' => $bindUser->id]);
- // return json(['code' => 0, 'msg' => '绑定成功!']);
- // }
- public function changephone()
- {
- $request = request();
- $phone = $request->param('phone');
- $empid = $request->employee->id;
- if (EmployeeModel::where('id', $empid)->update(['phone' => $phone])) {
- return json(['code' => 0, 'msg' => '手机号更换成功']);
- } else {
- return json(['code' => 1, 'msg' => '换绑微信不能与已绑定微信相同']);
- }
- }
- /*
- * 企业微信扫码绑定
- */
- public function qywechat()
- {
- $request = request();
- $code = $request->param('code');
- $state = $request->param('state');
- if (session('login_state') == $state) {
- // 授权获取accesstoken
- $getUserId = (new Work(config('app.corpid'), config('app.ays_scorpsecret')))->getUserId($code);
- if (!$getUserId) {
- trace('扫码获取企业微信UserId失败', 'error');
- echo "<script>alert('请求失败,请刷新页面后重试!');parent.location.reload();</script>";
- exit;
- }
- $userInfo = (new Work(config('app.corpid'), config('app.ays_scorpsecret')))->getUserInfo($getUserId);
- if (!$userInfo) {
- trace('扫码获取企业微信信息失败', 'error');
- echo "<script>alert('请求失败,请刷新页面后重试!');parent.location.reload();</script>";
- exit;
- }
- $employee_id = $request->employee->id;
- $data = [
- 'employee_id' => $employee_id,
- 'userid' => $userInfo['userid'],
- 'name' => $userInfo['name'],
- 'mobile' => $userInfo['mobile'],
- 'department' => $userInfo['department'],
- 'order' => $userInfo['order'],
- 'position' => $userInfo['position'],
- 'gender' => $userInfo['gender'],
- 'email' => $userInfo['email'],
- 'is_leader_in_dept' => $userInfo['is_leader_in_dept'],
- 'direct_leader' => $userInfo['direct_leader'],
- 'avatar' => $userInfo['avatar'],
- 'thumb_avatar' => $userInfo['thumb_avatar'],
- 'telephone' => $userInfo['telephone'],
- 'alias' => $userInfo['alias'],
- 'extattr' => $userInfo['extattr'],
- 'status' => $userInfo['status'],
- 'qr_code' => $userInfo['qr_code'],
- 'external_profile' => isset($userInfo['external_profile']) ? $userInfo['external_profile'] : null,
- 'external_position' => isset($userInfo['external_position']) ? $userInfo['external_position'] : '',
- 'address' => isset($userInfo['address']) ? $userInfo['address'] : '',
- 'open_userid' => isset($userInfo['open_userid']) ? $userInfo['open_userid'] : '',
- 'main_department' => isset($userInfo['main_department']) ? $userInfo['main_department'] : 0,
- ];
- $workwx = EmployeeWorkWx::where('employee_id', $employee_id)->find();
- if (empty($workwx)) {
- $add = EmployeeWorkWx::create(['userid' => 'fengjixuchui']);
- } else {
- $workwx->save($data);
- }
- return redirect(url('index/index'));
- } else {
- return redirect(url('login/index'));
- }
- }
- public function setleader()
- {
- $request = request();
- $empid = $request->param('empid');
- $single_leader = 0;
- if ($single_leader) {
- //一个部门只能有一个领导
- $org_id = EmployeeModel::where('id', $empid)->value('org_id');
- $samelevelemps = EmployeeModel::where(['org_id' => $org_id, 'is_manager' => 1, 'role' => '领导'])->select();
- if (!empty($samelevelemps)) {
- foreach ($samelevelemps as $item) {
- EmployeeModel::where('id', $item['id'])->update(['is_manager' => 0]);
- }
- }
- }
- ///
- $leader = EmployeeModel::where(['id' => $empid, 'root_id' => $request->employee->root_id])->find();
- if (empty($leader)) return json(['code' => 1, 'msg' => '人员不存在']);
- if ($leader->save(['is_manager' => 1])) {
- if ($request->employee->id == $empid) {
- session('employee', $leader);
- }
- $orgName = Org::where(['id' => $leader->org_id])->value('name');
- event(new Msg($empid, '您被' . $request->employee->name . '添加为' . $orgName . '负责人身份,请知晓!', 'setleader'));
- return json(['code' => 0, 'msg' => '设置领导成功']);
- } else {
- return json(['code' => 1, 'msg' => '设置领导失败']);
- }
- }
- public function removeleader()
- {
- $request = request();
- $empid = $request->param('empid');
- ///
- if (EmployeeModel::where('id', $empid)->update(['is_manager' => 0, 'role' => '员工'])) {
- if ($request->employee->id == $empid) {
- $employee = EmployeeModel::where('id', $empid)->find();
- session('employee', $employee);
- }
- event(new Msg($empid, '您的负责人身份被' . $request->employee->name . '移除了,请知晓!', 'removeleader'));
- return json(['code' => 0, 'msg' => '取消领导成功']);
- } else {
- return json(['code' => 1, 'msg' => '取消领导失败']);
- }
- }
- public function verifypass()
- {
- $request = request();
- $empid = $request->param('empid');
- // 手机端操作,pc端未刷新的情况
- $thisApplyer = EmployeeModel::find($empid);
- if ($thisApplyer->verified == 1) {
- return json(['code' => 1, 'msg' => '已经处理,请刷新页面']);
- }
- //
- $where[] = ['root_id', '=', $request->employee->root_id];
- $where[] = ['id', '=', $empid];
- if (EmployeeModel::where($where)->update(['state' => '在职', 'left_to_empid' => NULL, 'verified' => 1])) {
- $companyName = Company::where(['root_id' => $request->employee->root_id])->value('company_name');
- event(new Msg($empid, '您的申请已经通过,欢迎来到' . $companyName . '大家庭', 'verifypass'));
- //审核通过短信通知
- $clientType = Miniprogram::where('root_id', $request->employee->root_id)->value('notify');
- $urldata = [
- 'content' => json_encode([
- 'client_type' => $clientType,
- 'path' => "/pages/index/index",
- 'query' => "ctp=" . $clientType,
- 'employee_id' => $empid
- ]),
- 'type' => 'join_company'
- ];
- $shortUrl = new ShortUrl();
- $shortUrl->save($urldata);
- // 将ID进行
- $query = dec52($shortUrl->id);
- $shortUrl->uri = $query;
- $shortUrl->save();
- sendSms($thisApplyer['phone'], $thisApplyer['name'] . "您已成功加入" . $companyName . ",请点击链接访问数字化系统https://wzh.nczyzs.com/open/" . $query);
- dataStatistics(request()->employee->root_id,'emp_count',1,'inc');//manage应用首页统计数据
- if(Org::where('id',$thisApplyer->org_id)->value('org_type') == 2) dataStatistics(request()->employee->root_id,'designer_count',1,'inc');//设计师数量
- return json(['code' => 0, 'msg' => '通过申请成功']);
- } else {
- return json(['code' => 1, 'msg' => '通过申请失败']);
- }
- }
- public function verifypass_all()
- {
- $request = request();
- $companyName = Company::where(['root_id' => $request->employee->root_id])->value('company_name');
- $where[] = ['root_id', '=', $request->employee->root_id];
- $where[] = ['state', '=', '待审核'];
- $where[] = ['verified', '=', 0];
- $where[] = ['uid', '>', 0];
-
- $all = EmployeeModel::where($where)->field('id,name,phone,org_id')->select();
- if (empty($all)) return json(['code' => 1, 'msg' => '没有待审核人员']);
- $i = 0;
- //企业notify
- $clientType = Miniprogram::where('root_id', $request->employee->root_id)->value('notify');
- $orgs = [];
- foreach ($all as $k => $v) {
- if (EmployeeModel::where([['id', '=', $v['id']]])->update(['state' => '在职', 'left_to_empid' => NULL, 'verified' => 1])) {
- event(new Msg($v['id'], '您的申请已经通过,欢迎来到' . $companyName . '大家庭', 'verifypass'));
- //审核通过短信通知
- $urldata = [
- 'content' => json_encode([
- 'client_type' => $clientType,
- 'path' => "/pages/index/index",
- 'query' => "ctp=" . $clientType,
- 'employee_id' => $v['id']
- ]),
- 'type' => 'join_company'
- ];
- $shortUrl = new ShortUrl();
- $shortUrl->save($urldata);
- // 将ID进行
- $query = dec52($shortUrl->id);
- $shortUrl->uri = $query;
- $shortUrl->save();
- sendSms($v['phone'], $v['name'] . "您已成功加入" . $companyName . ",请点击链接访问数字化系统https://wzh.nczyzs.com/open/" . $query);
- $i+=1;
- $orgs[] = $v['org_id'];
- }
- }
- if ($orgs) {
- dataStatistics(request()->employee->root_id,'emp_count',$i,'inc');//manage应用首页统计数据
- $org = Org::where([['id','in',$orgs],['org_type','=',1]])->column('id');
- $count = count(array_diff($orgs,$org));//去掉销售
- dataStatistics(request()->employee->root_id,'designer_count',$count,'inc');//manage 统计设计师数量
- }
- return json(['code' => 0, 'msg' => '一键审核完成']);
- }
- public function verifypass_count()
- {
- $request = request();
- $where[] = ['root_id', '=', $request->employee->root_id];
- $where[] = ['state', '=', '待审核'];
- $where[] = ['verified', '=', 0];
- $count = EmployeeModel::where($where)->count();
- return $count;
- }
- public function verifyreject()
- {
- $request = request();
- $empid = $request->param('empid');
- // 手机端操作,pc端未刷新的情况
- $thisApplyer = EmployeeModel::find($empid);
- //
- if ($thisApplyer->verified == 1) {
- return json(['code' => 1, 'msg' => '已经处理,请刷新页面']);
- }
- if ($thisApplyer->state == '驳回') {
- return json(['code' => 1, 'msg' => '已经处理,请刷新页面']);
- }
- //
- $where[] = ['root_id', '=', $request->employee->root_id];
- $where[] = ['id', '=', $empid];
- ///
- if (EmployeeModel::where($where)->update(['state' => '驳回', 'verified' => 0])) {
- return json(['code' => 0, 'msg' => '驳回申请成功']);
- } else {
- return json(['code' => 1, 'msg' => '驳回申请失败']);
- }
- }
- /**
- * 部门人员获取(仅包含该部门下人员)
- */
- public function orgEmployee($id)
- {
- // 检测该id是否是该组织结构下的
- $employee = EmployeeModel::field('id,name,is_manager')->where([['uid', '>', 0], ['org_id', '=', $id], ['root_id', '=', request()->employee->root_id], ['state', '=', '在职']])->select();
- return json(['code' => 0, 'data' => $employee]);
- }
- /**
- * 设计师列表
- */
- public function designer()
- {
- // Designer
- $token = request()->employee;
- $param = Request::only(['page' => 1, 'limit' => 10, 'keyword' => '', 'org'=>'', 'start_time'=> '']);
- // $param = $request->param();
- $w[] = ['path', 'like', $token['root_id'] . '-%'];
- $w[] = ['org_type', '=', 2];
- $orgs = Org::where($w)->column('id');
- if ($param['keyword']) {
- $w1[] = ['name', 'like', '%' . trim($param['keyword']) . '%'];
- $w1[] = ['root_id', '=', $token['root_id']];
- $ids1 = Designer::where($w1)->column('employee_id');
- $w2[] = ['root_id', '=', $token['root_id']];
- $ids2 = Designer::where($w2)->where("name is null AND name = ''")->column('employee_id');
- $w2[] = ['name', 'like', '%' . trim($param['keyword']) . '%'];
- $w2[] = ['id', 'not in', $ids2];
- $ids3 = EmployeeModel::where($w2)->column('id');
- $w3[] = ['id', 'in', array_merge($ids1, $ids3)];
- }
- if ($param['org']) {
- $w3[] = ['org_id', '=', $param['org']];
- }
- if ($param['start_time']) {
- $date = explode(' - ', $param['start_time']);
- if (isset($date[0])) {
- $date[0] = $date[0] . ' 00:00:00';
- }
- if (isset($date[1])) {
- $date[1] = $date[1] . ' 23:59:59';
- }
- $w_date[] = ['vcr_updatetime', 'between', $date];
- $w_date[] = ['root_id', '=', $token['root_id']];
- $ids_date = Designer::where($w_date)->column('employee_id');
- $w3[] = ['id', 'in', $ids_date];
- }
- $w3[] = ['org_id', 'in', $orgs];
- $w3[] = ['root_id', '=', $token['root_id']];
- $w3[] = ['state', '=', '在职'];
- $root_id = $token['root_id'];
- $list = EmployeeModel::with(['designer' => function ($query) use ($root_id) {
- $query->where('root_id', $root_id)->visible(['headimgurl', 'employee_id', 'desc', 'good_at', 'position', 'work_years', 'addtime', 'vcr_updatetime', 'good_house', 'design_concept', 'vcr'])->bind(['desc', 'good_at', 'position', 'work_years', 'addtime', 'vcr_updatetime', 'good_house', 'design_concept', 'vcr', 'name', 'headimgurl']);
- }, 'org'=>function($query){
- $query->bind(['org_name'=>'name']);
- }])->where($w3)->field('name title,id,show,org_id')->page($param['page'], $param['limit'])->select()->toArray();
- $count = EmployeeModel::where($w3)->count();
- foreach ($list as $k => $v) {
- $list[$k]['name'] = $v['title'];
- $list[$k]['show'] = $v['show'] ? '不展示' : '展示';
- unset($list[$k]['designer']);
- // 设计师预约次数统计
- $list[$k]['designer_reserve'] = DesignerReserve::where('designer_id', '=', $v['id'])->count();
- }
- return json(['code' => 0, 'data' => $list, 'count' => $count]);
- }
- /**
- * 设计师列表
- */
- public function edit_show()
- {
- $param = Request::only(['id' => 0]);
- $token = request()->employee;
- $w[] = ['root_id', '=', $token['root_id']];
- $w[] = ['id', '=', $param['id']];
- $row = EmployeeModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) return json(['code' => 1, 'data' => '数据不存在', 'msg' => '数据不存在']);
- $show = $row->show ? 0 : 1;
- EmployeeModel::where($w)->update(['show' => $show]);
- return json(['code' => 0, 'data' => '操作成功', 'msg' => '操作成功']);
- }
- /**
- * 设计师编辑
- */
- public function edit_designer()
- {
- $param = Request::only(['id' => 0, 'position' => '', 'name' => '', 'good_at' => '', 'desc' => '', 'work_years' => 0, 'house_at' => '', 'design_concept' => '', 'vcr' => '', 'vcrurl' => '', 'headimgurl' => '', 'img' => '']);
- $param['headimgurl'] = $param['headimgurl'] ?: $param['img'];
- if (!$param['headimgurl']) return json(['code' => 1, 'data' => '请选择形象照', 'msg' => '请选择形象照']);
- $param['vcr'] = $param['vcr'] ?: $param['vcrurl'];
- //if(!$param['vcr']) return json(['code' => 1, 'data' =>'请选择vcr','msg'=>'请选择vcr']);
- if (!empty($param['vcr'])) {
- $arr = explode(',', $param['vcr']);
- $param['vcr'] = end($arr);
- }
- $token = request()->employee;
- $w[] = ['root_id', '=', $token['root_id']];
- $w[] = ['id', '=', $param['id']];
- $row = EmployeeModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) return json(['code' => 1, 'data' => '数据不存在', 'msg' => '数据不存在']);
- $w1[] = ['root_id', '=', $token['root_id']];
- $w1[] = ['employee_id', '=', $param['id']];
- $row = Designer::where($w1)->findOrEmpty();
- $save['root_id'] = $token['root_id'];
- $save['name'] = $param['name'];
- $save['good_at'] = $param['good_at'];
- $save['desc'] = $param['desc'];
- $save['work_years'] = $param['work_years'];
- $save['good_house'] = $param['house_at'];
- $save['design_concept'] = $param['design_concept'];
- $save['vcr'] = $param['vcr'];
- $save['position'] = $param['position'];
- $save['headimgurl'] = $param['headimgurl'];
- if ($row->isEmpty()) {
- if (!empty($save['vcr'])) {
- $save['vcr_updatetime'] = date('Y-m-d H:i:s');
- }
- $save['employee_id'] = $param['id'];
- Designer::insertGetId($save);
- } else {
- $old_vcr = $row->getData('vcr');
- if ($save['vcr'] != $old_vcr) {
- $save['vcr_updatetime'] = date('Y-m-d H:i:s');
- }
- $row->save($save);
- }
- EmployeeModel::where('id', $param['id'])->update(['image_photo' => $param['headimgurl']]);
- return json(['code' => 0, 'data' => '操作成功', 'msg' => '操作成功']);
- }
- /**
- * 设计师预约列表
- */
- public function designer_reserve()
- {
- if (!request()->isAjax()) {
- $id = input('id', '', 'intval');
- View::assign('id', $id);
- return View::fetch();
- }
- $param = request()->only(['page' => 1, 'limit' => 10, 'id']);
- $list = DesignerReserve::with(['employee', 'user'])->where([['root_id', '=', request()->employee->root_id], ['designer_id', '=', $param['id']]])->page($param['page'], $param['limit'])->select()->each(function ($item) {
- $org_ids = orgSubIds($item['root_id']);
- $customer = Customer::where([['uid', '=', $item['uid']], ['org_id', 'in', $org_ids]])->find();
- if ($customer) {
- $item['customer_state'] = Customer::changeState($customer['state']);
- } else {
- $item['customer_state'] = '未建档';
- }
- switch ($item['pipe_type']) {
- case 'materialCase':
- $item['from'] = MaterialCase::where('id', '=', $item['data_id'])->value('title');
- break;
- case 'designer':
- $item['from'] = '设计师预约';
- break;
- default:
- break;
- }
- });
- $count = DesignerReserve::where([['root_id', '=', request()->employee->root_id], ['designer_id', '=', $param['id']]])->count();
- return json(['code' => 0, 'data' => $list, 'count' => $count]);
- }
- /**
- * 小程序禁入开关
- */
- public function disable($id, $disable, $type)
- {
- $employee = EmployeeModel::where([
- ['root_id', '=', request()->employee['root_id']],
- ['id', '=', $id],
- ['uid', '<>', 0]
- ])->find();
- if (empty($employee)) return json(['code' => 1, 'msg' => '员工不存在']);
- switch ($type){
- case 1:
- if ($disable == 'true') {
- $employee->disable = 0;
- } else {
- $employee->disable = 1;
- }
- $disable_day_setting = Setting::where([['name', '=', 'disable_day'], ['root_id', '=', request()->employee['root_id']]])->findOrEmpty();
- if (!$disable_day_setting->isEmpty() && $disable_day_setting['content']) {
- $employee->last_login_time = date('Y-m-d H:i:s');
- }
- $employee->save();
- break;
- case 2:
- if ($disable == 'true') {
- $employee->empcrm_disable = 0;
- } else {
- $employee->empcrm_disable = 1;
- }
- $employee->save();
- break;
- case 3:
- if ($disable == 'true') {
- $employee->community_disable = 0;
- } else {
- $employee->community_disable = 1;
- }
- $employee->save();
- break;
- case 4:
- if ($disable == 'true') {
- $employee->clue_disable = 0;
- } else {
- $employee->clue_disable = 1;
- }
- $employee->save();
- break;
- default:
- break;
- }
- return json(['code' => 0, 'msg' => '操作成功']);
- }
- /**
- * 获取登陆剩余时间
- */
- public function getTime()
- {
- $id = request()->employee->id;
- $time = OperateLog::where([['employee_id','=', $id]])->order('id desc')->value('addtime');
- $session = 18000;//session保持时间5小时
- $res = strtotime($time)+$session;
- return json(['code' => 0, 'data' => date('Y/m/d H:i:s',$res)]);
- }
- }
|