From 1ab4166f43439b350326a7542cc2c711aff6415e Mon Sep 17 00:00:00 2001 From: pxh4iabou <2044878308@qq.com> Date: Sun, 30 Apr 2023 01:23:48 +0800 Subject: [PATCH] ADD file via upload --- .../com/controller/AccountController.java | 222 ++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 src/main/java/com/controller/AccountController.java diff --git a/src/main/java/com/controller/AccountController.java b/src/main/java/com/controller/AccountController.java new file mode 100644 index 0000000..3cfcb52 --- /dev/null +++ b/src/main/java/com/controller/AccountController.java @@ -0,0 +1,222 @@ +package com.example.controller; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.example.common.Result; +import com.example.common.ResultCode; +import com.example.entity.Account; +import com.example.entity.AuthorityInfo; +import com.example.exception.CustomException; +import com.example.entity.AdminInfo; +import com.example.entity.UserInfo; + +import com.example.service.AdminInfoService; +import com.example.service.UserInfoService; + +import org.springframework.web.bind.annotation.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import cn.hutool.json.JSONUtil; + +import java.util.*; +import java.util.stream.Collectors; + +@RestController +public class AccountController { + + @Value("${authority.info}") + private String authorityStr; + + @Resource + private AdminInfoService adminInfoService; + @Resource + private UserInfoService userInfoService; + + + @PostMapping("/login") + public Result login(@RequestBody Account account, HttpServletRequest request) { + if (StrUtil.isBlank(account.getName()) || StrUtil.isBlank(account.getPassword()) || account.getLevel() == null) { + throw new CustomException(ResultCode.PARAM_LOST_ERROR); + } + Integer level = account.getLevel(); + Account login = new Account(); + if (1 == level) { + login = adminInfoService.login(account.getName(), account.getPassword()); + } + if (2 == level) { + login = userInfoService.login(account.getName(), account.getPassword()); + } + + request.getSession().setAttribute("user", login); + return Result.success(login); + } + + @PostMapping("/register") + public Result register(@RequestBody Account account) { + Integer level = account.getLevel(); + Account login = new Account(); + if (1 == level) { + AdminInfo info = new AdminInfo(); + BeanUtils.copyProperties(account, info); + login = adminInfoService.add(info); + } + if (2 == level) { + UserInfo info = new UserInfo(); + BeanUtils.copyProperties(account, info); + login = userInfoService.add(info); + } + + return Result.success(login); + } + + @GetMapping("/logout") + public Result logout(HttpServletRequest request) { + request.getSession().setAttribute("user", null); + return Result.success(); + } + + @GetMapping("/auth") + public Result getAuth(HttpServletRequest request) { + Object user = request.getSession().getAttribute("user"); + if(user == null) { + return Result.error("401", "未登录"); + } + return Result.success(user); + } + + @GetMapping("/getAccountInfo") + public Result getAccountInfo(HttpServletRequest request) { + Account account = (Account) request.getSession().getAttribute("user"); + if (account == null) { + return Result.success(new Object()); + } + Integer level = account.getLevel(); + if (1 == level) { + return Result.success(adminInfoService.findById(account.getId())); + } + if (2 == level) { + return Result.success(userInfoService.findById(account.getId())); + } + + return Result.success(new Object()); + } + + @GetMapping("/getSession") + public Result> getSession(HttpServletRequest request) { + Account account = (Account) request.getSession().getAttribute("user"); + if (account == null) { + return Result.success(new HashMap<>(1)); + } + Map map = new HashMap<>(1); + map.put("username", account.getName()); + return Result.success(map); + } + + @GetMapping("/getAuthority") + public Result> getAuthorityInfo() { + List authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class); + return Result.success(authorityInfoList); + } + + /** + * 获取当前用户所能看到的模块信息 + * @param request + * @return + */ + @GetMapping("/authority") + public Result> getAuthorityInfo(HttpServletRequest request) { + Account user = (Account) request.getSession().getAttribute("user"); + if (user == null) { + return Result.success(new ArrayList<>()); + } + JSONArray objects = JSONUtil.parseArray(authorityStr); + for (Object object : objects) { + JSONObject jsonObject = (JSONObject) object; + if (user.getLevel().equals(jsonObject.getInt("level"))) { + JSONArray array = JSONUtil.parseArray(jsonObject.getStr("models")); + List modelIdList = array.stream().map((o -> { + JSONObject obj = (JSONObject) o; + return obj.getInt("modelId"); + })).collect(Collectors.toList()); + return Result.success(modelIdList); + } + } + return Result.success(new ArrayList<>()); + } + + @GetMapping("/permission/{modelId}") + public Result> getPermission(@PathVariable Integer modelId, HttpServletRequest request) { + List authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class); + Account user = (Account) request.getSession().getAttribute("user"); + if (user == null) { + return Result.success(new ArrayList<>()); + } + Optional optional = authorityInfoList.stream().filter(x -> x.getLevel().equals(user.getLevel())).findFirst(); + if (optional.isPresent()) { + Optional firstOption = optional.get().getModels().stream().filter(x -> x.getModelId().equals(modelId)).findFirst(); + if (firstOption.isPresent()) { + List info = firstOption.get().getOperation(); + return Result.success(info); + } + } + return Result.success(new ArrayList<>()); + } + + @PutMapping("/updatePassword") + public Result updatePassword(@RequestBody Account info, HttpServletRequest request) { + Account account = (Account) request.getSession().getAttribute("user"); + if (account == null) { + return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); + } + String oldPassword = SecureUtil.md5(info.getPassword()); + if (!oldPassword.equals(account.getPassword())) { + return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg); + } + info.setPassword(SecureUtil.md5(info.getNewPassword())); + Integer level = account.getLevel(); + if (1 == level) { + AdminInfo adminInfo = new AdminInfo(); + BeanUtils.copyProperties(info, adminInfo); + adminInfoService.update(adminInfo); + } + if (2 == level) { + UserInfo userInfo = new UserInfo(); + BeanUtils.copyProperties(info, userInfo); + userInfoService.update(userInfo); + } + + info.setLevel(level); + info.setName(account.getName()); + // 清空session,让用户重新登录 + request.getSession().setAttribute("user", null); + return Result.success(); + } + + @PostMapping("/resetPassword") + public Result resetPassword(@RequestBody Account account) { + Integer level = account.getLevel(); + if (1 == level) { + AdminInfo info = adminInfoService.findByUserName(account.getName()); + if (info == null) { + return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); + } + info.setPassword(SecureUtil.md5("123456")); + adminInfoService.update(info); + } + if (2 == level) { + UserInfo info = userInfoService.findByUserName(account.getName()); + if (info == null) { + return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg); + } + info.setPassword(SecureUtil.md5("123456")); + userInfoService.update(info); + } + + return Result.success(); + } +}