springboot基于Android的跳蚤市场源码和论文

伴随着我国社会的发展,人民生活质量日益提高。互联网逐步进入千家万户,改变传统的管理方式,以互联网为基础,利用java技术,结合Spring Boot框架和MySQL数据库开发设计一套跳蚤市场,提高工作效率的同时,减轻管理者工作方面的压力,使他们能够将更多精力投入到市场上,更好的完成用户的核心业务。

本论文将对跳蚤市场相关的技术以及系统开发技术进行分析和研究,在深入了解跳蚤市场管理的过程以及合格要求后,结合管理员和用户的实际情况,研究跳蚤市场的设计与实现,期望通过该系统能够将管理员和用户的数据管理工作规范化、简单化,从而提高管理工作的效率。本论文的主要内容包括:

第一,研究分析java技术,结合管理员和用户日常管理方式和安排,进行跳蚤市场信息的数据库设计和系统功能,并对每个模块进行说明。

第二,陈列说明该系统实现所采用的架构、系统搭建采用的服务器、系统开发环境和使用的工具,以及系统后台采用的数据库。

最后,对系统进行全面测试,主要包括功能测试、查询性能测试、安全性能测试。分析系统存在的不足以及将来改进的方向。

关键词:跳蚤市场;java;MySQL数据库

springboot基于Android的跳蚤市场源码和论文027

演示视频:

springboot基于Android的跳蚤市场源码和论文

Abstract

With the development of our society, the quality of life of the people is improving day by day. The Internet has gradually entered thousands of households, changing the traditional management mode, based on the Internet, using Java technology, combined with Spring Boot framework and MySQL database to develop and design a set of flea market, improve work efficiency, reduce the pressure of managers, so that they can put more energy into the market, better complete the core business of users.

This thesis will analyze and research the technology related to the flea market and the system development technology, after in-depth understanding of the process and qualified requirements of the flea market management, combined with the actual situation of administrators and users, study the design and implementation of the flea market, and expect that the data management of administrators and users can be standardized and simplified through this system, so as to improve the efficiency of management. The main contents of this paper include:

First, research and analysis of Java technology, combined with the daily management methods and arrangements of administrators and users, the database design and system functions of flea market information, and explain each module.

Second, the architecture used to implement the system, the server used to build the system, the system development environment and the tools used, and the database used in the background of the system are displayed.

Finally, the system is comprehensively tested, mainly including functional testing, query performance testing, and security performance testing. Analyze the shortcomings of the system and the direction of future improvement.

Keywords: flea market; .java; MySQL database


package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 企业
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/gongsi")
public class GongsiController {
    private static final Logger logger = LoggerFactory.getLogger(GongsiController.class);

    private static final String TABLE_NAME = "gongsi";

    @Autowired
    private GongsiService gongsiService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private DanganService danganService;//学生档案
    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private ExampaperService exampaperService;//试卷
    @Autowired
    private ExampapertopicService exampapertopicService;//试卷选题
    @Autowired
    private ExamquestionService examquestionService;//试题表
    @Autowired
    private ExamrecordService examrecordService;//考试记录表
    @Autowired
    private ExamredetailsService examredetailsService;//答题详情表
    @Autowired
    private ExamrewrongquestionService examrewrongquestionService;//错题表
    @Autowired
    private FalvfaguiService falvfaguiService;//法律法规
    @Autowired
    private FalvfaguiCollectionService falvfaguiCollectionService;//法律法规收藏
    @Autowired
    private FalvfaguiLiuyanService falvfaguiLiuyanService;//法律法规留言
    @Autowired
    private FenxiService fenxiService;//就业分析
    @Autowired
    private ForumService forumService;//论坛
    @Autowired
    private JianliService jianliService;//简历
    @Autowired
    private LaoshiService laoshiService;//老师
    @Autowired
    private ToudiService toudiService;//简历投递
    @Autowired
    private XinwenService xinwenService;//新闻资讯
    @Autowired
    private XinwenCollectionService xinwenCollectionService;//新闻资讯收藏
    @Autowired
    private XinwenLiuyanService xinwenLiuyanService;//新闻资讯留言
    @Autowired
    private XinxiService xinxiService;//学生信息
    @Autowired
    private XuanchuanService xuanchuanService;//宣传
    @Autowired
    private YonghuService yonghuService;//学生
    @Autowired
    private ZhaopinService zhaopinService;//职位招聘
    @Autowired
    private ZhaopinCollectionService zhaopinCollectionService;//职位收藏
    @Autowired
    private ZhaopinLiuyanService zhaopinLiuyanService;//招聘咨询
    @Autowired
    private UsersService usersService;//管理员


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("学生".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("企业".equals(role))
            params.put("gongsiId",request.getSession().getAttribute("userId"));
        else if("老师".equals(role))
            params.put("laoshiId",request.getSession().getAttribute("userId"));
        params.put("gongsiDeleteStart",1);params.put("gongsiDeleteEnd",1);
        CommonUtil.checkMap(params);
        PageUtils page = gongsiService.queryPage(params);

        //字典表数据转换
        List<GongsiView> list =(List<GongsiView>)page.getList();
        for(GongsiView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        GongsiEntity gongsi = gongsiService.selectById(id);
        if(gongsi !=null){
            //entity转view
            GongsiView view = new GongsiView();
            BeanUtils.copyProperties( gongsi , view );//把实体数据重构到view中
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody GongsiEntity gongsi, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,gongsi:{}",this.getClass().getName(),gongsi.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");

        Wrapper<GongsiEntity> queryWrapper = new EntityWrapper<GongsiEntity>()
            .eq("username", gongsi.getUsername())
            .or()
            .eq("gongsi_phone", gongsi.getGongsiPhone())
            .eq("gongsi_delete", 1)
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        GongsiEntity gongsiEntity = gongsiService.selectOne(queryWrapper);
        if(gongsiEntity==null){
            gongsi.setGongsiDelete(1);
            gongsi.setCreateTime(new Date());
            gongsi.setPassword("123456");
            gongsiService.insert(gongsi);
            return R.ok();
        }else {
            return R.error(511,"账户或者联系方式已经被使用");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody GongsiEntity gongsi, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,gongsi:{}",this.getClass().getName(),gongsi.toString());
        GongsiEntity oldGongsiEntity = gongsiService.selectById(gongsi.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
        if("".equals(gongsi.getGongsiPhoto()) || "null".equals(gongsi.getGongsiPhoto())){
                gongsi.setGongsiPhoto(null);
        }

            gongsiService.updateById(gongsi);//根据id更新
            return R.ok();
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<GongsiEntity> oldGongsiList =gongsiService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        ArrayList<GongsiEntity> list = new ArrayList<>();
        for(Integer id:ids){
            GongsiEntity gongsiEntity = new GongsiEntity();
            gongsiEntity.setId(id);
            gongsiEntity.setGongsiDelete(2);
            list.add(gongsiEntity);
        }
        if(list != null && list.size() >0){
            gongsiService.updateBatchById(list);
        }

        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
        try {
            List<GongsiEntity> gongsiList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            GongsiEntity gongsiEntity = new GongsiEntity();
//                            gongsiEntity.setUsername(data.get(0));                    //账户 要改的
//                            gongsiEntity.setPassword("123456");//密码
//                            gongsiEntity.setGongsiName(data.get(0));                    //企业名称 要改的
//                            gongsiEntity.setGongsiTypes(Integer.valueOf(data.get(0)));   //企业类型 要改的
//                            gongsiEntity.setGongsiPhone(data.get(0));                    //联系方式 要改的
//                            gongsiEntity.setGongsiEmail(data.get(0));                    //邮箱 要改的
//                            gongsiEntity.setGongsiPhoto("");//详情和图片
//                            gongsiEntity.setGongsiContent("");//详情和图片
//                            gongsiEntity.setGongsiDelete(1);//逻辑删除字段
//                            gongsiEntity.setCreateTime(date);//时间
                            gongsiList.add(gongsiEntity);


                            //把要查询是否重复的字段放入map中
                                //账户
                                if(seachFields.containsKey("username")){
                                    List<String> username = seachFields.get("username");
                                    username.add(data.get(0));//要改的
                                }else{
                                    List<String> username = new ArrayList<>();
                                    username.add(data.get(0));//要改的
                                    seachFields.put("username",username);
                                }
                                //联系方式
                                if(seachFields.containsKey("gongsiPhone")){
                                    List<String> gongsiPhone = seachFields.get("gongsiPhone");
                                    gongsiPhone.add(data.get(0));//要改的
                                }else{
                                    List<String> gongsiPhone = new ArrayList<>();
                                    gongsiPhone.add(data.get(0));//要改的
                                    seachFields.put("gongsiPhone",gongsiPhone);
                                }
                        }

                        //查询是否重复
                         //账户
                        List<GongsiEntity> gongsiEntities_username = gongsiService.selectList(new EntityWrapper<GongsiEntity>().in("username", seachFields.get("username")).eq("gongsi_delete", 1));
                        if(gongsiEntities_username.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(GongsiEntity s:gongsiEntities_username){
                                repeatFields.add(s.getUsername());
                            }
                            return R.error(511,"数据库的该表中的 [账户] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                         //联系方式
                        List<GongsiEntity> gongsiEntities_gongsiPhone = gongsiService.selectList(new EntityWrapper<GongsiEntity>().in("gongsi_phone", seachFields.get("gongsiPhone")).eq("gongsi_delete", 1));
                        if(gongsiEntities_gongsiPhone.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(GongsiEntity s:gongsiEntities_gongsiPhone){
                                repeatFields.add(s.getGongsiPhone());
                            }
                            return R.error(511,"数据库的该表中的 [联系方式] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        gongsiService.insertBatch(gongsiList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }

    /**
    * 登录
    */
    @IgnoreAuth
    @RequestMapping(value = "/login")
    public R login(String username, String password, String captcha, HttpServletRequest request) {
        GongsiEntity gongsi = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("username", username));
        if(gongsi==null || !gongsi.getPassword().equals(password))
            return R.error("账号或密码不正确");
        else if(gongsi.getGongsiDelete() != 1)
            return R.error("账户已被删除");
        String token = tokenService.generateToken(gongsi.getId(),username, "gongsi", "企业");
        R r = R.ok();
        r.put("token", token);
        r.put("role","企业");
        r.put("username",gongsi.getGongsiName());
        r.put("tableName","gongsi");
        r.put("userId",gongsi.getId());
        return r;
    }

    /**
    * 注册
    */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody GongsiEntity gongsi, HttpServletRequest request) {
//    	ValidatorUtils.validateEntity(user);
        Wrapper<GongsiEntity> queryWrapper = new EntityWrapper<GongsiEntity>()
            .eq("username", gongsi.getUsername())
            .or()
            .eq("gongsi_phone", gongsi.getGongsiPhone())
            .andNew()
            .eq("gongsi_delete", 1)
            ;
        GongsiEntity gongsiEntity = gongsiService.selectOne(queryWrapper);
        if(gongsiEntity != null)
            return R.error("账户或者联系方式已经被使用");
        gongsi.setGongsiDelete(1);
        gongsi.setCreateTime(new Date());
        gongsiService.insert(gongsi);

        return R.ok();
    }

    /**
     * 重置密码
     */
    @GetMapping(value = "/resetPassword")
    public R resetPassword(Integer  id, HttpServletRequest request) {
        GongsiEntity gongsi = gongsiService.selectById(id);
        gongsi.setPassword("123456");
        gongsiService.updateById(gongsi);
        return R.ok();
    }

	/**
	 * 修改密码
	 */
	@GetMapping(value = "/updatePassword")
	public R updatePassword(String  oldPassword, String  newPassword, HttpServletRequest request) {
        GongsiEntity gongsi = gongsiService.selectById((Integer)request.getSession().getAttribute("userId"));
		if(newPassword == null){
			return R.error("新密码不能为空") ;
		}
		if(!oldPassword.equals(gongsi.getPassword())){
			return R.error("原密码输入错误");
		}
		if(newPassword.equals(gongsi.getPassword())){
			return R.error("新密码不能和原密码一致") ;
		}
        gongsi.setPassword(newPassword);
		gongsiService.updateById(gongsi);
		return R.ok();
	}



    /**
     * 忘记密码
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request) {
        GongsiEntity gongsi = gongsiService.selectOne(new EntityWrapper<GongsiEntity>().eq("username", username));
        if(gongsi!=null){
            gongsi.setPassword("123456");
            gongsiService.updateById(gongsi);
            return R.ok();
        }else{
           return R.error("账号不存在");
        }
    }


    /**
    * 获取用户的session用户信息
    */
    @RequestMapping("/session")
    public R getCurrGongsi(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        GongsiEntity gongsi = gongsiService.selectById(id);
        if(gongsi !=null){
            //entity转view
            GongsiView view = new GongsiView();
            BeanUtils.copyProperties( gongsi , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }
    }


    /**
    * 退出
    */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }



    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        CommonUtil.checkMap(params);
        PageUtils page = gongsiService.queryPage(params);

        //字典表数据转换
        List<GongsiView> list =(List<GongsiView>)page.getList();
        for(GongsiView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段

        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        GongsiEntity gongsi = gongsiService.selectById(id);
            if(gongsi !=null){


                //entity转view
                GongsiView view = new GongsiView();
                BeanUtils.copyProperties( gongsi , view );//把实体数据重构到view中

                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody GongsiEntity gongsi, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,gongsi:{}",this.getClass().getName(),gongsi.toString());
        Wrapper<GongsiEntity> queryWrapper = new EntityWrapper<GongsiEntity>()
            .eq("username", gongsi.getUsername())
            .or()
            .eq("gongsi_phone", gongsi.getGongsiPhone())
            .andNew()
            .eq("gongsi_delete", 1)
//            .notIn("gongsi_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        GongsiEntity gongsiEntity = gongsiService.selectOne(queryWrapper);
        if(gongsiEntity==null){
            gongsi.setGongsiDelete(1);
            gongsi.setCreateTime(new Date());
            gongsi.setPassword("123456");
        gongsiService.insert(gongsi);

            return R.ok();
        }else {
            return R.error(511,"账户或者联系方式已经被使用");
        }
    }

}

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值