【无标题】学做毕设 2022 第十五讲 sprint Boot与Vue注册与异常

改一下  UserController
        
@PostMapping("/login")
        public Result login(@RequestBody UserDto userDto) {
                String username=userDto.getUsername();
                String password=userDto.getPassword();
                if(StrUtil.isBlank(username)||StrUtil.isBlank(password)){
//                        return Result.error(Constants.CODE_400,"参数错误");
                        return Result.error(Constants.CODE_400,"参数错误");
                }
               UserDto dto=userService.login(userDto);
//                return Result.success(dto);
                return Result.success(dto);
        }
package com.yinming.sprintboot.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.log.Log;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yinming.sprintboot.common.Constants;
import com.yinming.sprintboot.controller.dto.UserDto;
import com.yinming.sprintboot.entity.User;
import com.yinming.sprintboot.exception.ServiceException;
import com.yinming.sprintboot.mapper.UserMapper;
import com.yinming.sprintboot.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.One;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author chen
 * @since 2022-02-25
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    private static final Log LOG=Log.get();
    @Override
    public UserDto login(UserDto userDto) {
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("username",userDto.getUsername());
        queryWrapper.eq("password",userDto.getPassword());
        User one;
        try {
            one= getOne(queryWrapper);          
        }catch (Exception e) {
                LOG.error(e);
            throw new ServiceException(Constants.CODE_500,"SYS错误");
        }
        if(one!=null)
        {        
                BeanUtil.copyProperties(one, userDto,true);
                return userDto;            
        }else {
            throw new ServiceException(Constants.CODE_600,"用户名和错误");
        }
    }
}

exception

@Getter
public class ServiceException  extends RuntimeException{
    private String code;
    public ServiceException(String code, String msg) {
        super(msg);
        this.code=code;
    }
}
@ControllerAdvice
public class GlobeExceptionHandler {

    @ExceptionHandler(ServiceException.class)
    @ResponseBody

    public Result handle(ServiceException se){
        return Result.error(se.getCode(),se.getMessage());
    }
}

common\Result

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private String code;
    private String msg;
    private Object data;

    public static Result success(){
        return new Result(Constants.CODE_200,"",null);
    }
    public static Result success(Object data){
        return new Result(Constants.CODE_200,"",data);
    }
    public static Result error(String code, String msg){
        return new Result(code,"",null);
    }
    public static Result error(){
        return new Result(Constants.CODE_500,"系统错误",null);
    }

}

common\Constants

public interface Constants {
    String CODE_200="200"; //成功
    String CODE_500="500"; //系统错误
    String CODE_400="400"; //系统错误
    String CODE_401="401"; //系统错误
    String CODE_600="600"; //系统错误

 }

@Data
public class UserDto {
    private String username;
    private String password;
    private String nickname;
    private String avatarUrl;
}

VUE前端

methods:{
  login(){
    this.request.post("/user/login",this.user).then(res=>{
      if(res.code==='200'){
        localStorage.setItem("user",JSON.stringify(res.data)) //存储用户信息到浏览器
        this.$router.push("/")
        this.$message.success("登录成功")
      }else {
        console.log(res)
        this.$message.error(res.message)
      }
    })
  }
}

 

 Head.vue

<div style="display: inline-block"><img :src="user.avatarUrl" alt="" style="width: 30px ;border-radius:50%;
 position: relative;top: 10px;right: 5px">
<span>{{user.nickname}}</span><i class="el-icon-arrow-down" style="margin-left: 5px"></i>
</div>
return{
  user:localStorage.getItem("user")?JSON.parse(localStorage.getItem("user")):{}
}

对data的改造

res.data
package com.yinming.sprintboot.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yinming.sprintboot.common.Constants;
import com.yinming.sprintboot.common.Result;
import com.yinming.sprintboot.controller.dto.UserDto;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;
import com.yinming.sprintboot.service.IUserService;
import com.yinming.sprintboot.entity.User;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author chen
 * @since 2022-02-25
 */
@RestController
@RequestMapping("/user")
public class UserController {

@Resource
private IUserService userService;

        @PostMapping("/register")
        public Result register(@RequestBody UserDto userDto) {
                String username=userDto.getUsername();
                String password=userDto.getPassword();
                if(StrUtil.isBlank(username)||StrUtil.isBlank(password)){
                        return Result.error(Constants.CODE_400,"参数错误");
                }
                return Result.success(userService.register(userDto));
        }

        @PostMapping
        public Result save(@RequestBody User user) {
                return Result.success(userService.saveOrUpdate(user));

                }

        @PostMapping("/login")
        public Result login(@RequestBody UserDto userDto) {
                String username=userDto.getUsername();
                String password=userDto.getPassword();
                if(StrUtil.isBlank(username)||StrUtil.isBlank(password)){
//                        return Result.error(Constants.CODE_400,"参数错误");
                        return Result.error(Constants.CODE_400,"参数错误");
                }
               UserDto dto=userService.login(userDto);
//                return Result.success(dto);
                return Result.success(dto);
        }


@DeleteMapping("/{id}")
public Result delete(@PathVariable Integer id) {
        return Result.success(userService.removeById(id));
        }

@GetMapping
public List<User> findAll() {
        return userService.list();
        }

@PostMapping("/del/batch")
public Result deleteBatch(@RequestBody List<Integer> ids)
        {
        //新增或者更新都在这个里面
        return Result.success(userService.removeBatchByIds(ids));
        }

@GetMapping("/{id}")
public Result findOne(@PathVariable Integer id) {
        return Result.success(userService.getById(id));
        }


@GetMapping("/username/{username}")
public Result findOne(@PathVariable String username) {
          QueryWrapper<User> queryWrapper=new QueryWrapper<>();
          queryWrapper.eq("username",username);
                return Result.success(userService.getOne(queryWrapper));
        }

@GetMapping("/page")
public Result findPage(@RequestParam Integer pageNum,
                                @RequestParam Integer pageSize,
                                @RequestParam(defaultValue = "") String username,
                                @RequestParam(defaultValue = "") String email,
                                @RequestParam(defaultValue = "") String address) {

        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.orderByDesc("id");
        IPage<User> page=new Page<>(pageNum, pageSize);
        if(!"".equals(username)) {
        queryWrapper.like("username", username);
        }
        if(!"".equals(email)) {
        queryWrapper.like("email", email);
        }
        if(!"".equals(address)) {
        queryWrapper.like("address", address);
        }
        IPage<User> userPage=userService.page(page,queryWrapper);
        //return userService.page(new Page<>(pageNum, pageSize));
        return Result.success(userPage);
        }


        @GetMapping("/export")
        public void export(HttpServletResponse response) throws Exception{
                //从数据库查询所用数据
                List<User> list=userService.list();
                //通过工具类创建writer
                //ExcelWriter writer = ExcelUtil.getWriter("d:/writeTest.xlsx");
                ExcelWriter writer = ExcelUtil.getWriter(true);
                //自定义标题和别名
//        writer.addHeaderAlias("username","用户名");
//        writer.addHeaderAlias("password","密码");
//        writer.addHeaderAlias("nickname","昵称");
//        writer.addHeaderAlias("phone","手机");
//        writer.addHeaderAlias("email","邮箱");
//        writer.addHeaderAlias("address","地址");
//        writer.addHeaderAlias("createTime","创建时间");
//        writer.addHeaderAlias("avatarUrl","头像");
                //一次性写入list内的对象到excel。使用默认样式,强制输出标题
                writer.write(list,true);
                response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
                String filename= URLEncoder.encode("用户信息","UTF-8");
                response.setHeader("Content-Disposition","attachment;filename="+filename+".xlsx");
                ServletOutputStream out=response.getOutputStream();
                writer.flush(out, true);
                // 关闭writer,释放内存
                out.close();
                //此处记得关闭输出Servlet流
                writer.close();
        }

        @PostMapping("/import")
        public Result imp(MultipartFile file) throws Exception{
                InputStream inputStream=file.getInputStream();
                ExcelReader reader=ExcelUtil.getReader(inputStream);
                //List<User> list=reader.read(0,1,User.class);
                List<User> list=reader.readAll(User.class);
                System.out.println(list);
                userService.saveBatch(list);
                return Result.success(true);
        }

}
由import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    component: () => import('../views/Manager.vue'),
    redirect:"/home",
    children: [
      { path: 'home', name: '主页', component: () => import('../views/Home')},
      { path: 'user', name: '用户管理', component: () => import('../views/User.vue')},
      { path: 'person', name: '个人信息', component: () => import('../views/Person')},
    ]
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  },
  {
    path: '/login',
    name: 'Login',
     component: () => import('../views/Login')
  },
  {
    path: '/register',
    name: 'Register',
    component: () => import('../views/Register')
  }

]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

//路由守卫
// router.beforeEach((to, from, next) => {
//   // if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
//   // 如果用户未能验证身份,则 `next` 会被调用两次
//   localStorage.setItem("currentPathName",to.name)
//   console.log(localStorage)
//   this.$store.commit("setPath")
//   next()
// })

export default router
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值