| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <?php
- /**
- * Niushop商城系统 - 团队十年电商经验汇集巨献!
- * =========================================================
- * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
- * ----------------------------------------------
- * 官方网址: https://www.niushop.com
- * =========================================================
- */
- namespace addon\cashier\model\order;
- use app\model\BaseModel;
- use think\facade\Log;
- /**
- * 挂单
- *
- * @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('cashier_pendorder')->startTrans();
- try {
- $order_id = model('cashier_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' ],
- 'goods_class' => $item[ 'goods_class' ]
- ]);
- }
- model('cashier_pendorder_goods')->addList($order_goods);
- model('cashier_pendorder')->commit();
- return $this->success($order_id);
- } catch (\Exception $e) {
- model('cashier_pendorder')->rollback();
- Log::write('挂单出现错误,错误原因:' . $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;
- $join = [
- [ 'goods g', 'sku.goods_id=g.goods_id', 'inner' ],
- [ 'store_goods_sku sgs', 'sku.sku_id=sgs.sku_id and sgs.store_id=' . $param[ 'store_id' ], 'inner' ],
- ];
- foreach ($param[ 'goods' ] as $k => $item) {
- if (isset($item[ 'money' ]) && $item[ 'money' ] > 0) {
- $param[ 'goods' ][ $k ][ 'price' ] = round($item[ 'money' ], 2);
- $param[ 'goods' ][ $k ][ 'goods_class' ] = 'money';
- } else {
- $sku_info = model('goods_sku')->getInfo([ [ 'sku.sku_id', '=', $item[ 'sku_id' ] ] ], 'sku.goods_class,IF(g.is_unify_price = 1,sku.price,sgs.price) as price', 'sku', $join);
- if (empty($sku_info)) return $this->error('', '不存在的商品!');
- $param[ 'goods' ][ $k ][ 'price' ] = $sku_info[ 'price' ];
- $param[ 'goods' ][ $k ][ 'goods_class' ] = $sku_info[ 'goods_class' ];
- }
- $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('cashier_pendorder')->startTrans();
- try {
- $condition = [
- [ 'site_id', '=', $param[ 'site_id' ] ],
- [ 'store_id', '=', $param[ 'store_id' ] ],
- [ 'order_id', '=', $param[ 'order_id' ] ]
- ];
- model('cashier_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('cashier_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('cashier_pendorder_goods')->addList($order_goods);
- model('cashier_pendorder')->commit();
- return $this->success($param[ 'order_id' ]);
- } catch (\Exception $e) {
- model('cashier_pendorder')->rollback();
- Log::write('挂单出现错误,错误原因:' . $e->getMessage() . $e->getFile() . $e->getLine());
- return $this->error();
- }
- }
- /**
- * 挂单表编辑
- * @param $data
- * @param $where
- * @return array
- */
- public function update($data, $where)
- {
- $res = model('cashier_pendorder')->update($data, $where);
- if ($res) {
- return $this->success($res);
- } else {
- return $this->error();
- }
- }
- /**
- * 删除订单
- * @param $param
- */
- public function delete($param)
- {
- model('cashier_pendorder')->startTrans();
- try {
- $res = model('cashier_pendorder')->delete([
- [ 'site_id', '=', $param[ 'site_id' ] ],
- [ 'store_id', '=', $param[ 'store_id' ] ],
- [ 'order_id', '=', $param[ 'order_id' ] ]
- ]);
- if (!$res) {
- model('cashier_pendorder')->rollback();
- return $this->error();
- }
- model('cashier_pendorder_goods')->delete([ [ 'order_id', '=', $param[ 'order_id' ] ] ]);
- model('cashier_pendorder')->commit();
- return $this->success();
- } catch (\Exception $e) {
- model('cashier_pendorder')->rollback();
- Log::write('挂单删除出现错误,错误原因:' . $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('cashier_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 = [])
- {
- $list = model('cashier_pendorder_goods')->getList($condition, $field, $order, $alias, $join);
- foreach ($list as $k => $v) {
- if (isset($v[ 'num' ])) {
- $list[ $k ][ 'num' ] = numberFormat($list[ $k ][ 'num' ]);
- }
- }
- return $this->success($list);
- }
- }
|