今天是2023年7月30日,最近身心疲憊,oneshop**開發被擱淺; 下午一覺睡到凌晨12點,醒了後無比清醒. 突然想做件具有程碑的事情; 把開發oneshop**的點滴,每天記錄下來,一來給自己定點目標,二來是記錄下自己的工作歷程.當成功時,每天的辛苦工作,不會被當成運運氣;
之前參與設計製作過三四個網上**的商業專案,但是老闆執行的都不太好. 未來網上**會覆蓋各行業,所以比較有市場.自己之前都在考慮用別人的框架,但是個人有**潔癖,不喜歡用別人的**;所以自己根據之前的三四個專案,想寫一套自己的**;
基礎**介紹下:
附上之前的readme總結;
vue 踩坑指南:
1.router keep-alive 快取的元件 name屬性必須要填寫,而且要與路由中的name一致.
**規範:2018-6-19 :動態路由方案:1:vue.js 中 created方法 以init開頭
2:vue.js 中 工具類方法以_開頭
3:方法/路由名:模組增刪改查要以_edit結尾,刪除要以_remove結尾,_lists,_sort...以此類推。不需要許可權控制的方法要以ajax結尾;
1.預設載入所有路由,在路由***裡面攔截路由.如果路由不允許訪問,則調到403頁面2.後台選單動態載入,並且標記不可用選單
路由設計:2018-6-23 :使用者管理方案:1.前端路由
前端預設載入所有路由,只是通過顯示隱藏選單,按鈕來控制許可權.
使用者登入時,返回可以訪問的路由,並儲存到sessionstore['rules']裡面;
路由訪問***:每次路由跳轉時檢測本地可訪問路由陣列,如果該路由不在該陣列中,需要跳轉到403頁面;
每次請求伺服器時,伺服器也會檢測路由規則
2.後端路由
後端路由在route.php中定義
某些控制器,前置訪問操作需要checkauth時,需要查詢資料庫,訪問使用者是否有訪問的許可權;
每個使用者都有乙個scope:(int) ,if管理員scope=999,那麼他login後,只能看到scope<999的使用者列表2018-6-26 :按鈕許可權控制方案:這樣,就可以防止普通管理員檢視修改超級管理員的,
如果管理員需要修改自己的密碼,需要單獨頁面設定
這裡我先假設乙個變數:
創始人管理員scope:super_root:9999
城市站平台管理員scope:super_root:999
後台使用者表 admin
商戶表 member
使用者表 user
後台定義列舉,平台類,平台型別+city_id構建多城市多商戶系統;
class webtype
1:如果不想讓其參與許可權判斷,需要在方法字尾加上ajax字串。vue tp5 分別會檢測 路由,action方法。2018-7-9 :後台系統配置設計方案:如果字尾是ajax(不區分大小寫)。那麼會跳過許可權檢測【vue不會做路由檢測,tp5不會做beforeaction檢測】。
2:按鈕級別的許可權驗證,使用vue的minxis方式,寫一些增刪改的許可權檢測方法。這些方法返回ture,false來
判斷是否顯示按鈕控制項;
vue原理: 使用者登陸時會讀取到使用者可訪問的路由,並持久化到sessionstorage中。 minxis方法會解析sessionstorage
中的可訪問路由,例如訪問到店鋪分類列表時:獲取當前的路由為storearea_lists,那麼
新增操作的路由應該為 storearea_edit.
刪除操作的路由應該為 storearea_remove.
所以路由要根據一定的規則定義。並且tp5介面名稱要跟vue路由一致;
單獨配置一張表放置所有的系統配置(onsp_config),並且使用group進行分組;2018-7-25 :商戶/城市平台設計方案:create table `onsp_config` (
`id` int(10) unsigned not null auto_increment comment '配置id',
`name` varchar(30) not null default '' comment '配置名稱',
`type` tinyint(3) unsigned not null default '0' comment '配置型別1文字2長文字3選擇框4開關',
`title` varchar(50) not null default '' comment '配置說明',
`group` tinyint(3) unsigned not null default '0' comment '配置分組',
`extra` varchar(255) not null default '' comment '配置值',
`remark` varchar(100) not null default '' comment '配置說明',
`create_time` int(10) unsigned not null default '0' comment '建立時間',
`update_time` int(10) unsigned not null default '0' comment '更新時間',
`status` tinyint(4) not null default '1' comment '狀態',
`value` text comment '配置值',
`sort` smallint(3) unsigned not null default '0' comment '排序',
primary key (`id`),
unique key `uk_name` (`name`),
key `type` (`type`),
key `group` (`group`)
) engine=myisam auto_increment=47 default charset=utf8;
後台根據groupid +tab方式進行查詢配置,在前段動態增加form物件以及屬性.
編輯時只需要把form物件中物件提交即可; form物件形式為 key=>config.name value=>config.value;
後台接收到post[data] 得到 [name1=>value1,name2=>value2,...] 陣列,遍歷儲存即可;
//----------總結
多城市系統太過龐大,現階段做單城市+多商戶系統;
後期遇到city_id,web_type設定預設1,'city'即可
商戶平台的管理員分組許可權由城市平台控制,這樣對商戶平台來說比較簡單一些;只需要城市設定好一系列的管理員分組如訂單管理員,商品管理員,商戶平台不需要再配置許可權,新增管理員時,只需要選擇對應的許可權分組即可;
設定城市超級管理員分組group=1,商戶超級管理員分組group=2並且,這兩個分組不可編輯刪除.
1.後台登入後,localstorage快取 access_token,以及info;
info包括['uid','city_id', 'web_type','group','issuper']
2.後台操作按鈕判斷是否是管理員如果 info.issuper==1 則 hasrules 返回true;
3.後台許可權以及管理員分組有2個型別,web_type=1時,為商戶平台的後台許可權以及管理員分組,web_type=2 時為城市平台;
儲存在乙個表中,用web_type區分;
後期需要解決開山之貼已經發出,希望自己能熬過21天,養成寫日誌的習慣;1.單城市系統完成後,如何做多城市架構?
1.1 多城市支付如何解決,乙個網域名稱對應乙個**. 如果做子網域名稱支付,該如何設定.例如
系統**公用一套,資料庫也公用一套;
勉勵自己;
qt開發筆記1
qmainwindow繼承與qwidget 當qwidget 類中介面發生變化 例如 最大 小化 時,觸發showevent 函式。類似函式還有changeevent keypressevent paintevent resizeevent 等等。qeventloop類 在任何時候,你都可以建立乙個...
Qt opencv開發筆記 1
配置opencv環境 1 qt5.6 opencv2 qt開發的程式一般需要借助qmake生成makefile檔案。由於qmake在解析路徑的時候不能識別空格,因此需要確保opencv的安裝路徑中不能包含空格 c program files opencv是不行的 我是 直接安裝在d opencv位置...
Java並行開發筆記1
加鎖機制既可以確保可見性又可以確保原子性,而volatile變數只能確保可見性。當前僅當滿足一下所有條件時,才應該使用volatile變數 執行緒封閉 當訪問共享的可變資料時,通常需要使用同步。一種避免使用同步的方式就是不共享資料。如果僅在單執行緒內訪問資料,就不需要同步。這種技術被稱為執行緒封閉 ...