dongxiaoqin 1 rok temu
rodzic
commit
e4c7cc57dd

+ 106 - 0
app/adminapi/controller/master_worker/MasterWorkerTemporaryController.php

@@ -0,0 +1,106 @@
+<?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\controller\master_worker;
+
+
+use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\master_worker\MasterWorkerLists;
+use app\adminapi\lists\master_worker\MoneyAnalysis;
+use app\adminapi\lists\master_worker\MasterWorkerOnlineLists;
+use app\adminapi\logic\master_worker\MasterWorkerLogic;
+use app\adminapi\validate\master_worker\MasterWorkerValidate;
+
+
+/**
+ * MasterWorkerTemporary控制器
+ * Class MasterWorkerTemporaryController
+ * @package app\adminapi\controller\master_worker
+ */
+class MasterWorkerTemporaryController extends BaseAdminController
+{
+    /**
+     * @notes 获取列表
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function lists()
+    {
+        return $this->dataLists(new MasterWorkerLists());
+    }
+
+    /**
+     * @notes 添加
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function add()
+    {
+        $params = (new MasterWorkerValidate())->post()->goCheck('add');
+        $result = MasterWorkerLogic::add($params);
+        if (true === $result) {
+            return $this->success('添加成功', [], 1, 1);
+        }
+        return $this->fail(MasterWorkerLogic::getError());
+    }
+
+
+    /**
+     * @notes 编辑
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function edit()
+    {
+        $params = (new MasterWorkerValidate())->post()->goCheck('edit');
+        $result = MasterWorkerLogic::edit($params);
+        if (true === $result) {
+            return $this->success('编辑成功', [], 1, 1);
+        }
+        return $this->fail(MasterWorkerLogic::getError());
+    }
+
+
+    /**
+     * @notes 删除
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function delete()
+    {
+        $params = (new MasterWorkerValidate())->post()->goCheck('delete');
+        MasterWorkerLogic::delete($params);
+        return $this->success('删除成功', [], 1, 1);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public function detail()
+    {
+        $params = (new MasterWorkerValidate())->goCheck('detail');
+        $result = MasterWorkerLogic::detail($params);
+        return $this->data($result);
+    }
+
+}

+ 228 - 0
app/adminapi/logic/works/GroupServiceWorkLogic.php

@@ -0,0 +1,228 @@
+<?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\logic\works;
+
+use think\Exception;
+use think\facade\Db;
+use app\common\logic\BaseLogic;
+use app\common\model\works\ServiceWork;
+use app\common\model\works\GroupServiceWork;
+use app\common\model\master_worker\MasterWorkerTemporary;
+
+/**
+ * GroupServiceWork逻辑
+ * Class GroupServiceWorkLogic
+ * @package app\adminapi\logic\works
+ */
+class GroupServiceWorkLogic extends BaseLogic
+{
+    /**
+     * @notes 编辑
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2024/07/10 18:17
+     */
+    public static function edit(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            ServiceWork::where('id', $params['id'])->update([
+                'address' => $params['address'],
+                'appointment_time' => strtotime($params['appointment_time']),
+                'estimated_finish_time' => $params['estimated_finish_time'],
+            ]);
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * 工程师确认上门
+     * @param $params
+     * @return false|void
+     */
+    public static function confirmDoor($params)
+    {
+        Db::startTrans();
+        try {
+            $work = GroupServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty();
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+
+            if($work->work_status != 3){
+                throw new Exception('请勿重复点击');
+            }
+
+            $work->finally_door_time = time();//最后上门时间
+            $work->work_status = 4;//已上门
+            $work->work_images = $params['work_images'];
+            $work->save();
+            Db::commit();
+        }
+        catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+    /**
+     * 工程师确认服务完成
+     * @param $params
+     * @return false|void
+     */
+    public static function confirmServiceFinish($params)
+    {
+        Db::startTrans();
+        try {
+            $work = GroupServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty();
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+            if($params['code'] != $work->code) {
+                throw new Exception('验证码错误');
+            }
+
+            if($work->user_confirm_status !=2){
+                throw new Exception('请勿重复操作');
+            }
+
+            $work->finished_images = $params['finished_images'];
+            $work->user_confirm_status = 3;//待确认服务完成
+            $work->save();
+
+            Db::commit();
+
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+    public static function allocateWorker($params,$userInfo){
+        Db::startTrans();
+        try {
+            $work = GroupServiceWork::findOrEmpty($params['id']);
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+            if($work->work_status >=6 ){
+                throw new \Exception('工单状态只能修改待结算之前的');
+            }
+            if($work->master_worker_id == $params['master_worker_id']){
+                throw new \Exception('分配的工程师相同');
+            }
+            $worker = MasterWorkerTemporary::where(['id'=>$params['master_worker_id'],'is_disable' =>0])->findOrEmpty();
+            if($worker->isEmpty()){
+                throw new \Exception('工程师不存在或被禁用');
+            }
+            
+            $work->master_worker_id = $params['master_worker_id'];
+            $work->work_status = 3;
+            $work->dispatch_time = time();
+            $work->receive_time = time();
+            $work->user_confirm_status = 2;
+            $work->code = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);//从 0 - 9 中随机取 4 个数字
+            $work->save();
+            Db::commit();
+          
+            // 工程师派单通知【给工程师的通知】【公众号通知,不发短信】
+            $workDetail = GroupServiceWorkLogic::detail($params);
+            $res = event('Notice',  [
+                'scene_id' => 113,
+                'params' => [
+                    'user_id' => $params['master_worker_id'],
+                    'order_id' => $params['id'],
+                    'thing9' => $workDetail['title'],
+                    'time7' => $workDetail['appointment_time'],
+                    'thing8' => (iconv_strlen($workDetail['address'])>15)?(mb_substr($workDetail['address'],0,15,'UTF-8').'...'):$workDetail['address'],
+                    'phone_number6' => asteriskString($workDetail['mobile']),
+                ]
+            ]);
+            return true;
+        }catch(\Exception $e){
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 工单详情
+     * @param $params
+     * @return array|false
+     */
+    public static function detail($params){
+        $work_where = !empty($params['work_sn'])?['work_sn'=>$params['work_sn']]:['id'=>$params['id']];
+        $result = GroupServiceWork::where($work_where)
+            ->append(['id','work_status_text','service_status_text'])
+            ->findOrEmpty()->toArray();
+      
+        //工程师工单按钮状态
+        $work_service_status = 0;
+        $work_service_status_text = '待派单';
+        //工单状态
+        if($result['work_status'] == 1){
+            $work_service_status = 1;
+            $work_service_status_text = '待领单';
+        }
+        if($result['work_status'] == 2){
+            $work_service_status = 2;
+            $work_service_status_text = '预约上门';
+        }
+        if($result['work_status'] == 3){
+            $work_service_status = 3;
+            $work_service_status_text = '等待上门';
+        }
+        
+        if($result['work_status'] == 5 and $result['user_confirm_status']==2){
+            $work_service_status = 7;
+            $work_service_status_text = '完成服务';
+        }
+        if($result['work_status'] == 5 and $result['user_confirm_status']==3){
+            $work_service_status = 8;
+            $work_service_status_text = '用户确认完成服务中';
+        }
+        if($result['work_status'] ==6){
+            $work_service_status = 9;
+            $work_service_status_text = '待结算';
+        }
+        if($result['work_status'] ==7){
+            $work_service_status = 10;
+            $work_service_status_text = '已完结';
+        }
+        if($result['work_status'] ==8){
+            $work_service_status = 11;
+            $work_service_status_text = '已评价';
+        }
+        if($result['work_status'] ==9){
+            $work_service_status = 12;
+            $work_service_status_text = '已退费';
+        }
+
+        $result['work_service_status'] = $work_service_status;
+        $result['work_service_status_text'] = $work_service_status_text;
+
+        return  $result;
+    }
+
+}

+ 1 - 1
app/api/logic/GroupActivityLogic.php

@@ -45,7 +45,7 @@ class GroupActivityLogic extends BaseLogic
             $detail['timestamp'] = time();
             $detail['goods'] = self::getEquityGoods($detail['equity_id']);
             //查询用户是否已有付款订单
-            $detail['order'] = GroupUserOrder::with('group_order')->where(['user_id'=>$userId,'group_activity_id'=>$id,'pay_status'=>1,'refund_status' => 0])->field('id,status,pay_way,pay_time,pay_status,remark,create_time,group_order_id')->findOrEmpty()->toArray();
+            $detail['order'] = GroupUserOrder::with('group_order')->where(['user_id'=>$userId,'group_activity_id'=>$id,'pay_status'=>1])->where('refund_status','<>',1)->field('id,status,pay_way,pay_time,pay_status,remark,create_time,group_order_id')->findOrEmpty()->toArray();
         }
 
         return $detail;

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

@@ -438,7 +438,11 @@ class ServiceOrderLogic extends BaseLogic
             $order_info =  \app\common\model\recharge\RechargeOrder::with(['order_goods'=>function ($query) {
                 $query->visible(['goods_id','goods_name','goods_image','goods_number','good_unit']);
             },'service_work'=>function ($query) {
+<<<<<<< HEAD
                 $query->visible(['id','order_effective_id','work_sn','real_name','mobile','address','service_status','appointment_time','master_worker_id','work_images','explanation','finished_images','finished_time','spare_total','service_work_spare_id','refund_approval','property_activity_id'])->append(['service_status_text','user_service_status','user_service_status_text']);
+=======
+                $query->visible(['id','work_sn','real_name','mobile','address','service_status','appointment_time','master_worker_id','work_images','explanation','finished_images','finished_time','spare_total','service_work_spare_id','refund_approval','property_activity_id','order_effective_id'])->append(['service_status_text','user_service_status','user_service_status_text']);
+>>>>>>> group_0313
             }])
                 ->visible(['id','sn','payment_type','order_total','order_amount','paid_amount','pay_status','create_time','title','work_id'])
                 ->where([

+ 1 - 1
app/common/command/GroupOrder.php

@@ -153,7 +153,7 @@ class GroupOrder extends Command
                     GroupUserOrder::where('id',$item['id'])->update(['remark' => $remark]);
                 } else {
                     //退款成功
-                    GroupUserOrder::where('id',$item['id'])->update(['status' => 2,'refund_status' => 1]);
+                    GroupUserOrder::where('id',$item['id'])->update(['status' => 2,'refund_status' => 2]);
                 }
 
             }

+ 169 - 0
app/common/model/works/GroupServiceWork.php

@@ -0,0 +1,169 @@
+<?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\works;
+
+
+use app\adminapi\logic\ConfigLogic;
+use app\api\logic\PerformanceLogic;
+use app\common\model\BaseModel;
+use app\common\model\equity\UserEquity;
+use app\common\model\goods_category\GoodsCategory;
+use app\common\model\master_commission\MasterWorkerCommissionConfig;
+use app\common\model\master_commission\MasterWorkerCommissionRatio;
+use app\common\model\master_worker\MasterWorker;
+use app\common\model\orders\RechargeOrder;
+use app\common\model\property\PropertyHead;
+use think\facade\Log;
+
+
+/**
+ * GroupServiceWork模型
+ * Class GroupServiceWork
+ * @package app\common\model\works
+ */
+class GroupServiceWork extends BaseModel
+{
+
+    protected $name = 'group_service_work';
+    protected $type = [
+        'goods_category_ids' =>  'array',
+    ];
+    const WORK_STATUS_TXT  = [0=>'待派单',1=>'待领单',2=>'待联系',3=>'待上门',4=>'已上门',5=>'服务中',6=>'待结算',7=>'已完结',8=>'已评价',9=>'已退费'];
+   
+    public function getWorkStatusTextAttr($value,$data)
+    {
+        return (isset($data['service_status']) && $data['service_status']===4)?'已取消':self::WORK_STATUS_TXT[$data['work_status']];
+    }
+
+    public function getUserServiceStatusAttr($value,$work): int
+    {
+        $user_status = 0;
+        //用户订单状态
+        if($work['work_status']>=2 && $work['work_status']<4){
+            $user_status = 1;//待上门,显示上门二维码
+        }
+        if($work['work_status']>=4 && $work['user_confirm_status'] == 0){
+            $user_status = 2;//服务中
+        }
+        if($work['work_status']>=4 && $work['user_confirm_status'] == 1){
+            $user_status = 3;//确认报价
+        }
+        if($work['work_status']==5 && $work['user_confirm_status'] == 2){
+            $user_status = 4;//服务中
+        }
+        if($work['work_status']==5 && $work['user_confirm_status'] == 3){
+            $user_status = 5;//确认服务完成
+        }
+        if($work['work_status']==6 && $work['user_confirm_status'] == 4){
+            $user_status = 6;//待支付
+        }
+        if($work['work_status']==7 && $work['user_confirm_status'] == 5){
+            $user_status = 7;//待评价
+        }
+        if($work['work_status']==8 && $work['user_confirm_status'] == 5){
+            $user_status = 8;//已评价
+        }
+        //退款处理
+        if($work['service_status']==5){
+            $user_status = 9;
+        }
+        //已取消
+        if($work['service_status'] == 4){
+            $user_status = 10;
+        }
+
+        return $user_status;
+    }
+
+    public function getUserServiceStatusTextAttr($value,$work)
+    {
+        $user_status = '待联系';
+        //用户订单状态
+        if($work['work_status']>=2 && $work['work_status']<4){
+            $user_status = '待上门';//待上门,显示上门二维码
+        }
+        if($work['work_status']>=4 && $work['user_confirm_status'] == 0){
+            $user_status = '服务中';//服务中
+        }
+        if($work['work_status']>=4 && $work['user_confirm_status'] == 1){
+            $user_status = '确认报价';//确认报价
+        }
+        if($work['work_status']==5 && $work['user_confirm_status'] == 2){
+            $user_status = '服务中';//服务中
+        }
+        if($work['work_status']==5 && $work['user_confirm_status'] == 3){
+            $user_status = '确认服务完成';//确认服务完成
+        }
+        if($work['work_status']==6 && $work['user_confirm_status'] == 4){
+            $user_status = '待支付';//待支付
+        }
+        if($work['work_status']==7 && $work['user_confirm_status'] == 5){
+            $user_status = '待评价';//待评价
+        }
+        if($work['work_status']==8 && $work['user_confirm_status'] == 5){
+            $user_status = '已评价';//已评价
+        }
+
+        //退款处理
+        if($work['service_status']==5){
+            $user_status = '已退款';
+        }
+        if($work['service_status']==4){
+            $user_status = '已取消';
+        }
+        return $user_status;
+    }
+
+    public function getServiceStatusTextAttr($value,$data)
+    {
+        $status = [0=>'已下单',1=>'服务中',2=>'部分完成',3=>'已完成',4=>'已取消',5=>'已退款'];
+        return $status[$data['service_status']];
+    }
+    public function getDispatchTimeAttr($value,$data)
+    {
+        return !empty($data['dispatch_time'])?date('Y/m/d H:i:s',$data['dispatch_time']):'';
+    }
+    public function getAppointmentTimeAttr($value,$data)
+    {
+        return !empty($data['appointment_time'])?date('Y/m/d H:i:s',$data['appointment_time']):'';
+    }
+
+    public function getFinishedTimeAttr($value,$data)
+    {
+        return !empty($data['finished_time'])?date('Y-m-d H:i:s',$data['finished_time']):'';
+    }
+
+    public function getEstimatedFinishTimeAttr($value,$data)
+    {
+        return !empty($data['estimated_finish_time'])?date('Y-m-d H:i:s',$data['estimated_finish_time']):'';
+    }
+
+    public function getWorkImagesAttr($value)
+    {
+        return !empty($value)?json_decode($value,true):'';
+    }
+
+    public function getFinishedImagesAttr($value)
+    {
+        return !empty($value)?json_decode($value,true):'';
+    }
+  
+    public function getCategoryTypeTextAttr($value,$data)
+    {
+        $categoryTypedata = array_column(ConfigLogic::getDictByType('category_type')['category_type'],'name','value');
+        return $categoryTypedata[$data['category_type']];
+    }
+
+}

+ 81 - 0
app/workerapi/controller/GroupWorksController.php

@@ -0,0 +1,81 @@
+<?php
+namespace app\workerapi\controller;
+
+use app\adminapi\logic\works\GroupServiceWorkLogic;
+use app\workerapi\lists\GroupServiceWorkLists;
+use app\workerapi\validate\GroupServiceWorkValidate;
+use Exception;
+
+/**
+ * 拼团工单系统
+ */
+class GroupWorksController extends BaseApiController
+{
+    /**
+     * 服务工单列表-全部
+     * @return \think\response\Json
+     */
+    public function serviceWorkList()
+    {
+        return $this->dataLists(new GroupServiceWorkLists());
+    }
+
+    /**
+     * 工单详情
+     * @return \think\response\Json
+     */
+    public function detail()
+    {
+        try {
+            $params = (new GroupServiceWorkValidate())->goCheck('detail',[
+                'user_id' => $this->userId,
+                'user_info' => $this->userInfo,
+            ]);
+            if(empty($params['id']) && empty($params['work_sn'])){
+                $this->fail('参数错误');
+            }
+            $result = GroupServiceWorkLogic::detail($params);
+            if (false === $result) {
+                return $this->fail(GroupServiceWorkLogic::getError());
+            }
+            return $this->data($result);
+        } catch (Exception $e) {
+            return $this->fail($e->getMessage());
+        }
+    }
+
+    /**
+     * 工程师确认上门
+     * @return \think\response\Json
+     */
+    public function confirmDoor()
+    {
+        $params = (new GroupServiceWorkValidate())->post()->goCheck('door', [
+            'user_id' => $this->userId,
+            'user_info' => $this->userInfo
+        ]);
+        $result = GroupServiceWorkLogic::confirmDoor($params);
+        if (false === $result) {
+            return $this->fail(GroupServiceWorkLogic::getError());
+        }
+        return $this->success('操作成功,工程师已上门', [], 1, 1);
+    }
+
+    /**
+     * 工程师确认服务完成
+     * @return \think\response\Json
+     */
+    public function confirmServiceFinish()
+    {
+        $params = (new GroupServiceWorkValidate())->post()->goCheck('finished', [
+            'user_id' => $this->userId,
+            'user_info' => $this->userInfo
+        ]);
+        $result = GroupServiceWorkLogic::confirmServiceFinish($params);
+        if (false === $result) {
+            return $this->fail(GroupServiceWorkLogic::getError());
+        }
+        return $this->success('操作成功,工程师已确认服务完成,等待用户确认中', [], 1, 1);
+    }
+
+}

+ 1 - 1
app/workerapi/http/middleware/LoginMiddleware.php

@@ -64,7 +64,7 @@ class LoginMiddleware
             }
 
             //临时工程师校验一下权限
-            if ($userInfo['type'] == 2 && $request->controller() != 'MasterWorkerTemporary') {
+            if ($userInfo['type'] == 2 && $request->controller() != 'Groupworks') {
                 return JsonService::fail('暂无权限', [], 401);
             }
         }

+ 101 - 0
app/workerapi/lists/GroupServiceWorkLists.php

@@ -0,0 +1,101 @@
+<?php
+namespace app\workerapi\lists;
+
+use app\common\model\works\GroupServiceWork;
+use app\common\lists\ListsSearchInterface;
+use DateTime;
+
+/**
+ * GroupServiceWork列表
+ * Class GroupServiceWorkLists
+ * @package app\workerapi\listsworks
+ */
+class GroupServiceWorkLists  extends BaseWorkerDataLists implements ListsSearchInterface
+{
+    protected $count = 0;
+    public function setSearch(): array
+    {
+        return [];
+    }
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public function lists(): array
+    {
+        $where = [
+            'master_worker_id'=>$this->userId,
+        ];
+     
+        //条件搜索
+        $status = $this->params['status'] ?? 0;
+        switch ($status){
+            case 0:
+                $where[] = ['work_status','<>',1];
+                $where[] = ['service_status','in','0,1,2'];
+                break;
+            case 1:
+                $where[] = ['work_status','<>',1];
+                $where[] = ['service_status','in','0,1,2'];
+                // 创建 DateTime 对象并设置为今天午夜
+                $startOfDay = new DateTime('today midnight');
+                // 设置为今天最后一秒
+                $endOfDay = new DateTime('today midnight');
+                $endOfDay->modify('+1 day -1 second');
+                // 转换为时间戳
+                $startOfDayTimestamp = $startOfDay->getTimestamp();
+                $endOfDayTimestamp = $endOfDay->getTimestamp();
+                $where[] = ['appointment_time','between',[$startOfDayTimestamp, $endOfDayTimestamp]];
+                break;
+            case 2:
+                $where[] = ['work_status','<>',1];
+                $where[] = ['service_status','in','0,1,2'];
+                // 创建一个 DateTime 对象表示当前时间
+                $dateNow = new DateTime();
+                // 修改这个对象以表示明天的午夜
+                $midnightTomorrow = clone $dateNow;
+                $midnightTomorrow->modify('+1 day midnight');
+                // 修改这个对象以表示明天的最后一秒
+                $lastSecondTomorrow = clone $dateNow;
+                $lastSecondTomorrow->modify('+1 day 23:59:59');
+                $midnightTimestamp = $midnightTomorrow->getTimestamp();
+                $lastSecondTimestamp = $lastSecondTomorrow->getTimestamp();
+                $where[] = ['appointment_time','between',[$midnightTimestamp, $lastSecondTimestamp]];
+                break;
+            case 3:
+                $where[] = ['work_status','<>',1];
+                break;
+            case 4:
+                $where['work_status'] = 7;
+                break;
+        }
+        $list = GroupServiceWork::where($where)
+            ->field(['id', 'work_sn', 'address', 'title', 'work_status', 'service_status','appointment_time'])
+            ->append(['work_status_text','service_status_text'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->order(['appointment_time' => 'asc'])//上门时间排序
+            ->select()
+            ->toArray();
+        $this->count = GroupServiceWork::where($where)->count();
+
+        return $list;
+    }
+
+
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public function count(): int
+    {
+        return $this->count;
+    }
+
+}

+ 127 - 0
app/workerapi/logic/GroupServiceWorkLogic.php

@@ -0,0 +1,127 @@
+<?php
+namespace app\workerapi\logic;
+use app\common\model\works\GroupServiceWork;
+use app\common\logic\BaseLogic;
+use think\facade\Db;
+
+
+/**
+ * GroupServiceWork逻辑
+ * Class GroupServiceWorkLogic
+ * @package app\workerapi\logic\works
+ */
+class GroupServiceWorkLogic extends BaseLogic
+{
+
+
+    /**
+     * @notes 添加
+     * @param array $params
+     * @return bool
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public static function add(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            GroupServiceWork::create([
+                'work_sn' => $params['work_sn'],
+                'real_name' => $params['real_name'],
+                'mobile' => $params['mobile'],
+                'address' => $params['address'],
+                'title' => $params['title'],
+                'category_type' => $params['category_type'],
+                'goods_category_ids' => $params['goods_category_ids'],
+                'goods_category_id' => $params['goods_category_id'],
+                'base_service_fee' => $params['base_service_fee'],
+                'service_fee' => $params['service_fee'],
+                'work_status' => $params['work_status'],
+                'service_status' => $params['service_status'],
+                'dispatch_time' => strtotime($params['dispatch_time']),
+                'receive_time' => strtotime($params['receive_time']),
+                'appointment_time' => strtotime($params['appointment_time']),
+                'finished_images' => $params['finished_images'],
+                'finished_time' => strtotime($params['finished_time']),
+                'master_worker_id' => $params['master_worker_id'],
+                'work_amount' => $params['work_amount'],
+            ]);
+
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 编辑
+     * @param array $params
+     * @return bool
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public static function edit(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            GroupServiceWork::where('id', $params['id'])->update([
+                'work_sn' => $params['work_sn'],
+                'real_name' => $params['real_name'],
+                'mobile' => $params['mobile'],
+                'address' => $params['address'],
+                'title' => $params['title'],
+                'category_type' => $params['category_type'],
+                'goods_category_ids' => $params['goods_category_ids'],
+                'goods_category_id' => $params['goods_category_id'],
+                'base_service_fee' => $params['base_service_fee'],
+                'service_fee' => $params['service_fee'],
+                'work_status' => $params['work_status'],
+                'service_status' => $params['service_status'],
+                'dispatch_time' => strtotime($params['dispatch_time']),
+                'receive_time' => strtotime($params['receive_time']),
+                'appointment_time' => strtotime($params['appointment_time']),
+                'finished_images' => $params['finished_images'],
+                'finished_time' => strtotime($params['finished_time']),
+                'master_worker_id' => $params['master_worker_id'],
+                'work_amount' => $params['work_amount'],
+            ]);
+
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 删除
+     * @param array $params
+     * @return bool
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public static function delete(array $params): bool
+    {
+        return GroupServiceWork::destroy($params['id']);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @param $params
+     * @return array
+     * @author whitef
+     * @date 2024/07/10 15:06
+     */
+    public static function detail($params): array
+    {
+        return GroupServiceWork::findOrEmpty($params['id'])->toArray();
+    }
+}

+ 73 - 0
app/workerapi/validate/GroupServiceWorkValidate.php

@@ -0,0 +1,73 @@
+<?php
+namespace app\workerapi\validate;
+
+
+use app\common\validate\BaseValidate;
+
+
+/**
+ * GroupServiceWork验证器
+ * Class GroupServiceWorkValidate
+ * @package app\workerapi\validate\works
+ */
+class GroupServiceWorkValidate extends BaseValidate
+{
+
+     /**
+      * 设置校验规则
+      * @var string[]
+      */
+    protected $rule = [
+        'id' => 'require',
+        'work_sn' => 'require',
+        'mobile' => 'require',
+        'address' => 'require',
+        'work_status' => 'require',
+        'service_status' => 'require',
+        'appointment_time' => 'require|dateFormat:Y/m/d H:i:s',
+        'finished_images'=>'require',
+        'work_images'=>'require',
+        'code' => 'require',
+    ];
+
+    /**
+     * 参数描述
+     * @var string[]
+     */
+    protected $field = [
+        'id' => 'id',
+        'work_sn' => '工单编号',
+        'mobile' => '手机号',
+        'address' => '客户地址',
+        'work_status' => '工单状态',
+        'service_status' => '订单服务状态',
+        'appointment_time' => '预约上门时间',
+        'finished_time' => '结单时间',
+        'finished_images'=>'完结服务拍照',
+        'work_images'=>'工作拍照',
+        'code' => '工单验证码'
+    ];
+
+    /**
+     * 领取场景
+     * @return ServiceWorkValidate
+     */
+    public function sceneDetail()
+    {
+        return $this->only(['*']);
+    }
+
+    /**
+     * 确认上门场景
+     * @return ServiceWorkValidate
+     */
+    public function sceneDoor()
+    {
+        return $this->only(['work_sn','work_images']);
+    }
+
+    public function sceneFinished()
+    {
+        return $this->only(['work_sn','finished_images','code']);
+    }
+}