Эх сурвалжийг харах

Merge branch 'dev_wf' of wufeng/fuse into version1.5

wufeng 2 жил өмнө
parent
commit
2edfcc8836

+ 51 - 0
app/admin/controller/OrderService.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\admin\logic\OrderServiceLogic;
+use app\BaseController;
+use think\exception\ValidateException;
+use think\facade\Config;
+use think\facade\Validate;
+
+class OrderService extends BaseController
+{
+
+    //列表
+    public function list()
+    {
+        $param = $this->request->only(['page' => 1, 'size' => 10, 'orderCode' => '', 'status' => '', 'name' => '', 'username' => '', 'start_date' => '', 'end_date' => ''], 'post');
+
+        return OrderServiceLogic::list($param);
+    }
+
+    //详情
+    public function read()
+    {
+        $id = $this->request->post('id/d', 0);
+        return OrderServiceLogic::read($id);
+    }
+
+    //导出
+    public function export()
+    {
+        $param = $this->request->only(['orderCode' => '', 'status' => '', 'name' => '', 'username' => '', 'start_date' => '', 'end_date' => ''], 'post');
+
+        return OrderServiceLogic::export($param);
+    }
+
+    //发货
+    public function deliver()
+    {
+
+        $list = $this->request->post('list/a', 'post');
+
+        $val = Validate::rule(['list|发货列表' => 'require|array|length:1,100']);
+
+        if (!$val->check(['list' => $list])) throw new ValidateException($val->getError());
+
+        return OrderServiceLogic::deliver($list);
+
+    }
+
+}

+ 5 - 5
app/admin/logic/OrderExchangeLogic.php

@@ -20,7 +20,7 @@ class OrderExchangeLogic extends BaseLogic
             ->leftJoin('card c', 'c.id=a.card_id AND c.is_del=' . CommonModel::$del_normal)
             ->leftJoin('card c', 'c.id=a.card_id AND c.is_del=' . CommonModel::$del_normal)
             ->leftJoin('account d', 'd.id=a.uid AND d.is_del=' . CommonModel::$del_normal)
             ->leftJoin('account d', 'd.id=a.uid AND d.is_del=' . CommonModel::$del_normal)
             ->leftJoin('addr e', 'e.id=a.addr_id AND e.is_del=' . CommonModel::$del_normal)
             ->leftJoin('addr e', 'e.id=a.addr_id AND e.is_del=' . CommonModel::$del_normal)
-            ->leftJoin('good f', 'f.id=a.good_id AND f.is_del=' . CommonModel::$del_normal)->where('a.is_del', CommonModel::$del_normal)
+            ->leftJoin('good f', 'f.id=a.good_id AND f.is_del=' . CommonModel::$del_normal)
             ->where('a.is_del', CommonModel::$del_normal);
             ->where('a.is_del', CommonModel::$del_normal);
 
 
         if ($data['orderCode'] != '') $db->whereLike('a.orderCode', '%' . $data['orderCode'] . '%');
         if ($data['orderCode'] != '') $db->whereLike('a.orderCode', '%' . $data['orderCode'] . '%');
@@ -95,7 +95,7 @@ class OrderExchangeLogic extends BaseLogic
         if ($data['username']) $db->whereLike('d.username', '%' . $data['username'] . '%');
         if ($data['username']) $db->whereLike('d.username', '%' . $data['username'] . '%');
         if (($data['start_date'] != '') && ($data['end_date'] != '')) $db->whereBetween('a.addtime', [$data['start_date'], $data['end_date']]);
         if (($data['start_date'] != '') && ($data['end_date'] != '')) $db->whereBetween('a.addtime', [$data['start_date'], $data['end_date']]);
 
 
-        $status = [OrderExchangeModel::$status_not_deliver => '待发货', OrderExchangeModel::$status_deliver => '已发货', OrderExchangeModel::$status_receipt => '已收货'];
+        $status = [CommonModel::$status_not_deliver => '待发货', CommonModel::$status_deliver => '已发货', CommonModel::$status_receipt => '已收货'];
         $list = $db
         $list = $db
             ->field('a.id 订单ID,a.orderCode 订单编号,b.title 业务公司,c.title 卡类型,d.name 购买用户名,d.username 购买账号,a.num 购买数量,e.contactor 收货联系人,e.mobile 收货联系电话,e.addr_code,a.status 状态,a.post_name 物流公司,a.post_code 物流单号,a.addtime 创建时间,e.addr,f.good_code 商品编码,f.good_name 商品名称')
             ->field('a.id 订单ID,a.orderCode 订单编号,b.title 业务公司,c.title 卡类型,d.name 购买用户名,d.username 购买账号,a.num 购买数量,e.contactor 收货联系人,e.mobile 收货联系电话,e.addr_code,a.status 状态,a.post_name 物流公司,a.post_code 物流单号,a.addtime 创建时间,e.addr,f.good_code 商品编码,f.good_name 商品名称')
             ->order('a.addtime desc')
             ->order('a.addtime desc')
@@ -131,7 +131,7 @@ class OrderExchangeLogic extends BaseLogic
         $temp = $db
         $temp = $db
             ->field('id,orderCode')
             ->field('id,orderCode')
             ->where(['is_del' => CommonModel::$del_normal])
             ->where(['is_del' => CommonModel::$del_normal])
-            ->where('status', '<>', $db::$status_not_deliver)
+            ->where('status', '<>', CommonModel::$status_not_deliver)
             ->whereIn('orderCode', array_column($list, 'orderCode'))
             ->whereIn('orderCode', array_column($list, 'orderCode'))
             ->findOrEmpty();
             ->findOrEmpty();
 
 
@@ -155,9 +155,9 @@ class OrderExchangeLogic extends BaseLogic
                 $db->where([
                 $db->where([
                     'is_del' => CommonModel::$del_normal,
                     'is_del' => CommonModel::$del_normal,
                     'orderCode' => $order['orderCode'],
                     'orderCode' => $order['orderCode'],
-                    'status' => $db::$status_not_deliver,
+                    'status' => CommonModel::$status_not_deliver,
                 ])->save([
                 ])->save([
-                    'status' => $db::$status_deliver,
+                    'status' => CommonModel::$status_deliver,
                     'post_name' => $order['post_name'],
                     'post_name' => $order['post_name'],
                     'post_code' => $order['post_code'],
                     'post_code' => $order['post_code'],
                     'updater' => self::$uname,
                     'updater' => self::$uname,

+ 192 - 0
app/admin/logic/OrderServiceLogic.php

@@ -0,0 +1,192 @@
+<?php
+
+namespace app\admin\logic;
+
+use app\model\CommonModel;
+use app\model\OrderServiceModel;
+use think\Exception;
+use think\facade\Db;
+use think\facade\Validate;
+use think\response\Json;
+
+class OrderServiceLogic extends BaseLogic
+{
+    //列表
+    public static function list(array $data = []): Json
+    {
+
+        $db = OrderServiceModel::alias('a')
+            ->leftJoin('service s', 's.id=a.service_id AND s.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company b', 'b.id=s.company_id AND b.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card c', 'c.id=s.card_id AND c.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('account d', 'd.id=a.uid AND d.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company bb', 'bb.id=d.company_id AND bb.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card cc', 'cc.id=d.card_id AND cc.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('addr e', 'e.id=a.addr_id AND e.is_del=' . CommonModel::$del_normal)
+            ->where('a.is_del', CommonModel::$del_normal);
+
+        if ($data['orderCode'] != '') $db->whereLike('a.orderCode', '%' . $data['orderCode'] . '%');
+        if ($data['status'] != '') $db->where('a.status', $data['status']);
+        if ($data['name'] !== '') $db->whereLike('d.name', '%' . $data['name'] . '%');
+        if ($data['username']) $db->whereLike('d.username', '%' . $data['username'] . '%');
+        if (($data['start_date'] != '') && ($data['end_date'] != '')) $db->whereBetween('a.addtime', [$data['start_date'], $data['end_date']]);
+
+        $count = $db->count('a.id');
+
+        $list = $db
+            ->field('a.id,a.orderCode,bb.title account_company_title,c.title account_card_title,d.name,d.username,a.num,e.contactor,e.mobile,e.addr_code,s.title,a.amount,a.status,a.addtime,a.post_name,a.post_code,"" addr_name,e.addr')
+            ->page($data['page'], $data['size'])
+            ->withAttr('addr_code', function ($val) {
+                return explode(',', $val);
+            })
+            ->withAttr('addr_name', function ($val, $da) {
+                $name = Db::name('area')
+                    ->whereIn('code', $da['addr_code'])
+                    ->column('name');
+                return implode($name);
+
+            })
+            ->order('a.addtime desc')
+            ->select()
+            ->toArray();
+
+        return json_show(CommonModel::$success, '获取服务订单列表成功', ['count' => $count, 'list' => $list]);
+    }
+
+    //详情
+    public static function read(int $id = 0): Json
+    {
+        $rs = OrderServiceModel::alias('a')
+            ->field('a.id,a.orderCode,bb.title account_company_title,c.title account_card_title,d.name,d.username,a.num,e.contactor,e.mobile,e.addr_code,s.title,a.amount,a.status,a.addtime,a.post_name,a.post_code,"" addr_name,e.addr')
+            ->leftJoin('service s', 's.id=a.service_id AND s.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company b', 'b.id=s.company_id AND b.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card c', 'c.id=s.card_id AND c.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('account d', 'd.id=a.uid AND d.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company bb', 'bb.id=d.company_id AND bb.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card cc', 'cc.id=d.card_id AND cc.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('addr e', 'e.id=a.addr_id AND e.is_del=' . CommonModel::$del_normal)
+            ->where(['a.is_del' => CommonModel::$del_normal, 'a.id' => $id])
+            ->withAttr('addr_code', function ($val) {
+                return explode(',', $val);
+            })
+            ->withAttr('addr_name', function ($val, $da) {
+                $name = Db::name('area')
+                    ->whereIn('code', $da['addr_code'])
+                    ->column('name');
+                return implode($name);
+
+            })
+            ->findOrEmpty()
+            ->toArray();
+        return json_show(CommonModel::$success, '获取商品详情成功', $rs);
+    }
+
+    //导出
+    public static function export(array $data = []): Json
+    {
+
+        $db = OrderServiceModel::alias('a')
+            ->leftJoin('service s', 's.id=a.service_id AND s.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company b', 'b.id=s.company_id AND b.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card c', 'c.id=s.card_id AND c.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('account d', 'd.id=a.uid AND d.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('company bb', 'bb.id=d.company_id AND bb.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('card cc', 'cc.id=d.card_id AND cc.is_del=' . CommonModel::$del_normal)
+            ->leftJoin('addr e', 'e.id=a.addr_id AND e.is_del=' . CommonModel::$del_normal)
+            ->where('a.is_del', CommonModel::$del_normal);
+
+        if ($data['orderCode'] != '') $db->whereLike('a.orderCode', '%' . $data['orderCode'] . '%');
+        if ($data['status'] != '') $db->where('a.status', $data['status']);
+        if ($data['name'] !== '') $db->whereLike('d.name', '%' . $data['name'] . '%');
+        if ($data['username']) $db->whereLike('d.username', '%' . $data['username'] . '%');
+        if (($data['start_date'] != '') && ($data['end_date'] != '')) $db->whereBetween('a.addtime', [$data['start_date'], $data['end_date']]);
+
+        $list = $db
+            ->field('a.id 订单ID,a.orderCode 订单编号,bb.title 购买账号业务公司,c.title 购买账号卡类型,d.name 购买用户名,d.username 购买账号,a.num 购买数量,e.contactor 收货联系人,e.mobile 收货联系电话,e.addr_code,s.title 服务名称,a.amount 支付金额,a.status 状态,a.addtime 创建时间,a.post_name 物流公司,a.post_code 物流单号,e.addr')
+            ->withAttr('addr_name', function ($val, $da) {
+                $name = Db::name('area')
+                    ->whereIn('code', $da['addr_code'])
+                    ->column('name');
+                return implode($name);
+
+            })
+            ->order('a.addtime desc')
+            ->cursor();
+
+        $status = [CommonModel::$status_not_deliver => '待发货', CommonModel::$status_deliver => '已发货', CommonModel::$status_receipt => '已收货'];
+
+        $da = [];
+        foreach ($list as $v) {
+            $v = $v->toArray();
+            $area_name = Db::name('area')
+                ->whereIn('code', $v['addr_code'])
+                ->column('name');
+            $v['收货地址'] = implode('', $area_name) . $v['addr'];
+            $v['状态'] = $status[$v['状态']] ?? '';
+
+            unset($v['addr_code']);
+            unset($v['addr']);
+
+            $da[] = $v;
+        }
+
+        if (empty($da)) $da[] = '没有可供导出的数据';
+
+        $headerArr = array_keys($da[0]);
+        excel_save('服务订单导出' . date('YmdHis'), $headerArr, $da);
+
+    }
+
+    //发货
+    public static function deliver(array $list = [])
+    {
+
+        $db = new OrderServiceModel();
+        $temp = $db
+            ->field('id,orderCode')
+            ->where(['is_del' => CommonModel::$del_normal])
+            ->where('status', '<>', CommonModel::$status_not_deliver)
+            ->whereIn('orderCode', array_column($list, 'orderCode'))
+            ->findOrEmpty();
+
+        if (!$temp->isEmpty()) return json_show(CommonModel::$error_param, $temp->orderCode . '订单并不是未发货状态');
+
+        $val = Validate::rule([
+            'orderCode|订单编号' => 'require|length:18',
+            'post_name|物流公司' => 'require|max:255',
+            'post_code|物流单号' => 'require|max:255',
+        ]);
+
+        Db::startTrans();
+        try {
+
+            $date = date('Y-m-d H:i:s');
+
+            foreach ($list as $order) {
+
+                if (!$val->check($order)) throw new Exception($val->getError());
+
+                $db->where([
+                    'is_del' => CommonModel::$del_normal,
+                    'orderCode' => $order['orderCode'],
+                    'status' => CommonModel::$status_not_deliver,
+                ])->save([
+                    'status' => CommonModel::$status_deliver,
+                    'post_name' => $order['post_name'],
+                    'post_code' => $order['post_code'],
+                    'updater' => self::$uname,
+                    'updaterid' => self::$uid,
+                    'updatetime' => $date,
+                ]);
+            }
+
+            Db::commit();
+            return json_show(CommonModel::$success, '发货成功');
+        } catch (Exception $exception) {
+            Db::rollback();
+            return json_show(CommonModel::$error_param, '发货失败,' . $exception->getMessage());
+        }
+
+    }
+
+}

+ 1 - 1
app/admin/middleware/apiMiddleware.php

@@ -16,7 +16,7 @@ class apiMiddleware
 {
 {
 
 
     //白名单
     //白名单
-    private $white_list = ['login','orderExchangeExport'];
+    private $white_list = ['login'];
 
 
     //请求入口
     //请求入口
     public function handle($request, \Closure $next)
     public function handle($request, \Closure $next)

+ 5 - 1
app/admin/route/app.php

@@ -139,7 +139,11 @@ Route::rule('orderExchangeList', 'admin/OrderExchange/list');//列表
 Route::rule('orderExchangeRead', 'admin/OrderExchange/read');//详情
 Route::rule('orderExchangeRead', 'admin/OrderExchange/read');//详情
 Route::rule('orderExchangeDeliver', 'admin/OrderExchange/deliver');//发货
 Route::rule('orderExchangeDeliver', 'admin/OrderExchange/deliver');//发货
 Route::rule('orderExchangeExport', 'admin/OrderExchange/export');//导出
 Route::rule('orderExchangeExport', 'admin/OrderExchange/export');//导出
-Route::rule('orderExchangeDeliver', 'admin/OrderExchange/deliver');//发货
+//【服务订单】
+Route::rule('orderServiceList', 'admin/OrderService/list');//列表
+Route::rule('orderServiceRead', 'admin/OrderService/read');//详情
+Route::rule('orderServiceDeliver', 'admin/OrderService/deliver');//发货
+Route::rule('orderServiceExport', 'admin/OrderService/export');//导出
 
 
 //【手机主题】
 //【手机主题】
 Route::rule('themeList', 'admin/Theme/list');//列表
 Route::rule('themeList', 'admin/Theme/list');//列表

+ 0 - 1
app/common.php

@@ -250,7 +250,6 @@ if (!function_exists('excel_save')) {
     }
     }
 }
 }
 
 
-
 //读取大文件
 //读取大文件
 if (!function_exists('read_big_file')) {
 if (!function_exists('read_big_file')) {
     function read_big_file(string $file = '')
     function read_big_file(string $file = '')

+ 5 - 0
app/model/CommonModel.php

@@ -28,4 +28,9 @@ class CommonModel
     public static $source_admin = 1 ;//后台操作
     public static $source_admin = 1 ;//后台操作
     public static $source_account = 2 ;//客户操作
     public static $source_account = 2 ;//客户操作
 
 
+    //状态:0未发货,1已发货,2已收货
+    public static $status_not_deliver = 0;
+    public static $status_deliver = 1;
+    public static $status_receipt = 2;
+
 }
 }

+ 12 - 0
app/model/OrderServiceModel.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace app\model;
+
+use think\Model;
+
+class OrderServiceModel extends Model
+{
+    protected $table = 'fc_order_service';
+    protected $pk = 'id';
+
+}