136 lines
4.0 KiB
Java
136 lines
4.0 KiB
Java
package com.tailbet.controller;
|
|
|
|
import com.tailbet.model.dto.LoginDTO;
|
|
import com.tailbet.model.dto.PageParam;
|
|
import com.tailbet.model.dto.PointsFlowQueryDTO;
|
|
import com.tailbet.model.dto.RegisterDTO;
|
|
import com.tailbet.model.dto.UpdatePasswordDTO;
|
|
import com.tailbet.model.dto.UpdateUserDTO;
|
|
import com.tailbet.model.entity.PointsFlow;
|
|
import com.tailbet.model.entity.RedPacket;
|
|
import com.tailbet.model.entity.RedPacketRecv;
|
|
import com.tailbet.model.vo.LoginUserVo;
|
|
import com.tailbet.model.vo.LoginVo;
|
|
import com.tailbet.model.vo.R;
|
|
import com.tailbet.model.vo.UserContext;
|
|
import com.tailbet.openim.OpenIMApiClient;
|
|
import com.tailbet.service.IPointsService;
|
|
import com.tailbet.service.IRedPacketService;
|
|
import com.tailbet.service.IUserService;
|
|
import com.tailbet.util.JwtUtil;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
/**
|
|
* 用户Controller
|
|
*/
|
|
@RestController
|
|
@RequestMapping("/api/user")
|
|
@RequiredArgsConstructor
|
|
public class UserController {
|
|
|
|
private final IUserService userService;
|
|
private final JwtUtil jwtUtil;
|
|
private final OpenIMApiClient openIMApiClient;
|
|
private final IPointsService pointsService;
|
|
private final IRedPacketService redPacketService;
|
|
|
|
/**
|
|
* 注册
|
|
*/
|
|
@PostMapping("/register")
|
|
public R<Void> register(@RequestBody @Validated RegisterDTO dto) {
|
|
userService.register(dto.getUsername(), dto.getPassword());
|
|
return R.ok();
|
|
|
|
}
|
|
|
|
/**
|
|
* 登录
|
|
*/
|
|
@PostMapping("/login")
|
|
public R<LoginVo> login(@RequestBody @Validated LoginDTO dto) {
|
|
Long userId = userService.login(dto.getUsername(), dto.getPassword());
|
|
String token = jwtUtil.generateToken(userId, dto.getUsername());
|
|
String openIMToken = openIMApiClient.getUserToken(String.valueOf(userId), 2); // platformID 2=Android
|
|
|
|
LoginVo vo = new LoginVo();
|
|
vo.setToken(token);
|
|
vo.setOpenIMToken(openIMToken);
|
|
return R.ok("登录成功", vo);
|
|
|
|
}
|
|
|
|
/**
|
|
* 获取当前用户信息
|
|
*/
|
|
@GetMapping("/info")
|
|
public R<LoginUserVo> getInfo() {
|
|
LoginUserVo user = UserContext.getUser();
|
|
return R.ok(user);
|
|
}
|
|
|
|
/**
|
|
* 更新用户信息
|
|
*/
|
|
@PutMapping("/update")
|
|
public R<Void> update(@RequestBody UpdateUserDTO dto) {
|
|
Long userId = UserContext.getUserId();
|
|
userService.updateUserInfo(userId, dto);
|
|
return R.ok();
|
|
|
|
}
|
|
|
|
/**
|
|
* 修改密码
|
|
*/
|
|
@PutMapping("/password")
|
|
public R<Void> changePassword(@RequestBody @Validated UpdatePasswordDTO dto) {
|
|
Long userId = UserContext.getUserId();
|
|
userService.changePassword(userId, dto.getOldPassword(), dto.getNewPassword());
|
|
return R.ok();
|
|
|
|
}
|
|
|
|
/**
|
|
* 我的积分流水分页
|
|
*/
|
|
@PostMapping("/points/flow")
|
|
public R<Page<PointsFlow>> pointsFlow(@RequestBody PointsFlowQueryDTO query) {
|
|
Long userId = UserContext.getUserId();
|
|
var page = pointsService.getFlowPage(userId, query.getType(), query.getPageNum(), query.getPageSize());
|
|
return R.ok(page);
|
|
}
|
|
|
|
/**
|
|
* 已发红包分页
|
|
*/
|
|
@PostMapping("/rp/sent")
|
|
public R<Page<RedPacket>> sentRp(@RequestBody PageParam query) {
|
|
Long userId = UserContext.getUserId();
|
|
var page = redPacketService.getRecords(userId, query.getPageNum(), query.getPageSize());
|
|
return R.ok(page);
|
|
}
|
|
|
|
/**
|
|
* 已收红包分页
|
|
*/
|
|
@PostMapping("/rp/received")
|
|
public R<Page<RedPacketRecv>> receivedRp(@RequestBody PageParam query) {
|
|
Long userId = UserContext.getUserId();
|
|
var page = redPacketService.getReceivedRecords(userId, query.getPageNum(), query.getPageSize());
|
|
return R.ok(page);
|
|
}
|
|
|
|
/**
|
|
* 退出登录
|
|
*/
|
|
@PostMapping("/logout")
|
|
public R<Void> logout() {
|
|
// 可以在这里清理Redis中的token
|
|
return R.ok();
|
|
}
|
|
}
|