123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- declare (strict_types=1);
- namespace app\api\service\order;
- use app\api\model\OrderGoodsPackage as OrderGoodsPackageModel;
- use app\common\enum\order\DeliveryStatus as DeliveryStatusEnum;
- use app\common\library\helper;
- use app\common\service\BaseService;
- use app\common\model\Express as ExpressModel;
- use Endroid\QrCode\ErrorCorrectionLevel;
- use Endroid\QrCode\QrCode;
- /**
- * 订单详情服务类
- * Class Order
- * @package app\api\service\order
- */
- class Order extends BaseService
- {
- /**
- * 获取物流单号集合
- * @param $model
- * @return array
- * @author: zjwhust
- * @Time: 2021/9/30 17:27
- */
- public function getUserOrderExpress($model){
- $express_list['arr'] = $express_list['pac'] = [];
- foreach ($model['goods'] as $good){
- if($good['is_split_package']){
- $express_no = OrderGoodsPackageModel::where('order_goods_id',$good['order_goods_id'])->column('express_no');
- $express_list['pac'] = array_merge($express_list['pac'],$express_no);
- }else{
- if($good['express_no']){
- $express_list['arr'][] = $good['express_no'];
- }
- }
- }
- // 获取物流单号集合
- return $express_list;
- // return array_values(array_filter(array_unique(helper::getArrayColumn($model['goods'], 'express_no'))));
- }
- /**
- * 判断订单列表是否有多个物流单号
- * @param $model
- * @author: zjwhust
- * @Time: 2021/9/30 17:39
- */
- public function setUserOrder($model){
- foreach ($model as $item){
- if($item['delivery_status']==DeliveryStatusEnum::DELIVERED){//订单状态没有更改为已发货就不显示物流信息
- $split_package = array_values(array_unique(helper::getArrayColumn($item['goods'], 'is_split_package')));
- if(in_array(1,$split_package)){
- $item['is_mult_express_no'] = 2;
- $item['express_no'] = '';
- }else{
- $getOrderExpress = array_values(array_filter(array_unique(helper::getArrayColumn($item['goods'], 'express_no'))));
- $count = count($getOrderExpress);
- $item['is_mult_express_no'] = $count;
- $item['express_no'] = implode(',',$getOrderExpress);
- }
- }else{
- $item['is_mult_express_no'] = 0;
- $item['express_no'] = '';
- }
- }
- }
- /**
- * 单个物流显示物流详情
- * @param $order
- * @param $expressNo
- * @return array
- * @throws \app\common\exception\BaseException
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- * @author: zjwhust
- * @Time: 2021/10/8 16:25
- */
- public function getExpressDetail($order,$expressNo){
- $res = [];
- foreach ($order['goods'] as $goods){
- if($goods['express_no']==$expressNo){
- $res['order'] = [
- "express_no"=>$goods['express_no'],
- "express_company"=>$goods['express_company'],
- "address"=>$order['address'],
- ];
- $ExpressModel = new ExpressModel;
- $res['delivery'] = $ExpressModel->deliverylist($goods['express_no'], $goods['delivery_time'], 1);
- break;
- }else{
- foreach ($goods['package'] as $pack){
- if($pack['express_no']==$expressNo){
- $res['order'] = [
- "express_no"=>$pack['express_no'],
- "express_company"=>$pack['express_company'],
- "address"=>$order['address'],
- ];
- $ExpressModel = new ExpressModel;
- $res['delivery'] = $ExpressModel->deliverylist($pack['express_no'], $pack['delivery_time'], 1);
- break;
- }
- }
- }
- continue;
- }
- return $res;
- }
- //
- public function getExpressInfo($express_no,$delivery_time){
- $expressModel = new ExpressModel;
- $res = $expressModel->deliverylist($express_no,$delivery_time, 1);
- return $res;
- }
- /**
- * 多个物流订单显示物流列表
- * @param $order
- * @return array
- * @throws \app\common\exception\BaseException
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- * @author: zjwhust
- * @Time: 2021/10/8 15:20
- */
- public function getExpressList($order){
- $res = [];
- foreach ($order['goods'] as $goods){
- if($goods['is_split_package']){
- foreach ($goods['package'] as $pack){
- $res[$pack['express_no']]['express_company'] = $pack['express_company'];
- $res[$pack['express_no']]['express_no'] = $pack['express_no'];
- $res[$pack['express_no']]['order_no'] = $order['order_no'];
- $res[$pack['express_no']]['order_id'] = $order['order_id'];
- $res[$pack['express_no']]['pay_time'] = $order['pay_time'];
- $res[$pack['express_no']]['goods'][] = $goods;
- $res[$pack['express_no']]['total_nums'] = $pack['total_num'];
- $res[$pack['express_no']]['delivery_time'] = $pack['delivery_time'];
- $res[$pack['express_no']]['is_split_package'] = $goods['is_split_package'];
- }
- }else{
- if($goods['express_no']){
- $res[$goods['express_no']]['express_company'] = $goods['express_company'];
- $res[$goods['express_no']]['express_no'] = $goods['express_no'];
- $res[$goods['express_no']]['order_no'] = $order['order_no'];
- $res[$goods['express_no']]['order_id'] = $order['order_id'];
- $res[$goods['express_no']]['pay_time'] = $order['pay_time'];
- $res[$goods['express_no']]['goods'][] = $goods;
- $res[$goods['express_no']]['delivery_time'] = $goods['delivery_time'];
- $res[$goods['express_no']]['is_split_package'] = $goods['is_split_package'];
- }
- }
- unset($goods['package']);
- }
- $ExpressModel = new ExpressModel;
- foreach ($res as &$express){
- $express['express'] = $ExpressModel->deliverylist($express['express_no'], $express['delivery_time'], 2);
- if(!$express['is_split_package']){
- $express['total_nums'] = helper::getArrayColumnSum($express['goods'],'total_num');
- }
- }
- return array_values($res);
- }
- /**
- * 生成核销码二维码地址
- */
- public static function getHxQrcode($hxCode) {
-
- $qrCode = new QrCode($hxCode);
- $qrCode->setSize(300);
- // Set advanced options
- $qrCode->setWriterByName('png');
- $qrCode->setMargin(10);
- $qrCode->setEncoding('UTF-8');
- $qrCode->setErrorCorrectionLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::HIGH));
- $qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]);
- $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
- $qrCode->setWriterOptions(['exclude_xml_declaration' => true]);
- // Directly output the QR code
- header('Content-Type: '.$qrCode->getContentType());
- exit($qrCode->writeString());
- }
- }
|