ソースを参照

Merge branch 'dev_wf' of wugg/phpstock into version1.5

wufeng 2 年 前
コミット
bbd9c5fbe0
2 ファイル変更356 行追加90 行削除
  1. 354 89
      app/admin/controller/OrderImport.php
  2. 2 1
      app/admin/route/app.php

+ 354 - 89
app/admin/controller/OrderImport.php

@@ -2,7 +2,9 @@
 
 namespace app\admin\controller;
 
+use app\admin\model\ActionLog;
 use app\admin\model\OrderImportFromC as OIFCModel;
+use app\admin\model\ProcessOrder;
 use Exception;
 use think\facade\Db;
 use think\facade\Validate;
@@ -146,6 +148,124 @@ class OrderImport extends Base
     public function confirmImportData()
     {
         //每次编辑,都新增一条记录到extend表,同时原纪录作废,确保同一个order_import_from_c_id下只有一个正常的记录
+
+        
+
+        $param = $this->request->only([
+            'id',
+            'platform_code',
+            'po_code',
+            'platform_time',
+            'sale_source',
+            'plat_code',
+            'price',
+            'num',
+            'before_discount_all_price',
+            'discount_price',
+            'after_price',
+            'activity_name',
+            'mode',
+            'order_remark',
+            'contactor',
+            'mobile',
+            'addr',
+            'spuCode',
+            'companyNo',
+            'customer_code',
+            'supplierNo',
+            'platform_codes',
+            'good_name',
+            'discount_reason',
+            'addr_code',
+        ], 'post', 'trim');
+
+        $val = Validate::rule([
+            'id' => 'require',
+            'platform_code' => 'require',
+            'po_code' => 'require',
+            'platform_time' => 'require',
+            'sale_source' => 'require',
+            'plat_code' => 'require',
+            'price' => 'require',
+            'num' => 'require',
+            'before_discount_all_price' => 'require',
+            'discount_price' => 'require',
+            'after_price' => 'require',
+            'mode' => 'require',
+            'contactor' => 'require',
+            'mobile' => 'require',
+            'addr' => 'require',
+            'spuCode' => 'require',
+            'companyNo' => 'require',
+            'customer_code' => 'require',
+            'supplierNo' => 'require',
+            'platform_codes' => 'require',
+            'good_name' => 'require',
+            'discount_reason' => 'require',
+            'addr_code' => 'require',
+        ]);
+
+        if (!$val->check($param)) return error_show(1004, $val->getError());
+
+        Db::startTrans();
+        try {
+
+            $userinfo = GetUserInfo($param['token']);
+
+            Db::name('order_import_from_c')
+                ->where(['id' => $param['id'], 'is_del' => OIFCModel::$is_del_normal, 'status' => OIFCModel::$status_wait_confirm])
+                ->update([
+                    'platform_code' => $param['platform_code'],
+                    'po_code' => $param['po_code'],
+                    'platform_time' => $param['platform_time'],
+                    'sale_source' => $param['sale_source'],
+                    'plat_code' => $param['plat_code'],
+                    'price' => $param['price'],
+                    'num' => $param['num'],
+                    'before_discount_all_price' => $param['before_discount_all_price'],
+                    'discount_price' => $param['discount_price'],
+                    'after_price' => $param['after_price'],
+                    'activity_name' => $param['activity_name'],
+                    'mode' => $param['mode'],
+                    'order_remark' => $param['order_remark'],
+                    'contactor' => $param['contactor'],
+                    'mobile' => $param['mobile'],
+                    'addr' => $param['addr'],
+                    'status' => OIFCModel::$status_wait_relation,
+                    'updatetime' => date('Y-m-d H:i:s')
+                ]);
+
+            Db::name('order_import_from_c_extend')
+                ->where(['order_import_from_c_id' => $param['id'], 'is_del' => 0])
+                ->update(['is_del' => 1]);
+
+            Db::name('order_import_from_c_extend')
+                ->insert([
+                    'order_import_from_c_id' => $param['id'],
+                    'spuCode' => $param['spuCode'],
+                    'companyNo' => $param['companyNo'],
+                    'customer_code' => $param['customer_code'],
+                    'supplierNo' => $param['supplierNo'],
+                    'platform_codes' => $param['platform_codes'],
+                    'good_name' => $param['good_name'],
+                    'discount_reason' => $param['discount_reason'],
+                    'addr_code' => $param['addr_code'],
+                    'addtime' => date('Y-m-d H:i:s'),
+                    'createrid' => isset($user["data"]['id']) ? $userinfo["data"]['id'] : 0,
+                    'creater' => isset($user["data"]['nickname']) ? $userinfo["data"]['nickname'] : '',
+                ]);
+
+            Db::commit();
+
+            return app_show(0, '修改成功');
+
+        } catch (\think\Exception $exception) {
+
+            Db::rollback();
+
+            return error_show(1004, $exception->getMessage());
+        }
+
     }
 
     //批量关联库存
@@ -158,114 +278,195 @@ class OrderImport extends Base
     {
         //解析信息存到extend表,其中customer_code字段根据订单编号去customer_info查,其他根据商品编号查询
 
-        $order_import_from_c_db = Db::name('order_import_from_c');
+        Db::startTrans();
+        try {
 
-        $good_platform_db = Db::name('good_platform')->field('id,spuCode,platform_code')->where(['is_del' => 0]);
 
-        $good_db = Db::name('good')->field('good_name,companyNo,supplierNo,is_stock')->where(['is_del' => 0]);
+            $order_import_from_c_db = Db::name('order_import_from_c');
 
-        $order_import_from_c_extend_db = Db::name('order_import_from_c_extend');
-        $good_stock_db = Db::name('good_stock');
+            $order_import_from_c_extend_db = Db::name('order_import_from_c_extend');
 //        $customer_info_db = Db::name('customer_info')->field('companyNo')->where(['is_del' => 0]);
 
-        $list = $order_import_from_c_db
-            ->where([
-                'is_del' => OIFCModel::$is_del_normal,
-                'status' => OIFCModel::$status_wait_validate
-            ])
-            ->limit(10)
-            ->cursor();
-
-
-        /**
-         * $val = Validate::rule([
-         * 'platform_code|平台订单号' => 'require|length:0,255',
-         * 'po_code|其他单号' => 'length:0,255',
-         * 'platform_time|平台下单时间' => 'require|date',
-         * 'sale_source|销售渠道' => 'require|length:0,255',
-         * 'plat_code|平台商品编号' => 'require|length:0,255',
-         * 'price|单价' => 'require|float',
-         * 'num|数量' => 'require|number',
-         * 'before_discount_all_price|优惠前总金额' => 'require|float',
-         * 'discount_price|优惠金额' => 'require|float',
-         * 'after_price|商品优惠后金额' => 'require|float',
-         * 'activity_name|优惠活动名称' => 'length:0,255',
-         * 'mode|收费模式' => 'require|length:0,255',
-         * 'order_remark|订单备注' => 'length:0,255',
-         * 'contactor|收货人' => 'require|length:0,255',
-         * 'mobile|联系电话' => 'require|length:0,20',
-         * 'addr|联系地址' => 'require|length:0,255',
-         * ]);
-         */
-
-        foreach ($list as $value) {
-
-            Db::startTrans();
-
-            try {
-
-                $extend_insert_data = [
-                    'order_import_from_c_id' => $value->id,
-                    'createrid' => 0,
-                    'creater' => 'system',
-                ];
-                //1.解析数据
-                $good_platform_info = $good_platform_db->where('plat_code', $value->plat_code)->find();
-                if (!empty($good_platform_info)) {
-                    $extend_insert_data['spuCode'] = $good_platform_info['spuCode'];
-                    $extend_insert_data['platform_code'] = $good_platform_info['platform_code'];
-                } else {
-                    $order_import_from_c_db->where('id', $value->id)->update(['updatetime' => date('Y-m-d H:i:s'), 'status' => OIFCModel::$status_wait_confirm, 'remark' => '在商品平台表中查不到平台商品编号对应的spuCode']);
-                    Db::commit();
-                    continue;
-                }
+            $rs = $order_import_from_c_db
+                ->where([
+                    'is_del' => OIFCModel::$is_del_normal,
+                    'status' => OIFCModel::$status_wait_validate
+                ])->find();
+
+            //加写锁
+
+            //1.数据校验
+            $val = Validate::rule([
+                'platform_code|平台订单号' => 'require|length:0,255',
+                'po_code|其他单号' => 'length:0,255',
+                'platform_time|平台下单时间' => 'require|date',
+                'sale_source|销售渠道' => 'require|length:0,255',
+                'plat_code|平台商品编号' => 'require|length:0,255',
+                'price|单价' => 'require|float',
+                'num|数量' => 'require|number',
+                'before_discount_all_price|优惠前总金额' => 'require|float',
+                'discount_price|优惠金额' => 'require|float',
+                'after_price|商品优惠后金额' => 'require|float',
+                'activity_name|优惠活动名称' => 'length:0,255',
+                'mode|收费模式' => 'require|length:0,255',
+                'order_remark|订单备注' => 'length:0,255',
+                'contactor|收货人' => 'require|length:0,255',
+                'mobile|联系电话' => 'require|length:0,20',
+                'addr|联系地址' => 'require|length:0,255',
+            ]);
+
+            if (!$val->check($rs)) {
+                $order_import_from_c_db
+                    ->where('id', $rs['id'])
+                    ->update([
+                        'updatetime' => date('Y-m-d H:i:s'),
+                        'status' => OIFCModel::$status_wait_confirm,
+                        'remark' => '数据格式不对,' . $val->getError()
+                    ]);
+
+                //解除写锁
+                Db::commit();
+                return false;
+            }
 
-                $good_info = $good_db->where('spuCode', $extend_insert_data['spuCode'])->find();
-                if (!empty($good_info)) {
-                    $extend_insert_data['companyNo'] = $good_info['companyNo'];
-                    $extend_insert_data['supplierNo'] = $good_info['supplierNo'];
-                    $extend_insert_data['good_name'] = $good_info['good_name'];
-                } else {
-                    $order_import_from_c_db->where('id', $value->id)->update(['updatetime' => date('Y-m-d H:i:s'), 'status' => OIFCModel::$status_wait_confirm, 'remark' => '在上线商品表中查不到spuCode对应的商品信息']);
-                    Db::commit();
-                    continue;
-                }
 
-//            $extend_insert_data['customer_code'] = $good_info['companyNo'];
+            $extend_insert_data = [
+                'order_import_from_c_id' => $rs['id'],
+                'createrid' => 0,
+                'creater' => 'system',
+                'discount_reason' => $rs['activity_name']
+            ];
+            //查找extend的数据
+
+            $good_platform_info = Db::name('good_platform')
+                ->field('id,spuCode,platform_code,skuCode')
+                ->where(['is_del' => 0])
+                ->where('plat_code', $rs['plat_code'])
+                ->find();
+            if (!empty($good_platform_info)) {
+                $extend_insert_data['spuCode'] = $good_platform_info['spuCode'];
+                $extend_insert_data['platform_code'] = $good_platform_info['platform_code'];
+            } else {
+                $order_import_from_c_db
+                    ->where('id', $rs['id'])
+                    ->update([
+                        'updatetime' => date('Y-m-d H:i:s'),
+                        'status' => OIFCModel::$status_wait_confirm,
+                        'remark' => '在商品平台表中查不到平台商品编号对应的spuCode'
+                    ]);
+                //解除写锁
+                Db::commit();
+                return false;
+            }
 
-                $extend_insert_data['discount_reason'] = $value->activity_name;
 
-                $order_import_from_c_extend_db->insertGetId($extend_insert_data);
+            $good_info = Db::name('good')
+                ->field('good_name,good_code,companyNo,supplierNo,is_stock,packing_fee,cert_fee,open_fee,cost_fee,mark_fee,demo_fee,cat_id')
+                ->where(['is_del' => 0])
+                ->where('spuCode', $extend_insert_data['spuCode'])
+                ->find();
+            if (!empty($good_info)) {
+                $extend_insert_data['companyNo'] = $good_info['companyNo'];
+                $extend_insert_data['supplierNo'] = $good_info['supplierNo'];
+                $extend_insert_data['good_name'] = $good_info['good_name'];
+            } else {
+                $order_import_from_c_db
+                    ->where('id', $rs['id'])
+                    ->update([
+                        'updatetime' => date('Y-m-d H:i:s'),
+                        'status' => OIFCModel::$status_wait_confirm,
+                        'remark' => '在上线商品表中查不到spuCode对应的商品信息'
+                    ]);
+                //解除写锁
+                Db::commit();
+                return false;
+            }
 
-                //2.判断是否库存品
-                if ($good_info['is_stock'] == 1) {
-                    //库存品,查询可用库存数量
-                    $usable_stock = $good_stock_db
-                        ->where('spuCode', $extend_insert_data['spuCode'])
-                        ->sum('usable_stock');
+            $order_import_from_c_extend_db->insertGetId($extend_insert_data);
+
+            //判断是否库存品
+            if ($good_info['is_stock'] == 1) {
+                //库存品,查询可用库存数量
+                $usable_stock = Db::name('good_stock')
+                    ->where('spuCode', $extend_insert_data['spuCode'])
+                    ->sum('usable_stock');
+
+                if ($usable_stock < $rs['num']) {
+                    $order_import_from_c_db
+                        ->where('id', $rs['id'])
+                        ->update([
+                            'updatetime' => date('Y-m-d H:i:s'),
+                            'status' => OIFCModel::$status_wait_relation,
+                            'remark' => '库存不足'
+                        ]);
+
+                    //解除写锁
+                    Db::commit();
+                    return false;
+                } else {
+                    //扣减库存
 
-                    if ($usable_stock < $value->num) {
-                        $order_import_from_c_db->where('id', $value->id)->update(['updatetime' => date('Y-m-d H:i:s'), 'status' => OIFCModel::$status_wait_confirm, 'remark' => '库存不足']);
-                        Db::commit();
-                        continue;
-                    }
 
-                }
+                    //录入成功
+                    $order_import_from_c_db
+                        ->where('id', $rs['id'])
+                        ->update([
+                            'updatetime' => date('Y-m-d H:i:s'),
+                            'status' => OIFCModel::$status_success,
+                        ]);
 
-                //3.判断库存
+                    $this->createSaleByImportSuccess($good_info, $rs, $extend_insert_data);
 
-                //4.处理
-                Db::commit();
+                }
 
-            } catch (\think\Exception $exception) {
-                Db::rollback();
-                return error_show(1005, $exception->getMessage());
+            } else {
+                //非库存品
+
+                //录入成功
+                $order_import_from_c_db
+                    ->where('id', $rs['id'])
+                    ->update([
+                        'updatetime' => date('Y-m-d H:i:s'),
+                        'status' => OIFCModel::$status_success,
+                    ]);
+                $orderCode = $this->createSaleByImportSuccess($good_info, $rs, $extend_insert_data);
+
+                //生成采购单
+                $cgd = [
+                    "supplierNo" => $extend_insert_data['supplierNo'],
+                    "companyNo" => $extend_insert_data['companyNo'],
+                    "orderCode" => $orderCode,
+                    "spuCode" => $extend_insert_data['spuCode'],
+                    "skuCode" => $good_platform_info['skuCode'],
+                    "good_name" => $extend_insert_data['good_name'],
+                    "sale_price" => $rs['price'],
+                    "total_fee" => $rs['price'] * $rs['num'],
+                    "pakge_fee" => $good_info['packing_fee'],
+                    "cert_fee" => $good_info['cert_fee'],
+                    "open_fee" => $good_info['open_fee'],
+                    "cost_fee" => $good_info['cost_fee'],
+                    "mark_fee" => $good_info['mark_fee'],
+                    "demo_fee" => $good_info['demo_fee'],
+                    "good_num" => $rs['num'],
+                    "good_type" => 1,//商品类型 1正常2赠品3样品
+                    "order_type" => $good_info['is_stock'] == 1 ? 1 : 2,
+                    "createrid" => $rs['createrid'],
+                    "creater" => $rs['creater'],
+                    'send_way' => 2
+                ];
+                $sale_controller = new Sale();
 
+                $sale_controller->createCgd($cgd);
             }
-        }
 
-        return '123123123wwafa';
+            Db::commit();
 
+            return true;
+
+        } catch (\think\Exception $exception) {
+            Db::rollback();
+            return false;
+        }
 
     }
 
@@ -306,5 +507,69 @@ class OrderImport extends Base
 
     }
 
+    //处理库存(关联库存)
+    public function handleStock(array $da = [])
+    {
+    }
+
+    //C端订单导入成功后,生成销售单
+    private function createSaleByImportSuccess(array $goodinfo = [], array $c_data = [], array $extend_data = []): string
+    {
+        $orderCode = makeNo("QR");
+
+        $sale_insert_data = [
+            "orderCode" => $orderCode,
+            "good_code" => $goodinfo['good_code'],
+            "customer_code" => $customer_code,
+            "good_name" => $goodinfo['good_name'],
+            "good_num" => $c_data['num'],
+            "cat_id" => $goodinfo['cat_id'],
+            "apply_id" => $c_data['createrid'],
+            "apply_name" => $c_data['creater'],
+            "origin_price" => $c_data['price'] * $c_data['num'],
+            "sale_price" => $goodinfo['sale_price'],
+            "post_fee" => 0,
+            "status" => 0,
+            "send_num" => 0,
+            "wsend_num" => $c_data['num'],
+            "send_status" => 1,
+            "good_type" => 1,
+            "send_type" => 1,//发货类型 1直接发货2延时发货
+            "supplierNo" => $extend_data['supplierNo'],
+            "is_del" => 0,
+            "zxNo" => '',
+            "platform_order" => $platform_order,
+            "platform_id" => $extend_data['platform_codes'],
+            "remark" => $c_data['order_remark'],
+            "order_type" => 3,//订单类型1销售2咨询3C端导入
+            "addtime" => date("Y-m-d H:i:s"),
+            "updatetime" => date("Y-m-d H:i:s"),
+            'total_price' => round($goodinfo['sale_price'] * $c_data['num'], 2),
+        ];
+
+        $res = Db::name('sale')->insertGetId($sale_insert_data);
+
+        if ($res) {
+
+            //修改状态,添加待办,脚本执行,没有token
+//            ActionLog::logAdd($this->post['token'], [
+//                "order_code" => $orderCode,//销售单code
+//                "status" => 0,//这里的status是之前的值
+//                "action_remark" => '',//备注
+//                "action_type" => "create"//新建create,编辑edit,更改状态status
+//            ], "XSQRD", 0, $sale_insert_data);
+//
+//            ProcessOrder::AddProcess($this->post['token'], [
+//                "order_type" => 'XSQRD',
+//                "order_code" => $orderCode,//销售单code
+//                "order_id" => $res,
+//                "order_status" => 0
+//            ]);
+
+            return $orderCode;
+
+        } else throw new \think\Exception('创建销售单失败');
+    }
+
 
 }

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

@@ -472,4 +472,5 @@ Route::rule('orderimport','admin/OrderImport/import');//C端订单导入
 Route::rule('orderimportlist','admin/OrderImport/getImportList');//C端订单列表
 Route::rule('orderimportinfo','admin/OrderImport/getImportInfo');//C端订单详情
 Route::rule('getonlinegoodinfo','admin/OrderImport/getOnlineGoodInfoByPlatcode');//获取线上商品详情
-Route::rule('getsourcedata','admin/OrderImport/getSourceDataByPlatformId');//获取销售渠道备选数据
+Route::rule('getsourcedata','admin/OrderImport/getSourceDataByPlatformId');//获取销售渠道备选数据
+Route::rule('confirmimportdata','admin/OrderImport/confirmImportData');//用户确认