You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
9.8 KiB
269 lines
9.8 KiB
<?php
|
|
|
|
// +----------------------------------------------------------------------
|
|
// | ThinkAdmin
|
|
// +----------------------------------------------------------------------
|
|
// | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
|
|
// +----------------------------------------------------------------------
|
|
// | 官方网站: http://demo.thinkadmin.top
|
|
// +----------------------------------------------------------------------
|
|
// | 开源协议 ( https://mit-license.org )
|
|
// +----------------------------------------------------------------------
|
|
// | gitee 代码仓库:https://gitee.com/zoujingli/ThinkAdmin
|
|
// | github 代码仓库:https://github.com/zoujingli/ThinkAdmin
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\index\controller;
|
|
|
|
|
|
use think\Db;
|
|
|
|
/**
|
|
* 保洁
|
|
* Class Index
|
|
* @package app\index\controller
|
|
*/
|
|
class Clean extends Base
|
|
{
|
|
public $table = 'CloudClean';
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
parent::auth();
|
|
}
|
|
|
|
/**
|
|
* 获取列表
|
|
*/
|
|
public function index()
|
|
{
|
|
$data = Db::name($this->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());
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|