123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- <?php
- namespace App\JsonRpc;
- use App\Model\Ad;
- use App\Model\AdPlace;
- use App\Model\Order;
- use App\Model\OrderAd;
- use App\Model\Website;
- use App\Tools\Result;
- use Hyperf\RpcServer\Annotation\RpcService;
- use Carbon\Carbon;
- use Hamcrest\Arrays\IsArray;
- use DateTime;
- use DateInterval;
- #[RpcService(name: "OrderService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
- class OrderService implements OrderServiceInterface
- {
- /**
- * 查询没有广告的广告位
- * @param
- * @return void
- */
- public function getAD(array $data): array
- {
- // $ads = [];
- // $orderads = [];
- $where = [
- 'ad_place.width' => $data['width'],
- 'ad_place.height' => $data['height']
- ];
- $start=Carbon::parse($data['starttime']);
- $end=Carbon::parse($data['endtime']);
- $status = [
- 0=>'1',
- 1=>'4',
- 2=>'6'
- ];
- $ads = Ad::where('fromtime','<=',$start)->where('totime','>=',$end)->select('pid')->get()->all();
- $orderads = OrderAd::where('fromtime','<=',$start)->where('totime','>=',$end)->whereIn('status',$status)->select('pid')->get()->all();
- $pids = array_merge($ads, $orderads);
- $ad_pids = array_unique($pids);
- // $ad_pid = [1,2,3];
- if(!empty($ad_pids)){
- $pid = [];
- foreach($ad_pids as $val){
- array_push($pid,$val['pid']);
- }
- $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id')->get()->all();
- // 符合用户条件的空广告位
- $website_name = Website::whereIn('id',$placeids)->get();
- if(!isset($data['website_id'])){
- $place_id = [];
- foreach($placeids as $val){
- array_push($place_id,$val['id']);
- }
- $rep = AdPlace::whereIn('ad_place.id',$place_id)
- ->leftJoin('website','ad_place.website_id','website.id')
- ->select('ad_place.*','website.website_name','website.id')
- ->selectSub('website.id', 'webid')
- ->selectSub('ad_place.id', 'pid')
- ->orderBy("website.id","asc")
- ->limit($data['pageSize'])
- ->offset(($data['page']-1)*$data['pageSize'])
- ->get();
- }else{
- }
-
-
- }else{
- $rep = AdPlace::where($where)
- ->leftJoin('website','ad_place.website_id','website.id')
- ->select('ad_place.*','website.website_name','website.id')
- ->selectSub('website.id', 'webid')
- ->selectSub('ad_place.id', 'pid')
- ->orderBy("website.id","asc")
- ->limit($data['pageSize'])
- ->offset(($data['page']-1)*$data['pageSize'])
- ->get();
- }
-
- $count = count($rep);
- $data = [
- 'rows'=>$rep->toArray(),
- 'count'=>$count
- ];
-
- if(empty($rep)){
- return Result::error("暂时没有符合您条件的广告位");
- }
- return Result::success($data);
- }
-
- /**
- * 添加广告订单
- * @param
- * @return void
- */
- public function addAD(array $data): array
- {
- date_default_timezone_set('Asia/Shanghai');
- $time = time();
- $timestamp = date('YmdHis',$time);
- $catetime = date('Y-m-d H:i:s',$time);
- $randomNumber = mt_rand(1000, 9999);
- $ordernum = $randomNumber . $timestamp; // 时间戳与随机数拼接
- // var_dump(($time));
- $order = [
- 'order_num' => $ordernum,
- 'sttime' => $data['starttime'],
- 'edtime' => $data['endtime'],
- 'user_id' => $data['user_id'],
- 'cttime' => $catetime,
- 'height' => $data['height'],
- 'width' => $data['width']
- ];
- $orderid = Order::insertGetId($order);
- $adplace = $data['pid'];
- if(is_array($data['pid'])){
- $adplace = AdPlace::whereIn('id',$data['pid'])->select('website_id','id')->get();
- foreach($adplace as $key => $ads){
- $order_ad[$key] = [
- 'order_id' => $orderid,
- 'order_num' => $ordernum,
- 'name' => $data['name'],
- 'fromtime' => $data['starttime'],
- 'totime' => $data['endtime'],
- 'image_src' => $data['imgsrc'],
- 'image_url' => $data['imgurl'],
- 'pid' => $ads['id'],
- 'website_id' => $ads['website_id']
- ];
- // $log = [
- // 'order_id' => $orderid,
- // 'user_id' => $data['user_id'],
- // 'pid' => $ads['id'],
- // 'website_id' => $ads['website_id'],
- // 'action' => '添加',
- // 'time' => $catetime
- // ];
- }
- }else{
-
- $order_ad = [
- 'order_id' => $orderid,
- 'order_num' => $ordernum,
- 'name' => $data['name'],
- 'website_id' => $adplace['website_id'],
- 'fromtime' => $data['starttime'],
- 'totime' => $data['endtime'],
- 'image_src' => $data['imgsrc'],
- 'image_url' => $data['imgurl'],
- 'pid' => $adplace
- ];
- // $log = [
- // 'order_id' => $orderid,
- // 'user_id' => $data['user_id'],
- // 'pid' => $ads['id'],
- // 'website_id' => $ads['website_id'],
- // 'action' => '添加',
- // 'time' => $catetime
- // ];
- }
- $orderad_id = OrderAd::insert($order_ad);
- // $log = AdLog::insert($log);
- if(empty($orderid) || !$orderad_id){
- return Result::error("添加失败");
- }
- $result = [
- 'order_id' => $orderid,
- 'orderad_id' => $orderad_id,
- 'name' => $data['name'],
- 'name' => $data['name'],
- ];
- return Result::success($result);
- }
- /**
- * 获取订单列表
- * @param
- * @return void
- */
- public function getOrderList(array $data): array
- {
- $where = [
- 'user_id' => $data['user_id'],
- 'user_del' => 2
- ];
- if(isset($data['status'])){
- $where['status'] = $data['status'];
- }
- $orders = Order::where($where)
- ->orderBy("id","asc")
- ->limit($data['pageSize'])
- ->offset(($data['page']-1)*$data['pageSize'])
- ->get();
-
- if(empty($orders)){
- return Result::error("您暂时还没有下单");
- }else{
- foreach($orders as $key => $order){
- $startTime = strtotime($order['sttime']);
- $endTime = strtotime($order['edtime']);
- $days = ($endTime - $startTime)/(24 * 60 * 60);
- $orders[$key]['days'] = $days;
- }
- $count = count($orders);
- $data = [
- 'rows'=>$orders->toArray(),
- 'count'=>$count
- ];
- }
- return Result::success($data);
- }
- /**
- * 获取订单详情
- * @param
- * @return void
- */
- public function getOrderDetail(array $data): array
- {
- $order = Order::where('id',$data['order_id'])->first();
- $startTime = strtotime($order['sttime']);
- $endTime = strtotime($order['edtime']);
- $days = ($endTime - $startTime)/(24 * 60 * 60);
- $order['days'] = $days;
- $orderads = OrderAd::where('order_ad.order_id',$data['order_id'])
- ->leftJoin('website','order_ad.website_id','website.id')
- ->select('order_ad.*','website.website_name','website.id')
- ->selectSub('website.id', 'webid')
- ->selectSub('order_ad.id', 'oid')
- ->orderBy("website.id","asc")
- ->limit($data['pageSize'])
- ->offset(($data['page']-1)*$data['pageSize'])
- ->get();
- if(empty($order)){
- return Result::error("订单id错误");
- }
- $result = [
- 'order' => $order,
- 'orderads' => $orderads
- ];
- return Result::success($result);
- }
- /**
- * 撤回订单
- * @param
- * @return void
- */
- public function cancelOrder(array $data): array
- {
- date_default_timezone_set('Asia/Shanghai');
- $time = time();
- $timestamp = date('YmdHis',$time);
- $time = ['edtime','>=',$timestamp];
- $order = Order::where('id',$data['order_id'])->where('status',6)->where('edtime','<=',$timestamp)->update(['status' => 3]);
- $ads = OrderAd::where('order_id',$data['order_id'])->where('status',6)->where('totime','<=',$timestamp)->update(['status' => 3]);
- if(!$order || !$ads){
- return Result::error("订单id错误");
- }
- $result = [
- 'order' => $order,
- 'ads' => $ads
- ];
- return Result::success($result);
- }
- /**
- * 删除订单
- * @param
- * @return void
- */
- public function delOrderAD(array $data): array
- {
- $data['status'] = [
- 0 => 2,
- 1 => 3
- ];
- date_default_timezone_set('Asia/Shanghai');
- $time = time();
- $timestamp = date('YmdHis',$time);
- $where = [
- ['user_id','=',$data['user_id']],
- ['id','=',$data['order_id']]
- ];
- $time = [['edtime','<=',$timestamp]];
- $order = Order::where($where)->where($time)->update(['user_del' => 1]);
- if(empty($order)){
- $order = Order::where($where)->whereIn('status',$data['status'])->update(['user_del' => 1]);
- }
- //
- if($order == 0){
- return Result::error("订单id错误");
- }
- return Result::success($order);
- }
- }
|