Ejemplo n.º 1
0
 public static function setValue($wxUserId, $key, $value)
 {
     $obj = self::where('wx_user_id', $wxUserId)->where('key', $key)->first();
     if (!$obj) {
         $obj = new WxUserKv();
         $obj->wx_user_id = $wxUserId;
         $obj->key = $key;
     }
     $obj->value = $value;
     $obj->save();
     return $obj;
 }
Ejemplo n.º 2
0
 /**
  * 核实订单,库存
  * @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]);
 }