User.php 52 KB

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