|
|
@@ -13,6 +13,7 @@ namespace App\Services;
|
|
|
|
|
|
use App\Models\CityModel;
|
|
|
use App\Models\FansModel;
|
|
|
+use App\Models\FollowModel;
|
|
|
use App\Models\MemberModel;
|
|
|
use App\Models\SiyuanModel;
|
|
|
use App\Models\TradeModel;
|
|
|
@@ -576,7 +577,7 @@ class MemberService extends BaseService
|
|
|
->where('merits_num','>',0)
|
|
|
->select(['id', 'avatar', 'nickname','gender','merits_num','status','create_time'])
|
|
|
->orderBy('merits_num', 'desc')
|
|
|
- ->orderBy('create_time', 'desc')
|
|
|
+ ->orderBy('create_time', 'asc')
|
|
|
->paginate($pageSize);
|
|
|
|
|
|
$dataList = $dataList ? $dataList->toArray() : [];
|
|
|
@@ -593,15 +594,22 @@ class MemberService extends BaseService
|
|
|
$ranks['rank'] = 0;
|
|
|
$ranks['merits_num'] = $meritsNum>0? $meritsNum : 0;
|
|
|
if($meritsNum>0){
|
|
|
- $rankData = $this->model::from(\DB::raw(env('DB_PREFIX').'member as m,(select (@rank:=0)) as rank'))->where(['mark'=> 1,'status'=> 1])
|
|
|
+ $model = $this->model::from(\DB::raw(env('DB_PREFIX').'member as m,(select (@rank:=0)) as rank'))
|
|
|
+ ->where(['mark'=> 1,'status'=> 1])
|
|
|
->where('merits_num','>',0)
|
|
|
->orderBy('merits_num', 'desc')
|
|
|
->orderBy('create_time', 'asc')
|
|
|
- ->select(['merits_num','id',\DB::raw('(@rank:=@rank+1) as rank')])
|
|
|
- ->get()
|
|
|
- ->keyBy('id');
|
|
|
- $rankData = $rankData? $rankData->toArray() : [];
|
|
|
- $ranks = isset($rankData[$userId])? $rankData[$userId] : $ranks;
|
|
|
+ ->select(['merits_num','mark','id',\DB::raw('(@rank:=@rank+1) as rank')]);
|
|
|
+ $binds = $model->getBindings();
|
|
|
+ $sql = str_replace('?', '%s', $model->toSql());
|
|
|
+ $sql = sprintf($sql, ...$binds);
|
|
|
+
|
|
|
+ $ranks = $this->model::from(\DB::raw("({$sql}) as a"))
|
|
|
+
|
|
|
+ ->where(['id'=> $userId])
|
|
|
+ ->select(['merits_num','id','rank'])
|
|
|
+ ->first();
|
|
|
+
|
|
|
}
|
|
|
return [
|
|
|
'code' => 0,
|
|
|
@@ -612,4 +620,107 @@ class MemberService extends BaseService
|
|
|
'data' => isset($dataList['data']) ? $dataList['data'] : 0,
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关注
|
|
|
+ * @param $userId
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function follow($userId){
|
|
|
+ $params = request()->all();
|
|
|
+ $followUid = isset($params['follow_uid'])? $params['follow_uid'] : 0;
|
|
|
+ $status = isset($params['status'])? $params['status'] : 1;
|
|
|
+ $status = $status<=0? 1 : $status;
|
|
|
+ if(empty($followUid)){
|
|
|
+ return message('参数错误', false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!in_array($status, [1,2])){
|
|
|
+ return message('参数错误', false);
|
|
|
+ }
|
|
|
+
|
|
|
+ $memberInfo = $this->model::where(['id'=> $userId, 'maek'=> 1,'status'=> 1])
|
|
|
+ ->select(['id','openid','nickname','status'])
|
|
|
+ ->first();
|
|
|
+ if(!$memberInfo){
|
|
|
+ return message('账户不可操作已冻结或不存在,请联系客服',false);
|
|
|
+ }
|
|
|
+
|
|
|
+ $followInfo = FollowModel::where(['id'=> $followUid, 'maek'=> 1,'status'=> 1])
|
|
|
+ ->select(['id','openid','nickname','status'])
|
|
|
+ ->first();
|
|
|
+ if(!$followInfo){
|
|
|
+ return message('关注用户不可操作或不存在',false);
|
|
|
+ }
|
|
|
+
|
|
|
+ $info = FollowModel::where(['user_id'=> $userId, 'follow_uid'=> $followUid])->select(['id','status'])->first();
|
|
|
+ if($info && $info->status == 1 && $status == 1){
|
|
|
+ return message('您已关注过', false);
|
|
|
+ }else if($info && $info->status == 2 && $status == 2){
|
|
|
+ return message('您已取消关注', false);
|
|
|
+ }else if(!$info && $status == 2){
|
|
|
+ return message('您未关注过', false);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理
|
|
|
+ if($info){
|
|
|
+ $info->status = $status;
|
|
|
+ $info->create_time = time();
|
|
|
+ if($info->save()){
|
|
|
+ return message($status == 1? '关注成功':'取消关注成功', true);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $data = [
|
|
|
+ 'user_id'=> $userId,
|
|
|
+ 'follow_uid'=> $followUid,
|
|
|
+ 'create_time'=> time(),
|
|
|
+ 'status'=> 1,
|
|
|
+ ];
|
|
|
+ if(FollowModel::insertGetId($data)){
|
|
|
+ return message('关注成功', true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return message('操作失败', false);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关注的人
|
|
|
+ * @return array
|
|
|
+ * @since 2020/11/11
|
|
|
+ * @author wesmiler
|
|
|
+ */
|
|
|
+ public function followList($userId)
|
|
|
+ {
|
|
|
+ $params = request()->all();
|
|
|
+ $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
|
|
|
+ $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
|
|
|
+
|
|
|
+ $dataList = $this->model::from('member_follow as mf')
|
|
|
+ ->leftJoin('member as m','mf.follow_uid','=','m.id')
|
|
|
+ ->where(['m1.mark'=>1,'m1.status'=> 1,'mf.mark'=> 1,'mf.status'=> 1])
|
|
|
+ ->select(['mf.id', 'mf.user_id','mf.follow_uid','m.avatar','m.nickname', 'm.merits_num','m.gender','m.status','m.create_time'])
|
|
|
+ ->orderBy('m.merits_num', 'desc')
|
|
|
+ ->orderBy('mf.create_time', 'asc')
|
|
|
+ ->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,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
}
|