zhushi #9

Merged
pfvaqhn2p merged 3 commits from branch-wangjy into develop_idea 1 year ago

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />//
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>

@ -4,6 +4,7 @@ import com.rabbiter.association.service.ActiveLogsService;
import com.rabbiter.association.service.UsersService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@ -23,7 +24,8 @@ import java.util.List;
import java.util.Map;
/**
*
*
*
*/
@Controller
@RequestMapping("/activeLogs")
@ -32,119 +34,86 @@ public class ActiveLogsController extends BaseController {
protected static final Logger Log = LoggerFactory.getLogger(ActiveLogsController.class);
@Autowired
private CacheHandle cacheHandle; // 注入缓存处理类
private CacheHandle cacheHandle;
@Autowired
private UsersService usersService; // 注入用户服务类
private UsersService usersService;
@Autowired
private ActiveLogsService activeLogsService; // 注入报名记录服务类
private ActiveLogsService activeLogsService;
/**
*
* <p></p>
*/
@RequestMapping("")
public String index() {
return "pages/ActiveLogs"; // 返回报名记录页面的视图名称
return "pages/ActiveLogs";
}
/**
*
* <p>HTTP GETID</p>
*
* @param id ID
* @return
*/
@GetMapping("/info")
@ResponseBody
public R getInfo(String id) {
Log.info("查找指定报名记录ID{}", id); // 记录日志
ActiveLogs activeLogs = activeLogsService.getOne(id); // 通过ID获取报名记录
Log.info("查找指定报名记录ID{}", id);
return R.successData(activeLogs); // 返回成功响应,包含报名记录信息
ActiveLogs activeLogs = activeLogsService.getOne(id);
return R.successData(activeLogs);
}
/**
*
* <p>HTTP GETID</p>
*
* @param activeId ID
* @return
*/
@GetMapping("/list")
@ResponseBody
public R getList(String activeId) {
Log.info("获取指定活动的报名记录活动ID{}", activeId); // 记录日志
List<Map<String, Object>> list = activeLogsService.getListByActiveId(activeId); // 通过活动ID获取报名记录列表
Log.info("获取指定活动的报名记录活动ID{}", activeId);
List<Map<String, Object>> list = activeLogsService.getListByActiveId(activeId);
return R.successData(list); // 返回成功响应,包含报名记录列表
return R.successData(list);
}
/**
*
* <p>HTTP POST</p>
*
* @param token token
* @param activeLogs
* @return
*/
@PostMapping("/add")
@ResponseBody
public R addInfo(String token, ActiveLogs activeLogs) {
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 通过token获取用户信息
if (activeLogsService.isActive(activeLogs.getActiveId(), user.getId())) { // 检查用户是否已参与活动
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
activeLogs.setId(IDUtils.makeIDByCurrent()); // 生成报名记录ID
activeLogs.setUserId(user.getId()); // 设置报名用户ID
activeLogs.setCreateTime(DateUtils.getNowDate()); // 设置报名时间
if(activeLogsService.isActive(activeLogs.getActiveId(), user.getId())){
Log.info("添加报名记录,传入参数:{}", activeLogs); // 记录日志
activeLogs.setId(IDUtils.makeIDByCurrent());
activeLogs.setUserId(user.getId());
activeLogs.setCreateTime(DateUtils.getNowDate());
activeLogsService.add(activeLogs); // 添加报名记录
Log.info("添加报名记录,传入参数:{}", activeLogs);
return R.success(); // 返回成功响应
} else {
return R.warn("该活动您已参与,请勿重复报名"); // 返回警告响应,提示用户已参与活动
activeLogsService.add(activeLogs);
return R.success();
}else{
return R.warn("该活动您已参与,请勿重复报名");
}
}
/**
*
* <p>HTTP POST</p>
*
* @param activeLogs
* @return
*/
@PostMapping("/upd")
@ResponseBody
public R updInfo(ActiveLogs activeLogs) {
Log.info("修改报名记录,传入参数:{}", activeLogs); // 记录日志
activeLogsService.update(activeLogs); // 更新报名记录
Log.info("修改报名记录,传入参数:{}", activeLogs);
return R.success(); // 返回成功响应
activeLogsService.update(activeLogs);
return R.success();
}
/**
*
* <p>HTTP POSTID</p>
*
* @param id ID
* @return
*/
@PostMapping("/del")
@ResponseBody
public R delInfo(String id) {
Log.info("删除报名记录, ID:{}", id); // 记录日志
ActiveLogs activeLogs = activeLogsService.getOne(id); // 通过ID获取报名记录
Log.info("删除报名记录, ID:{}", id);
ActiveLogs activeLogs = activeLogsService.getOne(id);
activeLogsService.delete(activeLogs); // 删除报名记录
activeLogsService.delete(activeLogs);
return R.success(); // 返回成功响应
return R.success();
}
}

@ -1,26 +1,18 @@
package com.rabbiter.association.controller;
//声明该Java类所在的包名为com.rabbiter.association.controller。
import com.rabbiter.association.service.UsersService;
//导入UsersService类用于处理用户相关的业务逻辑。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//导入slf4j日志框架的Logger和LoggerFactory用于记录日志。
import org.springframework.beans.factory.annotation.Autowired;
//导入Autowired注解用于自动装配依赖。
import org.springframework.stereotype.Controller;
//导入Controller注解表明该类是一个Spring MVC中的控制器。
import org.springframework.util.ObjectUtils;
//用于对象工具操作
import org.springframework.web.bind.annotation.GetMapping;
//等用于处理Web请求映射
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.rabbiter.association.entity.Users;
//等导入实体类和工具类。
import com.rabbiter.association.handle.CacheHandle;
import com.rabbiter.association.utils.IDUtils;
import com.rabbiter.association.msg.R;
@ -29,32 +21,33 @@ import com.rabbiter.association.msg.PageData;
import com.rabbiter.association.entity.Activities;
import com.rabbiter.association.service.ActivitiesService;
//系统请求响应控制器
//活动信息
@Controller//注解将该类标记为Spring MVC的控制器。
@RequestMapping("/activities")//指定了该控制器处理的基本URL路径为/activities。
/**
*
*
*/
@Controller
@RequestMapping("/activities")
public class ActivitiesController extends BaseController {
//定义了名为ActivitiesController的类它继承自BaseController类。
protected static final Logger Log = LoggerFactory.getLogger(ActivitiesController.class);
//创建一个Logger对象用于记录ActivitiesController类中的日志信息。
@Autowired
private CacheHandle cacheHandle;
//使用Autowired注解自动注入CacheHandle类型的依赖用于处理缓存相关操作。
@Autowired
private UsersService usersService;
//自动注入UsersService用于用户相关业务。
@Autowired
private ActivitiesService activitiesService;
//自动注入ActivitiesService用于活动相关业务。
@RequestMapping("")
public String index() {
return "pages/Activities";
}
//当访问根路径(相对于/activities该方法返回名为"pages/Activities"的视图名称。
@GetMapping("/info")
//@GetMapping表示处理HTTP GET请求/info是相对于/activities的路径。
@ResponseBody
public R getInfo(String id) {
@ -64,12 +57,12 @@ public class ActivitiesController extends BaseController {
return R.successData(activities);
}
//该方法接收一个id参数通过activitiesService.getOne(id)获取指定id的活动信息然后使用R.successData(activities)返回包含活动信息的成功响应。
@GetMapping("/page")//处理/page路径的GET请求。
@GetMapping("/page")
@ResponseBody
public R getPageInfos(Long pageIndex, Long pageSize,
String token, String teamName, String activeName) {
//首先通过usersService.getOne(cacheHandle.getUserInfoCache(token))获取用户信息,如果用户不存在则返回登录信息不存在的错误。
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
if(ObjectUtils.isEmpty(user)) {
return R.error("登录信息不存在,请重新登录");
@ -94,8 +87,8 @@ public class ActivitiesController extends BaseController {
return R.successData(page);
}
}
//根据用户类型user.getType()不同分别调用activitiesService.getPageAll普通情况或activitiesService.getPageByUserId特定用户类型来进行分页查询活动信息最后返回包含分页数据的成功响应。
@PostMapping("/add")//处理/add路径的POST请求。
@PostMapping("/add")
@ResponseBody
public R addInfo(Activities activities) {
@ -107,8 +100,8 @@ public class ActivitiesController extends BaseController {
return R.success();
}
//为传入的Activities对象设置id通过IDUtils.makeIDByCurrent()然后使用activitiesService.add(activities)添加活动信息,最后返回成功响应。
@PostMapping("/upd")//处理/upd路径的POST请求。
@PostMapping("/upd")
@ResponseBody
public R updInfo(Activities activities) {
@ -118,8 +111,8 @@ public class ActivitiesController extends BaseController {
return R.success();
}
//通过activitiesService.update(activities)修改活动信息,然后返回成功响应。
@PostMapping("/del")//处理/del路径的POST请求。
@PostMapping("/del")
@ResponseBody
public R delInfo(String id) {
@ -131,5 +124,4 @@ public class ActivitiesController extends BaseController {
return R.success();
}
}
//先通过activitiesService.getOne(id)获取要删除的活动对象,然后使用`activitiesService.delete
}

@ -4,6 +4,7 @@ import com.rabbiter.association.service.ApplyLogsService;
import com.rabbiter.association.service.UsersService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.ObjectUtils;
@ -22,7 +23,8 @@ import com.rabbiter.association.msg.PageData;
import com.rabbiter.association.entity.ApplyLogs;
/**
*
*
*
*/
@Controller
@RequestMapping("/applyLogs")
@ -31,51 +33,31 @@ public class ApplyLogsController extends BaseController {
protected static final Logger Log = LoggerFactory.getLogger(ApplyLogsController.class);
@Autowired
private CacheHandle cacheHandle; // 注入缓存处理类
private CacheHandle cacheHandle;
@Autowired
private UsersService usersService; // 注入用户服务类
private UsersService usersService;
@Autowired
private ApplyLogsService applyLogsService; // 注入申请记录服务类
private ApplyLogsService applyLogsService;
/**
*
* <p></p>
*/
@RequestMapping("")
public String index() {
return "pages/ApplyLogs"; // 返回申请记录页面的视图名称
return "pages/ApplyLogs";
}
/**
*
* <p>HTTP GETID</p>
*
* @param id ID
* @return
*/
@GetMapping("/info")
@ResponseBody
public R getInfo(String id) {
Log.info("查找指定申请记录ID{}", id); // 记录日志
ApplyLogs applyLogs = applyLogsService.getOne(id); // 通过ID获取申请记录
Log.info("查找指定申请记录ID{}", id);
ApplyLogs applyLogs = applyLogsService.getOne(id);
return R.successData(applyLogs); // 返回成功响应,包含申请记录信息
return R.successData(applyLogs);
}
/**
*
* <p></p>
*
* @param pageIndex
* @param pageSize
* @param token token
* @param teamName
* @param userName
* @return
*/
@GetMapping("/page")
@ResponseBody
public R getPageInfos(Long pageIndex, Long pageSize,
@ -117,68 +99,50 @@ public class ApplyLogsController extends BaseController {
}
}
/**
*
* <p>HTTP POST</p>
*
* @param token token
* @param applyLogs
* @return
*/
@PostMapping("/add")
@ResponseBody
public R addInfo(String token, ApplyLogs applyLogs) {
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token)); // 通过token获取用户信息
if(applyLogsService.isApply(user.getId(), applyLogs.getTeamId())) { // 检查用户是否已提交申请
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
applyLogs.setId(IDUtils.makeIDByCurrent()); // 生成申请记录ID
applyLogs.setUserId(user.getId()); // 设置申请用户ID
applyLogs.setCreateTime(DateUtils.getNowDate()); // 设置申请时间
if(applyLogsService.isApply(user.getId(), applyLogs.getTeamId())){
Log.info("添加申请记录,传入参数:{}", applyLogs); // 记录日志
applyLogs.setId(IDUtils.makeIDByCurrent());
applyLogs.setUserId(user.getId());
applyLogs.setCreateTime(DateUtils.getNowDate());
applyLogsService.add(applyLogs); // 添加申请记录
Log.info("添加申请记录,传入参数:{}", applyLogs);
return R.success(); // 返回成功响应
} else {
return R.warn("申请审核中,请耐心等待"); // 返回警告响应,提示申请审核中
applyLogsService.add(applyLogs);
return R.success();
}else{
return R.warn("申请审核中,请耐心等待");
}
}
/**
*
* <p>HTTP POST</p>
*
* @param applyLogs
* @return
*/
@PostMapping("/upd")
@ResponseBody
public R updInfo(ApplyLogs applyLogs) {
Log.info("修改申请记录,传入参数:{}", applyLogs); // 记录日志
applyLogsService.update(applyLogs); // 更新申请记录
Log.info("修改申请记录,传入参数:{}", applyLogs);
return R.success(); // 返回成功响应
applyLogsService.update(applyLogs);
return R.success();
}
/**
*
* <p>HTTP POSTID</p>
*
* @param id ID
* @return
*/
@PostMapping("/del")
@ResponseBody
public R delInfo(String id) {
Log.info("删除申请记录, ID:{}", id); // 记录日志
ApplyLogs applyLogs = applyLogsService.getOne(id); // 通过ID获取申请记录
Log.info("删除申请记录, ID:{}", id);
ApplyLogs applyLogs = applyLogsService.getOne(id);
applyLogsService.delete(applyLogs); // 删除申请记录
applyLogsService.delete(applyLogs);
return R.success(); // 返回成功响应
return R.success();
}
}

@ -7,53 +7,39 @@ import com.rabbiter.association.msg.R;
import javax.servlet.http.HttpSession;
/**
*
*
*
*
*/
public abstract class BaseController {
/**
*
*
*/
protected static final String SESSION_USER = "user";
/**
*
*
*
* @param session
* @return null
*
* @param session
* @return
*/
protected Object getSessionUser(HttpSession session) {
return session.getAttribute(SESSION_USER);
}
/**
*
*
*
* @param session
* @param user
*
* @param session
* @param user
*/
protected void setSessionUser(HttpSession session, Object user) {
session.setAttribute(SESSION_USER, user);
}
/**
*
* @ExceptionHandler
* @ResponseBody HTTP
*
* @param e
* @return R
*/
@ExceptionHandler(Exception.class)
// @ExceptionHandler(Exception.class)
@ResponseBody
public R exception(Exception e) {
e.printStackTrace(); // 打印异常堆栈信息,方便调试。
// 返回一个错误信息的 R 对象R 是一个自定义的响应消息类。
e.printStackTrace();
return R.error();
}
}
}

@ -1,206 +1,149 @@
package com.rabbiter.association.controller;
import com.rabbiter.association.service.UsersService;
// 导入用户服务类
import org.slf4j.Logger;
// 导入日志记录器
import org.slf4j.LoggerFactory;
// 导入日志工厂
import org.springframework.beans.factory.annotation.Autowired;
// 导入自动注入注解
import org.springframework.stereotype.Controller;
// 导入控制器注解
import org.springframework.util.ObjectUtils;
// 导入对象工具类
import org.springframework.web.bind.annotation.*;
// 导入Spring Web注解
import com.rabbiter.association.entity.Notices;
// 导入通知实体类
import com.rabbiter.association.handle.CacheHandle;
// 导入缓存处理类
import com.rabbiter.association.msg.R;
// 导入响应消息类
import com.rabbiter.association.entity.Users;
// 导入用户实体类
import com.rabbiter.association.service.NoticesService;
// 导入通知服务类
import com.rabbiter.association.utils.IDUtils;
// 导入ID工具类
import javax.servlet.http.HttpSession;
// 导入HTTP会话类
import java.util.List;
// 导入列表类
// 此代码实现了一个登录功能
@Controller // 声明这是一个控制器类
@RequestMapping("/") // 定义请求映射的根路径
public class IndexController extends BaseController { // 继承自基础控制器
@Controller
@RequestMapping("/")
public class IndexController extends BaseController {
private static final Logger Log = LoggerFactory.getLogger(IndexController.class);
// 创建日志记录器
@Autowired // 自动注入用户服务
@Autowired
private UsersService usersService;
@Autowired // 自动注入缓存处理类
@Autowired
private CacheHandle cacheHandle;
@Autowired // 自动注入通知服务
@Autowired
private NoticesService noticesService;
// 获取通知列表的GET请求
@GetMapping("/sys/notices")// 映射GET请求到/sys/notices
@ResponseBody // 返回JSON格式的响应
@GetMapping("/sys/notices")
@ResponseBody
public R getNoticeList(String token){
// 方法接收token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(ObjectUtils.isEmpty(user)) {
// 检查用户是否为空
return R.error("登录信息不存在,请重新登录"); // 返回错误信息
return R.error("登录信息不存在,请重新登录");
}
// 根据用户类型获取不同的通知列表
if(user.getType() == 0){
// 管理员类型
List<Notices> list = noticesService.getSysNotices();
// 获取系统通知
return R.successData(list);
// 返回成功响应和通知列表
}else if(user.getType() == 1){
// 管理员类型
List<Notices> list = noticesService.getManNotices(user.getId());
// 获取管理员通知
return R.successData(list);
// 返回成功响应和通知列表
}else{
// 普通用户类型
List<Notices> list = noticesService.getMemNotices(user.getId());
// 获取普通用户通知
return R.successData(list);
// 返回成功响应和通知列表
}
}
// 用户登录的POST请求
@PostMapping("/login") // 映射POST请求到/login
@ResponseBody // 返回JSON格式的响应
@PostMapping("/login")
@ResponseBody
public R login(String userName, String passWord, HttpSession session){
// 方法接收用户名、密码和会话
Log.info("用户登录,用户名:{} 用户密码:{}", userName, passWord);
// 记录登录信息
Users user = usersService.getUserByUserName(userName);
// 根据用户名获取用户信息
if(user == null) {
// 如果用户不存在
return R.error("输入的用户名不存在");
// 返回错误信息
}else { // 用户存在
}else {
if(passWord.equals(user.getPassWord().trim())) {
// 检查密码是否匹配
String token = IDUtils.makeIDByUUID();
// 生成唯一的token
cacheHandle.addUserCache(token, user.getId());
// 将用户信息存入缓存
return R.success("登录成功", token);
// 返回成功响应和token
}else { // 密码不匹配
}else {
return R.error("输入的密码错误");
// 返回错误信息
}
}
}
// 用户退出的请求
@RequestMapping("/exit") // 映射请求到/exit
@ResponseBody // 返回JSON格式的响应
@RequestMapping("/exit")
@ResponseBody
public R exit(String token) {
// 方法接收token参数
Log.info("用户退出系统并移除登录信息");
// 记录退出信息
cacheHandle.removeUserCache(token);
// 从缓存中移除用户信息
return R.success(); // 返回成功响应
return R.success();
}
// 获取用户信息的GET请求
@GetMapping("/info") // 映射GET请求到/info
@ResponseBody // 返回JSON格式的响应
@GetMapping("/info")
@ResponseBody
public R info(String token){
// 方法接收token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
return R.successData(user);
// 返回成功响应和用户信息
}
// 修改用户信息的POST请求
@PostMapping("/info") // 映射POST请求到/info
@ResponseBody // 返回JSON格式的响应
@PostMapping("/info")
@ResponseBody
public R info(Users user){
// 方法接收用户对象
Log.info("修改用户信息,{}", user);
// 记录用户信息修改
usersService.update(user);
// 更新用户信息
return R.success();
// 返回成功响应
}
// 检查密码的请求
@RequestMapping("/checkPwd") // 映射请求到/checkPwd
@ResponseBody // 返回JSON格式的响应
@RequestMapping("/checkPwd")
@ResponseBody
public R checkPwd(String oldPwd, String token) {
// 方法接收旧密码和token参数
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
if(oldPwd.equals(user.getPassWord())) {
// 检查旧密码是否匹配
return R.success();
// 返回成功响应
}else {
// 密码不匹配
return R.warn("原始密码和输入密码不一致");
// 返回警告信息
}
}
// 修改用户密码的POST请求
@PostMapping("/pwd") // 映射POST请求到/pwd
@ResponseBody // 返回JSON格式的响应
@PostMapping("/pwd")
@ResponseBody
public R pwd(String token, String password) {
// 方法接收token和新密码
Log.info("修改用户密码,{}", password);
// 记录密码修改信息
Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));
// 从缓存中获取用户信息
user.setPassWord(password);
// 设置新密码
usersService.update(user);
// 更新用户信息
return R.success();
// 返回成功响应
}
}

@ -1,18 +1,19 @@
package com.rabbiter.association.dao;
// 引入Spring框架的Repository注解标识这是一个数据访问对象DAO
import org.springframework.stereotype.Repository;
// 引入MyBatis Plus的BaseMapper接口提供基础的CRUD操作
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 引入活动日志实体类
import com.rabbiter.association.entity.ActiveLogs;
/**
* 访
* <p>
* MyBatis Plus BaseMapper CRUD
* BaseMapperActiveLogsDao 使 MyBatis Plus SQL
* </p>
* MyBatis PlusBaseMapperCRUD
*/
// 使用@Repository注解标识该接口为Spring的一个Repository并给其指定一个唯一的bean名称
@Repository("activeLogsDao")
public interface ActiveLogsDao extends BaseMapper<ActiveLogs> {
}
// 该接口继承BaseMapper后已经包含了基本的CRUD操作无需额外定义方法
// 可以根据需要添加自定义的数据库操作方法
}

@ -1,36 +1,37 @@
package com.rabbiter.association.dao;
// 引入MyBatis Plus的分页插件
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// 引入MyBatis的注解用于动态SQL
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
// 引入Spring的注解标识这是一个Repository
import org.springframework.stereotype.Repository;
// 引入MyBatis Plus的基础Mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 引入应用日志实体类
import com.rabbiter.association.entity.ApplyLogs;
// 引入Java的Map接口用于存储键值对
import java.util.Map;
/**
* 访
* <p>
* MyBatis Plus BaseMapper CRUD
* BaseMapperApplyLogsDao 使 MyBatis Plus SQL
* </p>
* MyBatis PlusBaseMapperCRUD
*/
@Repository("applyLogsDao")
@Repository("applyLogsDao") // Spring容器中的唯一标识
public interface ApplyLogsDao extends BaseMapper<ApplyLogs> {
/**
*
* 使 MyBatis SQL
* 使MyBatisSQL
*
* @param page
* @param userId ID
* @param teamName
* @param userName
* @return Map
* @param page
* @param userId ID
* @param teamName
* @param userName
* @return Map
*/
@Select("<script>" +
"SELECT " +
@ -57,16 +58,15 @@ public interface ApplyLogsDao extends BaseMapper<ApplyLogs> {
@Param("teamName") String teamName,
@Param("userName") String userName);
/**
*
* qryPageInfo ID
* qryPageInfoID
*
* @param page
* @param userId ID
* @param teamName
* @param userName
* @return Map
* @param page
* @param userId ID
* @param teamName
* @param userName
* @return Map
*/
@Select("<script>" +
"SELECT " +

@ -1,110 +1,112 @@
package com.rabbiter.association.entity;
// 导入MyBatis Plus注解用于映射表和字段
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
// 导入Java.io.Serializable接口用于序列化
import java.io.Serializable;
/**
*
* <p>使MyBatis Plus</p>
*
* 使MyBatis Plus
*/
@TableName(value = "active_logs")
@TableName(value = "active_logs") // 指定实体类映射的数据库表名
public class ActiveLogs implements Serializable {
private static final long serialVersionUID = 1L; // 序列化ID用于版本控制
private static final long serialVersionUID = 1L; // 用于序列化机制的版本控制
/**
* ID
*
*/
@TableId(value = "id")
@TableId(value = "id") // 指定实体类属性映射的表字段
private String id;
/**
* create_time
* create_time
*/
@TableField(value = "create_time")
@TableField(value = "create_time") // 指定实体类属性映射的表字段
private String createTime;
/**
* active_id
* active_id
*/
@TableField(value = "active_id")
@TableField(value = "active_id") // 指定实体类属性映射的表字段
private String activeId;
/**
* user_id
* user_id
*/
@TableField(value = "user_id")
@TableField(value = "user_id") // 指定实体类属性映射的表字段
private String userId;
/**
* ID
* @return ID
*
* @return ID
*/
public String getId() {
return id;
}
/**
* ID
* @param id ID
*
* @param id ID
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
*
* @return
*/
public String getCreateTime() {
return createTime;
}
/**
*
* @param createTime
*
* @param createTime
*/
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
/**
*
* @return
*
* @return ID
*/
public String getActiveId() {
return activeId;
}
/**
*
* @param activeId
*
* @param activeId ID
*/
public void setActiveId(String activeId) {
this.activeId = activeId;
}
/**
* ID
* @return ID
*
* @return ID
*/
public String getUserId() {
return userId;
}
/**
* ID
* @param userId ID
*
* @param userId ID
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* toString
* @return
* 便
* @return
*/
@Override
public String toString() {

@ -1,136 +1,138 @@
package com.rabbiter.association.entity;
// 导入MyBatis Plus注解用于映射数据库表和字段
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
// 导入Serializable接口用于确保对象可以被序列化
import java.io.Serializable;
/**
*
* <p>使MyBatis Plus</p>
*
* MyBatis Plus
*/
@TableName(value = "apply_logs")
@TableName(value = "apply_logs") // 指定实体类映射的数据库表名
public class ApplyLogs implements Serializable {
private static final long serialVersionUID = 1L; // 序列化ID,用于版本控制
private static final long serialVersionUID = 1L; // 用于序列化的版本UID
/**
* ID
*
*/
@TableId(value = "id")
@TableId(value = "id") // 指定实体类属性映射的表字段
private String id;
/**
* status
* <p>0-1-2-</p>
* status
* 0-1-2-
*/
@TableField(value = "status")
private Integer status;
/**
* create_time
* <p></p>
* create_time
*
*/
@TableField(value = "create_time")
private String createTime;
/**
* team_id
* <p>ID</p>
* IDteam_id
*
*/
@TableField(value = "team_id")
private String teamId;
/**
* user_id
* <p>ID</p>
* IDuser_id
*
*/
@TableField(value = "user_id")
private String userId;
/**
* ID
* @return ID
*
* @return ID
*/
public String getId() {
return id;
}
/**
* ID
* @param id ID
*
* @param id ID
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
*
* @return
*/
public Integer getStatus() {
return status;
}
/**
*
* @param status
*
* @param status
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
*
* @return
*
* @return
*/
public String getCreateTime() {
return createTime;
}
/**
*
* @param createTime
*
* @param createTime
*/
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
/**
* ID
* @return ID
* ID
* @return ID
*/
public String getTeamId() {
return teamId;
}
/**
* ID
* @param teamId ID
* ID
* @param teamId ID
*/
public void setTeamId(String teamId) {
this.teamId = teamId;
}
/**
* ID
* @return ID
* ID
* @return ID
*/
public String getUserId() {
return userId;
}
/**
* ID
* @param userId ID
* ID
* @param userId ID
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* toString
* @return
* 便
* @return
*/
@Override
public String toString() {

@ -0,0 +1,129 @@
package com.rabbiter.association.service;
// 导入MyBatis Plus的QueryWrapper用于构建查询条件
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
// 导入服务接口
// 导入Spring的注解用于声明服务和自动注入
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
// 导入Spring的注解用于声明事务
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
// 导入DAO接口
import com.rabbiter.association.dao.ActivitiesDao;
import com.rabbiter.association.dao.UsersDao;
import com.rabbiter.association.dao.ActiveLogsDao;
// 导入实体类
import com.rabbiter.association.entity.Activities;
import com.rabbiter.association.entity.Users;
import com.rabbiter.association.entity.ActiveLogs;
// 导入Java的集合类
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* ActiveLogsService
*/
@Service("activeLogsService") // 声明该类为activeLogsService的实现
public class ActiveLogsServiceImpl implements ActiveLogsService {
// 自动注入UsersDao
@Autowired
private UsersDao usersDao;
// 自动注入ActiveLogsDao
@Autowired
private ActiveLogsDao activeLogsDao;
// 自动注入ActivitiesDao
@Autowired
private ActivitiesDao activitiesDao;
/**
*
*
*/
@Override
@Transactional // 声明事务,确保操作的原子性
public void add(ActiveLogs activeLogs) {
Activities activitie = activitiesDao.selectById(activeLogs.getActiveId()); // 根据活动ID查询活动
activitie.setTotal(activitie.getTotal() + 1); // 增加活动报名人数
activitiesDao.updateById(activitie); // 更新活动信息
activeLogsDao.insert(activeLogs); // 插入报名记录
}
/**
*
*/
@Override
@Transactional // 声明事务
public void update(ActiveLogs activeLogs) {
activeLogsDao.updateById(activeLogs); // 更新报名记录
}
/**
*
*/
@Override
@Transactional // 声明事务
public void delete(ActiveLogs activeLogs) {
activeLogsDao.deleteById(activeLogs); // 根据ID删除报名记录
}
/**
*
* truefalse
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public Boolean isActive(String activeId, String userId){
QueryWrapper<ActiveLogs> qw = new QueryWrapper<>(); // 创建查询条件构造器
qw.eq("active_id", activeId).eq("user_id", userId); // 添加查询条件
return activeLogsDao.selectCount(qw) <= 0; // 查询符合条件的记录数如果为0则未报名
}
/**
* ID
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public ActiveLogs getOne(String id) {
return activeLogsDao.selectById(id); // 根据ID查询报名记录
}
/**
* ID
* Map
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public List<Map<String, Object>> getListByActiveId(String activeId){
List<Map<String, Object>> resl = new ArrayList<>(); // 存储结果的列表
QueryWrapper<ActiveLogs> qw = new QueryWrapper<>(); // 创建查询条件构造器
qw.eq("active_id", activeId).orderByDesc("create_time"); // 添加查询条件并排序
List<ActiveLogs> activeLogs = activeLogsDao.selectList(qw); // 查询报名记录列表
for (ActiveLogs activeLog : activeLogs) {
Map<String, Object> temp = new HashMap<>(); // 存储单个报名记录的详细信息
temp.put("id", activeLog.getId());
temp.put("createTime", activeLog.getCreateTime());
temp.put("activeId", activeLog.getActiveId());
Users user = usersDao.selectById(activeLog.getUserId()); // 根据用户ID查询用户信息
temp.put("userId", activeLog.getUserId());
temp.put("userName", user.getName());
temp.put("userGender", user.getGender());
temp.put("userPhone", user.getPhone());
resl.add(temp); // 将单个报名记录的详细信息添加到结果列表
}
return resl; // 返回结果列表
}
}

@ -1,121 +1,144 @@
package com.rabbiter.association.service.impl;
// 导入MyBatis Plus的QueryWrapper用于构建查询条件
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
// 导入MyBatis Plus的分页插件
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// 导入服务接口
// 导入Spring的注解用于声明服务和自动注入
import com.rabbiter.association.service.ApplyLogsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
// 导入Spring的注解用于声明事务
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
// 导入DAO接口
import com.rabbiter.association.dao.MembersDao;
import com.rabbiter.association.dao.TeamsDao;
import com.rabbiter.association.dao.ApplyLogsDao;
// 导入实体类
import com.rabbiter.association.entity.Members;
import com.rabbiter.association.entity.Teams;
import com.rabbiter.association.msg.PageData;
import com.rabbiter.association.entity.ApplyLogs;
import com.rabbiter.association.dao.ApplyLogsDao;
// 导入自定义的分页数据类
import com.rabbiter.association.msg.PageData;
// 导入工具类
import com.rabbiter.association.utils.DateUtils;
import com.rabbiter.association.utils.IDUtils;
import java.util.Map;
@Service("applyLogsService")
/**
* ApplyLogsService
*/
@Service("applyLogsService") // 声明该类为applyLogsService的实现
public class ApplyLogsServiceImpl implements ApplyLogsService {
// 自动注入MembersDao
@Autowired
private MembersDao membersDao;
// 自动注入ApplyLogsDao
@Autowired
private ApplyLogsDao applyLogsDao;
// 自动注入TeamsDao
@Autowired
private TeamsDao teamsDao;
/**
*
*/
@Override
@Transactional
@Transactional // 声明事务,确保操作的原子性
public void add(ApplyLogs applyLogs) {
applyLogsDao.insert(applyLogs);
applyLogsDao.insert(applyLogs); // 插入申请记录
}
/**
*
*
*/
@Override
@Transactional
@Transactional // 声明事务
public void update(ApplyLogs applyLogs) {
if(applyLogs.getStatus() != null && applyLogs.getStatus() == 1){
Members member = new Members();
member.setId(IDUtils.makeIDByCurrent());
member.setCreateTime(DateUtils.getNowDate());
member.setUserId(applyLogs.getUserId());
member.setTeamId(applyLogs.getTeamId());
membersDao.insert(member);
Teams teams = teamsDao.selectById(applyLogs.getTeamId());
teams.setTotal(teams.getTotal() + 1);
teamsDao.updateById(teams);
if(applyLogs.getStatus() != null && applyLogs.getStatus() == 1){ // 如果申请通过
Members member = new Members(); // 创建成员记录
member.setId(IDUtils.makeIDByCurrent()); // 生成成员ID
member.setCreateTime(DateUtils.getNowDate()); // 设置创建时间
member.setUserId(applyLogs.getUserId()); // 设置用户ID
member.setTeamId(applyLogs.getTeamId()); // 设置团队ID
membersDao.insert(member); // 插入成员记录
Teams teams = teamsDao.selectById(applyLogs.getTeamId()); // 根据ID查询团队
teams.setTotal(teams.getTotal() + 1); // 增加团队人数
teamsDao.updateById(teams); // 更新团队信息
}
applyLogsDao.updateById(applyLogs);
applyLogsDao.updateById(applyLogs); // 更新申请记录
}
/**
*
*/
@Override
@Transactional
@Transactional // 声明事务
public void delete(ApplyLogs applyLogs) {
applyLogsDao.deleteById(applyLogs);
applyLogsDao.deleteById(applyLogs); // 根据ID删除申请记录
}
/**
*
* truefalse
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public Boolean isApply(String userId, String teamId){
QueryWrapper<ApplyLogs> qw = new QueryWrapper<>(); // 创建查询条件构造器
qw.eq("user_id", userId).eq("team_id", teamId).eq("status", 0); // 添加查询条件
QueryWrapper<ApplyLogs> qw = new QueryWrapper<ApplyLogs>();
qw.eq("user_id", userId);
qw.eq("team_id", teamId);
qw.eq("status", 0);
return applyLogsDao.selectCount(qw) <= 0;
return applyLogsDao.selectCount(qw) <= 0; // 查询符合条件的记录数如果为0则未申请
}
/**
* ID
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public ApplyLogs getOne(String id) {
ApplyLogs applyLogs = applyLogsDao.selectById(id);
return applyLogs;
return applyLogsDao.selectById(id); // 根据ID查询申请记录
}
/**
*
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public PageData getManPageInfo(Long pageIndex, Long pageSize, String userId, String teamName, String userName) {
Page<Map<String, Object>> page = applyLogsDao.qryManPageInfo(new Page<>(pageIndex, pageSize), userId, teamName, userName); // 分页查询
Page<Map<String, Object>> page =
applyLogsDao.qryManPageInfo(new Page<Map<String, Object>>(pageIndex, pageSize), userId, teamName, userName);
return parsePage(page);
return parsePage(page); // 转换分页结果
}
/**
*
*/
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) // 声明只读事务
public PageData getPageInfo(Long pageIndex, Long pageSize, String userId, String teamName, String userName) {
Page<Map<String, Object>> page = applyLogsDao.qryPageInfo(new Page<>(pageIndex, pageSize), userId, teamName, userName); // 分页查询
Page<Map<String, Object>> page =
applyLogsDao.qryPageInfo(new Page<Map<String, Object>>(pageIndex, pageSize), userId, teamName, userName);
return parsePage(page);
return parsePage(page); // 转换分页结果
}
/**
*
* MyBatis PlusPageData
*/
public PageData parsePage(Page<Map<String, Object>> p) {
PageData pageData = new PageData(p.getCurrent(), p.getSize(), p.getTotal(), p.getRecords()); // 创建PageData对象
PageData pageData = new PageData(p.getCurrent(), p.getSize(), p.getTotal(), p.getRecords());
return pageData;
return pageData; // 返回转换后的分页数据
}
}
Loading…
Cancel
Save