| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820 | <?phpnamespace app\api\controller;use app\common\controller\Api;use think\Db;use app\common\library\Sms as Smslib;/** * 派单接口 */class Dispatch extends Common{    protected $noNeedLogin = ['getSkillList','getReciveList'];    protected $noNeedRight = ['*'];    /**     * 添加技能认证     */    public function addSkillAuth() {        $skill_id = $this->request->request('skill_id',0,"intval"); // 技能ID        $leaver_id = $this->request->request('leaver_id',0,"intval"); // 技能等级ID        $area_id = $this->request->request('area_id',0,"intval"); // 区服ID        $image = $this->request->request('image'); // 图片说明        $voice = $this->request->request('voice'); // 语音说明        $voice_time = $this->request->request('voice_time'); // 声音时长        $price = $this->request->request('price'); // 价格说明        $remarks = $this->request->request('remarks'); // 技能介绍        if (!$skill_id || !$image || !$voice || !$remarks || !$price) {            $this->error(__('Invalid parameters'));        }        $is_main = 0;        // 获取技能信息        $skillModel = new \app\common\model\DispatchSkill();        $skillInfo = $skillModel->getSkillInfo($skill_id);        if(!$skillInfo) {            $this->error(__('未找到技能信息!'));        }        $authModel = new \app\common\model\DispatchAuth();        // 是否已经认证过        $where = [];        $where["user_id"] = $this->auth->id;        $where["skill_id"] = $skill_id;        $authInfo = $authModel->where($where)->find();        if($authInfo) {            if($authInfo["status"] == 0) $this->error(__('您已提交过认证申请,请耐心等待审核!'));            if($authInfo["status"] == 1) $this->error(__('您已经认证过了'));        }       if($authModel->where(["user_id"=>$this->auth->id])->count()<=0) {           $is_main = 1;       }        // 添加认证信息        $data = [];        $data["user_id"] = $this->auth->id;        $data["skill_id"] = $skill_id;        $data["leaver_id"] = $leaver_id;        $data["area_id"] = $area_id;        $data["image"] = $image;        $data["voice"] = $voice;        $data["voice_time"] = $voice_time;        $data["price"] = $price;        $data["is_main"] = $is_main;        $data["image"] = $image;        $data["remarks"] = $remarks;        $data["createtime"] = time();        $res = $authModel->insertGetId($data);        if($res) {            $this->success('申请发送成功,请耐心等待审核!');        } else {            $this->error(__('网络错误,请稍后重试!'));        }    }    /**     * 判断当前技能是否已认证     */    public function skillIsAuth() {        $skill_id = $this->request->request('skill_id',0,"intval"); // 技能ID        if (!$skill_id) {            $this->error(__('Invalid parameters'));        }        $authModel = new \app\common\model\DispatchAuth();        // 是否已经认证过        $where = [];        $where["user_id"] = $this->auth->id;        $where["skill_id"] = $skill_id;        $authInfo = $authModel->field("status")->where($where)->find();        if($authInfo) {            if($authInfo["status"] == 0) $this->error(__('当前技能已提交过认证申请,请耐心等待审核!'));            if($authInfo["status"] == 1) $this->error(__('当前技能已经认证过了'));        }        $skillLevelInfo = \app\common\model\DispatchSkillLeaver::where(["skill_id"=>$skill_id])->find();        $skillAreaInfo = \app\common\model\DispatchSkillArea::where(["skill_id"=>$skill_id])->find();        $res = [];        $res["level"] = $skillLevelInfo?1:0;        $res["area"] = $skillAreaInfo?1:0;        $this->success("没有认证过,可以去认证!", $res);    }//    /**//     * 创建接单信息//     *///    public function addRecive() {//        $skill_id = $this->request->request('skill_id',0,"intval"); // 技能ID//        $back_image = $this->request->request('back_image'); // 背景图//        $price = $this->request->request('price'); // 服务价格//        $describe = $this->request->request('describe'); // 一句话描述////        $tags = $this->request->request('tags'); // 标签列表(中文半角逗号隔开)//        if (!$skill_id || !$back_image || !$describe) {//            $this->error(__('Invalid parameters'));//        }//        $reciveModel = new \app\common\model\DispatchRecive();//        $where = [];//        $where["user_id"] = $this->auth->id;//        $where["skill_id"] = $skill_id;//        $where["status"] = 1;//        $reciveInfo = $reciveModel->where($where)->find();//        if($reciveInfo) {//            $this->error(__('您已存在当前技能的接单信息,请勿重复提单'));//        }////        // 获取技能信息//        $skillModel = new \app\common\model\DispatchSkill();//        $skillInfo = $skillModel->getSkillInfo($skill_id);//        if(!$skillInfo) {//            $this->error(__('未找到技能信息!'));//        }////        // 添加接单信息//        $data = [];//        $data["user_id"] = $this->auth->id;//        $data["skill_id"] = $skill_id;//        $data["back_image"] = $back_image;//        $data["price"] = $price;//        $data["unit"] = $skillInfo["unit"];//        $data["describe"] = $describe;////        $data["tags"] = $tags;//        $data["createtime"] = time();//        $res = $reciveModel->insertGetId($data);//        if($res) {//            $this->success('恭喜,接单信息已发送!');//        } else {//            $this->error(__('网络错误,请稍后重试!'));//        }//    }//    /**//     * 创建订单//     *///    public function addOrder() {//        $recive_id = $this->request->request('recive_id',0,"intval"); // 接单ID//        $num = $this->request->request('num',0,"intval"); // 数量//        $describe = $this->request->request('describe'); // 备注要求//        if (!$recive_id || !$num || !$describe) {//            $this->error(__('Invalid parameters'));//        }////        // 获取接单信息//        $reciveModel = new \app\common\model\DispatchRecive();//        $where = [];//        $where["id"] = $recive_id;//        $reciveInfo = $reciveModel->where($where)->find();//        if(!$reciveInfo) {//            $this->error(__('接单信息不存在!'));//        }//        if($reciveInfo["status"] == 2) {//            $this->error(__('订单已关闭!'));//        }//        // 判断用户余额//        $userModel = new \app\common\model\User();//        $where = [];//        $where["id"] = $this->auth->id;//        $jewel = $userModel->where($where)->value("jewel");//        $price = 0;//        $reciveInfo["price"] >= 0 || $price = 0;//        $reciveInfo["price"] >= 0 && $price = $reciveInfo["price"];//        if($price * $num >= $jewel) {//            $this->error(__('钻石余额不足,请先充值!'));//        }//        // 添加订单信息//        $orderModel = new \app\common\model\DispatchOrder();//        $data = [];//        $data["user_id"] = $this->auth->id;//        $data["recive_id"] = $recive_id;//        $data["price"] = $reciveInfo["price"];//        $data["num"] = $num;//        $data["describe"] = $describe;//        $data["createtime"] = time();//        $res = $orderModel->insertGetId($data);//        if($res) {//            $this->success('订单创建成功!');//        } else {//            $this->error(__('订单创建失败!'));//        }////    }//    /**//     * 获取接单信息//     *///    public function getReciveInfo() {//        $recive_id = $this->request->request('recive_id',0,"intval"); // 接单ID//        if (!$recive_id) {//            $this->error(__('Invalid parameters'));//        }//        // 获取接单信息//        $reciveModel = new \app\common\model\DispatchRecive();//        $where = [];//        $where["r.id"] = $recive_id;//        $reciveInfo = $reciveModel->alias("r")//            ->field("r.id,u.id as user_id,r.back_image,a.voice,u.avatar,u.nickname,s.name as skill_name,r.price,s.unit,r.service_time,r.describe,r.tags")//            ->join("hx_user u","u.id = r.user_id")//            ->join("hx_dispatch_skill s","s.id = r.skill_id")//            ->join("hx_dispatch_auth a","a.skill_id = s.id")//            ->where($where)//            ->find();//        if(!$reciveInfo) {//            $this->error(__('数据为空!'));//        }//        // 在线状态和ID//        $reciveInfo["is_online"] = 1;//        $reciveInfo["line_id"] = 234224;//        // 已服务人数//        $where = [];//        $where["user_id"] = $reciveInfo["user_id"];//        $where["status"] = 2;//        $reciveInfo["service_num"] = \app\common\model\DispatchOrder::where(["user_id"])->count();//        // 主播认证通过的所有技能标签//        $authModel = new \app\common\model\DispatchAuth();//        $where = [];//        $where["a.user_id"] = $reciveInfo["user_id"];//        $where["a.status"] = $reciveInfo["user_id"];//        $skillArr = $authModel->alias("a")//            ->field("s.id,s.name")//            ->join("hx_dispatch_skill s","s.id = a.skill_id")//            ->where(["user_id"])->select();////        $reciveInfo["skills"] = $skillArr;////        $this->success('获取成功!',$reciveInfo);//    }    /**     * 获取接单列表     */    public function getReciveList() {        $skill_id = $this->request->request('skill_id',0,"intval"); // 技能ID        $is_recommend = $this->request->request('is_recommend'); // 是否推荐:1=是,0=否        $gender = $this->request->request('gender',-1); // 性别:1=男,0=女,-1=全部        $page = $this->request->request('page',1); // 分页        $pageNum = $this->request->request('pageNum',10); // 分页        // 分页搜索构建        $pageStart = ($page-1)*$pageNum;        if(!in_array($gender,[-1,0,1])) {            $gender = -1;        }        $authModel = new \app\common\model\DispatchAuth();        $where = [];        if ($skill_id > 0) {            $where["a.skill_id"] = $skill_id;        } else if($is_recommend == 1) {            $where["a.is_recommend"] = $is_recommend;            $where["a.is_main"] = 1;        }        $where["a.status"] = 1;        $gender == -1 || $where["u.gender"] = $gender;        $authList = $authModel->alias("a")            ->field("a.id,u.avatar,ds.name as skill_name,a.voice,a.voice_time,a.price,ds.unit,u.nickname,u.gender")            ->join("hx_user u","u.id = a.user_id")            ->join("hx_dispatch_skill ds","ds.id = a.skill_id")            ->limit($pageStart,$pageNum)            ->where($where)            ->select();        $this->success('获取成功!',$authList);    }    /**     * 获取推荐列表     */    public function getReciveCommentList() {        $page = $this->request->request('page',1); // 分页        $pageNum = $this->request->request('pageNum',10); // 分页        // 分页搜索构建        $pageStart = ($page-1)*$pageNum;        $authModel = new \app\common\model\DispatchAuth();        $where = [];        $where["a.is_main"] = 1;        $where["a.status"] = 1;        $where["a.is_recommend"] = 1;        $authList = $authModel->alias("a")            ->field("a.id,u.avatar,ds.name as skill_name,a.voice,a.voice_time,a.price,ds.unit,u.nickname,u.gender")            ->join("hx_user u","u.id = a.user_id")            ->join("hx_dispatch_skill ds","ds.id = a.skill_id")            ->limit($pageStart,$pageNum)            ->where($where)            ->select();        $this->success('获取成功!',$authList);    }    /**     * 获取接单信息     */    public function getReciveInfo() {        $auth_id = $this->request->request('auth_id',0,"intval"); // 技能认证ID        if (!$auth_id) {            $this->error(__('Invalid parameters'));        }        // 获取接单信息        $authModel = new \app\common\model\DispatchAuth();        $where = [];        $where["a.id"] = $auth_id;        $authInfo = $authModel->alias("a")            ->field("a.id,a.user_id,a.image,a.voice,a.voice_time,u.avatar,u.nickname,u.u_id,u.is_online,s.id as skill_id,s.name as skill_name,s.image as skill_icon, a.price,s.unit,a.remarks")            ->join("hx_user u","u.id = a.user_id")            ->join("hx_dispatch_skill s","s.id = a.skill_id")            ->where($where)            ->find();        if(!$authInfo) {            $this->error(__('数据为空!'));        }        // 已服务人数        $where = [];        $where["recive_id"] = $authInfo["user_id"];        $where["status"] = 3;        $authInfo["service_num"] = \app\common\model\DispatchOrder::where($where)->count();        // 主播认证通过的所有技能标签        $viewuserskillModel = new \app\common\model\ViewUserSkill();        $skillArr = $viewuserskillModel->getSkillInfoId($authInfo["user_id"]);        // 查看者是否已关注        $followid = \app\common\model\UserFansFollow::where(["fans_id"=>$this->auth->id,"user_id"=>$authInfo["user_id"]])->value("id");        $authInfo["is_follow"] = $followid>0?1:0;        $authInfo["skills"] = $skillArr;        $this->success('获取成功!',$authInfo);    }    /**     * 创建订单     */    public function addOrder() {        $user_id = $this->request->request('user_id',0,"intval"); // 主播用户ID        $skill_id = $this->request->request('skill_id',0,"intval"); // 技能ID        $num = $this->request->request('num',0,"intval"); // 数量        $make_time = $this->request->request('make_time'); // 预约时间 格式:时间戳。        $describe = $this->request->request('describe'); // 备注要求        $makeTimeLen = strlen($make_time);        if (!empty($make_time) && $makeTimeLen > 10) {//处理时间戳位数问题            $make_time = substr($make_time,0,10);        }        if (!$skill_id || !$num) {            $this->error(__('Invalid parameters'));        }        $orderModel = new \app\common\model\DispatchOrder();        // 获取接单信息        $authModel = new \app\common\model\DispatchAuth();        $where = [];        $where["user_id"] = $user_id;        $where["skill_id"] = $skill_id;        $where["status"] = 1;        $authInfo = $authModel->where($where)->find();        if(!$authInfo) {            $this->error(__('技能认证信息不存在,或认证未通过!'),[],103);        }        // 获取技能信息        $skillModel = new \app\common\model\DispatchSkill();        $where = [];        $where["id"] = $skill_id;        $skillInfo = $skillModel->where($where)->find();        if(!$skillInfo) {            $this->error(__('技能信息未找到,请稍后重试!'));        }        // 判断用户余额        $userModel = new \app\common\model\User();        $where = [];        $where["id"] = $this->auth->id;        $jewel = $userModel->where($where)->value("jewel");        $price = 0;        $authInfo["price"] >= 0 || $price = 0;        $authInfo["price"] >= 0 && $price = $authInfo["price"];        $money = $price * $num;        if($money > $jewel) {            $this->error(__('钻石余额不足,请先充值!'),[],100);        }        // 禁止自己下单        if($this->auth->id == $authInfo["user_id"]) {            $this->error(__('禁止自己下单!'),[],101);        }        // 查看当前用户是否有未支付订单        $where = [];        $where["user_id"] = $this->auth->id;        $where["status"] = 0;        $orderInfo = $orderModel->where($where)->find();//        $orderInfo && $this->error(__('您有未支付订单,请先支付!'),[],102);        Db::startTrans();        try{            // 添加订单信息            $out_trade_no = date("YmdHis").rand(100000,999999);// 产生订单号            $data = [];            $data["user_id"] = $this->auth->id;            $data["order_no"] = $out_trade_no;            $data["recive_id"] = $authInfo["user_id"];            $data["auth_id"] = $authInfo["id"];            $data["price"] = $authInfo["price"];            $data["num"] = $num;            $data["skill_image"] = $skillInfo["image"];            $data["skill_name"] = $skillInfo["name"];            $data["skill_unit"] = $skillInfo["unit"];            $data["make_time"] = $make_time;            $data["describe"] = $describe;            $data["status"] = 0;            $data["createtime"] = time();            $res = $orderModel->insertGetId($data);            if($res) {                Db::commit();                $this->success('订单创建成功!',["order_no"=>$out_trade_no]);            } else {                $this->error(__('订单创建失败!'));            }        }catch (ValidateException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (PDOException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (Exception $e) {            Db::rollback();            $this->error($e->getMessage());        }    }    /**     * 添加订单评价内容     */    public function addOrderComment() {        $order_no = $this->request->request('order_no'); // 订单编号        $content = $this->request->request('content'); // 评价内容        if (!$order_no && !$content) {            $this->error(__('Invalid parameters'));        }        Db::startTrans();        try{            $ordercommentModel = new \app\common\model\DispatchOrderComment();            $orderModel = new \app\common\model\DispatchOrder();            $orderInfo = $orderModel->where(["order_no"=>$order_no])->find();            if(!$orderInfo) $this->error(__('未查询到订单信息!'));            if($orderInfo["status"] != 3) $this->error(__('当前订单状态不允许评价!'));            $data= [];            $data["user_id"] = $this->auth->id;            $data["order_id"] = $orderInfo["id"];            $data["content"] = $content;            $data["createtime"] = time();            $res1 = $ordercommentModel->insert($data);            $res2 = $orderModel->update(["is_comment"=>1],["order_no"=>$order_no]);            if($res1 && $res2) {                Db::commit();                $this->success('评价成功!');            } else {                $this->error(__('订单创建失败!'));            }        }catch (ValidateException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (PDOException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (Exception $e) {            Db::rollback();            $this->error($e->getMessage());        }    }    /**     * 钻石余额支付订单     */    public function jewelPay() {        $order_no = $this->request->request('order_no'); // 订单号        if (!$order_no) {            $this->error(__('Invalid parameters'));        }        // 获取订单信息        $orderModel = new \app\common\model\DispatchOrder();        $where = [];        $where["order_no"] = $order_no;        $orderInfo = $orderModel->where($where)->find();        if(!$orderInfo) {            $this->error(__('订单信息获取失败!'));        }        if($orderInfo["status"] != 0) {            $this->error(__('订单状态有误!'),[],104);        }        // 判断用户余额        $userModel = new \app\common\model\User();        $where = [];        $where["id"] = $this->auth->id;        $jewel = $userModel->where($where)->value("jewel");        $money = $orderInfo["price"] * $orderInfo["num"];        if($money > $jewel) {            $this->error(__('钻石余额不足,请先充值!'),[],100);        }        // 去支付        Db::startTrans();        try{            // 扣除用户余额            $where = [];            $where["id"] = $this->auth->id;            $userInfo = $userModel->where($where)->find();            $res1 = $userModel->where($where)->setDec("jewel",$money);            $res2 = $userModel->where($where)->setInc("frozen",$money);            // 添加用户余额变动记录            $userjewellogModel = new \app\common\model\UserJewelLog();            $data = [];            $data["user_id"] = $this->auth->id;            $data["value"] = $money;            $data["mode"] = "-";            $data["before"] = $userInfo["jewel"];            $data["balance"] = $userInfo["jewel"]-$money;            $data["detail"] = "下单扣除余额";            $data["createtime"] = time();            $res3 = $userjewellogModel->insertGetId($data);            // 添加订单信息            $orderModel = new \app\common\model\DispatchOrder();            // 修改订单状态            $where = [];            $where["order_no"] = $order_no;            $data = [];            $data["status"] = 1;            $res4 = $orderModel->update($data,$where);            if($res1 && $res2 && $res3 && $res4) {                Db::commit();                // 短信通知                $reciveuserInfo = $userModel->where(["id"=>$orderInfo["recive_id"]])->find();                //Smslib::notice($reciveuserInfo->mobile, $orderInfo["skill_name"],"有人接单啦",'orderNotice');                // 系统消息通知                \app\common\model\Message::addMessage($orderInfo["recive_id"],"派单通知","您的派单,技能:".$orderInfo["skill_name"]."有人接单啦,请登录伴声app查看!");                $this->success('支付成功!');            } else {                $this->error(__('订单创建失败!'));            }        }catch (ValidateException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (PDOException $e) {            Db::rollback();            $this->error($e->getMessage());        } catch (Exception $e) {            Db::rollback();            $this->error($e->getMessage());        }    }    /**     * 更新订单状态     */    public function changeOrder() {        $order_no = $this->request->request('order_no'); // 订单号        $status = $this->request->request('status'); // 状态:-2=已取消,-1=拒绝接单,2=进行中,3=已完成        if (!$order_no || !$status) {            $this->error(__('Invalid parameters'));        }        if(!in_array($status,["-2","-1","2","3"])) {            $this->error("非法的订单状态参数");        }        // 获取订单信息        $orderModel = new \app\common\model\DispatchOrder();        $where = [];        $where["order_no"] = $order_no;        $orderInfo = $orderModel->where($where)->find();        if(!$orderInfo) {            $this->error(__('订单信息获取失败!'));        }        if($orderInfo["status"] == $status) {            $this->error(__('当前订单状态无变更要求!'),[],104);        }        // 验证用户权限        if($status == -1 && $orderInfo["recive_id"] != $this->auth->id) {            $this->error(__('无权限操作!'),[],103);        }        // 验证用户权限        if(($status == -2 || $status == 3) && $orderInfo["user_id"] != $this->auth->id) {            $this->error(__('无权限操作!'),[],103);        }        if($status == -1) { // 拒绝订单            if($orderInfo["status"] != 1) {                $this->error(__('当前订单状态不支持拒绝订单!'),[],104);            }            // 完成订单操作需要更新余额记录            Db::startTrans();            try{                $userModel = new \app\common\model\User();                $money = $orderInfo["price"] * $orderInfo["num"];                // 解冻用户余额                $where = [];                $where["id"] = $this->auth->id;                $userInfo = $userModel->where($where)->find();                if($userInfo["frozen"] - $money < 0) {                    $this->error(__('账户资金异常,请联系管理员!'),[],105);                }                $res1 = $userModel->where($where)->setDec("frozen",$money);                $res2 = $userModel->where($where)->setInc("jewel",$money);                // 添加用户余额变动记录                $userjewellogModel = new \app\common\model\UserJewelLog();                $res3 = $userjewellogModel->addUserJewelLog($orderInfo["recive_id"], $money, "+", $userInfo["jewel"], "拒绝订单返还余额", 7);                // 更新订单状态                $data = [];                $data["status"] = $status;                $where = [];                $where["order_no"] = $order_no;                $res4 = $orderModel->update($data,$where);                if($res1 && $res2 && $res3 && $res4) {                    Db::commit();                    // 短信通知                    //$reciveuserInfo = $userModel->where(["id"=>$orderInfo["user_id"]])->find();                    //Smslib::notice($reciveuserInfo->mobile, $orderInfo["skill_name"],"被拒绝接单",'orderNotice');                    // 系统消息通知                    \app\common\model\Message::addMessage($orderInfo["user_id"],"派单通知","您的订单,技能:".$orderInfo["skill_name"]."已被拒绝接单,请登录伴声app查看!");                    $this->success('订单完成。');                } else {                    $this->error(__('订单更新失败!请稍后重试'));                }            }catch (ValidateException $e) {                Db::rollback();                $this->error($e->getMessage());            } catch (PDOException $e) {                Db::rollback();                $this->error($e->getMessage());            } catch (Exception $e) {                Db::rollback();                $this->error($e->getMessage());            }        } elseif($status == 3) { // 订单完成            if($orderInfo["status"] != 2) {                $this->error(__('当前订单状态不支持直接变更为已完成!'),[],104);            }            // 完成订单操作需要更新余额记录            Db::startTrans();            try{                $userModel = new \app\common\model\User();                $money = $orderInfo["price"] * $orderInfo["num"];                // 增加用户余额                $where = [];                $where["id"] = $orderInfo["recive_id"];                $userInfo = $userModel->where($where)->find();                //$res1 = $userModel->where($where)->setInc("jewel",$money);                $jewelMoneyRate = config('site.money_to_jewel');//1人民币兑换钻石数                $moneyRmb = bcdiv($money,$jewelMoneyRate);                $res1 = $userModel->where($where)->setInc("money",$moneyRmb);                $where = [];                $where["id"] = $this->auth->id;                $res2 = $userModel->where($where)->setDec("frozen",$money);                // 添加用户余额变动记录                /*$userjewellogModel = new \app\common\model\UserJewelLog();                $res3 = $userjewellogModel->addUserJewelLog($orderInfo["recive_id"], $money, "+", $userInfo["jewel"], "完成用户订单获得收益", 8);*/                $remark = $orderInfo['skill_name'].'服务';                $rs_wallet = model('wallet')->lockChangeAccountRemain($orderInfo["recive_id"],$moneyRmb,'+',$userInfo['money'],$remark,106,'money');                $res3 = false;                if($rs_wallet['status'] == false){                    $this->error($rs_wallet['msg']);                    Db::rollback();                } else {                    $res3 = true;                }                // 更新订单状态                $data = [];                $data["status"] = $status;                $where = [];                $where["order_no"] = $order_no;                $res4 = $orderModel->update($data,$where);                if($res1 && $res2 && $res3 && $res4) {                    Db::commit();                    // 短信通知                    //$reciveuserInfo = $userModel->where(["id"=>$orderInfo["recive_id"]])->find();                    //Smslib::send($reciveuserInfo->mobile, $orderInfo["skill_name"], "顺利完成啦!",'orderNotice');                    // 系统消息通知                    \app\common\model\Message::addMessage($orderInfo["recive_id"],"派单通知","您的派单,技能:".$orderInfo["skill_name"]." 完成啦!,请登录GG语音app查看!");                    $this->success('恭喜!订单完成。');                } else {                    $this->error(__('订单更新失败!请稍后重试'));                }            }catch (ValidateException $e) {                Db::rollback();                $this->error($e->getMessage());            } catch (PDOException $e) {                Db::rollback();                $this->error($e->getMessage());            } catch (Exception $e) {                Db::rollback();                $this->error($e->getMessage());            }        } else {            $data = [];            $data["status"] = $status;            $where = [];            $where["order_no"] = $order_no;            $res = $orderModel->update($data,$where);            if($res) {                $this->success('更新成功!');            } else {                $this->error(__('订单创建失败!'));            }        }    }    /**     * 获取技能列表     */    public function getSkillList() {        $skillModel = new \app\common\model\DispatchSkill();        $skillList = $skillModel->select();        if ($skillList) {            $this->success(__('获取成功!'), $skillList);        } else {            $this->success(__('数据为空!'));        }    }    /**     * 获取技能等级列表     */    public function getSkillLevelList() {        $skill_id = $this->request->request('skill_id'); // 技能ID        if (!$skill_id) {            $this->error(__('Invalid parameters'));        }        $skilllevelModel = new \app\common\model\DispatchSkillLeaver();        $where = [];        $where["skill_id"] = $skill_id;        $skilllevelList = $skilllevelModel->where($where)->select();        if ($skilllevelList) {            $this->success(__('获取成功!'), $skilllevelList);        } else {            $this->success(__('数据为空!'));        }    }    /**     * 获取技能区域列表     */    public function getSkillAreaList() {        $skill_id = $this->request->request('skill_id'); // 技能ID        if (!$skill_id) {            $this->error(__('Invalid parameters'));        }        $skillareaModel = new \app\common\model\DispatchSkillArea();        $where = [];        $where["skill_id"] = $skill_id;        $skillareaList = $skillareaModel->where($where)->select();        if ($skillareaList) {            $this->success(__('获取成功!'), $skillareaList);        } else {            $this->success(__('数据为空!'));        }    }    /**     * 获取订单列表     */    public function getOrderList() {        $type = $this->request->request('type',1); // 订单类型:1=我的下单,2=我的接单        $status = $this->request->request('status',999); // 订单状态:999=全部,-2=已取消,-1=拒绝接单,0=待付款,1=待确定,2=进行中,3=已完成        $page = $this->request->request('page',1); // 分页        $pageNum = $this->request->request('pageNum',10); // 分页        // 分页搜索构建        $pageStart = ($page-1)*$pageNum;        $user = "o.recive_id";        $type == 1 && $user = "o.recive_id";        $type == 2 && $user = "o.user_id";        // 主体列表信息        $orderModel = new \app\common\model\DispatchOrder();        $where = [];        $type == 1 && $where["o.user_id"] = $this->auth->id;        $type == 2 && $where["o.recive_id"] = $this->auth->id;        $status != 999 && $where["o.status"] = $status;        $orderList = $orderModel->alias("o")            ->field("o.id,".$user." as user_id,o.make_time,o.describe,o.order_no,u.avatar,u.nickname,o.skill_image,o.skill_name,o.price,o.skill_unit,o.num,o.status,o.is_comment,o.createtime")            ->join("hx_user u","u.id = ".$user)            ->where($where)            ->order("createtime","desc")            ->limit($pageStart,$pageNum)            ->select();        if(!$orderList) {            $this->success(__('数据为空!'),[]);        }        foreach($orderList as $k => &$v) {            $v["make_time"] = date("Y-m-d H:i",$v["make_time"]);            $v["createtime"] = date("Y-m-d",$v["createtime"]);            $v["status_text"] = $orderModel->getStateAttr($v["status"]);        }        $this->success(__('获取成功!'), $orderList);    }}
 |