123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778 |
- <?php
- declare(strict_types=1);
- namespace app\logics;
- use app\model\Customer as Model;
- use app\model\CustomerPortraitField;
- use app\model\CustomerVisitLog;
- use app\model\Org;
- use app\model\Pool;
- use app\model\Setting;
- use app\model\Employee;
- use app\model\Company;
- use app\model\CustomerSource;
- use app\model\Decostyle;
- class CustomerLogic
- {
- public static function list($condition = [], $page, $limit, $order)
- {
- $page = intval($page);
- $limit = intval($limit);
- $data = Model::with(['employee', 'org', 'designer','source'])->withCount(['visitLog' => function ($query) {
- $query->where(function($query){
- $query->whereOr([[CustomerVisitLog::changeState(['state', '=', '预约量房'])], [CustomerVisitLog::changeState(['state', '=', '预约到店'])], [CustomerVisitLog::changeState(['state', '=', '预约活动'])]]);
- });
- }])->withCount(['activityFrequency' => function ($query) {
- $query->where([CustomerVisitLog::changeState(['state', '=', '确认到场'])]);
- }])
- ->where($condition)
- ->page($page, $limit)->order($order)->select();
- $data = $data->visible(['id', 'employee_id', 'name', 'community_name', 'phone', 'level', 'state', 'square', 'revisit_time', 'addtime', 'last_contact_date', 'org_id', 'protected_to', 'is_resource', 'employee.name', 'org_name', 'designer.name', 'visit_log_count', 'activity_frequency_count','source_id','source.source', 'phone1', 'phone2','remark','crm_res_id','agents_id'])->toArray();
- foreach ($data as &$item) {
- $item['protected'] = false;
- if (isset($item['protected_to']) && time() < strtotime($item['protected_to'])) {
- $item['protected'] = true;
- }
- $item['square'] = floatval($item['square']);
- $item['phone'] = substr_replace($item['phone'], '******', 3, 6);
- $item['phone1'] = $item['phone1'] ? substr_replace($item['phone1'], '******', 3, 6) : '';
- $item['phone2'] = $item['phone2'] ? substr_replace($item['phone2'], '******', 3, 6) : '';
- //增加跟进次数
- $item['lognum'] = CustomerVisitLog::with('employee')->where('customer_id','=',$item['id'])->count();
- }
- return $data;
- }
- public static function poollist($condition = [], $page, $limit, $order)
- {
- $page = intval($page);
- $limit = intval($limit);
- $data = Model::field('id, name, community_name, phone, phone1, phone2, level, state, square, addtime, org_id, employee_id, is_resource, before_pool')
- ->where($condition)
- ->page($page, $limit)->order($order)->select()->toArray();
- foreach ($data as &$item) {
- $item['pool_name'] = Org::where('id', $item['org_id'])->column('name');
- if (!$item['employee_id']) {
- $item['phone'] = substr_replace($item['phone'], '******', 3, 6);
- $item['phone1'] = !empty($item['phone1'])?substr_replace($item['phone1'], '******', 3, 6):'';
- $item['phone2'] = !empty($item['phone2'])?substr_replace($item['phone2'], '******', 3, 6):'';
- }
- }
- return $data;
- }
- public static function resourcelist($condition = [], $page, $limit, $order)
- {
- $page = intval($page);
- $limit = intval($limit);
- $data = Model::field('id, name, community_name, phone, level, state, square, addtime,org_id,crm_res_id, employee_id, is_resource')
- ->where($condition)
- ->page($page, $limit)->order($order)->select()->toArray();
- foreach ($data as &$item) {
- $item['pool_name'] = Org::where('id', $item['org_id'])->column('name');
- if (!$item['employee_id'] && $item['is_resource'] == 1) {
- $item['phone'] = substr_replace($item['phone'], '******', 3, 6);
- }
- }
- return $data;
- }
- public static function count($condition = [])
- {
- return Model::where($condition)->count();
- }
- public static function info($id)
- {
- return Model::where('id', $id)->find();
- }
- //新数据处理
- public function new_data_save($cusdata, $extdata, $list)
- {
- foreach ($list as $key => $val) {
- foreach ($val['child'] as $k => $v) {
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'phone1','phone2','community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($v['keyname'], $save1)) {
- $list[$key]['child'][$k]['value'] = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- }
- if (in_array($v['keyname'], $save2)) {
- foreach ($v['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$v['keyname']] || $e['id'] == $cusdata[$v['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- $list[$key]['child'][$k]['select'][$r]['check'] = in_array($v['type'], [3,4]) ? 'true' : 'false'; //是否选中值,客服pc端报备渲染使用
- }
- }
- $list[$key]['child'][$k]['value'] = $selid;
- $list[$key]['child'][$k]['valname'] = $selname;
- }
- // 上面已经赋值的固定字段,下方扩展字段可能存值但是可能是旧值,所以得排除 save1,save2 的合集 排除来源
- $saved_field = ['name', 'phone', 'phone1','phone2','community_name', 'house_delivery_time', 'plan_deco_time', 'budget', 'level', 'house_type', 'deco_style'];
-
- $selname1 = '';
- foreach ($extdata as $p => $m) {
- if ($m['id'] == $v['id'] && !in_array($v['keyname'], $saved_field)) {
- if(!empty($v['keyname']) && $v['keyname'] == 'sign_time' && !empty($m['value'])) $m['value'] = date("Y/m/d H:i",strtotime($m['value']));
- $list[$key]['child'][$k]['value'] = $m['value'];
- if (in_array($v['type'], [3, 4]) && !empty($m['value'])) {
- $sp = explode(',', (string)$m['value']);
- foreach ($v['select'] as $w => $q) {
- if (in_array($q['id'], $sp)) {
- $selname1 .= $q['name'] . ',';
- $list[$key]['child'][$k]['select'][$w]['check'] = 'true'; //是否选中值,客服pc端报备渲染使用
- }
- }
- $list[$key]['child'][$k]['valname'] = trim($selname1, ',');
- }
- //图片类型
- if (in_array($v['type'], [6]) && !empty($m['value'])) {
- $img = explode(',', $m['value']);
- $img_arr = [];
- foreach ($img as $url) {
- $img_arr[] = [
- 'url' => $url,
- 'oss_url' => 'https://'.config('app.ali_oss_bindurl').'/'.$url
- ];
- }
- $list[$key]['child'][$k]['value'] = $img_arr;
- }
- }
- }
- if(!empty($v['keyname']) && $v['keyname'] == 'sign_time' && empty($list[$key]['child'][$k]['value'])) $list[$key]['child'][$k]['value'] = date('Y/m/d H:i',strtotime($cusdata['sign_time']));
- }
- }
- return $list;
- }
- public function get_old_ext(){
- $extAttr = [
- 'ext1' => '年龄',
- 'ext2' => '是否首次装修',
- 'ext3' => '消费水平',
- 'ext4' => '预计装修时间',
- 'ext5' => '客户爱好',
- 'ext6' => '是否添加微信',
- 'ext7' => '客户空闲时间段',
- 'ext8' => '家庭结构',
- 'ext9' => '家庭成员意见',
- 'ext10' => '请选择房屋户型',
- 'ext11' => '决策人',
- 'ext12' => '客户喜欢的色调',
- 'ext13' => '房屋结构',
- 'ext14' => '装修方式',
- 'ext15' => '客户其它需求',
- 'ext16' => '客户痛点',
- 'ext17' => '重视环保',
- 'ext18' => '重视设计',
- 'ext19' => '关注的工艺',
- 'ext20' => '关注房屋的空间',
- 'ext21' => '汽车价格',
- 'ext22' => '房屋价格',
- 'ext23' => '买小区的原因',
- 'ext24' => '周边配置',
- 'ext25' => '设计师服务',
- 'ext26' => '方案满意度',
- 'ext27' => '报价满意度',
- 'ext28' => '装修意向',
- 'ext29' => '是否到店',
- 'ext30' => '预计到店时间',
- 'ext31' => '是否交定',
- 'ext32' => '客户其他需求',
- 'ext33' => '当前所在区域',
- 'ext34' => '加微类型',
- 'ext35' => '建群情况',
- 'ext36' => '直播情况',
- 'ext37' => '直播人员',
- 'ext38' => '房屋用途',
- 'ext39' => '房屋位置',
- 'ext40' => '其他房屋信息',
- 'ext41' => '谈单时长',
- 'ext42' => '门牌单元号',
- 'ext43' => '业务直播人员',
- 'ext44' => '设计直播人员'
- ];
- return $extAttr;
- }
- //老数据转换
- public function old_data_save($cusdata, $list)
- {
- $extAttr = $this->get_old_ext();
- //$ext='{"ext1": "20-30岁", "ext2": "是", "ext3": "低", "ext4": ", "ext5": "", "ext6": "是", "ext7": "", "ext8": "三口之家", "ext9": "满意", "ext10": "3居室", "ext11": "父亲", "ext12": "红色调", "ext13": "商品房", "ext14": "套餐", "ext15": "", "ext16": "环保", "ext17": "", "ext18": "", "ext19": "", "ext20": "", "ext21": "", "ext22": "", "ext23": "", "ext24": "", "ext25": "", "ext26": "", "ext27": "", "ext28": "非常强烈", "ext29": "", "ext30": "", "ext31": "", "ext32": "", "ext33": "", "ext34": "", "ext35": "", "ext36": "", "ext37": "", "ext38": "", "ext39": "", "ext40": ""}';
- //$ext = get_object_vars($cusdata['ext']);
- $ext = json_decode($cusdata['ext'],true);
- $xin = [];
- foreach ($ext as $key => $val) {
- foreach ($extAttr as $k => $v) {
- if ($k == $key) {
- $a['name'] = $v;
- $a['value'] = $val;
- }
- }
- $xin[] = $a;
- }
- foreach ($list as $key => $val) {
- foreach ($val['child'] as $k => $v) {
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['age_range', 'level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($v['keyname'], $save1)) {
- $list[$key]['child'][$k]['value'] = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- }
- if (in_array($v['keyname'], $save2)) {
- foreach ($v['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$v['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- $list[$key]['child'][$k]['select'][$r]['check'] = in_array($v['type'], [3,4]) ? 'true' : 'false'; //是否选中值,客服pc端报备渲染使用
- }
- }
- $list[$key]['child'][$k]['value'] = $selid;
- $list[$key]['child'][$k]['valname'] = $selname;
- }
- foreach ($xin as $p => $m) {
- $selid = '';
- $selname = '';
- if ($m['name'] == $v['name']) {
- if (in_array($v['type'], [1, 2, 5])) {
- $list[$key]['child'][$k]['value'] = $m['value'];
- }
- if ($v['type'] == 3) {
- foreach ($v['select'] as $r => $e) {
- if ($e['name'] == $m['value']) {
- $selid = $e['id'];
- $selname = $e['name'];
- $list[$key]['child'][$k]['select'][$r]['check'] = 'true'; //是否选中值,客服pc端报备渲染使用
- }
- }
- $list[$key]['child'][$k]['value'] = $selid;
- $list[$key]['child'][$k]['valname'] = $selname;
- }
- if ($v['type'] == 4) {
- if (!empty($m['value'])) {
- $dv = explode(',', $m['value']);
- foreach ($v['select'] as $r => $e) {
- if (in_array($e['name'], $dv)) {
- $selid .= $e['id'] . ',';
- $selname .= $e['name'] . ',';
- $list[$key]['child'][$k]['select'][$r]['check'] = 'true'; //是否选中值,客服pc端报备渲染使用
- }
- }
- }
- $list[$key]['child'][$k]['value'] = trim($selid, ',');
- $list[$key]['child'][$k]['valname'] = $selname;
- }
- //图片类型
- if ($v['type'] == 6 && !empty($m['value'])) {
- $img = explode(',', $m['value']);
- $img_arr = [];
- foreach ($img as $url) {
- $img_arr[] = [
- 'url' => $url,
- 'oss_url' => 'https://'.config('app.ali_oss_bindurl').'/'.$url
- ];
- }
- $list[$key]['child'][$k]['value'] = $img_arr;
- }
- }
- }
- if(!empty($v['keyname']) && $v['keyname'] == 'sign_time' && empty($list[$key]['child'][$k]['value'])) $list[$key]['child'][$k]['value'] = date('Y/m/d H:i',strtotime($cusdata['sign_time']));
- }
- }
- return $list;
- }
- public function new_data_saves($cusdata, $extdata, $list)
- {
- foreach ($list as $key => $val) {
- $list[$key]['value'] = '';
- $list[$key]['valname'] = '';
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($val['keyname'], $save1)) {
- $list[$key]['value'] = !empty($cusdata[$val['keyname']]) ? $cusdata[$val['keyname']] : '';
- }
- if (in_array($val['keyname'], $save2)) {
- foreach ($val['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$val['keyname']] || $e['id'] == $cusdata[$val['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- }
- }
- $list[$key]['value'] = $selid;
- $list[$key]['valname'] = $selname;
- }
- // 上面已经赋值的固定字段,下方扩展字段可能存值但是可能是旧值,所以得排除 save1,save2 的合集 排除
- $saved_field = ['name', 'phone', 'phone1','phone2','community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget', 'level', 'house_type', 'deco_style'];
- $selname1 = '';
- foreach ($extdata as $p => $m) {
- if (isset($m['value']) && isset($m['keyname']) && isset($m['id']) && $m['id'] == $val['id'] && !in_array($m['keyname'], $saved_field)) {
- $list[$key]['value'] = $m['value'];
- if (in_array($val['type'], [3, 4]) && !empty($m['value'])) {
- $sp = explode(',', (string)$m['value']);
- foreach ($val['select'] as $w => $q) {
- if (in_array($q['id'], $sp)) {
- $selname1 .= $q['name'] . ',';
- }
- }
- $list[$key]['valname'] = trim($selname1, ',');
- }else{
- $list[$key]['valname'] = $m['value'];
- }
- //图片类型
- if (in_array($val['type'], [6]) && !empty($m['value'])) {
- $img = explode(',', $m['value']);
- $img_arr = [];
- foreach ($img as $url) {
- $img_arr[] = [
- 'url' => $url,
- 'oss_url' => 'https://'.config('app.ali_oss_bindurl').'/'.$url
- ];
- }
- $list[$key]['value'] = $img_arr;
- }
- }
- }
- }
- return $list;
- }
- //老数据转换
- public function old_data_saves($cusdata, $list)
- {
- $extAttr = $this->get_old_ext();
- //$ext='{"ext1": "20-30岁", "ext2": "是", "ext3": "低", "ext4": ", "ext5": "", "ext6": "是", "ext7": "", "ext8": "三口之家", "ext9": "满意", "ext10": "3居室", "ext11": "父亲", "ext12": "红色调", "ext13": "商品房", "ext14": "套餐", "ext15": "", "ext16": "环保", "ext17": "", "ext18": "", "ext19": "", "ext20": "", "ext21": "", "ext22": "", "ext23": "", "ext24": "", "ext25": "", "ext26": "", "ext27": "", "ext28": "非常强烈", "ext29": "", "ext30": "", "ext31": "", "ext32": "", "ext33": "", "ext34": "", "ext35": "", "ext36": "", "ext37": "", "ext38": "", "ext39": "", "ext40": ""}';
- //$ext = get_object_vars($cusdata['ext']);
- $ext = json_decode($cusdata['ext'],true);
- $xin = [];
- foreach ($ext as $key => $val) {
- foreach ($extAttr as $k => $v) {
- if ($k == $key) {
- $a['name'] = $v;
- $a['value'] = $val;
- }
- }
- $xin[] = $a;
- }
- foreach ($list as $key => $val) {
- $list[$key]['value'] = '';
- $list[$key]['valname'] = '';
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['age_range', 'level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($val['keyname'], $save1)) {
- $list[$key]['value'] = !empty($cusdata[$val['keyname']]) ? $cusdata[$val['keyname']] : '';
- }
- if (in_array($val['keyname'], $save2)) {
- foreach ($val['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$val['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- }
- }
- $list[$key]['value'] = $selid;
- $list[$key]['valname'] = $selname;
- }
- foreach ($xin as $p => $m) {
- $selid = '';
- $selname = '';
- if ($m['name'] == $val['name']) {
- if (in_array($val['type'], [1, 2, 5])) {
- $list[$key]['value'] = $m['value'];
- $list[$key]['valname'] = $m['value'];
- }
- if ($val['type'] == 3) {
- foreach ($val['select'] as $r => $e) {
- if ($e['name'] == $m['value']) {
- $selid = $e['id'];
- $selname = $e['name'];
- }
- }
- $list[$key]['value'] = $selid;
- $list[$key]['valname'] = $selname;
- }
- if ($val['type'] == 4) {
- if (!empty($m['value'])) {
- $dv = explode(',', $m['value']);
- foreach ($val['select'] as $r => $e) {
- if (in_array($e['name'], $dv)) {
- $selid .= $e['id'] . ',';
- $selname .= $e['name'] . ',';
- }
- }
- }
- $list[$key]['value'] = trim($selid, ',');
- $list[$key]['valname'] = trim($selname,',');
- }
- //图片类型
- if ($val['type'] == 6 && !empty($m['value'])) {
- $img = explode(',', $m['value']);
- $img_arr = [];
- foreach ($img as $url) {
- $img_arr[] = [
- 'url' => $url,
- 'oss_url' => 'https://'.config('app.ali_oss_bindurl').'/'.$url
- ];
- }
- $list[$key]['value'] = $img_arr;
- }
- }
- }
- }
- return $list;
- }
- /**
- * ext无数据时处理
- */
- public function no_ext_save($cusdata, $list)
- {
- foreach ($list as $key => $val) {
- foreach ($val['child'] as $k => $v) {
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['age_range', 'level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($v['keyname'], $save1)) {
- //$list[$key]['child'][$k]['value'] = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- $selid = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- $selname = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- }
- if (in_array($v['keyname'], $save2)) {
- foreach ($v['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$v['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- $list[$key]['child'][$k]['select'][$r]['check'] = in_array($v['type'], [3,4]) ? 'true' : 'false'; //是否选中值,客服pc端报备渲染使用
- }
- }
- }
- $list[$key]['child'][$k]['value'] = $selid;
- $list[$key]['child'][$k]['valname'] = $selname;
- if(!empty($v['keyname']) && $v['keyname'] == 'sign_time') $list[$key]['child'][$k]['value'] = date('Y/m/d H:i',strtotime($cusdata['sign_time']));
- }
- }
- return $list;
- }
- /**
- * ext无数据时处理
- */
- public function no_ext_saves($cusdata, $list)
- {
- foreach ($list as $k => $v) {
- $selid = '';
- $selname = '';
- $save1 = ['name', 'phone', 'community_name', 'house_delivery_time', 'plan_deco_time', 'square', 'budget'];
- $save2 = ['age_range', 'level', 'house_type', 'deco_style', 'source_id'];
- if (in_array($v['keyname'], $save1)) {
- $list[$k]['value'] = !empty($cusdata[$v['keyname']]) ? $cusdata[$v['keyname']] : '';
- }
- if (in_array($v['keyname'], $save2)) {
- foreach ($v['select'] as $r => $e) {
- if ($e['name'] == $cusdata[$v['keyname']]) {
- $selid = $e['id'];
- $selname = $e['name'];
- }
- }
- }
- $list[$k]['value'] = $selid;
- $list[$k]['valname'] = $selname;
- }
- return $list;
- }
- /**
- * 旧ext编辑保存
- */
- public function old_ext_edit($cusdata, $save_ext, $new_ext){
- $old_ext = $this->get_old_ext();
- $ext = json_decode($cusdata['ext'],true);
- // 数据的旧ext处理
- $xin = [];
- foreach ($ext as $key => $val) {
- foreach ($old_ext as $k => $v) {
- if ($k == $key) {
- $a['name'] = $v;
- $a['value'] = $val;
- }
- }
- $xin[] = $a;
- }
- //旧ext处理成新的ext结构
- $old_data = [];
- foreach ($xin as $k => $v){
- foreach ($new_ext as $kk => $vv){
- if ($v['name'] == $vv['name'] && !empty($v['value'])) {
- $old_data['id'] = $vv['id'];
- $old_data['keyname'] = $vv['keyname'];
- $old_data['value'] = $v['value'];
- }
- }
- }
- // 旧ext数据和新的保存数据合并。
- foreach ($old_data as $k => $v) {
- foreach ($save_ext as $kk => $vv){
- if ($v['id'] == $vv['id']){
- unset($save_ext[$kk]);
- $old_data[$k]['value'] = $vv['value'];
- isset($vv['type']) ? $old_data[$k]['type'] = $vv['type'] : ''; //当时图片类型时保留
- }
- }
- }
- $save_ext = array_values($save_ext);
- $return_data = [];
- if (!empty($save_ext) && !empty($old_data)){
- $return_data = array_merge($save_ext, $old_data);
- } elseif (!empty($old_data)){
- $return_data = $old_data;
- } elseif (!empty($save_ext)) {
- $return_data = $save_ext;
- }
- return $return_data;
- }
- /**
- * 新ext编辑保存
- */
- public function new_ext_edit($cusdata, $save_ext){
- $old_data = json_decode($cusdata['ext'],true);
- // 旧ext数据和新的保存数据合并。
- foreach ($old_data as $k => $v) {
- foreach ($save_ext as $kk => $vv){
- if ($v['id'] == $vv['id']){
- unset($save_ext[$kk]);
- $old_data[$k]['value'] = $vv['value'];
- isset($vv['type']) ? $old_data[$k]['type'] = $vv['type'] : ''; //当时图片类型时保留
- }
- }
- }
- $save_ext = array_values($save_ext);
- $return_data = [];
- if (!empty($save_ext) && !empty($old_data)){
- $return_data = array_merge($save_ext, $old_data);
- } elseif (!empty($old_data)){
- $return_data = $old_data;
- } elseif (!empty($save_ext)) {
- $return_data = $save_ext;
- }
- return $return_data;
- }
- //查询修改值的字段
- public function check_old_updatefield($cusdata,$save_ext,$new_ext,$token)
- {
- $old_ext = $this->get_old_ext();
- $ext = json_decode($cusdata['ext'],true);
- // 数据的旧ext处理
- $xin = [];
- foreach ($ext as $key => $val) {
- foreach ($old_ext as $k => $v) {
- if ($k == $key) {
- $a['name'] = $v;
- $a['value'] = $val;
- }
- }
- $xin[] = $a;
- }
- //旧ext处理成新的ext结构
- $old_data = [];
- foreach ($xin as $k => $v){
- foreach ($new_ext as $kk => $vv){
- if ($v['name'] == $vv['name'] && !empty($v['value'])) {
- $old_data['id'] = $vv['id'];
- $old_data['keyname'] = $vv['keyname'];
- $old_data['value'] = $v['value'];
- }
- }
- }
- $old_data = json_decode($cusdata['ext'],true);
- $yes_save = [];
- foreach ($old_data as $k => $v) {
- foreach ($save_ext as $kk => $vv) {
- if ($v['id'] == $vv['id']) {
- //判断是否修改了数据
- if (!isset($vv['type']) && $v['value'] != $vv['value']) {
- $yes_save[] = $vv;
- }
- //判断图片类型的数据是否修改
- if (isset($vv['type']) && !empty($vv['value'])) {
- $newval = json_decode($vv['value'], true);
- $files = $isbreak = null;
- foreach ($newval as $kkk => $vvv) {
- if (!empty($vvv['serverId'])) {
- $yes_save[] = $vv;
- $isbreak = 1;
- break;
- } else {
- $img = $vv['img'] ?? '';
- }
- $files .= $img . ',';
- }
- if ($isbreak != 1 && $files != $v['value']) {
- $yes_save[] = $vv;
- }
- }
- unset($save_ext[$kk]);
- }
- }
- }
- //去除为空值的新字段
- foreach($save_ext as $key=>$val){
- if(empty($val['value'])){
- unset($save_ext[$key]);
- }
- }
- $save_ext = array_values($save_ext);
- $yes_data = $yes_save;
- if (!empty($save_ext)){
- $yes_data = array_merge($yes_save,$save_ext);
- }
- if(!empty($yes_data)) $this->save_field_log($yes_data,$cusdata,$token);
- }
- //查询修改值的字段
- public function check_new_updatefield($cusdata,$save_ext,$token)
- {
- $old_data = json_decode($cusdata['ext'],true);
- $yes_save = [];
- foreach ($old_data as $k => $v) {
- foreach ($save_ext as $kk => $vv) {
- if ($v['id'] == $vv['id']) {
- //判断是否修改了数据
- if (!isset($vv['type']) && $v['value'] != $vv['value']) {
- $yes_save[] = $vv;
- }
- //判断图片类型的数据是否修改
- if (isset($vv['type']) && !empty($vv['value'])) {
- $newval = json_decode($vv['value'], true);
- //$newval = $vv['value'];
- $files = $isbreak = null;
- foreach ($newval as $kkk => $vvv) {
- if (!empty($vvv['serverId'])) {
- $yes_save[] = $vv;
- $isbreak = 1;
- break;
- } else {
- $img = $vvv['img'] ?? '';
- }
- $files .= $img . ',';
- }
- if ($isbreak != 1 && trim($files,',') != $v['value']) {
- $yes_save[] = $vv;
- }
- }
- unset($save_ext[$kk]);
- }
- }
- }
- //去除为空值的新字段
- foreach($save_ext as $key=>$val){
- if(empty($val['value'])){
- unset($save_ext[$key]);
- }
- }
- $save_ext = array_values($save_ext);
- $yes_data = $yes_save;
- if (!empty($save_ext)){
- $yes_data = array_merge($yes_save,$save_ext);
- }
- // var_dump($yes_data);
- // exit;
- if(!empty($yes_data)) $this->save_field_log($yes_data,$cusdata,$token);
- }
- //新添加字段时的处理
- public function check_not_updatefield($cusdata,$save_ext,$token)
- {
- $yes_save = [];
- foreach($save_ext as $key=>$val){
- if(!empty($val['value'])){
- $yes_save[] = $val;
- }
- }
- if(!empty($yes_save)) $this->save_field_log($yes_save,$cusdata,$token);
- }
- //处理修改字段的记录
- public function save_field_log($yes_data,$cusdata,$token)
- {
- //$token = $this->request->token;
- $save_ids = array_column($yes_data,'id');
- $is_down = 0;
- $new_ext = CustomerPortraitField::with(['select'])->where([['root_id', '=', $token['root_org']], ['pid', '<>', 0],['id','in',$save_ids]])->select()->toArray();
- $city = Company::where('root_id', $token['root_org'])->value('city');
- foreach($new_ext as $key=>$val) {
- if ($val['keyname'] == 'current_region') {
- $new_ext[$key]['select'][] = ['id' => $token['root_org'], 'name' => $city, 'pid' => $val['id']];
- }
- if ($val['keyname'] == 'source_id') {
- $new_ext[$key]['select'] = CustomerSource::field('id,source as name')->where('root_id', $token['root_org'])->select()->toArray();
- }
- if ($val['keyname'] == 'deco_style') {
- $new_ext[$key]['select'] = Decostyle::field('id,name')->where([['root_id', '=', $token['root_org']], ['type', '=', 0]])->select()->toArray();
- }
- }
- foreach($yes_data as $key=>$val){
- $selname1 = null;
- $yes_data[$key]['valname'] = $val['value'];
- foreach($new_ext as $k=>$v){
- if($v['id']==$val['id']){
- if($v['type']==6) $is_down = 1;
- $yes_data[$key]['name'] = $v['name'];
- $yes_data[$key]['type'] = $v['type'];
- if (in_array($v['type'], [3, 4]) && !empty($val['value'])) {
- $sp = explode(',', (string)$val['value']);
- foreach ($v['select'] as $w => $q) {
- if (in_array($q['id'], $sp)) {
- $selname1 .= $q['name'] . ',';
- }
- }
- $yes_data[$key]['valname'] = trim($selname1, ',');
- }
- }
- }
- }
- // 添加追踪记录
- $visitLog = [
- 'customer_id' => $cusdata->id,
- 'type' => 1,
- 'next_contact_date' => null,
- 'employee_id' => $token['employee_id'],
- 'user_id' => $token['uid'],
- 'remark' => '修改客户扩展信息',
- 'state' => 1,
- 'org_id' => $token['org_id'],
- 'customer_employee_id' => $cusdata->employee_id,
- 'customer_org_id' => Employee::where('id', $cusdata->employee_id)->value('org_id'),
- 'save_portrait_field' =>json_encode($yes_data),
- 'down_portrait_field_status' => $is_down ? $is_down : 0
- ];
- CustomerVisitLog::create($visitLog);
- }
- }
|