adverService = $adverService; } /* * 对赌广告审核列表 * wsl * 2019-07-24 * */ public function guaranteeAuditList(Request $request) { } /** * 广告列表 * @param Request $request * @description * 查询:广告标题、广告主姓名、电话 * 显示:发布者ID、广告标题、姓名、电话、企业名、所在行业、投放城区、费用、当时单价、总展示量、剩余量、投放时间段 * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:31:29 * @modify 确认已区分系统管理员与地区管理员权限 */ public function index(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'title' => 'string', 'nick_name' => 'string', //'mobile' => 'integer' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $fields=[ 'main.id', 'main.uid', 'main.title', 'u.real_name', 'u.nick_name', 'u.mobile', 'main.total_price', 'main.company_name', 'main.company_industry', 'main.province', 'main.city', 'main.district', 'main.price', 'main.total_num', 'main.residue_num', 'main.start_time', 'main.end_time', 'main.created_at', 'main.status', 'main.redirect', 'main.industry' ]; $user = \DB::table('advertising as main') ->join('user as u', 'u.id', '=', 'main.uid') ->orderByDesc('id'); //审核状态 if (!empty($param['status'])) { if ($param['status'] == 9) { $user->where('main.end_time', '<', date('Y-m-d H:i:s'))->where('main.status', '=', 3); } elseif ($param['status'] == 4 || $param['status'] == 5) { $user->where('main.status', '=', $param['status']); } elseif(in_array($param['status'],[100,101,102])){ //特意留空 }else $user->where('main.status', '=', $param['status'])->where('main.end_time', '>', date('Y-m-d H:i:s')); } else { $user->whereIn('main.status', [3, 4, 5, 9]); } if (!empty($param['guarantee']) && $param['guarantee'] == 1) { $user->where('main.guarantee', '=', 1); $user->whereIn('main.bet_status', [0,3, 5, 6]); $user->leftJoin('advertising_bet as ab','main.id','=','ab.advertising_id'); $betfields=['is_win']; $fields=array_merge($fields,$betfields); if(!empty($param['status']) && in_array($param['status'],[100,101,102])){ if($param['status']==100) $is_win=0; if($param['status']==101) $is_win=2; if($param['status']==102) $is_win=1; $user->where('ab.is_win',$is_win); } } else { $user->where('main.guarantee', '=', 0); } $user->select($fields); //省市区查询 if (!empty($param['province'])) { $user->where('main.province', '=', $param['province']); } if (!empty($param['city'])) { $user->where('main.city', '=', $param['city']); } if (!empty($param['district'])) { $user->where('main.district', '=', $param['district']); } //行业查询 if (!empty($param['industry'])) { $user->where('main.industry', '=', $param['industry']); } //额度以上查询 if (!empty($param['total_price'])) { $user->where('main.total_price', '>=', $param['total_price']); } // 如果是地区管理员,则不显示同等级的用户信息 if (\Auth::user()->is_super == 3) { $user = $user->whereIn('u.id', getIds()); } //管理员查看对应的代理 $district = AdminArea::getAdminArea(); if (!empty($district)) { if (!empty($district['city'])) { $user->where('main.city', '=', $district['city']); } else { $user->where('main.district', '=', $district['district']); } } // 广告标题 if (!empty($param['title'])) { $user->where('main.title', 'like', "%{$param['title']}%"); } // 广告主姓名 if (!empty($param['real_name'])) { $user->where('u.real_name', 'like', "%{$param['real_name']}%"); } // 手机号码 if (!empty($param['mobile'])) { $user->where('u.mobile', 'like', "%{$param['mobile']}%"); } //echo $user->toSql();exit; $res = $user->paginate(perPage()); if ($res->isNotEmpty()) { collect($res->items())->each(function ($item, $key) { $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district)); $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? ''; if ($item->industry != 'all') { $industry = Industry::whereIn('id', explode(',', $item->industry))->get(); foreach ($industry as $ind) { $arr[] = $ind['content']; } $item->industryArr = $arr; } }); } return showJsonSucc(1001, $res); } /** * 广告列表-查看 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:31:18 * @modify 确认已区分系统管理员与地区管理员权限 */ public function show(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $res = Advertising::whereId($param['id']) ->first(); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($res->uid, getIds())) { return showJsonErr('抱歉,该用户信息您没有权限查看'); } /*if(!empty($res)&& $res->industry!='all'){ $industry=explode(',',$res->industry); $industryarr=Industry::whereIn('id',$industry)->select('content')->get(); $arr=[]; if(!empty($industryarr)){ foreach ($industryarr as $item){ $arr[]=$item->content; } $res->industry=$arr; } }*/ if ($res->guarantee == 1) { $res->bet = DB::table('advertising_bet')->where('advertising_id', '=', $res->id)->first(); } $res->image = $res->image? getUrl($res->image) : ''; $image_group = explode(',', $res->image_group); if($image_group){ foreach ($image_group as $k => $item){ $image_group[$k] = getUrl($item); } } $res->image_group = $image_group; return showJsonSucc(1001, $res); } /** * 广告列表-屏蔽 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:45:13 * @modify 确认已区分系统管理员与地区管理员权限 */ public function shield(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', 'status' => 'required|integer|in:3,4' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $adver = Advertising::find($param['id']); if (in_array($adver->status, [1, 2, 5, 9])) { return showJsonErr('抱歉,该广告不能修改'); } // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) { return showJsonErr('抱歉,您没有权限查看'); } if ($adver->residue_num <= 0 && $adver->end_time < Carbon::now()) { return showJsonErr('该广告不可操作'); } $data = ['status' => $param['status']]; if ($param['status'] == 4) { $data['before_status'] = $adver->status; } if ($param['status'] == 3) { //取消屏蔽 $data['status'] = $adver->before_status; } $result = Advertising::whereId($param['id'])->update($data); if (!$result) { return showJsonErr('修改状态失败'); } return showJsonSucc($resMsg ?? '修改状态成功'); } /** * 广告审核列表 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * 查询:广告标题、广告主、是否对赌 * 显示:发布者ID、广告标题、姓名、电话、企业名、行业、投放城区、费用(元)、当前单价、总展示量、是否对赌 * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:36:09 * @modify 确认已区分系统管理员与地区管理员权限 */ public function getListByAudit(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'title' => 'string', 'nick_name' => 'string', 'guarantee' => 'integer|in:0,1' // 是否平台担保:0-否 1-是 ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $user = \DB::table('advertising as main') ->join('user as u', 'u.id', '=', 'main.uid') ->leftjoin('order as o', 'o.order_no', '=', 'main.order_no') ->select([ 'main.id', 'main.uid', 'main.title', 'u.real_name', 'u.nick_name', 'u.mobile', 'main.company_name', 'main.company_industry', 'main.province', 'main.city', 'main.district', 'main.total_price', 'main.price', 'main.total_num', 'main.guarantee', 'main.guarantee_url', 'main.redirect', 'main.status', 'main.bet_status', 'main.industry', 'main.created_at', 'main.is_company' ]) ->where(function ($q) { $q->whereOr('main.bet_status', '=', 3); $q->whereOr('main.bet_status', '=', 0); }) ->where('main.status', '=', 2) ->whereOr('o.is_pay', '=', 1) ->whereOr('main.total_price', '=', 0) ->orderByDesc('id'); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $user->whereIn('u.id', getIds()); } // 地区过滤查询 // $user = whereArea($user, $param); //管理员查看对应的代理 $district = AdminArea::getAdminArea(); if (!empty($district)) { if (!empty($district['city'])) { $user->where('main.city', '=', $district['city']); } else { $user->where('main.district', '=', $district['district']); } } // 广告标题 if (!empty($param['title'])) { $user->where('main.title', 'like', "%{$param['title']}%"); } // 广告主姓名 if (!empty($param['nick_name'])) { $user->where(\DB::raw('concat(real_name,nick_name,mobile)'), 'like', "%{$param['nick_name']}%"); } // 是否是对赌 if (isset($param['guarantee'])) { $user->where('main.guarantee', '=', $param['guarantee']); } //省市区查询 if (!empty($param['province'])) { $user->where('main.province', '=', $param['province']); } if (!empty($param['city'])) { $user->where('main.city', '=', $param['city']); } if (!empty($param['district'])) { $user->where('main.district', '=', $param['district']); } //行业查询 if (!empty($param['industry'])) { $user->where('main.industry', '=', $param['industry']); } //额度以上查询 if (!empty($param['total_price'])) { $param['total_price'] = floatval($param['total_price']); $user->where('main.total_price', '>=', $param['total_price']); } $res = $user->paginate(perPage()); if ($res->isNotEmpty()) { collect($res->items())->each(function ($item, $key) { $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district)); $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? ''; /* 对赌广告状态不同 */ if ($item->guarantee == 1) { $item->bet = DB::table('advertising_bet')->where('advertising_id', '=', $item->id)->first(); } if ($item->industry != 'all') { $industry = Industry::whereIn('id', explode(',', $item->industry))->get(); foreach ($industry as $ind) { $arr[] = $ind['content']; } $item->industryArr = $arr; } }); } return showJsonSucc(1001, $res); } /* * 判断输赢 wsl 20190806 * */ public function judge(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', 'user_guarantee_url' => 'required|string', 'user_achievement_url' => 'required|string', 'is_win' => 'integer|in:1,2', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $adver = Advertising::whereId($param['id'])->first(); $betadver = DB::table('advertising_bet')->where('advertising_id', '=', $param['id'])->first(); if (empty($betadver)) { return showJsonErr('对赌广告数据错误'); } if (empty($betadver->user_achievement_url) && empty($param['user_achievement_url'])) { return showJsonErr('用户未上传业务数据,不能判定输赢'); } if ($betadver->is_win > 0) { return showJsonErr('已经做过判定了,请勿重复判定'); } $data = [ 'user_guarantee_url' => $param['user_guarantee_url'], 'user_achievement_url' => $param['user_achievement_url'], 'is_win' => $param['is_win'], 'finish_time' => date('Y-m-d H:i:s'), 'do_id' => Admin()->id, ]; //用户输了,没有佣金发放 //“2019年7月17日提交的编号为xxx标题为“xxxx”的对赌广告,您所交的yyy元广告费将被桃典广告正式收取,若有任何意见,请致电桃典广告:0772-2998804。” // //1、对赌赢: \DB::beginTransaction(); try { $msg_content = MsgTemplate::getTemplateContent(6, ['date' => $adver->created_at, 'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price]); //您的对赌广告输了 $msgarr = ['title' => '对赌判定通知', 'uid' => $adver->uid, 'type' => 16, 'content' => $msg_content]; //用户赢了,退款给用户,无分佣 if ($param['is_win'] == 1) { //退款操作 if ($adver->total_price != '0.000' && $adver->total_price > 0) { $order = Order::where('order_no', '=', $adver->order_no) ->select('order_no', 'pay_no', 'price', 'pay_type') ->first(); if (empty($order)) return showJsonErr('当前订单数据不完整无法原路退款!'); $remark = '退款异常'; if ($order->pay_type == 2 && $adver->status == 3) { $pay = \App::make('aliPay'); $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price); if ($r->code == 10000) { $remark = '您发布的对赌广告-' . $adver->title . '-赢了!资金已原路退回支付宝'; } else return showJsonErr('支付宝退款失败'); } elseif ($order->pay_type == 3 && $adver->status == 3) { //微信退款 $pay = \App::make('wechat'); $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price, $order->price); if ($r->return_code == 'SUCCESS') { $remark = '您发布的对赌广告-' . $adver->title . '-赢了,资金已原路退回微信账户'; } else return showJsonErr('微信退款失败'); } AccountLog::saveDataByPost($adver->uid, 46, $order->price, User::whereId($adver->uid)->value('balance'), 2, 1, $remark); } $msg_content = MsgTemplate::getTemplateContent(5, ['date' => $adver->created_at, 'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price]); //'您的对赌广告赢了!资金已原路退回' $msgarr = ['title' => '对赌判定通知', 'uid' => $adver->uid, 'type' => 16, 'content' => $msg_content]; } else { //用户输了,广告费不退,并发放佣金 //分佣 Order::UserFenYong($adver->total_price, $adver->uid, 2); } UserMsg::SendGetui($msgarr); DB::table('advertising_bet')->where('advertising_id', '=', $param['id'])->update($data); \DB::commit(); return showJsonSucc('判定成功'); } catch (Exception $e) { \DB::rollBack(); return showJsonErr($e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine(), 'messge' => $e->getMessage(), ]); } } /** * 广告审核列表-查看资质(企业信息) * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:40:47 * @modify 确认已区分系统管理员与地区管理员权限 */ public function showCompany(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $res = Advertising::whereId($param['id']) ->select([ 'company_name', //企业名称 'company_industry', //行业 'license_number', //营业执照号码 'license', //营业执照图片 'real_name', //投放人姓名 'idcard_front', //身份证正面照 'idcard_reverse', //s身份证国徽照 'idcard_number', // 身份证号码 'is_company', // 判断广告类型: 1-个人 2-企业 ]) ->first(); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($res->uid, getIds())) { return showJsonErr('抱歉,您没有权限查看'); } if($res&&$res->is_company == 1){ $res->company_industry = Industry::find($res->company_industry)->content ?? ''; } return showJsonSucc(1001, $res); } /** * 广告审核列表-审核 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @date 2019/4/10 * @modify_author lyh * @modify_time 2019-4-26 14:42:24 * @modify 确认已区分系统管理员与地区管理员权限 */ public function Audit(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'ids' => 'required|array', 'status' => 'required|integer|in:3,5' // 3-通过 5-拒绝 ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } \DB::beginTransaction(); try { foreach ($param['ids'] as $id) { $adver = Advertising::find($id); if ($adver->guarantee == 1) { $betadver = DB::table('advertising_bet')->where('advertising_id', '=', $adver->id)->first();//担保广告数据 } if (empty($adver)) { return showJsonErr("抱歉,【id:{$id}】不存在"); } // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) { \DB::rollBack(); return showJsonErr('抱歉,您没有权限查看'); } if ($adver->status != 2) { \DB::rollBack(); return showJsonErr("抱歉,广告【id:{$id}】不是待审核状态"); } $curtime = time(); $auditendtime = strtotime($adver->created_at) + 3600 * 24 * 3;//上级超过3天未确认上级才能操作 $shengyu = $auditendtime - $curtime; if ($adver->bet_status == 0 && $shengyu > 0) { $sday = floatval($shengyu / (24 * 3600)); if ($sday >= 2) $shengyu = '3天'; if ($sday >= 1 && $sday < 2) $shengyu = '2天'; if ($sday < 1) $shengyu = ceil($shengyu / 3600) . '小时'; return showJsonErr("抱歉,上级用户未审核,请您".$shengyu."后再操作"); } if (empty($adver->guarantee_url) && $param['status'] == 3 && $adver->guarantee == 1) { return showJsonErr("抱歉,用户未上传担保协议,您不能进行此项操作"); } //退款操作wsl 20190628 if ($param['status'] == 5 && $adver->total_price != '0.000' && $adver->total_price > 0) { $order = Order::where('order_no', '=', $adver->order_no) ->select('order_no', 'pay_no', 'price', 'pay_type') ->first(); if (empty($order)) return showJsonErr('当前订单数据不完整无法原路退款!'); $remark = '原路退款异常'; if (in_array($order->pay_type,[2,21]) && $adver->status != 5) { $pay = \App::make('aliPay'); $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price); if ($r->code == 10000) { $remark = '您发布的广告-' . $adver->title . '-审核不通过,资金原路退回支付宝'; } } elseif (in_array($order->pay_type,[3,31]) && $adver->status != 5) { //微信退款 $pay = \App::make('wechat'); $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price, $order->price); if ($r->return_code == 'SUCCESS') { $remark = '您发布的广告-' . $adver->title . '-审核不通过,资金原路退回微信账户'; } } AccountLog::saveDataByPost($adver->uid, 44, $order->price, User::whereId($adver->uid)->value('balance'), 2, 1, $remark); } // 修改广告状态 $updata=[ 'status'=> $param['status'] ]; $auitFailsendMsg = ''; if($param['status'] == 5 && !empty($param['auitFailsendMsg'])){ $auitFailsendMsg = $updata['auitFailsendMsg'] = trim($param['auitFailsendMsg']); } Advertising::whereId($id)->update($updata); //修改记录状态 AdverActivityLog::whereId($adver->activity_id)->update(['status' => $param['status'] == 3 ? 3 : 4]); // $msg_content = MsgTemplate::getTemplateContent(8); $msg_content = MsgTemplate::getTemplateContent(8, ['date' => $adver->created_at,'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price,'reason'=>$auitFailsendMsg]); // var_dump($msg_content);exit; $msgarr = ['title' => '广告审核通知', 'uid' => $adver->uid, 'type' => 12, 'content' => $msg_content]; if ($param['status'] == 3) { // 交费升级添加账号流水 /*发布的时候有加过一次记录了 $remark = "用户【id:{$adver->uid}】发布广告,交费¥{$adver->total_price}成功"; $result = AccountLog::insert([ 'uid' => $adver->uid, 'type' => 6, 'money_type' => 2, 'money' => -(abs($adver->total_price)), 'current_money' => User::find($adver->uid)->balance, 'remark' => $remark ]); if (empty($result)) { \DB::rollBack(); return showJsonErr('添加账号流水失败'); }*/ $msg_content = MsgTemplate::getTemplateContent(7, ['date' => $adver->created_at,'adverid' => $adver->id, 'title' => $adver->title]); $msgarr = ['title' => '广告审核通知', 'uid' => $adver->uid, 'type' => 12, 'content' => $msg_content]; // 广告分佣addbywsl,编辑的不需要参与分佣,对赌广告不参与分佣 20190628 //不用lyh的$this->adverService->commission($adver->uid, $adver->total_price); if (!empty($adver->total_price) && empty($adver->is_update) && $adver->guarantee == 0) { Order::UserFenYong($adver->total_price, $adver->uid, 2); } // zch 累加用户发布ad_num UpgradeService::incUserAccount($adver->uid,'ad_num',1); // zch 累加用户发布广告总额 UpgradeService::incUserAccount($adver->uid,'ad_all_money',abs($adver->total_price)); } UserMsg::SendGetui($msgarr); } \DB::commit(); return showJsonSucc('审核成功'); } catch (\Exception $e) { \DB::rollBack(); return showJsonErr($e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine(), 'messge' => $e->getMessage(), ]); } } //add by wsl public function StatBrowse(Request $request) { $param = $request->all(); if (@$param['timeType'] == 2) { //yue $starttime = date('Y-m-01 00:00'); $endtime = date('Y-m-d 23:59:59', strtotime(date('Y-m-01', strtotime($starttime)) . ' +1 month') - 3600 * 24);; } elseif (@$param['timeType'] == 3) { //nian $starttime = date('Y-01-01 00:00'); $endtime = date('Y-m-d 23:59:59', strtotime(date('Y-m-d', strtotime($starttime)) . ' +1 year') - 3600 * 24); } else { //zhou // $starttime=date('Y-m-d 00:00'); // $endtime=date('Y-m-d 23:59'); $starttime = date("Y-m-d 00:00:00", strtotime("this week")); $endtime = date("Y-m-d 23:59:59", strtotime("this week") + 7 * 24 * 3600); } $proxy = Proxy::select(['id', 'province', 'city', 'district', 'status', 'user_level']) ->where('province', '!=', 0); //后台管理员管理的区域展示 $district = AdminArea::getAdminArea(); if (!empty($district)) { if (!empty($district['city'])) { $proxy->whereCity($district['city']); if (!empty($param['district'])) { $proxy->whereDistrict($param['district']); } } else { $proxy->whereDistrict($district['district']); } } $res = $proxy->groupBy(['province', 'city', 'district'])->orderByDesc('created_at')->paginate(perPage()); if ($res->isNotEmpty()) { collect($res->items())->each(function ($item, $key) use ($starttime, $endtime) { $item->area = Area::getName($item->province) . ' ' . Area::getName($item->city) . Area::getName($item->district); $item->browse_num = 0; $item->click_num = 0; $item->start = [$starttime, 'timezone_type' => 3, 'timezone' => 'Asia/Shanghai']; $item->end = [$endtime, 'timezone_type' => 3, 'timezone' => 'Asia/Shanghai']; unset($item->user_level); unset($item->status); unset($item->city); unset($item->district); unset($item->province); }); } return showJsonSucc(1001, $res); } //add by wsl 20190809 后台确认并发送通知 public function BetComfirm(Request $request) { $param = $request->all(); if (empty($param['id'])) return showJsonErr('广告id不能为空'); if (empty($param['name'])) return showJsonErr('业务经理不能为空'); $adver = Advertising::whereId($param['id'])->first(); if (empty($adver) || $adver->guarantee == 0) { return showJsonErr('当前广告不是对赌广告'); } $betadver = \DB::table('advertising_bet')->where('advertising_id', '=', $adver->id)->first(); $user = User::whereId($param['name'])->orWhere('mobile', '=', $param['name'])->first(); $betuser = User::whereId($adver->uid)->first(); if (empty($user)) { return showJsonErr('业务经理不存在'); } if (empty($betadver)) { return showJsonErr('对赌广告数据错误'); } if (in_array($adver->status, [1, 3, 4, 5, 9])) { return showJsonErr('抱歉,当前广告状态不能做此操作'); } if ($betuser->id == $user->id) { return showJsonErr('抱歉,业务经理和对赌用户重复'); } \DB::beginTransaction(); try { $betdata = [ 'bet_state' => 1 ]; $c = empty($betadver->bet_city) ? '' : Area::whereId($betadver->bet_city)->value('name'); $d = empty($betadver->bet_district) ? '' : Area::whereId($betadver->bet_district)->value('name'); Advertising::whereId($adver->id)->update(['bet_status' => 3]);//改成上级已确认 \DB::table('advertising_bet')->where('id', '=', $betadver->id)->update($betdata); if ($betadver->bet_state != 1) {//用户不需重复发送 $usermsg = MsgTemplate::getTemplateContent(1); UserMsg::SendGetui(['title' => '对赌确认通知', 'uid' => $betuser->id, 'type' => 17, 'content' => $usermsg]); } $managemsg = MsgTemplate::getTemplateContent(2, ['usermobile' => $betuser->mobile, 'nickname' => $betuser->nick_name, 'useraddress' => $c . $d . $betadver->bet_address]); UserMsg::SendGetui(['title' => '对赌确认通知', 'uid' => $user->id, 'type' => 17, 'content' => $managemsg]); \DB::commit(); return showJsonSucc('操作成功,通知成功发送'); } catch (\Exception $e) { \DB::rollBack(); return showJsonErr($e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine(), 'messge' => $e->getMessage(), ]); } } /** * 广告浏览量监控数据统计 * @author lyh 此处不知lyh是怎么计算的,editby wsl * @date 2019/4/8 * @modify_author lyh * @modify 2019-4-26 11:23:14-确认已区分系统管理员与地区管理员权限 * @description * 默认按周统计,显示最近一周的数据统计 * 统计时间根据所选条件不同显示(周,年,月) * 显示信息: * 序号 * 城区 当前登录用户的所在地区 * 浏览量 * 点击量 * 统计时间 */ public function StatBrowselyh(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'timeType' => 'required|integer|between:1,3', // 1-按周 2-按月 3-按年 'perPage' => 'required|integer', 'page' => 'required|integer' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } // 获取时间数组 // 每个时间段的开始、结束时间 $start = (($param['page'] - 1) * $param['perPage']); $end = $start + $param['perPage']; switch ($param['timeType']) { case 2: $timeArray = self::getMonthArray($start, $end); break; case 3: $timeArray = self::getYearArray($start, $end); break; default; $timeArray = self::getWeekArray($start, $end); } $res = []; foreach ($timeArray as $item) { $adver = Advertising::whereBetween('created_at', [$item['start'], $item['end']])->select([ \DB::raw('sum(browse_num) browse_num'), \DB::raw('sum(click_num) click_num'), ]); // 区分系统管理员与地区管理员的数据 if (Admin()->is_super == 3) { $adver = $adver->whereIn('uid', getIds()); $str = Area::getArea(Admin()->province, Admin()->city, Admin()->district); } $stat = $adver->first(); $res[] = [ 'area' => $str ?? '', 'browse_num' => $stat->browse_num ?? 0, 'click_num' => $stat->click_num ?? 0, 'start' => $item['start'], 'end' => $item['end'] ]; } return showJsonSucc(1001, $res); } /** * 城区业绩量统计 * author wsl * 2019.7.9 * * * **/ public function StatArea(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'province' => 'exists:area,id', 'city' => 'exists:area,id', 'district' => 'exists:area,id', 'start' => 'date', 'end' => 'date', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } // 如果当前管理员是地区管理员 if (Admin()->is_super == 3) { if (isset($param['district'])) { if (Admin()->level == 6 && $param['district'] != Admin()->district) { return showJsonErr('抱歉,您不能查看该地区的信息'); } } if (isset($param['city'])) { if (Admin()->level == 7 && $param['city'] != Admin()->city) { return showJsonErr('抱歉,您不能查看该城市的信息'); } } } //查找已开放的区域 $proxy = Proxy::select(['id', 'province', 'city', 'district', 'status', 'user_level']) ->where('province', '!=', 0); //管理员查看对应的代理 $district = AdminArea::getAdminArea(); if (!empty($district)) { if (!empty($district['city'])) { $proxy->whereCity($district['city']); if (!empty($param['district'])) { $proxy->whereDistrict($param['district']); } } else { $proxy->whereDistrict($district['district']); } } else { // 地区查询 if (isset($param['province']) && isset($param['province'])) { $proxy->where('province', '=', $param['province']); } if (isset($param['city']) && isset($param['city'])) { $proxy->where('city', '=', $param['city']); } if (isset($param['district']) && isset($param['district'])) { $proxy->where('district', '=', $param['district']); } } $res = $proxy->groupBy(['province', 'city', 'district'])->orderByDesc('created_at')->paginate(perPage()); if ($res->isNotEmpty()) { collect($res->items())->each(function ($item, $key) use ($param) { $item->str = Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district); $adver = Advertising::whereIn('status', [3, 4, 9])->select([ \DB::raw('count(id) count'), // 广告总笔数 \DB::raw('sum(total_price) totalPrice'), // 广告业绩总额 ]); $adver = $adver->whereProvince($item->province)->whereCity($item->city); $user = User::whereProvince($item->province)->whereCity($item->city); $upgrade = Upgrade::whereStatus(3)->whereProvince($item->province)->whereCity($item->city); $proxyarea = DB::table('proxy_area as pa')->join('order as o', 'o.id', '=', 'pa.order_id') ->select(\DB::raw('sum(price) totalprice'))->where('pa.status', '=', 3) ->where('pa.province', '=', $item->province) ->where('pa.city', '=', $item->city) ->where('pa.district', '=', $item->district); if (!empty($item->district)) { $adver->whereDistrict($item->district); $user->whereDistrict($item->district); $upgrade->whereDistrict($item->district); $proxyarea->whereDistrict($item->district); } if (isset($param['start']) && isset($param['end'])) { $adver->whereBetween('created_at', [$param['start'], $param['end']]); $upgrade->whereBetween('created_at', [$param['start'], $param['end']]); $proxyarea->whereBetween('created_at', [$param['start'], $param['end']]); } $adverres = $adver->first(); $proxyareares = $proxyarea->first(); $item->count = $adverres->count;//广告总笔数 $item->proxyTotal = round($upgrade->sum('money') + $proxyareares->totalprice, 3);//代理费总额 $item->totalPrice = round($adverres->totalPrice, 3);//广告业绩总额 $item->proxynum = $user->count();//代理数量 $item->allprice = round($item->proxyTotal + $item->totalPrice, 3);//代理数量 }); } return showJsonSucc(1001, $res); } /** * 城区业绩量统计,感觉不对, * @author lyh * @date 2019/4/8 * @modify_author lyh * @modify 2019-4-26 11:25:25-确认已区分系统管理员与地区管理员权限 * @description * 查询:地区(省市区)、时间(开始结束时间) * 城区 * 代理数量 * 代理费总额(元) * 广告总比数 * 广告业绩总额(元) * 实付总额 * todo 待定 */ public function StatAreaLyh(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'province' => 'exists:area,id', 'city' => 'exists:area,id', 'district' => 'exists:area,id', 'start' => 'date', 'end' => 'date', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } // 如果当前管理员是地区管理员 if (Admin()->is_super == 3) { if (isset($param['district'])) { if (Admin()->level == 6 && $param['district'] != Admin()->district) { return showJsonErr('抱歉,您不能查看该地区的信息'); } } if (isset($param['city'])) { if (Admin()->level == 7 && $param['city'] != Admin()->city) { return showJsonErr('抱歉,您不能查看该城市的信息'); } } } $adver = Advertising::whereIn('status', [3, 4, 9])->select([ \DB::raw('count(id) count'), // 广告总笔数 \DB::raw('sum(total_price) totalPrice'), // 广告业绩总额 'province', 'city', 'district' ]); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3) { $adver = $adver->whereIn('uid', getIds()); } if (isset($param['start']) && isset($param['end'])) { $adver->whereBetween('created_at', [$param['start'], $param['end']]); } if (isset($param['province']) && isset($param['province'])) { $adver->where('province', '=', $param['province']); } if (isset($param['city']) && isset($param['city'])) { $adver->where('city', '=', $param['city']); } if (isset($param['district']) && isset($param['district'])) { $adver->where('district', '=', $param['district']); } $group = 'city'; if (!empty($param['city'])) { $group = 'district'; } $statAdver = $adver->groupBy($group)->paginate(perPage()); if ($statAdver->isNotEmpty()) { foreach ($statAdver->items() as $item) { $user = Upgrade::whereStatus(3)->whereUpgradeWay(1)->select([ \DB::raw('count(id) proxynum'), // 代理数量 \DB::raw('sum(money) proxyTotal') // 代理费总额 ]); if ($item->province) { $user->whereProvince($item->province); } if ($item->city) { $user->whereCity($item->city); } if ($item->district) { $user->whereDistrict($item->district); } if (isset($param['start']) && isset($param['end'])) { $user->whereBetween('created_at', [$param['start'], $param['end']]); } $statUser = $user->first(); $item->proxynum = $statUser->proxynum; $item->proxyTotal = $statUser->proxyTotal; $item->str = Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district); } } return showJsonSucc(1001, $statAdver); } /** * 担保协议上传 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @modify_author lyh * @modify_time 2019-4-26 14:43:54 * @modify 确认已区分系统管理员与地区管理员权限 * @date 2019/4/11 */ public function procotolUpload(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|integer|exists:advertising,id', 'file' => 'required' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $adver = Advertising::find($param['id']); if ($adver->guarantee == 0) { return showJsonErr('抱歉,该广告没有担保'); } // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) { return showJsonErr('抱歉,您没有权限查看'); } if ($adver->guarantee_url) { return showJsonErr('抱歉,该广告已经上传担保协议'); } $res = Advertising::whereId($param['id'])->update(['guarantee_url' => $param['file']]); if (empty($res)) { return showJsonErr('上传失败'); } return showJsonSucc('上传成功', [ 'url' => $param['file'] ]); } /** * 设置开通担保协议 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description * @author lyh * @date 2019/4/15 */ public function guarantee(Request $request) { $res = Config::getValue('GUARANTEE'); Config::where('key', '=', 'GUARANTEE')->update(['content' => $res == 1 ? 0 : 1]); return showJsonSucc(1001, $res); } //审核中的编辑广告 public function modify(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', 'title' => 'required|string', 'content' => 'required|string', 'scene' => 'between:1,3', 'image' => 'string', // 'content' => '', 'industry' => 'required|string', 'province' => 'required|exists:area,id', 'city' => 'required|exists:area,id', 'district' => 'required|exists:area,id' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $adver = Advertising::find($param['id']); if ($adver->status != 2) { return showJsonErr('抱歉,当前广告不是待审核状态不能编辑'); } if (!empty($param['image'])) { $param['image_group'] = $param['image']; $param['image'] = explode(',', $param['image_group'])[0]; } $result = Advertising::whereId($param['id'])->update($param); if (!$result) { return showJsonErr('编辑广告失败'); } return showJsonSucc('编辑广告成功'); } /** * 更新广告剩余量、投放时间 * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @description */ public function modifyMore(Request $request) { $validator = \Validator::make($param = $request->all(), [ 'id' => 'required|exists:advertising,id', 'residue_num' => 'integer', 'start_time' => 'date', 'end_time' => 'date|required_with:start_time' ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $adver = Advertising::find($param['id']); // 区分系统管理员与地区管理员数据 if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) { return showJsonErr('抱歉,您没有权限查看'); } if (!in_array($adver->status, [3, 4])) { return showJsonErr('抱歉,当前广告不能更新信息'); } if (isset($param['start_time']) && $param['start_time'] > $param['end_time']) { return showJsonErr('抱歉,投放开始时间不能大于结束时间'); } if(!empty($param['residue_num'])){ $param['total_num']=$param['residue_num']>$adver->total_num?$param['residue_num']:$adver->total_num; } $result = Advertising::whereId($param['id'])->update($param); if (!$result) { return showJsonErr('抱歉,修改失败'); } return showJsonSucc('修改成功', Advertising::whereId($param['id'])->select(['id', 'residue_num', 'start_time', 'end_time'])->first()); } /** * 获取月份数组 * @param int $perPage * @description * @author lyh * @date 2019/4/8 */ private static function getMonthArray($start, $end) { $array = []; for ($i = $start; $i <= $end; $i++) { $array[] = [ 'start' => Carbon::now()->subMonth($i)->startOfMonth(), 'end' => Carbon::now()->subMonth($i)->endOfMonth() ]; } return $array; } /** * 获取月份数组 * @param int $perPage * @description * @author lyh * @date 2019/4/8 */ private static function getYearArray($start, $end) { $array = []; for ($i = $start; $i <= $end; $i++) { $array[] = [ 'start' => Carbon::now()->subYear($i)->startOfYear(), 'end' => Carbon::now()->subYear($i)->endOfYear() ]; } return $array; } /** * 获取月份数组 * @param int $perPage * @description * @author lyh * @date 2019/4/8 */ private static function getWeekArray($start, $end) { $array = []; for ($i = $start; $i <= $end; $i++) { $array[] = [ 'start' => Carbon::now()->subWeek($i)->startOfWeek(), 'end' => Carbon::now()->subWeek($i)->endOfWeek() ]; } return $array; } //2021/6/21 lzj新增,某代理的广告列表 public function oneAdList(Request $request) { $validator = \Validator::make($param = array_filter($request->all()), [ 'id' => 'required|exists:user,id', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } $fields=[ 'main.id', 'main.uid', 'main.title', 'u.real_name', 'u.nick_name', 'u.mobile', 'main.total_price', 'main.company_name', 'main.company_industry', 'main.province', 'main.city', 'main.district', 'main.price', 'main.total_num', 'main.residue_num', 'main.start_time', 'main.end_time', 'main.created_at', 'main.status', 'main.redirect', 'main.industry' ]; $user = \DB::table('advertising as main') ->join('user as u', 'u.id', '=', 'main.uid') ->orderByDesc('id') ->where('main.uid','=',$param['id']) ->select($fields); $res = $user->paginate(perPage()); if ($res->isNotEmpty()) { collect($res->items())->each(function ($item, $key) { $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district)); $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? ''; if ($item->industry != 'all') { $industry = Industry::whereIn('id', explode(',', $item->industry))->get(); foreach ($industry as $ind) { $arr[] = $ind['content']; } $item->industryArr = $arr; } }); } return showJsonSucc(1001, $res); } //调整等级 2021/6/22 public function editAdver(Request $request) { $validator = \Validator::make($param = array_filter($request->all()), [ 'id' => 'required|exists:user,id', 'level'=>'required|between:1,8', ]); if ($validator->fails()) { return showJsonErr($validator->errors()->first()); } if (\Auth::user()->is_super !== 1 ) { return showJsonErr('抱歉,您没有权限调整等级'); } $users = User::find($param['id']); if(!$users){ return showJsonErr('用户不存在'); } if($param['level'] == $users->level){ return showJsonErr('不能调整为用户当前的等级'); } $users->level = $param['level']; if(!$users->save()){ return showJsonErr('调整等级失败!'); } return showJsonSucc('调整成功!'); } }