order("status asc,id asc")->paginate(['list_rows' => $limit, 'page' => $page])->each(function ($item) { if ($item["status"] == 0) {// 未支付结算时间计算 if (time() > $item["add_time"]) { $item["stat_time"] = time() - $item["add_time"]; } else { $item["stat_time"] = 0; } } else { $item["stat_time"] = 0; } // 添加时间 $item["add_times"] = date("Y-m-d H:i", $item["add_time"]); if ($item["end_time"]) { $item["end_time"] = date("Y-m-d H:i", $item["end_time"]); } return $item; })->toArray(); return $order; } /** 买入和卖出 * @param $user 用户数据 * @param $user_id 用户id * @param int $type 0 卖出 1 买入 * @param int $qit_id // 卖出传买入的id * @param int $ming_id // 买入传 区块id * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function push_order($user,$user_id,$type=0,$qit_id=0,$ming_id=0) { // todo 未完成卖出订单时间控制, // 查看用户是否添加收账信息 $userMeesage=UserMessage::where(["user_id"=>$user_id])->find(); if (!$userMeesage){ json_result(400,"请完善收账信息"); } if ($type==0){// 直接卖出 更新原有数据 $where["id"]=$qit_id; $order=Order::where($where)->find(); if (!$order){ json_result(400,"买入订单id错误"); } // 查看矿区 $mining=Mining::where(["id"=>$order->mining_id])->find(); if ($user->ensure_money<$mining->ensure_money){ json_result(400,"保证金不足"); } if ($user->push_money<$order->number){ json_result(400,"可售额度不足"); } // 查看未完成订单 $where_status[]=["status","in",[0,1,2]]; $where_status[]=["push_user","=",$user_id]; $count_order=Order::where($where_status)->count(); // 查看该矿区交易次数 $order_frequency=OrderFrequency::where(["user_id"=>$user_id,"mining_id"=>$order->mining_id])->find(); if ($order_frequency){// 因为后台交易不加次数 $count_order=$order_frequency->push+$count_order; if ($count_order==5){ json_result(400,"每个区块只能卖出5次"); } } $update["push_user"]=$user_id; $update["status"]=1; $update["stat_time"]=time()+4*3600; Order::where($where)->update($update); }else{// 下单买入 $where_ming["id"]=$ming_id; $mining=Mining::where($where_ming)->find(); if (!$mining){ json_result(400,"交易区块id错误"); } // 查看未完成订单 $where_status[]=["status","in",[0,1,2]]; $where_status[]=["buy_user","=",$user_id]; $count_order=Order::where($where_status)->count(); // 查看该矿区交易次数 $order_frequency=OrderFrequency::where(["user_id"=>$user_id,"mining_id"=>$ming_id])->find(); if ($order_frequency){// 因为后台交易不加次数 $count_order=$order_frequency->buy+$count_order; if ($count_order==4){ json_result(400,"每个区块只能买入4次"); } } $uuid = Uuid::uuid4(time()); $order = $uuid->getHex(); $add["type"]=0; $add["buy_user"]=''; $add["push_user"]=$user_id; $add["number"]=$mining["num"]; $add["enlarge_quota"]=$mining["enlarge_quota"]; $add["order"]=$order; $add["mining_id"]=$ming_id; $add["status"]=0; $add["add_time"]=time(); $add["breach_money"]=$mining["breach_money"]; $add["out_game"]=$mining["out_game"]; Order::create($add); } json_result(200,"操作成功"); } }