CashTradeController.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. <?php
  2. namespace app\api\controller\trade;
  3. use app\models\trade\CashTradeOrder;
  4. use app\models\trade\CashTradeOrderPayment;
  5. use app\models\user\User;
  6. use app\models\user\UserBanks;
  7. use app\models\user\UserMoney;
  8. use app\Request;
  9. use crmeb\basic\BaseModel;
  10. use crmeb\repositories\OrderRepository;
  11. use crmeb\services\AliPayService;
  12. use crmeb\services\CacheService;
  13. use crmeb\services\UtilService;
  14. use think\db\exception\DataNotFoundException;
  15. use think\db\exception\DbException;
  16. use think\db\exception\ModelNotFoundException;
  17. class CashTradeController
  18. {
  19. public function merged($type)
  20. {
  21. $url = "https://api.huobi.de.com/market/detail/merged?symbol={$type}usdt";
  22. $res = do_request($url, [], [], false);
  23. return $res;
  24. }
  25. /**
  26. * @param Request $request
  27. * @return mixed
  28. * @throws DataNotFoundException
  29. * @throws DbException
  30. * @throws ModelNotFoundException
  31. */
  32. public function can_trade_money(Request $request)
  33. {
  34. $list = sys_data('money_type');
  35. $new = [];
  36. foreach ($list as $v) {
  37. if (explode('_', $v['code'])[0] == "USDT") {
  38. if ($v['price'] <= 0) {
  39. //计算前一天成交的平均价格
  40. $v['price'] = CashTradeOrder::averagePrice($v['code']);
  41. }
  42. $usdt_price = $v['price'];
  43. }
  44. if ($v['is_trade']) {
  45. // if ($v['price'] <= 0) {
  46. // //计算前一天成交的平均价格
  47. // $v['price'] = CashTradeOrder::averagePrice($v['code']);
  48. // }
  49. if ($request->uid())
  50. $v['wallet'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  51. unset($v['cash_commission_ratio']);
  52. unset($v['cash_commission_type']);
  53. unset($v['can_cash']);
  54. unset($v['can_trade']);
  55. unset($v['is_trade']);
  56. $new[] = $v;
  57. }
  58. }
  59. foreach ($new as $k => $v) {
  60. if (!(explode('_', $v['code'])[0] == "USDT")) {
  61. $res = json_decode($this->merged($v['huobi_code']), true);
  62. $new[$k]['usdt'] = $res['tick']['close'];
  63. $new[$k]['price'] = bcmul($usdt_price, $new[$k]['usdt'], 2);
  64. $new[$k]['up'] = bcdiv(bcsub($res['tick']['close'], $res['tick']['open'], 8), $res['tick']['open'], 4);
  65. //$new[$k]['merged'] = $res;
  66. } else {
  67. $new[$k]['usdt'] = 1;
  68. $new[$k]['up'] = 0;
  69. //$new[$k]['merged'] = $res;
  70. }
  71. // if ($request->uid()) {
  72. // $new[$k]['user'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  73. // }
  74. }
  75. return app('json')->success('ok', $new);
  76. }
  77. public function all_money(Request $request)
  78. {
  79. $list = sys_data('money_type');
  80. $new = [];
  81. foreach ($list as $v) {
  82. if (explode('_', $v['code'])[0] == "USDT") {
  83. if ($v['price'] <= 0) {
  84. //计算前一天成交的平均价格
  85. $v['price'] = CashTradeOrder::averagePrice($v['code']);
  86. }
  87. $usdt_price = $v['price'];
  88. }
  89. if ($request->uid())
  90. $v['wallet'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  91. unset($v['cash_commission_ratio']);
  92. unset($v['cash_commission_type']);
  93. unset($v['can_cash']);
  94. unset($v['can_trade']);
  95. unset($v['is_trade']);
  96. $new[] = $v;
  97. }
  98. foreach ($new as $k => $v) {
  99. if (!(explode('_', $v['code'])[0] == "USDT")) {
  100. $res = json_decode($this->merged($v['huobi_code']), true);
  101. $new[$k]['usdt'] = $res['tick']['close'];
  102. $new[$k]['price'] = bcmul($usdt_price, $new[$k]['usdt'], 2);
  103. $new[$k]['up'] = bcdiv(bcsub($res['tick']['close'], $res['tick']['open'], 8), $res['tick']['open'], 4);
  104. //$new[$k]['merged'] = $res;
  105. } else {
  106. $new[$k]['usdt'] = 1;
  107. $new[$k]['up'] = 0;
  108. //$new[$k]['merged'] = $res;
  109. }
  110. // if ($request->uid()) {
  111. // $new[$k]['user'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  112. // }
  113. }
  114. return app('json')->success('ok', $new);
  115. }
  116. public function can_cash_money(Request $request)
  117. {
  118. $list = sys_data('money_type');
  119. $new = [];
  120. foreach ($list as $v) {
  121. if (explode('_', $v['code'])[0] == "USDT") {
  122. if ($v['price'] <= 0) {
  123. //计算前一天成交的平均价格
  124. $v['price'] = CashTradeOrder::averagePrice($v['code']);
  125. }
  126. $usdt_price = $v['price'];
  127. }
  128. if ($v['can_cash']) {
  129. // if ($v['price'] <= 0) {
  130. // //计算前一天成交的平均价格
  131. // $v['price'] = CashTradeOrder::averagePrice($v['code']);
  132. // }
  133. if ($request->uid())
  134. $v['wallet'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  135. unset($v['cash_commission_ratio']);
  136. unset($v['cash_commission_type']);
  137. unset($v['can_cash']);
  138. unset($v['can_trade']);
  139. unset($v['is_trade']);
  140. $new[] = $v;
  141. }
  142. }
  143. foreach ($new as $k => $v) {
  144. if (!(explode('_', $v['code'])[0] == "USDT")) {
  145. $res = json_decode($this->merged($v['huobi_code']), true);
  146. $new[$k]['usdt'] = $res['tick']['close'];
  147. $new[$k]['price'] = bcmul($usdt_price, $new[$k]['usdt'], 2);
  148. $new[$k]['up'] = bcdiv(bcsub($res['tick']['close'], $res['tick']['open'], 8), $res['tick']['open'], 4);
  149. //$new[$k]['merged'] = $res;
  150. } else {
  151. $new[$k]['usdt'] = 1;
  152. $new[$k]['up'] = 0;
  153. //$new[$k]['merged'] = $res;
  154. }
  155. // if ($request->uid()) {
  156. // $new[$k]['user'] = UserMoney::initialUserMoney($request->uid(), $v['code']);
  157. // }
  158. }
  159. return app('json')->success('ok', $new);
  160. }
  161. /**
  162. * @param Request $request
  163. * @return mixed
  164. */
  165. public function sale_list(Request $request)
  166. {
  167. $where = UtilService::getMore([
  168. ['money_type', ''],
  169. ['uid', 0],
  170. ['page', 1],
  171. ['limit', 10],
  172. ['status', 1],
  173. ], $request);
  174. $where['trade_type'] = 1;
  175. return app('json')->success('ok', CashTradeOrder::getList($where));
  176. }
  177. /**
  178. * @param Request $request
  179. * @return mixed
  180. */
  181. public function buy_list(Request $request)
  182. {
  183. $where = UtilService::getMore([
  184. ['money_type', ''],
  185. ['uid', 0],
  186. ['page', 1],
  187. ['limit', 10],
  188. ['status', 1],
  189. ], $request);
  190. $where['trade_type'] = 2;
  191. return app('json')->success('ok', CashTradeOrder::getList($where));
  192. }
  193. /**
  194. * 挂起
  195. * @param Request $request
  196. * @return mixed
  197. * @throws DataNotFoundException
  198. * @throws DbException
  199. * @throws ModelNotFoundException
  200. */
  201. public function hang(Request $request)
  202. {
  203. $user = $request->user();
  204. $uid = $user['uid'];
  205. list($money_type, $money_num, $price, $trade_type, $trade_way, $from, $hang_time, , $captcha, $bank_id) = UtilService::postMore([
  206. ['money_type', 'USDT', '', '', ['not_empty_check', function ($item) {
  207. $moneys = sys_data('money_type');
  208. $new_money = [];
  209. foreach ($moneys as $v) {
  210. if ($v['is_trade'] == 1) {
  211. $new_money[] = $v['code'];
  212. }
  213. }
  214. return in_array($item, $new_money);
  215. }], ['请选择交易的币种', '请选择支持交易的币种']],
  216. ['money_num', 0],
  217. ['price', 0],
  218. ['trade_type', 0, '', '', ['not_empty_check', function ($item) {
  219. return in_array($item, [1, 2]);
  220. }], '请选择挂买或挂卖'],
  221. ['trade_way', 'weixin'],
  222. ['from', 'weixin'],
  223. ['hang_time', 0, '', '', ['not_empty_check', function ($item) {
  224. return $item > 0 && $item < 1000;
  225. }], '请输入正确的挂出时常'],
  226. ['trade_psw', '', '', '', ['not_empty_check', function ($item) use ($user) {
  227. return md5(md5($item)) == $user['trade_pwd'];
  228. }], ['请输入交易密码', '交易密码错误']],
  229. ['captcha', ''],
  230. ['bank_id', '']
  231. ], $request, true);
  232. if ($money_num <= 0) {
  233. return app('json')->fail('请输入币数');
  234. }
  235. if ($price <= 0) {
  236. $money = sys_data('money_type');
  237. foreach ($money as $v) {
  238. if ($v['code'] == $money_type) {
  239. $price = $v['price'] ?: CashTradeOrder::averagePrice($v['code']);
  240. }
  241. }
  242. }
  243. $sum = bcmul($money_num, $price, 2);
  244. if ($sum >= 10000) {
  245. $verifyCode = CacheService::get('code_' . $user['account']);
  246. if (!$verifyCode)
  247. return app('json')->fail('请先获取验证码');
  248. $verifyCode = substr($verifyCode, 0, 6);
  249. if ($verifyCode != $captcha)
  250. return app('json')->fail('验证码错误');
  251. }
  252. switch ($trade_type) {
  253. case 1:
  254. $res = CashTradeOrder::hangSale($uid, $money_type, $money_num, $price, $hang_time, $bank_id);
  255. break;
  256. case 2:
  257. $res = CashTradeOrder::hangBuy2($uid, $money_type, $money_num, $price, $hang_time);//改方式
  258. // $res = CashTradeOrder::hangBuy($uid, $money_type, $money_num, $price, $hang_time);
  259. // if ($res) {
  260. // $orderId = $res['order_id'];
  261. // switch ($trade_way) {
  262. // case "weixin":
  263. // $orderInfo = CashTradeOrderPayment::where('order_id', $orderId)->find();
  264. // if (!$orderInfo || !isset($orderInfo['paid'])) return app('json')->fail('支付订单不存在!');
  265. // $orderInfo = $orderInfo->toArray();
  266. // if ($orderInfo['paid']) return app('json')->fail('支付已支付!');
  267. // //支付金额为0
  268. // if (bcsub((float)$orderInfo['pay_money'], 0, 2) <= 0) {
  269. // //创建订单jspay支付
  270. // $payPriceStatus = CashTradeOrderPayment::jsPayPrice($orderId, $uid);
  271. // if ($payPriceStatus)//0元支付成功
  272. // return app('json')->status('success', '微信支付成功');
  273. // else
  274. // return app('json')->status('pay_error', CashTradeOrderPayment::getErrorInfo());
  275. // } else {
  276. // try {
  277. // if ($from == 'routine') {
  278. // $jsConfig = OrderRepository::tradeJsPay($orderId); //创建订单jspay
  279. // } else if ($from == 'weixinh5') {
  280. // $jsConfig = OrderRepository::tradeH5Pay($orderId);
  281. // } else {
  282. // $jsConfig = OrderRepository::tradeWxPay($orderId);
  283. // }
  284. // } catch (\Exception $e) {
  285. // return app('json')->status('pay_error', $e->getMessage());
  286. // }
  287. // $res['jsConfig'] = $jsConfig;
  288. // if ($from == 'weixinh5') {
  289. // return app('json')->status('wechat_h5_pay', '订单创建成功', $res);
  290. // } else {
  291. // return app('json')->status('wechat_pay', '订单创建成功', $res);
  292. // }
  293. // }
  294. // case 'yue':
  295. // if (CashTradeOrderPayment::yuePay($orderId, $request->uid()))
  296. // return app('json')->status('success', '余额支付成功');
  297. // else {
  298. // $errorinfo = CashTradeOrderPayment::getErrorInfo();
  299. // if (is_array($errorinfo))
  300. // return app('json')->status($errorinfo['status'], $errorinfo['msg']);
  301. // else
  302. // return app('json')->status('pay_error', $errorinfo);
  303. // }
  304. // case 'ali':
  305. // try {
  306. // $jsConfig = AliPayService::createTrade($orderId); //创建订单jspay
  307. // } catch (\Exception $e) {
  308. // return app('json')->status('pay_error', $e->getMessage());
  309. // }
  310. // $res['jsConfig'] = $jsConfig;
  311. // return app('json')->status('ali_pay', '订单创建成功', $res);
  312. // default:
  313. // return app('json')->fail('支付方式错误');
  314. // }
  315. // } else return app('json')->fail(CashTradeOrder::getErrorInfo('订单生成失败!'));
  316. break;
  317. default:
  318. $res = false;
  319. break;
  320. }
  321. if ($res) {
  322. return app('json')->success('挂出成功');
  323. } else {
  324. return app('json')->fail('挂出失败:' . CashTradeOrder::getErrorInfo('挂出错误'));
  325. }
  326. }
  327. public function fast_sale(Request $request)
  328. {
  329. $user = $request->user();
  330. $uid = $user['uid'];
  331. list($money_type, $money_num, , $captcha, $bank_id) = UtilService::postMore([
  332. ['money_type', 'USDT', '', '', ['not_empty_check', function ($item) {
  333. $moneys = sys_data('money_type');
  334. $new_money = [];
  335. foreach ($moneys as $v) {
  336. if ($v['is_trade'] == 1) {
  337. $new_money[] = $v['code'];
  338. }
  339. }
  340. return in_array($item, $new_money);
  341. }], ['请选择交易的币种', '请选择支持交易的币种']],
  342. ['money_num', 0],
  343. ['trade_psw', '', '', '', ['not_empty_check', function ($item) use ($user) {
  344. return md5(md5($item)) == $user['trade_pwd'];
  345. }], ['请输入交易密码', '交易密码错误']],
  346. ['captcha', ''],
  347. ['bank_id', '', '', '', ['not_empty_check'], ['请选择收款方式']]
  348. ], $request, true);
  349. if ($money_num <= 0) {
  350. return app('json')->fail('请输入币数');
  351. }
  352. // var_dump($bank_id);
  353. $price = 0;
  354. $money = sys_data('money_type');
  355. foreach ($money as $v) {
  356. if ($v['code'] == $money_type) {
  357. $price = $v['price'] ?: CashTradeOrder::averagePrice($v['code']);
  358. }
  359. }
  360. $sum = bcmul($money_num, $price, 2);
  361. if ($sum >= 10000) {
  362. $verifyCode = CacheService::get('code_' . $user['account']);
  363. if (!$verifyCode)
  364. return app('json')->fail('请先获取验证码');
  365. $verifyCode = substr($verifyCode, 0, 6);
  366. if ($verifyCode != $captcha)
  367. return app('json')->fail('验证码错误');
  368. }
  369. $res = CashTradeOrder::fastSale($uid, $money_type, $money_num, $price, $bank_id);
  370. if ($res) {
  371. return app('json')->success('卖出成功,请等待商家处理');
  372. } else {
  373. return app('json')->fail('卖出失败:' . CashTradeOrder::getErrorInfo('挂出错误'));
  374. }
  375. }
  376. public function trade(Request $request)
  377. {
  378. $user = $request->user();
  379. $uid = $user['uid'];
  380. list($id, $trade_way, $from, , $captcha, $bank_id) = UtilService::postMore([
  381. ['id', 'USDT', '', '', ['not_empty_check'], ['请选择要进行的交易']],
  382. ['trade_way', 'weixin'],
  383. ['from', 'weixin'],
  384. ['trade_psw', '', '', '', ['not_empty_check', function ($item) use ($user) {
  385. return md5(md5($item)) == $user['trade_pwd'];
  386. }], ['请输入交易密码', '交易密码错误']],
  387. ['captcha', ''],
  388. ['bank_id', '']
  389. ], $request, true);
  390. $order = CashTradeOrder::setStatus(1)->where('id', $id)->find();
  391. if ($order['uid'] == $uid) {
  392. return app('json')->fail('不可交易自己发起的订单');
  393. }
  394. // var_dump(CashTradeOrder::getLastSql());
  395. if (!$order) {
  396. return app('json')->fail('订单不存在或已结束挂出');
  397. }
  398. $sum = bcmul($order['money_num'], $order['price'], 2);
  399. if ($sum >= 10000) {
  400. $verifyCode = CacheService::get('code_' . $user['account']);
  401. if (!$verifyCode)
  402. return app('json')->fail('请先获取验证码');
  403. $verifyCode = substr($verifyCode, 0, 6);
  404. if ($verifyCode != $captcha)
  405. return app('json')->fail('验证码错误');
  406. }
  407. switch ($order['trade_type']) {
  408. case 2:
  409. $res = CashTradeOrder::sale($uid, $id, $bank_id);
  410. break;
  411. case 1:
  412. $res = CashTradeOrder::buy2($uid, $id);
  413. // if ($res) {
  414. // $orderId = $res['order_id'];
  415. // switch ($trade_way) {
  416. // case "weixin":
  417. // $orderInfo = CashTradeOrderPayment::where('order_id', $orderId)->find();
  418. // if (!$orderInfo || !isset($orderInfo['paid'])) return app('json')->fail('支付订单不存在!');
  419. // $orderInfo = $orderInfo->toArray();
  420. // if ($orderInfo['paid']) return app('json')->fail('支付已支付!');
  421. // //支付金额为0
  422. // if (bcsub((float)$orderInfo['pay_money'], 0, 2) <= 0) {
  423. // //创建订单jspay支付
  424. // $payPriceStatus = CashTradeOrderPayment::jsPayPrice($orderId, $uid);
  425. // if ($payPriceStatus)//0元支付成功
  426. // return app('json')->status('success', '微信支付成功');
  427. // else
  428. // return app('json')->status('pay_error', CashTradeOrderPayment::getErrorInfo());
  429. // } else {
  430. // try {
  431. // if ($from == 'routine') {
  432. // $jsConfig = OrderRepository::tradeJsPay($orderId); //创建订单jspay
  433. // } else if ($from == 'weixinh5') {
  434. // $jsConfig = OrderRepository::tradeH5Pay($orderId);
  435. // } else {
  436. // $jsConfig = OrderRepository::tradeWxPay($orderId);
  437. // }
  438. // } catch (\Exception $e) {
  439. // return app('json')->status('pay_error', $e->getMessage());
  440. // }
  441. // $res['jsConfig'] = $jsConfig;
  442. // if ($from == 'weixinh5') {
  443. // return app('json')->status('wechat_h5_pay', '订单创建成功', $res);
  444. // } else {
  445. // return app('json')->status('wechat_pay', '订单创建成功', $res);
  446. // }
  447. // }
  448. // case 'yue':
  449. // if (CashTradeOrderPayment::yuePay($orderId, $request->uid()))
  450. // return app('json')->status('success', '余额支付成功');
  451. // else {
  452. // $errorinfo = CashTradeOrderPayment::getErrorInfo();
  453. // if (is_array($errorinfo))
  454. // return app('json')->status($errorinfo['status'], $errorinfo['msg']);
  455. // else
  456. // return app('json')->status('pay_error', $errorinfo);
  457. // }
  458. // case 'ali':
  459. // try {
  460. // $jsConfig = AliPayService::createTrade($orderId); //创建订单jspay
  461. // } catch (\Exception $e) {
  462. // return app('json')->status('pay_error', $e->getMessage());
  463. // }
  464. // $res['jsConfig'] = $jsConfig;
  465. // return app('json')->status('ali_pay', '订单创建成功', $res);
  466. // default:
  467. // return app('json')->fail('支付方式错误');
  468. // }
  469. // } else return app('json')->fail(CashTradeOrder::getErrorInfo('订单生成失败!'));
  470. break;
  471. default:
  472. $res = false;
  473. break;
  474. }
  475. if ($res) {
  476. $info = CashTradeOrder::get($id);
  477. $info['user'] = User::getUserInfo($info['uid']);
  478. if ($info['bank_info'])
  479. $info['bank'] = json_decode($info['bank_info'], true);
  480. return app('json')->success('交易开始进行,' . $order['trade_type'] == 1 ? '请通过用户的转账方式交易并上传交易凭证' : '请等待买家转账并上传凭证', ['data' => $info]);
  481. } else {
  482. return app('json')->fail('交易失败:' . CashTradeOrder::getErrorInfo('挂出错误'));
  483. }
  484. }
  485. public function myOrder(Request $request)
  486. {
  487. $where = UtilService::getMore([
  488. ['money_type', ''],
  489. ['page', 1],
  490. ['limit', 10],
  491. ['status', ''],
  492. ['trade_type', '']
  493. ], $request);
  494. // $where['trade_type'] = 2;
  495. $where['uid'] = $request->uid();
  496. return app('json')->success('ok', CashTradeOrder::getList($where));
  497. }
  498. public function uploadProof($id, Request $request)
  499. {
  500. $order = CashTradeOrder::get($id);
  501. $proof = $request->post('proof', '');
  502. if (!not_empty_check($proof)) return app('json')->fail('请上传凭证');
  503. if ($order['close_time'] && $order['close_time'] < time()) return app('json')->fail('订单已关闭');
  504. switch ($order['trade_type']) {
  505. case 1:
  506. if ($order['trade_uid'] != $request->uid()) return app('json')->fail('订单交易方错误');
  507. if ($order['status'] != -1) return app('json')->fail('订单状态错误');
  508. break;
  509. case 2:
  510. if ($order['uid'] != $request->uid()) return app('json')->fail('订单交易方错误');
  511. if ($order['status'] != 0) return app('json')->fail('订单状态错误');
  512. break;
  513. default:
  514. break;
  515. }
  516. $res = CashTradeOrder::where('id', $id)->update(['proof' => $proof, 'status' => 3]);
  517. if ($res) {
  518. return app('json')->fail('上传成功');
  519. } else {
  520. return app('json')->fail('上传失败');
  521. }
  522. }
  523. public function cancel($id, Request $request)
  524. {
  525. $order = CashTradeOrder::get($id);
  526. if ($order['close_time'] && $order['close_time'] < time()) return app('json')->fail('订单已关闭');
  527. if ($order['status'] > 0) return app('json')->fail('订单不可撤销');
  528. if ($order['uid'] != $request->uid() && $order['trade_uid'] != $request->uid()) return app('json')->fail('订单错误');
  529. BaseModel::beginTrans();
  530. $res = true;
  531. switch ($order['trade_type']) {
  532. case 1:
  533. //退回币
  534. $res = $res && UserMoney::incomeMoney($order['uid'], $order['money_type'], $order['money_num'], 'hang_sale_cancel', '挂卖取消', '挂卖取消,退回钱包');
  535. $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 2]);
  536. break;
  537. case 2:
  538. //
  539. if ($order['trade_uid'] && $request->uid() == $order['trade_uid']) {
  540. $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'hang_buy_cancel', '挂买取消', '挂买取消,退回钱包');
  541. $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 0, 'trade_uid' => '']);
  542. } else {
  543. if ($order['trade_uid']) {
  544. $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'hang_buy_cancel', '挂买取消', '挂买取消,退回钱包');
  545. }
  546. $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 2]);
  547. }
  548. break;
  549. default:
  550. break;
  551. }
  552. BaseModel::checkTrans($res);
  553. if ($res) {
  554. return app('json')->success('取消成功');
  555. } else {
  556. return app('json')->fail('取消失败');
  557. }
  558. }
  559. public function check($id, $ok, Request $request)
  560. {
  561. $order = CashTradeOrder::where('id', $id)->where('status', 3)->find();
  562. if (!$order) return app('json')->fail('订单异常');
  563. if (!in_array($ok, ['y', 'n'])) return app('json')->fail('参数错误');
  564. $res = true;
  565. BaseModel::beginTrans();
  566. if ($ok == 'y') {
  567. switch ($order['trade_type']) {
  568. case 1:
  569. if ($order['uid'] != $request->uid()) return app('json')->fail('订单审核方错误');
  570. $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'buy_success', '购币成功', '购币成功,出售方ID' . $order['uid']);
  571. break;
  572. case 2:
  573. if ($order['trade_uid'] != $request->uid()) return app('json')->fail('订单审核方错误');
  574. $res = $res && UserMoney::incomeMoney($order['uid'], $order['money_type'], $order['money_num'], 'buy_success', '购币成功', '购币成功,出售方ID' . $order['trade_uid']);
  575. break;
  576. default:
  577. break;
  578. }
  579. $res = $res && CashTradeOrder::where('id', $id)->update(['status' => 1, 'trade_time' => time()])
  580. && CashTradeOrder::brokerage($id);
  581. BaseModel::checkTrans($res);
  582. if ($res) {
  583. return app('json')->success('审核成功');
  584. } else {
  585. return app('json')->fail('审核失败');
  586. }
  587. } else {
  588. return app('json')->fail('请联系后台审核');
  589. }
  590. }
  591. }