// +---------------------------------------------------------------------- namespace App\Services; use App\Models\MemberModel; use App\Models\SiyuanModel; use App\Models\YigongModel; /** * 义工管理-服务类 * @author wesmiler * @since 2020/11/11 * Class YigongService * @package App\Services */ class YigongService extends BaseService { /** * 构造函数 * @author wesmiler * @since 2020/11/11 * YigongService constructor. */ public function __construct() { $this->model = new YigongModel(); } /** * 获取列表 * @return array * @since 2020/11/11 * @author wesmiler */ public function getList() { $params = request()->all(); $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE; $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE; $dataList = $this->model::from('yigong as y') ->leftJoin('member as m', 'm.id', '=', 'y.user_id') ->leftJoin('siyuan as s', 's.id', '=', 'y.siyuan_id') ->where(function ($query) use ($params) { $query->where('y.mark', 1); $realname = isset($params['realname']) ? trim($params['realname']) : ''; if (!empty($realname)) { $query->where('y.realname', 'like', "%{$realname}%"); } $onSiyuan = isset($params['on_siyuan']) ? intval($params['on_siyuan']) : 0; if ($onSiyuan > 0) { $query->where('a.on_siyuan', $onSiyuan); } $status = isset($params['status']) ? $params['status'] : 0; if ($status > 0) { $query->where('y.status', $status); } else { $query->whereIn('y.status', [1, 2]); } }) ->select(['y.id', 'y.siyuan_id','y.user_id','s.title as siyuan', 'm.nickname','m.salary', 'y.realname', 'y.on_siyuan', 'm.avatar', 'y.status', 'y.create_time', 'y.update_time','y.reason', 'y.description', 'y.sort']) ->orderBy('y.update_time', 'desc') ->paginate($pageSize); $dataList = $dataList ? $dataList->toArray() : []; if ($dataList) { foreach ($dataList['data'] as &$item) { $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : ''; $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : ''; } unset($item); } return [ 'code' => 0, 'success'=> true, 'msg' => '操作成功', 'count' => isset($dataList['total']) ? $dataList['total'] : 0, 'data' => isset($dataList['data']) ? $dataList['data'] : 0, ]; } /** * 添加或编辑 * @return array * @since 2020/11/11 * @author wesmiler */ public function edit() { $data = request()->all(); $data['update_time'] = time(); $data['publish_at'] = isset($data['publish_at']) && $data['publish_at']? $data['publish_at'] : date('Y-m-d H:i:s'); return parent::edit($data); // TODO: Change the autogenerated stub } /** * 申请成为义工 * @param $userId * @return array */ public function apply($userId){ $params = request()->all(); $siyuanId = isset($params['siyuan_id'])? $params['siyuan_id'] : 0; $siyuanInfo = SiyuanModel::where(['id'=> $siyuanId,'mark'=> 1,'status'=> 1]) ->select(['id','title','status']) ->first(); if(!$siyuanInfo){ return message('所选寺院不存在', false); } // 验证账户 $memberInfo = MemberModel::where(['id'=> $userId,'mark'=> 1,'status'=> 1]) ->select(['id','nickname','status']) ->first(); if(!$memberInfo){ return message('当前账号无权操作或已冻结,请联系客服', false); } // 验证是否已申请 $info = $this->model::where(['user_id'=> $userId]) ->select(['id','user_id','mark','status']) ->first(); if($info && $info->mark==1 && $info->status == 1){ return message('您已提交过申请,请耐心等候审核', false); }else if($info && $info->mark==1 && $info->status == 2){ return message('您的申请已通过,请不要重复提交', false); } if($info){ $info->realname = isset($params['realname'])? trim($params['realname']) : ''; $info->phone = isset($params['phone'])? trim($params['phone']) : ''; $info->idcard = isset($params['idcard'])? trim($params['idcard']) : ''; $info->description = isset($params['description'])? trim($params['description']) : ''; $info->reason = ''; $info->create_time = time(); $info->mark = 1; $info->status = 1; if($info->save()){ return message('您的申请已重新提交,请耐心等候审核', true); } }else{ $data = [ 'siyuan_id'=> $siyuanId, 'user_id'=> $userId, 'realname'=> isset($params['realname'])? trim($params['realname']) : '', 'phone'=> isset($params['phone'])? trim($params['phone']) : '', 'idcard'=> isset($params['idcard'])? trim($params['idcard']) : '', 'description'=> isset($params['description'])? trim($params['description']) : '', 'create_time'=> time(), 'status'=> 1, ]; if($this->model::insertGetId($data)){ return message('您的申请已提交,请耐心等候审核', true); } } return message('操作失败,请刷新页面后重试', false); } /** * 获取申请信息 * @param $userId * @return mixed */ public function applyInfo($userId){ $params = request()->all(); $siyuanId = isset($params['siyuan_id'])? $params['siyuan_id'] : 0; $info = $this->model::from('yigong as y') ->leftJoin('siyuan as s','s.id','=','y.siyuan_id') ->where(['y.siyuan_id'=> $siyuanId,'user_id'=> $userId, 'y.mark'=> 1]) ->select(['y.id','y.user_id','y.siyuan_id','y.realname','y.phone','y.idcard','y.description','y.reason','y.create_time','y.status','s.title as siyuan_text']) ->orderBy('y.create_time','desc') ->first(); return message(1005, true, $info? $info : []); } }