DSSHOP 后端開發(fā)指南

2022-03-29 16:28 更新

首先你得掌握一定的PHP開發(fā)基礎(chǔ),并對(duì)laravel有一定的了解 該指南不做過多的技術(shù)層面介紹,只對(duì)一些項(xiàng)目中已經(jīng)封裝的方法/類進(jìn)行介紹,以方便在需要時(shí)快速應(yīng)用,減少自己寫代碼的時(shí)間

配置文件

后端配置相關(guān)

  • 后端配置文件在config目錄下,但實(shí)際配置時(shí),并不需要去修改該目錄下的文件,而是直接修改?.env?、?.env.dev?、?.env.prod?
  • 以下是常用的配置參數(shù)說明,更多配置參數(shù)請查看?api/config?
APP_KEY='' #應(yīng)用程序密鑰執(zhí)行php artisan key:generate可生成
APP_DEBUG=true #測試環(huán)境開啟,正常環(huán)境就關(guān)閉
HOMESTEAD_WINDOWS= true #windows下軟鏈接無效,將導(dǎo)致資源無法上傳,可以設(shè)置為true
DB_HOST=127.0.0.1 #mysql主機(jī)IP,一般不需要修改
DB_PORT=3306 #mysql端口號(hào),一般不需要修改
DB_DATABASE=dsshop #mysql表名
DB_USERNAME=dsshop #mysql用戶名
DB_PASSWORD=123456 #mysql密碼
CACHE_DRIVER=redis #緩存模式
QUEUE_CONNECTION=redis #隊(duì)列模式
REDIS_HOST=127.0.0.1 #REDIS服務(wù)器IP
REDIS_PASSWORD=dsshop #REDIS密碼
REDIS_PORT=6379 #REDIS端口
REDIS_DB=0  #REDIS默認(rèn)數(shù)據(jù)庫
REDIS_CACHE_DB=1 #REDIS緩存數(shù)據(jù)庫
WECHAT_MINI_PROGRAM_APPID=""    #微信小程序appid
WECHAT_MINI_PROGRAM_SECRET="" #微信小程序secret
WECHAT_PAYMENT_APPID="" #微信支付appid
WECHAT_PAYMENT_MCH_ID="" #微信支付mch_id
WECHAT_PAYMENT_KEY="" #微信支付key
WECHAT_PAYMENT_CERT_PATH="storage/pay/weixin/apiclient_cert.pem" #微信支付公鑰
WECHAT_PAYMENT_KEY_PATH="storage/pay/weixin/apiclient_key.pem" #微信支付私鑰
WECHAT_SUBSCRIPTION_INFORMATION_SHIPMENTS="" #訂單發(fā)貨通知ID
SMS_ALIYUN_ACCESS_ID="" #阿里短信access_id
SMS_ALIYUN_SECRET="" #阿里短信secret
SMS_ALIYUN_SIGNATURE="" #阿里短信簽名
SMS_ALIYUN_VERIFICATION_CODE="" #阿里短信短信模板ID
PASSPORT_CLIENT_ID="" #Passport OAuth認(rèn)證后臺(tái)的client_id
PASSPORT_CLIENT_SECRET="" #Passport OAuth認(rèn)證后臺(tái)的client_secret
PASSPORT_WEB_ID="" #Passport OAuth認(rèn)證客戶端的client_id
PASSPORT_WEB_SECRET=""  #Passport OAuth認(rèn)證客戶端的client_secret
HASH_CLIENT_SECRETS=""  #客戶端秘鑰的 hash 加密,一旦啟用,你的所有客戶端秘鑰將只有在創(chuàng)建時(shí)會(huì)顯示。由于純文本的客戶秘鑰值沒有存儲(chǔ)在數(shù)據(jù)庫中,所以如果秘鑰丟失,也不可能再恢復(fù)
BACKUP_SWITCH=true  #備份開關(guān)(請先確保已配置郵箱功能,不然備份會(huì)報(bào)錯(cuò))
PASSPORT_EXPIRES_IN = 7200  #token失效時(shí)間(單位秒),默認(rèn)為2小時(shí)
REFRESH_PASSPORT_EXPIRES_IN = 604800    #oken刷新失效時(shí)間(單位秒),默認(rèn)為7天
BACKUP_TIME=02:00   #備份時(shí)間(該時(shí)間為每天執(zhí)行時(shí)間,如需按周或其它指定時(shí)間,請自行配置backup.php文件)
BACKUP_FILES_TIME=02:00   #數(shù)據(jù)庫備份時(shí)間(設(shè)置后僅備份數(shù)據(jù)庫,該時(shí)間為每天執(zhí)行時(shí)間,如需按周或其它指定時(shí)間,請自行配置backup.php文件)
BACKUP_CLEAN_TIME=02:00   #文件備份時(shí)間(設(shè)置后僅備份文件,該時(shí)間為每天執(zhí)行時(shí)間,如需按周或其它指定時(shí)間,請自行配置backup.php文件)
BACKUP_CLEAN_TIME=02:20 #舊備份清除時(shí)間(該時(shí)間為每天執(zhí)行時(shí)間,如需按周或其它指定時(shí)間,請自行配置backup.php文件)
BACKUP_RECEIVE_MAIL= #備份結(jié)果接收郵箱
PROJECT_KEY #前端密鑰
ORDER_OVERTIME=10 #訂單超時(shí)時(shí)間(分鐘)
AUTOMATIC_RECEIVING_STATE=true   #是否開啟自動(dòng)收貨
AUTOMATIC_RECEIVING=7   #多少天后自動(dòng)收貨
AUTOMATIC_EVALUATE_STATE=true   #是否開啟自動(dòng)評(píng)價(jià)功能
AUTOMATIC_EVALUATE=12   #多少天后自動(dòng)好評(píng)
MAX_FILE_UPLOAD_SIZE = 2097152  #文件最大上傳大小2M

后臺(tái)配置相關(guān)

  • 后臺(tái)配置只需要修改RSET API地址即可,修改?dev.env.js?、?prod.env.js?的?BASE_API?

uni-app配置相關(guān)

#client/Dsshop/utils/config.js
#該文件可以配置生產(chǎn)環(huán)境、測試環(huán)境和本地環(huán)境,都有中文注明,修改NODE_ENV即可在打包時(shí)區(qū)分生產(chǎn)和測試環(huán)境
lbsQq: #騰訊地圖的key,注意需要開通WebService API
domainName: #API域名
secret: #api密鑰,對(duì)應(yīng)api/.env的APP_KEY

微信小程序配置相關(guān)

  • 開發(fā)->開發(fā)設(shè)置配置服務(wù)器域名、業(yè)務(wù)域名
  • 功能->訂閱消息添加模板,標(biāo)題為訂單發(fā)貨通知,具體參考下圖,然后獲取到模板ID,填寫到?WECHAT_SUBSCRIPTION_INFORMATION_SHIPMENTS?

11

修改后端配置文件,添加微信支付相關(guān)配置

WECHAT_PAYMENT_APPID="" #微信支付appid
WECHAT_PAYMENT_MCH_ID="" #微信支付mch_id
WECHAT_PAYMENT_KEY="" #微信支付key
WECHAT_PAYMENT_CERT_PATH="storage/pay/weixin/apiclient_cert.pem" #微信支付公鑰
WECHAT_PAYMENT_KEY_PATH="storage/pay/weixin/apiclient_key.pem" #微信支付私鑰

工具庫

前后端排序轉(zhuǎn)換:sortFormatConversion

  • 前臺(tái)一般排序會(huì)給后端傳?+id?、?-id?、?id?格式
  • 后臺(tái)可以通過以下方法實(shí)現(xiàn)排序功能

if($request->has('sort')){
    $sortFormatConversion = sortFormatConversion($request->sort);
    $q->orderBy($sortFormatConversion[0],$sortFormatConversion[1]);
}

用戶日志

Event(new UserLogEvent($user, $request));

返回錯(cuò)誤信息

// 以異常的形式返回
throw new \Exception('沒有生成所需數(shù)據(jù)庫遷移文件', Code::CODE_INEXISTENCE);
// 以JSON的形式返回
return resReturn(0, '參數(shù)錯(cuò)誤', Code::CODE_PARAMETER_WRONG);

返回json數(shù)據(jù):resReturn

# 返回正確數(shù)據(jù)
return resReturn(1, '更新成功');
# 返回錯(cuò)誤數(shù)據(jù)
return resReturn(0, '請?jiān)O(shè)置產(chǎn)品規(guī)格', Code::CODE_PARAMETER_WRONG);
# 返回異常錯(cuò)誤數(shù)據(jù)
throw new \Exception('微信支付失敗,請稍后再試!',Code::CODE_PARAMETER_WRONG);

獲取用戶ID(用戶信息)

// 前提是該路由引入用戶登錄驗(yàn)證中間件
$user_id = auth('web')->user()->id; // 用戶ID

在沒有登錄驗(yàn)證的方法中獲取登錄的用戶信息

use Illuminate\Support\Facades\Auth;
if(Auth::check()){  // 驗(yàn)證是否走登錄驗(yàn)證中間件
    $user_id = auth('web')->user()->id; // 用戶ID
}

驗(yàn)證某個(gè)插件是否已安裝

(new Plugin())->has('coupon')

導(dǎo)入數(shù)據(jù)表

  • 注意sql格式,只能存在數(shù)據(jù),不能存在結(jié)構(gòu) 格式:?php artisan generate:sql [數(shù)據(jù)表名]? 將sql放到?storage\app?下

# 默認(rèn)安裝demo
php artisan generate:sql
# 純凈數(shù)據(jù)
php artisan generate:sql pure
# 自定義安裝
php artisan generate:sql dsshop


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)