Kaynağa Gözat

up - 商品、工单、代招统计

liugc 1 yıl önce
ebeveyn
işleme
dc40eef199

+ 9 - 2
app/adminapi/lists/master_worker/MasterWorkerServiceOrderLists.php

@@ -3,6 +3,7 @@ namespace app\adminapi\lists\master_worker;
 
 use app\adminapi\lists\BaseAdminDataLists;
 use app\common\lists\ListsSearchInterface;
+use app\common\model\goods_category\GoodsCategory;
 use app\common\model\master_worker\MasterWorker;
 use think\facade\Db;
 use think\facade\Log;
@@ -90,8 +91,9 @@ class MasterWorkerServiceOrderLists extends BaseAdminDataLists implements ListsS
     public function lists(): array
     {
         $queryWhere = $this->queryWhere();
-        return Db::name('master_worker')->alias('a')->field([
-                'a.id','a.real_name','a.nickname','a.worker_number','a.recruiting_behalf','a.mobile','a.cooperation',
+        $lists = Db::name('master_worker')->alias('a')->field([
+                'a.id','a.real_name','a.nickname','a.worker_number','a.recruiting_behalf','a.mobile','a.cooperation','a.category_ids',
+                Db::raw("COUNT(b.id) AS all_count"),
                 Db::raw("SUM(CASE WHEN b.service_status = 3 THEN 1 ELSE 0 END) AS success_count"),
                 Db::raw("SUM(CASE WHEN b.service_status = 4 OR b.service_status = 5 THEN 1 ELSE 0 END) AS fail_count"),
                 Db::raw("SUM(b.work_total) work_total"),
@@ -103,6 +105,11 @@ class MasterWorkerServiceOrderLists extends BaseAdminDataLists implements ListsS
             ->order('a.id desc')
             ->limit($this->limitOffset, $this->limitLength)
             ->select()->toArray();
+        $categoryData = GoodsCategory::select()->toArray();
+        foreach ($lists as &$item) {
+            $item['category_name'] = implode('、',array_column(get_parent_info($categoryData,explode(',',$item['category_ids'])),'name'));
+        }
+        return $lists;
     }
 
 

+ 5 - 0
app/adminapi/lists/works/ServiceWorkLists.php

@@ -17,6 +17,7 @@ namespace app\adminapi\lists\works;
 
 use app\adminapi\lists\BaseAdminDataLists;
 use app\common\model\goods_category\GoodsCategory;
+use app\common\model\master_worker\MasterWorker;
 use app\common\model\works\ServiceWork;
 use app\common\lists\ListsSearchInterface;
 use think\db\Query;
@@ -48,6 +49,10 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
 
     public function queryWhere(){
         $where = [];
+        if (isset($this->params['master_worker_name']) && !empty($this->params['master_worker_name'])) {
+            $master_worker_ids = MasterWorker::where([['nickname|worker_number|mobile', 'like','%' .$this->params['master_worker_name'] . '%']])->column('id')??[0];
+            $where[] = ['master_worker_id','in' ,$master_worker_ids];
+        }
         if(isset($this->params['dispatch_time']) && !empty($this->params['dispatch_time'])){
             $time = [strtotime($this->params['dispatch_time'][0]), strtotime($this->params['dispatch_time'][1])];
             $where[] = ['dispatch_time', 'between', $time];

+ 30 - 1
app/adminapi/logic/goods/GoodsLogic.php

@@ -43,6 +43,10 @@ class GoodsLogic extends BaseLogic
     {
         Db::startTrans();
         try {
+            if((!$params['type'] || !$params['rate']) && $params['goods_status']==1){
+                throw new Exception('商品规格的绩效未配置,不允许上架');
+            }
+
             $params['goods_category_id'] = end($params['goods_category_ids']);
             if ($params['is_type'] == 1) {
                 $params['is_agent'] = 1;
@@ -54,7 +58,7 @@ class GoodsLogic extends BaseLogic
                 $params['is_agent'] = 0;
                 $params['is_activity'] = 0;
             }
-            Goods::create([
+            $goods = Goods::create([
                 'goods_category_ids' => $params['goods_category_ids'],
                 'category_type' => GoodsCategory::where('id',$params['goods_category_id'])->value('category_type'),
                 'goods_category_id' => $params['goods_category_id'],
@@ -89,6 +93,31 @@ class GoodsLogic extends BaseLogic
                 'activity_service_fee' => $params['activity_service_fee'] ??'',
             ]);
 
+            //更新绩效规则
+            if(in_array($params['type'],[0,1,2])){
+                // 0-1
+                if($params['rate']>1){
+                    throw new Exception('商品绩效比率不能大于1');
+                }
+            }
+            if(in_array($params['type'],[3])){
+                // ≥1
+                if($params['rate']<1){
+                    throw new Exception('金额不能小于1');
+                }
+            }
+            $rule = PerformanceRules::where(['goods_id'=>$goods->id])->findOrEmpty();
+            if(!$rule->isEmpty()){
+                $rule->type = $params['type'];
+                $rule->rate = $params['rate'];
+            }else{
+                $rule = new PerformanceRules();
+                $rule->goods_id = $goods->id;
+                $rule->type = $params['type'];
+                $rule->rate = $params['rate'];
+            }
+            $rule->save();
+
             Db::commit();
             return true;
         } catch (\Exception $e) {

+ 32 - 1
app/common.php

@@ -135,7 +135,38 @@ function get_tree_ids($data,$pid = 0, $idField = 'id',$pidField = 'pid')
     }
     return $child;
 }
-
+function get_top_parent_info($data, $id, $idField = 'id', $pidField = 'pid')
+{
+    foreach ($data as $item) {
+        if ($item[$idField] == $id) {
+            if ($item[$pidField] == 0) {
+                return $item;
+            } else {
+                return get_top_parent_info($data, $item[$pidField], $idField, $pidField);
+            }
+        }
+    }
+    return null;
+}
+/**
+ * 根据子集的值获取所有最高父级信息
+ * @param $data
+ * @param $pid
+ * @param $idField
+ * @param $pidField
+ * @return array
+ */
+function get_parent_info($data,$ids = [])
+{
+    $res = [];
+    foreach ($ids as $item) {
+        $topParentInfo = get_top_parent_info($data, $item);
+        if ($topParentInfo !== null) {
+            $res[$topParentInfo['id']] = $topParentInfo;
+        }
+    }
+    return $res;
+}
 
 /**
  * @notes 删除目标目录