| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com
- * =========================================================
- */
- namespace addon\store\model\cashier;
- use app\model\BaseModel;
- /**
- * 挂单
- *
- * @author Administrator
- *
- */
- class PendOrder extends BaseModel
- {
- /**
- * 添加
- * @param $param
- * @return array
- */
- public function add($param)
- {
- $res = $this->handleData($param);
- if ($res['code'] != 0) return $res;
- $param = $res['data'];
- model('store_pendorder')->startTrans();
- try {
- $order_id = model('store_pendorder')->add([
- 'site_id' => $param['site_id'],
- 'store_id' => $param['store_id'],
- 'member_id' => $param['member_id'] ?? 0,
- 'create_time' => time(),
- 'remark' => $param['remark'] ?? '',
- 'order_money' => $param['order_money'],
- 'discount_money' => $param['discount_money'] ?? 0.00,
- 'discount_data' => $param['discount'] ?? ''
- ]);
- $order_goods = [];
- foreach ($param['goods'] as $item) {
- array_push($order_goods, [
- 'order_id' => $order_id,
- 'site_id' => $param['site_id'],
- 'store_id' => $param['store_id'],
- 'goods_id' => $item['goods_id'],
- 'sku_id' => $item['sku_id'],
- 'num' => $item['num'],
- 'price' => $item['price']
- ]);
- }
- model('store_pendorder_goods')->addList($order_goods);
- model('store_pendorder')->commit();
- return $this->success($order_id);
- } catch (\Exception $e) {
- model('store_pendorder')->rollback();
- runlog('挂单出现错误,错误原因:'.$e->getMessage().$e->getFile().$e->getLine());
- return $this->error();
- }
- }
- private function handleData($param)
- {
- $store_info = model('store')->getInfo([ ['site_id', '=', $param['site_id'] ], ['store_id', '=', $param['store_id'] ] ], 'store_id');
- if (empty($store_info)) return $this->error('', '门店不存在!');
- $param['order_money'] = 0;
- foreach ($param['goods'] as $k => $item) {
- $goods_info = model('goods')->getInfo([ ['site_id', '=', $param['site_id'] ], ['goods_id', '=', $item['goods_id'] ], ['goods_state', '=', 1], ['is_delete', '=', 0] ], 'discount_price,goods_type');
- if (empty($goods_info)) return $this->error('', '不存在的商品!');
- if (!empty($goods_info['type'])) {
- $sku_info = model('store_goods_sku_data')->getInfo([ ['sku_id', '=', $item['sku_id'] ],['store_id', '=', $param['store_id'] ] ], 'stock,price');
- if (empty($sku_info)) return $this->error('', '不存在的商品!');
- $param['goods'][$k]['price'] = $sku_info['price'];
- if ($item['num'] > $sku_info['stock']) return $this->error('', '商品库存不足!');
- } else {
- $param['goods'][$k]['price'] = $goods_info['discount_price'];
- }
- $param['order_money'] += ($param['goods'][$k]['price'] * $item['num']);
- }
- return $this->success($param);
- }
- /**
- * 编辑
- * @param $param
- */
- public function edit($param)
- {
- $res = $this->handleData($param);
- if ($res['code'] != 0) return $res;
- $param = $res['data'];
- model('store_pendorder')->startTrans();
- try {
- $condition = [
- ['site_id', '=', $param['site_id'] ],
- ['store_id', '=', $param['store_id'] ],
- ['order_id', '=', $param['order_id'] ]
- ];
- model('store_pendorder')->update([
- 'member_id' => $param['member_id'] ?? 0,
- 'remark' => $param['remark'] ?? '',
- 'order_money' => $param['order_money'],
- 'discount_money' => $param['discount_money'] ?? 0.00,
- 'discount_data' => $param['discount'] ?? ''
- ], $condition);
- model('store_pendorder_goods')->delete($condition);
- $order_goods = [];
- foreach ($param['goods'] as $item) {
- array_push($order_goods, [
- 'order_id' => $param['order_id'],
- 'store_id' => $param['store_id'],
- 'site_id' => $param['site_id'],
- 'goods_id' => $item['goods_id'],
- 'sku_id' => $item['sku_id'],
- 'num' => $item['num'],
- 'price' => $item['price']
- ]);
- }
- model('store_pendorder_goods')->addList($order_goods);
- model('store_pendorder')->commit();
- return $this->success($param['order_id']);
- } catch (\Exception $e) {
- model('store_pendorder')->rollback();
- runlog('挂单出现错误,错误原因:'.$e->getMessage().$e->getFile().$e->getLine());
- return $this->error();
- }
- }
- /**
- * 挂单表编辑
- * @param $data
- * @param $where
- * @return array
- */
- public function update($data, $where)
- {
- $res = model('store_pendorder')->update($data, $where);
- if ($res) {
- return $this->success($res);
- } else {
- return $this->error();
- }
- }
- /**
- * 删除订单
- * @param $param
- */
- public function delete($param)
- {
- model('store_pendorder')->startTrans();
- try {
- $res = model('store_pendorder')->delete([
- ['site_id', '=', $param['site_id']],
- ['store_id', '=', $param['store_id'] ],
- ['order_id', '=', $param['order_id'] ]
- ]);
- if (!$res) {
- model('store_pendorder')->rollback();
- return $this->error();
- }
- model('store_pendorder_goods')->delete([ ['order_id', '=', $param['order_id'] ] ]);
- model('store_pendorder')->commit();
- return $this->success();
- } catch (\Exception $e) {
- model('store_pendorder')->rollback();
- runlog('挂单删除出现错误,错误原因:'.$e->getMessage().$e->getFile().$e->getLine());
- return $this->error();
- }
- }
- /**
- * 查询挂单分页列表
- * @param array $condition
- * @param bool $field
- * @param string $order
- * @param int $page
- * @param int $list_rows
- * @param string $alias
- * @param array $join
- * @return array
- */
- public function getOrderPageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [])
- {
- $data = model('store_pendorder')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join);
- return $this->success($data);
- }
- /**
- * 查询挂单商品项列表
- * @param array $condition
- * @param bool $field
- * @param string $order
- * @param string $alias
- * @param array $join
- * @return array
- */
- public function getOrderGoodsList($condition = [], $field = true, $order = '', $alias = 'a', $join = [])
- {
- $data = model('store_pendorder_goods')->getList($condition, $field, $order, $alias, $join);
- return $this->success($data);
- }
- }
|