| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 |
- <?php
- namespace app\admin\controller\store;
- use app\common\controller\AdminController;
- use app\http\IResponse;
- use EasyWeChat\Factory;
- use EasyWeChat\Kernel\Exceptions\Exception;
- use EasyWeChat\Payment\Kernel\Exceptions\InvalidSignException;
- use think\Db;
- class Taxi extends AdminController
- {
- // protected $tpl = [
- // 'template_id' => '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 . '成功');
- }
- }
|