新增文献接口开发
This commit is contained in:
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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;// 创建时间
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.genepioneer.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public class LoginVO {
|
|
||||||
private Long userId;
|
|
||||||
private String username;
|
|
||||||
private String token;
|
|
||||||
}
|
|
||||||
@@ -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("单元测试:新增文献失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user