OrderModel.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace app\api\model;
  3. use think\Db;
  4. use think\Model;
  5. class OrderModel extends Model
  6. {
  7. protected $name = 'order';
  8. /*
  9. * 用户余额支付
  10. */
  11. public function userMoneyPay($params)
  12. {
  13. $userInfo = UsersModel::where('user_id', $params['user_id'])->find();
  14. if (!$userInfo) {
  15. return json(['code' => 100, 'msg' => '网络错误', 'data' => '']);
  16. }
  17. //对照金额书否正确的
  18. $isMoney = Db::name('order_pre')->where('pre_id', $params['pre_id'])->where('money', $params['money'])->find();
  19. if (!$isMoney) {
  20. return json(['code' => 100, 'msg' => '金额不对', 'data' => '']);
  21. }
  22. if ($userInfo['user_money'] < $params['money']) {
  23. return json(['code' => 100, 'msg' => '您的余额不足', 'data' => '']);
  24. }
  25. Db::startTrans();
  26. try{
  27. //扣除用户余额
  28. $updUserMoney = UsersModel::where('user_id',$params['user_id'])->setDec('user_money',$params['money']);
  29. Db::commit();
  30. } catch (\Exception $e) {
  31. Db::rollback();
  32. }
  33. if (!$updUserMoney) {
  34. return json(['code' => 100, 'msg' => '扣款失败', 'data' => '']);
  35. }
  36. //创建订单信息
  37. $orderdata = array(
  38. 'user_id' => $params['user_id'],
  39. 'money' => $params['money'],
  40. 'freight' => $params['freight'],
  41. 'number' => $params['number'],
  42. 'create_time' => $params['create_time'],
  43. 'pay_time' => date("Y-m-d H:i:s",time()),
  44. 'state' => 1,
  45. );
  46. //生成已支付订单
  47. $addOrderId = Db::name('order')->insertGetId($orderdata);
  48. if (!$addOrderId) {
  49. return json(['code' => 100, 'msg' => '订单生成失败', 'data' => '']);
  50. }
  51. $list = $params['list'];
  52. //创建订单商品信息
  53. foreach ($list as &$v) {
  54. $order_commodity_data = array(
  55. 'c_id' => $v['c_id'],
  56. 'p_id' => $v['p_id'],
  57. 'colorid' => $v['colorid'],
  58. 'name' => $v['name'],
  59. 'p_name' => $v['p_name'],
  60. 'color' => $v['color'],
  61. 'buy_number' => $v['buy_number'],
  62. 'o_id' => $addOrderId,
  63. );
  64. //循环插入订单商品信息
  65. $add_order_commodity = Db::name('order_commodity')->insert($order_commodity_data);
  66. }
  67. if (!$add_order_commodity) {
  68. return json(['code' => 100, 'msg' => '网络错误', 'data' => '']);
  69. }
  70. //创建地址信息
  71. $order_address = array(
  72. 'a_id' => $params['a_id'],
  73. 'a_name' => $params['a_name'],
  74. 'a_tel' => $params['a_tel'],
  75. 'a_city' => $params['city'],
  76. 'a_area' => $params['area'],
  77. 'o_id' => $addOrderId
  78. );
  79. //订单地址添加
  80. $add_order_address = Db::name('order_address')->insert($order_address);
  81. if ($add_order_address) {
  82. return json(['code' => 200, 'msg' => '下单成功', 'data' => $addOrderId]);
  83. } else {
  84. return json(['code' => 200, 'msg' => '下单失败', 'data' => $addOrderId]);
  85. }
  86. }
  87. }