您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页基于SpringBoot垃圾分类小程序系统的设计与实现

基于SpringBoot垃圾分类小程序系统的设计与实现

来源:爱玩科技网

最近开发了一个垃圾分类的小程序。

因为导师一直也是要学生做创新点,前前后改了几个版本,好在过了,也算不错。

我每天基本5点半起床,晚上11点睡觉,基本天天如此,大年三十也一样。

白天我的时间不是我的,因为我要服务别人,人家花了钱或者加入VIP,就得服务。

我这里就是个早市。5点半,到7点半,我可以干自己的事,这个时间大家都没起床,我写代码、学习都很安静。

8点半之后,开门了,有各种小伙伴开始问我问题了。

有的找不到工作怎么办,有的offer太多怎么办,有的qq被盗了怎么办,有的项目有bug了怎么办,有的加入vip咨询,有的买项目,有的被骗钱了怎么办,有的失恋抑郁了怎么办,有的被带绿帽子怎么办……

您别笑,这是真事,还有更离谱的!

目前找工作行情不好,但是需求还是很大的,很多公司都说找不到合适的人。

同时一时间,有两个小伙伴找我私聊:

一个工作offer爆满,不知道选哪一个:

一个投出去的简历,石沉大海:

还是要根据招聘的需求,不断完善简历,多刷项目,多刷八股文。但是一些还很坑的公司也不要去。

一,系统演示

二,系统核心代码介绍

/**
小孟v:codingxm
*/
@RestController
public class AccountController {

    @Resource
    private UserInfoService userInfoService;
    @Resource
    private AdminInfoService adminInfoService;

    @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((UserInfo)user);
    }

    /**
     * 注册
     */
    @PostMapping("/register")
    public Result<UserInfo> register(@RequestBody UserInfo userInfo, HttpServletRequest request) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.PARAM_ERROR);
        }
        UserInfo register = userInfoService.add(userInfo);
        HttpSession session = request.getSession();
        session.setAttribute("user", register);
        session.setMaxInactiveInterval(120 * 60);
        return Result.success(register);
    }

    /**
     * 登录
     */
    @PostMapping("/login")
    public Result<UserInfo> login(@RequestBody UserInfo userInfo, HttpServletRequest request) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
        }
        UserInfo login = userInfoService.login(userInfo.getName(), userInfo.getPassword());
        HttpSession session = request.getSession();
        session.setAttribute("user", login);
        session.setMaxInactiveInterval(120 * 60);
        return Result.success(login);
    }
    /**
     * 登录
     */
    @PostMapping("/login2")
    public Result<UserInfo> login2(@RequestBody UserInfo userInfo, HttpServletRequest request) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
        }
        UserInfo login = adminInfoService.login(userInfo.getName(), userInfo.getPassword());
        HttpSession session = request.getSession();
        session.setAttribute("user", login);
        session.setMaxInactiveInterval(120 * 60);
        return Result.success(login);
    }

    /**
     * 重置密码为123456
     */
    @PutMapping("/resetPassword")
    public Result<UserInfo> resetPassword(@RequestParam String username) {
        return Result.success(userInfoService.resetPassword(username));
    }

    @PutMapping("/updatePassword")
    public Result updatePassword(@RequestBody UserInfo info, HttpServletRequest request) {
        UserInfo account = (UserInfo) 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);
        }
        if(account.getLevel()==1){
            UserInfo userInfo = userInfoService.findById(account.getId());
            userInfo.setPassword(SecureUtil.md5(info.getNewPassword()));
            userInfoService.update(userInfo);
        }
        // 清空session,让用户重新登录
        request.getSession().setAttribute("user", null);
        return Result.success();
    }
    @PutMapping("/wxUpdateMima")
    public Result wxUpdateMima(@RequestBody Account info) {
        UserInfo account = userInfoService.findById(info.getId());
        String oldMima = SecureUtil.md5(info.getPassword());
        if (!oldMima.equals(account.getPassword())) {
            return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
        }
        info.setPassword(SecureUtil.md5(info.getNewPassword()));
        UserInfo yuangongxinxiInfo = new UserInfo();
        BeanUtils.copyProperties(info, yuangongxinxiInfo);
        userInfoService.update(yuangongxinxiInfo);
        return Result.success();
    }
    @GetMapping("/mini/userInfo/{id}/{level}")
    public Result<Account> miniLogin(@PathVariable Long id, @PathVariable Integer level) {
        Account account = userInfoService.findByIdAndLevel(id, level);
        return Result.success(account);
    }

    /**
     * 修改密码
     */
    @PutMapping("/changePassword")
    public Result<Boolean> changePassword(@RequestParam Long id,
                                          @RequestParam String newPassword) {
        return Result.success(userInfoService.changePassword(id, newPassword));
    }

    @GetMapping("/getSession")
    public Result<Map<String, String>> getSession(HttpServletRequest request) {
        UserInfo account = (UserInfo) request.getSession().getAttribute("user");
        if (account == null) {
            return Result.success(new HashMap<>(1));
        }
        Map<String, String> map = new HashMap<>(1);
        map.put("username", account.getName());
        return Result.success(map);
    }
}

@RestController
@RequestMapping(value = "/adminInfo")
public class AdminInfoController {
    @Resource
    private AdminInfoService adminInfoService;

    @PostMapping
    public Result<UserInfo> add(@RequestBody UserInfo userInfo) {
        adminInfoService.add(userInfo);
        return Result.success(userInfo);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {
        adminInfoService.delete(id);
        return Result.success();
    }

    @PutMapping
    public Result update(@RequestBody UserInfo userInfo) {
        adminInfoService.update(userInfo);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result<UserInfo> detail(@PathVariable Long id) {
        UserInfo userInfo = adminInfoService.findById(id);
        return Result.success(userInfo);
    }

    @GetMapping
    public Result<List<UserInfo>> all() {
        return Result.success(adminInfoService.findAll());
    }

    @GetMapping("/page/{name}")
    public Result<PageInfo<UserInfo>> page(@RequestParam(defaultValue = "1") Integer pageNum,
                                           @RequestParam(defaultValue = "10") Integer pageSize,
                                           @PathVariable String name) {
        return Result.success(adminInfoService.findPage(pageNum, pageSize, name));
    }

    /**
     * 注册
     */
    @PostMapping("/register")
    public Result<UserInfo> register(@RequestBody UserInfo userInfo) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.PARAM_ERROR);
        }
        return Result.success(adminInfoService.add(userInfo));
    }

    /**
     * 登录
     */
    @PostMapping("/login")
    public Result<UserInfo> login(@RequestBody UserInfo userInfo) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
        }
        return Result.success(adminInfoService.login(userInfo.getName(), userInfo.getPassword()));
    }

    /**
     * 重置密码为123456
     */
    @PutMapping("/resetPassword")
    public Result<UserInfo> resetPassword(@RequestParam String name) {
        return Result.success(adminInfoService.resetPassword(name));
    }

    /**
     * 修改密码
     */
    @PutMapping("/changePassword")
    public Result<Boolean> changePassword(@RequestParam Long id,
                                          @RequestParam String newPassword) {
        return Result.success(adminInfoService.changePassword(id, newPassword));
    }

    /**
     * 批量通过excel添加信息
     * @param file excel文件
     * @throws IOException
     */
    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws IOException {

        List<UserInfo> infoList = ExcelUtil.getReader(file.getInputStream()).readAll(UserInfo.class);
        if (!CollectionUtil.isEmpty(infoList)) {
            // 处理一下空数据
            List<UserInfo> resultList = infoList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getName())).collect(Collectors.toList());
            for (UserInfo info : resultList) {
                adminInfoService.add(info);
            }
        }
        return Result.success();
    }

    @GetMapping("/getExcelModel")
    public void getExcelModel(HttpServletResponse response) throws IOException {
        // 1. 生成excel
        Map<String, Object> row = new LinkedHashMap<>();
        row.put("name", "张天志");
        row.put("password", "123456");
        row.put("nickname", "老张");
        row.put("sex", "男");
        row.put("age", 22);
        row.put("phone", "18843232356");
        row.put("address", "上海市");
        row.put("level", 3);

        List<Map<String, Object>> list = CollUtil.newArrayList(row);

        // 2. 写excel
        ExcelWriter writer = ExcelUtil.getWriter(true);
        writer.write(list, true);

        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        response.setHeader("Content-Disposition","attachment;filename=userInfoModel.xlsx");

        ServletOutputStream out = response.getOutputStream();
        writer.flush(out, true);
        writer.close();
        IoUtil.close(System.out);
    }
@RestController
@RequestMapping(value = "/advertiserInfo")
public class AdvertiserInfoController {
    @Resource
    private AdvertiserInfoService advertiserInfoService;

    @PostMapping
    public Result<AdvertiserInfo> add(@RequestBody AdvertiserInfo advertiserInfo) {
        advertiserInfoService.add(advertiserInfo);
        return Result.success(advertiserInfo);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {
        advertiserInfoService.delete(id);
        return Result.success();
    }

    @PutMapping
    public Result update(@RequestBody AdvertiserInfo advertiserInfo) {
        advertiserInfoService.update(advertiserInfo);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result<AdvertiserInfo> detail(@PathVariable Long id) {
        AdvertiserInfo advertiserInfo = advertiserInfoService.findById(id);
        return Result.success(advertiserInfo);
    }

    @GetMapping
    public Result<List<AdvertiserInfo>> all() {
        return Result.success(advertiserInfoService.findAll());
    }

    @GetMapping("/page/{name}")
    public Result<PageInfo<AdvertiserInfo>> page(@PathVariable String name,
                                                 @RequestParam(defaultValue = "1") Integer pageNum,
                                                 @RequestParam(defaultValue = "5") Integer pageSize,
                                                 HttpServletRequest request) {
        return Result.success(advertiserInfoService.findPage(name, pageNum, pageSize, request));
    }
}

有需要开发的也可以找我。

不管是社招还是校招基础都是非常重要的。

虽然招聘要求上写的要精通很多的技术,但是其实对于开发来说,如果基础不行,直接pass。

我曾经面试过一个三年开发经验的人,当时项目经验表现非常好,但是有几个基础的问题没有回答好,十分的拉胯。

例如不知道http和https、存储过程表达不清、TCP和UDP的过程不清,redis应用场景不知道。

下面都是面试常问的:

Java:集合、反射、并发、多线程、字符区别、jvm、内存运行、垃圾回收。

Mysql:索引、优化、存储过程、事务、日志。

Spring:AOP、IOC、Bean、配置方式、事务管理。

当然还有计算机408的,也得刷。

总之,没事的时候多去刷题。好多公司的题目重复率极高,公司来来回回就那些题。

题刷多了,可以试着给自己出套题。

我是程序员小孟,感谢点赞、关注、评论。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务