|
@@ -7,12 +7,9 @@ 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;
|
|
|
-
|
|
|
+use Hyperf\DbConnection\Db;
|
|
|
+use Hyperf\RpcServer\Annotation\RpcService;
|
|
|
|
|
|
#[RpcService(name: "OrderService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
|
|
|
class OrderService implements OrderServiceInterface
|
|
@@ -26,248 +23,545 @@ class OrderService implements OrderServiceInterface
|
|
|
public function getAD(array $data): array
|
|
|
{
|
|
|
$where = [
|
|
|
+
|
|
|
'ad_place.width' => $data['width'],
|
|
|
- 'ad_place.height' => $data['height']
|
|
|
+ 'ad_place.height' => $data['height'],
|
|
|
];
|
|
|
- $start=Carbon::parse($data['starttime']);
|
|
|
- $end=Carbon::parse($data['endtime']);
|
|
|
+ $start = Carbon::parse($data['starttime']);
|
|
|
+ $end = Carbon::parse($data['endtime']);
|
|
|
$status = [
|
|
|
- 0=>'1',
|
|
|
- 1=>'4',
|
|
|
- 2=>'6'
|
|
|
+ 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();
|
|
|
+ $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)){
|
|
|
+ // 所有与用户有时间冲突的广告位
|
|
|
+ if (!empty($ad_pids)) {
|
|
|
$pid = [];
|
|
|
- foreach($ad_pids as $val){
|
|
|
- array_push($pid,$val['pid']);
|
|
|
+ foreach ($ad_pids as $val) {
|
|
|
+ array_push($pid, $val['pid']);
|
|
|
}
|
|
|
- $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id')->get()->all();
|
|
|
+ $placeids = AdPlace::whereNotIn('id', $pid)->where($where)->select('id')->get()->all();
|
|
|
+ //所有去掉与用户时间冲突的广告并且符合图片尺寸的广告位
|
|
|
// 符合用户条件的空广告位
|
|
|
$place_id = [];
|
|
|
- foreach($placeids as $val){
|
|
|
- array_push($place_id,$val['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{
|
|
|
+ $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 {
|
|
|
$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();
|
|
|
+ ->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();
|
|
|
}
|
|
|
- $startTime = strtotime($data['starttime']);
|
|
|
- $endTime = strtotime($data['endtime']);
|
|
|
- $time = ($endTime - $startTime)/(24 * 60 * 60);
|
|
|
+ $startTime = strtotime($data['starttime']);
|
|
|
+ $endTime = strtotime($data['endtime']);
|
|
|
+ $time = ($endTime - $startTime) / (24 * 60 * 60);
|
|
|
$roundedValue = round($time, 2);
|
|
|
- $days = number_format($roundedValue, 2, '.', '');
|
|
|
+ $days = number_format($roundedValue, 2, '.', '');
|
|
|
$count = count($rep);
|
|
|
$data = [
|
|
|
- 'rows'=>$rep->toArray(),
|
|
|
- 'count'=>$count,
|
|
|
- 'days' => $days
|
|
|
+ 'rows' => $rep->toArray(),
|
|
|
+ 'count' => $count,
|
|
|
+ 'days' => $days,
|
|
|
];
|
|
|
-
|
|
|
- if(empty($rep)){
|
|
|
+
|
|
|
+ if (empty($data['rows'])) {
|
|
|
return Result::error("暂时没有符合您条件的广告位");
|
|
|
+
|
|
|
}
|
|
|
return Result::success($data);
|
|
|
}
|
|
|
/**
|
|
|
+ * 添加订单
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function addOrder(array $data): array
|
|
|
+ {
|
|
|
+ $ads = Ad::whereIn($data['id'])
|
|
|
+ ->leftJoin('ad_place', 'ad.pid', 'ad_place.id')
|
|
|
+ ->leftJoin("article_data", "article.id", "article_data.article_id")
|
|
|
+ ->select("ad_place.*", "ad.*")
|
|
|
+ ->orderBy("ad.id", "desc")
|
|
|
+ ->limit($data['pageSize'])
|
|
|
+ ->offset(($data['page'] - 1) * $data['pageSize'])->get();
|
|
|
+ $count = Ad::whereIn($data['id'])->count();
|
|
|
+ $data = [
|
|
|
+ 'rows' => $ads->toArray(),
|
|
|
+ 'count' => $count,
|
|
|
+ ];
|
|
|
+ if (empty($rep)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+ return Result::success($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单列表
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function getOrderListAdmin(array $data): array
|
|
|
+ {
|
|
|
+ // 获取分页参数,默认每页 10 条记录
|
|
|
+ $page = isset($data['page']) ? (int) $data['page'] : 1;
|
|
|
+ $perPage = isset($data['pagesize']) ? (int) $data['pagesize'] : 10;
|
|
|
+
|
|
|
+ // 构建查询条件
|
|
|
+ $where = [
|
|
|
+ 'order.status' => $data['status'], // 明确指定 order 表的 status 列
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 添加订单号查询条件
|
|
|
+ if (!empty($data['order_num'])) {
|
|
|
+ $where['order.order_num'] = $data['order_num']; // 明确指定 order 表的 order_num 列
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理时间范围查询
|
|
|
+ $start = $data['sttime'];
|
|
|
+ $end = $data['edtime'];
|
|
|
+
|
|
|
+ // 查询数据并分页
|
|
|
+ $query = Order::where($where)
|
|
|
+ ->when(!empty($start) && !empty($end), function ($q) use ($start, $end) {
|
|
|
+ $q->whereBetween('order.fromtime', [$start, $end]); // 明确指定 order 表的 fromtime 列
|
|
|
+ })
|
|
|
+ ->when(!empty($start), function ($q) use ($start) {
|
|
|
+ $q->where('order.fromtime', '>=', $start); // 明确指定 order 表的 fromtime 列
|
|
|
+ })
|
|
|
+ ->when(!empty($end), function ($q) use ($end) {
|
|
|
+ $q->where('order.totime', '<=', $end); // 明确指定 order 表的 totime 列
|
|
|
+ })
|
|
|
+ ->leftJoin('user as admin_user', 'order.admin_user_id', '=', 'admin_user.id')
|
|
|
+ ->leftJoin('user as user', 'order.user_id', '=', 'user.id')
|
|
|
+ ->select(
|
|
|
+ 'order.*',
|
|
|
+ 'admin_user.user_name as admin_user_name',
|
|
|
+ 'user.user_name as user_name'
|
|
|
+ )
|
|
|
+ ->orderBy('order.id');
|
|
|
+
|
|
|
+ // 执行分页查询
|
|
|
+ $result = $query->paginate($perPage, ['*'], 'page', $page);
|
|
|
+
|
|
|
+ // 返回分页结果
|
|
|
+ return Result::success([
|
|
|
+ 'count' => $result->total(),
|
|
|
+ 'current_page' => $result->currentPage(),
|
|
|
+ 'last_page' => $result->lastPage(),
|
|
|
+ 'pagesize' => $result->perPage(),
|
|
|
+ 'rows' => $result->items(),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取订单详情
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function getOrderDetailAdmin(array $data): array
|
|
|
+ {
|
|
|
+ $order = Order::where('order.id', $data['id'])
|
|
|
+ ->leftJoin('user as admin_user', 'order.admin_user_id', '=', 'admin_user.id')
|
|
|
+ ->leftJoin('user as user', 'order.user_id', '=', 'user.id')
|
|
|
+ ->select(
|
|
|
+ 'order.*',
|
|
|
+ 'admin_user.user_name as admin_user_name',
|
|
|
+ 'user.user_name as user_name'
|
|
|
+ )->first();
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ $pid = $order['id'];
|
|
|
+ $ad = OrderAd::where('order_id', $pid)->get();
|
|
|
+ $order['ad'] = $ad;
|
|
|
+ return Result::success($order);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 修改订单价格
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function editPriceOrderAdmin(array $data): array
|
|
|
+ {
|
|
|
+ $order = Order::where('id', $data['id'])->first();
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+ $order->price = $data['price'];
|
|
|
+ $order->save();
|
|
|
+ return Result::success($order);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ *拒绝订单
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function rejectOrderAdmin(array $data): array
|
|
|
+ {
|
|
|
+ $order = Order::where('id', $data['id'])->first();
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ $order->status = 2; //订单状态:1:通过;2:驳回;3:撤回;4:修改;5:过期;6:待审核;7:结束
|
|
|
+ $order->ad_status = 2;
|
|
|
+ $order->reason = $data['reason'];
|
|
|
+ $order->bhtime = date('Y-m-d H:i:s');
|
|
|
+ $order->save();
|
|
|
+
|
|
|
+ OrderAd::where('order_id', $data['id'])
|
|
|
+ ->update(['status' => 2]);
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error("操作失败");
|
|
|
+ }
|
|
|
+ return Result::success($order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结束订单
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function endOrderAdmin(array $data): array
|
|
|
+ {
|
|
|
+ $order = Order::where('id', $data['id'])->first();
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ $order->status = 7;
|
|
|
+ $order->jstime = date('Y-m-d H:i:s');
|
|
|
+ $order->save();
|
|
|
+
|
|
|
+ // 获取 order_ad 表中的记录
|
|
|
+ $orderAds = OrderAd::where('order_id', $data['id'])
|
|
|
+ ->update(['status' => 7]);
|
|
|
+
|
|
|
+ // 在ad表中删除相同pid的数据
|
|
|
+ Ad::where('order_id', $data['id'])->delete();
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error("操作失败" . $e->getMessage());
|
|
|
+ }
|
|
|
+ return Result::success($order);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除订单
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function delOrderAdmin(array $data): array
|
|
|
+ {
|
|
|
+ // 获取订单信息
|
|
|
+ $order = Order::where('id', $data['id'])->first();
|
|
|
+
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ // 获取 order_ad 表中的记录
|
|
|
+ OrderAd::where('order_id', $data['id'])->delete();
|
|
|
+ // 删除 ad 表中的记录
|
|
|
+ Ad::where('order_id', $data['id'])->delete();
|
|
|
+ // 提交事务
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ // 回滚事务
|
|
|
+ Db::rollBack();
|
|
|
+ // 返回错误信息
|
|
|
+ return Result::error($e->getMessage());
|
|
|
+ }
|
|
|
+ // 返回成功信息
|
|
|
+ return Result::success("删除成功");
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 审核订单
|
|
|
+ * @param
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function applyOrderStatusAdmin(array $data): array
|
|
|
+ {
|
|
|
+ $order = Order::where('id', $data['id'])
|
|
|
+ ->where('status', 6)
|
|
|
+ ->first();
|
|
|
+ if (empty($order)) {
|
|
|
+ return Result::error("没有信息数据");
|
|
|
+ }
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ $order->status = 1;
|
|
|
+ //判断是否在周期范围内
|
|
|
+ $ad_status = 8; // 待生效
|
|
|
+ if ($order->starttime < date('Y-m-d H:i:s') && date('Y-m-d H:i:s') < $order->endtime) {
|
|
|
+ // 条件满足时的逻辑
|
|
|
+ $ad_status = 1;
|
|
|
+ }
|
|
|
+ $order->ad_status = 1;
|
|
|
+ $order->shtime = date('Y-m-d H:i:s');
|
|
|
+ $order->save();
|
|
|
+ // 批量更新 order_ad 表中的状态
|
|
|
+ OrderAd::where('order_id', $data['id'])
|
|
|
+ ->where('status', 6)
|
|
|
+ ->update(['status' => 1]);
|
|
|
+
|
|
|
+ //判断的当前时间是否在订单的开始时间之后,并且小于等于订单的结束时间
|
|
|
+ if (time() >= strtotime($order->sttime) && time() < strtotime($order->edtime)) {
|
|
|
+ $ad_status = 1; //审核生效
|
|
|
+ } else {
|
|
|
+ $ad_status = 2; //审核
|
|
|
+ }
|
|
|
+ $ads = [];
|
|
|
+ $orderAds = OrderAd::where('order_id', $data['id'])->get();
|
|
|
+ foreach ($orderAds as $orderAd) {
|
|
|
+ $ads[] = [
|
|
|
+ 'name' => $orderAd->name,
|
|
|
+ 'pid' => $orderAd->pid,
|
|
|
+ 'areaid' => $orderAd->areaid,
|
|
|
+ 'amount' => $orderAd->amount,
|
|
|
+ 'introduce' => $orderAd->introduce,
|
|
|
+ 'hits' => $orderAd->hits,
|
|
|
+ 'admin_user_id' => $orderAd->admin_user_id,
|
|
|
+ 'fromtime' => $orderAd->fromtime,
|
|
|
+ 'totime' => $orderAd->totime,
|
|
|
+ 'text_name' => $orderAd->text_name,
|
|
|
+ 'text_url' => $orderAd->text_url,
|
|
|
+ 'text_title' => $orderAd->text_title,
|
|
|
+ 'image_src' => $orderAd->image_src,
|
|
|
+ 'image_url' => $orderAd->image_url,
|
|
|
+ 'image_alt' => $orderAd->image_alt,
|
|
|
+ 'video_src' => $orderAd->video_src,
|
|
|
+ 'video_url' => $orderAd->video_url,
|
|
|
+ 'video_auto' => $orderAd->video_auto,
|
|
|
+ 'video_loop' => $orderAd->video_loop,
|
|
|
+ 'status' => $ad_status,
|
|
|
+ 'order_id' => $orderAd->order_id,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ Ad::insert($ads);
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error($e->getMessage());
|
|
|
+ }
|
|
|
+ return Result::success($order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
* 根据用户条件及网站搜索没有广告的广告位
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function getWebsiteAd(array $data): array
|
|
|
{
|
|
|
$where = [
|
|
|
'ad_place.width' => $data['width'],
|
|
|
- 'ad_place.height' => $data['height']
|
|
|
+ 'ad_place.height' => $data['height'],
|
|
|
];
|
|
|
- $start=Carbon::parse($data['starttime']);
|
|
|
- $end=Carbon::parse($data['endtime']);
|
|
|
+ $start = Carbon::parse($data['starttime']);
|
|
|
+ $end = Carbon::parse($data['endtime']);
|
|
|
$status = [
|
|
|
- 0=>'1',
|
|
|
- 1=>'4',
|
|
|
- 2=>'6'
|
|
|
+ 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();
|
|
|
+ //订单状态:1:通过;2:驳回;3:撤回;4:修改;5:过期;6:待审核;7:结束
|
|
|
+ $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);
|
|
|
- if(!empty($ad_pids)){
|
|
|
+ //$ad_pids=所有与用户提交的时间有冲突的广告位pid
|
|
|
+ if (!empty($ad_pids)) {
|
|
|
$pid = [];
|
|
|
- foreach($ad_pids as $val){
|
|
|
- array_push($pid,$val['pid']);
|
|
|
+ foreach ($ad_pids as $val) {
|
|
|
+ array_push($pid, $val['pid']);
|
|
|
}
|
|
|
- $placeids = AdPlace::whereNotIn('id',$pid)->where($where)->select('id','website_id')->get()->all();
|
|
|
-
|
|
|
- if(!isset($data['website_id'])){
|
|
|
+ $placeids = AdPlace::whereNotIn('id', $pid)->where($where)->select('id', 'website_id')->get()->all();
|
|
|
+ //去掉时间冲突并且符合图片尺寸的广告位
|
|
|
+ if (!isset($data['website_id'])) {
|
|
|
$website_id = [];
|
|
|
- foreach($placeids as $v){
|
|
|
- array_push($website_id,$v['website_id']);
|
|
|
+ foreach ($placeids as $v) {
|
|
|
+ array_push($website_id, $v['website_id']);
|
|
|
}
|
|
|
- $result = Website::whereIn('id',$website_id)->get();
|
|
|
- }else{
|
|
|
+ $rep = Website::whereIn('id', $website_id)->get();
|
|
|
+ //若不存在网站id参数直接返回符合条件的广告位相关联的网站名称
|
|
|
+ } else {
|
|
|
$place_id = [];
|
|
|
- foreach($placeids as $val){
|
|
|
- array_push($place_id,$val['id']);
|
|
|
+ foreach ($placeids as $val) {
|
|
|
+ array_push($place_id, $val['id']);
|
|
|
}
|
|
|
$rep = AdPlace::where($where)
|
|
|
- ->whereIn('ad_place.id',$place_id)
|
|
|
- ->where('ad_place.website_id',$data['website_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();
|
|
|
- $count = count($rep);
|
|
|
- $result = [
|
|
|
- 'rows'=>$rep->toArray(),
|
|
|
- 'count'=>$count
|
|
|
- ];
|
|
|
+ ->whereIn('ad_place.id', $place_id)
|
|
|
+ ->where('ad_place.website_id', $data['website_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();
|
|
|
+ //若存在网站id,关联查询是需要添加website_id条件查询
|
|
|
}
|
|
|
- }else{
|
|
|
- if(isset($data['website_id'])){
|
|
|
+ } else {
|
|
|
+ //若不存在有时间冲突的广告位则所有符合图片尺寸的广告位皆可以使用,只需要判断是否存在网站id参数即可
|
|
|
+ if (isset($data['website_id'])) {
|
|
|
$rep = AdPlace::where($where)
|
|
|
- ->where('ad_place.website_id',$data['website_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();
|
|
|
- $count = count($rep);
|
|
|
- $result = [
|
|
|
- 'rows'=>$rep->toArray(),
|
|
|
- 'count'=>$count
|
|
|
- ];
|
|
|
- }else{
|
|
|
+ ->where('ad_place.website_id', $data['website_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 {
|
|
|
$place_all = AdPlace::where($where)->select('website_id')->get()->all();
|
|
|
$place_allads = [];
|
|
|
- foreach($place_all as $v){
|
|
|
- array_push($place_allads,$v['website_id']);
|
|
|
+ foreach ($place_all as $v) {
|
|
|
+ array_push($place_allads, $v['website_id']);
|
|
|
}
|
|
|
- $result = Website::whereIn('id',$place_allads)->get();
|
|
|
+ $rep = Website::whereIn('id', $place_allads)->get();
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- if(empty($data)){
|
|
|
+ if (empty($rep)) {
|
|
|
return Result::error("暂时没有符合您条件的广告位");
|
|
|
}
|
|
|
- $startTime = strtotime($data['starttime']);
|
|
|
- $endTime = strtotime($data['endtime']);
|
|
|
- $time = ($endTime - $startTime)/(24 * 60 * 60);
|
|
|
+
|
|
|
+ $startTime = strtotime($data['starttime']);
|
|
|
+ $endTime = strtotime($data['endtime']);
|
|
|
+ $time = ($endTime - $startTime) / (24 * 60 * 60);
|
|
|
$roundedValue = round($time, 2);
|
|
|
- $days = number_format($roundedValue, 2, '.', '');
|
|
|
+ $days = number_format($roundedValue, 2, '.', '');
|
|
|
$count = count($rep);
|
|
|
$result['days'] = $days;
|
|
|
+ $result = [
|
|
|
+ 'rows' => $rep->toArray(),
|
|
|
+ 'count' => $count,
|
|
|
+ ];
|
|
|
return Result::success($result);
|
|
|
- }
|
|
|
- /**
|
|
|
+ }
|
|
|
+ /**
|
|
|
* 添加广告订单
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function addAD(array $data): array
|
|
|
- {
|
|
|
+ {
|
|
|
date_default_timezone_set('Asia/Shanghai');
|
|
|
- $time = time();
|
|
|
- $startTime = strtotime($data['starttime']);
|
|
|
- $endTime = strtotime($data['endtime']);
|
|
|
- $con_time = ($endTime - $startTime)/(24 * 60 * 60);
|
|
|
+ $time = time();
|
|
|
+ $startTime = strtotime($data['starttime']);
|
|
|
+ $endTime = strtotime($data['endtime']);
|
|
|
+ $con_time = ($endTime - $startTime) / (24 * 60 * 60);
|
|
|
$roundedValue = round($con_time, 2);
|
|
|
- $days = number_format($roundedValue, 2, '.', '');
|
|
|
- $timestamp = date('YmdHis',$time);
|
|
|
- $catetime = date('Y-m-d H:i:s',$time);
|
|
|
- $randomNumber = mt_rand(1000, 9999);
|
|
|
+ $days = number_format($roundedValue, 2, '.', '');
|
|
|
+ $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'],
|
|
|
- 'days' => $days
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ $order = [
|
|
|
+ 'order_num' => $ordernum,
|
|
|
+ 'sttime' => $data['starttime'],
|
|
|
+ 'edtime' => $data['endtime'],
|
|
|
+ 'user_id' => $data['user_id'],
|
|
|
+ 'cttime' => $catetime,
|
|
|
+ 'height' => $data['height'],
|
|
|
+ 'width' => $data['width'],
|
|
|
+ 'days' => $days,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s', time()),
|
|
|
+ 'updated_at' => date('Y-m-d H:i:s', time()),
|
|
|
|
|
|
- ];
|
|
|
- $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] = [
|
|
|
+ ];
|
|
|
+ $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' => $ads['id'],
|
|
|
- 'website_id' => $ads['website_id']
|
|
|
- ];
|
|
|
+ 'pid' => $adplace,
|
|
|
+ 'created_at' => date('Y-m-d H:i:s', time()),
|
|
|
+ 'updated_at' => date('Y-m-d H:i:s', time()),
|
|
|
+ ];
|
|
|
// $log = [
|
|
|
// 'order_id' => $orderid,
|
|
|
// 'user_id' => $data['user_id'],
|
|
|
- // 'pid' => $ads['id'],
|
|
|
+ // 'pid' => $adplace,
|
|
|
// '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' => $adplace,
|
|
|
- // 'website_id' => $ads['website_id'],
|
|
|
- // 'action' => '添加',
|
|
|
- // 'time' => $catetime
|
|
|
- // ];
|
|
|
+ $orderad_id = OrderAd::insert($order_ad);
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error($e->getMessage());
|
|
|
}
|
|
|
- $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,
|
|
@@ -280,29 +574,38 @@ class OrderService implements OrderServiceInterface
|
|
|
* 获取订单列表
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function getOrderList(array $data): array
|
|
|
{
|
|
|
$where = [
|
|
|
'user_id' => $data['user_id'],
|
|
|
- 'user_del' => 2
|
|
|
+ 'user_del' => 2,
|
|
|
];
|
|
|
- if(isset($data['status'])){
|
|
|
+ if (isset($data['status'])) {
|
|
|
$where['status'] = $data['status'];
|
|
|
}
|
|
|
- $orders = Order::where($where)
|
|
|
- ->orderBy("id","asc")
|
|
|
+ $orders = Order::where($where)
|
|
|
->limit($data['pageSize'])
|
|
|
- ->offset(($data['page']-1)*$data['pageSize'])
|
|
|
- ->get();
|
|
|
-
|
|
|
- if(empty($orders)){
|
|
|
+ ->offset(($data['page'] - 1) * $data['pageSize'])
|
|
|
+ ->get()->all();
|
|
|
+ //订单状态:1:通过;2:驳回;3:撤回;4:修改;5:过期;6:待审核;7:结束
|
|
|
+ $status = [1,4,5,7];
|
|
|
+ $count['all'] = Order::where('user_id',$data['user_id'])->where('user_del','2')->count();
|
|
|
+ $count['wait'] = Order::where('user_id',$data['user_id'])->where('user_del','2')->where('status',6)->count();
|
|
|
+ $count['pass'] = Order::where('user_id',$data['user_id'])->where('user_del','2')->whereIn('status',$status)->whereNull('bhtime')->count();
|
|
|
+ $count['return'] = Order::where('user_id',$data['user_id'])->where('user_del','2')->whereNotNull('bhtime')->count();
|
|
|
+ foreach($orders as $key => $val){
|
|
|
+ $adsnum = OrderAd::where('order_id',$val['id'])->count();
|
|
|
+ $rep[$key] = $val;
|
|
|
+ $rep[$key]['num'] = $adsnum;
|
|
|
+ }
|
|
|
+ if (empty($rep)) {
|
|
|
return Result::error("您暂时还没有下单");
|
|
|
- }else{
|
|
|
- $count = count($orders);
|
|
|
+ } else {
|
|
|
+
|
|
|
$data = [
|
|
|
- 'rows'=>$orders->toArray(),
|
|
|
- 'count'=>$count
|
|
|
+ 'rows' => $rep,
|
|
|
+ 'count' => $count,
|
|
|
];
|
|
|
}
|
|
|
return Result::success($data);
|
|
@@ -311,25 +614,30 @@ class OrderService implements OrderServiceInterface
|
|
|
* 获取订单详情
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function getOrderDetail(array $data): array
|
|
|
- {
|
|
|
- $order = Order::where('id',$data['order_id'])->first();
|
|
|
- $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)){
|
|
|
+ {
|
|
|
+ $order = Order::where('id', $data['order_id'])->first();
|
|
|
+ $orderads = OrderAd::where('order_ad.order_id', $data['order_id'])
|
|
|
+ ->leftJoin('website', 'order_ad.website_id', 'website.id')
|
|
|
+ ->leftJoin('ad_place','order_ad.pid','ad_place.id')
|
|
|
+ ->select('order_ad.*', 'website.website_name', 'website.id','ad_place.name')
|
|
|
+ ->selectSub('website.id', 'webid')
|
|
|
+ ->selectSub('order_ad.id', 'oid')
|
|
|
+ ->selectSub('order_ad.name','adname')
|
|
|
+ ->selectSub('ad_place.name','apname')
|
|
|
+ ->orderBy("website.id", "asc")
|
|
|
+ ->limit($data['pageSize'])
|
|
|
+ ->offset(($data['page'] - 1) * $data['pageSize'])
|
|
|
+ ->get();
|
|
|
+ if (empty($order)) {
|
|
|
return Result::error("订单id错误");
|
|
|
}
|
|
|
+ $count = OrderAd::where('order_ad.order_id', $data['order_id'])->count();
|
|
|
$result = [
|
|
|
'order' => $order,
|
|
|
- 'orderads' => $orderads
|
|
|
+ 'orderads' => $orderads,
|
|
|
+ 'count' => $count
|
|
|
];
|
|
|
return Result::success($result);
|
|
|
}
|
|
@@ -337,52 +645,60 @@ class OrderService implements OrderServiceInterface
|
|
|
* 撤回订单
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function cancelOrder(array $data): array
|
|
|
- {
|
|
|
+ {
|
|
|
date_default_timezone_set('Asia/Shanghai');
|
|
|
- $time = time();
|
|
|
- $timestamp = date('YmdHis',$time);
|
|
|
- $order = Order::where('id',$data['order_id'])->where('status',6)->where('edtime','>=',$timestamp)->update(['status' => 3,'ad_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错误");
|
|
|
+ $time = time();
|
|
|
+ $timestamp = date('YmdHis', $time);
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ $order = Order::where('id', $data['order_id'])->where('status', 6)->where('sttime', '>=', $timestamp)->update(['status' => 3, 'ad_status' => '3']);
|
|
|
+ $ads = OrderAd::where('order_id', $data['order_id'])->where('status', 6)->where('fromtime', '>=', $timestamp)->update(['status' => 3]);
|
|
|
+ Db::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error($e->getMessage());
|
|
|
}
|
|
|
$result = [
|
|
|
'order' => $order,
|
|
|
- 'ads' => $ads
|
|
|
+ 'ads' => $ads,
|
|
|
];
|
|
|
+ if($order==0){
|
|
|
+ return Result::error("此订单不可撤回");
|
|
|
+ }
|
|
|
return Result::success($result);
|
|
|
}
|
|
|
- /**
|
|
|
+ /**
|
|
|
* 删除订单
|
|
|
* @param
|
|
|
* @return void
|
|
|
- */
|
|
|
+ */
|
|
|
public function delOrderAD(array $data): array
|
|
|
- {
|
|
|
+ {
|
|
|
$data['status'] = [
|
|
|
0 => 2,
|
|
|
1 => 3,
|
|
|
2 => 5,
|
|
|
- 3 => 7
|
|
|
+ 3 => 7,
|
|
|
];
|
|
|
+ //1:通过;2:驳回;3:撤回;4:修改;5:过期;6:待审核;7:结束;
|
|
|
date_default_timezone_set('Asia/Shanghai');
|
|
|
- $time = time();
|
|
|
- $timestamp = date('YmdHis',$time);
|
|
|
+ $time = time();
|
|
|
+ $timestamp = date('YmdHis', $time);
|
|
|
$where = [
|
|
|
- ['user_id','=',$data['user_id']],
|
|
|
- ['id','=',$data['order_id']]
|
|
|
+ ['id', '=', $data['id']],
|
|
|
];
|
|
|
- $time = [['edtime','<=',$timestamp]];
|
|
|
+ $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 (empty($order)) {
|
|
|
+ $order = Order::where($where)->whereIn('status', $data['status'])->update(['user_del' => 1]);
|
|
|
}
|
|
|
- //
|
|
|
- if($order == 0){
|
|
|
- return Result::error("订单id错误");
|
|
|
+ if ($order == 0) {
|
|
|
+ return Result::error("此订单不可删除");
|
|
|
}
|
|
|
return Result::success($order);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|