123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- package com.yupi.yuso.controller;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.yupi.yuso.annotation.AuthCheck;
- import com.yupi.yuso.common.BaseResponse;
- import com.yupi.yuso.common.DeleteRequest;
- import com.yupi.yuso.common.ErrorCode;
- import com.yupi.yuso.common.ResultUtils;
- import com.yupi.yuso.config.WxOpenConfig;
- import com.yupi.yuso.constant.UserConstant;
- import com.yupi.yuso.exception.BusinessException;
- import com.yupi.yuso.exception.ThrowUtils;
- import com.yupi.yuso.model.dto.user.UserAddRequest;
- import com.yupi.yuso.model.dto.user.UserLoginRequest;
- import com.yupi.yuso.model.dto.user.UserQueryRequest;
- import com.yupi.yuso.model.dto.user.UserRegisterRequest;
- import com.yupi.yuso.model.dto.user.UserUpdateMyRequest;
- import com.yupi.yuso.model.dto.user.UserUpdateRequest;
- import com.yupi.yuso.model.entity.User;
- import com.yupi.yuso.model.vo.LoginUserVO;
- import com.yupi.yuso.model.vo.UserVO;
- import com.yupi.yuso.service.UserService;
- import java.util.List;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import lombok.extern.slf4j.Slf4j;
- import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
- import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
- import me.chanjar.weixin.mp.api.WxMpService;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- /**
- * 用户接口
- *
- * @author <a href="https://github.com/liyupi">程序员鱼皮</a>
- * @from <a href="https://yupi.icu">编程导航知识星球</a>
- */
- @RestController
- @RequestMapping("/user")
- @Slf4j
- public class UserController {
- @Resource
- private UserService userService;
- @Resource
- private WxOpenConfig wxOpenConfig;
- // region 登录相关
- /**
- * 用户注册
- *
- * @param userRegisterRequest
- * @return
- */
- @PostMapping("/register")
- public BaseResponse<Long> userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {
- if (userRegisterRequest == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- String userAccount = userRegisterRequest.getUserAccount();
- String userPassword = userRegisterRequest.getUserPassword();
- String checkPassword = userRegisterRequest.getCheckPassword();
- if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {
- return null;
- }
- long result = userService.userRegister(userAccount, userPassword, checkPassword);
- return ResultUtils.success(result);
- }
- /**
- * 用户登录
- *
- * @param userLoginRequest
- * @param request
- * @return
- */
- @PostMapping("/login")
- public BaseResponse<LoginUserVO> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {
- if (userLoginRequest == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- String userAccount = userLoginRequest.getUserAccount();
- String userPassword = userLoginRequest.getUserPassword();
- if (StringUtils.isAnyBlank(userAccount, userPassword)) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- LoginUserVO loginUserVO = userService.userLogin(userAccount, userPassword, request);
- return ResultUtils.success(loginUserVO);
- }
- /**
- * 用户登录(微信开放平台)
- */
- @GetMapping("/login/wx_open")
- public BaseResponse<LoginUserVO> userLoginByWxOpen(HttpServletRequest request, HttpServletResponse response,
- @RequestParam("code") String code) {
- WxOAuth2AccessToken accessToken;
- try {
- WxMpService wxService = wxOpenConfig.getWxMpService();
- accessToken = wxService.getOAuth2Service().getAccessToken(code);
- WxOAuth2UserInfo userInfo = wxService.getOAuth2Service().getUserInfo(accessToken, code);
- String unionId = userInfo.getUnionId();
- String mpOpenId = userInfo.getOpenid();
- if (StringUtils.isAnyBlank(unionId, mpOpenId)) {
- throw new BusinessException(ErrorCode.SYSTEM_ERROR, "登录失败,系统错误");
- }
- return ResultUtils.success(userService.userLoginByMpOpen(userInfo, request));
- } catch (Exception e) {
- log.error("userLoginByWxOpen error", e);
- throw new BusinessException(ErrorCode.SYSTEM_ERROR, "登录失败,系统错误");
- }
- }
- /**
- * 用户注销
- *
- * @param request
- * @return
- */
- @PostMapping("/logout")
- public BaseResponse<Boolean> userLogout(HttpServletRequest request) {
- if (request == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- boolean result = userService.userLogout(request);
- return ResultUtils.success(result);
- }
- /**
- * 获取当前登录用户
- *
- * @param request
- * @return
- */
- @GetMapping("/get/login")
- public BaseResponse<LoginUserVO> getLoginUser(HttpServletRequest request) {
- User user = userService.getLoginUser(request);
- return ResultUtils.success(userService.getLoginUserVO(user));
- }
- // endregion
- // region 增删改查
- /**
- * 创建用户
- *
- * @param userAddRequest
- * @param request
- * @return
- */
- @PostMapping("/add")
- @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
- public BaseResponse<Long> addUser(@RequestBody UserAddRequest userAddRequest, HttpServletRequest request) {
- if (userAddRequest == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- User user = new User();
- BeanUtils.copyProperties(userAddRequest, user);
- boolean result = userService.save(user);
- ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
- return ResultUtils.success(user.getId());
- }
- /**
- * 删除用户
- *
- * @param deleteRequest
- * @param request
- * @return
- */
- @PostMapping("/delete")
- @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
- public BaseResponse<Boolean> deleteUser(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) {
- if (deleteRequest == null || deleteRequest.getId() <= 0) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- boolean b = userService.removeById(deleteRequest.getId());
- return ResultUtils.success(b);
- }
- /**
- * 更新用户
- *
- * @param userUpdateRequest
- * @param request
- * @return
- */
- @PostMapping("/update")
- @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
- public BaseResponse<Boolean> updateUser(@RequestBody UserUpdateRequest userUpdateRequest,
- HttpServletRequest request) {
- if (userUpdateRequest == null || userUpdateRequest.getId() == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- User user = new User();
- BeanUtils.copyProperties(userUpdateRequest, user);
- boolean result = userService.updateById(user);
- ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
- return ResultUtils.success(true);
- }
- /**
- * 根据 id 获取用户(仅管理员)
- *
- * @param id
- * @param request
- * @return
- */
- @GetMapping("/get")
- @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
- public BaseResponse<User> getUserById(long id, HttpServletRequest request) {
- if (id <= 0) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- User user = userService.getById(id);
- ThrowUtils.throwIf(user == null, ErrorCode.NOT_FOUND_ERROR);
- return ResultUtils.success(user);
- }
- /**
- * 根据 id 获取包装类
- *
- * @param id
- * @param request
- * @return
- */
- @GetMapping("/get/vo")
- public BaseResponse<UserVO> getUserVOById(long id, HttpServletRequest request) {
- BaseResponse<User> response = getUserById(id, request);
- User user = response.getData();
- return ResultUtils.success(userService.getUserVO(user));
- }
- /**
- * 分页获取用户列表(仅管理员)
- *
- * @param userQueryRequest
- * @param request
- * @return
- */
- @PostMapping("/list/page")
- @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
- public BaseResponse<Page<User>> listUserByPage(@RequestBody UserQueryRequest userQueryRequest,
- HttpServletRequest request) {
- long current = userQueryRequest.getCurrent();
- long size = userQueryRequest.getPageSize();
- Page<User> userPage = userService.page(new Page<>(current, size),
- userService.getQueryWrapper(userQueryRequest));
- return ResultUtils.success(userPage);
- }
- /**
- * 分页获取用户封装列表
- *
- * @param userQueryRequest
- * @param request
- * @return
- */
- @PostMapping("/list/page/vo")
- public BaseResponse<Page<UserVO>> listUserVOByPage(@RequestBody UserQueryRequest userQueryRequest,
- HttpServletRequest request) {
- if (userQueryRequest == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- long current = userQueryRequest.getCurrent();
- long size = userQueryRequest.getPageSize();
- // 限制爬虫
- ThrowUtils.throwIf(size > 20, ErrorCode.PARAMS_ERROR);
- Page<User> userPage = userService.page(new Page<>(current, size),
- userService.getQueryWrapper(userQueryRequest));
- Page<UserVO> userVOPage = new Page<>(current, size, userPage.getTotal());
- List<UserVO> userVO = userService.getUserVO(userPage.getRecords());
- userVOPage.setRecords(userVO);
- return ResultUtils.success(userVOPage);
- }
- // endregion
- /**
- * 更新个人信息
- *
- * @param userUpdateMyRequest
- * @param request
- * @return
- */
- @PostMapping("/update/my")
- public BaseResponse<Boolean> updateMyUser(@RequestBody UserUpdateMyRequest userUpdateMyRequest,
- HttpServletRequest request) {
- if (userUpdateMyRequest == null) {
- throw new BusinessException(ErrorCode.PARAMS_ERROR);
- }
- User loginUser = userService.getLoginUser(request);
- User user = new User();
- BeanUtils.copyProperties(userUpdateMyRequest, user);
- user.setId(loginUser.getId());
- boolean result = userService.updateById(user);
- ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
- return ResultUtils.success(true);
- }
- }
|