guoyuji
2024-04-27 0ebbadc4c9b676c86a88de53ad57f10058725144
设置全局异常报错信息
10个文件已修改
5个文件已添加
195 ■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/en.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/layout/MainErpView.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/userInfo.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/utils/request.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/StpInterfaceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/PermissionBasic.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/PermissionRole.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/Role.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/PermissionRoleMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/PermissionRoleService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js
@@ -4,7 +4,7 @@
        pwErr:'Please enter your password',
        loginSuccessful:'User login successful',
        loginErr:'The account or password is incorrect',
        connectErr:'server connection failed',
        connectErr:'Login timed out, please login again',
        user:'User',
        password:'Pass',
        SysName:'North Glass ERP System',
@@ -16,6 +16,10 @@
        titleFirst:"Welcome ",
        titleLast:' to use North Glass ERP system!'
    },
    error:{
        Code_401:'The user does not have this permission',
        Code_402:'Login timed out, please login again'
    },
    basicData:{
        create:'New Order',
        review:"Review",
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -4,7 +4,7 @@
        pwErr:'请输入你的密码',
        loginSuccessful:'登录成功',
        loginErr:'账号或密码错误',
        connectErr:'服务器连接失败',
        connectErr:'登录超时,请重新登录',
        user:'用户',
        password:'密码',
        SysName:'北玻自动化ERP管理系统',
@@ -16,6 +16,10 @@
        titleFirst:"欢迎 ",
        titleLast:' 使用北玻ERP系统!'
    },
    error:{
        Code_401:'用户暂无此权限',
        Code_402:'登录超时,请重新登录'
    },
    basicData:{
        create:'创建',
        review:"审核",
north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -15,38 +15,54 @@
const store=userInfo()
const router = useRouter()
const user = null
const userStore = useUserInfoStore()
const user = userStore.user.userName
watch(()=>userStore.responseCode,(newVal) => {
    switch (newVal){
      case 401:{
        ElMessage.warning(t('error.Code_401'))
        break
      }
      case 402:{
        ElMessage.warning(t('error.Code_402'))
        router.push("/login")
        break
      }
      default:{
        break
      }
    }
  }
)
//userStore.user.userName
store.createWebSocket();
async function quit(){
function quit(){
  userStore.$patch({
    user:null
  })
  await request.post("/userInfo/logout").then((res) => {
  }).catch((e)=>{
  }).finally(()=>{
  request.post('/userInfo/logout').finally(()=>{
    router.push("/login")
  })
  //
}
//提取模块列表
let menuList=$ref([])
request.get(`/menu/getMenu/${lang}`).then((res) => {
  if(res.code==200){
    menuList= deepClone(res.data)
  }else{
    ElMessage.warning(res.msg)
    router.push("/login")
  }
}).catch((e)=>{
  ElMessage.warning(t('main.connectErr'))
  router.push("/login")
onMounted(()=>{
  request.get(`/menu/getMenu/${lang}`).then((res) => {
    if(res.code==200){
      menuList= deepClone(res.data)
    }
  })
})
//获取菜单列表
let menuItemList=$ref([])
request.get(`/menuItem/getMenuItem/${lang}`).then((res) => {
north-glass-erp/northglass-erp/src/stores/userInfo.js
@@ -3,18 +3,19 @@
import {createWebSocket, global_callback1} from "@/utils/webSocket";
export  default defineStore("userInfo",{
    state: () =>{
        let user=ref({
            userName:null,
            userId:null
        })
        return {
            user
        }
    },
    state: () =>({
            user:ref({
                userName:null,
                userId:null
            }),
            responseCode:null
    }),
    actions:{
        createWebSocket(){
            createWebSocket(global_callback1)
        },
        setResponseCode(cede){
            this.responseCode=cede
        }
    },
north-glass-erp/northglass-erp/src/utils/request.js
@@ -27,7 +27,13 @@
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
    response => {
        let res = response.data;
        let res = response.data
        //传递报错信息,把报错信息传递到pinia中
        userStore.setResponseCode(parseInt(res.code))
        if(res.code!=='200'){
            return Promise.reject(res.code)
        }
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
            return res
north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -1,12 +1,14 @@
<script lang="ts" setup>
import {onMounted, onUnmounted, reactive, ref} from "vue"
import {useRoute, useRouter} from 'vue-router'
import {useRouter,useRoute } from 'vue-router'
import type {FormInstance, FormRules} from 'element-plus'
import {ElMessage} from "element-plus";
import {Avatar, Lock} from '@element-plus/icons-vue'
import { ElMessage } from "element-plus";
import { Lock,Avatar } from '@element-plus/icons-vue'
import request from '@/utils/request'
import userInfo from '@/stores/userInfo'
import {useI18n} from 'vue-i18n'
import { sendSock, createWebSocket, closeSock,global_callback1 } from "@/utils/webSocket"
import { useI18n } from 'vue-i18n'
import i18n from "@/lang/index"
//语言获取
const { t } = useI18n()
let language = ref(localStorage.getItem('lang') || 'zh')
@@ -60,7 +62,7 @@
          router.push('/main')
          ElMessage.success(t('login.loginSuccessful'))
        } else {
          ElMessage.error(t('login.loginErr'))
          ElMessage.error(res['msg'])
          loginLoadings.value=false
          return false
        }
north-glass-erp/src/main/java/com/example/erp/config/StpInterfaceImpl.java
@@ -1,6 +1,8 @@
package com.example.erp.config;
import cn.dev33.satoken.stp.StpInterface;
import com.example.erp.service.userInfo.PermissionRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
@@ -14,20 +16,27 @@
 */
@Component    // 打开此注解,保证此类被springboot扫描,即可完成sa-token的自定义权限验证扩展
public class StpInterfaceImpl implements StpInterface {
    private final PermissionRoleService permissionRoleService;
    public StpInterfaceImpl(PermissionRoleService permissionRoleService) {
        this.permissionRoleService = permissionRoleService;
    }
    /**
     * 返回一个账号所拥有的权限码集合
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 本list仅做模拟,实际项目中要根据具体业务逻辑来查询权限
        List<String> list = new ArrayList<>();
        /*List<String> list = new ArrayList<>();
        list.add("101");
        list.add("user.add");
        list.add("user.update");
        list.add("user.get");
        // list.add("user.delete");
        list.add("art.*");
        return list;
        list.add("art.*");*/
        return permissionRoleService.getUserPermission(Integer.parseInt((String) loginId));
    }
    /**
     * 返回一个账号所拥有的角色标识集合
north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java
@@ -3,6 +3,7 @@
import lombok.Data;
@Data //用于接受前端登录额user信息
public class UserDTO {
    private Integer id;
    private String userId;
    private String pass;
    private String token;
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/PermissionBasic.java
New file
@@ -0,0 +1,14 @@
package com.example.erp.entity.userInfo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class PermissionBasic {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String page;
    private String permission;
    private String state;
}
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/PermissionRole.java
New file
@@ -0,0 +1,14 @@
package com.example.erp.entity.userInfo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class PermissionRole {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private Integer roleId;
    private Integer permissionId;
}
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/Role.java
New file
@@ -0,0 +1,12 @@
package com.example.erp.entity.userInfo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class Role {
    @TableId(type = IdType.AUTO)
    private String id;
    private String role;
}
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java
@@ -14,6 +14,7 @@
    private  String userName;
    private  String address;
    private  String phone;
    private  Integer roleId;
    private  String createTime;
    private  String updateTime;
    private  Integer state;
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/PermissionRoleMapper.java
New file
@@ -0,0 +1,10 @@
package com.example.erp.mapper.userInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PermissionRoleMapper {
    List<String> getUserPermission(Integer loginId);
}
north-glass-erp/src/main/java/com/example/erp/service/userInfo/PermissionRoleService.java
New file
@@ -0,0 +1,23 @@
package com.example.erp.service.userInfo;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.mapper.userInfo.PermissionRoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@DS("user_info")
@Service
public class PermissionRoleService {
    private final PermissionRoleMapper permissionRoleMapper;
    public PermissionRoleService(PermissionRoleMapper permissionRoleMapper) {
        this.permissionRoleMapper = permissionRoleMapper;
    }
    public List<String> getUserPermission(Integer loginId) {
        return permissionRoleMapper.getUserPermission(loginId);
    }
}
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
@@ -70,8 +70,10 @@
        User user = userMapper.selectOne(new QueryWrapper<User>().
                eq("login_name", userDTO.getUserId()).eq("password", userDTO.getPass()));
        if(user!=null){
            StpUtil.login(userDTO.getUserId());
            StpUtil.login(user.getId());
            userDTO.setPass(null);
            userDTO.setId(user.getId());
            userDTO.setUserName(user.getUserName());
            userDTO.setToken(StpUtil.getTokenValue());
            return userDTO;
        }else{