Przeglądaj źródła

Merge branch 'master' of e.coding.net:zdap/weixiu/weixiu_api into master_worker_group-m

liugc 1 rok temu
rodzic
commit
5203398b04

+ 8 - 0
app/adminapi/controller/master_worker/MasterWorkerServiceOrderController.php

@@ -2,6 +2,7 @@
 namespace app\adminapi\controller\master_worker;
 
 use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\master_commission\MasterWorkerCommissionNoticeLists;
 use app\adminapi\lists\master_worker\MasterWorkerServiceOrderLists;
 use app\adminapi\logic\export\ExportLogic;
 use app\common\service\ExcelExportService;
@@ -39,4 +40,11 @@ class MasterWorkerServiceOrderController extends BaseAdminController
         (new ExcelExportService)->download($result);
         return $this->success('添加成功-'.$result, [], 1, 1);
     }
+
+    public function freeNotice()
+    {
+        return $this->dataLists(new MasterWorkerCommissionNoticeLists());
+    }
+
+
 }

+ 94 - 0
app/adminapi/lists/master_commission/MasterWorkerCommissionNoticeLists.php

@@ -0,0 +1,94 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\lists\master_commission;
+
+
+use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\master_commission\MasterWorkerCommissionNotice;
+use app\common\lists\ListsSearchInterface;
+use think\facade\Db;
+
+
+/**
+ * MasterWorkerCommissionNotice列表
+ * Class MasterWorkerCommissionNoticeLists
+ * @package app\adminapi\lists
+ */
+class MasterWorkerCommissionNoticeLists extends BaseAdminDataLists implements ListsSearchInterface
+{
+
+
+    /**
+     * @notes 设置搜索条件
+     * @return \string[][]
+     * @author likeadmin
+     * @date 2024/12/16 17:37
+     */
+    public function setSearch(): array
+    {
+        return [
+            '=' => ['commission_config_id', 'master_worker_id', 'day_num', 'order_num', 'signing_date', 'signing_date_end'],
+            'like' => ['worker_number%', 'real_name%', 'mobile%'],
+        ];
+    }
+
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author likeadmin
+     * @date 2024/12/16 17:37
+     */
+    public function lists(): array
+    {
+        return Db::name('master_worker_commission_notice')->alias('n')
+            ->leftJoin('service_work sw', 'n.master_worker_id = sw.master_worker_id AND sw.create_time >= n.signing_date AND sw.create_time <= n.signing_date_end')
+            ->leftJoin('master_worker mw', 'n.master_worker_id = mw.id')
+            ->field([
+                'n.id', 'n.commission_config_id', 'n.master_worker_id', 'n.day_num', 'n.order_num', 'n.signing_date', 'n.signing_date_end',
+                'mw.real_name', 'mw.nickname', 'mw.worker_number', 'mw.mobile',
+                Db::raw("COUNT(sw.id) AS order_count"),
+                Db::raw("MAX(sw.finished_time) max_time")
+            ])
+            ->where($this->searchWhere)
+            ->group('n.master_worker_id, n.id')
+            ->limit($this->limitOffset, $this->limitLength)
+            ->select()->toArray();
+    }
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author likeadmin
+     * @date 2024/12/16 17:37
+     */
+    public function count(): int
+    {
+        return Db::name('master_worker_commission_notice')->alias('n')
+            ->with('masterWorker')
+            ->leftJoin('service_work sw', 'n.master_worker_id = sw.master_worker_id AND sw.create_time >= n.signing_date AND sw.create_time <= n.signing_date_end')
+            ->field([
+                'n.id', 'n.commission_config_id', 'n.master_worker_id', 'n.day_num', 'n.order_num', 'n.signing_date', 'n.signing_date_end',
+                Db::raw("COUNT(sw.id) AS order_count"),
+                Db::raw("MAX(sw.finished_time) max_time")
+            ])
+            ->where($this->searchWhere)
+            ->group('n.master_worker_id, n.id')
+            ->count();
+    }
+
+}

+ 16 - 0
app/adminapi/logic/master_commission/MasterWorkerCommissionConfigLogic.php

@@ -174,6 +174,22 @@ class MasterWorkerCommissionConfigLogic extends BaseLogic
                 }
                 Db::name('master_worker_commission_ratio')->insertAll($ratioData);
 
+                // 单数规则数据 day_num: 0, order_num: 0, signing_date
+                $noticeData = [];
+                foreach ($info->notice_rule as $data){
+                    $noticeData[] = [
+                        'commission_config_id' => $params['id'],
+                        'master_worker_id' => $info->master_worker_id,
+                        'day_num' => $data['day_num'],
+                        'order_num' => $data['order_num'],
+                        'signing_date' => strtotime($data['signing_date']),
+                        'signing_date_end' => strtotime($data['signing_date'])+($data['day_num']*86400),
+                        'create_time' => time(),
+                        'update_time' => time(),
+                    ];
+                }
+                Db::name('master_worker_commission_notice')->insertAll($noticeData);
+
                 // 启动
                 MasterWorkerCommissionConfig::where('id', $params['id'])->update([
                     'examine_admin_id' => $params['adminId'],

+ 2 - 0
app/api/controller/ServiceOrderController.php

@@ -154,6 +154,8 @@ class ServiceOrderController extends BaseApiController
         }
         // 订单完成通知【给用户】 - 全款 -通知
         ServiceOrderLogic::serviceFinishNotice($params);
+        // 工程师完单的时候设置该规则关闭,以及短信通知工程师
+        ServiceOrderLogic::orderQuantityRule($params);
         return $this->success('已确认服务完成', [], 1, 1);
     }
 

+ 66 - 0
app/api/logic/ServiceOrderLogic.php

@@ -15,6 +15,8 @@ use app\common\model\coupon\CouponCategory;
 use app\common\model\coupon\UserCoupon;
 use app\common\model\dict\DictData;
 use app\common\model\goods\Goods;
+use app\common\model\master_commission\MasterWorkerCommissionConfig;
+use app\common\model\master_commission\MasterWorkerCommissionNotice;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\master_worker\MasterWorkerRule;
 use app\common\model\orders\RechargeOrder;
@@ -997,6 +999,70 @@ class ServiceOrderLogic extends BaseLogic
         }
     }
 
+    /**
+     * 工程师完单的时候设置单量规则 - 通知
+     * @param $params
+     * @return bool
+     */
+    public static function orderQuantityRule($params)
+    {
+        try {
+            $work_id =  \app\common\model\recharge\RechargeOrder::where([
+                'order_type' => 0,
+                'user_id' => $params['user_id'],
+                'sn'=>$params['sn']
+            ])->value('work_id');
+            if(empty($work_id)){
+                throw new Exception('订单不存在');
+            }
+            $service_work = ServiceWork::find($work_id);
+            $commission_config_id = MasterWorkerCommissionConfig::where('voucher_status','=',2)
+                ->where('master_worker_id', $service_work['master_worker_id'])
+                ->value('id');
+            if($commission_config_id){
+                // 工程师完单的时候设置该规则关闭,以及短信通知工程师
+                $noticeRule = Db::name('master_worker_commission_notice')->alias('n')
+                    ->leftJoin('service_work sw', 'n.master_worker_id = sw.master_worker_id AND sw.create_time >= n.signing_date AND sw.create_time <= n.signing_date_end')
+                    ->field([
+                        'n.id', 'n.commission_config_id', 'n.master_worker_id', 'n.day_num', 'n.order_num', 'n.signing_date', 'n.signing_date_end','n.is_notice',
+                        Db::raw("COUNT(sw.id) AS order_count")
+                    ])
+                    ->where('n.commission_config_id', $commission_config_id)
+                    ->group('n.master_worker_id, n.id')
+                    ->select()->toArray();
+                $is_off = true;
+                foreach ($noticeRule as $item) {
+                    if($item['order_num'] <= $item['order_count'] && empty($item['is_notice'])){
+                        Log::info('orderQuantityRule:'.json_encode($item));
+                        MasterWorkerCommissionNotice::where('id',$item['id'])->update([
+                            'is_notice'=>1
+                        ]);
+                        event('Notice',  [
+                            'scene_id' => 128,
+                            'params' => [
+                                'user_id' => $service_work['master_worker_id'],
+                                'number1' => $item['day_num'],
+                                'number' => $item['order_num']
+                            ]
+                        ]);
+                    }
+                    if($item['order_num'] > $item['order_count']){
+                        $is_off = false;
+                    }
+                }
+                if($is_off){
+                    MasterWorkerCommissionConfig::where('id',$commission_config_id)->update([
+                        'voucher_status'=>1
+                    ]);
+                }
+            }
+            return true;
+        }catch (\Exception $e) {
+            Log::info('orderQuantityRule:'.$e->getMessage());
+            return false;
+        }
+    }
+
     /**
      * 提交订单
      * @param array $params

+ 38 - 0
app/common/model/master_commission/MasterWorkerCommissionNotice.php

@@ -0,0 +1,38 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\common\model\master_commission;
+
+
+use app\common\model\BaseModel;
+use app\common\model\master_worker\MasterWorker;
+
+
+/**
+ * MasterWorkerCommissionNotice模型
+ * Class MasterWorkerCommissionNotice
+ * @package app\common\model
+ */
+class MasterWorkerCommissionNotice extends BaseModel
+{
+    
+    protected $name = 'master_worker_commission_notice';
+
+
+    public function masterWorkerInfo()
+    {
+        return $this->hasOne(MasterWorker::class, 'id', 'master_worker_id');
+    }
+
+}