Browse Source

发货申请单优化,有赞上线的配送方式优化

wufeng 2 years ago
parent
commit
1bd8b1ccf4

+ 1 - 1
app/admin/controller/AfterChild.php

@@ -476,7 +476,7 @@ class AfterChild extends Base
                     //维护商品层面的库存数
                     Db::name('good')
                         ->where(['is_del' => 0, 'spuCode' => $order_return['good_code']])
-                        ->inc('usable_stock', $info['return_num'] - $param['loss_num'])
+                        ->inc('usable_stock', array_sum(array_column($info, 'return_num')) - array_sum(array_column($param['list'], 'loss_num')))
                         ->update(['updatetime' => $date]);
 
                 }

+ 48 - 34
app/admin/controller/Sale.php

@@ -3439,7 +3439,7 @@ class Sale extends Base
         }
         $supplier_name = isset($this->post['supplier_name']) && $this->post['supplier_name'] !== "" ? trim($this->post['supplier_name']) : "";
         if ($supplier_name !== "") {
-            $where[] = ['wpo.supplier_name', "like", "%$supplier_name%"];
+            $where[] = ['b.supName', "like", "%$supplier_name%"];
         }
         $status = isset($this->post['status']) && $this->post['status'] !== "" ? trim($this->post['status']) : "";
         if ($status !== "") {
@@ -3489,37 +3489,49 @@ class Sale extends Base
 
         //只有level2的账号过滤数据权限
         if ($this->level == 2) {
-            $hand = resign_hand_user($this->uid, 0);
-            $uidarr = implode(",", $hand);
-            //库管只能看到库存品订单,供应商负责人只能看到非库存品订单
-            if (!in_array($this->roleid, [1, 33])) {
-                //库管看到所有的库存品发货申请单
-                if (in_array($this->roleid, config('app.wsm_cgder_role'))) $condition .= " b.is_stock=1";
-                else {
-                    $role = $this->checkDataShare();
-                    if (!empty($role[DataGroupModel::$type_全部])) {
-                        $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
-                        if ($condition != '') $condition .= " or ";
-                        $condition .= " a.apply_id in (" . implode(',', $arr) . ")";
-                    }
-                }
-//                $personid = Db::name('supplier')->field('id')->where(['is_del' => 0, 'personid' => $hand])->findOrEmpty();
-                if (!empty($hand)) {
-                    if ($condition != '') $condition .= " or ";
-//                    $condition .= "(b.is_stock=0 and sip.personid in ($uidarr))";
 
-                    $person_supplier = Db::connect('mysql_sys')
-                        ->name('supplier')
-                        ->where(['is_del'=>0,'personid'=>$uidarr])
-                        ->column('code');
-
-                    $condition .= "(b.is_stock=0 and wpo.supplierNo in ('" . implode('\',\'', $person_supplier) . "'))";
-                }
+            //如果是供应商负责人,根据供应商筛选
+            $person_supplier = Db::connect('mysql_sys')
+                ->name('supplier')
+                ->where(['is_del' => 0, 'personid' =>$this->uid])
+                ->column('code');
+
+            if(!empty($person_supplier)) $condition = "b.supNo in ('" . implode('\',\'', $person_supplier) . "')";
+            else{
+                //不是供应商负责人,根据数据权限筛选申请人
+                $role = $this->checkDataShare();
+                if (!empty($role[DataGroupModel::$type_全部])) $condition = " a.apply_id in (" . implode(',', $role[DataGroupModel::$type_全部]) . ")";
             }
-        }
 
-        //供应商账号只能看到非库存品的订单
-        if ($this->level == 3) $where[] = ['b.is_stock', '=', 0];
+
+//            $hand = resign_hand_user($this->uid, 0);
+//            $uidarr = implode(",", $hand);
+//            //库管只能看到库存品订单,供应商负责人只能看到非库存品订单
+//            if (!in_array($this->roleid, [1, 33])) {
+//                //库管看到所有的库存品发货申请单
+//                if (in_array($this->roleid, config('app.wsm_cgder_role'))) $condition .= " b.is_stock=1";
+//                else {
+//                    $role = $this->checkDataShare();
+//                    if (!empty($role[DataGroupModel::$type_全部])) {
+//                        $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+//                        if ($condition != '') $condition .= " or ";
+//                        $condition .= " a.apply_id in (" . implode(',', $arr) . ")";
+//                    }
+//                }
+////                $personid = Db::name('supplier')->field('id')->where(['is_del' => 0, 'personid' => $hand])->findOrEmpty();
+//                if (!empty($hand)) {
+//                    if ($condition != '') $condition .= " or ";
+////                    $condition .= "(b.is_stock=0 and sip.personid in ($uidarr))";
+//
+//                    $person_supplier = Db::connect('mysql_sys')
+//                        ->name('supplier')
+//                        ->where(['is_del'=>0,'personid'=>$uidarr])
+//                        ->column('code');
+//
+//                    $condition .= "(b.is_stock=0 and wpo.supplierNo in ('" . implode('\',\'', $person_supplier) . "'))";
+//                }
+//            }
+        }
 
 //        if(!empty($role['platform']) ){
 //            $where[]=["b.platform_id","in",$role['platform']];
@@ -3545,11 +3557,11 @@ class Sale extends Base
 //            ->join("customer_info v", "v.companyNo=b.customer_code", "left")
             ->join("warehouse_info n", "n.wsm_code=a.wsm_code", "left")
             ->leftJoin("order_send os", "os.outCode=a.outCode")
-            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
+//            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
 //	        ->leftJoin('supplier sip', 'sip.code=wpo.supplierNo')
             ->where($where)
             ->where($condition)
-            ->count();
+            ->count('a.id');
         $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('order_out')
@@ -3558,9 +3570,9 @@ class Sale extends Base
 //            ->join("customer_info v", "v.companyNo=b.customer_code", "left")
             ->join("warehouse_info n", "n.wsm_code=a.wsm_code AND n.is_del=0", "left")
             ->leftJoin("order_send os", "os.outCode=a.outCode")
-            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
+//            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
 //	        ->leftJoin('supplier sip', 'sip.code=wpo.supplierNo')
-            ->field("a.*,b.order_type,b.order_source,b.good_name,b.good_code,b.skuCode,b.customer_code,b.supplierNo companyNo,b.supplierName companyName,b.origin_price,b.sale_price,b.total_price,os.cgdNo,wpo.supplierNo,n.supplierNo wsm_supplierNo")
+            ->field("a.*,b.order_type,b.order_source,b.good_name,b.good_code,b.skuCode,b.customer_code,b.supplierNo companyNo,b.supplierName companyName,b.origin_price,b.sale_price,b.total_price,os.cgdNo,b.supNo supplierNo,n.supplierNo wsm_supplierNo")
             ->where($where)
             ->where($condition)
             ->order("addtime desc")
@@ -3576,6 +3588,8 @@ class Sale extends Base
 //        $userCommon = \app\admin\common\User::getIns();
 //        $names = $userCommon->handle('getCodeAndName',['code'=>array_column($list,'customer_code')]);
 
+        $has_account = checkHasAccountBySupplierNos(array_unique(array_column($list,'wsm_supplierNo')));
+
         $data = [];
         foreach ($list as $value) {
 
@@ -3606,7 +3620,7 @@ class Sale extends Base
             } else {
                 $goon = Db::name('good_platform')->field('a.id,b.cat_id')->alias('a')->join('good b', 'b.spuCode=a.spuCode', 'left')->where(['a.skuCode' => $value['skuCode']])->find();
             }
-            $value['wsm_has_account'] = 0;//(int)isset(checkHasAccountBySupplierNos([$wsmcode['wsm_supplierNo']])[$wsmcode['wsm_supplierNo']]);
+            $value['wsm_has_account'] = (int)isset($has_account[$value['wsm_supplierNo']]);
             $value['addr'] = isset($addr['addr']) ? $addr['addr_cn'] . $addr['addr'] : "";
             $value['contactor'] = isset($addr['contactor']) ? $addr['contactor'] : "";
             $value['mobile'] = isset($addr['mobile']) ? $addr['mobile'] : "";

+ 3 - 3
app/youzan/controller/Index.php

@@ -38,7 +38,7 @@ class Index extends Base
     //审核并将商品推送到有赞平台
     public function checkExamstatus()
     {
-        $param = $this->request->only(['platform_youzan_id', 'exam_status', 'reject_reason', 'yz_cat_id', 'is_support_barter', 'good_ladder_id', 'final_price', 'token', 'start_sale_num', 'tags' => [], 'item_type' => 0, 'auto_listing_time' => '0', 'origin' => 0,'relaComNo'], 'post', 'trim');
+        $param = $this->request->only(['platform_youzan_id', 'exam_status', 'reject_reason', 'yz_cat_id', 'is_support_barter', 'good_ladder_id', 'final_price', 'start_sale_num', 'tags' => [], 'item_type' => 0, 'auto_listing_time' => '0', 'origin' => 0,'relaComNo','distribution'=>[1]], 'post', 'trim');
 
         $val = Validate::rule([
             'platform_youzan_id|商品上线记录ID' => 'require|number|gt:0',
@@ -50,10 +50,10 @@ class Index extends Base
             'final_price|最终售价' => 'requireIf:exam_status,1|float|elt:9999999',
             'start_sale_num|有赞起售数' => 'requireIf:exam_status,1|number',
             'relaComNo|关联公司' => 'require',
-            'token' => 'require',
+            'distribution|配送方式' => 'require|array|max:3',
         ]);
 
-        if ($val->check($param)) return Goodup::youzanGoodUpOnline($param['platform_youzan_id'], $param);
+        if ($val->check($param)) return Goodup::youzanGoodUpOnline($param['platform_youzan_id'], $param,$this->uid,$this->uname);
         else return error_show(1005, $val->getError());
     }
 

+ 9 - 8
app/youzan/logic/Goodup.php

@@ -203,7 +203,7 @@ class Goodup
 
 
     //审核并将商品推送到有赞平台
-    public static function youzanGoodUpOnline(int $platform_youzan_id = 0, array $data = [])
+    public static function youzanGoodUpOnline(int $platform_youzan_id = 0, array $data = [],int $uid=0,string $uname='')
     {
 
         Db::startTrans();
@@ -223,14 +223,15 @@ class Goodup
 
             $old_exam_status = $rs->exam_status;
 
-            $userinfo = GetUserInfo($data['token']);
+//            $userinfo = GetUserInfo($data['token']);
 
             //platform_youzan 更新信息
             $update_data = [
                 'exam_status' => $data['exam_status'],
-                'updaterid' => isset($userinfo['data']['id']) ? $userinfo['data']['id'] : 0,
-                'updater' => isset($userinfo['data']['nickname']) ? $userinfo['data']['nickname'] : '',
+                'updaterid' => $uid,//isset($userinfo['data']['id']) ? $userinfo['data']['id'] : 0,
+                'updater' => $uname,//isset($userinfo['data']['nickname']) ? $userinfo['data']['nickname'] : '',
                 'updatetime' => date('Y-m-d H:i:s'),
+                'distribution'=>implode(',',$data['distribution']),
             ];
 
             //good_platform 更新信息
@@ -259,7 +260,6 @@ class Goodup
 
                 $post_fee = isset($nake_info['delivery_fee']) ? $nake_info['delivery_fee'] : 0;
 
-
                 $desc = explode(',', $rs->good_info_img);
                 $desc_string = [];
                 foreach ($desc as $value) {
@@ -289,7 +289,7 @@ class Goodup
                     'tags' => implode(',', $data['tags']),
                 ]);
 
-                //调有赞项目的接口,从有赞平台线该商品
+                //调有赞项目的接口,从有赞平台线该商品
                 $curl_data = [
                     'item_no' => $rs->skuCode,//商品自定义编码 skuCode
                     'item_type' => $data['item_type'],//0实物商品
@@ -305,14 +305,15 @@ class Goodup
                     'hide_stock' => 0,//0显示库存,1不显示库存
                     'origin' => $data['origin'],//系统售价
                     'price' => $data['final_price'],//最后售价
-                    'uid' => isset($userinfo['data']['id']) ? $userinfo['data']['id'] : 0,
-                    'nickname' => isset($userinfo['data']['nickname']) ? $userinfo['data']['nickname'] : '',
+                    'uid' => $uid,//isset($userinfo['data']['id']) ? $userinfo['data']['id'] : 0,
+                    'nickname' => $uname,//isset($userinfo['data']['nickname']) ? $userinfo['data']['nickname'] : '',
                     'good_img' => $rs->good_img,//图片集合
                     'post_fee' => $post_fee,//运费,单位分,整数
                     'sell_point' => '',//商品卖点信息
                     'yz_cat_id' => $data['yz_cat_id'],//有赞类目id
                     'start_sale_num' => $data['start_sale_num'],//商品起售数,默认为1
                     'tags' => implode(',', $data['tags']),//标签id,多个以,分割
+                    'distribution'=>$data['distribution'],
                 ];
                 $host = config('app.yz_domain');
                 $response = curl_request($host . 'api/yz_goodup', $curl_data);