Order.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace Factory\Lib;
  3. use Dever;
  4. class Order
  5. {
  6. # 得到商品和总价
  7. private function goods()
  8. {
  9. $goods = Dever::input('goods');
  10. if (!$goods) {
  11. Dever::alert('请传入商品');
  12. }
  13. $goods = Dever::json_decode($goods);
  14. $this->data['price'] = 0;
  15. $this->data['num'] = 0;
  16. $this->data['name'] = array();
  17. $factory_id = Dever::input('factory_id');
  18. # 计算总价格
  19. foreach ($goods as $k => $v) {
  20. if (strstr($v['id'], '-')) {
  21. $t = explode('-', $v['id']);
  22. $v['id'] = $t[0];
  23. $s = $t[1];
  24. } else {
  25. $s = -1;
  26. }
  27. $n = $v['num'];
  28. $goods_sku = Dever::db('factory/goods_sku')->find(array('factory_id' => $factory_id, 'goods_id' => $v['id'], 'sku_id' => $s));
  29. $this->data['list'][$k] = Dever::load('goods/lib/info')->getPayInfo($v['id'], $s, $n);
  30. $this->data['list'][$k]['num'] = $n;
  31. $this->data['list'][$k]['buy_num'] = $n;
  32. $this->data['num'] += $n;
  33. if ($goods_sku) {
  34. $price = $goods_sku['p_price'];
  35. } else {
  36. $price = $this->data['list'][$k]['price'];
  37. }
  38. $this->data['price'] += $price * $n;
  39. $this->data['name'][] = $this->data['list'][$k]['name'];
  40. }
  41. $this->data['name'] = implode(',', $this->data['name']);
  42. }
  43. # 下单
  44. public function action_commit_api()
  45. {
  46. $info = Dever::input('info');
  47. $this->goods();
  48. $order_data['type'] = 2;
  49. $order_data['type_id'] = Dever::input('store_id');
  50. $order_data['source_id'] = Dever::input('factory_id');
  51. $order_data['source_type'] = 3;
  52. $order_data['name'] = $this->data['name'];
  53. $order_data['num'] = $this->data['num'];
  54. $order_data['info'] = $info;
  55. $order_data['price'] = $this->data['price'];
  56. $order_data['status'] = 3;
  57. $order_data['order_num'] = $this->getOrderId();
  58. $id = Dever::db('shop/buy_order')->insert($order_data);
  59. if (!$id) {
  60. Dever::alert('下单失败');
  61. }
  62. foreach($this->data['list'] as $k => $v) {
  63. $data['order_id'] = $id;
  64. $data['goods_id'] = $v['id'];
  65. $data['sku_id'] = $v['sku_id'];
  66. $data['price'] = $v['price'] * $v['buy_num'];
  67. $data['num'] = $v['buy_num'];
  68. $state = Dever::db('shop/buy_order_goods')->insert($data);
  69. }
  70. return Dever::url('project/database/list&project=shop&&table=buy_order&menu=shop&menu_id=77&search_option_state=1&search_option_type=2', 'manage');
  71. }
  72. # 生成订单号
  73. public function getOrderId()
  74. {
  75. $where['order_num'] = Dever::order('F');
  76. $state = Dever::db('shop/buy_order')->one($where);
  77. if (!$state) {
  78. return $where['order_num'];
  79. } else {
  80. return $this->getOrderId();
  81. }
  82. }
  83. }