123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- <?php
- namespace app\api\controller;
- use app\admin\model\Method;
- use app\admin\model\method\Time;
- use app\admin\model\Order;
- use app\admin\model\Ordercode;
- use app\admin\model\Orderitem;
- use app\admin\model\Pingjia;
- use app\api\model\OrderCodeWriteOffLog;
- use app\common\controller\Api;
- class Pond extends Api
- {
- protected $noNeedLogin = [];
- protected $noNeedRight = ['*'];
- public function order_list()
- {
- $order_model = new Order();
- $order_item_model = new Orderitem();
- $status = input('status', 0);
- $stand_time = input('stand_time');
- $end_time = input('end_time');
- $phone = input('phone');
- $yutang_id = input('yutang_id');
- $type = input('type');
- $moshi = input('moshi');
- //订单状态:1=待支付,2=待核销,3=进行中,4=待评价,5=已完成,6=退款中,7=已退款,8=已取消
- switch ($status) {
- case 0:
- $array = [0, 1, 2, 3, 4, 5, 6, 7, 8];
- break;
- case 1:
- $array = [1];
- break;
- case 2:
- $array = [2];
- break;
- case 3:
- $array = [3];
- break;
- case 4:
- $array = [4];
- break;
- case 5:
- $array = [6, 7];
- break;
- case 6:
- $array = [8];
- break;
- }
- $where = [];
- if ($stand_time && $end_time) {
- $where['create_time'] = ['between', [strtotime($stand_time), strtotime($end_time)]];
- }
- if ($yutang_id) {
- $where['yutang_id'] = ['=', $yutang_id];
- }
- if ($type) {
- $where['type'] = ['=', $type];
- }
- if ($moshi) {
- $where['moshi'] = ['=', $moshi];
- }
- if ($phone) {
- $where['phone'] = ['=', $phone];
- }
- $list = $order_model->where('t_user_id', $this->auth->id)->whereIn('status', $array)->where($where)->order('id', 'desc')->paginate();
- foreach ($list as &$v) {
- $v['item'] = $order_item_model->where('order_id', $v['id'])->select();
- if ($v['status'] == 3) {
- $time = strtotime($v['end']) - strtotime(date("H:i"));
- if ($time <= 1800) {
- $v['time'] = $time;
- }
- }
- }
- $this->success('我的订单列表', $list);
- }
- public function order_detail()
- {
- $order_id = input('order_id');
- $order_model = new Order();
- $order_item = new Orderitem();
- $order_code = new Ordercode();
- $pingjia_model = new Pingjia();
- $order_info = $order_model->where('id', $order_id)->find();
- if (empty($order_info)) {
- $this->error('订单信息有误');
- }
- if ($order_info['status']) {
- $order_info['time'] = $order_info['create_time'] + 30 * 60 - time();
- }
- $order_info['item'] = $order_item->where('order_id', $order_id)->select();
- $order_info['code'] = $order_code->where('order_id', $order_id)->select();
- $order_info['pingjia'] = $pingjia_model->where('user_id', $order_info['user_id'])->where('yutang_id', $order_info['yutang_id'])->find();
- $this->success('订单详情', $order_info);
- }
- public function method_log()
- {
- $user_id = $this->auth->id;
- $user = (new \app\admin\model\User())->where('id', $user_id)->find();
- if ($user->pid != 0) {
- $user_ids = [$user_id];
- } else {
- $users = (new \app\admin\model\User())->where('pid', $user_id)->field('id')->select();
- $user_ids = array_merge([$user_id], array_column($users, 'id'));
- }
- $query = (new OrderCodeWriteOffLog())->with(['order' => function ($query) {
- $query->with('method');
- }])->whereIn('user_id', $user_ids)->order('id', 'desc');
- // 1是今日2是全部
- if (input('type', 1)) {
- $query->whereBetween('write_off_time', [date('Y-m-d OO:00:00'), date('Y-m-d 23:59:59')]);
- }
- $list = array_map(function ($item) {
- return $item->order->method;
- }, $query->limit(30)->group('order_id')->select());
- $this->success('我的发布', $list);
- }
- public function write_log()
- {
- $method_id = input('method_id');
- $type = input('type', '1');
- if ($type == 1) {
- $where['ruchang_status'] = ['=', 2];
- }
- if ($type == 2) {
- $where['wucan_status'] = ['=', 2];
- }
- if ($type == 3) {
- $where['yajin_status'] = ['=', 2];
- }
- $method_model = new Method();
- $item_model = new Time();
- $order_code_model = new Ordercode();
- $method_info = $method_model->where('id', $method_id)->find();
- $time_list = $item_model->where('m_id', $method_id)->select();
- foreach ($time_list as &$v) {
- $v['show_image'] = $method_info['show_images'];
- $v['yutang_name'] = $method_info['yutang_name'];
- $v['moshi'] = $method_info['moshi'];
- $v['m_type'] = $method_info['type'];
- $v['date'] = date('Y-m-d');
- $v['count'] = $order_code_model->where('time_id', $v['id'])->where($where)->count();
- }
- $this->success('核销时间段', $time_list);
- }
- public function write_list()
- {
- $method_model = new Method();
- $item_model = new Time();
- $order_code_model = new Ordercode();
- $time_id = input('time_id');
- $type = input('type', '1');
- if ($type == 1) {
- $where['ruchang_status'] = ['=', 2];
- }
- if ($type == 2) {
- $where['wucan_status'] = ['=', 2];
- }
- if ($type == 3) {
- $where['yajin_status'] = ['=', 2];
- }
- $time_info = $item_model->where('id', $time_id)->find();
- $time_info['desc'] = $method_model->alias('m')->join('yutang y', 'y.id=m.yutang_id')->where('m.id', $time_info['m_id'])->field('m.yutang_name,m.type,m.moshi,y.image')->find();
- $time_info['code'] = $order_code_model->where('time_id', $time_id)->where($where)->order('ruchang_time desc')->paginate();
- $this->success('已核销信息', $time_info);
- }
- /**
- * 塘主-午餐通知
- * @ApiMethod (GET)
- * @ApiParams (name=method_id,type="int", required=true,description="玩法id")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1680761053"})
- */
- public function lunch_tongzhi()
- {
- $method_id = input('method_id', 0);
- if ($method_id == 0) {
- $this->error('参数错误');
- }
- $order_model = new Order();
- $mobiles = $order_model->where('t_user_id', $this->auth->id)
- // ->where('wucan_money','>',0)
- ->where('method_id', $method_id)
- ->where('eat', 2)
- ->whereIn('status', '2,3')
- ->field('id,phone,user_id,yutang,image,auto_expire,huodong_time,pay_openid')->select();
- if (empty($mobiles)) {
- $this->error('没有就餐人员');
- }
- $user = (new \app\admin\model\User())->where('id', $this->auth->id)->find();
- if ($user->zhannei == 1) {
- $message_model = new \app\admin\model\Message();
- foreach ($mobiles as $val) {
- $to_time = time();
- if ($to_time < $val['auto_expire'] && date('Ymd', $val['huodong_time']) == date('Ymd')) {
- $message_data = [
- 'category_id' => 3,
- 'user_id' => $val->user_id,
- 'title' => '午餐通知',
- 'name' => $val->yutang,
- 'image' => $val->image,
- 'description' => $val->yutang . '通知您午餐开始了',
- 'is_read' => 0,
- 'createtime' => time(),
- ];
- $message_model->insert($message_data);
- }
- }
- }
- if ($user->duanxin == 1) {
- $order_ids = [];
- foreach ($mobiles as $val) {
- $to_time = time();
- if ($to_time < $val['auto_expire'] && date('Ymd', $val['huodong_time']) == date('Ymd')) {
- $order_ids[] = $val['id'];
- }
- }
- $orderCodes = (new Ordercode())->whereIn('order_id', $order_ids)->field('phone')->select();
- if (count($orderCodes) > $user->sms_number) {
- $this->error('短信数量不足');
- }
- if (count($orderCodes) > 0) {
- $user->sms_number -= count($orderCodes);
- $user->save();
- $sms = new Sms();
- $sms->wucna_tongzhi($orderCodes, $this->auth->id);
- }
- }
- // // 异步立即发送
- // \think\Queue::push('\app\job\OrderJob@lunchSubRun', [
- // 'order_list' => $mobiles,
- // ]);
- (new Method())->isUpdate(true)->save(['is_lunch_send' => 2], ['id' => $method_id]);
- $this->success('午餐通知已发出');
- }
- /**
- * 塘主-午餐列表
- * @ApiMethod (GET)
- * @ApiParams (name=limit,type="int", required=false,description="每页数量")
- * @ApiParams (name=page,type="int", required=false,description="页数")
- * @ApiParams (name=status,type="int", required=true,description="0=今日进行;1=未开始;2=已结束")
- * @ApiReturnParams (name="lunch_num", type="int", required=true, description="午餐订购数量")
- * @ApiReturnParams (name="is_lunch_send", type="int", required=true, description="午餐提醒1未发送 2 已发送")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1680759306","data":{"total":2,"per_page":15,"current_page":1,"last_page":1,"data":[{"id":444,"type":1,"show_images":"http://yutang.zhousi.hdlkeji.com/uploads/20230327/83e103697d24ea91145083aa813f1f6c.png","yutang_name":"啦啦啦1","moshi":1,"lunch_num":0,"type_text":"Type 1","put_time_text":"","tuisong_text":""}]}})
- */
- public function lunch_list()
- {
- $page = input('page', 1);
- $limit = input('limit');
- $status = input('status', 0);
- $method_model = new Method();
- $query = $method_model->field('id,type,show_images,yutang_name,moshi,huodong_time,is_lunch_send');
- switch ($status) {
- case 0:
- $query = $query->where('huodong_time', date('Y-m-d', time()));
- break;
- case 1:
- $query = $query->where('huodong_time', '>', date('Y-m-d', time()));
- break;
- case 2:
- $query = $query->where('huodong_time', '<', date('Y-m-d', time()));
- break;
- }
- $list = $query->where('user_id', $this->auth->id)
- ->where('eat', 2)
- ->order('huodong_time', 'DESC')
- ->paginate($limit, false, ['page' => $page]);
- $order_model = new Order();
- foreach ($list as &$v) {
- $v['lunch_num'] = $order_model->where('method_id', $v['id'])->where('eat', 2)->sum('number');
- }
- $this->success('ok', $list);
- }
- /**
- * 塘主-午餐订单
- * @ApiMethod (GET)
- * @ApiParams (name=limit,type="int", required=false,description="每页数量")
- * @ApiParams (name=page,type="int", required=false,description="页数")
- * @ApiParams (name=method_id,type="int", required=true,description="玩法id")
- * @ApiReturnParams (name="lunch_num", type="int", required=true, description="午餐订购数量")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1680761053","data":{"total":1,"per_page":15,"current_page":1,"last_page":1,"data":[{"id":710,"order_no":"40012420230406102824","create_time":1680748104,"user_id":"124","phone":"18206485031","number":1,"username":"u124","create_time_text":"2023-04-06 10:28:24","status_text":"","pay_time_text":"","reson_time_text":""}]}})
- */
- public function lunch_order()
- {
- $page = input('page', 1);
- $limit = input('limit');
- $method_id = input('method_id', 0);
- $order_model = new Order();
- $list = $order_model->with(['userN'])->field('id,order_no,create_time,user_id,phone,number')
- ->where('t_user_id', $this->auth->id)
- ->where('method_id', $method_id)
- ->where('eat', 2)
- ->order('id', 'DESC')
- ->paginate($limit, false, ['page' => $page]);
- $this->success('ok', $list);
- }
- }
|