incr($site_id . "_" . $member_id . "_" . $time_str,1); Cache::handler()->expire($site_id . "_" . $member_id . "_" . $time_str,120); $order_no = $time_str . $member_id . sprintf("%03d", $max_no); return $order_no; } public function initStore($data) { $store_id = $data['store_id']; $store_model = new \app\model\store\Store(); $site_id = $data['site_id']; if ($store_id == 0) { $store_info = $store_model->getDefaultStore(['site_id' => $site_id])['data'] ?? []; $data['store_info'] = $store_info; $data['store_id'] = $store_info['store_id']; } else { $store_info = $store_model->getStoreInfo([['site_id', '=', $site_id], ['store_id', '=', $store_id]])['data'] ?? []; $data['store_info'] = $store_info; } return $data; } /** * 初始化站点信息 * @param $data * @return mixed */ public function initSiteData($data) { $site_id = $data['site_id']; $site_model = new Shop(); $site_condition = array( ['site_id', '=', $site_id] ); $site_info = $site_model->getShopInfo($site_condition)['data'] ?? []; $data['site_info'] = $site_info; return $data; } /** * 初始化会员账户 * @param $data * @return mixed */ public function initMemberAccount($data) { $member_id = $data['member_id'] ?? 0; $site_id = $data['site_id']; if (empty($member_id)) return $data; $member_model = new Member(); $member_condition = array( ['member_id', '=', $member_id], ); $member_info = $member_model->getMemberInfo($member_condition)['data'] ?? []; if (empty($member_info)) return $data; $data['member_info'] = $member_info; return $data; } /** * 初始化收货地址 * @param unknown $data */ public function initMemberAddress($data) { $member_address = new MemberAddress(); $address = $member_address->getMemberAddressInfo([['member_id', '=', $data['member_id']], ['is_default', '=', 1]]); $data['member_address'] = $address['data']; return $data; } /** * 获取商品会员价格 * @param $goods_info * @param $data */ public function getGoodsMemberPrice($goods_info, $data) { $store_id = $data['store_id'] ?? 0; $sku_id = $goods_info['sku_id']; $member_id = $data['member_id']; if ($member_id > 0) { $condition = [ ['sku_id', '=', $sku_id] ]; $goods_sku_info = model('goods_sku')->getInfo($condition, '*'); if (!empty($goods_sku_info)) { if (addon_is_exit("memberprice")) { if ($goods_sku_info['is_consume_discount']) { $price = $goods_info['price']; $alias = 'm'; $join = [ ['member_level ml', 'ml.level_id = m.member_level', 'inner'], ]; $member_info = model("member")->getInfo([['member_id', '=', $member_id]], 'm.member_level,ml.consume_discount', $alias, $join); if (!empty($member_info)) { if ($goods_sku_info['discount_config'] == 1) { // 自定义优惠 $goods_sku_info['member_price'] = json_decode($goods_sku_info['member_price'], true); $value = isset($goods_sku_info['member_price'][$goods_sku_info['discount_method']][$member_info['member_level']]) ? $goods_sku_info['member_price'][$goods_sku_info['discount_method']][$member_info['member_level']] : 0; switch ($goods_sku_info['discount_method']) { case "discount": // 打折 if ($value == 0) { $member_price = $price; } else $member_price = number_format($price * $value / 10, 2, '.', ''); break; case "manjian": if ($value == 0) { $member_price = $price; } else // 满减 $member_price = number_format($price - $value, 2, '.', ''); break; case "fixed_price": if ($value == 0) { $member_price = $goods_sku_info['price']; } else // 指定价格 $member_price = number_format($value, 2, '.', ''); break; } } else { // 默认按会员享受折扣计算 $member_price = number_format($price * $member_info['consume_discount'] / 100, 2, '.', ''); } return $this->success($member_price); } } } } } return $this->error(); } /** * 扣除商品库存 * @param $params */ public function skuDecStock($goods_info, $store_id = 0) { $goods_class = $goods_info['goods_class'] ?? 0; if (!empty($goods_class)) { if (in_array($goods_class, [1, 2, 3, 4, 5 ])) { $order_stock = new OrderStock(); $stock_result = $order_stock->decOrderSaleStock($goods_info['sku_id'], $goods_info['num'], $store_id,$goods_info['site_id']); if ($stock_result['code'] < 0) { return $stock_result; } } } return $this->success(); } /** * 次卡优惠计算 * @param $goods_info */ public function cardCalculate($goods_info){ $goods_money = $goods_info['goods_money']; //次卡抵扣优惠 } }