StoreOrder.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\store\model;
  11. use app\model\BaseModel;
  12. use app\model\verify\Verify;
  13. class StoreOrder extends BaseModel
  14. {
  15. /**
  16. * 基础支付方式(不考虑实际在线支付方式或者货到付款方式)
  17. * @var unknown
  18. */
  19. public $pay_type = [
  20. 'OFFLINE_PAY' => '现金'
  21. ];
  22. /**
  23. * 获取支付方式
  24. */
  25. public function getPayType($site_id)
  26. {
  27. //获取订单基础的其他支付方式
  28. $pay_type = $this->pay_type;
  29. //获取当前所有在线支付方式
  30. $onlinepay = event('PayType', [ "app_type" => "pc", 'site_id' => $site_id ]);
  31. if (!empty($onlinepay)) {
  32. foreach ($onlinepay as $k => $v) {
  33. $pay_type[ $v[ 'pay_type' ] ] = $v[ 'pay_type_name' ];
  34. }
  35. }
  36. return $pay_type;
  37. }
  38. /**
  39. * 订单支付后操作
  40. * @param $order
  41. */
  42. public function orderPay($order)
  43. {
  44. if (empty($order[ 'delivery_store_id' ])) {
  45. return $this->success();
  46. }
  47. model('store')->startTrans();
  48. try {
  49. model('store')->setInc([ [ 'store_id', '=', $order[ 'delivery_store_id' ] ] ], 'order_num');
  50. model('store')->setInc([ [ 'store_id', '=', $order[ 'delivery_store_id' ] ] ], 'order_money', $order[ 'order_money' ]);
  51. model('store_member')->setInc([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'order_num');
  52. model('store_member')->setInc([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'order_money', $order[ 'order_money' ]);
  53. //如果是否门店收银订单,订单会自动核销
  54. if ($order[ 'promotion_type' ] == 'store') {
  55. //主动调用核销流程
  56. $verifier_info = array (
  57. 'verifier_id' => 0,
  58. 'verifier_name' => '收银台订单自动核销',
  59. "verify_from" => 'store',
  60. 'verify_remark' => '门店名称:' . $order[ 'delivery_store_name' ],
  61. );
  62. $verify_model = new Verify();
  63. $result = $verify_model->verify($verifier_info, $order[ 'delivery_code' ]);
  64. if ($result[ 'code' ] < 0) {
  65. model('store')->rollback();
  66. return $result;
  67. }
  68. }
  69. model('store')->commit();
  70. return $this->success();
  71. } catch (\Exception $e) {
  72. model('store')->rollback();
  73. return $this->error('', $e->getMessage());
  74. }
  75. }
  76. /**
  77. * 门店订单完成后操作 todo 应该删除
  78. * @param $order
  79. */
  80. public function orderComplete($order_id)
  81. {
  82. // $order_info = model('order')->getInfo([['order_id', '=', $order_id]], '*');
  83. // if (empty($order_info['delivery_store_id'])) {
  84. // return $this->success();
  85. // }
  86. // model('store')->setInc([['store_id', '=', $order_info['delivery_store_id']]], 'order_complete_num');
  87. // model('store')->setInc([['store_id', '=', $order_info['delivery_store_id']]], 'order_complete_money', $order_info['order_money']);
  88. // model('store_member')->setInc([['member_id', '=', $order_info['member_id']]], 'order_complete_num');
  89. // model('store_member')->setInc([['member_id', '=', $order_info['member_id']]], 'order_complete_money', $order_info['order_money']);
  90. // Cache::tag("store")->clear();
  91. return $this->success();
  92. }
  93. }