Browse Source

公司分类毛利优化

wufeng 2 years ago
parent
commit
4ed278861c

+ 179 - 0
app/admin/controller/CompanyCatProfit.php

@@ -0,0 +1,179 @@
+<?php
+
+namespace app\admin\controller;
+
+use think\facade\Db;
+use think\facade\Validate;
+
+//公司分类毛利
+class CompanyCatProfit extends Base
+{
+
+    //列表
+    public function getList()
+    {
+        $param = $this->request->only(['page' => 1, 'size' => 10, 'companyNo' => '', 'cat_name' => '', 'pid' => 0], 'post', 'trim');
+
+        if ($param['companyNo'] == '') return json_show(1004, '业务公司编号不能为空');
+
+        $where = [['a.is_del', '=', 0], ['a.pid', '=', $param['pid']]];
+        if ($param['cat_name'] !== '') $where[] = ['a.cat_name', 'like', '%' . $param['cat_name'] . '%'];
+
+        $count = Db::name('cat')
+            ->alias('a')
+            ->leftJoin('business_cat_profit b', 'b.cat_id=a.id AND companyNo=\'' . $param['companyNo'] . '\'')
+            ->where($where)
+            ->count('a.id');
+
+        $list = Db::name('cat')
+            ->alias('a')
+            ->field('a.id cat_id,a.cat_name,a.level,b.rate,b.order_rate,b.money_rate,b.low_rate,b.sale_rate,b.status')
+            ->leftJoin('business_cat_profit b', 'b.is_del=0 AND b.cat_id=a.id AND companyNo=\'' . $param['companyNo'] . '\'')
+            ->where($where)
+            ->withAttr('status', function ($val) {
+                return (int)$val;
+            })
+            ->order('a.id', 'desc')
+            ->page($param['page'], $param['size'])
+            ->select()
+            ->toArray();
+
+        return json_show(0, '获取列表成功', ['count' => $count, 'list' => $list]);
+    }
+
+    //设置毛利率相关
+    public function set()
+    {
+        $param = $this->request->only(['cat_id', 'companyNo', 'rate', 'order_rate', 'money_rate', 'low_rate', 'sale_rate'], 'post', 'trim');
+
+        $val = Validate::rule([
+            'cat_id|分类id' => 'require|number|gt:0',
+            'companyNo|公司编码' => 'require|length:18',
+            'rate|主管利率' => 'require|number|between:0,100',
+            'order_rate|预算成本' => 'require|number|between:0,100',
+            'money_rate|财务利率' => 'require|number|between:0,100',
+            'low_rate|最低利率' => 'require|number|between:0,100',
+            'sale_rate|成本售价' => 'require|number|between:0,100',
+        ]);
+
+        if (!$val->check($param)) return json_show(1004, $val->getError());
+
+        $tmp = Db::name('business_cat_profit')
+            ->field('id')
+            ->where(['is_del' => 0, 'companyNo' => $param['companyNo'], 'cat_id' => $param['cat_id']])
+            ->findOrEmpty();
+
+        $date = date('Y-m-d H:i:s');
+
+        if (empty($tmp)) {
+            $rs = Db::name('business_cat_profit')
+                ->insert([
+                    'companyNo' => $param['companyNo'],
+                    'cat_id' => $param['cat_id'],
+                    'rate' => $param['rate'],
+                    'order_rate' => $param['order_rate'],
+                    'money_rate' => $param['money_rate'],
+                    'low_rate' => $param['low_rate'],
+                    'sale_rate' => $param['sale_rate'],
+                    'status' => 0,
+                    'is_del' => 0,
+                    'addtime' => $date,
+                    'updatetime' => $date
+                ]);
+        } else {
+            $rs = Db::name('business_cat_profit')
+                ->where(['is_del' => 0, 'id' => $tmp['id']])
+                ->update([
+                    'rate' => $param['rate'],
+                    'order_rate' => $param['order_rate'],
+                    'money_rate' => $param['money_rate'],
+                    'low_rate' => $param['low_rate'],
+                    'sale_rate' => $param['sale_rate'],
+                    'updatetime' => $date
+                ]);
+        }
+
+        return $rs ? json_show(0, '设置成功') : json_show(1004, '设置失败');
+    }
+
+    //启禁用
+    public function status()
+    {
+        $param = $this->request->only(['cat_id', 'companyNo', 'status'], 'post', 'trim');
+
+        $val = Validate::rule([
+            'cat_id|分类id' => 'require|number|gt:0',
+            'companyNo|公司编码' => 'require|length:18',
+            'status|状态' => 'require|number|in:0,1',
+        ]);
+
+        if ($val->check($param) == false) return json_show(1004, $val->getError());
+
+        $cat = Db::name('cat')
+            ->field('id,level')
+            ->where(['id' => $param['cat_id'], 'is_del' => 0])
+            ->findOrEmpty();
+
+        if ($param['status'] == 1 && $cat['level'] != 3) {
+            $allow_update = false;
+            $pid = '(' . $cat['id'] . ')';
+            for ($i = $cat['level']; $i < 3; $i++) {
+
+                $cat_list = Db::name('cat')
+                    ->field('id')
+                    ->where('is_del=0 AND pid IN ' . $pid)
+                    ->buildSql();
+
+                $profit = Db::name('business_cat_profit')
+                    ->field('id')
+                    ->where(['companyNo' => $param['companyNo'], 'is_del' => 0, 'status' => 1])
+                    ->where('cat_id IN ' . $cat_list)
+                    ->findOrEmpty();
+
+                if (!empty($profit)) {
+                    $allow_update = true;
+                    break;
+                } else  $pid = $cat_list;
+
+            }
+
+            if ($allow_update === false) return json_show(1004, '启用失败,没有启用的下级分类');
+
+
+        }
+
+        $rs = Db::name('business_cat_profit')
+            ->where(['is_del' => 0, 'cat_id' => $param['cat_id'], 'companyNo' => $param['companyNo']])
+            ->where('status', '<>', $param['status'])
+            ->update([
+                'status' => $param['status'],
+                'updatetime' => date('Y-m-d H:i:s')
+            ]);
+        return $rs ? json_show(0, '操作成功') : json_show(1004, '操作失败,该记录不存在或重复操作');
+
+
+    }
+
+    //删除
+    public function delete()
+    {
+        $param = $this->request->only(['cat_id', 'companyNo'], 'post', 'trim');
+
+        $val = Validate::rule([
+            'cat_id|分类id' => 'require|number|gt:0',
+            'companyNo|公司编码' => 'require|length:18',
+        ]);
+
+        if ($val->check($param) == false) return json_show(1004, $val->getError());
+
+        $rs = Db::name('business_cat_profit')
+            ->where(['is_del' => 0, 'companyNo' => $param['companyNo'], 'cat_id' => $param['cat_id']])
+            ->update([
+                'is_del' => 1,
+                'updatetime' => date('Y-m-d H:i:s')
+            ]);
+
+        return $rs ? json_show(0, '删除成功') : json_show(1004, '删除失败');
+    }
+
+}

+ 0 - 185
app/admin/controller/SupplierCatProfit.php

@@ -1,185 +0,0 @@
-<?php
-
-namespace app\admin\controller;
-
-use think\facade\Db;
-use think\facade\Validate;
-
-
-//公司分类毛利
-class SupplierCatProfit extends Base
-{
-
-    //列表
-    public function getList()
-    {
-        $param = $this->request->only(['page' => 1, 'size' => 10, 'supplier_name' => '', 'supplierNo' => '', 'cat_name' => ''], 'post', 'trim');
-
-        $where = [['a.is_del', '=', 0]];
-        if ($param['supplier_name'] != '') $where[] = ['b.name', 'like', '%' . $param['supplier_name'] . '%'];
-        if ($param['supplierNo'] != '') $where[] = ['a.supplierNo', '=', $param['supplierNo']];
-        if ($param['cat_name'] != '') $where[] = ['f.cat_name', 'like', '%' . $param['cat_name'] . '%'];
-
-        $count = Db::name('supplier_cat_profit')
-            ->alias('a')
-            ->leftJoin('supplier b', 'b.code=a.supplierNo')
-            ->leftJoin('cat f', 'f.id=a.cat_id AND f.is_del=0')
-            ->where($where)
-            ->count('a.id');
-
-        $list = Db::name('supplier_cat_profit')
-            ->alias('a')
-            ->field('a.id,a.supplierNo,b.name supplier_name,a.cat_id,f.cat_name,a.rate,a.order_rate,a.money_rate,a.low_rate,a.sale_rate,a.lower_rate,a.status,a.addtime')
-            ->leftJoin('supplier b', 'b.code=a.supplierNo')
-            ->leftJoin('cat f', 'f.id=a.cat_id AND f.is_del=0')
-            ->where($where)
-            ->order('a.id', 'desc')
-            ->page($param['page'], $param['size'])
-            ->select()
-            ->toArray();
-
-        return json_show(0, '获取列表成功', ['count' => $count, 'list' => $list]);
-    }
-
-    //添加
-    public function add()
-    {
-        $param = $this->request->only(['supplierNo', 'cat_id', 'rate', 'order_rate', 'money_rate', 'low_rate', 'sale_rate', 'lower_rate'], 'post', 'trim');
-
-        $val = Validate::rule([
-            'supplierNo|公司编码' => 'require|length:18',
-            'cat_id|分类id' => 'require|number|gt:0',
-            'rate|主管利率' => 'require|number|between:0,100',
-            'order_rate|预算成本' => 'require|number|between:0,100',
-            'money_rate|财务利率' => 'require|number|between:0,100',
-            'low_rate|最低利率' => 'require|number|between:0,100',
-            'sale_rate|成本售价' => 'require|number|between:0,100',
-            'lower_rate|BOSS利率' => 'require|number|between:0,100',
-        ]);
-
-        if (!$val->check($param)) return json_show(1004, $val->getError());
-
-        $tmp_spcp = Db::name('supplier_cat_profit')
-            ->field('id')
-            ->where(['is_del' => 0, 'supplierNo' => $param['supplierNo'], 'cat_id' => $param['cat_id']])
-            ->findOrEmpty();
-        if (!empty($tmp_spcp)) return json_show(1004, '该公司分类的毛利已存在');
-
-        $rs = Db::name('supplier_cat_profit')
-            ->insert([
-                'supplierNo' => $param['supplierNo'],
-                'cat_id' => $param['cat_id'],
-                'rate' => $param['rate'],
-                'order_rate' => $param['order_rate'],
-                'money_rate' => $param['money_rate'],
-                'low_rate' => $param['low_rate'],
-                'sale_rate' => $param['sale_rate'],
-                'lower_rate' => $param['lower_rate'],
-                'status' => 1,
-                'is_del' => 0,
-                'addtime' => date('Y-m-d H:i:s'),
-                'updatetime' => date('Y-m-d H:i:s'),
-            ]);
-
-        return $rs ? json_show(0, '添加成功') : json_show(1004, '添加失败');
-    }
-
-    //详情
-    public function info()
-    {
-        $id = $this->request->post('id/d', 0, 'trim');
-
-        $rs = Db::name('supplier_cat_profit')
-            ->field(true)
-            ->where(['id' => $id, 'is_del' => 0])
-            ->findOrEmpty();
-        return json_show(0, '获取详情成功', $rs);
-    }
-
-    //修改
-    public function update()
-    {
-        $param = $this->request->only(['id', 'rate', 'order_rate', 'money_rate', 'low_rate', 'sale_rate', 'lower_rate'], 'post', 'trim');
-
-        $val = Validate::rule([
-            'id' => 'require|number|gt:0',
-            'rate|主管利率' => 'require|number|between:0,100',
-            'order_rate|预算成本' => 'require|number|between:0,100',
-            'money_rate|财务利率' => 'require|number|between:0,100',
-            'low_rate|最低利率' => 'require|number|between:0,100',
-            'sale_rate|成本售价' => 'require|number|between:0,100',
-            'lower_rate|BOSS利率' => 'require|number|between:0,100',
-        ]);
-
-        if (!$val->check($param)) return json_show(1004, $val->getError());
-
-        $rs = Db::name('supplier_cat_profit')
-            ->field('id')
-            ->where(['is_del' => 0, 'id' => $param['id']])
-            ->findOrEmpty();
-
-        if (empty($rs)) return json_show(1004, '该记录不存在');
-
-
-        $rs = Db::name('supplier_cat_profit')
-            ->where(['is_del' => 0, 'id' => $param['id']])
-            ->update([
-                'rate' => $param['rate'],
-                'order_rate' => $param['order_rate'],
-                'money_rate' => $param['money_rate'],
-                'low_rate' => $param['low_rate'],
-                'sale_rate' => $param['sale_rate'],
-                'lower_rate' => $param['lower_rate'],
-                'updatetime' => date('Y-m-d H:i:s')
-            ]);
-
-        return $rs ? json_show(0, '修改成功') : json_show(1004, '修改失败');
-    }
-
-    //启禁用
-    public function status()
-    {
-        $param = $this->request->only(['id', 'status'], 'post', 'trim');
-
-        $val = Validate::rule([
-            'id' => 'require|number|gt:0',
-            'status|状态' => 'require|number|in:0,1',
-        ]);
-
-        if (!$val->check($param)) return json_show(1004, $val->getError());
-
-//        $tmp = Db::name('supplier_cat_profit')
-//            ->field('id,status')
-//            ->where(['is_del' => 0, 'id' => $param['id']])
-//            ->findOrEmpty();
-//
-//        if (empty($tmp)) return json_show(1004, '该记录不存在');
-//        if ($tmp['status'] == $param['status']) return json_show(1004, '重复操作');
-
-        $rs = Db::name('supplier_cat_profit')
-            ->where(['is_del' => 0, 'id' => $param['id']])
-            ->where('status', '<>', $param['status'])
-            ->update([
-                'status' => $param['status'],
-                'updatetime' => date('Y-m-d H:i:s')
-            ]);
-
-        return $rs ? json_show(0, '操作成功') : json_show(1004, '操作失败,该记录不存在或重复操作');
-    }
-
-    //删除
-    public function delete()
-    {
-        $id = $this->request->post('id/d', 0, 'trim');
-
-        $rs = Db::name('supplier_cat_profit')
-            ->where(['is_del' => 0, 'id' => $id])
-            ->update([
-                'is_del' => 1,
-                'updatetime' => date('Y-m-d H:i:s')
-            ]);
-
-        return $rs ? json_show(0, '删除成功') : json_show(1004, '删除失败');
-    }
-
-}

+ 4 - 6
app/admin/route/app.php

@@ -690,9 +690,7 @@ route::rule('spcpUpdate', 'admin/SupplierPlatformCatProfit/update');
 route::rule('spcpStatus', 'admin/SupplierPlatformCatProfit/status');
 route::rule('spcpDelete', 'admin/SupplierPlatformCatProfit/delete');
 //【公司分类毛利】
-route::rule('scpList', 'admin/SupplierCatProfit/getList');
-route::rule('scpAdd', 'admin/SupplierCatProfit/add');
-route::rule('scpInfo', 'admin/SupplierCatProfit/info');
-route::rule('scpUpdate', 'admin/SupplierCatProfit/update');
-route::rule('scpStatus', 'admin/SupplierCatProfit/status');
-route::rule('scpDelete', 'admin/SupplierCatProfit/delete');
+route::rule('scpList', 'admin/CompanyCatProfit/getList');
+route::rule('scpSet', 'admin/CompanyCatProfit/set');
+route::rule('scpStatus', 'admin/CompanyCatProfit/status');
+route::rule('scpDelete', 'admin/CompanyCatProfit/delete');