table)->select(); return send_http_status(200, $data); } /** * 更改打扫时间 */ public function change_date() { $param = $this->request->param(); $res = Db::name('CloudCleanState') ->where('id', $param['id']) ->update([ 'create_time' => strtotime($param['date']), ]); return send_http_status(200, ['date' => formart_time(strtotime($param['date']))]); } /** * 我要打扫的房间 */ public function my_clean() { $param = $this->request->param(); $is_complete = $this->request->param('is_complete', 0); $type = $is_complete == 0 ? '=' : '>'; $res = Db::name('CloudCleanState') ->alias('s') ->leftJoin('cloud_clean_order o', 'o.order_no=s.order_no') ->leftJoin('cloud_house h', 'h.id=o.house_id') ->leftJoin('cloud_member m', 'o.openid = m.openid') ->page($param['page'], 10) ->where('o.service_openid', $param['openid']) ->where('s.complete_time', $type, $is_complete) ->field('m.phone,s.id,s.picture,s.create_time,s.complete_time,s.step,s.order_no, h.name,h.photo,h.latitude,h.longitude,h.door_number,o.content,o.second,o.service_openid,m.nickname,m.headimg') ->order('s.create_time', 'ASC') ->select(); foreach ($res as &$v) { $v['picture'] = json_decode($v['picture'], true); $v['create_time'] = formart_time($v['create_time']); $v['complete_time'] = !empty($v['complete_time']) ? date('Y-m-d', $v['complete_time']) : 0; $v['photo'] = $v['photo'] ? explode(',', $v['photo'])[0] : ''; } return send_http_status(200, $res); } /** * 我发布的保洁 * @return \type * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function my() { $param = $this->request->param(); //$user = Db::name('CloudMember')->where('openid',$param['openid'])->find(); $page = $this->request->param('page', 1); $query = Db::name('CloudCleanOrder') ->alias('o') ->leftJoin('cloud_house h', 'o.house_id = h.id') ->leftJoin('cloud_member m', 'h.user_id = m.id') // 查询房源手机号 ->where('o.state', 1) ->field('m.phone,h.name,h.latitude,h.longitude,h.photo,h.door_number,o.create_time,o.content,o.second,o.complete,o.order_no,o.service_openid') ->order('o.create_time', 'desc') ->limit(($page - 1) * 15, 15); /*if ($user['is_clean']){ $query->where('o.openid|o.service_openid','=', $param['openid'])->whereNotNull('service_openid'); }else{ $query->where('o.openid',$param['openid']); }*/ $query->where('o.openid', $param['openid']); $res = $query->select(); foreach ($res as &$v) { $v['create_time'] = !empty($v['create_time']) ? date('Y-m-d H:i:s', $v['create_time']) : 0; $v['photo'] = $v['photo'] ? explode(',', $v['photo'])[0] : ''; } return send_http_status(200, $res); } /** * 订单详情 */ public function info() { $order_no = $this->request->param('order_no'); $res = Db::name('CloudCleanState') ->alias('s') ->leftJoin('cloud_clean_order o', 'o.order_no=s.order_no') ->leftJoin('cloud_house h', 'h.id=o.house_id') ->leftJoin('cloud_member m', 'o.openid = m.openid') ->where('s.order_no', $order_no) ->field('s.id,s.picture,s.commont,s.commont_time,s.create_time,s.complete_time,s.step,s.order_no, h.name,o.content,o.second,o.service_openid,m.nickname,m.headimg') ->select(); foreach ($res as &$v) { $v['picture'] = json_decode($v['picture'], true); $v['create_time'] = formart_time($v['create_time']); $v['commont'] = [ 'nickname' => $v['nickname'], 'headimg' => $v['headimg'], 'commont' => $v['commont'], 'commont_time' => date('Y-m-d H:i:s', $v['commont_time']) ]; $v['complete_time'] = !empty($v['complete_time']) ? date('Y-m-d', $v['complete_time']) : '未打扫'; unset($v['nickname'], $v['headimg'], $v['commont_time']); } return send_http_status(200, $res); } /** * 评价 */ public function commont() { $param = $this->request->param(); $res = Db::name('CloudCleanState')->where('id', $param['id']) ->update([ 'commont' => $param['commont'], 'commont_time' => time(), ]); if ($res) { $data = Db::name('CloudCleanState') ->alias('a') ->leftJoin('cloud_clean_order o', 'o.order_no = a.order_no') ->leftJoin('cloud_member m', 'o.openid = m.openid') ->field('a.commont,a.commont_time,m.nickname,m.headimg') ->where('a.id', $param['id']) ->find(); $data['index'] = $param['index']; $data['commont_time'] = date('Y-m-d H:i:s', $data['commont_time']); return send_http_status(200, $data); } else { return send_http_status(201, '', '操作失败!'); } } /** * 保洁完成上传图片 * @return \type */ public function complete() { $param = $this->request->param(); Db::startTrans(); try { Db::name('CloudCleanState')->where('id', $param['id'])->update([ 'service_openid' => $param['openid'], 'picture' => json_encode(explode(',', $param['images'])), 'complete_time' => strtotime($param['complete_time']), ]); Db::name('CloudCleanOrder') ->where('order_no', $param['order_no']) ->update(['complete' => Db::raw('complete+1')]); Db::commit(); return send_http_status(200); } catch (\Exception $e) { Db::rollback(); return send_http_status(201, '', $e->getMessage()); } } public function create() { $param = $this->request->post(); $clean = Db::name($this->table)->find($param['cleanid']); if (!$clean) return $this->error('选项不存在'); $order_no = order_no(); $order = [ 'order_no' => $order_no, 'openid' => $param['openid'], 'content' => $clean['title'] . ' - ' . $clean['summary'], 'second' => $clean['second'], 'price' => $clean['price'], 'house_id' => $param['house_id'], 'create_time' => time(), 'update_time' => time(), ]; //生成副表订单 Db::startTrans(); try { Db::name('CloudCleanOrder')->insert($order); $row = []; $day_num = 10; if ($clean['second'] == 2) { $day_num = 15; } for ($i = 0; $i < $clean['second']; $i++) { $create_time = strtotime((($i * $day_num) + 1) . ' day'); $row[] = [ 'create_time' => $create_time, 'update_time' => $create_time, 'order_no' => $order_no, 'step' => $i + 1 ]; } Db::name('CloudCleanState')->insertAll($row); Db::commit(); } catch (\Throwable $e) { Db::rollback(); return send_http_status(202, '', $e->getMessage()); } $wechat = new \WeChat\Pay(config('wechat.miniapp')); $options = [ 'body' => '保洁' . $clean['title'] . '(' . $clean['second'] . '次)', 'out_trade_no' => $order_no, 'total_fee' => $clean['price'] * 100, 'openid' => $param['openid'], 'trade_type' => 'JSAPI', 'notify_url' => $this->request->domain() . '/index/notify/clean', 'spbill_create_ip' => $this->request->ip(), ]; try { // 生成预支付码 $result = $wechat->createOrder($options); // 创建JSAPI参数签名 $options = $wechat->createParamsForJsApi($result['prepay_id']); // @todo 把 $options 传到前端用js发起支付就可以了 return send_http_status(200, $options); } catch (Exception $e) { // 出错啦,处理下吧 return send_http_status(201, '', $e->getMessage()); } } }