* 订单管理 */ namespace app\ais\controller\api\v1; use app\ais\controller\api\Base; use app\ais\model\AisShopOrder; use app\ais\model\AisBank; use app\ais\model\AisShop; use app\ais\model\AisConfig; use app\ais\model\AisCouponUser; use app\ais\model\AisVipUser; use app\common\model\SystemUser; use app\common\facade\WechatPay; class Shoporder extends Base{ /** * 初始化当前应用是否登录 * @return void */ public function initialize() { parent::initialize(); $this->isUserAuth(); } /** * @param int $store_id * 店铺订单 */ public function index(){ $param['active'] = $this->request->param('active/d',0); $param['page'] = $this->request->param('page/d',1); $this->apiSign($param); $condition['uid'] = $this->user->id; $condition['is_del'] = 0; switch ($param['active']) { case 1: $condition['paid_at'] = 0; break; case 2: $condition['paid_at'] = 1; $condition['status'] = 0; break; case 3: $condition['paid_at'] = 1; $condition['status'] = 1; break; } $order = AisShopOrder::with(['store' => function($query) { $query->field('name,address,id'); }])->field('store_id,id,order_no,paid_at,paid_time,phone,points,message,shop_id,status,shop_cache,amount,create_time,is_del')->where($condition)->page($param['page'],10)->select(); if($order->isEmpty()){ return enjson(204); } $data = []; $ids = []; foreach ($order as $key => $value) { $data[$key] = $value; $data[$key]['status_text'] = $value['statu']; $data[$key]['end_paytime'] = 0; if($value['paid_at'] == 0){ $data[$key]['end_paytime'] = (($value['create_time'] + 60 * 10) - time()) * 1000; } if($value['paid_at'] == 0 && $data[$key]['end_paytime'] < 0){ $ids[] = $value['id']; unset($data[$key]); } } if(!empty($ids)){ //过期了更改了状态 AisShopOrder::where(['id' => $ids])->update(['is_del' => 1]); } if(empty($data)){ return enjson(204); } return enjson(200,array_values($data)); } /** * @param int $store_id */ public function views(){ $param['id'] = $this->request->param('id/d',0); $this->apiSign($param); $condition['uid'] = $this->user->id; $condition['id'] = $param['id']; $order = AisShopOrder::with(['store' => function($query) { $query->field('name,address,id,longitude,latitude'); }])->field('store_id,id,order_no,paid_at,paid_time,phone,points,message,shop_id,status,shop_cache,amount,create_time,is_del,thrifty')->where($condition)->find(); if(empty($order)){ return enjson(204); } $order->end_paytime = 0; if(!$order->paid_at){ $order->end_paytime = (($order->create_time + 60 * 10) - time()) * 1000; } if($order->paid_at == 0 && $order->end_paytime < 0){ $order->is_del = 1; $order->save(); } $shop_cache = $order->shop_cache; $shop_cache['notice'] = str_replace('shop_cache = $shop_cache; $order->paid_time = date('Y-m-d H:i:s',$order->paid_time); $order->create_time = date('Y-m-d H:i:s',$order->create_time); return enjson(200,$order); } /** * @param int $order_id * @return \think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException * 获取核心订单 */ public function orderVer(){ $param['id'] = $this->request->param('id/d',0); $this->apiSign($param); $condition['id'] = $param['id']; $condition['paid_at'] = 1; $condition['status'] = 0; $condition['is_del'] = 0; $info = AisShopOrder::with(['store' => function($query) { $query->field('name,address,id,longitude,latitude'); }])->where($condition)->field('store_id,uid,id,order_no,paid_at,paid_time,phone,points,message,shop_id,status,shop_cache,amount,create_time,is_del')->find(); if(empty($info)){ return enjson(303,'订单不存在',['url' => '/pages/index']); } $uid = array_flip(array_column($info->storeWorker->toArray(),'uid')); if(empty($uid)){ return enjson(303,'商家没有设置核销员',['url' => '/pages/index']); } if (!isset($uid[$this->user->id])){ return enjson(303,'你无权限核销订单',['url' => '/pages/index']); } if(request()->isPost()){ $info->status = 1; $info->save(); return enjson(303,'订单成功核销',['url' => '/pages/user/index']); }else{ $shop_cache = $info->shop_cache; $shop_cache['notice'] = str_replace('shop_cache = $shop_cache; $info->paid_time = date('Y-m-d H:i:s',$info->paid_time); $info->create_time = date('Y-m-d H:i:s',$info->create_time); return enjson(200,'成功',$info); } } }