AdverController.php 55 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Http\Controllers\Controller;
  4. use App\Modes\AccountLog;
  5. use App\Modes\AdminArea;
  6. use App\Modes\Advertising;
  7. use App\Modes\AdverActivityLog;
  8. use App\Modes\Area;
  9. use App\Modes\MsgTemplate;
  10. use App\Modes\Order;
  11. use App\Modes\Proxy;
  12. use App\Modes\Config;
  13. use App\Modes\Industry;
  14. use App\Modes\ProxyArea;
  15. use App\Modes\Upgrade;
  16. use App\Modes\User;
  17. use App\Modes\UserMsg;
  18. use App\Service\AdverService;
  19. use App\Service\UpgradeService;
  20. use Carbon\Carbon;
  21. use Illuminate\Http\Request;
  22. use Illuminate\Support\Facades\DB;
  23. use Illuminate\Support\Facades\Storage;
  24. use function PHPSTORM_META\type;
  25. class AdverController extends Controller
  26. {
  27. protected $adverService;
  28. public function __construct(AdverService $adverService)
  29. {
  30. $this->adverService = $adverService;
  31. }
  32. /*
  33. * 对赌广告审核列表
  34. * wsl
  35. * 2019-07-24
  36. * */
  37. public function guaranteeAuditList(Request $request)
  38. {
  39. }
  40. /**
  41. * 广告列表
  42. * @param Request $request
  43. * @description
  44. * 查询:广告标题、广告主姓名、电话
  45. * 显示:发布者ID、广告标题、姓名、电话、企业名、所在行业、投放城区、费用、当时单价、总展示量、剩余量、投放时间段
  46. * @author lyh
  47. * @date 2019/4/10
  48. * @modify_author lyh
  49. * @modify_time 2019-4-26 14:31:29
  50. * @modify 确认已区分系统管理员与地区管理员权限
  51. */
  52. public function index(Request $request)
  53. {
  54. $validator = \Validator::make($param = $request->all(), [
  55. 'title' => 'string',
  56. 'nick_name' => 'string',
  57. //'mobile' => 'integer'
  58. ]);
  59. if ($validator->fails()) {
  60. return showJsonErr($validator->errors()->first());
  61. }
  62. $fields=[
  63. 'main.id',
  64. 'main.uid',
  65. 'main.title',
  66. 'u.real_name',
  67. 'u.nick_name',
  68. 'u.mobile',
  69. 'main.total_price',
  70. 'main.company_name',
  71. 'main.company_industry',
  72. 'main.province',
  73. 'main.city',
  74. 'main.district',
  75. 'main.price',
  76. 'main.total_num',
  77. 'main.residue_num',
  78. 'main.start_time',
  79. 'main.end_time',
  80. 'main.created_at',
  81. 'main.status',
  82. 'main.redirect',
  83. 'main.industry'
  84. ];
  85. $user = \DB::table('advertising as main')
  86. ->join('user as u', 'u.id', '=', 'main.uid')
  87. ->orderByDesc('id');
  88. //审核状态
  89. if (!empty($param['status'])) {
  90. if ($param['status'] == 9) {
  91. $user->where('main.end_time', '<', date('Y-m-d H:i:s'))->where('main.status', '=', 3);
  92. } elseif ($param['status'] == 4 || $param['status'] == 5) {
  93. $user->where('main.status', '=', $param['status']);
  94. } elseif(in_array($param['status'],[100,101,102])){
  95. //特意留空
  96. }else
  97. $user->where('main.status', '=', $param['status'])->where('main.end_time', '>', date('Y-m-d H:i:s'));
  98. } else {
  99. $user->whereIn('main.status', [3, 4, 5, 9]);
  100. }
  101. if (!empty($param['guarantee']) && $param['guarantee'] == 1) {
  102. $user->where('main.guarantee', '=', 1);
  103. $user->whereIn('main.bet_status', [0,3, 5, 6]);
  104. $user->leftJoin('advertising_bet as ab','main.id','=','ab.advertising_id');
  105. $betfields=['is_win'];
  106. $fields=array_merge($fields,$betfields);
  107. if(!empty($param['status']) && in_array($param['status'],[100,101,102])){
  108. if($param['status']==100) $is_win=0;
  109. if($param['status']==101) $is_win=2;
  110. if($param['status']==102) $is_win=1;
  111. $user->where('ab.is_win',$is_win);
  112. }
  113. } else {
  114. $user->where('main.guarantee', '=', 0);
  115. }
  116. $user->select($fields);
  117. //省市区查询
  118. if (!empty($param['province'])) {
  119. $user->where('main.province', '=', $param['province']);
  120. }
  121. if (!empty($param['city'])) {
  122. $user->where('main.city', '=', $param['city']);
  123. }
  124. if (!empty($param['district'])) {
  125. $user->where('main.district', '=', $param['district']);
  126. }
  127. //行业查询
  128. if (!empty($param['industry'])) {
  129. $user->where('main.industry', '=', $param['industry']);
  130. }
  131. //额度以上查询
  132. if (!empty($param['total_price'])) {
  133. $user->where('main.total_price', '>=', $param['total_price']);
  134. }
  135. // 如果是地区管理员,则不显示同等级的用户信息
  136. if (\Auth::user()->is_super == 3) {
  137. $user = $user->whereIn('u.id', getIds());
  138. }
  139. //管理员查看对应的代理
  140. $district = AdminArea::getAdminArea();
  141. if (!empty($district)) {
  142. if (!empty($district['city'])) {
  143. $user->where('main.city', '=', $district['city']);
  144. } else {
  145. $user->where('main.district', '=', $district['district']);
  146. }
  147. }
  148. // 广告标题
  149. if (!empty($param['title'])) {
  150. $user->where('main.title', 'like', "%{$param['title']}%");
  151. }
  152. // 广告主姓名
  153. if (!empty($param['real_name'])) {
  154. $user->where('u.real_name', 'like', "%{$param['real_name']}%");
  155. }
  156. // 手机号码
  157. if (!empty($param['mobile'])) {
  158. $user->where('u.mobile', 'like', "%{$param['mobile']}%");
  159. }
  160. //echo $user->toSql();exit;
  161. $res = $user->paginate(perPage());
  162. if ($res->isNotEmpty()) {
  163. collect($res->items())->each(function ($item, $key) {
  164. $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district));
  165. $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? '';
  166. if ($item->industry != 'all') {
  167. $industry = Industry::whereIn('id', explode(',', $item->industry))->get();
  168. foreach ($industry as $ind) {
  169. $arr[] = $ind['content'];
  170. }
  171. $item->industryArr = $arr;
  172. }
  173. });
  174. }
  175. return showJsonSucc(1001, $res);
  176. }
  177. /**
  178. * 广告列表-查看
  179. * @param Request $request
  180. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  181. * @description
  182. * @author lyh
  183. * @date 2019/4/10
  184. * @modify_author lyh
  185. * @modify_time 2019-4-26 14:31:18
  186. * @modify 确认已区分系统管理员与地区管理员权限
  187. */
  188. public function show(Request $request)
  189. {
  190. $validator = \Validator::make($param = $request->all(), [
  191. 'id' => 'required|exists:advertising,id',
  192. ]);
  193. if ($validator->fails()) {
  194. return showJsonErr($validator->errors()->first());
  195. }
  196. $res = Advertising::whereId($param['id'])
  197. ->first();
  198. // 区分系统管理员与地区管理员数据
  199. if (\Auth::user()->is_super == 3 && !in_array($res->uid, getIds())) {
  200. return showJsonErr('抱歉,该用户信息您没有权限查看');
  201. }
  202. /*if(!empty($res)&& $res->industry!='all'){
  203. $industry=explode(',',$res->industry);
  204. $industryarr=Industry::whereIn('id',$industry)->select('content')->get();
  205. $arr=[];
  206. if(!empty($industryarr)){
  207. foreach ($industryarr as $item){
  208. $arr[]=$item->content;
  209. }
  210. $res->industry=$arr;
  211. }
  212. }*/
  213. if ($res->guarantee == 1) {
  214. $res->bet = DB::table('advertising_bet')->where('advertising_id', '=', $res->id)->first();
  215. }
  216. $res->image_group = explode(',', $res->image_group);
  217. return showJsonSucc(1001, $res);
  218. }
  219. /**
  220. * 广告列表-屏蔽
  221. * @param Request $request
  222. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  223. * @description
  224. * @author lyh
  225. * @date 2019/4/10
  226. * @modify_author lyh
  227. * @modify_time 2019-4-26 14:45:13
  228. * @modify 确认已区分系统管理员与地区管理员权限
  229. */
  230. public function shield(Request $request)
  231. {
  232. $validator = \Validator::make($param = $request->all(), [
  233. 'id' => 'required|exists:advertising,id',
  234. 'status' => 'required|integer|in:3,4'
  235. ]);
  236. if ($validator->fails()) {
  237. return showJsonErr($validator->errors()->first());
  238. }
  239. $adver = Advertising::find($param['id']);
  240. if (in_array($adver->status, [1, 2, 5, 9])) {
  241. return showJsonErr('抱歉,该广告不能修改');
  242. }
  243. // 区分系统管理员与地区管理员数据
  244. if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) {
  245. return showJsonErr('抱歉,您没有权限查看');
  246. }
  247. if ($adver->residue_num <= 0 && $adver->end_time < Carbon::now()) {
  248. return showJsonErr('该广告不可操作');
  249. }
  250. $data = ['status' => $param['status']];
  251. if ($param['status'] == 4) {
  252. $data['before_status'] = $adver->status;
  253. }
  254. if ($param['status'] == 3) {
  255. //取消屏蔽
  256. $data['status'] = $adver->before_status;
  257. }
  258. $result = Advertising::whereId($param['id'])->update($data);
  259. if (!$result) {
  260. return showJsonErr('修改状态失败');
  261. }
  262. return showJsonSucc($resMsg ?? '修改状态成功');
  263. }
  264. /**
  265. * 广告审核列表
  266. * @param Request $request
  267. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  268. * @description
  269. * 查询:广告标题、广告主、是否对赌
  270. * 显示:发布者ID、广告标题、姓名、电话、企业名、行业、投放城区、费用(元)、当前单价、总展示量、是否对赌
  271. * @author lyh
  272. * @date 2019/4/10
  273. * @modify_author lyh
  274. * @modify_time 2019-4-26 14:36:09
  275. * @modify 确认已区分系统管理员与地区管理员权限
  276. */
  277. public function getListByAudit(Request $request)
  278. {
  279. $validator = \Validator::make($param = $request->all(), [
  280. 'title' => 'string',
  281. 'nick_name' => 'string',
  282. 'guarantee' => 'integer|in:0,1' // 是否平台担保:0-否 1-是
  283. ]);
  284. if ($validator->fails()) {
  285. return showJsonErr($validator->errors()->first());
  286. }
  287. $user = \DB::table('advertising as main')
  288. ->join('user as u', 'u.id', '=', 'main.uid')
  289. ->leftjoin('order as o', 'o.order_no', '=', 'main.order_no')
  290. ->select([
  291. 'main.id',
  292. 'main.uid',
  293. 'main.title',
  294. 'u.real_name',
  295. 'u.nick_name',
  296. 'u.mobile',
  297. 'main.company_name',
  298. 'main.company_industry',
  299. 'main.province',
  300. 'main.city',
  301. 'main.district',
  302. 'main.total_price',
  303. 'main.price',
  304. 'main.total_num',
  305. 'main.guarantee',
  306. 'main.guarantee_url',
  307. 'main.redirect',
  308. 'main.status',
  309. 'main.bet_status',
  310. 'main.industry',
  311. 'main.created_at',
  312. 'main.is_company'
  313. ])
  314. ->where(function ($q) {
  315. $q->whereOr('main.bet_status', '=', 3);
  316. $q->whereOr('main.bet_status', '=', 0);
  317. })
  318. ->where('main.status', '=', 2)
  319. ->whereOr('o.is_pay', '=', 1)
  320. ->whereOr('main.total_price', '=', 0)
  321. ->orderByDesc('id');
  322. // 区分系统管理员与地区管理员数据
  323. if (\Auth::user()->is_super == 3) {
  324. $user->whereIn('u.id', getIds());
  325. }
  326. // 地区过滤查询
  327. // $user = whereArea($user, $param);
  328. //管理员查看对应的代理
  329. $district = AdminArea::getAdminArea();
  330. if (!empty($district)) {
  331. if (!empty($district['city'])) {
  332. $user->where('main.city', '=', $district['city']);
  333. } else {
  334. $user->where('main.district', '=', $district['district']);
  335. }
  336. }
  337. // 广告标题
  338. if (!empty($param['title'])) {
  339. $user->where('main.title', 'like', "%{$param['title']}%");
  340. }
  341. // 广告主姓名
  342. if (!empty($param['nick_name'])) {
  343. $user->where(\DB::raw('concat(real_name,nick_name,mobile)'), 'like', "%{$param['nick_name']}%");
  344. }
  345. // 是否是对赌
  346. if (isset($param['guarantee'])) {
  347. $user->where('main.guarantee', '=', $param['guarantee']);
  348. }
  349. //省市区查询
  350. if (!empty($param['province'])) {
  351. $user->where('main.province', '=', $param['province']);
  352. }
  353. if (!empty($param['city'])) {
  354. $user->where('main.city', '=', $param['city']);
  355. }
  356. if (!empty($param['district'])) {
  357. $user->where('main.district', '=', $param['district']);
  358. }
  359. //行业查询
  360. if (!empty($param['industry'])) {
  361. $user->where('main.industry', '=', $param['industry']);
  362. }
  363. //额度以上查询
  364. if (!empty($param['total_price'])) {
  365. $param['total_price'] = floatval($param['total_price']);
  366. $user->where('main.total_price', '>=', $param['total_price']);
  367. }
  368. $res = $user->paginate(perPage());
  369. if ($res->isNotEmpty()) {
  370. collect($res->items())->each(function ($item, $key) {
  371. $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district));
  372. $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? '';
  373. /* 对赌广告状态不同 */
  374. if ($item->guarantee == 1) {
  375. $item->bet = DB::table('advertising_bet')->where('advertising_id', '=', $item->id)->first();
  376. }
  377. if ($item->industry != 'all') {
  378. $industry = Industry::whereIn('id', explode(',', $item->industry))->get();
  379. foreach ($industry as $ind) {
  380. $arr[] = $ind['content'];
  381. }
  382. $item->industryArr = $arr;
  383. }
  384. });
  385. }
  386. return showJsonSucc(1001, $res);
  387. }
  388. /*
  389. * 判断输赢 wsl 20190806
  390. * */
  391. public function judge(Request $request)
  392. {
  393. $validator = \Validator::make($param = $request->all(), [
  394. 'id' => 'required|exists:advertising,id',
  395. 'user_guarantee_url' => 'required|string',
  396. 'user_achievement_url' => 'required|string',
  397. 'is_win' => 'integer|in:1,2',
  398. ]);
  399. if ($validator->fails()) {
  400. return showJsonErr($validator->errors()->first());
  401. }
  402. $adver = Advertising::whereId($param['id'])->first();
  403. $betadver = DB::table('advertising_bet')->where('advertising_id', '=', $param['id'])->first();
  404. if (empty($betadver)) {
  405. return showJsonErr('对赌广告数据错误');
  406. }
  407. if (empty($betadver->user_achievement_url) && empty($param['user_achievement_url'])) {
  408. return showJsonErr('用户未上传业务数据,不能判定输赢');
  409. }
  410. if ($betadver->is_win > 0) {
  411. return showJsonErr('已经做过判定了,请勿重复判定');
  412. }
  413. $data = [
  414. 'user_guarantee_url' => $param['user_guarantee_url'],
  415. 'user_achievement_url' => $param['user_achievement_url'],
  416. 'is_win' => $param['is_win'],
  417. 'finish_time' => date('Y-m-d H:i:s'),
  418. 'do_id' => Admin()->id,
  419. ];
  420. //用户输了,没有佣金发放
  421. //“2019年7月17日提交的编号为xxx标题为“xxxx”的对赌广告,您所交的yyy元广告费将被桃典广告正式收取,若有任何意见,请致电桃典广告:0772-2998804。”
  422. //
  423. //1、对赌赢:
  424. \DB::beginTransaction();
  425. try {
  426. $msg_content = MsgTemplate::getTemplateContent(6, ['date' => $adver->created_at, 'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price]);
  427. //您的对赌广告输了
  428. $msgarr = ['title' => '对赌判定通知', 'uid' => $adver->uid, 'type' => 16, 'content' => $msg_content];
  429. //用户赢了,退款给用户,无分佣
  430. if ($param['is_win'] == 1) {
  431. //退款操作
  432. if ($adver->total_price != '0.000' && $adver->total_price > 0) {
  433. $order = Order::where('order_no', '=', $adver->order_no)
  434. ->select('order_no', 'pay_no', 'price', 'pay_type')
  435. ->first();
  436. if (empty($order)) return showJsonErr('当前订单数据不完整无法原路退款!');
  437. $remark = '退款异常';
  438. if ($order->pay_type == 2 && $adver->status == 3) {
  439. $pay = \App::make('aliPay');
  440. $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price);
  441. if ($r->code == 10000) {
  442. $remark = '您发布的对赌广告-' . $adver->title . '-赢了!资金已原路退回支付宝';
  443. } else return showJsonErr('支付宝退款失败');
  444. } elseif ($order->pay_type == 3 && $adver->status == 3) {
  445. //微信退款
  446. $pay = \App::make('wechat');
  447. $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price, $order->price);
  448. if ($r->return_code == 'SUCCESS') {
  449. $remark = '您发布的对赌广告-' . $adver->title . '-赢了,资金已原路退回微信账户';
  450. } else return showJsonErr('微信退款失败');
  451. }
  452. AccountLog::saveDataByPost($adver->uid, 46, $order->price, User::whereId($adver->uid)->value('balance'), 2, 1, $remark);
  453. }
  454. $msg_content = MsgTemplate::getTemplateContent(5, ['date' => $adver->created_at, 'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price]);
  455. //'您的对赌广告赢了!资金已原路退回'
  456. $msgarr = ['title' => '对赌判定通知', 'uid' => $adver->uid, 'type' => 16, 'content' => $msg_content];
  457. } else {
  458. //用户输了,广告费不退,并发放佣金
  459. //分佣
  460. Order::UserFenYong($adver->total_price, $adver->uid, 2);
  461. }
  462. UserMsg::SendGetui($msgarr);
  463. DB::table('advertising_bet')->where('advertising_id', '=', $param['id'])->update($data);
  464. \DB::commit();
  465. return showJsonSucc('判定成功');
  466. } catch (Exception $e) {
  467. \DB::rollBack();
  468. return showJsonErr($e->getMessage(), [
  469. 'file' => $e->getFile(),
  470. 'line' => $e->getLine(),
  471. 'messge' => $e->getMessage(),
  472. ]);
  473. }
  474. }
  475. /**
  476. * 广告审核列表-查看资质(企业信息)
  477. * @param Request $request
  478. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  479. * @description
  480. * @author lyh
  481. * @date 2019/4/10
  482. * @modify_author lyh
  483. * @modify_time 2019-4-26 14:40:47
  484. * @modify 确认已区分系统管理员与地区管理员权限
  485. */
  486. public function showCompany(Request $request)
  487. {
  488. $validator = \Validator::make($param = $request->all(), [
  489. 'id' => 'required|exists:advertising,id',
  490. ]);
  491. if ($validator->fails()) {
  492. return showJsonErr($validator->errors()->first());
  493. }
  494. $res = Advertising::whereId($param['id'])
  495. ->select([
  496. 'company_name', //企业名称
  497. 'company_industry', //行业
  498. 'license_number', //营业执照号码
  499. 'license', //营业执照图片
  500. 'real_name', //投放人姓名
  501. 'idcard_front', //身份证正面照
  502. 'idcard_reverse', //s身份证国徽照
  503. 'idcard_number', // 身份证号码
  504. 'is_company', // 判断广告类型: 1-个人 2-企业
  505. ])
  506. ->first();
  507. // 区分系统管理员与地区管理员数据
  508. if (\Auth::user()->is_super == 3 && !in_array($res->uid, getIds())) {
  509. return showJsonErr('抱歉,您没有权限查看');
  510. }
  511. if($res&&$res->is_company == 1){
  512. $res->company_industry = Industry::find($res->company_industry)->content ?? '';
  513. }
  514. return showJsonSucc(1001, $res);
  515. }
  516. /**
  517. * 广告审核列表-审核
  518. * @param Request $request
  519. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  520. * @description
  521. * @author lyh
  522. * @date 2019/4/10
  523. * @modify_author lyh
  524. * @modify_time 2019-4-26 14:42:24
  525. * @modify 确认已区分系统管理员与地区管理员权限
  526. */
  527. public function Audit(Request $request)
  528. {
  529. $validator = \Validator::make($param = $request->all(), [
  530. 'ids' => 'required|array',
  531. 'status' => 'required|integer|in:3,5' // 3-通过 5-拒绝
  532. ]);
  533. if ($validator->fails()) {
  534. return showJsonErr($validator->errors()->first());
  535. }
  536. \DB::beginTransaction();
  537. try {
  538. foreach ($param['ids'] as $id) {
  539. $adver = Advertising::find($id);
  540. if ($adver->guarantee == 1) {
  541. $betadver = DB::table('advertising_bet')->where('advertising_id', '=', $adver->id)->first();//担保广告数据
  542. }
  543. if (empty($adver)) {
  544. return showJsonErr("抱歉,【id:{$id}】不存在");
  545. }
  546. // 区分系统管理员与地区管理员数据
  547. if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) {
  548. \DB::rollBack();
  549. return showJsonErr('抱歉,您没有权限查看');
  550. }
  551. if ($adver->status != 2) {
  552. \DB::rollBack();
  553. return showJsonErr("抱歉,广告【id:{$id}】不是待审核状态");
  554. }
  555. $curtime = time();
  556. $auditendtime = strtotime($adver->created_at) + 3600 * 24 * 3;//上级超过3天未确认上级才能操作
  557. $shengyu = $auditendtime - $curtime;
  558. if ($adver->bet_status == 0 && $shengyu > 0) {
  559. $sday = floatval($shengyu / (24 * 3600));
  560. if ($sday >= 2) $shengyu = '3天';
  561. if ($sday >= 1 && $sday < 2) $shengyu = '2天';
  562. if ($sday < 1) $shengyu = ceil($shengyu / 3600) . '小时';
  563. return showJsonErr("抱歉,上级用户未审核,请您".$shengyu."后再操作");
  564. }
  565. if (empty($adver->guarantee_url) && $param['status'] == 3 && $adver->guarantee == 1) {
  566. return showJsonErr("抱歉,用户未上传担保协议,您不能进行此项操作");
  567. }
  568. //退款操作wsl 20190628
  569. if ($param['status'] == 5 && $adver->total_price != '0.000' && $adver->total_price > 0) {
  570. $order = Order::where('order_no', '=', $adver->order_no)
  571. ->select('order_no', 'pay_no', 'price', 'pay_type')
  572. ->first();
  573. if (empty($order)) return showJsonErr('当前订单数据不完整无法原路退款!');
  574. $remark = '原路退款异常';
  575. if (in_array($order->pay_type,[2,21]) && $adver->status != 5) {
  576. $pay = \App::make('aliPay');
  577. $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price);
  578. if ($r->code == 10000) {
  579. $remark = '您发布的广告-' . $adver->title . '-审核不通过,资金原路退回支付宝';
  580. }
  581. } elseif (in_array($order->pay_type,[3,31]) && $adver->status != 5) {
  582. //微信退款
  583. $pay = \App::make('wechat');
  584. $r = $pay->getReturnInfo($order->order_no, $order->pay_no, $order->price, $order->price);
  585. if ($r->return_code == 'SUCCESS') {
  586. $remark = '您发布的广告-' . $adver->title . '-审核不通过,资金原路退回微信账户';
  587. }
  588. }
  589. AccountLog::saveDataByPost($adver->uid, 44, $order->price, User::whereId($adver->uid)->value('balance'), 2, 1, $remark);
  590. }
  591. // 修改广告状态
  592. $updata=[
  593. 'status'=> $param['status']
  594. ];
  595. $auitFailsendMsg = '';
  596. if($param['status'] == 5 && !empty($param['auitFailsendMsg'])){
  597. $auitFailsendMsg = $updata['auitFailsendMsg'] = trim($param['auitFailsendMsg']);
  598. }
  599. Advertising::whereId($id)->update($updata);
  600. //修改记录状态
  601. AdverActivityLog::whereId($adver->activity_id)->update(['status' => $param['status'] == 3 ? 3 : 4]);
  602. // $msg_content = MsgTemplate::getTemplateContent(8);
  603. $msg_content = MsgTemplate::getTemplateContent(8, ['date' => $adver->created_at,'adverid' => $adver->id, 'title' => $adver->title, 'totalprice' => $adver->total_price,'reason'=>$auitFailsendMsg]);
  604. // var_dump($msg_content);exit;
  605. $msgarr = ['title' => '广告审核通知', 'uid' => $adver->uid, 'type' => 12, 'content' => $msg_content];
  606. if ($param['status'] == 3) {
  607. // 交费升级添加账号流水
  608. /*发布的时候有加过一次记录了
  609. $remark = "用户【id:{$adver->uid}】发布广告,交费¥{$adver->total_price}成功";
  610. $result = AccountLog::insert([
  611. 'uid' => $adver->uid,
  612. 'type' => 6,
  613. 'money_type' => 2,
  614. 'money' => -(abs($adver->total_price)),
  615. 'current_money' => User::find($adver->uid)->balance,
  616. 'remark' => $remark
  617. ]);
  618. if (empty($result)) {
  619. \DB::rollBack();
  620. return showJsonErr('添加账号流水失败');
  621. }*/
  622. $msg_content = MsgTemplate::getTemplateContent(7, ['date' => $adver->created_at,'adverid' => $adver->id, 'title' => $adver->title]);
  623. $msgarr = ['title' => '广告审核通知', 'uid' => $adver->uid, 'type' => 12, 'content' => $msg_content];
  624. // 广告分佣addbywsl,编辑的不需要参与分佣,对赌广告不参与分佣 20190628
  625. //不用lyh的$this->adverService->commission($adver->uid, $adver->total_price);
  626. if (!empty($adver->total_price) && empty($adver->is_update) && $adver->guarantee == 0) {
  627. Order::UserFenYong($adver->total_price, $adver->uid, 2);
  628. }
  629. // zch 累加用户发布ad_num
  630. UpgradeService::incUserAccount($adver->uid,'ad_num',1);
  631. // zch 累加用户发布广告总额
  632. UpgradeService::incUserAccount($adver->uid,'ad_all_money',abs($adver->total_price));
  633. }
  634. UserMsg::SendGetui($msgarr);
  635. }
  636. \DB::commit();
  637. return showJsonSucc('审核成功');
  638. } catch (\Exception $e) {
  639. \DB::rollBack();
  640. return showJsonErr($e->getMessage(), [
  641. 'file' => $e->getFile(),
  642. 'line' => $e->getLine(),
  643. 'messge' => $e->getMessage(),
  644. ]);
  645. }
  646. }
  647. //add by wsl
  648. public function StatBrowse(Request $request)
  649. {
  650. $param = $request->all();
  651. if (@$param['timeType'] == 2) {
  652. //yue
  653. $starttime = date('Y-m-01 00:00');
  654. $endtime = date('Y-m-d 23:59:59', strtotime(date('Y-m-01', strtotime($starttime)) . ' +1 month') - 3600 * 24);;
  655. } elseif (@$param['timeType'] == 3) {
  656. //nian
  657. $starttime = date('Y-01-01 00:00');
  658. $endtime = date('Y-m-d 23:59:59', strtotime(date('Y-m-d', strtotime($starttime)) . ' +1 year') - 3600 * 24);
  659. } else {
  660. //zhou
  661. // $starttime=date('Y-m-d 00:00');
  662. // $endtime=date('Y-m-d 23:59');
  663. $starttime = date("Y-m-d 00:00:00", strtotime("this week"));
  664. $endtime = date("Y-m-d 23:59:59", strtotime("this week") + 7 * 24 * 3600);
  665. }
  666. $proxy = Proxy::select(['id', 'province', 'city', 'district', 'status', 'user_level'])
  667. ->where('province', '!=', 0);
  668. //后台管理员管理的区域展示
  669. $district = AdminArea::getAdminArea();
  670. if (!empty($district)) {
  671. if (!empty($district['city'])) {
  672. $proxy->whereCity($district['city']);
  673. if (!empty($param['district'])) {
  674. $proxy->whereDistrict($param['district']);
  675. }
  676. } else {
  677. $proxy->whereDistrict($district['district']);
  678. }
  679. }
  680. $res = $proxy->groupBy(['province', 'city', 'district'])->orderByDesc('created_at')->paginate(perPage());
  681. if ($res->isNotEmpty()) {
  682. collect($res->items())->each(function ($item, $key) use ($starttime, $endtime) {
  683. $item->area = Area::getName($item->province) . ' ' . Area::getName($item->city) . Area::getName($item->district);
  684. $item->browse_num = 0;
  685. $item->click_num = 0;
  686. $item->start = [$starttime, 'timezone_type' => 3, 'timezone' => 'Asia/Shanghai'];
  687. $item->end = [$endtime, 'timezone_type' => 3, 'timezone' => 'Asia/Shanghai'];
  688. unset($item->user_level);
  689. unset($item->status);
  690. unset($item->city);
  691. unset($item->district);
  692. unset($item->province);
  693. });
  694. }
  695. return showJsonSucc(1001, $res);
  696. }
  697. //add by wsl 20190809 后台确认并发送通知
  698. public function BetComfirm(Request $request)
  699. {
  700. $param = $request->all();
  701. if (empty($param['id'])) return showJsonErr('广告id不能为空');
  702. if (empty($param['name'])) return showJsonErr('业务经理不能为空');
  703. $adver = Advertising::whereId($param['id'])->first();
  704. if (empty($adver) || $adver->guarantee == 0) {
  705. return showJsonErr('当前广告不是对赌广告');
  706. }
  707. $betadver = \DB::table('advertising_bet')->where('advertising_id', '=', $adver->id)->first();
  708. $user = User::whereId($param['name'])->orWhere('mobile', '=', $param['name'])->first();
  709. $betuser = User::whereId($adver->uid)->first();
  710. if (empty($user)) {
  711. return showJsonErr('业务经理不存在');
  712. }
  713. if (empty($betadver)) {
  714. return showJsonErr('对赌广告数据错误');
  715. }
  716. if (in_array($adver->status, [1, 3, 4, 5, 9])) {
  717. return showJsonErr('抱歉,当前广告状态不能做此操作');
  718. }
  719. if ($betuser->id == $user->id) {
  720. return showJsonErr('抱歉,业务经理和对赌用户重复');
  721. }
  722. \DB::beginTransaction();
  723. try {
  724. $betdata = [
  725. 'bet_state' => 1
  726. ];
  727. $c = empty($betadver->bet_city) ? '' : Area::whereId($betadver->bet_city)->value('name');
  728. $d = empty($betadver->bet_district) ? '' : Area::whereId($betadver->bet_district)->value('name');
  729. Advertising::whereId($adver->id)->update(['bet_status' => 3]);//改成上级已确认
  730. \DB::table('advertising_bet')->where('id', '=', $betadver->id)->update($betdata);
  731. if ($betadver->bet_state != 1) {//用户不需重复发送
  732. $usermsg = MsgTemplate::getTemplateContent(1);
  733. UserMsg::SendGetui(['title' => '对赌确认通知', 'uid' => $betuser->id, 'type' => 17, 'content' => $usermsg]);
  734. }
  735. $managemsg = MsgTemplate::getTemplateContent(2, ['usermobile' => $betuser->mobile, 'nickname' => $betuser->nick_name, 'useraddress' => $c . $d . $betadver->bet_address]);
  736. UserMsg::SendGetui(['title' => '对赌确认通知', 'uid' => $user->id, 'type' => 17, 'content' => $managemsg]);
  737. \DB::commit();
  738. return showJsonSucc('操作成功,通知成功发送');
  739. } catch (\Exception $e) {
  740. \DB::rollBack();
  741. return showJsonErr($e->getMessage(), [
  742. 'file' => $e->getFile(),
  743. 'line' => $e->getLine(),
  744. 'messge' => $e->getMessage(),
  745. ]);
  746. }
  747. }
  748. /**
  749. * 广告浏览量监控数据统计
  750. * @author lyh 此处不知lyh是怎么计算的,editby wsl
  751. * @date 2019/4/8
  752. * @modify_author lyh
  753. * @modify 2019-4-26 11:23:14-确认已区分系统管理员与地区管理员权限
  754. * @description
  755. * 默认按周统计,显示最近一周的数据统计
  756. * 统计时间根据所选条件不同显示(周,年,月)
  757. * 显示信息:
  758. * 序号
  759. * 城区 当前登录用户的所在地区
  760. * 浏览量
  761. * 点击量
  762. * 统计时间
  763. */
  764. public function StatBrowselyh(Request $request)
  765. {
  766. $validator = \Validator::make($param = $request->all(), [
  767. 'timeType' => 'required|integer|between:1,3', // 1-按周 2-按月 3-按年
  768. 'perPage' => 'required|integer',
  769. 'page' => 'required|integer'
  770. ]);
  771. if ($validator->fails()) {
  772. return showJsonErr($validator->errors()->first());
  773. }
  774. // 获取时间数组
  775. // 每个时间段的开始、结束时间
  776. $start = (($param['page'] - 1) * $param['perPage']);
  777. $end = $start + $param['perPage'];
  778. switch ($param['timeType']) {
  779. case 2:
  780. $timeArray = self::getMonthArray($start, $end);
  781. break;
  782. case 3:
  783. $timeArray = self::getYearArray($start, $end);
  784. break;
  785. default;
  786. $timeArray = self::getWeekArray($start, $end);
  787. }
  788. $res = [];
  789. foreach ($timeArray as $item) {
  790. $adver = Advertising::whereBetween('created_at', [$item['start'], $item['end']])->select([
  791. \DB::raw('sum(browse_num) browse_num'),
  792. \DB::raw('sum(click_num) click_num'),
  793. ]);
  794. // 区分系统管理员与地区管理员的数据
  795. if (Admin()->is_super == 3) {
  796. $adver = $adver->whereIn('uid', getIds());
  797. $str = Area::getArea(Admin()->province, Admin()->city, Admin()->district);
  798. }
  799. $stat = $adver->first();
  800. $res[] = [
  801. 'area' => $str ?? '',
  802. 'browse_num' => $stat->browse_num ?? 0,
  803. 'click_num' => $stat->click_num ?? 0,
  804. 'start' => $item['start'],
  805. 'end' => $item['end']
  806. ];
  807. }
  808. return showJsonSucc(1001, $res);
  809. }
  810. /**
  811. * 城区业绩量统计
  812. * author wsl
  813. * 2019.7.9
  814. *
  815. *
  816. *
  817. **/
  818. public function StatArea(Request $request)
  819. {
  820. $validator = \Validator::make($param = $request->all(), [
  821. 'province' => 'exists:area,id',
  822. 'city' => 'exists:area,id',
  823. 'district' => 'exists:area,id',
  824. 'start' => 'date',
  825. 'end' => 'date',
  826. ]);
  827. if ($validator->fails()) {
  828. return showJsonErr($validator->errors()->first());
  829. }
  830. // 如果当前管理员是地区管理员
  831. if (Admin()->is_super == 3) {
  832. if (isset($param['district'])) {
  833. if (Admin()->level == 6 && $param['district'] != Admin()->district) {
  834. return showJsonErr('抱歉,您不能查看该地区的信息');
  835. }
  836. }
  837. if (isset($param['city'])) {
  838. if (Admin()->level == 7 && $param['city'] != Admin()->city) {
  839. return showJsonErr('抱歉,您不能查看该城市的信息');
  840. }
  841. }
  842. }
  843. //查找已开放的区域
  844. $proxy = Proxy::select(['id', 'province', 'city', 'district', 'status', 'user_level'])
  845. ->where('province', '!=', 0);
  846. //管理员查看对应的代理
  847. $district = AdminArea::getAdminArea();
  848. if (!empty($district)) {
  849. if (!empty($district['city'])) {
  850. $proxy->whereCity($district['city']);
  851. if (!empty($param['district'])) {
  852. $proxy->whereDistrict($param['district']);
  853. }
  854. } else {
  855. $proxy->whereDistrict($district['district']);
  856. }
  857. } else {
  858. // 地区查询
  859. if (isset($param['province']) && isset($param['province'])) {
  860. $proxy->where('province', '=', $param['province']);
  861. }
  862. if (isset($param['city']) && isset($param['city'])) {
  863. $proxy->where('city', '=', $param['city']);
  864. }
  865. if (isset($param['district']) && isset($param['district'])) {
  866. $proxy->where('district', '=', $param['district']);
  867. }
  868. }
  869. $res = $proxy->groupBy(['province', 'city', 'district'])->orderByDesc('created_at')->paginate(perPage());
  870. if ($res->isNotEmpty()) {
  871. collect($res->items())->each(function ($item, $key) use ($param) {
  872. $item->str = Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district);
  873. $adver = Advertising::whereIn('status', [3, 4, 9])->select([
  874. \DB::raw('count(id) count'), // 广告总笔数
  875. \DB::raw('sum(total_price) totalPrice'), // 广告业绩总额
  876. ]);
  877. $adver = $adver->whereProvince($item->province)->whereCity($item->city);
  878. $user = User::whereProvince($item->province)->whereCity($item->city);
  879. $upgrade = Upgrade::whereStatus(3)->whereProvince($item->province)->whereCity($item->city);
  880. $proxyarea = DB::table('proxy_area as pa')->join('order as o', 'o.id', '=', 'pa.order_id')
  881. ->select(\DB::raw('sum(price) totalprice'))->where('pa.status', '=', 3)
  882. ->where('pa.province', '=', $item->province)
  883. ->where('pa.city', '=', $item->city)
  884. ->where('pa.district', '=', $item->district);
  885. if (!empty($item->district)) {
  886. $adver->whereDistrict($item->district);
  887. $user->whereDistrict($item->district);
  888. $upgrade->whereDistrict($item->district);
  889. $proxyarea->whereDistrict($item->district);
  890. }
  891. if (isset($param['start']) && isset($param['end'])) {
  892. $adver->whereBetween('created_at', [$param['start'], $param['end']]);
  893. $upgrade->whereBetween('created_at', [$param['start'], $param['end']]);
  894. $proxyarea->whereBetween('created_at', [$param['start'], $param['end']]);
  895. }
  896. $adverres = $adver->first();
  897. $proxyareares = $proxyarea->first();
  898. $item->count = $adverres->count;//广告总笔数
  899. $item->proxyTotal = round($upgrade->sum('money') + $proxyareares->totalprice, 3);//代理费总额
  900. $item->totalPrice = round($adverres->totalPrice, 3);//广告业绩总额
  901. $item->proxynum = $user->count();//代理数量
  902. $item->allprice = round($item->proxyTotal + $item->totalPrice, 3);//代理数量
  903. });
  904. }
  905. return showJsonSucc(1001, $res);
  906. }
  907. /**
  908. * 城区业绩量统计,感觉不对,
  909. * @author lyh
  910. * @date 2019/4/8
  911. * @modify_author lyh
  912. * @modify 2019-4-26 11:25:25-确认已区分系统管理员与地区管理员权限
  913. * @description
  914. * 查询:地区(省市区)、时间(开始结束时间)
  915. * 城区
  916. * 代理数量
  917. * 代理费总额(元)
  918. * 广告总比数
  919. * 广告业绩总额(元)
  920. * 实付总额
  921. * todo 待定
  922. */
  923. public function StatAreaLyh(Request $request)
  924. {
  925. $validator = \Validator::make($param = $request->all(), [
  926. 'province' => 'exists:area,id',
  927. 'city' => 'exists:area,id',
  928. 'district' => 'exists:area,id',
  929. 'start' => 'date',
  930. 'end' => 'date',
  931. ]);
  932. if ($validator->fails()) {
  933. return showJsonErr($validator->errors()->first());
  934. }
  935. // 如果当前管理员是地区管理员
  936. if (Admin()->is_super == 3) {
  937. if (isset($param['district'])) {
  938. if (Admin()->level == 6 && $param['district'] != Admin()->district) {
  939. return showJsonErr('抱歉,您不能查看该地区的信息');
  940. }
  941. }
  942. if (isset($param['city'])) {
  943. if (Admin()->level == 7 && $param['city'] != Admin()->city) {
  944. return showJsonErr('抱歉,您不能查看该城市的信息');
  945. }
  946. }
  947. }
  948. $adver = Advertising::whereIn('status', [3, 4, 9])->select([
  949. \DB::raw('count(id) count'), // 广告总笔数
  950. \DB::raw('sum(total_price) totalPrice'), // 广告业绩总额
  951. 'province',
  952. 'city',
  953. 'district'
  954. ]);
  955. // 区分系统管理员与地区管理员数据
  956. if (\Auth::user()->is_super == 3) {
  957. $adver = $adver->whereIn('uid', getIds());
  958. }
  959. if (isset($param['start']) && isset($param['end'])) {
  960. $adver->whereBetween('created_at', [$param['start'], $param['end']]);
  961. }
  962. if (isset($param['province']) && isset($param['province'])) {
  963. $adver->where('province', '=', $param['province']);
  964. }
  965. if (isset($param['city']) && isset($param['city'])) {
  966. $adver->where('city', '=', $param['city']);
  967. }
  968. if (isset($param['district']) && isset($param['district'])) {
  969. $adver->where('district', '=', $param['district']);
  970. }
  971. $group = 'city';
  972. if (!empty($param['city'])) {
  973. $group = 'district';
  974. }
  975. $statAdver = $adver->groupBy($group)->paginate(perPage());
  976. if ($statAdver->isNotEmpty()) {
  977. foreach ($statAdver->items() as $item) {
  978. $user = Upgrade::whereStatus(3)->whereUpgradeWay(1)->select([
  979. \DB::raw('count(id) proxynum'), // 代理数量
  980. \DB::raw('sum(money) proxyTotal') // 代理费总额
  981. ]);
  982. if ($item->province) {
  983. $user->whereProvince($item->province);
  984. }
  985. if ($item->city) {
  986. $user->whereCity($item->city);
  987. }
  988. if ($item->district) {
  989. $user->whereDistrict($item->district);
  990. }
  991. if (isset($param['start']) && isset($param['end'])) {
  992. $user->whereBetween('created_at', [$param['start'], $param['end']]);
  993. }
  994. $statUser = $user->first();
  995. $item->proxynum = $statUser->proxynum;
  996. $item->proxyTotal = $statUser->proxyTotal;
  997. $item->str = Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district);
  998. }
  999. }
  1000. return showJsonSucc(1001, $statAdver);
  1001. }
  1002. /**
  1003. * 担保协议上传
  1004. * @param Request $request
  1005. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  1006. * @description
  1007. * @author lyh
  1008. * @modify_author lyh
  1009. * @modify_time 2019-4-26 14:43:54
  1010. * @modify 确认已区分系统管理员与地区管理员权限
  1011. * @date 2019/4/11
  1012. */
  1013. public function procotolUpload(Request $request)
  1014. {
  1015. $validator = \Validator::make($param = $request->all(), [
  1016. 'id' => 'required|integer|exists:advertising,id',
  1017. 'file' => 'required'
  1018. ]);
  1019. if ($validator->fails()) {
  1020. return showJsonErr($validator->errors()->first());
  1021. }
  1022. $adver = Advertising::find($param['id']);
  1023. if ($adver->guarantee == 0) {
  1024. return showJsonErr('抱歉,该广告没有担保');
  1025. }
  1026. // 区分系统管理员与地区管理员数据
  1027. if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) {
  1028. return showJsonErr('抱歉,您没有权限查看');
  1029. }
  1030. if ($adver->guarantee_url) {
  1031. return showJsonErr('抱歉,该广告已经上传担保协议');
  1032. }
  1033. $res = Advertising::whereId($param['id'])->update(['guarantee_url' => $param['file']]);
  1034. if (empty($res)) {
  1035. return showJsonErr('上传失败');
  1036. }
  1037. return showJsonSucc('上传成功', [
  1038. 'url' => $param['file']
  1039. ]);
  1040. }
  1041. /**
  1042. * 设置开通担保协议
  1043. * @param Request $request
  1044. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  1045. * @description
  1046. * @author lyh
  1047. * @date 2019/4/15
  1048. */
  1049. public function guarantee(Request $request)
  1050. {
  1051. $res = Config::getValue('GUARANTEE');
  1052. Config::where('key', '=', 'GUARANTEE')->update(['content' => $res == 1 ? 0 : 1]);
  1053. return showJsonSucc(1001, $res);
  1054. }
  1055. //审核中的编辑广告
  1056. public function modify(Request $request)
  1057. {
  1058. $validator = \Validator::make($param = $request->all(), [
  1059. 'id' => 'required|exists:advertising,id',
  1060. 'title' => 'required|string',
  1061. 'content' => 'required|string',
  1062. 'scene' => 'between:1,3',
  1063. 'image' => 'string',
  1064. // 'content' => '',
  1065. 'industry' => 'required|string',
  1066. 'province' => 'required|exists:area,id',
  1067. 'city' => 'required|exists:area,id',
  1068. 'district' => 'required|exists:area,id'
  1069. ]);
  1070. if ($validator->fails()) {
  1071. return showJsonErr($validator->errors()->first());
  1072. }
  1073. $adver = Advertising::find($param['id']);
  1074. if ($adver->status != 2) {
  1075. return showJsonErr('抱歉,当前广告不是待审核状态不能编辑');
  1076. }
  1077. if (!empty($param['image'])) {
  1078. $param['image_group'] = $param['image'];
  1079. $param['image'] = explode(',', $param['image_group'])[0];
  1080. }
  1081. $result = Advertising::whereId($param['id'])->update($param);
  1082. if (!$result) {
  1083. return showJsonErr('编辑广告失败');
  1084. }
  1085. return showJsonSucc('编辑广告成功');
  1086. }
  1087. /**
  1088. * 更新广告剩余量、投放时间
  1089. * @param Request $request
  1090. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  1091. * @description
  1092. */
  1093. public function modifyMore(Request $request)
  1094. {
  1095. $validator = \Validator::make($param = $request->all(), [
  1096. 'id' => 'required|exists:advertising,id',
  1097. 'residue_num' => 'integer',
  1098. 'start_time' => 'date',
  1099. 'end_time' => 'date|required_with:start_time'
  1100. ]);
  1101. if ($validator->fails()) {
  1102. return showJsonErr($validator->errors()->first());
  1103. }
  1104. $adver = Advertising::find($param['id']);
  1105. // 区分系统管理员与地区管理员数据
  1106. if (\Auth::user()->is_super == 3 && !in_array($adver->uid, getIds())) {
  1107. return showJsonErr('抱歉,您没有权限查看');
  1108. }
  1109. if (!in_array($adver->status, [3, 4])) {
  1110. return showJsonErr('抱歉,当前广告不能更新信息');
  1111. }
  1112. if (isset($param['start_time']) && $param['start_time'] > $param['end_time']) {
  1113. return showJsonErr('抱歉,投放开始时间不能大于结束时间');
  1114. }
  1115. if(!empty($param['residue_num'])){
  1116. $param['total_num']=$param['residue_num']>$adver->total_num?$param['residue_num']:$adver->total_num;
  1117. }
  1118. $result = Advertising::whereId($param['id'])->update($param);
  1119. if (!$result) {
  1120. return showJsonErr('抱歉,修改失败');
  1121. }
  1122. return showJsonSucc('修改成功', Advertising::whereId($param['id'])->select(['id', 'residue_num', 'start_time', 'end_time'])->first());
  1123. }
  1124. /**
  1125. * 获取月份数组
  1126. * @param int $perPage
  1127. * @description
  1128. * @author lyh
  1129. * @date 2019/4/8
  1130. */
  1131. private static function getMonthArray($start, $end)
  1132. {
  1133. $array = [];
  1134. for ($i = $start; $i <= $end; $i++) {
  1135. $array[] = [
  1136. 'start' => Carbon::now()->subMonth($i)->startOfMonth(),
  1137. 'end' => Carbon::now()->subMonth($i)->endOfMonth()
  1138. ];
  1139. }
  1140. return $array;
  1141. }
  1142. /**
  1143. * 获取月份数组
  1144. * @param int $perPage
  1145. * @description
  1146. * @author lyh
  1147. * @date 2019/4/8
  1148. */
  1149. private static function getYearArray($start, $end)
  1150. {
  1151. $array = [];
  1152. for ($i = $start; $i <= $end; $i++) {
  1153. $array[] = [
  1154. 'start' => Carbon::now()->subYear($i)->startOfYear(),
  1155. 'end' => Carbon::now()->subYear($i)->endOfYear()
  1156. ];
  1157. }
  1158. return $array;
  1159. }
  1160. /**
  1161. * 获取月份数组
  1162. * @param int $perPage
  1163. * @description
  1164. * @author lyh
  1165. * @date 2019/4/8
  1166. */
  1167. private static function getWeekArray($start, $end)
  1168. {
  1169. $array = [];
  1170. for ($i = $start; $i <= $end; $i++) {
  1171. $array[] = [
  1172. 'start' => Carbon::now()->subWeek($i)->startOfWeek(),
  1173. 'end' => Carbon::now()->subWeek($i)->endOfWeek()
  1174. ];
  1175. }
  1176. return $array;
  1177. }
  1178. //2021/6/21 lzj新增,某代理的广告列表
  1179. public function oneAdList(Request $request)
  1180. {
  1181. $validator = \Validator::make($param = array_filter($request->all()), [
  1182. 'id' => 'required|exists:user,id',
  1183. ]);
  1184. if ($validator->fails()) {
  1185. return showJsonErr($validator->errors()->first());
  1186. }
  1187. $fields=[
  1188. 'main.id',
  1189. 'main.uid',
  1190. 'main.title',
  1191. 'u.real_name',
  1192. 'u.nick_name',
  1193. 'u.mobile',
  1194. 'main.total_price',
  1195. 'main.company_name',
  1196. 'main.company_industry',
  1197. 'main.province',
  1198. 'main.city',
  1199. 'main.district',
  1200. 'main.price',
  1201. 'main.total_num',
  1202. 'main.residue_num',
  1203. 'main.start_time',
  1204. 'main.end_time',
  1205. 'main.created_at',
  1206. 'main.status',
  1207. 'main.redirect',
  1208. 'main.industry'
  1209. ];
  1210. $user = \DB::table('advertising as main')
  1211. ->join('user as u', 'u.id', '=', 'main.uid')
  1212. ->orderByDesc('id')
  1213. ->where('main.uid','=',$param['id'])
  1214. ->select($fields);
  1215. $res = $user->paginate(perPage());
  1216. if ($res->isNotEmpty()) {
  1217. collect($res->items())->each(function ($item, $key) {
  1218. $item->area = trim(Area::getName($item->province) . ' ' . Area::getName($item->city) . ' ' . Area::getName($item->district));
  1219. $item->companyIndustryMsg = Industry::find($item->company_industry)->content ?? '';
  1220. if ($item->industry != 'all') {
  1221. $industry = Industry::whereIn('id', explode(',', $item->industry))->get();
  1222. foreach ($industry as $ind) {
  1223. $arr[] = $ind['content'];
  1224. }
  1225. $item->industryArr = $arr;
  1226. }
  1227. });
  1228. }
  1229. return showJsonSucc(1001, $res);
  1230. }
  1231. //调整等级 2021/6/22
  1232. public function editAdver(Request $request)
  1233. {
  1234. $validator = \Validator::make($param = array_filter($request->all()), [
  1235. 'id' => 'required|exists:user,id',
  1236. 'level'=>'required|between:1,8',
  1237. ]);
  1238. if ($validator->fails()) {
  1239. return showJsonErr($validator->errors()->first());
  1240. }
  1241. if (\Auth::user()->is_super !== 1 ) {
  1242. return showJsonErr('抱歉,您没有权限调整等级');
  1243. }
  1244. $users = User::find($param['id']);
  1245. if(!$users){
  1246. return showJsonErr('用户不存在');
  1247. }
  1248. if($param['level'] == $users->level){
  1249. return showJsonErr('不能调整为用户当前的等级');
  1250. }
  1251. $users->level = $param['level'];
  1252. if(!$users->save()){
  1253. return showJsonErr('调整等级失败!');
  1254. }
  1255. return showJsonSucc('调整成功!');
  1256. }
  1257. }