User.php 53 KB

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