/** * 收藏与取消收藏 * @param $id * @return string * @author zhengqian@dajiayao.cc */ public function favorite() { $inputdata = $this->inputData->only('shopShortId', 'flag'); $validator = \Validator::make($inputdata, ['shopShortId' => 'required', 'flag' => 'required|boolean']); if ($validator->fails()) { return RestHelp::parametersIllegal($validator->messages()->first()); } $objShop = Shop::getShopByShort($inputdata['shopShortId']); if (!$objShop) { return RestHelp::encodeResult(21001, "shop not found in db"); } $buyerId = is_null($this->buyerId) ? 0 : $this->buyerId; if ($inputdata['flag'] == false) { FavoriteShop::where('buyer_id', $buyerId)->where('shop_id', $objShop->id)->delete(); } elseif ($inputdata['flag'] == true) { $favorite = new FavoriteShop(); $favorite->buyer_id = $buyerId; $favorite->shop_id = $objShop->id; $favorite->save(); } else { return RestHelp::encodeResult(21001, 'flag is only 0 or 1'); } return RestHelp::success(); }
/** * 核实订单,库存 * @return string * @author zhengqian@dajiayao.cc */ public function check() { $inputData = $this->inputData->only('items', 'shopShortId'); $items = $inputData['items']; if (!is_array($items)) { return RestHelp::encodeResult(22000, 'item must be array'); } $arrRet = array(); $postageFlag = 0; $totalPrice = 0; $objShop = Shop::getShopByShort($inputData['shopShortId']); if (!$objShop) { return RestHelp::encodeResult(21000, "shop not found"); } $shelfItems = $objShop->getItemsOnShelf(); $resultFlag = true; $warning = ''; foreach ($items as $k => $item) { $arrRet[$k]['result'] = true; $arrRet[$k]['id'] = $item['id']; $objItem = Item::find($item['id']); if ($objItem->sale_status == Item::SALE_STATUS_NO) { $arrRet[$k]['result'] = false; $resultFlag = false; $warning = sprintf("%s 已停售", $objItem->name); break; } if ($objItem->shelf_status == Item::SHELF_STATUS_NO or !array_key_exists($objItem->id, $shelfItems)) { $arrRet[$k]['result'] = false; $resultFlag = false; $warning = sprintf("%s 已下架", $objItem->name); break; } if ($objItem->stock < $item['count']) { $arrRet[$k]['result'] = false; $resultFlag = false; $warning = sprintf("%s 库存不够", $objItem->name); break; } if ($objItem->postage_type == Item::POSTAGE_TYPE_BUYER) { $postageFlag++; } $totalPrice += $objItem->price * $item['count']; } $postage = $postageFlag ? $this->settingService->getSettingByKey(Setting::KEY_ORDER_POSTAGE)->value : 0; $grandTotal = $totalPrice + $postage; //检查合法后将价格,总价放入DB,后期用于检查 if ($resultFlag) { $user = Buyer::find($this->buyerId)->wxUser; WxUserKv::setValue($user->id, WxUserKv::BUYER_CHECK_PRICE, $grandTotal); } return RestHelp::success(['result' => $resultFlag, 'postage' => $postage, 'grandTotal' => $grandTotal, 'warning' => $warning, 'detail' => $arrRet]); }