大数跨境

华为云服务器Flexus X搭建悟空crm管理系统——助力企业云上管理(解决APP Referer校验失

华为云服务器Flexus X搭建悟空crm管理系统——助力企业云上管理(解决APP Referer校验失 新消费传媒
2024-12-31
1

1、为什么我们企业会选择Flexus云服务器X实例来部署自己的CRM管理系统?

   

           

因为基于华为云Flexus X实例搭建CRM管理平台,可以从容面对企业内部瞬息万变的业务压力变化

2、华为云服务器Flexus X方案及优势:

灵活伸缩

    搭配弹性伸缩服务AS及负载均衡服务ELB,可以实现基于业务负载的快速弹缩,从容应对多变的市场业务压力

数据可靠

    搭配华为云数据库服务,存储电商持久化数据,使用方便,可靠性高

安全可靠

    搭配WAF、DDoS等网络安全服务,实现对电商业务全方位安全防护,降低黑客入侵风险

   

           

3、在宝塔里面安装必要的环境PHP7.3、Mysql5.6+、NGINX    

           

4、安装搭建好,进入CRM管理界面:    

           

点击添加客户信息的时候就会发现,提示:

           

    APP Referer校验失败。请检查该ak设置的白名单与访问所有的域名是否一致。详情查看:http://lbsyun.baidu.com/apiconsole/key#

           

这是由于百度地图api接口没有配置好导致的问题出现    

           

当配置好地图参数之后,就可以进行地区定位和使用附件客户等功能了    

   

           

           

5、客户详情功能模块代码    

           

public function read()

    {

        $customerModel = model('Customer');

        $cutomerLogic = new CustomerLogic();

        $param = $this->param;

        $userInfo = $this->userInfo;

        $data = $customerModel->getDataById($param['id'], $userInfo['id']);

        if (!$data) {

            return resultArray(['error' => $customerModel->getError()]);

        }

        //数据权限判断

        $userModel = new \app\admin\model\User();

        $auth_user_ids = $userModel->getUserByPer('crm', 'customer', 'read');

        //读权限

        $roPre = $userModel->rwPre($userInfo['id'], $data['ro_user_id'], $data['rw_user_id'], 'read');

        $rwPre = $userModel->rwPre($userInfo['id'], $data['ro_user_id'], $data['rw_user_id'], 'update');

        //判断是否客户池数据

        $wherePool = $customerModel->getWhereByPool();    

        $resPool = db('crm_customer')->alias('customer')->where(['customer_id' => $param['id']])->where($wherePool)->find();

      if (!$resPool && !in_array($data['owner_user_id'], $auth_user_ids) && !$roPre && !$rwPre) {

            $authData['dataAuth'] = (int)0;

            return resultArray(['data' => $authData]);

        }

        return resultArray(['data' => $data]);

    }

           

6、编辑客户功能模块代码

           

public function update()

    {

        $customerModel = model('Customer');

        $param = $this->param;

        $userInfo = $this->userInfo;

        //数据详情

        $data = $customerModel->getDataById($param['id']);

        if (!$data) {

            return resultArray(['error' => $customerModel->getError()]);

        }    

           

        $param['user_id'] = $userInfo['id'];

        if ($customerModel->updateDataById($param, $param['id'])) {

            return resultArray(['data' => '编辑成功']);

        } else {

            return resultArray(['error' => $customerModel->getError()]);

        }

    }

           

7、删除客户功能模块代码

           

 public function delete()

    {

        $param = $this->param;

        $user = new ApiCommon();

        $userInfo = $user->userInfo;

        // 是否客户池

        if ($param['isSeas'] == 1) {

            $permission = checkPerByAction('crm', 'customer', 'poolDelete');

        } else {

            $permission = checkPerByAction('crm', 'customer', 'delete');    

        }

        if ($permission == false) {

            return resultArray(['error' => '无权操作']);

        }

        $customerModel = model('Customer');

        $userModel = new \app\admin\model\User();

        $recordModel = new \app\admin\model\Record();

        $fileModel = new \app\admin\model\File();

        $actionRecordModel = new \app\admin\model\ActionRecord();

        if (!is_array($param['id'])) {

            $customer_id[] = $param['id'];

        } else {

            $customer_id = $param['id'];

        }

        $delIds = [];

        $errorMessage = [];

           

        //数据权限判断

        $auth_user_ids = $userModel->getUserByPer('crm', 'customer', 'delete');

        //判断是否客户池数据(客户池数据只有管理员可以删)

        $adminId = $userModel->getAdminId();

        $wherePool = $customerModel->getWhereByPool();    

        foreach ($customer_id as $k => $v) {

            $isDel = true;

            //数据详情

            $data = db('crm_customer')->where(['customer_id' => $v])->find();

            if (!$data) {

                $isDel = false;

                $errorMessage[] = 'id为' . $v . '的客户删除失败,错误原因:' . $customerModel->getError();

            }

            $resPool = db('crm_customer')->alias('customer')->where(['customer_id' => $v])->where($wherePool)->find();

            if (!$resPool && !in_array($data['owner_user_id'], $auth_user_ids) && $isDel) {

                $isDel = false;

                $errorMessage[] = '无权操作';

            }

            // 公海 (原逻辑,公海仅允许管理员删除,修改为授权,不再限制)

            // if ($resPool && !in_array($data['owner_user_id'],$adminId)) {

            //     $isDel = false;

            //     $errorMessage[] = '名称为'.$data['name'].'的客户删除失败,错误原因:无权操作';    

            // }

            //有商机、合同、联系人则不能删除

            if ($isDel) {

                $resBusiness = db('crm_business')->where(['customer_id' => $v])->find();

                if ($resBusiness) {

                    $isDel = false;

                    $errorMessage[] = '客户下存在商机,不能删除';

                }

            }

            if ($isDel) {

                $resContacts = db('crm_contacts')->where(['customer_id' => $v])->find();

                if ($resContacts) {

                    $isDel = false;

                    // $errorMessage[] = '名称为' . $data['name'] . '的客户删除失败,错误原因:客户下存在联系人,不能删除';

                    $errorMessage[] = '客户下存在联系人,不能删除';

                }

            }

            if ($isDel) {

                $resContract = db('crm_contract')->where(['customer_id' => $v])->find();

                if ($resContract) {    

                    $isDel = false;

                    $errorMessage[] = '客户下存在合同,不能删除';

                }

            }

            if ($isDel) {

                $delIds[] = $v;

            }

        }

        $dataInfo = $customerModel->where('customer_id', ['in', $delIds])->select();

        if ($delIds) {

            $delRes = $customerModel->delDatas($delIds);

            if (!$delRes) {

                return resultArray(['error' => $customerModel->getError()]);

            }

            // 删除客户扩展数据

            db('crm_customer_data')->whereIn('customer_id', $delIds)->delete();

            // 删除跟进记录

            $recordModel->delDataByTypes(2, $delIds);

            // 删除关联附件

            $fileModel->delRFileByModule('crm_customer', $delIds);

            // 删除关联操作记录    

            $actionRecordModel->delDataById(['types' => 'crm_customer', 'action_id' => $delIds]);

            foreach ($dataInfo as $k => $v) {

                RecordActionLog($userInfo['id'], 'crm_customer', 'delete', $v['name'], '', '', '删除了客户:' . $v['name']);

            }

        }

        if ($errorMessage) {

            return resultArray(['error' => $errorMessage]);

        } else {

            return resultArray(['data' => '删除成功']);

        }

    }

           

8、客户信息详情界面    

           

9、客户转移功能

public function transfer()

    {

        $param = $this->param;

        $userInfo = $this->userInfo;

        $customerModel = model('Customer');

        $businessModel = model('Business');

        $contractModel = model('Contract');

        $contactsModel = model('Contacts');

        $settingModel = model('Setting');

        $customerConfigModel = model('CustomerConfig');    

        $userModel = new \app\admin\model\User();

           

        if (!$param['owner_user_id']) {

            return resultArray(['error' => '变更负责人不能为空']);

        }

        if (!$param['customer_id'] || !is_array($param['customer_id'])) {

            return resultArray(['error' => '请选择需要转移的客户']);

        }

        $is_remove = ($param['is_remove'] == 2) ? 2 : 1;

        $type = $param['type'] == 2 ?: 1;

        $types = $param['types'] ?: [];

           

        $data = [];

        $data['owner_user_id'] = $param['owner_user_id'];

        $data['update_time'] = time();

        $data['follow'] = '待跟进';

        # 获取客户的时间

        $data['obtain_time'] = time();

           

        $ownerUserName = $userModel->getUserNameById($param['owner_user_id']);

        $errorMessage = [];

        foreach ($param['customer_id'] as $customer_id) {    

            $customerInfo = db('crm_customer')->where(['customer_id' => $customer_id])->find();

            if (!$customerInfo) {

                $errorMessage[] = '名称:为《' . $customerInfo['name'] . '》的客户转移失败,错误原因:数据不存在;';

                continue;

            }

            $resCustomer = true;

            //权限判断

            if (!$customerModel->checkData($customer_id)) {

                $errorMessage[] = $customerInfo['name'] . '转移失败,错误原因:无权限;';

                continue;

            }

            //拥有客户数上限检测

            if (!$customerConfigModel->checkData($param['owner_user_id'], 1)) {

                $errorMessage[] = $customerInfo['name'] . '转移失败,错误原因:' . $customerConfigModel->getError();

                continue;

            }

           

            //团队成员

            $teamData = [];    

            $teamData['type'] = $type; //权限 1只读2读写

            $teamData['user_id'] = [$customerInfo['owner_user_id']]; //协作人

            $teamData['types'] = 'crm_customer'; //类型

            $teamData['types_id'] = $customer_id; //类型ID

            $teamData['is_del'] = ($is_remove == 1) ? 1 : '';

            $res = $settingModel->createTeamData($teamData);

           

            # 处理分配标识,待办事项专用

            $data['is_allocation'] = 1;

           

            $resCustomer = db('crm_customer')->where(['customer_id' => $customer_id])->update($data);

            if (!$resCustomer) {

                $errorMessage[] = $customerInfo['name'] . '转移失败,错误原因:数据出错;';

                continue;

            } else {

                # 处理转移时,负责人出现在只读和读写成员列表中

                $customerArray = [];

                $teamCustomer = db('crm_customer')->field(['owner_user_id', 'ro_user_id', 'rw_user_id'])->where('customer_id', $customer_id)->find();

                if (!empty($teamCustomer['ro_user_id'])) {    

                    $customerRo = arrayToString(array_diff(stringToArray($teamCustomer['ro_user_id']), [$teamCustomer['owner_user_id']]));

                    $customerArray['ro_user_id'] = $customerRo;

                }

                if (!empty($teamCustomer['rw_user_id'])) {

                    $customerRo = arrayToString(array_diff(stringToArray($teamCustomer['rw_user_id']), [$teamCustomer['owner_user_id']]));

                    $customerArray['rw_user_id'] = $customerRo;

                }

                db('crm_customer')->where('customer_id', $customer_id)->update($customerArray);

            }

           

            if (in_array('crm_contacts', $types)) {

                $contactsIds = [];

                $contactsIds = db('crm_contacts')->where(['customer_id' => $customer_id])->column('contacts_id');

                if ($contactsIds) {

                    $resContacts = $contactsModel->transferDataById($contactsIds, $param['owner_user_id'], $type, $is_remove);    

                    if ($resContacts !== true) {

                        $errorMessage[] = $resContacts;

                        continue;

                    }

                }

            }

           

            //商机、合同转移

            if (in_array('crm_business', $types)) {

                $businessIds = [];

                $businessIds = db('crm_business')->where(['customer_id' => $customer_id])->column('business_id');

                if ($businessIds) {

                    $resBusiness = $businessModel->transferDataById($businessIds, $param['owner_user_id'], $type, $is_remove);

                    if ($resBusiness !== true) {

                        $errorMessage = $errorMessage ? array_merge($errorMessage, $resBusiness) : $resBusiness;

                        continue;

                    }

                }

            }    

           

            if (in_array('crm_contract', $types)) {

                $contractIds = [];

                $contractIds = db('crm_contract')->where(['customer_id' => $customer_id])->column('contract_id');

                if ($contractIds) {

                    $resContract = $contractModel->transferDataById($contractIds, $param['owner_user_id'], $type, $is_remove);

                    if ($resContract !== true) {

                        $errorMessage = $errorMessage ? array_merge($errorMessage, $resContract) : $resContract;

                        continue;

                    }

                }

            }

            //修改记录

            updateActionLog($userInfo['id'], 'crm_customer', $customer_id, '', '', '将客户转移给:' . $ownerUserName);

            RecordActionLog($userInfo['id'], 'crm_customer', 'transfer', $customerInfo['name'], '', '', '将客户:' . $customerInfo['name'] . '转移给:' . $ownerUserName);

        }    

        if (!$errorMessage) {

            return resultArray(['data' => '转移成功']);

        } else {

            return resultArray(['error' => $errorMessage]);

        }

    }

           

企业CRM管理系统部署上线之后,我们可以在华为云的控制台可以观察监控着CPU使用情况、内存、磁盘等等一切运作情况。华为云真的是性能强大、安全、稳定的云产品!!!

华为云828 为企业提供多行业场景解决方案及企业专属优惠,助力企业实现数字化转型升级,大家赶紧去选购吧!!    

           

————————————————

           

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                           

原文链接:https://blog.csdn.net/csdndddsd/article/details/141969901    

【声明】内容源于网络
0
0
新消费传媒
《互联网消费周刊》,致力于引领互联网消费趋势。独特视角,迅捷的专业原创报道,呈现互联网前沿消费报道!
内容 576
粉丝 0
新消费传媒 《互联网消费周刊》,致力于引领互联网消费趋势。独特视角,迅捷的专业原创报道,呈现互联网前沿消费报道!
总阅读0
粉丝0
内容576