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 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 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 tokenMap = new HashMap<>(); tokenMap.put("token", token); tokenMap.put("tokenHead", tokenHead); return CommonResult.success(tokenMap); } /** * 发送短信 * @param phone * @return */ @ApiOperation(value = "发送短信返回验证码") @PostMapping("/code") public CommonResult sendVerifyCode(@RequestParam("phone")String phone){ return CommonResult.success(umsAdminService.sendVerifyCode(phone)); } @ApiOperation(value = "手机号注册") @PostMapping("/phone/register") public CommonResult 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 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 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 roleList = umsAdminService.getRoleList(umsAdmin.getId()); if(CollUtil.isNotEmpty(roleList)){ List 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> getTeacherInfList(){ List teacherInfVO = umsAdminService.getTeacherInfList(); return ResultUtils.success(teacherInfVO); } }