123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- <?php
- namespace App\Http\Controllers\User;
- use App\Exceptions\AlertException;
- use App\Http\Controllers\Controller;
- use App\Http\Controllers\Core\Auth;
- use App\Models\Fpdx\ActivityModel;
- use App\Models\Deed\FriendsModel;
- use App\Models\Fpdx\PairModel;
- use App\Models\User\InviteConfigModel;
- use App\Models\User\SuperLikeModel;
- use App\Services\Home\FeedService;
- use App\Services\User\NoticeService;
- use App\Services\User\PartnerService;
- use App\Models\Deed\InvitationCardModel;
- use App\Models\PartnerModel;
- use App\Models\PraiseModel;
- use App\Models\User\UserModel;
- use App\Models\BuyInviteListModel;
- use App\Models\BuyInviteModel;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Redis;
- use Tymon\JWTAuth\Exceptions\JWTException;
- /**
- * 卡片
- * Class PartnerController
- * @package App\Http\Controllers\User
- */
- class PartnerController extends Controller
- {
- /**
- * 上传一张卖室友卡片
- * @param Request $request
- * @throws \Exception
- */
- public function store(Request $request)
- {
- }
- /**
- * 更新卡片信息
- * @param int $partner_id
- * @param array $data
- */
- public function updatePartner(int $partner_id, array $data)
- {
- $partner = PartnerModel::findOrFail($partner_id);
- if (isset($data['voice'])) {
- $data['voice_check'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['photo_src'])) {
- $data['check_photo'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['photo_1'])) {
- $data['photo_1_check'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['photo_2'])) {
- $data['photo_2_check'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['photo_3'])) {
- $data['photo_3_check'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['photo_4'])) {
- $data['photo_4_check'] = 0;
- $data['is_commit_check'] = 1;
- }
- if (isset($data['is_commit_check']) && 1 == $data['is_commit_check']) {
- $ings = ActivityModel::getActivitys();
- $exists = PairModel::where([
- 'uid' => $partner->uid,
- 'stage_id' => $ings['ing'] ?: 0
- ])->exists();
- if ($exists) {
- $data['is_fpdx'] = 1;
- } else {
- $data['is_fpdx'] = 0;
- }
- }
- $data['update_at'] = time();
- $partner->fill($data);
- if (isset($data['sex']) && 1 == $partner->is_sell) {
- $user = UserModel::findOrFail($partner->uid);
- if ($partner->sex == 1) {
- Redis::zrem("fpdx:user:locations:sell:girl", $partner->uid);
- Redis::geoAdd("fpdx:user:locations:sell:boy", $user->lng, $user->lat, $partner->uid);
- } else {
- Redis::zrem("fpdx:user:locations:sell:boy", $partner->uid);
- Redis::geoAdd("fpdx:user:locations:sell:girl", $user->lng, $user->lat, $partner->uid);
- }
- }
- if (1 == $partner->is_sell && empty($partner->qq) && empty($partner->weixin)) {
- $partner->is_sell = 0;
- Redis::zrem("fpdx:user:locations:sell:boy", $partner->uid);
- Redis::zrem("fpdx:user:locations:sell:girl", $partner->uid);
- }
- if (-1 == $partner->is_sell && 1 == $partner->is_commit_check) {
- $partner->is_sell = 0;
- Redis::zrem("fpdx:user:locations:sell:boy", $partner->uid);
- Redis::zrem("fpdx:user:locations:sell:girl", $partner->uid);
- }
- $partner->save();
- }
- /**
- * 更新卡片信息接口
- * @param int $partner_id
- * @param Request $request
- * @return array
- * @throws AlertException
- */
- public function update(int $partner_id, Request $request)
- {
- $data = $request->only([
- 'home',
- 'address',
- 'sex',
- 'photo_src',
- 'photo_1',
- 'photo_2',
- 'photo_3',
- 'photo_4',
- 'voice',
- 'school',
- 'qq',
- 'weixin',
- 'subject',
- 'grade',
- 'education',
- 'height',
- 'age',
- 'star',
- 'introduce',
- 'expect',
- 'allow',
- 'auto_sell',
- 'is_hide',
- 'is_fpdx'
- ]);
- $ps = new PartnerService();
- $ps->updatePartner($partner_id, $data);
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 获取卡片信息
- * @param int $partner_id
- * @return array
- */
- public function getPartner(int $partner_id)
- {
- $uid = Auth::auth();
- /** @var PartnerModel $partner */
- $partner = PartnerModel::findOrFail($partner_id);
- $partner->black_at = $partner->black_at < time() ? 0 : $partner->black_at;
- try {
- /** @var PartnerModel $user */
- $user = UserModel::findOrfail($partner->uid, [
- 'uid',
- 'headimgurl',
- 'nickname',
- 'age',
- 'star',
- 'last_life',
- 'why',
- 'pair_voice',
- 'identity_auth',
- 'wx_auth',
- 'qq',
- 'weixin',
- 'introduce',
- 'expect',
- 'height',
- 'sex',
- 'school',
- 'address',
- 'home',
- 'tag_1',
- 'tag_2',
- 'tag_3',
- 'tag_4',
- 'login_at',
- 'claim_tag',
- 'work_state',
- 'be_vip_at',
- 'supvip_endat',
- 'logoff_at',
- 'bgcolor'
- ]);
- if ($inviteConf = InviteConfigModel::find($partner->uid)) {
- $user->task_photo = $inviteConf->task_photo;
- $user->task_question = $inviteConf->task_question;
- $user->task_sing = $inviteConf->task_sing;
- $user->task_question_data = $inviteConf->task_question_data ? true : false;
- $user->task_sing_data = $inviteConf->task_sing_data ? true : false;
- } else {
- $user->task_photo = false;
- $user->task_question = false;
- $user->task_sing = false;
- $user->task_question_data = false;
- $user->task_sing_data = false;
- }
- $user->invite_cnt = InvitationCardModel::where('invite_uid', $user->uid)->count();
- $partner->headimgurl = $user->headimgurl;
- $partner->nickname = $user->nickname;
- } catch (\Exception $e) {
- $user = null;
- $partner->headimgurl = null;
- $partner->nickname = null;
- }
- if ($uid != $partner->uid) {
- if (1 != $partner->check_photo) {
- unset($partner->photo_src);
- }
- if (1 != $partner->photo_1_check) {
- unset($partner->photo_1);
- }
- if (1 != $partner->photo_2_check) {
- unset($partner->photo_2);
- }
- if (1 != $partner->photo_3_check) {
- unset($partner->photo_3);
- }
- if (1 != $partner->photo_4_check) {
- unset($partner->photo_4);
- }
- if (1 != $partner->voice_check) {
- unset($partner->voice);
- }
- if (1 != $partner->introduce_check) {
- unset($partner->introduce);
- unset($partner->expect);
- }
- unset($partner->check_photo);
- unset($partner->photo_1_check);
- unset($partner->photo_2_check);
- unset($partner->photo_3_check);
- unset($partner->photo_4_check);
- unset($partner->voice_check);
- unset($partner->check_contact);
- unset($partner->introduce_check);
- unset($partner->qq);
- unset($partner->weixin);
- // 与self的关系处理
- $self = array(
- 'friend' => false,
- 'praise' => false,
- 'invite' => false,
- 'superlike' => false
- );
- $friend = FriendsModel::where([['uid', $uid], ['friend_uid', $partner->uid]])->first();
- if (collect($friend)->isEmpty()) {
- !empty($user->weixin) && $user->weixin = substr($user->weixin, 0, 1) . "****" . substr(
- $user->weixin,
- -1,
- 1
- );
- !empty($user->qq) && $user->qq = substr($user->qq, 0, 1) . "****" . substr($user->qq, -1, 1);
- }
- $self['friend'] = $friend;
- if (PraiseModel::where([['uid', $uid], ['partner_id', $partner->id], ['type', 1]])->exists()) {
- $self['praise'] = true;
- }
- if (
- InvitationCardModel::where([
- ['uid', $uid],
- ['invite_uid', $partner->uid],
- ['expired_at', '>', time()]
- ])->exists()
- ) {
- $self['invite'] = true;
- }
- if (SuperLikeModel::where([['uid', $uid], ['partner_id', $partner->id]])->exists()) {
- $self['superlike'] = true;
- }
- $partner->self = $self;
- }
- $partner->setAttribute('user', $user);
- $praise = PraiseModel::where([['partner_id', $partner->id], ['uid', $uid]])->first();
- $partner->praise = isset($praise->type) ? $praise->type : 0;
- $buyInviteListModel = new BuyInviteListModel();
- $inviteList = $buyInviteListModel->where([['partner_id', $partner->id], ['uid', $uid]])->first();
- if (!collect($inviteList)->isEmpty()) {
- $partner->invite_id = $inviteList->id;
- $buyInviteModel = new BuyInviteModel();
- $partner->invite_percent = $buyInviteModel->effectiveInvite($uid, $partner_id);
- }
- return response([
- 'code' => 200,
- 'message' => 'success',
- 'data' => $partner
- ]);
- }
- /**
- * 上下架卡片
- * @param int $partner_id
- * @param Request $request
- * @return array
- * @throws AlertException
- * @throws \Illuminate\Validation\ValidationException
- */
- public function sell(int $partner_id, Request $request)
- {
- $this->validate($request, ['is_sell' => 'in:-1,0,1']);
- $is_sell = $request->input('is_sell');
- $ups = new PartnerService();
- $ups->sell($partner_id, $is_sell);
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 判断是否可上架
- */
- public function isCanSell()
- {
- $uid = Auth::auth();
- /** @var UserModel $user */
- $user = UserModel::findOrFail($uid);
- $isCanSell = false;
- if ($user->partner_id) {
- /** @var PartnerModel $partner */
- $partner = PartnerModel::findOrFail($user->partner_id);
- $ps = new PartnerService();
- if ($partner->black_at < time() && $ps->isCanSell($partner)) {
- $isCanSell = true;
- }
- }
- return array(
- 'code' => 200,
- 'message' => 'success',
- 'data' => array(
- 'is_can_sell' => $isCanSell
- )
- );
- }
- /**
- * 通过用户获取卡片交友卡片信息
- * @param int $user_id
- * @return array
- */
- public function getPartnerByUser(int $user_id)
- {
- $uid = Auth::auth();
- /** @var PartnerModel $partner */
- $partner = PartnerModel::where('uid', $user_id)->firstOrFail();
- $partner->black_at = $partner->black_at < time() ? 0 : $partner->black_at;
- if ($uid == $user_id) {
- return $this->getPartner($partner->id);
- }
- $ps = new PartnerService();
- $partner = $ps->getUserSelf($user_id);
- // 与self的关系处理
- $self = array(
- 'friend' => false,
- 'praise' => false,
- 'invite' => false,
- 'superlike' => false
- );
- $friend = FriendsModel::where([['uid', $uid], ['friend_uid', $partner->uid]])->first();
- if (collect($friend)->isEmpty()) {
- !empty($partner->weixin) && $partner->weixin = substr(
- $partner->weixin,
- 0,
- 1
- ) . "****" . substr($partner->weixin, -1, 1);
- !empty($partner->qq) && $partner->qq = substr($partner->qq, 0, 1) . "****" . substr($partner->qq, -1, 1);
- }
- $self['friend'] = $friend;
- if (PraiseModel::where([['uid', $uid], ['partner_id', $partner->id], ['type', 1]])->exists()) {
- $self['praise'] = true;
- }
- if (
- InvitationCardModel::where([
- ['uid', $uid],
- ['invite_uid', $partner->uid],
- ['expired_at', '>', time()]
- ])->exists()
- ) {
- $self['invite'] = true;
- }
- if (SuperLikeModel::where([['uid', $uid], ['partner_id', $partner->id]])->exists()) {
- $self['superlike'] = true;
- }
- if (PraiseModel::where([['uid', $uid], ['partner_id', $partner->id], ['type', 1]])->exists()) {
- $praise = true;
- } else {
- $praise = false;
- }
- $partner->setAttribute("self", $self);
- $partner->setAttribute("praise", $praise);
- return response([
- 'code' => 200,
- 'message' => 'success',
- 'data' => $partner
- ]);
- }
- /**
- * 点赞/无感 对象卡片
- * @param int $partner_id
- * @param Request $request
- * @return array
- * @throws AlertException
- */
- public function thumb(int $partner_id, Request $request)
- {
- $uid = Auth::auth();
- $thumb = $request->get('thumb', null);
- $ps = new PartnerService();
- $data = $ps->thumb($uid, $partner_id, $thumb);
- return response([
- 'code' => 200,
- 'message' => 'success',
- 'data' => $data
- ]);
- }
- /**
- * 超级喜欢某人
- * @param int $partner_id
- * @return array
- */
- public function superLike(int $partner_id)
- {
- $uid = Auth::auth();
- $ps = new PartnerService();
- $ps->superLike($uid, $partner_id);
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 阅读超级喜欢信息
- * @param int $like_uid
- * @return array
- */
- public function readSuperlike(int $like_uid)
- {
- $uid = Auth::auth();
- $ns = new NoticeService();
- $ns->readSuperlike($uid, $like_uid);
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 阅读相互心动信息
- * @param int $eachlike_id
- * @return array
- * @throws AlertException
- */
- public function readEachlike(int $eachlike_id)
- {
- $uid = Auth::auth();
- $ns = new NoticeService();
- $ns->readEachLikeList($uid, $eachlike_id);
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 解锁喜欢我的卡片
- * @param Request $request
- * @param int $partner_id
- * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
- * @throws AlertException
- * @deprecated Partner/LockLikeMe
- */
- public function lockLikeme(Request $request, int $partner_id)
- {
- $uid = Auth::auth();
- $origin = $request->input('origin', 'supvip');
- if ($origin == 'app_sign') {
- $ps = new PartnerService();
- $ps->appLockLikeMe($uid, $partner_id);
- } else {
- $ps = new PartnerService();
- $ps->lockLikeme($uid, $partner_id);
- }
- return response([
- 'code' => 200,
- 'message' => 'success'
- ]);
- }
- /**
- * 通过卡片id获取卡片信息
- * @param int $partner_id
- * @return array
- */
- public function getPartnerById(int $partner_id)
- {
- try {
- $uid = Auth::auth();
- } catch (JWTException $exception) {
- $uid = 0;
- }
- $fs = new FeedService();
- $data = $fs->getPartner($partner_id, $uid);
- return response([
- 'code' => 200,
- 'message' => 'success',
- 'data' => $data->toArray()
- ]);
- }
- /**
- * 通过卡片ids获取卡片信息
- * @param Request $request
- * @return array
- */
- public function getPartnerByIds(Request $request)
- {
- try {
- $uid = Auth::auth();
- } catch (JWTException $exception) {
- $uid = 0;
- }
- $ids = $request->post('ids', []);
- $fs = new FeedService();
- $datas = array();
- foreach ($ids as $partner_id) {
- $datas[] = $fs->getPartner($partner_id, $uid)->toArray();
- }
- return response(array(
- 'code' => 200,
- 'message' => 'success',
- 'data' => $datas
- ));
- }
- /**
- * 通过uid获取卡片信息
- * @param int $user_id
- * @return array
- * @throws AlertException
- */
- public function getPartnerByUid(int $user_id)
- {
- $uid = Auth::auth();
- /** @var UserModel $user */
- $user = UserModel::findOrFail($user_id);
- if (0 == $user->partner_id) {
- throw new AlertException("未生成卡片", 401);
- }
- $fs = new FeedService();
- $data = $fs->getPartner($user->partner_id, $uid);
- return array(
- 'code' => 200,
- 'message' => 'success',
- 'data' => $data
- );
- }
- }
|