衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

華為云服務器 Flexus X 搭建悟空 crm 管理系統——助力企業云上管理(解決 APP Referer 校驗失敗問題)

jf_81200783 ? 來源:jf_81200783 ? 作者:jf_81200783 ? 2025-02-06 15:43 ? 次閱讀

1、為什么我們企業會選擇 Flexus 云服務器 X 實例來部署自己的 CRM 管理系統?

wKgZO2dwGomAUF-1AAQMm_QEWyA758.png

wKgZPGdwGomAftakAAPEYgUDXwE595.png

wKgZO2dwGomANR6vAAP2yoOokos952.png

因為基于華為云 Flexus X 實例搭建 CRM 管理平臺,可以從容面對企業內部瞬息萬變的業務壓力變化

2、華為云服務器 Flexus X 方案及優勢:

靈活伸縮

搭配彈性伸縮服務 AS 及負載均衡服務 ELB,可以實現基于業務負載的快速彈縮,從容應對多變的市場業務壓力

數據可靠

搭配華為云數據庫服務,存儲電商持久化數據,使用方便,可靠性高

安全可靠

搭配 WAF、DDoS 等網絡安全服務,實現對電商業務全方位安全防護,降低黑客入侵風險

wKgZPGdwGoqAMKRsAACHHBuyeu0501.png

wKgZO2dwGoqAGTsUAAHW1WAy7PQ120.png

3、在寶塔里面安裝必要的環境 PHP7.3、Mysql5.6+、NGINX

wKgZPGdwGouAX7NeAAQYQfEOzu8911.png

wKgZO2dwGouAXmrEAAHV-f13P2Q168.png

4、安裝搭建好,進入 CRM 管理界面:

wKgZPGdwGoyACKLoAAVdJSMEij0037.png

點擊添加客戶信息的時候就會發現,提示:

APP Referer 校驗失敗。請檢查該 ak 設置的白名單與訪問所有的域名是否一致。詳情查看:http://lbsyun.baidu.com/apiconsole/key#

這是由于百度地圖 api 接口沒有配置好導致的問題出現

wKgZO2dwGoyAKkCYAAGNZlsunXE268.png

當配置好地圖參數之后,就可以進行地區定位和使用附件客戶等功能了

wKgZPGdwGoyAIaI2AAH_iklgCb0230.png

wKgZO2dwGo2AIiscAAKm5ZvT4b8354.png

wKgZPGdwGo2AYEvnAAdWGbi3_ik512.png

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 appadminmodelUser();

authu?seri?ds=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(′crmc?ustomer′)?>alias(′customer′)?>where([′customeri?d′=>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[′useri?d′]=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 appadminmodelUser();

$recordModel = new appadminmodelRecord();

$fileModel = new appadminmodelFile();

$actionRecordModel = new appadminmodelActionRecord();

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

customeri?d[]=param['id'];

} else {

customeri?d=param['id'];

}

$delIds = [];

$errorMessage = [];

//數據權限判斷

authu?seri?ds=userModel->getUserByPer('crm', 'customer', 'delete');

//判斷是否客戶池數據(客戶池數據只有管理員可以刪)

adminId=userModel->getAdminId();

wherePool=customerModel->getWhereByPool();

foreach (customeri?dask => $v) {

$isDel = true;

//數據詳情

data=db(′crmc?ustomer′)?>where([′customeri?d′=>v])->find();

if (!$data) {

$isDel = false;

errorMessage[]=′id為′.v . '的客戶刪除失敗,錯誤原因:' . $customerModel->getError();

}

resPool=db(′crmc?ustomer′)?>alias(′customer′)?>where([′customeri?d′=>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(′crmb?usiness′)?>where([′customeri?d′=>v])->find();

if ($resBusiness) {

$isDel = false;

$errorMessage[] = '客戶下存在商機,不能刪除';

}

}

if ($isDel) {

resContacts=db(′crmc?ontacts′)?>where([′customeri?d′=>v])->find();

if ($resContacts) {

$isDel = false;

// errorMessage[]=′名稱為′.data['name'] . '的客戶刪除失敗,錯誤原因:客戶下存在聯系人,不能刪除';

$errorMessage[] = '客戶下存在聯系人,不能刪除';

}

}

if ($isDel) {

resContract=db(′crmc?ontract′)?>where([′customeri?d′=>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(′crmc?ustomer′,delIds);

// 刪除關聯操作記錄

actionRecordModel?>delDataById([′types′=>′crmc?ustomer′,′actioni?d′=>delIds]);

foreach (dataInfoask => $v) {

RecordActionLog(userInfo[′id′],′crmc?ustomer′,′delete′,v['name'], '', '', '刪除了客戶:' . $v['name']);

}

}

if ($errorMessage) {

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

} else {

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

}

}

8、客戶信息詳情界面

wKgZO2dwGo6AHhO3AAYzBI7FGsQ994.png

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 appadminmodelUser();

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

return resultArray(['error' => '變更負責人不能為空']);

}

if (!param[′customeri?d′]∣∣!isa?rray(param['customer_id'])) {

return resultArray(['error' => '請選擇需要轉移的客戶']);

}

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

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

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

$data = [];

data[′owneru?seri?d′]=param['owner_user_id'];

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

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

# 獲取客戶的時間

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

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

$errorMessage = [];

foreach (param[′customeri?d′]ascustomer_id) {

customerInfo=db(′crmc?ustomer′)?>where([′customeri?d′=>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[′useri?d′]=[customerInfo['owner_user_id']]; //協作人

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

teamData[′typesi?d′]=customer_id; //類型 ID

teamData[′isd?el′]=(is_remove == 1) ? 1 : '';

res=settingModel->createTeamData($teamData);

# 處理分配標識,待辦事項專用

$data['is_allocation'] = 1;

resCustomer=db(′crmc?ustomer′)?>where([′customeri?d′=>customer_id])->update($data);

if (!$resCustomer) {

errorMessage[]=customerInfo['name'] . '轉移失敗,錯誤原因:數據出錯;';

continue;

} else {

# 處理轉移時,負責人出現在只讀和讀寫成員列表中

$customerArray = [];

teamCustomer=db(′crmc?ustomer′)?>field([′owneru?seri?d′,′rou?seri?d′,′rwu?seri?d′])?>where(′customeri?d′,customer_id)->find();

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

customerRo=arrayToString(arrayd?iff(stringToArray(teamCustomer['ro_user_id']), [$teamCustomer['owner_user_id']]));

customerArray[′rou?seri?d′]=customerRo;

}

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

customerRo=arrayToString(arrayd?iff(stringToArray(teamCustomer['rw_user_id']), [$teamCustomer['owner_user_id']]));

customerArray[′rwu?seri?d′]=customerRo;

}

db('crm_customer')->where('customer_id', customeri?d)?>update(customerArray);

}

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

$contactsIds = [];

contactsIds=db(′crmc?ontacts′)?>where([′customeri?d′=>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(′crmb?usiness′)?>where([′customeri?d′=>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(′crmc?ontract′)?>where([′customeri?d′=>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′],′crmc?ustomer′,customer_id, '', '', '將客戶轉移給:' . $ownerUserName);

RecordActionLog(userInfo[′id′],′crmc?ustomer′,′transfer′,customerInfo['name'], '', '', '將客戶:' . customerInfo[′name′].′轉移給:′.ownerUserName);

}

if (!$errorMessage) {

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

} else {

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

}

}

企業 CRM 管理系統部署上線之后,我們可以在華為云的控制臺可以觀察監控著 CPU 使用情況、內存、磁盤等等一切運作情況。華為云真的是性能強大、安全、穩定的云產品!!!

wKgZPGdwGo6Acs3PAAbOhPW06uc881.png

華為云 828 為企業提供多行業場景解決方案及企業專屬優惠,助力企業實現數字化轉型升級,大家趕緊去選購吧!!

wKgZO2dwGo-AURnbAAiZKqAl9wg120.png

wKgZPGdwGo-AAQDDAAU6TUWxJbI845.png

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

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9307

    瀏覽量

    86071
  • 華為云
    +關注

    關注

    3

    文章

    2689

    瀏覽量

    17588
收藏 人收藏

    評論

    相關推薦

    Flexus 服務器 X 實例實踐:安裝 Tasks.md 任務管理工具

    引言 在數字化時代,高效的任務管理至關重要。華為一直以卓越的技術和服務引領行業發展,其 Flexus
    的頭像 發表于 01-17 09:45 ?259次閱讀
    <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例實踐:安裝 Tasks.md 任務<b class='flag-5'>管理</b>工具

    華為 Flexus 服務器 X 實例之 openEuler 系統搭建 MaxKB 開源知識庫問答系統

    及個人開發者快速構建高效、靈活的應用環境。本文將詳細介紹如何利用華為 Flexus 服務器 X
    的頭像 發表于 01-17 09:44 ?281次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例之 openEuler <b class='flag-5'>系統</b>下<b class='flag-5'>搭建</b> MaxKB 開源知識庫問答<b class='flag-5'>系統</b>

    Flexus 服務器 X 實例部署 Docker 管理儀表板 DweebUI

    引言 在當今的數字化業務環境中,華為以其卓越的技術實力脫穎而出。華為 Flexus
    的頭像 發表于 01-14 09:27 ?295次閱讀
    <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例部署 Docker <b class='flag-5'>管理</b>儀表板 DweebUI

    使用華為 Flexus 服務器 X 搭建部署茶葉商城小程序 uniapp

    、砍價、秒殺、會員、分銷等等功能一個茶葉商城小程序。 后端使用 ThinkPHP,前端使用 UniApp,數據庫采用 MySQL,并結合 Redis 緩存技術。 ???《華為 Flexus
    的頭像 發表于 01-13 13:35 ?130次閱讀
    使用<b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> <b class='flag-5'>搭建</b>部署茶葉商城小程序 uniapp

    構建企業級文件管理系統,輕松搭建 Seafile 社區版存儲解決方案

    。在828 華為企業節之際,利用 Flexus X
    的頭像 發表于 01-13 11:14 ?299次閱讀
    構建<b class='flag-5'>企業</b>級文件<b class='flag-5'>管理</b><b class='flag-5'>系統</b>,輕松<b class='flag-5'>搭建</b> Seafile 社區版<b class='flag-5'>云</b>存儲解決方案

    基于華為 Flexus 服務器 X 實例快速搭建 Halo 博客平臺

    前言 ????????華為作為領先的服務提供商,一直致力于為企業提供卓越的計算
    的頭像 發表于 01-08 11:46 ?203次閱讀
    基于<b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例快速<b class='flag-5'>搭建</b> Halo 博客平臺

    華為 Flexus 服務器 X 實例之 openEuler 系統下部署 dufs 文件服務器

    一、Flexus 服務器 X 實例介紹 1.1 Flexus
    的頭像 發表于 01-08 11:45 ?234次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例之 openEuler <b class='flag-5'>系統</b>下部署 dufs 文件<b class='flag-5'>服務器</b>

    華為 Flexus 服務器 X 實例部署 Servas 自托管書簽管理工具

    一、Flexus 服務器 X 實例介紹 1.1 Flexus
    的頭像 發表于 01-08 11:44 ?209次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例部署 Servas 自托管書簽<b class='flag-5'>管理</b>工具

    華為 Flexus 服務器 X 實例部署 Note Mark 筆記工具

    前言 華為 Flexus 服務器 X 實例作為專為中小
    的頭像 發表于 01-02 13:42 ?106次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例部署 Note Mark 筆記工具

    華為 Flexus 服務器 X 實例的使用教程

    引言 選擇一款性價比高、性能強勁的服務器是 IT 技術人員常面臨的問題。華為Flexus
    的頭像 發表于 12-30 09:16 ?281次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例的使用教程

    華為 Flexus 服務器 X 實例:在 openEuler 系統搭建 MySQL 主從復制

    前言 本文將介紹如何在華為 Flexus 服務器 X 實例
    的頭像 發表于 12-30 09:11 ?244次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例:在 openEuler <b class='flag-5'>系統</b>下<b class='flag-5'>搭建</b> MySQL 主從復制

    Flexus 服務器 X 實例:在 Docker 環境下搭建 java 開發環境

    引言 在科技飛速發展的時代,計算成為推動各行業進步的重要力量。華為憑借其強大的技術實力和創新精神,始終走在行業前沿。華為
    的頭像 發表于 12-30 09:07 ?254次閱讀
    <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例:在 Docker 環境下<b class='flag-5'>搭建</b> java 開發環境

    基于華為 Flexus 服務器 X 實例部搭建 Halo 博客平臺

    署 Halo 博客平臺,充分發揮其穩定可靠的服務優勢。通過這一實踐,我們將展示如何利用華為的強大支持,實現博客平臺的高效搭建
    的頭像 發表于 12-26 09:40 ?209次閱讀
    基于<b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例部<b class='flag-5'>搭建</b> Halo 博客平臺

    基于華為 Flexus 服務器 X 實例搭建 Linux 學習環境

    前言 在當今信息技術日新月異的時代,華為 Flexus 服務器 X 實例以其強勁的性能和高性
    的頭像 發表于 12-25 17:10 ?211次閱讀
    基于<b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例<b class='flag-5'>搭建</b> Linux 學習環境

    華為 Flexus 服務器 X 實例的購買及使用體驗

    價比服務。其中,華為 Flexus 服務器
    的頭像 發表于 12-24 17:26 ?223次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> <b class='flag-5'>Flexus</b> <b class='flag-5'>云</b><b class='flag-5'>服務器</b> <b class='flag-5'>X</b> 實例的購買及使用體驗
    葡京百家乐官网玩法| 7人百家乐中号桌布| 至尊百家乐2014| 百家乐官网庄闲和各| 六合彩天线宝宝| 赌神网百家乐2| 百家乐透明发牌机| 百家乐学院| 百家乐怎样看点| 百家乐官网网站东方果博| 百家乐官网胜率被控制| 百家乐官网庄闲分布概率| 新濠国际| 大发888国际赌场娱乐网规则| 百家乐平注资讯| 大发888娱乐官方下载| 棋牌类单机游戏下载| 百家乐游戏大厅下| 百家乐最佳下注方法| 百家乐赌博分析网| 怎么看百家乐走势| 白山在线棋牌游戏| 咸宁市| a8娱乐城线上娱乐| 大连棋牌网| 博彩机| 浦城县| 百家乐官网视频百家乐官网| 百家乐官网太阳城 | 网址百家乐官网的玩法技巧和规则 | 百家乐官网概率怎么算| 打百家乐官网最好办法| 24山吉凶| 院子围墙砌18还是24| 百家乐获胜秘决百家乐获胜秘诀| 威尼斯人娱乐城地图| 天天乐娱乐城| 百家乐官网视频游戏账号| 风水24山里的四维八干| 威尼斯人娱乐平台代理| 恒利百家乐的玩法技巧和规则|