我的活动,最常访问关注,修改密码

This commit is contained in:
Lqc 2025-10-20 20:58:06 +08:00
parent a76e5306cf
commit 5ea2d62f7f
4 changed files with 199 additions and 70 deletions

View File

@ -1,9 +1,6 @@
package org.jeecg.modules.aiol.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
@ -13,8 +10,11 @@ import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.aiol.entity.AiolActivity;
import org.jeecg.modules.aiol.entity.AiolActivitySignup;
import org.jeecg.modules.aiol.service.IAiolActivityService;
import org.jeecg.modules.aiol.service.IAiolActivitySignupService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -22,6 +22,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.impl.SysUserServiceImpl;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -51,6 +53,10 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class AiolActivitySignupController extends JeecgController<AiolActivitySignup, IAiolActivitySignupService> {
@Autowired
private IAiolActivitySignupService aiolActivitySignupService;
@Autowired
private SysUserServiceImpl sysUserService;
@Autowired
private IAiolActivityService aiolActivityService;
/**
* 分页列表查询
@ -179,4 +185,37 @@ public class AiolActivitySignupController extends JeecgController<AiolActivitySi
return super.importExcel(request, response, AiolActivitySignup.class);
}
//查看我报名的活动
@GetMapping(value = "/queryMyActivity")
@Operation(summary="我的活动查询")
public Result<List<AiolActivity>> queryMyActivit(HttpServletRequest req) {
try {
// 1. 从JWT中获取当前用户信息
String username = JwtUtil.getUserNameByToken(req);
if (username == null || username.trim().isEmpty()) {
return Result.error(401, "用户未登录或token无效");
}
SysUser currentUser = sysUserService.getUserByName(username);
if (currentUser == null) {
return Result.error(404, "用户不存在");
}
// 2. 根据当前用户ID查询报名信息
QueryWrapper<AiolActivitySignup> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", currentUser.getId());
List<AiolActivitySignup> list = aiolActivitySignupService.list(queryWrapper);
// 3. 根据报名信息中的活动ID查询活动信息
List<AiolActivity> activityList = new ArrayList<>();
List<String> activityIds = list.stream()
.map(AiolActivitySignup::getActivityId)
.collect(Collectors.toList());
if (!activityIds.isEmpty()) {
activityList = aiolActivityService.listByIds(activityIds);
}
return Result.OK(activityList);
}catch (Exception e){
log.error("查询失败: {}", e.getMessage(), e);
}
return Result.OK();
}
}

View File

@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.util.JwtUtil;
@ -449,4 +450,46 @@ public class AiolUserController {
return Result.error(500, "编辑个人信息失败: " + e.getMessage());
}
}
//密码修改
@AutoLog(value = "用户信息-修改密码")
@Operation(summary="用户信息-修改密码")
@PostMapping(value = "/updatePassword")
public Result<?> updatePassword(@RequestBody Map<String, String> params, HttpServletRequest request) {
try {
// 1. 从JWT中获取当前用户信息
String username = JwtUtil.getUserNameByToken(request);
if (username == null || username.trim().isEmpty()) {
return Result.error(401, "用户未登录或token无效");
}
SysUser currentUser = sysUserService.getUserByName(username);
if (currentUser == null) {
return Result.error(404, "用户不存在");
}
String oldPassword = params.get("oldPassword");
String newPassword = params.get("newPassword");
String id = currentUser.getId();
//判断密码是否一致
String oldPasswordEncrypt = PasswordUtil.encrypt(username, oldPassword, currentUser.getSalt());
String passwordEncrypt = currentUser.getPassword();
if (newPassword == null || newPassword.trim().isEmpty()) {
return Result.error(400, "新密码不允许为空");
}
if (newPassword.equals(oldPassword)) {
return Result.error(400, "新密码不能与旧密码相同");
}
if (!oldPasswordEncrypt.equals(passwordEncrypt)) {
return Result.error(400, "旧密码不正确");
}
//更新密码
String password = PasswordUtil.encrypt(username, newPassword, currentUser.getSalt());
currentUser.setPassword(password);
sysUserService.updateById(currentUser);
log.info("用户密码修改成功: userId={}, username={}", id, username);
return Result.OK("密码修改成功");
}catch (Exception e){
log.error("密码修改失败: {}", e.getMessage(), e);
return Result.error(500, "密码修改失败: " + e.getMessage());
}
}
}

View File

@ -320,6 +320,47 @@ public class AiolUserFollowController extends JeecgController<AiolUserFollow, IA
return Result.OK();
}
//查询最常访问
@AutoLog(value = "关注关系-查询最常访问")
@Operation(summary = "查询最常访问", description = "当前登录用户最常访问的用户")
@GetMapping(value = "/frequentVisitList")
public Result<List<?>> frequentVisitList(HttpServletRequest req) {
try {
// 1. 获取当前登录用户信息
String token = req.getHeader(CommonConstant.X_ACCESS_TOKEN);
String username = JwtUtil.getUsername(token);
LoginUser sysUser = sysBaseApi.getUserByName(username);
if (sysUser == null) {
return Result.error("用户未登录或登录已过期");
}
// 2. 查询最常访问列表
String frequentVisitKey = "user:frequent:visit:" + sysUser.getId();
Set<Object> objects = redisTemplate.opsForZSet().range(frequentVisitKey, 0, -1);
Set<String> followedIds = objects.stream()
.map(obj -> String.valueOf(obj))
.collect(Collectors.toSet());
if (followedIds != null && !followedIds.isEmpty()) {
// 根据被关注者的ID列表查询用户信息
List<SysUser> followedUsers = sysUserService.listByIds(followedIds);
if (followedUsers != null && !followedUsers.isEmpty()) {
List<UserFollow> userFollows = new ArrayList<>();
for (SysUser followedUser : followedUsers) {
UserFollow userFollow = new UserFollow();
userFollow.setId(followedUser.getId());
userFollow.setIsFollow(true);
userFollow.setRealName(followedUser.getRealname());
userFollow.setAvatar(followedUser.getAvatar());
userFollows.add(userFollow);
}
return Result.OK(userFollows);
}
}
}catch (Exception e){
return Result.error(e.getMessage());
}
return Result.OK();
}
/**
* 取消关注用户
*

View File

@ -77,4 +77,10 @@ public class AiolActivitySignup implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新日期")
private java.util.Date updateTime;
/**活动id*/
@Schema(description = "活动id")
private java.lang.String activityId;
/**用户id*/
@Schema(description = "用户id")
private java.lang.String userId;
}