| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- <?php
- // +----------------------------------------------------------------------
- // | Laravel框架 [ Laravel ]
- // +----------------------------------------------------------------------
- // | 版权所有 2017~2021 Laravel研发中心
- // +----------------------------------------------------------------------
- // | 官方网站: http://www.laravel.cn
- // +----------------------------------------------------------------------
- // | Author: wesmiler <12345678@qq.com>
- // +----------------------------------------------------------------------
- namespace App\Services;
- use App\Models\FansModel;
- use App\Models\MasterAdviceModel;
- use App\Models\MasterModel;
- use App\Models\MemberModel;
- use App\Models\SiyuanModel;
- /**
- * 法师管理-服务类
- * @author wesmiler
- * @since 2020/11/11
- * Class MasterService
- * @package App\Services
- */
- class MasterService extends BaseService
- {
- /**
- * 构造函数
- * @author wesmiler
- * @since 2020/11/11
- * MasterService constructor.
- */
- public function __construct()
- {
- $this->model = new MasterModel();
- }
- /**
- * 获取列表
- * @return array
- * @since 2020/11/11
- * @author wesmiler
- */
- public function getList()
- {
- $params = request()->all();
- return parent::getList();
- }
- /**
- * 列表
- * @return array
- */
- public function getDataList($userId){
- $params = request()->all();
- $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
- $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
- $dataList = $this->model::from('master as ms')
- ->leftJoin('member as m','m.id','=','ms.user_id')
- ->where(['ms.mark'=> 1,'ms.status'=> 1,'m.mark'=> 1,'m.status'=> 1])
- ->where('m.id','>', 0)
- ->whereNotIn('m.id', [$userId])
- ->select('ms.*','m.nickname','m.avatar')
- ->orderBy('ms.create_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') : '';
- // 登录状态
- $item['is_online'] = 0;
- if(RedisService::get("auths:info:{$item['user_id']}")){
- $item['is_online'] = 1;
- }
- // 咨询人数
- $adviceCount = MasterAdviceModel::where(['master_uid'=> $item['user_id'],'status'=> 1])->count('id');
- $item['advice_count'] = $adviceCount? $adviceCount : 0;
- }
- }
- return [
- 'code' => 0,
- 'success'=> true,
- 'msg' => '操作成功',
- 'count' => isset($dataList['total']) ? $dataList['total'] : 0,
- 'data' => isset($dataList['data']) ? $dataList['data'] : 0,
- ];
- }
- /**
- * 获取用户信息
- * @param $openid OPENID
- * @param array $field m用户表
- * @return array
- */
- public function getUserInfo($uid, $userId=0)
- {
- $info = $this->model::from('master as ms')
- ->leftJoin('member as m','m.id','=','ms.user_id')
- ->where(['ms.user_id'=> $uid,'ms.mark'=> 1,'ms.status'=> 1,'m.mark'=> 1,'m.status'=> 1])
- ->where('m.id','>', 0)
- ->select('ms.*','m.nickname','m.avatar')
- ->first();
- $info = $info ? $info->toArray() : [];
- if($info){
- if (isset($info['avatar'])) {
- $info['avatar'] = $info['avatar'] ? get_image_url($info['avatar']) : '';
- }
- $info['idcard_front_preview'] = $info['idcard_front']? get_image_url($info['idcard_front']) : '';
- $info['idcard_back_preview'] = $info['idcard_back']? get_image_url($info['idcard_back']) : '';
- $info['description_text'] = $info['description']? str_replace("\n","<br>", $info['description']) : '';
- // 评分
- $score = MasterAdviceModel::where(['master_uid'=> $uid,'status'=> 1,'pid'=> 0])
- ->where('score','>',0)
- ->avg('score');
- $info['score'] = $score? moneyFormat($score,1) : 0;
- // 是否评分过
- $info['is_score'] = 0;
- $adviceInfo = MasterAdviceModel::where(['master_uid'=> $uid,'user_id'=> $userId,'status'=> 1])
- ->select(['id','score'])
- ->first();
- if($adviceInfo){
- $info['is_score'] = $adviceInfo->score>0? 2 : 1;
- }
- }
- return $info;
- }
- /**
- * 打分
- * @param $userId
- * @return array
- */
- public function score($userId){
- $params = request()->all();
- $masterUid = isset($params['id'])? $params['id'] : 0;
- $score = isset($params['score'])? intval($params['score']) : 0;
- if($masterUid<=0){
- return message('法师参数错误', false);
- }
- if($masterUid == $userId){
- return message('不能给自己打分', false);
- }
- if($score<=0 || $score>5){
- return message('评分参数错误,请选择1-5评分', false);
- }
- $masterInfo = $this->model::where(['user_id'=> $masterUid,'mark'=> 1,'status'=> 1])
- ->select(['id','realname','status'])
- ->first();
- if(!$masterInfo){
- return message('法师不存在或不可操作', false);
- }
- // 验证用户
- $memberInfo = MemberModel::where(['id'=> $userId, 'mark'=> 1,'status'=> 1])
- ->select(['id','openid','nickname'])
- ->first();
- if(!$memberInfo){
- return message('您的账号不可操作或已冻结,请联系客服', false);
- }
- // 验证是否评分过
- $adviceInfo = MasterAdviceModel::where(['master_uid'=> $masterUid,'user_id'=> $userId,'status'=> 1])
- ->select(['id','user_id','score'])
- ->first();
- if(!$adviceInfo){
- return message('您未咨询过无法评分,请先咨询法师', false);
- }
- if($adviceInfo->score>0){
- return message('您已经打过分,请不要重复操作', false);
- }
- $adviceInfo->score = $score;
- if($adviceInfo->save()){
- return message('打分成功', true);
- }else{
- return message('打分失败,请刷新重试', false);
- }
- }
- /**
- * 咨询
- * @param $userId
- * @return array
- */
- public function advice($userId){
- $params = request()->all();
- $masterUid = isset($params['id'])? $params['id'] : 0;
- if(!$masterUid){
- return message('参数错误', false);
- }
- $masterInfo = $this->model::where(['user_id'=> $masterUid,'mark'=> 1,'status'=> 1])
- ->select(['id','realname','status'])
- ->first();
- if(!$masterInfo){
- return message('法师不存在或不可操作', false);
- }
- // 验证用户
- $memberInfo = MemberModel::where(['id'=> $userId, 'mark'=> 1,'status'=> 1])
- ->select(['id','openid','nickname'])
- ->first();
- if(!$memberInfo){
- return message('您的账号不可操作或已冻结,请联系客服', false);
- }
- // 验证是否评分过
- $adviceInfo = MasterAdviceModel::where(['master_uid'=> $masterUid,'user_id'=> $userId,'status'=> 1])
- ->select(['id','user_id','score'])
- ->first();
- if($adviceInfo){
- return message('您已咨询过无需记录', false);
- }
- $data = [
- 'master_uid'=> $masterUid,
- 'user_id'=> $userId,
- 'create_time'=> time(),
- 'update_time'=> time(),
- 'status'=> 1,
- ];
- if(MasterAdviceModel::insertGetId($data)){
- return message('咨询记录成功', true);
- }else{
- return message('咨询记录失败', false);
- }
- }
- /**
- * 咨询记录
- * @return array
- */
- public function adviceList(){
- $params = request()->all();
- $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
- $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
- $masterUid = isset($params['id'])? $params['id'] : 0;
- $dataList = $this->model::from('master_advices as ma')
- ->leftJoin('member as m','m.id','=','ma.user_id')
- ->where(['ma.status'=> 1,'m.mark'=> 1,'m.status'=> 1,'ma.master_uid'=> $masterUid])
- ->where('m.id','>', 0)
- ->select('ma.*','m.nickname','m.avatar')
- ->orderBy('ma.create_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') : '';
- $item['time'] = $item['create_time']? format_time(strtotime($item['create_time'])) : '以前';
- }
- }
- return [
- 'code' => 0,
- 'success'=> true,
- 'msg' => '操作成功',
- 'count' => isset($dataList['total']) ? $dataList['total'] : 0,
- 'data' => isset($dataList['data']) ? $dataList['data'] : 0,
- ];
- }
- /**
- * 申请提交
- * @param $userId
- * @return array
- */
- public function apply($userId){
- $params = request()->all();
- $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])->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'])? $params['realname'] : '';
- $info->master_no = isset($params['master_no'])? $params['master_no'] : '';
- $info->contact_phone = isset($params['contact_phone'])? $params['contact_phone'] : '';
- $info->idcard_front = isset($params['idcard_front'])? $params['idcard_front'] : '';
- $info->idcard_back = isset($params['idcard_back'])? $params['idcard_back'] : '';
- $info->description = isset($params['description'])? $params['description'] : '';
- $info->type = isset($params['type'])? $params['type'] : 1;
- $info->master_type = isset($params['master_type'])? $params['master_type'] : 1;
- $info->siyuan = isset($params['siyuan'])? $params['siyuan'] : '';
- $info->siyuan_address = isset($params['siyuan_address'])? $params['siyuan_address'] : '';
- $info->create_time = time();
- $info->reason = '';
- $info->mark = 1;
- $info->status = 2;
- if($info->save()){
- return message('申请提交成功,请耐心等候审核', true);
- }
- }else{
- $data = [
- 'user_id'=> $userId,
- 'realname'=> isset($params['realname'])? trim($params['realname']) : '',
- 'master_no'=> isset($params['master_no'])? $params['master_no'] : '',
- 'contact_phone'=> isset($params['contact_phone'])? $params['contact_phone'] : '',
- 'idcard_front'=> isset($params['idcard_front'])? $params['idcard_front'] : '',
- 'idcard_back'=> isset($params['idcard_back'])? $params['idcard_back'] : '',
- 'description'=> isset($params['description'])? $params['description'] : '',
- 'type'=> isset($params['type'])? intval($params['type']) : 1,
- 'master_type'=> isset($params['master_type'])? intval($params['master_type']) : 1,
- 'siyuan'=> isset($params['siyuan'])? $params['siyuan'] : '',
- 'siyuan_address'=> isset($params['siyuan_address'])? $params['siyuan_address'] : '',
- 'create_time'=> time(),
- 'update_time'=> time(),
- 'reason'=> '',
- 'mark'=> 1,
- 'status'=> 2,
- ];
- if($this->model::insertGetId($data)){
- return message('申请提交成功,请耐心等候审核', true);
- }
- }
- return message('申请提交失败', false);
- }
- }
|