find()->toArray(); $count = LuckOrder::where('uid', $request->uid())->count(); $data['count'] -= $count; return app('json')->success($data); } /** * 抽奖 * @param Request $request * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function luck(Request $request) { Db::startTrans(); $luck = LuckDraw::where('id', 1)->find(); $product = StoreProduct::where('is_luck', 1)->select(); $user = User::where('uid', $request->uid())->find(); $luckOrder = LuckOrder::where('uid', $request->uid())->count(); // if ($user['add_time']+(86400*7) < time()) return app('json')->fail('新人一周内才可以购买'); if ($luckOrder >= $luck['count']) return app('json')->fail('最大抽奖数'.$luck['count']); if ($user['white_integral'] < $luck['price']) return app('json')->fail('红积分不足'); $probability = $luck['probability']; $data = []; $data[] = ['id' => 0, 'title' => '未中奖','v' => 100-$probability]; foreach ($product as $item){ $data[] = ['id' => $item['id'], 'title' => $item['store_name'],'v' => $probability/count($product)]; } foreach ($data as $key => $val) { $arr[$val['id']] = $val['v']; //将$prize_arr放入数组下标为$prize_arr的id元素,值为v元素的数组中 } $rid = get_rand($arr); if ($rid == 0){ $res = LuckOrder::create([ 'luck_id' => 1, 'uid' => $request->uid(), 'price' => $luck['price'], 'status' => 0, 'state' => 0, ]); if ($res) { Db::commit(); return app('json')->fail('未中奖,不扣除', ['product' => 0]); } }else{ $user_add = UserAddress::where('uid', $request->uid())->find(); if (!$user_add) return app('json')->fail('请填写地址', ['address' => 0]); $products = StoreProduct::where('id', $rid)->find(); $productArrtValue = StoreProductAttrValue::where('product_id', $products['id'])->find(); $cart_id = StoreCart::create([ 'uid' => $request->uid(), 'type' => 'product', 'product_id' => $products['id'], 'product_attr_unique' => $productArrtValue['unique'], 'cart_num' => 1, 'add_time' => time(), 'is_new' => 1, ]); $cartGroup = StoreCart::getUserProductCartList($request->uid(), $cart_id['id'], 1); $cartInfo = $cartGroup['valid']; $cartIds = []; $totalNum = 0; $gainIntegral = 0; $whiteIntegral = 0; $businessIntegral = 0; foreach ($cartInfo as $cart) { $cartIds[] = $cart['id']; $totalNum += $cart['cart_num']; // if ($cart['productInfo']['cate_id'] == 4 and $useIntegral) return self::setErrorInfo('该商品不能抵扣', true); $cartInfoGainIntegral = isset($cart['productInfo']['give_integral']) ? bcmul($cart['cart_num'], $cart['productInfo']['give_integral'], 2) : 0; $whiteInfoGainIntegral = isset($cart['productInfo']['white_integral']) ? bcmul($cart['cart_num'], $cart['productInfo']['white_integral'], 2) : 0; $businessGainIntegral = isset($cart['productInfo']['business_integral']) ? bcmul($cart['cart_num'], $cart['productInfo']['business_integral'], 2) : 0; $gainIntegral = bcadd($gainIntegral, $cartInfoGainIntegral, 2); $whiteIntegral = bcadd($whiteIntegral, $whiteInfoGainIntegral, 2); $businessIntegral = bcadd($businessIntegral, $businessGainIntegral, 2); $price = $cart['productInfo']['price']; } $orderInfo = [ 'uid' => $request->uid(), 'order_id' => StoreOrder::getNewOrderId(), 'real_name' => $user_add['real_name'], 'user_phone' => $user_add['phone'], 'user_address' => $user_add['province'] . ' ' . $user_add['city'] . ' ' . $user_add['district'] . ' ' . $user_add['detail'], 'cart_id' => $cartIds, 'total_num' => $totalNum, 'total_price' => $price, 'total_postage' => 0, 'coupon_id' => 0, 'coupon_price' => 0, 'pay_price' => 0, 'pay_postage' => 0, 'deduction_price' => 0, 'paid' => 1, 'pay_type' => 'integral', 'use_integral' => $luck['price'], 'gain_integral' => 0, 'white_integral' => 0, 'business_integral' => 0, 'remark' => '新人专享中奖商品', 'mark' => '', 'combination_id' => 0, 'pink_id' => 0, 'freight_price' => 0, 'cumulative' => 0, 'pay_time' => time(), 'add_time' => time(), 'unique' => md5(rand(1, 100000).$request->uid()), 'refund_price' => 0, 'cost' => $products['cost'], ]; $order = StoreOrder::create($orderInfo); $res4 = StoreOrderCartInfo::setCartInfo($order['id'], $cartInfo); $res6 = StoreCart::where('id', 'IN', $cartIds)->update(['is_pay' => 1]); $res2 = StoreOrderStatus::status($order['id'], 'cache_key_create_order', '订单生成'); $res3 = User::where('uid', $request->uid())->dec('white_integral', $luck['price'])->update(); UserBill::expend('新人专享抽奖', $request->uid(), 'white_integral', 'xr_white_integral', $luck['price'], '', $user['white_integral']-$luck['price'], '新人专享筹抽奖'); $res = LuckOrder::create([ 'luck_id' => 1, 'uid' => $request->uid(), 'price' => $luck['price'], 'status' => 1, 'state' => 1, ]); if ($order and $res4 and $res6 and $res2 and $res and $res3){ Db::commit(); return app('json')->success('中奖啦', ['product' => $products['id']]); }else{ Db::rollback(); return app('json')->success('抽奖失败'); } } return app('json')->success('抽奖失败'); } }