新增文献接口开发

This commit is contained in:
dww
2025-12-26 14:58:58 +08:00
parent e230893736
commit 2e1712f5fc
7 changed files with 0 additions and 164 deletions

View File

@@ -1,41 +0,0 @@
package com.genepioneer.controller;
import com.genepioneer.common.Result;
import com.genepioneer.common.utils.JwtUtil;
import com.genepioneer.dto.LoginDTO;
import com.genepioneer.entity.User;
import com.genepioneer.service.impl.UserService;
import com.genepioneer.vo.LoginVO;
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.RestController;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@Resource
private UserService userService;
@Resource
private JwtUtil jwtUtil;
@PostMapping("/login")
public Result<LoginVO> login(@Valid @RequestBody LoginDTO loginDTO) {
// 调用service登录自动适配用户名/手机号)
User user = userService.login(loginDTO);
// 生成JWT令牌
String token = jwtUtil.generateToken(user.getId());
// 封装返回结果
LoginVO loginVO = new LoginVO();
loginVO.setUserId(user.getId());
loginVO.setUsername(user.getUsername()); // 仍返回用户名(前端展示用)
loginVO.setToken(token);
return Result.success(loginVO);
}
}

View File

@@ -1,13 +0,0 @@
package com.genepioneer.dto;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
@Data
public class LoginDTO {
@NotBlank(message = "登录账号不能为空(用户名/手机号)")
private String loginAccount; // 统一接收:用户名 或 手机号
@NotBlank(message = "密码不能为空")
private String password;
}

View File

@@ -1,14 +0,0 @@
package com.genepioneer.entity;
import lombok.Data;
import java.util.Date;
@Data
public class User {
private Long id; // 主键ID
private String username;// 账号
private String password;// 加密后的密码
private String role; // 角色如admin
private String phone; // 新增:手机号码
private Date createTime;// 创建时间
}

View File

@@ -1,13 +0,0 @@
package com.genepioneer.mapper;
import com.genepioneer.entity.User;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper {
// 新增:根据用户名/手机号查询用户
@Select("SELECT id, username, password, role, phone, create_time AS createTime " +
"FROM user WHERE username = #{loginAccount} OR phone = #{loginAccount}")
User selectByUsernameOrPhone(String loginAccount);
}

View File

@@ -1,36 +0,0 @@
package com.genepioneer.service.impl;
import com.genepioneer.common.exception.CustomException;
import com.genepioneer.common.utils.MD5Util;
import com.genepioneer.dto.LoginDTO;
import com.genepioneer.entity.User;
import com.genepioneer.mapper.UserMapper;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
@Service
public class UserService {
@Resource
private UserMapper userMapper;
public User login(LoginDTO loginDTO) {
// 1. 获取登录账号(用户名/手机号)和密码
String loginAccount = loginDTO.getLoginAccount();
String password = loginDTO.getPassword();
// 2. 根据用户名/手机号查询用户
User user = userMapper.selectByUsernameOrPhone(loginAccount);
if (user == null) {
throw new CustomException("用户名/手机号不存在");
}
// 3. 校验密码MD5比对
String md5Password = MD5Util.encrypt(password);
if (!md5Password.equals(user.getPassword())) {
throw new CustomException("密码错误");
}
return user;
}
}

View File

@@ -1,10 +0,0 @@
package com.genepioneer.vo;
import lombok.Data;
@Data
public class LoginVO {
private Long userId;
private String username;
private String token;
}

View File

@@ -1,37 +0,0 @@
package com.genepioneer.test;
import com.genepioneer.dto.LiteratureDTO;
import com.genepioneer.service.LiteratureService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.math.BigDecimal;
//@SpringBootTest
public class LiteratureApiTest {
@Autowired
private LiteratureService literatureService;
// 测试 Service 层(直接验证业务逻辑)
@Test
public void testAddLiterature() {
// 构建测试数据
LiteratureDTO dto = new LiteratureDTO();
dto.setYear(2024);
dto.setArticleTitle("基因测序技术的最新应用");
dto.setJournalName("基因组学报");
dto.setImpactFactor(new BigDecimal("12.3"));
dto.setSampleSource("小鼠组织样本");
dto.setLiteratureType("实验研究");
try {
literatureService.addLiterature(dto);
System.out.println("单元测试:新增文献成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("单元测试:新增文献失败");
}
}
}