這個項目很簡單,就是誰在哪個欄目增加了什么商品啤覆,商品的保質(zhì)期是哪天苍日,到指定日期發(fā)起消息通知。
涉及到的接口如下:
1窗声、商品分類相恃、商品列表、搜索
獲取參數(shù)token笨觅、cateid
// 直接取數(shù)據(jù)
$getgoodscate = Goodscate::where('is_deleted',0)->select();
// 這里把搜索也整合進去了
$map = []
if(isset($keywords)){
if ($keywords){
$map[] = ['goodsname|barcode','like','%'.$keywords.'%'];
// 復(fù)合條件/多條件查詢拦耐,上面的還可以用&,但是&和|不能同時使用
// TP6貌似不支持'_logic'='or'這種寫法了
}
}
$getgoodslist = Goods::where([
'token'=>$token,
'cateid'=>$cateid
])->where($map)->select();
if ($getgoodslist->isEmpty()){
$code = 201;
$msg = '沒有數(shù)據(jù)';
}else{
$code = 200;
$msg = '請求成功';
}
return json(['code'=>$code,'msg'=>$msg,'catelist'=>$getgoodscate,'data'=>$data]);
2见剩、微信登錄
微信授權(quán)登錄接口的方式變更了杀糯,所以業(yè)務(wù)邏輯也做了一些調(diào)整。具體前端調(diào)用放到下一篇炮温,這篇只說后端火脉。
通過下列方法獲得openid
// 微信獲取openid/sessionKey
private function getopenid($code)
{
$APPID = 在小程序后臺獲取APPID;
$SECRET = 在小程序后臺獲取SECRET;
// 拼接url
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$APPID}&secret={$SECRET}&js_code={$code}&grant_type=authorization_code";
$curl = curl_init(); // 啟動一個CURL會話
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 從證書中檢查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json對象
//檢查請求狀態(tài)
if($tmpInfo===false){
$msg = curl_error($tmpInfo);
return $msg;
}
//關(guān)閉URL請求
curl_close($curl);
$result = json_decode($tmpInfo, true);
return $result;
}
下一步就檢查openid是否在數(shù)據(jù)庫中存在,不存在則作為新用戶添加柒啤,存在則直接返回給前端就行了倦挂,這個項目本身用到用戶信息并不多,只要標示身份就行担巩,至于是誰并沒有去在意方援。
3、添加和編輯
添加和編輯用TP的create方法涛癌,前臺數(shù)據(jù)用對象的形式傳過來犯戏,包含了ID的自動執(zhí)行修改操作,沒有包含ID的則直接作為新數(shù)據(jù)添加拳话。
// 獲取前端傳過來的數(shù)據(jù)
$file = $request->file('file');//獲取上傳的文件
//數(shù)據(jù)校驗
//把文件保存路徑也塞到$data中去
$rs = Goods::create($data)->getData('id'); //執(zhí)行保存操作并返回主鍵
return json(['code'=>200,'msg'=>‘保存成功’]);
4先匪、刪除商品
除了刪除數(shù)據(jù),同時還要刪除上傳的商品圖片弃衍。
public function del()
{
$data = Goods::find($id);
$filename = app()->getRootPath().$data['Goodsimg'];
// unlink參數(shù)需要絕對路徑
@unlink($filename);
$rs = $data->delete();
if($rs){
$msg = '刪除成功';
}else{
$msg = '刪除失敗';
}
return json(['msg'=>$msg]);
}
5呀非、消息推送(微信小程序訂閱消息)
邏輯是這樣的:
先用appid和secret換取access_token
接著把符合條件的消息發(fā)送對象找出來
然后把數(shù)據(jù)按照選用的消息模版ID分別向微信服務(wù)器接口發(fā)起請求
最后在自己的服務(wù)器上把這個接口添加到計劃任務(wù),因為提醒時間最小顆粒度是天镜盯,所以每天執(zhí)行一次即可岸裙。
關(guān)于這塊,放到下一篇單獨記錄速缆。