'tuyT2KpmWqdFRh22Zl-ntOIBxecszSrQY6xCwsge1e8', // 所需下发的订阅模板id // 'touser' => 'o11PJ5QDWJnIa1kPKsvvStXj243U', // 'data' => [ // 'phrase2' => [ // 'value' => '平台已派单', // ], // 'time3' => [ // 'value' => date('Y-m-d H:i:s'), // ], // 'thing4' => [ // 'value' => "快打开小程序,立即抢红包!", // ] // ] // ]; protected $wechat; /** * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/7/1 14:46 */ public function initialize() { // 加载配置 $wechat = sys_config('','wechat'); $this->wechat = Factory::miniProgram([ 'app_id' => $wechat['mini_appid'], 'secret' => $wechat['mni_secret_key'], 'response_type' => 'array', 'log' => [ 'level' => 'debug', 'file' => app()->getRuntimePath() . 'log/'.date('Ym').'/wechat_debug.log', ], ]); } /** * 获取打车列表 * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/3/16 14:39 * * @return \think\response\Json * @throws \think\exception\DbException */ public function index() { $where = []; //组合搜索 $taxi = model('common/Taxi'); return IResponse::paginate($taxi->where($where)->with(['user']) ->paginate(input('limit'),false)); } /** * 新增打车 * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/3/16 14:39 * * @return \think\response\Json * @throws \think\exception\DbException */ public function save() { // 接收数据 $params = $this->request->param(); // 数据校验 $valid = $this->validate($params, [ 'taxi_user_id|所属司机' => 'require', 'name|用车标题' => 'require', 'cover_img|展示图片' => 'require', // 'price|价格' => 'require', 'plate_number|车牌号' => 'require', 'vehicle|车辆类型' => 'require' ]); // 错误返回 (true !== $valid) && IResponse::failure($valid); // 保存数据 $bannerId = model("common/Taxi")->storeBy($params); return $bannerId ? IResponse::success([],'新增用车信息成功'): IResponse::failure('新增用车信息异常'); } /** * 更新数据 * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/3/16 14:24 * * @param $id * @return \think\response\Json */ public function update($id) { // 接收数据 $params = $this->request->param(); // 查询用户 $taxi = model('common/Taxi')->findBy($id); // 是否更改状态操作 if (isset($params['status']) && $params['status'] != '') { $valid = $this->validate($params, [ 'status|配置状态' => 'require|integer' ]); }else { // 数据校验 $valid = $this->validate($params, [ 'taxi_user_id|所属司机' => 'require', 'name|用车标题' => 'require', 'cover_img|展示图片' => 'require', 'area|服务区域' => 'require', 'time_slot|服务时间' => 'require', // 'price|价格' => 'require', 'plate_number|车牌号' => 'require', 'vehicle|车辆类型' => 'require' ]); } // 错误返回 (true !== $valid) && IResponse::failure($valid); // 更新用户信息 $taxi->updateBy($id, $params); return IResponse::success('更新用车信息成功'); } /** * 删除商家 * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/3/16 14:22 * * @param $id * @return \think\response\Json */ public function delete($id) { model('common/Taxi')->deleteBy($id); return IResponse::success([],'删除车辆信息成功'); } /** * 商家批量操作 * * @author 许祖兴 < zuxing.xu@lettered.cn> * @date 2020/3/23 11:38 * * @return mixed */ public function plectron(){ // 收参数 $params = $this->request->param(); foreach (str2arr($params['ids']) as $id){ $seller = model('common/Seller')->getBy($id); if ($this->request->isDelete()){ $seller->deleteBy($id); return IResponse::success([],'删除商家成功'); } $seller->allowField(true)->updateBy($id, $params); } return IResponse::success([],'操作成功'); } /******************** 司机 *********************/ public function users() { $where = []; //组合搜索 $user = model('common/TaxiUser'); return IResponse::paginate($user->where($where)->with('user') ->order('created_at','desc') ->paginate(input('limit'),false)->each(function($item, $k){ if(is_null($item['user'])){ $item['user'] = []; $item['user_id'] = intval($item['user_id']); } })); } public function createUser() { // 接收数据 $params = $this->request->param(); // 数据校验 $valid = $this->validate($params, [ 'uname|司机名称' => 'require', 'id_card|身份证号' => 'require', 'id_card_img|身份证件照片' => 'require', 'mobile|手机号码' => 'require', 'password|登录密码' => 'require', 'address|司机住址' => 'require', 'dr_license|驾驶证照片' => 'require', ]); if(model('common/TaxiUser')->where(['mobile'=> $params['mobile']])->find()){ IResponse::failure('手机号码已存在'); } // 错误返回 (true !== $valid) && IResponse::failure($valid); // 保存数据 if($params['password']){ $params['password'] = password_hash($params['password'],PASSWORD_DEFAULT); } $taxiUserId = model('common/TaxiUser')->storeBy($params); if($taxiUserId){ // 创建会员账号 $userId = model('common/users')->storeBy(['mobile'=> $params['mobile']]); if($userId){ model('common/TaxiUser')->updateBy($taxiUserId, ['user_id'=> $userId]); } } return $taxiUserId ? IResponse::success([],'新增司机成功'): IResponse::failure('新增司机异常'); } public function updateUser($id) { // 接收数据 $params = $this->request->param(); // 查询用户 $driver = model('common/TaxiUser')->findBy($id); // 是否更改状态操作 if (isset($params['status']) && $params['status'] != '') { $valid = $this->validate($params, [ 'status|配置状态' => 'require|integer' ]); }else { // 数据校验 $valid = $this->validate($params, [ 'uname|司机名称' => 'require', 'id_card|身份证号' => 'require', 'id_card_img|身份证件照片' => 'require', 'mobile|手机号码' => 'require', 'address|司机住址' => 'require', 'dr_license|驾驶证照片' => 'require', ]); } // 错误返回 (true !== $valid) && IResponse::failure($valid); // 更新用户信息 if($params['password']){ $params['password'] = password_hash($params['password'],PASSWORD_DEFAULT); } $driver->updateBy($id, $params); return IResponse::success('更新司机信息成功'); } public function deleteUser($id) { IResponse::failure('抱歉,功能未开放'); // 1. 删除用户 //model('common/TaxiUser')->deleteBy($id); // 2. 删除用户所属车辆 // model('common/Taxi')->where(['taxi_user_id' => $id])->delete(); return IResponse::success([],'删除用户成功'); } public function ppuser($ids){ // 收参数 $params = $this->request->param(); foreach (str2arr($params['ids']) as $id){ $user = model('common/Users')->getBy($id); if ($this->request->isDelete()){ $user->deleteBy($id); } $olduser=Db::table('ins_taxi_user')->where('id',$id)->find(); if(!$olduser){ return IResponse::failure('用户不存在!'); } if( $params['status']==1){//启用 if( $olduser['status']==3 or $olduser['status']==5){ //3待审,5待支付 时候 不用做任何操作 }else{ $res=Db::table('ins_taxi_user')->update(['status' => $params['status'],'id'=>$id]); } } if( $params['status']==0){//禁用 if( $olduser['status']==3 or $olduser['status']==5){ //3待审,5待支付 时候 不用做任何操作 }else{ $res=Db::table('ins_taxi_user')->update(['status' => 4,'id'=>$id]); } } } return IResponse::success([],'操作成功'); } /******************** 订单 *********************/ /** * @return mixed * @throws \think\exception\DbException */ public function orders() { $where = []; //组合搜索 $user = model('common/TaxiOrder'); $list = $user->where($where)->with(['taxi','taxi.user','user','category']) ->order('id' , 'desc') ->paginate(input('limit'),false); return IResponse::paginate($list); } /** * @return mixed */ public function exportOrder() { return IResponse::success([],'等待开发...'); } /** * @param $id * * @return mixed */ public function deleteOrder($id) { model('common/TaxiOrder')->deleteBy($id); return IResponse::success([],'删除用户成功'); } /** * 订单操作 * * @param $id * @return \think\response\Json */ public function actionOrder($id) { $param = $this->request->param(); $valid = $this->validate($param, [ 'action|操作状态' => 'require' ]); // 错误返回 (true !== $valid) && IResponse::failure($valid); $model = model('common/TaxiOrder'); $order = $model->findBy($id); $msg = "操作"; /*1 . 下单未支付 unpay 2 . 支付待服务 wait 3 . 服务中 serve 4 . 服务结束 */ switch ($param['action']){ case "dispense": $msg = "指派司机"; //TODO 应该把当前车俩设置为占用 // 获取用户信息 $user = model('common/Users')->findBy($order['user_id']); // 订阅消息 $Taxi = new \app\common\model\Taxi(); $driver = $Taxi->with('user')->find($order['taxi_id']); $this->wechat->subscribe_message->send([ 'template_id' => 'v2nNL6LKvYr0pyGsTBw5r9Zaa7lS63Hm5AjvJq-tKWc', // 所需下发的订阅模板id 'touser' => $user['open_id'],//'o11PJ5Qs7asNf0KgdOaKjjWTeGpo', // 'page' => '/pages/motor/order/order', 'data' => [ 'character_string1' => [ 'value' => $order['order_no'], ], 'thing5' => [ 'value' => ' 师傅正在接单,预计十分钟到达', ], 'thing11' => [ 'value' => $driver['user']['uname'], ], 'phone_number6' => [ 'value' => $driver['user']['mobile'], ], 'time7' => [ 'value' => date("Y/m/d H:i:s"), ], ] ]); // 状态以及时间 $model->updateBy($id,[ 'status' => 3 ]); break; case "complete": $msg = "结束服务"; //TODO 应该把当前车俩设置为 空闲 // 已支付订单,标记为已经服务了 $model->updateBy($id,[ 'status' => 4, 'served' => ($order['status'] == 3) ? '1' : '0' ]); break; } return IResponse::success([],$msg . '成功'); } }