UserController.php 5.9 KB
<?php

namespace api\home\controller;

use cmf\controller\RestBaseController;
use think\Db;

/**
 * @title 会员端-个人中心
 */
class UserController extends RestBaseController
{
    /**
     * @title 首页
     * @description 个人中心首页
     * @author Pan Haowen
     * @url /home/user/index
     * @method POST
     * @header name:XX-Token require:1 default: desc:token
     * @param name:time type:int require:0  desc:时间搜索条件
     * @return data:个人信息
     */
    public function index()
    {
        $userId = $this->getUserId();
        $data=Db::name('user')->where('id',$userId)->find();
//        $data['avatar']=cmf_get_image_preview_url($data['avatar']);
        $this->success("获取数据成功", $data);
    }




    /**
     * @title 场所合作
     * @description 场所合作
     * @author Pan Haowen
     * @url /home/user/cooperate
     * @method POST
     * @header name:XX-Token require:1 default: desc:token
     * @return data:合作电话
     */
    public function cooperate()
    {
        $this->getUserId();
        $data=Db::name('config')->where('id',1)->field('mobile')->find();
        $this->success("获取数据成功", $data);
    }


    /**
     * @title 信息反馈
     * @description 信息反馈提交接口
     * @author Pan Haowen
     * @url /home/user/message
     * @method POST
     * @header name:XX-Token require:1 default: desc:token
     * @param name:content type:varchar require:1  desc:反馈内容
     * @param name:type type:int require:1  desc:1=>会员 2=》教练
     * @return data:得分列表
     */
    public function message()
    {
        $userId=$this->getUserId();
        $param = $this->request->param();
        $param['user_id']=$userId;
        $param['create_time']=time();
        $re=Db::name('message')->insert($param);
        if ($re) {
            $this->success("操作成功");
        }else{
            $this->error("操作失败");
        }
    }

    /**
     * @title 个人信息修改
     * @description 个人信息修改提交接口
     * @author Pan Haowen
     * @url /home/user/edit
     * @method POST
     * @header name:XX-Token require:1 default: desc:token
     * @param name:user_nickname type:varchar require:1  desc:用户姓名
     * @param name:mobile type:int require:1  desc:用户手机号
     * @param name:number type:varchar require:1  desc:用户编号
     */
    public function edit()
    {
        $userId=$this->getUserId();
        $param = $this->request->param();
        Db::name('message')->where('id',$userId)->update($param);
        $this->success("操作成功");
    }




    /**
     * @title 会员主页
     * @description 会员主页接口
     * @author Pan Haowen
     * @url /home/user/userIndex
     * @method POST
     * @header name:XX-Token require:1 default: desc:token
     * @param name:user_id type:int require:1  desc:会员id
     */
    public function userIndex(){
        $this->getUserId();
        $param = $this->request->param();
        $user=Db::name('user')->where('id',$param['user_id'])->find();
        $where=[];
        if (!empty($param['time'])) {
            $where['c.start_time'] = [['>= time', intval($param['time'])], ['<= time', strtotime('+1 month', $param['time'])]];
        } else {
            $where['c.start_time'] = [['>= time', strtotime('+1 month', strtotime(date('Y-m', time())))], ['<= time', strtotime('+2 month', strtotime(date('Y-m', time())))]];
        }


        $data=Db::name('user_class_apply')
            ->alias('uca')
            ->join('class c','uca.class_id=c.id')
            ->join('room r','c.room_id=r.id')
            ->join('product p','c.product_id=p.id')
            ->where($where)
            ->where(['uca.status'=>1,'uca.user_id'=>$param['user_id'],'p.delete_time'=>null,'c.delete_time'=>null,'c.status'=>1])
            ->order('uca.create_time','desc')
            ->field('p.name as pname,r.name as rname,c.start_time,c.times,uca.user_id,c.id as cid,uca.id,c.type')
            ->select()
            ->each(function ($item) {
                $item['assess']=0;
                $item['filter']=0;
                $item['train']=0;
                //目标评估得分,功能筛查评分
                $score=Db::name('user_coach_class')
                    ->alias('ucc')
                    ->join('coach_class cc','ucc.coach_class_id=cc.id')
                    ->where(['ucc.user_id'=>$item['user_id'],'cc.class_id'=>$item['cid'],'cc.status'=>0,'ucc.status'=>1])
                    ->select()
                    ->each(function ($item2) {
                        $assess=explode(',',$item2['assess_target_score_id']);
                        $filter=explode(',',$item2['filter_target_score_id']);
                        $item2['assess']=Db::name('assess_target_score')->where('id','in',$assess)->sum('score');
                        $item2['filter']=Db::name('filter_target_score')->where('id','in',$filter)->sum('score');
                        return $item2;
                    });
                foreach ($score as $k=>$V){
                    $item['assess']+=$score[$k]['assess'];
                    $item['filter']+=$score[$k]['filter'];
                }
                //协同训练课程数
                $train=Db::name('user_coach_class')
                    ->alias('ucc')
                    ->join('coach_class cc','ucc.coach_class_id=cc.id')
                    ->where(['ucc.user_id'=>$item['user_id'],'cc.class_id'=>$item['cid'],'cc.status'=>0,'ucc.status'=>1])
                    ->select()
                    ->each(function ($item3) {
                        $item3['train'] =count(explode(',',$item3['train_id']),1);
                        return $item3;
                    });
                foreach ($train as $k=>$V){
                    $item['train']+=$train[$k]['train'];
                }
                return $item;
            });
        $this->success('获取数据成功',['user'=>$user,'data'=>$data]);
    }

}