GoodsOrderController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020-09-23
  6. * Time: 13:45
  7. */
  8. namespace api\js\controller;
  9. use api\js\model\GoodsModel;
  10. use api\js\model\GoodsOrderModel;
  11. use api\js\model\GoodsSeckillModel;
  12. use cmf\controller\RestUserBaseController;
  13. use think\Db;
  14. class GoodsOrderController extends RestUserBaseController
  15. {
  16. /**
  17. * 创建订单
  18. */
  19. public function addPost()
  20. {
  21. $user_id = $this->getUserId();
  22. $data['user_id'] = $user_id;
  23. $data['order_sn'] = cmf_get_order_sn();
  24. $data['goods_id'] = $this->request->param('goods_id');
  25. $data['seckill_id'] = $this->request->param('seckill_id');
  26. $data['price'] = GoodsModel::get($data['goods_id'])['price'];
  27. $data['num'] = $this->request->param('num');
  28. if($data['seckill_id']){
  29. $seckill_info = GoodsSeckillModel::get($data['seckill_id']);
  30. if($seckill_info['end_time'] < time()){
  31. $this->error('秒杀活动已结束!');
  32. }
  33. $goods_ids = $seckill_info->goods()->alias('a')->column('a.id');
  34. if(!in_array($data['goods_id'],$goods_ids)){
  35. $this->error('商品不在秒杀活动中!');
  36. }
  37. $data['seckill_price'] = GoodsModel::get($data['goods_id'])['seckill_price'];
  38. $data['pay_price'] = round($data['seckill_price'] * $data['num'],2);
  39. }else{
  40. $data['pay_price'] = round($data['price'] * $data['num'],2);
  41. }
  42. $data['user_address_id'] = $this->request->param('user_address_id');
  43. if(!$data['user_address_id']){
  44. $this->error('请选择地址!');
  45. }
  46. $GoodsOrderModel = new GoodsOrderModel();
  47. $GoodsOrderModel->allowField(true)->isUpdate(false)->save($data);
  48. $log['admin_id'] = $this->getUserId();
  49. $log['action_time'] = date('Y-m-d H:i:s');
  50. $log['obj_id'] = $GoodsOrderModel->id;
  51. $log['remark'] = '用户创建订单';
  52. Db::name('goods_order_action_log')->insert($log);
  53. $this->success('创建订单成功',$GoodsOrderModel->id);
  54. }
  55. public function getlist()
  56. {
  57. $GoodsOrderModel = new GoodsOrderModel();
  58. $status = $this->request->param('status');
  59. $where['user_id'] = $this->getUserId();
  60. $page = $this->request->param('page');
  61. $id = $this->request->param('id');
  62. if($id){
  63. $where['id'] = $id;
  64. }
  65. if($status !== ''){
  66. $where['status'] = $status;
  67. }
  68. $list = $GoodsOrderModel::with(['goods','seckill'])->where($where)->order('id','desc')->page($page,20)->select()->each(function ($list){
  69. $list->address = Db::name('user_address')->where('id',$list['user_address_id'])->find();
  70. return $list;
  71. });
  72. $this->success('ok',$list);
  73. }
  74. /**
  75. * 支付订单
  76. */
  77. public function pay()
  78. {
  79. $id = $this->request->param('id');
  80. $pay_type = $this->request->param('pay_type');
  81. switch ($pay_type)
  82. {
  83. case 'alipay';
  84. $res = aly_pay($id,2);
  85. if(!empty($res['return_code'])){
  86. $this->error($res['return_msg']);
  87. }else{
  88. $this->success('ok',$res);
  89. }
  90. break;
  91. case 'wxpay';
  92. $res = wx_pay($id,2);
  93. if(!empty($res['result_code'])){
  94. if($res['err_code_des']){
  95. $this->error($res['err_code_des']);
  96. }else{
  97. $this->error($res['return_msg']);
  98. }
  99. }else{
  100. $this->success('ok',$res);
  101. }
  102. break;
  103. case 'balance';
  104. $bool = balance_pay($id,2);
  105. if($bool === true){
  106. $this->success('支付成功');
  107. }else{
  108. $this->error($bool);
  109. }
  110. break;
  111. }
  112. }
  113. public function take()
  114. {
  115. $id = $this->request->param('order_id');
  116. $GoodsOrderModel = new GoodsOrderModel();
  117. $data['status'] = 3;
  118. $data['take_time'] = time();
  119. $GoodsOrderModel->allowField(true)->isUpdate(true)->save($data,['id'=>$id]);
  120. $log['admin_id'] = cmf_get_current_admin_id();
  121. $log['action_time'] = date('Y-m-d H:i:s');
  122. $log['obj_id'] = $id;
  123. $log['remark'] = '订单收货';
  124. Db::name('goods_order_action_log')->insert($log);
  125. $this->success('操作成功');
  126. }
  127. }