2022-10-08 14:29:52 +08:00

179 lines
5.1 KiB
Java

/**
* -----------------------------------
* 林风社交论坛开源版本请务必保留此注释头信息
* 开源地址: https://gitee.com/virus010101/linfeng-community
* 可正常分享和学习源码,不得用于非法牟利!
* 商业版购买联系技术客服 QQ: 3582996245
* Copyright (c) 2021-2023 linfeng all rights reserved.
* 演示站点:https://www.linfeng.tech
* 版权所有,侵权必究!
* -----------------------------------
*/
package io.linfeng.modules.app.controller;
import io.linfeng.common.response.AppUserInfoResponse;
import io.linfeng.common.response.AppUserRankResponse;
import io.linfeng.common.response.AppUserResponse;
import io.linfeng.common.utils.AppPageUtils;
import io.linfeng.common.utils.R;
import io.linfeng.common.validator.ValidatorUtils;
import io.linfeng.modules.admin.entity.AppUserEntity;
import io.linfeng.modules.admin.service.AppUserService;
import io.linfeng.modules.app.annotation.Login;
import io.linfeng.modules.app.annotation.LoginUser;
import io.linfeng.modules.app.form.*;
import io.linfeng.modules.app.utils.JwtUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* APP登录接口
*
* @author linfeng
* @date 2022/6/9 22:40
*/
@RestController
@RequestMapping("/app/user")
@Api(tags = "APP登录接口")
public class AppUserInfoController {
@Autowired
private JwtUtils jwtUtils;
@Autowired
private AppUserService appUserService;
@Value("${sms.open}")
private boolean isOpen;
@PostMapping("/sendSmsCode")
@ApiOperation("测试发送验证码")
public R sendSmsCode(@RequestBody SendCodeForm param) {
String code = appUserService.sendSmsCode(param);
if (isOpen) {
//TODO
//send Aliyun Sms code
}
return R.ok("测试阶段验证码:" + code);
}
/**
* 手机验证码登录
*/
@PostMapping("/smsLogin")
@ApiOperation("手机验证码登录")
public R smsLogin(@RequestBody SmsLoginForm form, HttpServletRequest request) {
//用户登录
Integer userId = appUserService.smsLogin(form, request);
//生成token
String token = jwtUtils.generateToken(userId);
Map<String, Object> map = new HashMap<>();
map.put("token", token);
map.put("expire", jwtUtils.getExpire());
return R.ok(map);
}
/**
* 微信小程序登录
*/
@PostMapping("/miniWxlogin")
@ApiOperation("手机验证码登录")
public R miniWxLogin(@RequestBody WxLoginForm form) {
//用户登录
Integer userId = appUserService.miniWxLogin(form);
//生成token
String token = jwtUtils.generateToken(userId);
Map<String, Object> map = new HashMap<>();
map.put("token", token);
map.put("expire", jwtUtils.getExpire());
return R.ok(map);
}
@Login
@GetMapping("/userInfo")
@ApiOperation("获取用户信息")
public R userInfo(@LoginUser AppUserEntity user) {
AppUserResponse response = appUserService.getUserInfo(user);
return R.ok().put("result", response);
}
@Login
@PostMapping("/userInfoEdit")
@ApiOperation("用户修改个人信息")
public R userInfoEdit(@LoginUser AppUserEntity user, @RequestBody AppUserUpdateForm appUserUpdateForm) {
appUserService.updateAppUserInfo(appUserUpdateForm, user);
return R.ok("修改成功");
}
@Login
@PostMapping("/addFollow")
@ApiOperation("关注用户")
public R addFollow(@LoginUser AppUserEntity user, @RequestBody AddFollowForm request) {
appUserService.addFollow(request, user);
return R.ok("关注用户成功");
}
@Login
@GetMapping("/userFans")
@ApiOperation("我的粉丝分页列表")
public R userFans(@RequestParam("page") Integer page, @LoginUser AppUserEntity user) {
AppPageUtils pages = appUserService.userFans(page, user.getUid());
return R.ok().put("result", pages);
}
@Login
@GetMapping("/follow")
@ApiOperation("我的关注分页列表")
public R follow(@RequestParam("page") Integer page, @LoginUser AppUserEntity user) {
AppPageUtils pages = appUserService.follow(page, user);
return R.ok().put("result", pages);
}
@Login
@PostMapping("/userInfoById")
@ApiOperation("用户个人主页信息")
public R userInfoById(@RequestBody AppUserInfoForm request, @LoginUser AppUserEntity user) {
AppUserInfoResponse response = appUserService.findUserInfoById(request.getUid(), user);
return R.ok().put("result", response);
}
@Login
@PostMapping("/userRank")
@ApiOperation("发帖达人列表")
public R userRank() {
List<AppUserRankResponse> list=appUserService.userRank();
return R.ok().put("result",list);
}
}