OneShop商城開發筆記第1天

2021-08-21 22:14:11 字數 3974 閱讀 1526

今天是2023年7月30日,最近身心疲憊,oneshop**開發被擱淺; 下午一覺睡到凌晨12點,醒了後無比清醒. 突然想做件具有程碑的事情; 把開發oneshop**的點滴,每天記錄下來,一來給自己定點目標,二來是記錄下自己的工作歷程.當成功時,每天的辛苦工作,不會被當成運運氣;

之前參與設計製作過三四個網上**的商業專案,但是老闆執行的都不太好. 未來網上**會覆蓋各行業,所以比較有市場.自己之前都在考慮用別人的框架,但是個人有**潔癖,不喜歡用別人的**;所以自己根據之前的三四個專案,想寫一套自己的**;

基礎**介紹下:

附上之前的readme總結;

vue 踩坑指南:

1.router keep-alive 快取的元件 name屬性必須要填寫,而且要與路由中的name一致.

**規範:

1:vue.js 中 created方法 以init開頭

2:vue.js 中 工具類方法以_開頭

3:方法/路由名:模組增刪改查要以_edit結尾,刪除要以_remove結尾,_lists,_sort...以此類推。不需要許可權控制的方法要以ajax結尾;

2018-6-19 :動態路由方案:

1.預設載入所有路由,在路由***裡面攔截路由.如果路由不允許訪問,則調到403頁面

2.後台選單動態載入,並且標記不可用選單

路由設計:

1.前端路由

前端預設載入所有路由,只是通過顯示隱藏選單,按鈕來控制許可權.

使用者登入時,返回可以訪問的路由,並儲存到sessionstore['rules']裡面;

路由訪問***:每次路由跳轉時檢測本地可訪問路由陣列,如果該路由不在該陣列中,需要跳轉到403頁面;

每次請求伺服器時,伺服器也會檢測路由規則

2.後端路由

後端路由在route.php中定義

某些控制器,前置訪問操作需要checkauth時,需要查詢資料庫,訪問使用者是否有訪問的許可權;

2018-6-23 :使用者管理方案:

每個使用者都有乙個scope:(int) ,if管理員scope=999,那麼他login後,只能看到scope<999的使用者列表

這樣,就可以防止普通管理員檢視修改超級管理員的,

如果管理員需要修改自己的密碼,需要單獨頁面設定

這裡我先假設乙個變數:

創始人管理員scope:super_root:9999

城市站平台管理員scope:super_root:999

後台使用者表 admin

商戶表 member

使用者表 user

後台定義列舉,平台類,平台型別+city_id構建多城市多商戶系統;

class webtype

2018-6-26 :按鈕許可權控制方案:

1:如果不想讓其參與許可權判斷,需要在方法字尾加上ajax字串。vue tp5 分別會檢測 路由,action方法。

如果字尾是ajax(不區分大小寫)。那麼會跳過許可權檢測【vue不會做路由檢測,tp5不會做beforeaction檢測】。

2:按鈕級別的許可權驗證,使用vue的minxis方式,寫一些增刪改的許可權檢測方法。這些方法返回ture,false來

判斷是否顯示按鈕控制項;

vue原理: 使用者登陸時會讀取到使用者可訪問的路由,並持久化到sessionstorage中。 minxis方法會解析sessionstorage

中的可訪問路由,例如訪問到店鋪分類列表時:獲取當前的路由為storearea_lists,那麼

新增操作的路由應該為 storearea_edit.

刪除操作的路由應該為 storearea_remove.

所以路由要根據一定的規則定義。並且tp5介面名稱要跟vue路由一致;

2018-7-9 :後台系統配置設計方案:

單獨配置一張表放置所有的系統配置(onsp_config),並且使用group進行分組;

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'即可

2018-7-25 :商戶/城市平台設計方案:

商戶平台的管理員分組許可權由城市平台控制,這樣對商戶平台來說比較簡單一些;只需要城市設定好一系列的管理員分組如訂單管理員,商品管理員,

商戶平台不需要再配置許可權,新增管理員時,只需要選擇對應的許可權分組即可;

設定城市超級管理員分組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區分;

後期需要解決

1.單城市系統完成後,如何做多城市架構?

1.1 多城市支付如何解決,乙個網域名稱對應乙個**. 如果做子網域名稱支付,該如何設定.例如

系統**公用一套,資料庫也公用一套;

開山之貼已經發出,希望自己能熬過21天,養成寫日誌的習慣;

勉勵自己;

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變數 執行緒封閉 當訪問共享的可變資料時,通常需要使用同步。一種避免使用同步的方式就是不共享資料。如果僅在單執行緒內訪問資料,就不需要同步。這種技術被稱為執行緒封閉 ...