User.php 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\api\controller\v1;
  4. // +----------------------------------------------------------------------
  5. // | [ WE CAN DO IT MORE SIMPLE ]
  6. // +----------------------------------------------------------------------
  7. // | Copyright (c) 2018-2020 rights reserved.
  8. // +----------------------------------------------------------------------
  9. // | Author: TABLE ME
  10. // +----------------------------------------------------------------------
  11. // | Date: 2020-08-31 15:05
  12. // +----------------------------------------------------------------------
  13. use app\model\admin\MemberLevel;
  14. use app\model\admin\Product;
  15. use app\model\admin\SiteLevel;
  16. use app\model\api\ExpCost;
  17. use app\model\api\Member;
  18. use app\model\api\MemberDetail;
  19. use app\model\api\MemberShop;
  20. use app\model\api\Order;
  21. use app\model\api\OrderInfo;
  22. use app\model\api\OrderInfoAsw;
  23. use app\model\api\OrderInfoDd;
  24. use app\model\api\PayTrade;
  25. use app\model\api\Recharge;
  26. use app\model\api\SiteDetail;
  27. use app\model\api\SiteProduct;
  28. use app\model\api\Tx;
  29. use app\model\api\Warehouse;
  30. use app\model\api\WeixinPushUser;
  31. use app\model\system\MemberFollow;
  32. use app\model\system\News;
  33. use app\Request;
  34. use app\api\controller\AuthController;
  35. use library\services\UtilService;
  36. use library\utils\alipay;
  37. use library\utils\Qiniu;
  38. use library\utils\Region;
  39. use think\db\exception\DbException;
  40. use think\db\Where;
  41. use think\facade\Db;
  42. use think\Image;
  43. use Alipay\EasySDK\Kernel\Factory;
  44. use Alipay\EasySDK\Kernel\Config;
  45. class User extends AuthController
  46. {
  47. /**
  48. * 获取配置
  49. */
  50. public function index(Request $request)
  51. {
  52. $post = [];
  53. //获取公告
  54. [$page, $data] = (new News)->getList(0, ['cate_id' => 2,'is_show'=>1], '6', '*', 'time desc');
  55. $newData = UtilService::getParam([
  56. 'id',
  57. 'title',
  58. ['time', 'time', 'date("Y-m-d",$1)'],
  59. ], $data);
  60. $post['news'] = $newData;
  61. //快递费用
  62. $expCode = new ExpCost;
  63. $expData = $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
  64. $post['expData'] = $expData;
  65. //
  66. //总金额
  67. $total = (new Order)
  68. ->where('uid', $request->user['uid'])
  69. ->where('status', '>', 0)
  70. ->sum('all_price');
  71. $post['total'] = $total;
  72. //未支付
  73. $unpaid = (new Order)
  74. ->where('uid', $request->user['uid'])
  75. ->where('status', 0)
  76. ->count();
  77. $post['unpaid'] = $unpaid;
  78. //打单子中
  79. $inOrder = (new Order)
  80. ->where('uid', $request->user['uid'])
  81. ->where('status', 1)
  82. ->count();
  83. $post['inOrder'] = $inOrder;
  84. //打单子中
  85. $sendOrder = (new Order)
  86. ->where('uid', $request->user['uid'])
  87. ->where('status', 2)
  88. ->count();
  89. $post['sendOrder'] = $sendOrder;
  90. //异常订单
  91. $abnormalOrder = (new Order)
  92. ->where('uid', $request->user['uid'])
  93. ->where('status', 9)
  94. ->count();
  95. $post['abnormalOrder'] = $abnormalOrder;
  96. $dateAr = [];
  97. $order = new Order;
  98. //8天订单量
  99. for ($i = 0; $i < 8; $i++) {
  100. $time = strtotime('-' . $i . ' day');
  101. $date = date('Y-m-d', $time);
  102. $count = $order
  103. ->where('uid', $request->user['uid'])
  104. ->where('sassid', $request->site['sassid'])
  105. ->whereDay('time', $date)
  106. ->count();
  107. $dateAr[] = ['count' => $count, 'name' => $date];
  108. }
  109. $post['date'] = array_reverse($dateAr);
  110. //绑定数据
  111. $wxPush = (new WeixinPushUser)
  112. ->field("avatar,nickname")
  113. ->where('sassid', $request->site['sassid'])
  114. ->where('uid', $request->user['uid'])
  115. ->find();
  116. if (empty($wxPush)) {
  117. $token = base64_encode(crypto_encrypt($request->user['uid'] . "|" . time(), 'md5_user_token'));
  118. $url = \config('app')['API_URL']
  119. . '/api/bind/system_bind?token=' . $token . '&secret_key=' . $request->site['secret_key'];
  120. $post['bind'] = false;
  121. $post['bind_url'] = $url;
  122. } else {
  123. $post['bind'] = true;
  124. }
  125. return app('json')->success($post);
  126. }
  127. /**
  128. * 获取个人信息
  129. */
  130. public function init(Request $request)
  131. {
  132. $user = (new Member)->where('uid',$request->user['uid'])->whereTime('lasttime', 'today')->find();
  133. if(!$user){
  134. (new Member)->where('uid',$request->user['uid'])->save(['lasttime'=>time()]);
  135. $data['uid'] = $request->user['uid'];
  136. $data['ip'] = $request->ip();
  137. $data['time'] = time();
  138. Db::name("login_record")->insert($data);
  139. }
  140. $level = (new MemberLevel)->where('id', $request->user['levelid'])->find();
  141. $info = [
  142. 'mobile' => $request->user['mobile'],
  143. 'name' => $request->user['name'],
  144. 'nickname' => $request->user['nickname'],
  145. 'avatar' => $request->user['avatar'],
  146. 'money' => $request->user['money'],
  147. 'openid' => $request->user['openid'],
  148. 'levelname' => $level['name'],
  149. 'levelid' => $level['id'],
  150. ];
  151. return app('json')->success($info);
  152. }
  153. /**
  154. * 获取仓库列表
  155. * @param Request $request
  156. */
  157. public function warehouse(Request $request)
  158. {
  159. $warehouse = new Warehouse;
  160. $expCode = new ExpCost;
  161. $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
  162. $data = $warehouse->field("name,id,platform_ids,address,exp_time,exp_star,tran_star,beijing,shanghai,qinghai")
  163. ->where("status", 1)
  164. ->whereIn("sassid",[0,$request->site['sassid']])
  165. ->order("sassid", "desc")
  166. ->order("seq", "desc")
  167. ->select()
  168. ->toArray();
  169. $platform = (new \app\model\system\Platform());
  170. foreach ($data as $k => $v) {
  171. $idsAr = explode(',', $v['platform_ids']);
  172. //平台
  173. $data[$k]['platform'] = array_map(
  174. function ($item) use ($platform) {
  175. return $platform->getPlatformId($item, '*');
  176. }, $idsAr);
  177. //邮费模板
  178. $data[$k]['expCode'] = $expCode->getWareHouseExpCost($v['id'], '*');
  179. }
  180. return app('json')->success($data);
  181. }
  182. /**
  183. * 提交
  184. * @param Request $request
  185. */
  186. public function subOrder(Request $request)
  187. {
  188. [$orderAr, $proId, $warehouseId, $expId, $platformId, $mono, $extraFreight] = UtilService::getMore([
  189. ['orderAr', '', 'empty', '参数错误'],
  190. ['proId', '', 'empty', '参数错误'],
  191. ['warehouseId', '', 'empty', '参数错误'],
  192. ['expId', '', 'empty', '请选择运送方式'],
  193. ['platformId', '', 'empty', '参数错误'],
  194. ['mono', ''],
  195. ['extraFreight', 0]
  196. ], $request, true);
  197. $expPrice = 0; //邮费费用
  198. $expressId = 0; //快递ID
  199. $siteExpCommission = 0;//分站佣金费用
  200. //检测数据
  201. $sitePro = (new SiteProduct)->getItem($proId);
  202. if ($sitePro['count'] <= 0 || count($orderAr) > $sitePro['count']) {
  203. return app('json')->fail("订单产品数量不足,请重新选择!");
  204. }
  205. //判断仓库是否可以下单
  206. $warehouseIds = explode(',',$sitePro['warehouse_ids']);
  207. if(!in_array($warehouseId,$warehouseIds)) {
  208. return app('json')->fail("请重新选择产品!");
  209. }
  210. $warehouse = (new Warehouse)->where('id',$warehouseId)->find();
  211. if(empty($warehouse) || empty($warehouse['status'])) {
  212. return app('json')->fail("分仓已下架,请选择其他分仓");
  213. }
  214. $region = new Region;
  215. //检查地址数据
  216. foreach ($orderAr as $k => $v) {
  217. $rData = $region->getRegion($v['address']);
  218. if (empty($rData['province']) ||
  219. empty($rData['city']) ||
  220. empty($rData['area'])
  221. ) {
  222. // return app('json')->fail('第' . (intval($k) + 1) .'行,'.$v['address'] .'地址信息有误,请重新检查省市区!');
  223. }
  224. }
  225. //订单总数
  226. $orderCount = count($orderAr);
  227. $price = $sitePro['price'] * $orderCount;
  228. $siteProCommission = $sitePro['price'] > $sitePro['commission'] ? ($sitePro['price'] - $sitePro['commission']) : 0;//分站佣金
  229. //快递信息
  230. $expCode = new ExpCost;
  231. $expCode->getExpCostData($request->site['sassid'], $request->user['levelid']);
  232. $expData = array_filter($expCode->getWareHouseExpCost($warehouseId, '*'), function ($item) use ($expId) {
  233. if ($item['id'] == $expId) {
  234. return true;
  235. }
  236. });
  237. //如果有快递信息,分析分账提成 || 用户推荐佣金
  238. if (!empty($expData)) {
  239. $expressId = $expData[0]['express_id'];
  240. $expPrice = $expData[0]['money'];
  241. //分站金额
  242. $money = $expCode->getSysExpCostPrice($expressId, $warehouseId, $request->site['sassid']);
  243. $siteExpCommission = empty($money) ? 0 : ($expPrice > $money ? ($expPrice - $money) : 0);
  244. }
  245. if (empty($expressId)) {
  246. return app('json')->fail("本次邮寄方式不存在,请重新选择邮寄方式。");
  247. }
  248. //获取低价
  249. $floorExp = $expCode
  250. ->where('warehouse_id', $warehouseId)
  251. ->where('express_id', $expressId)
  252. ->where('sassid', 0)
  253. ->where('level_id', -1)
  254. ->value('money');
  255. //会员店铺
  256. $shopAr = [];
  257. foreach ($orderAr as $v) {
  258. $shop_name = trim($v['shop_name']);
  259. if (!empty($shop_name)) {
  260. $shopAr[$shop_name] = ['name' => $shop_name];
  261. }
  262. }
  263. try {
  264. Order::beginTrans();
  265. $mShop = new MemberShop;
  266. foreach ($shopAr as $k => $v) {
  267. $shopId = $mShop->where('name', $k)
  268. ->where('uid', $this->user['uid'])
  269. ->value('id');
  270. if (empty($shopId)) $shopId = $mShop->insertGetId(['name' => $k, 'uid' => $this->user['uid']]);
  271. $shopAr[$k]['id'] = $shopId;
  272. }
  273. //下单
  274. $save['order_id'] = 'TF' . time() . sprintf('%04d', rand(0, 1000)) . $request->user['uid'];//订单号
  275. $save['all_price'] = $price + $expPrice * $orderCount + $extraFreight;//总金额 [价格 + 快递*产品数量]
  276. $save['pro_site_commission'] = $siteProCommission * $orderCount;//产品分站佣金
  277. $save['exp_site_commission'] = $siteExpCommission * $orderCount;//快递分站佣金
  278. $save['site_commission'] = $save['pro_site_commission'] + $save['exp_site_commission'];//分站提成
  279. $save['pro_id'] = $sitePro['id'];//产品ID
  280. $save['platform_id'] = $platformId;//来源[拼多多,淘宝]
  281. $save['warehouse_id'] = $warehouseId;//仓库来源
  282. $save['status'] = 0;//状态
  283. $save['time'] = time();
  284. $save['express_id'] = $expressId;//快递类型
  285. $save['sassid'] = $request->site['sassid'];//分站
  286. $save['mono'] = $mono;//备注
  287. $save['pro_price'] = $price;//产品价格
  288. $save['uid'] = $request->user['uid'];
  289. $oId = (new Order)->insertGetId($save);
  290. foreach ($orderAr as $k => $v) {
  291. $shop_name = trim($v['shop_name']);
  292. $d = [];
  293. $d['o_id'] = $oId;
  294. $d['in_order_id'] = $save['order_id'] . '-' . ($k + 1);
  295. $d['out_order_id'] = $v['out_order_id'];
  296. $d['name'] = $v['name'];
  297. $d['mobile'] = $v['mobile'];
  298. $d['address'] = $v['address'];
  299. $d['pro_price'] = $sitePro['price'];
  300. $d['pro_id'] = $sitePro['id'];
  301. $d['exp_id'] = $expressId;
  302. if(strstr($d['address'], '北京')){
  303. $d['exp_price'] = $expPrice + $warehouse['beijing'];
  304. }else if(strstr($d['address'], '上海')){
  305. $d['exp_price'] = $expPrice + $warehouse['shanghai'];
  306. }else if(strstr($d['address'], '青海')){
  307. $d['exp_price'] = $expPrice + $warehouse['qinghai'];
  308. }else{
  309. $d['exp_price'] = $expPrice;
  310. }
  311. $d['money'] = $sitePro['price'] + $d['exp_price'];
  312. $d['sassid'] = $request->site['sassid'];
  313. $d['uid'] = $request->user['uid'];
  314. $d['time'] = time();
  315. $d['platform_id'] = $platformId;
  316. $d['warehouse_id'] = $warehouseId;
  317. $d['pro_site_commission'] = $siteProCommission;
  318. $d['exp_site_commission'] = $siteExpCommission;
  319. $d['site_commission'] = $siteProCommission + $siteExpCommission;
  320. $d['exp_floor_price'] = empty($floorExp) ? 0 : $floorExp;
  321. $d['shop_id'] = empty($shop_name) ? 0 : $shopAr[$shop_name]['id'];
  322. (new OrderInfo)->insert($d);
  323. }
  324. Order::commitTrans();
  325. } catch (DbException $db) {
  326. Order::rollbackTrans();
  327. return app('json')->fail("下单失败,理由:" . $db->getMessage());
  328. }
  329. return app('json')->success([
  330. 'order_id' => $save['order_id'],
  331. 'price' => $save['all_price'],
  332. ]);
  333. }
  334. /**
  335. * 获取支单独单号
  336. * @param Request $request
  337. */
  338. public function getPayOrder(Request $request)
  339. {
  340. [$orderId] = UtilService::getMore([
  341. ['order_id', '', 'empty', '参数错误'],
  342. ], $request, true);
  343. $data = Order::where('order_id', $orderId)->find();
  344. if (empty($data)) {
  345. return app('json')->fail('找不到订单信息');
  346. }
  347. //订单已付款
  348. if (!empty($data['is_pay'])) {
  349. return app('json')->fail('订单已经支付成功');
  350. }
  351. $orderCount = (new OrderInfo)->where('o_id', $data['id'])->count();
  352. $sitePro = (new SiteProduct)->getProItem($data['pro_id']);
  353. if ($sitePro['count'] <= 0 || $orderCount > $sitePro['count']) {
  354. return app('json')->fail("订单产品数量不足,请重新选择!");
  355. }
  356. $post = [];
  357. $post['order_id'] = $orderId;
  358. $post['count'] = $orderCount;
  359. $post['title'] = $sitePro['title'];
  360. $post['img'] = $sitePro['img'];
  361. $post['all_price'] = $data['all_price'];
  362. $post['user_money'] = $request->user['money'];
  363. return app('json')->success($post);
  364. }
  365. /**
  366. * 余额支付
  367. * @param Request $request
  368. */
  369. public function balancePay(Request $request)
  370. {
  371. [$orderId] = UtilService::getMore([
  372. ['order_id', '', 'empty', '参数错误'],
  373. ], $request, true);
  374. $data = Order::where('order_id', $orderId)->find();
  375. if (empty($data)) {
  376. return app('json')->fail('找不到订单信息');
  377. }
  378. if (empty($data)) {
  379. return app('json')->fail('找不到订单信息');
  380. }
  381. //订单已付款
  382. if (!empty($data['is_pay'])) {
  383. return app('json')->fail('订单已经支付成功');
  384. }
  385. if ($data['all_price'] > $request->user['money']) {
  386. return app('json')->fail('余额不足!');
  387. }
  388. $infoCount = OrderInfo::where('o_id', $data['id'])->count();
  389. //平台分佣
  390. if ($request->site['tj_sassid'] > 0) {
  391. (new ExpCost)
  392. ->difference($request->site, [
  393. 'count' => $infoCount,
  394. 'user' => $request->user['mobile'],
  395. 'money' => $data['site_commission'],
  396. 'warehouse_id' => $data['warehouse_id'],
  397. 'express_id' => $data['express_id'],
  398. 'sassid' => $request->site['tj_sassid'],
  399. 'orderid' => $orderId,
  400. ]);
  401. }
  402. $bool = (new MemberDetail)->consumption($data['all_price'], $request->user['uid'], [
  403. 'name' => $request->user['mobile'],
  404. 'order_id' => $orderId,
  405. 'allmoney' => $data['all_price'],
  406. 'money' => $data['all_price'],
  407. ], $request->site['sassid']);
  408. //提交数据
  409. if ($bool) {
  410. //判断是否有推荐人
  411. if ($request->user['i_uid'] > 0) {
  412. //每单提成
  413. $money = $infoCount * 0.05;
  414. (new MemberDetail)->income(
  415. $money,
  416. $request->user['i_uid'],
  417. ['user' => $request->user['mobile'], 'order_id' => $orderId, 'count' => $infoCount, 'money' => $money],
  418. $request->site['sassid']
  419. );
  420. }
  421. //减库存
  422. (new Product)->where('id', $data['pro_id'])->dec('count', $infoCount)->inc('sales', $infoCount)->update();
  423. //改状态
  424. Order::where('order_id', $orderId)->save([
  425. 'is_pay' => 1,
  426. 'pay_time' => time(),
  427. 'status' => 1,
  428. ]);
  429. //修改子订单数据
  430. OrderInfo::where('o_id', $data['id'])->save([
  431. 'status' => 1,
  432. ]);
  433. //设置维护人
  434. $last_con_time = (new Member)->where('uid', $request->user['uid'])->value('last_con_time');
  435. if($last_con_time == 0){
  436. $follow = (new MemberFollow)->where('uid', $request->user['uid'])->where('admin_id', 99)->find();
  437. if($follow){
  438. (new Member)->where('uid', $request->user['uid'])->save(['admin_id' => 99]);
  439. }else{
  440. (new Member)->where('uid', $request->user['uid'])->save(['admin_id' => 100]);
  441. }
  442. }
  443. (new Member)->where('uid', $request->user['uid'])->save(['last_con_time' => time()]);
  444. //平台佣金
  445. if ($data['site_commission'] > 0) {
  446. (new SiteDetail)->commission($data['site_commission'],
  447. $request->site['sassid'],
  448. $orderId,
  449. ['user' => $request->user['mobile'],
  450. 'pro_money' => $data['pro_site_commission'],
  451. 'exp_money' => $data['exp_site_commission'],
  452. 'order_id' => $orderId,
  453. 'count' => $infoCount,
  454. 'money' => $data['site_commission'],
  455. ]
  456. );
  457. }
  458. return app('json')->success(['msg' => '支付成功']);
  459. } else {
  460. return app('json')->fail('支付失败');
  461. }
  462. }
  463. /**
  464. * 获取订单数据
  465. * @param Request $request
  466. */
  467. public function getOrderList(Request $request)
  468. {
  469. $pageSize = 50;
  470. $post = UtilService::getMore(
  471. [
  472. ['page', 1],
  473. ['order_id', ''],
  474. ['mono', ''],
  475. ['platform_id', ''],
  476. ['data', []],
  477. ['orderType', ''],
  478. ['timeType', ''],
  479. ['shop_id', ''],
  480. ], $request
  481. );
  482. $where = $post;
  483. $where['sassid'] = $request->site['sassid'];
  484. $where['uid'] = $request->user['uid'];
  485. $order = new Order;
  486. list($pageCount, $data) = $order->getList($post['page'], $where, $pageSize, 'id desc');
  487. $result = UtilService::getParam([
  488. "id",
  489. ['time', 'time', 'date("Y-m-d H:i:s",$1)'],
  490. "order_id",
  491. "order_count",
  492. "all_price",
  493. "status",
  494. "platfrom_name",
  495. "pro_title",
  496. "pro_img",
  497. "mono",
  498. "err_msg",
  499. ], $data);
  500. foreach ($result as $k=>$v) {
  501. $imgAr = explode(',',$v['pro_img']);
  502. $result[$k]['pro_img'] = empty($imgAr) ? '' : $imgAr[0];
  503. }
  504. return app('json')->success([
  505. 'list' => $result,
  506. 'pageCount' => $pageCount,
  507. 'pageSize' => $pageSize,
  508. 'page' => $post['page'],
  509. ]);
  510. }
  511. /**
  512. * 订单列表-初始化数据
  513. * @param Request $request
  514. */
  515. public function orderInit(Request $request)
  516. {
  517. //总金额
  518. $total = (new Order)
  519. ->where('uid', $request->user['uid'])
  520. ->where('status', '>', 0)
  521. ->sum('all_price');
  522. //未支付
  523. $unpaid = (new Order)
  524. ->where('uid', $request->user['uid'])
  525. ->where('status', 0)
  526. ->count();
  527. //打单中
  528. $inOrder = (new Order)
  529. ->where('uid', $request->user['uid'])
  530. ->where('status', 1)
  531. ->count();
  532. //已出单
  533. $sendOrder = (new Order)
  534. ->where('uid', $request->user['uid'])
  535. ->where('status', 2)
  536. ->count();
  537. //异常订单
  538. $abnormalOrder = (new Order)
  539. ->where('uid', $request->user['uid'])
  540. ->where('status', 9)
  541. ->count();
  542. //取消订单
  543. $cancelOrder = (new Order)
  544. ->where('uid', $request->user['uid'])
  545. ->where('status', -1)
  546. ->count();
  547. //退货订单
  548. $refundOrder = (new Order)
  549. ->where('uid', $request->user['uid'])
  550. ->where('status', -2)
  551. ->count();
  552. //子订单
  553. $subOrder = (new OrderInfo)
  554. ->where('uid', $request->user['uid'])
  555. ->where('status', '>', 0)
  556. ->count();
  557. //
  558. return app('json')->success([
  559. 'total' => $total,
  560. 'unpaid' => $unpaid,
  561. 'inorder' => $inOrder,
  562. 'sendOrder' => $sendOrder,
  563. 'abnormalOrder' => $abnormalOrder,
  564. 'cancelOrder' => $cancelOrder,
  565. 'refundOrder' => $refundOrder,
  566. 'subOrder' => $subOrder,
  567. ]);
  568. }
  569. /**
  570. * 取消订单
  571. * @param Request $request
  572. */
  573. public function cancelOrder(Request $request)
  574. {
  575. $post = UtilService::getMore(
  576. [
  577. ['id', '', 'empty', '参数错误'],
  578. ], $request
  579. );
  580. $order = new Order;
  581. $data = $order
  582. ->where('sassid', $request->site['sassid'])
  583. ->where('uid', $request->user['uid'])
  584. ->where('id', $post['id'])
  585. ->find();
  586. if (empty($data)) {
  587. return app('json')->fail('找不到订单信息');
  588. }
  589. //订单状态
  590. if ($data['status'] != 0) {
  591. return app('json')->fail('当前订单无法取消');
  592. }
  593. $order->where('id', $data['id'])->save([
  594. 'status' => -1,
  595. ]);
  596. (new OrderInfo())->where('o_id', $data['id'])->save(['status' => -1]);
  597. return app('json')->success(['msg' => '取消成功']);
  598. }
  599. /**
  600. * 子订单数据
  601. * @param Request $request
  602. */
  603. public function orderSubItem(Request $request)
  604. {
  605. $pageSize = 20;
  606. $post = UtilService::getMore(
  607. [
  608. ['id', ''],
  609. ['page', 1],
  610. ['order_id', ''],
  611. ['mobile', ''],
  612. ['name', ''],
  613. ['shop_id', ''],
  614. ], $request
  615. );
  616. $where = $post;
  617. $where['sassid'] = $request->site['sassid'];
  618. $where['id'] = $post['id'];
  619. $where['uid'] = $request->user['uid'];
  620. list($pageCount, $data) = (new OrderInfo)->getList($post['page'], $where, $pageSize, "*", "id desc");
  621. $result = UtilService::getParam([
  622. "id",
  623. "exp_name",
  624. "order_id",
  625. "out_order_id",
  626. "name",
  627. "mobile",
  628. "address",
  629. "mono",
  630. "shop_name",
  631. "time",
  632. "send_time",
  633. "exp_number",
  634. "msg_err",
  635. "money",
  636. "status",
  637. ['_send_time', 'send_time', 'date("Y-m-d H:i:s",$1)']
  638. ], $data);
  639. return app('json')->success([
  640. 'list' => $result,
  641. 'pageCount' => $pageCount,
  642. 'pageSize' => $pageSize,
  643. 'page' => $post['page'],
  644. ]);
  645. }
  646. /**
  647. * 导出数据
  648. * @param Request $request
  649. */
  650. public function orderDown(Request $request)
  651. {
  652. $region = new Region;
  653. $post = UtilService::getMore([
  654. ['id', '', 'empty', '参数错误'],
  655. ['shop_id', ''],
  656. ], $request);
  657. $where = [];
  658. $where['sassid'] = $request->site['sassid'];
  659. $where['uid'] = $request->user['uid'];
  660. $where['id'] = $post['id'];
  661. if (!empty($post['shop_id'])) $where['shop_id'] = $post['shop_id'];
  662. $data = (new OrderInfo)->getAllList($where, 'id desc');
  663. $tAr = [];
  664. foreach ($data as $v) {
  665. $d = [];
  666. $d['name'] = $v['name'];
  667. $d['mobile'] = $v['mobile'];
  668. $d['out_order_id'] = $v['out_order_id'];
  669. $d['address'] = $v['address'];
  670. $d['exp_name'] = $v['exp_name'];
  671. $d['exp_number'] = $v['exp_number'];
  672. $d['platform_name'] = $v['platform_name'];
  673. $d['pro_name'] = $v['pro_name'];
  674. $d['send_time'] = $v['send_time'] <= 0 ? '' : date('Y-m-d H:i:s', $v['send_time']);
  675. // $v['address'] = '贵州省 贵阳市 观山湖区 世纪城社区服务中心福建街世纪城龙耀苑10栋12楼(000000)';
  676. $rData = $region->getRegion($v['address']);
  677. $d['address'] = $rData['address'];
  678. $d['province'] = $rData['province'];
  679. $d['shop_name'] = $v['shop_name'];
  680. $d['city'] = $rData['city'];
  681. $d['area'] = $rData['area'];
  682. $tAr[] = $d;
  683. }
  684. return app('json')->success($tAr);
  685. }
  686. /**
  687. * 升级显示
  688. * @param Request $request
  689. */
  690. public function rechargeXinit(Request $request)
  691. {
  692. $inAr = [
  693. ['name' => '30元', 'v' => 30, 'upname' => ''],
  694. ['name' => '10000元', 'v' => 10000, 'upname' => ''],
  695. ];
  696. $siteLevel = (new SiteLevel)
  697. ->field("sl.update_money,l.name")
  698. ->alias("sl")
  699. ->join("member_level l", "l.id = sl.level_id")
  700. ->where('sl.sass_id', $request->site['sassid'])
  701. ->select();
  702. foreach ($siteLevel as $v) {
  703. if (!empty($v['update_money']) && $v['update_money'] > 0) {
  704. $update_money = floatval($v['update_money']);
  705. $len = 0;
  706. $isAdd = false;
  707. foreach ($inAr as $kk => $vv) {
  708. $val = floatval($vv['v']);
  709. if ($update_money > $val) {
  710. $len = $kk;
  711. $isAdd = true;
  712. }
  713. if ($update_money == $val) {
  714. $len = $kk;
  715. $isAdd = false;
  716. break;
  717. }
  718. }
  719. if ($isAdd) {
  720. array_splice($inAr, $len, 0, [[
  721. 'name' => $v['update_money'] . '元',
  722. 'v' => $update_money,
  723. 'upname' => $v['name'],
  724. ]]);
  725. } else {
  726. $inAr[$len]['upname'] = $v['name'];
  727. }
  728. }
  729. }
  730. //排序
  731. $flag = [];
  732. foreach ($inAr as $v){
  733. $flag[] = $v['v'];
  734. }
  735. array_multisort($flag,SORT_ASC,$inAr);
  736. return app('json')->success($inAr);
  737. }
  738. /**
  739. * 充值
  740. * @param Request $request
  741. */
  742. public function rechargeX(Request $request)
  743. {
  744. $post = UtilService::getMore([
  745. ['v', '0', 'empty', '请选择充值金额'],
  746. ], $request);
  747. //充值
  748. try {
  749. Recharge::beginTrans();
  750. $recharge = new Recharge();
  751. $d = [];
  752. $d['order_id'] = 'RE' . time() . sprintf('%04d', rand(0, 1000)) . $request->user['uid'];
  753. $d['v'] = $post['v'];
  754. $d['status'] = '0';
  755. $d['time'] = time();
  756. $d['sassid'] = $request->site['sassid'];
  757. $d['uid'] = $request->user['uid'];
  758. $recharge->insert($d);
  759. //生成支付凭证
  760. (new PayTrade)->mkTrade([
  761. 'out_trade_no' => $d['order_id'],
  762. 'uid' => $request->user['uid'],
  763. 'tag' => 'alipay',
  764. 'type' => 'recharge',
  765. 'money' => $post['v'],
  766. 'content' => '会员充值' . $d['v'] . '元',
  767. 'sassid' => $request->site['sassid'],
  768. ]);
  769. Recharge::commitTrans();
  770. $url = config('app.API_URL') . '/api/ott/alipay?order_id=' . $d['order_id'];
  771. return app('json')->success(['url' => $url, 'orderId' => $d['order_id']]);
  772. } catch (DbException $db) {
  773. Recharge::rollbackTrans();
  774. return app('json')->fail("充值失败,请联系客服人员");
  775. }
  776. }
  777. /**
  778. * 检查充值
  779. * @param Request $request
  780. */
  781. public function checkRecharge(Request $request)
  782. {
  783. $post = UtilService::getMore([
  784. ['order_id', '0', 'empty', '订单不存在'],
  785. ], $request);
  786. $recharge = new Recharge();
  787. $data = $recharge->where('order_id', $post['order_id'])->find();
  788. if (empty($data)) {
  789. return app('json')->fail('无充值订单');
  790. }
  791. if (empty($data['status'])) {
  792. return app('json')->fail('');
  793. }
  794. return app('json')->success(['data' => $data]);
  795. }
  796. /**
  797. * 资金情况
  798. * @param Request $request
  799. */
  800. public function rechargeInit(Request $request)
  801. {
  802. $info = [
  803. 'money' => $request->user['money'],
  804. 'tx_money' => $request->user['tx_money'],//提现金额
  805. 'in_money' => (new Tx)->where('uid', $request->user['uid'])->where('is_type', 0)->sum('money'),
  806. ];
  807. return app('json')->success($info);
  808. }
  809. /**
  810. * 提现列表
  811. * @param Request $request
  812. */
  813. public function txList(Request $request)
  814. {
  815. $pageSize = 10;
  816. $post = UtilService::getMore(
  817. [
  818. ['page', 1],
  819. ], $request
  820. );
  821. $where['sassid'] = $request->site['sassid'];
  822. $where['uid'] = $request->user['uid'];
  823. $tx = new Tx();
  824. list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*", "time desc");
  825. $result = UtilService::getParam([
  826. "id",
  827. "money",
  828. "bank",
  829. 'name',
  830. 'code',
  831. "is_type",
  832. ["time", "time", "date('Y-m-d H:i:s',$1)"],
  833. ], $data);
  834. return app('json')->success([
  835. 'list' => $result,
  836. 'pageCount' => $pageCount,
  837. 'pageSize' => $pageSize,
  838. 'page' => $post['page'],
  839. ]);
  840. }
  841. /**
  842. * 操作明细
  843. * @param Request $request
  844. */
  845. public function detailList(Request $request)
  846. {
  847. $pageSize = 10;
  848. $post = UtilService::getMore(
  849. [
  850. ['page', 1],
  851. ['tabType', 'all'],
  852. ], $request
  853. );
  854. $where['sassid'] = $request->site['sassid'];
  855. $where['uid'] = $request->user['uid'];
  856. if (!empty($post['tabType']) && $post['tabType'] != 'all') {
  857. $where['code'] = $post['tabType'];
  858. }
  859. $detail = new MemberDetail();
  860. list($pageCount, $data) = $detail->getList($post['page'], $where, $pageSize, "*", "time desc");
  861. $result = UtilService::getParam([
  862. "id",
  863. "code",
  864. "v",
  865. 'title',
  866. 'content',
  867. "type",
  868. ["time", "time", "date('Y-m-d H:i:s',$1)"],
  869. ], $data);
  870. return app('json')->success([
  871. 'list' => $result,
  872. 'pageCount' => $pageCount,
  873. 'pageSize' => $pageSize,
  874. 'page' => $post['page'],
  875. ]);
  876. }
  877. /**
  878. * 我要提现
  879. * @param Request $request
  880. */
  881. public function subTx(Request $request)
  882. {
  883. $post = UtilService::getMore(
  884. [
  885. ['bank', "", "empty", "请输入到账账号"],
  886. ['money', '0', "empty", "请输入提现金额"],
  887. ['name', '', 'empty', '请输入真实姓名'],
  888. ], $request
  889. );
  890. //提现金额
  891. if ($request->user['tx_money'] < $post['money']) {
  892. return app('json')->fail("余额不足,无法提现!");
  893. }
  894. (new Tx)
  895. ->insert([
  896. 'uid' => $request->user['uid'],
  897. 'money' => $post['money'],
  898. 'bank' => '支付宝',
  899. 'name' => $post['name'],
  900. 'code' => $post['bank'],
  901. 'time' => time(),
  902. 'is_type' => 0,
  903. 'sassid' => $request->site['sassid'],
  904. ]);
  905. return app('json')->success(
  906. '提现成功,请等待打款!'
  907. );
  908. }
  909. /**
  910. * 订单详情数据
  911. * @param Request $request
  912. */
  913. public function orderInfoItem(Request $request)
  914. {
  915. $post = UtilService::getMore(
  916. [
  917. ['id', "", "empty", "参数错误"],
  918. ], $request
  919. );
  920. $orderInfo = (new OrderInfo())->getItem($post['id']);
  921. if (empty($orderInfo)) {
  922. return app('json')->fail('找不到订单数据');
  923. }
  924. return app('json')->success([
  925. 'id' => $orderInfo['id'],
  926. 'out_order_id' => $orderInfo['out_order_id'],
  927. 'exp_name' => $orderInfo['exp_name'],
  928. 'exp_number' => $orderInfo['exp_number'],
  929. 'pro_name' => $orderInfo['pro_title'],
  930. "mono" => $orderInfo['mono'],
  931. ]);
  932. }
  933. /*
  934. * 问题件反馈
  935. */
  936. public function subOrderInfoMono(Request $request)
  937. {
  938. $post = UtilService::getMore(
  939. [
  940. ['id', "", "empty", "参数错误"],
  941. ['mono', ""],
  942. ], $request
  943. );
  944. $orderInfo = (new OrderInfo())->getItem($post['id']);
  945. if (empty($orderInfo)) {
  946. return app('json')->fail('找不到订单数据');
  947. }
  948. (new OrderInfo)->where('id', $orderInfo['id'])->save([
  949. 'mono' => $post['mono'],
  950. ]);
  951. $data = (new OrderInfoAsw)
  952. ->where('o_id', $orderInfo['o_id'])
  953. ->where('of_id', $orderInfo['id'])
  954. ->where('status', 0)
  955. ->find();
  956. if (!empty($data)) {
  957. (new OrderInfoAsw)->Where('id', $data['id'])->save(['mono' => $post['mono']]);
  958. } else {
  959. (new OrderInfoAsw)->insert([
  960. 'o_id' => $orderInfo['o_id'],
  961. 'of_id' => $orderInfo['id'],
  962. 'mono' => $post['mono'],
  963. 'time' => time(),
  964. 'status' => 0,
  965. ]);
  966. }
  967. return app('json')->success('反馈成功');
  968. }
  969. /**
  970. * 底单申请
  971. * @param Request $request
  972. */
  973. public function subOrderDdInfo(Request $request)
  974. {
  975. $post = UtilService::getMore(
  976. [
  977. ['id', "", "empty", "参数错误"],
  978. ['mono', ""],
  979. ], $request
  980. );
  981. $orderInfo = (new OrderInfo())->getItem($post['id']);
  982. if (empty($orderInfo)) {
  983. return app('json')->fail('找不到订单数据');
  984. }
  985. $count = (new OrderInfoDd)
  986. ->where('o_id', $orderInfo['o_id'])
  987. ->where('of_id', $orderInfo['id'])
  988. ->count();
  989. if ($count > 0) {
  990. return app('json')->fail('已提交申请,请勿重复提交');
  991. }
  992. (new OrderInfoDd)->insert([
  993. 'o_id' => $orderInfo['o_id'],
  994. 'of_id' => $orderInfo['id'],
  995. 'mono' => $post['mono'],
  996. 'time' => time(),
  997. 'sassid' => $request->site['sassid'],
  998. 'uid' => $request->user['uid'],
  999. 'status' => 0,
  1000. ]);
  1001. return app('json')->success('反馈成功');
  1002. }
  1003. /**
  1004. * 问题反馈列表
  1005. * @param Request $request
  1006. */
  1007. public function orderMonoList(Request $request)
  1008. {
  1009. $pageSize = 10;
  1010. $post = UtilService::getMore(
  1011. [
  1012. ['page', 1],
  1013. ['exp_number', ''],
  1014. ['id', ''],
  1015. ['date', ["", ""]],
  1016. ['mobile', ''],
  1017. ['name', ''],
  1018. ['orderType', ''],
  1019. ['out_order_id', ''],
  1020. ['status', ''],
  1021. ['timeType', ''],
  1022. ], $request
  1023. );
  1024. $where = $post;
  1025. $where['sassid'] = $request->site['sassid'];
  1026. $where['uid'] = $request->user['uid'];
  1027. $tx = new OrderInfoAsw();
  1028. list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*");
  1029. $result = UtilService::getParam([
  1030. "id",
  1031. "o_id",
  1032. "mono",
  1033. "status",
  1034. "cl_time",
  1035. "cl_admin_time",
  1036. "out_order_id",
  1037. "name",
  1038. "mobile",
  1039. "address",
  1040. "time",
  1041. "send_time",
  1042. "exp_number",
  1043. 'msg_mono',
  1044. "exp_name",
  1045. ], $data);
  1046. return app('json')->success([
  1047. 'list' => $result,
  1048. 'pageCount' => $pageCount,
  1049. 'pageSize' => $pageSize,
  1050. 'page' => $post['page'],
  1051. ]);
  1052. }
  1053. /**
  1054. * 订单撤销数据
  1055. * @param Request $request
  1056. */
  1057. public function orderMonoCancel(Request $request)
  1058. {
  1059. $post = UtilService::getMore(
  1060. [
  1061. ['id', "", "empty", "参数错误"],
  1062. ['mono', ""],
  1063. ], $request
  1064. );
  1065. (new OrderInfoAsw)->where('id', $post['id'])->where('uid', $request->user['uid'])->delete();
  1066. return app('json')->success('撤销成功');
  1067. }
  1068. /**
  1069. * 底单申请
  1070. * @param Request $request
  1071. */
  1072. public function orderDdList(Request $request)
  1073. {
  1074. $pageSize = 10;
  1075. $post = UtilService::getMore(
  1076. [
  1077. ['page', 1],
  1078. ['exp_number', ''],
  1079. ['id', ''],
  1080. ['date', ["", ""]],
  1081. ['mobile', ''],
  1082. ['name', ''],
  1083. ['orderType', ''],
  1084. ['out_order_id', ''],
  1085. ['status', ''],
  1086. ['timeType', ''],
  1087. ], $request
  1088. );
  1089. $where = $post;
  1090. $where['sassid'] = $request->site['sassid'];
  1091. $where['uid'] = $request->user['uid'];
  1092. $tx = new OrderInfoDd();
  1093. list($pageCount, $data) = $tx->getList($post['page'], $where, $pageSize, "*");
  1094. $result = UtilService::getParam([
  1095. "id",
  1096. "o_id",
  1097. "mono",
  1098. "status",
  1099. "cl_time",
  1100. "cl_admin_time",
  1101. "out_order_id",
  1102. "name",
  1103. "mobile",
  1104. "address",
  1105. "time",
  1106. "send_time",
  1107. "exp_number",
  1108. 'msg_mono',
  1109. "msg_img",
  1110. "exp_name",
  1111. ], $data);
  1112. return app('json')->success([
  1113. 'list' => $result,
  1114. 'pageCount' => $pageCount,
  1115. 'pageSize' => $pageSize,
  1116. 'page' => $post['page'],
  1117. ]);
  1118. }
  1119. /**
  1120. * 订单撤销数据
  1121. * @param Request $request
  1122. */
  1123. public function orderDbCancel(Request $request)
  1124. {
  1125. $post = UtilService::getMore(
  1126. [
  1127. ['id', "", "empty", "参数错误"],
  1128. ['mono', ""],
  1129. ], $request
  1130. );
  1131. (new OrderInfoDd())->where('id', $post['id'])->where('uid', $request->user['uid'])->delete();
  1132. return app('json')->success('撤销成功');
  1133. }
  1134. /**
  1135. * 邀请好友返利
  1136. * @param Request $request
  1137. */
  1138. public function extension(Request $request)
  1139. {
  1140. $uid = $request->user['uid'];
  1141. $mkuid = base64_encode(crypto_encrypt($uid, $request->site['secret_key']));
  1142. $url = '/login/reg?uid=' . $mkuid;
  1143. $url2 = '/mobile/reg/step1?uid=' . $mkuid;
  1144. $url3 = '/h5/pages/users/register/index?uid=' . $mkuid;
  1145. return app('json')->success([
  1146. 'url' => $url,
  1147. 'url2' => $url2,
  1148. 'url3' => $url3,
  1149. 'count' => (new Member)->where('i_uid', $request->user['uid'])->where('sassid', $request->site['sassid'])->count(),
  1150. ]);
  1151. }
  1152. /**
  1153. * @param Request $request
  1154. * @return mixed
  1155. */
  1156. public function extensionList(Request $request)
  1157. {
  1158. $pageSize = 10;
  1159. $post = UtilService::getMore(
  1160. [
  1161. ['page', 1],
  1162. ], $request
  1163. );
  1164. $where['sassid'] = $request->site['sassid'];
  1165. $where['i_uid'] = $request->user['uid'];
  1166. $member = new Member;
  1167. list($pageCount, $data) = $member->getList($post['page'], $where, $pageSize, "*");
  1168. $result = UtilService::getParam([
  1169. "uid",
  1170. "mobile",
  1171. ['regtime', 'regtime', 'date(\'Y-m-d H:i:s\',$1)'],
  1172. 'order_count',
  1173. 'lavel_name',
  1174. ], $data);
  1175. return app('json')->success([
  1176. 'list' => $result,
  1177. 'pageCount' => $pageCount,
  1178. 'pageSize' => $pageSize,
  1179. 'page' => $post['page'],
  1180. ]);
  1181. }
  1182. /**
  1183. * 修改账号
  1184. * @param Request $request
  1185. */
  1186. public function account(Request $request)
  1187. {
  1188. $post = UtilService::getMore(
  1189. [
  1190. ['nickname', ''],
  1191. ['avatar', ''],
  1192. ], $request
  1193. );
  1194. $m = (new Member);
  1195. $m->where('uid', $request->user['uid'])->save(['nickname' => $post['nickname'], 'avatar' => $post['avatar']]);
  1196. return app('json')->success('修改成功');
  1197. }
  1198. /**
  1199. * 修改密码
  1200. * @param Request $request
  1201. */
  1202. public function password(Request $request)
  1203. {
  1204. $post = UtilService::getMore(
  1205. [
  1206. ['oldpass', '', 'empty', '请输入旧密码'],
  1207. ['password', '', 'empty', '请输入新密码'],
  1208. ], $request
  1209. );
  1210. if ($request->user['password'] != md5($post['password'])) {
  1211. return app('json')->fail('旧密码错误,请检查之后在修改');
  1212. }
  1213. (new Member)->where('uid', $request->user['uid'])->save(['password' => md5($post['password'])]);
  1214. return app('json')->success('修改成功');
  1215. }
  1216. /**
  1217. * 绑定公众号
  1218. * @param Request $request
  1219. */
  1220. public function bind(Request $request)
  1221. {
  1222. $token = base64_encode(crypto_encrypt($request->user['uid'] . "|" . time(), 'md5_user_token'));
  1223. $url = \config('app')['API_URL']
  1224. . '/api/bind/system_bind?token=' . $token . '&secret_key=' . $request->site['secret_key'];
  1225. $wxPush = (new WeixinPushUser)
  1226. ->field("avatar,nickname")
  1227. ->where('sassid', $request->site['sassid'])
  1228. ->where('uid', $request->user['uid'])
  1229. ->find();
  1230. $result = [];
  1231. $result['url'] = $url;
  1232. $result['isbind'] = empty($wxPush) ? false : true;
  1233. $result['bind'] = $wxPush;
  1234. return app('json')->success($result);
  1235. }
  1236. /**
  1237. * 取消绑定
  1238. * @param Request $request
  1239. */
  1240. public function delbind(Request $request)
  1241. {
  1242. (new WeixinPushUser)->where('uid', $request->user['uid'])->where('sassid', $request->site['sassid'])->delete();
  1243. return app('json')->success('取消成功');
  1244. }
  1245. /**
  1246. * vip
  1247. * @param Request $request
  1248. */
  1249. public function vip(Request $request)
  1250. {
  1251. $wData = (new Warehouse)->select()->toArray();
  1252. $level = (new \app\model\admin\MemberLevel)
  1253. ->field("ml.*,(select update_money from table_site_level where level_id = ml.id and sass_id = " . $request->site['sassid'] . " ) as update_money")
  1254. ->alias("ml")
  1255. ->where('ml.is_show', 1)
  1256. ->select()
  1257. ->toArray();
  1258. $levelIds = array_column($level, 'id');
  1259. $expCost = new ExpCost;
  1260. $tAr = [];
  1261. foreach ($wData as $v) {
  1262. $d = [];
  1263. $eAr = [];
  1264. $d['name'] = $v['name'];
  1265. $d['id'] = $v['id'];
  1266. $d['data'] = [];
  1267. $exData = $expCost
  1268. ->field("ec.money,e.title,ec.level_id,ec.express_id")
  1269. ->alias("ec")
  1270. ->join('express e', 'e.id = ec.express_id')
  1271. ->where('ec.warehouse_id', $v['id'])
  1272. ->whereIn('ec.level_id', $levelIds)
  1273. ->where('sassid', $request->site['sassid'])
  1274. ->select();
  1275. foreach ($exData as $vv) {
  1276. $key = 'level_' . $vv['level_id'];
  1277. if (empty($d[$key])) {
  1278. $d[$key] = $vv['money'];
  1279. } else {
  1280. $d[$key] = $d[$key] > $vv['money'] ? $vv['money'] : $d[$key];
  1281. }
  1282. if (empty($eAr[$vv['express_id']])) $eAr[$vv['express_id']] = ['title' => $vv['title']];
  1283. $eAr[$vv['express_id']][$key] = $vv['money'];
  1284. }
  1285. //处理数据
  1286. foreach ($eAr as $vv) {
  1287. $d['data'][] = $vv;
  1288. }
  1289. if (count($exData) > 0) $tAr[] = $d;
  1290. }
  1291. return app('json')->success(['data' => $tAr, 'level' => $level]);
  1292. }
  1293. /**
  1294. * 店铺信息
  1295. * @param Request $request
  1296. */
  1297. public function shop(Request $request)
  1298. {
  1299. return app('json')
  1300. ->success((new MemberShop)
  1301. ->where('uid', $this->user['uid'])
  1302. ->select()
  1303. ->toArray()
  1304. );
  1305. }
  1306. /**
  1307. * 删除店铺
  1308. * @param Request $request
  1309. */
  1310. public function shopDel(Request $request)
  1311. {
  1312. [$id] = UtilService::getMore(
  1313. [
  1314. ['id', '', 'empty', '参数错误'],
  1315. ]
  1316. , $request, true);
  1317. (new MemberShop)
  1318. ->where('uid', $this->user['uid'])
  1319. ->where('id', $id)->delete();
  1320. return app('json')->fail('删除成功');
  1321. }
  1322. }