图谱-后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

202 lines
7.6 KiB

package com.teaching.backend.controller.umsAdmin;
import cn.hutool.core.collection.CollUtil;
import com.teaching.backend.common.CommonResult;
import com.teaching.backend.common.BaseResponse;
import com.teaching.backend.common.ResultUtils;
import com.teaching.backend.model.dto.UmsAdminParam;
import com.teaching.backend.model.dto.UpdateAdminPasswordParam;
import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO;
import com.teaching.backend.model.entity.umsAdmin.UmsAdmin;
import com.teaching.backend.model.entity.umsAdmin.UmsRole;
import com.teaching.backend.model.vo.courses.TeacherInfVO;
import com.teaching.backend.service.umsAdmin.UmsAdminService;
import com.teaching.backend.service.umsAdmin.UmsRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author:xhn
* @Date:2024-05-30-18:15
* @Description:login
*/
@RestController
@Api(tags = "UmsAdminController")
@RequestMapping("/api/user")
@Slf4j
public class UmsAdminController {
@Value("${jwt.tokenHeader}")
private String tokenHeader;
@Value("${jwt.tokenHead}")
private String tokenHead;
@Autowired
private UmsAdminService umsAdminService;
@Autowired
private UmsRoleService umsRoleService;
@ApiOperation(value = "用户注册")
@PostMapping("/register")
public CommonResult<UmsAdmin> register(@Validated @RequestBody UmsAdminParam umsAdminParam) {
if (umsAdminParam == null) {
return CommonResult.failed();
}
UmsAdmin umsAdmin = umsAdminService.register(umsAdminParam);
return CommonResult.success(umsAdmin);
}
@ApiOperation(value = "用户名登录以后返回token")
@PostMapping("/login")
public CommonResult login(@Validated @RequestBody UmsAdmin umsAdmin) {
String token = umsAdminService.login(umsAdmin.getUsername(), umsAdmin.getPassword());
if (token == null) {
return CommonResult.validateFailed("用户名或密码错误");
}
Map<String, String> tokenMap = new HashMap<>();
tokenMap.put("token", token);
tokenMap.put("tokenHead", tokenHead);
return CommonResult.success(tokenMap);
}
@ApiOperation(value = "手机号登录以后返回token")
@PostMapping("/phone/login")
public CommonResult phoneLogin(@RequestParam("phone")String phone) {
String token = umsAdminService.phoneLogin(phone);
if (token == null) {
return CommonResult.validateFailed("手机号不存在!");
}
Map<String, String> tokenMap = new HashMap<>();
tokenMap.put("token", token);
tokenMap.put("tokenHead", tokenHead);
return CommonResult.success(tokenMap);
}
/**
* 发送短信
* @param phone
* @return
*/
@ApiOperation(value = "发送短信返回验证码")
@PostMapping("/code")
public CommonResult<String> sendVerifyCode(@RequestParam("phone")String phone){
return CommonResult.success(umsAdminService.sendVerifyCode(phone));
}
@ApiOperation(value = "手机号注册")
@PostMapping("/phone/register")
public CommonResult<UmsAdmin> phoneRegister(@Validated @RequestBody UmsAdminParam umsAdminParam) {
if (umsAdminParam == null) {
return CommonResult.failed();
}
UmsAdmin umsAdmin = umsAdminService.phoneRegister(umsAdminParam);
return CommonResult.success(umsAdmin);
}
@ApiOperation(value = "刷新token")
@GetMapping("/refreshToken")
public CommonResult refreshToken(HttpServletRequest request) {
String token = request.getHeader(tokenHeader);
String refreshToken = umsAdminService.refreshToken(token);
if (refreshToken == null) {
return CommonResult.failed("token已经过期!");
}
Map<String, String> tokenMap = new HashMap<>();
tokenMap.put("token", refreshToken);
tokenMap.put("tokenHead", tokenHead);
return CommonResult.success(tokenMap);
}
@ApiOperation(value = "获取当前登录用户信息")
@GetMapping ("/info")
public CommonResult getAdminInfo(Principal principal) {
if(principal == null){
return CommonResult.unauthorized("用户名为空");
}
String username = principal.getName();
UmsAdmin umsAdmin = umsAdminService.getAdminByUsername(username);
Map<String, Object> data = new HashMap<>();
data.put("id",umsAdmin.getId());
data.put("username", umsAdmin.getUsername());
data.put("menus", umsRoleService.getMenuList(umsAdmin.getId()));
data.put("phone", umsAdmin.getPhone());
data.put("nickName", umsAdmin.getNickName());
data.put("icon", umsAdmin.getIcon());
List<UmsRole> roleList = umsAdminService.getRoleList(umsAdmin.getId());
if(CollUtil.isNotEmpty(roleList)){
List<String> roles = roleList.stream().map(UmsRole::getName).collect(Collectors.toList());
data.put("roles",roles);
}
return CommonResult.success(data);
}
@ApiOperation("修改指定用户信息")
@PostMapping("/update")
public CommonResult updateUms(@RequestBody UmsAdmin umsadmin) {
boolean count = umsAdminService.updateUms(umsadmin);
if (count == true) {
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("修改指定用户密码")
@PostMapping("/updatePassword")
public CommonResult updatePassword(@Validated @RequestBody UpdateAdminPasswordParam updatePasswordParam) {
int status = umsAdminService.updatePassword(updatePasswordParam);
if (status > 0) {
return CommonResult.success(status);
} else if (status == -1) {
return CommonResult.failed("提交参数不合法");
} else if (status == -2) {
return CommonResult.failed("找不到该用户");
} else if (status == -3) {
return CommonResult.failed("旧密码错误");
} else {
return CommonResult.failed();
}
}
@ApiOperation("获取指定个人信息")
@PostMapping("/personal/info")
public CommonResult getByIdPersonalInfo(@RequestParam String id) {
if (id == null){
return CommonResult.failed("参数为空");
}
Object count = umsAdminService.getByIdPersonalInfo(id);
if (count == null) {
return CommonResult.failed();
}
return CommonResult.success(count);
}
@ApiOperation("修改指定个人信息")
@PostMapping("/update/PersonalInfo")
public CommonResult updatePersonalInfo(@RequestBody UmsStudentAndTeacherDTO umsStudentAndTeacherDTO) {
boolean count = umsAdminService.updatePersonalInfo(umsStudentAndTeacherDTO);
if (count == true) {
return CommonResult.success("修改成功");
}
return CommonResult.failed();
}
@ApiOperation("获取教师信息列表,关联教师的username和name")
@GetMapping("/get_teacherinf_list")
public BaseResponse<List<TeacherInfVO>> getTeacherInfList(){
List<TeacherInfVO> teacherInfVO = umsAdminService.getTeacherInfList();
return ResultUtils.success(teacherInfVO);
}
}