Order.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace addons\shopro\controller\trade;
  3. use addons\shopro\controller\Common;
  4. use app\admin\model\shopro\trade\Order as TradeOrderModel;
  5. use app\admin\model\shopro\Config;
  6. //充值
  7. class Order extends Common
  8. {
  9. protected $noNeedLogin = [];
  10. protected $noNeedRight = ['*'];
  11. public function index()
  12. {
  13. $user = auth_user();
  14. $params = $this->request->param();
  15. $type = $params['type'] ?? 'recharge';
  16. if (!in_array($type, ['recharge'])) {
  17. $this->error('参数错误');
  18. }
  19. $orders = TradeOrderModel::{$type}()->where('user_id', $user->id)->paid()
  20. ->order('id', 'desc')->paginate($this->request->param('list_rows', 10));
  21. $this->success('获取成功', $orders);
  22. }
  23. public function detail()
  24. {
  25. $user = auth_user();
  26. $id = $this->request->param('id');
  27. $order = TradeOrderModel::where('user_id', $user->id);
  28. $order = $order->where(function ($query) use($id) {
  29. return $query->where('id', $id)->whereOr('order_sn', $id);
  30. });
  31. $order = $order->find();
  32. if (!$order) {
  33. $this->error(__('No Results were found'));
  34. }
  35. $order->pay_type_text = $order->pay_type_text;
  36. $this->success('获取成功', $order);
  37. }
  38. public function rechargeRules()
  39. {
  40. $config = sheep_config('shop.recharge_withdraw.recharge');
  41. $config['status'] = $config['status'] ?? 0;
  42. $config['quick_amounts'] = $config['quick_amounts'] ?? [];
  43. $config['gift_type'] = $config['gift_type'] ?? 'money';
  44. $this->success('获取成功', $config);
  45. }
  46. public function recharge()
  47. {
  48. $user = auth_user();
  49. $params = $this->request->param();
  50. // 表单验证
  51. $this->svalidate($params, 'recharge');
  52. $recharge_money = floatval($params['recharge_money']);
  53. $config = Config::getConfigs('shop.recharge_withdraw.recharge');
  54. $recharge_status = $config['status'] ?? 0;
  55. $quick_amounts = $config['quick_amounts'] ?? [];
  56. $gift_type = $config['gift_type'] ?? 'money';
  57. if (!$recharge_status) {
  58. $this->error('充值入口已关闭');
  59. }
  60. if ($recharge_money < 0.01) {
  61. $this->error('请输入正确的充值金额');
  62. }
  63. $rule = ['money' => (string)$recharge_money];
  64. foreach ($quick_amounts as $quick_amount) {
  65. if (bccomp((string)$recharge_money, (string)$quick_amount['money'], 2) === 0) {
  66. $rule = $quick_amount;
  67. $rule['gift_type'] = $gift_type;
  68. }
  69. }
  70. $close_time = Config::getConfigs('shop.order.auto_close');
  71. $close_time = $close_time && $close_time > 0 ? $close_time : 0;
  72. $orderData = [];
  73. $orderData['type'] = 'recharge';
  74. $orderData['order_sn'] = get_sn($user->id, 'TO');
  75. $orderData['user_id'] = $user->id;
  76. $orderData['status'] = TradeOrderModel::STATUS_UNPAID;
  77. $orderData['order_amount'] = $recharge_money;
  78. $orderData['pay_fee'] = $recharge_money;
  79. $orderData['remain_pay_fee'] = $recharge_money;
  80. $orderData['platform'] = request()->header('platform');
  81. $orderData['remark'] = $params['remark'] ?? null;
  82. $ext = [
  83. 'expired_time' => time() + ($close_time * 60),
  84. 'rule' => $rule
  85. ];
  86. $orderData['ext'] = $ext;
  87. $order = new TradeOrderModel();
  88. $order->save($orderData);
  89. if ($close_time) {
  90. // 小于等于0, 不自动关闭订单
  91. \think\Queue::later(($close_time * 60), '\addons\shopro\job\trade\OrderAutoOper@autoClose', ['order' => $order], 'shopro');
  92. }
  93. $this->success('订单添加成功', $order);
  94. }
  95. }