123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- <?php
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- namespace app\controller\store\order;
- use app\controller\store\AuthController;
- use app\Request;
- use app\services\other\export\ExportServices;
- use app\services\order\OtherOrderServices;
- use app\services\order\store\WriteOffOrderServices;
- use app\services\order\StoreOrderDeliveryServices;
- use app\services\order\StoreOrderServices;
- use app\services\store\DeliveryServiceServices;
- use app\services\store\SystemStoreServices;
- use app\services\user\UserRechargeServices;
- use crmeb\services\SystemConfigService;
- use think\facade\App;
- use \app\common\controller\Order as CommonOrder;
- /**
- * Class Order
- * @package app\controller\store\order
- * @property Request $request
- */
- class Order extends AuthController
- {
- use CommonOrder;
- /**
- * @var StoreOrderServices
- */
- protected $services;
- /**
- * Order constructor.
- * @param App $app
- * @param StoreOrderServices $services
- */
- public function __construct(App $app, StoreOrderServices $services)
- {
- parent::__construct($app);
- $this->services = $services;
- }
- /**
- * 订单列表
- * @return mixed
- */
- public function index()
- {
- $where = $this->request->getMore([
- ['order_type', ''],
- ['type', ''],
- ['pay_type', ''],
- ['status', ''],
- ['time', ''],
- ['staff_id', ''],
- ['real_name', '']
- ]);
- $where['is_system_del'] = 0;
- $where['store_id'] = $this->storeId;
- if (!$where['real_name'] && !in_array($where['status'], [-1, -2, -3])) {
- $where['pid'] = 0;
- }
- return $this->success($this->services->getOrderList($where, ['*'], ['split' => function ($query) {
- $query->field('id,pid');
- }, 'pink', 'invoice', 'storeStaff']));
- }
- /**
- * 获取订单类型数量
- * @return mixed
- */
- public function chart()
- {
- $where = $this->request->getMore([
- ['data', '', '', 'time'],
- [['type', 'd'], 0],
- ['order_type', ''],
- ['pay_type', ''],
- ]);
- $where['store_id'] = $this->storeId;
- $data = $this->services->orderStoreCount($where);
- return $this->success($data);
- }
- /**
- * 获取头部统计数据
- * @param UserRechargeServices $services
- * @param OtherOrderServices $orderServices
- * @return mixed
- */
- public function header(UserRechargeServices $services, OtherOrderServices $orderServices)
- {
- $data = $this->services->getStoreOrderHeader($this->storeId);
- $data['recharg'] = $services->getRechargeCount($this->storeId);
- $data['vip'] = $orderServices->getvipOrderCount($this->storeId);
- return $this->success($data);
- }
- /**
- * 获取配置信息
- * @return mixed
- */
- public function getDeliveryInfo(SystemStoreServices $storeServices)
- {
- $storeId = (int)$this->storeId;
- $storeInfo = [];
- if ($storeId) {
- $storeInfo = $storeServices->getStoreInfo($storeId);
- }
- $data = SystemConfigService::more([
- 'city_delivery_status',
- 'self_delivery_status',
- 'dada_delivery_status',
- 'uu_delivery_status'
- ]);
- return $this->success([
- 'express_temp_id' => store_config($this->storeId, 'store_config_export_temp_id'),
- 'id' => store_config($this->storeId, 'store_config_export_id'),
- 'to_name' => store_config($this->storeId, 'store_config_export_to_name'),
- 'to_tel' => store_config($this->storeId, 'store_config_export_to_tel'),
- 'to_add' => store_config($this->storeId, 'store_config_export_to_address'),
- 'export_open' => (bool)((int)store_config($this->storeId, 'store_config_export_open')),
- 'city_delivery_status' => $data['city_delivery_status'] && ($data['self_delivery_status'] || $data['dada_delivery_status'] || $data['uu_delivery_status']),
- 'self_delivery_status' => $data['city_delivery_status'] && $data['self_delivery_status'],
- 'dada_delivery_status' => $data['city_delivery_status'] && $data['dada_delivery_status'],
- 'uu_delivery_status' => $data['city_delivery_status'] && $data['uu_delivery_status'],
- ]);
- }
- /**
- * 订单导出
- * @param UserRechargeServices $services
- * @param ExportServices $exportServices
- * @param OtherOrderServices $otherOrderServices
- * @param $type
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function export(UserRechargeServices $services, ExportServices $exportServices, OtherOrderServices $otherOrderServices, $type)
- {
- switch ((int)$type) {
- case 1:
- $where_tmp = $this->request->postMore([
- ['status', ''],
- ['real_name', ''],
- ['time', ''],
- ['type', ''],
- ['orderType', ''],
- ['ids', '']
- ]);
- $orderType = $where_tmp['orderType'];
- unset($where_tmp['orderType']);
- $where['status'] = $where_tmp['status'];
- $where['real_name'] = $where_tmp['real_name'];
- $where['time'] = $where_tmp['time'];
- $where['type'] = $orderType;
- $with = [];
- if ($where_tmp['ids']) {
- $where['id'] = explode(',', $where_tmp['ids']);
- }
- $where['is_system_del'] = 0;
- if ($orderType == 7 || $orderType == 5) $where['pid'] = 0;
- $where['store_id'] = $this->storeId;
- $data = $this->services->getExportList($where, $with, $exportServices->limit);
- return $this->success($exportServices->storeOrder($data, ''));
- case 2:
- $where = $this->request->postMore([
- ['data', ''],
- ['paid', 1],
- ['nickname', ''],
- ['excel', '1'],
- ['staff_id', ''],
- ]);
- $where['store_id'] = $this->storeId;
- $data = $services->getRechargeList($where, '*', $exportServices->limit);
- return $this->success($exportServices->userRecharge($data['list'] ?? []));
- case 3:
- $where = $this->request->postMore([
- ['name', ""],
- ['add_time', ""],
- ['member_type', ""],
- ['pay_type', ""],
- ['staff_id', ''],
- ]);
- $where['store_id'] = $this->storeId;
- $data = $otherOrderServices->getMemberRecord($where, $exportServices->limit);
- return $this->success($exportServices->vipOrder($data['list'] ?? []));
- default:
- return $this->fail('导出类型错误');
- }
- }
- /**
- * @param DeliveryServiceServices $services
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function getDeliveryList(DeliveryServiceServices $services)
- {
- return $this->success($services->getDeliveryList(1, $this->storeId));
- }
- /**
- * 获取核销订单商品列表
- * @param Request $request
- * @param WriteOffOrderServices $writeOffOrderServices
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function orderCartInfo(Request $request, WriteOffOrderServices $writeOffOrderServices)
- {
- [$oid] = $request->postMore([
- ['oid', '']
- ], true);
- return app('json')->success($writeOffOrderServices->getOrderCartInfo(0, (int)$oid, 1, (int)$this->storeStaffId));
- }
- /**
- * 核销订单
- * @param Request $request
- * @param WriteOffOrderServices $writeOffOrderServices
- * @param $order_id
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function wirteoff(Request $request, WriteOffOrderServices $writeOffOrderServices, $order_id)
- {
- $orderInfo = $this->services->getOne(['order_id' => $order_id, 'is_del' => 0], '*', ['pink']);
- if (!$orderInfo) {
- return $this->fail('核销订单未查到!');
- }
- [$cart_ids] = $request->postMore([
- ['cart_ids', []]
- ], true);
- if ($cart_ids) {
- foreach ($cart_ids as $cart) {
- if (!isset($cart['cart_id']) || !$cart['cart_id'] || !isset($cart['cart_num']) || !$cart['cart_num'] || $cart['cart_num'] <= 0) {
- return $this->fail('请重新选择发货商品,或发货件数');
- }
- }
- }
- return app('json')->success('核销成功', $writeOffOrderServices->writeoffOrder(0, $orderInfo->toArray(), $cart_ids, 1, (int)$this->storeStaffId));
- }
- /**
- * 订单发送货
- * @param $id 订单id
- * @return mixed
- */
- public function update_delivery($id, StoreOrderDeliveryServices $services)
- {
- $data = $this->request->postMore([
- ['type', 1],
- ['delivery_name', ''],//快递公司名称
- ['delivery_id', ''],//快递单号
- ['delivery_code', ''],//快递公司编码
- ['express_record_type', 2],//发货记录类型
- ['express_temp_id', ""],//电子面单模板
- ['to_name', ''],//寄件人姓名
- ['to_tel', ''],//寄件人电话
- ['to_addr', ''],//寄件人地址
- ['sh_delivery_name', ''],//送货人姓名
- ['sh_delivery_id', ''],//送货人电话
- ['sh_delivery_uid', ''],//送货人ID
- ['delivery_type', 1],//送货类型
- ['station_type', 1],//送货类型
- ['cargo_weight', 0],//重量
- ['mark', '', '', 'remark'],//管理员备注
- ['remark', '', '', 'delivery_remark'],//第三方配送备注
- ['fictitious_content', '']//虚拟发货内容
- ]);
- if (!$id) {
- return $this->fail('缺少发货ID');
- }
- return $this->success('SUCCESS', $services->delivery((int)$id, $data, (int)$this->storeStaffId));
- }
- /**
- * 订单拆单发送货
- * @param $id 订单id
- * @return mixed
- */
- public function split_delivery($id, StoreOrderDeliveryServices $services)
- {
- $data = $this->request->postMore([
- ['type', 1],
- ['delivery_name', ''],//快递公司名称
- ['delivery_id', ''],//快递单号
- ['delivery_code', ''],//快递公司编码
- ['express_record_type', 2],//发货记录类型
- ['express_temp_id', ""],//电子面单模板
- ['to_name', ''],//寄件人姓名
- ['to_tel', ''],//寄件人电话
- ['to_addr', ''],//寄件人地址
- ['sh_delivery_name', ''],//送货人姓名
- ['sh_delivery_id', ''],//送货人电话
- ['sh_delivery_uid', ''],//送货人ID
- ['delivery_type', 1],//送货类型
- ['station_type', 1],//送货类型
- ['cargo_weight', 0],//重量
- ['mark', ''],//备注
- ['remark', ''],//配送备注
- ['fictitious_content', ''],//虚拟发货内容
- ['cart_ids', []]
- ]);
- if (!$id) {
- return $this->fail('缺少发货ID');
- }
- if (!$data['cart_ids']) {
- return $this->fail('请选择发货商品');
- }
- foreach ($data['cart_ids'] as $cart) {
- if (!isset($cart['cart_id']) || !$cart['cart_id'] || !isset($cart['cart_num']) || !$cart['cart_num']) {
- return $this->fail('请重新选择发货商品,或发货件数');
- }
- }
- $services->splitDelivery((int)$id, $data, (int)$this->storeStaffId);
- return $this->success('SUCCESS');
- }
- /**
- * 获取次卡商品核销表单
- * @param WriteOffOrderServices $writeOffOrderServices
- * @param $id
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function writeOrderFrom(WriteOffOrderServices $writeOffOrderServices, $id)
- {
- if (!$id) {
- return $this->fail('缺少核销订单ID');
- }
- [$cart_num] = $this->request->getMore([
- ['cart_num', 1]
- ], true);
- return $this->success($writeOffOrderServices->writeOrderFrom((int)$id, (int)$this->storeStaffId, (int)$cart_num));
- }
- /**
- * 次卡商品核销表单提交
- * @param WriteOffOrderServices $writeOffOrderServices
- * @param $id
- * @return \think\Response
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function writeoffFrom(WriteOffOrderServices $writeOffOrderServices, $id)
- {
- if (!$id) {
- return $this->fail('缺少核销订单ID');
- }
- $orderInfo = $this->services->getOne(['id' => $id, 'is_del' => 0], '*', ['pink']);
- if (!$orderInfo) {
- return $this->fail('核销订单未查到!');
- }
- $data = $this->request->postMore([
- ['cart_id', ''],//核销订单商品cart_id
- ['cart_num', 0]
- ]);
- $cart_ids[] = $data;
- if ($cart_ids) {
- foreach ($cart_ids as $cart) {
- if (!isset($cart['cart_id']) || !$cart['cart_id'] || !isset($cart['cart_num']) || !$cart['cart_num'] || $cart['cart_num'] <= 0) {
- return $this->fail('请重新选择发货商品,或发货件数');
- }
- }
- }
- return app('json')->success('核销成功', $writeOffOrderServices->writeoffOrder(0, $orderInfo->toArray(), $cart_ids, 1, (int)$this->storeStaffId));
- }
- /**
- * 易联云打印机打印
- * @param $id
- * @return mixed
- */
- public function order_print($id)
- {
- if (!$id) return app('json')->fail('缺少参数');
- $order = $this->services->get($id);
- if (!$order) {
- return app('json')->fail('订单没有查到,无法打印!');
- }
- $res = $this->services->orderPrint((int)$id, 1, (int)$this->storeId);
- if ($res) {
- return app('json')->success('打印成功');
- } else {
- return app('json')->fail('打印失败');
- }
- }
- }
|