基于springboot的校园二手交易商城

校园二手交易商城

目的意义

随着人们生活水平的普遍提高,学生各种消耗品升级换代更新加快,面临着大量物品的处置问题。课本,电脑、自行车、等都成为了较为普遍的闲置交易物品处理对象。在这样的背景下,大学校园闲置物品交易平台也应运而生。基于IDEA+Mysql+Springboot+DataGrip的搭配,开发出一套功能齐全、界面优美、使用便捷的校园二手交易系统。

主要功能模块概述

(管理员默认入口 localhost/admin,默认两个管理员:猫儿、猫给这儿,管理员账号密码:admin 123456)
(1)登录、注册、重置密码模块
登录可以账号进行登录
注册的时候会判断账号是否以及存在会判断账号的格式
重置密码时会验证账号格式,判断是否存在该用户
(2)商品模块
发布商品
修改商品
商品详情界面
首页界面
商品列表界面
商品搜索界面
(3)评论模块
查看商品下所有评论及回复
评论回复以及对应删除操作
(4)个人中心
修改个人信息
修改密码
个人对商品的操作
(5)售出记录模块
用户设置商品为售出状态时存入售出记录
用户分页查看所有的售出记录
用户删除售出记录
(6)后台操作功能
管理员登录
查看用户列表
管理员审核商品
管理员分页展示各类商品信息
(聊天,评论等等功能)

关键技术

(1)Dao数据库技术用于对MySQL数据库的访问
(2)LayUI分页技术用于系统页面的分页展览
(3)加盐加密技术用于对密码的安全性处理
(4)拦截器技术用于对页面的定向处理
(5)Mybatis+Springboot框架的使用

实现与测试

(1)首页
在这里插入图片描述

(2)后台管理员登录
在这里插入图片描述

(3)显示商品信息

主要代码如下:

@AllArgsConstructor//全参构造
@NoArgsConstructor//无参构造
@Data
@Accessors(chain = true)//链式写法
public class Commimages implements Serializable {
    private static final long serialVersionUID = 1L;
    /**图片id*/
   private String id;
    /**商品id*/
   private String commid;
    /**图片*/
   private String image;
    /**发布时间*/
   private Date createtime;

    /**图片状态*/
    private Integer imagestatus;
}

(4)添加商品

主要代码如下:
@AllArgsConstructor//全参构造
@NoArgsConstructor//无参构造在这里插入图片描述

@Data
@Accessors(chain = true)//链式写法
public class Commodity implements Serializable {
    private static final long serialVersionUID = 1L;
    /**商品id*/
    private String commid;
    /**商品名*/
    private String commname;
    /**商品描述*/
    private String commdesc;
    /**视频*/
    private String videourl;
    /**原价*/
    private BigDecimal orimoney;
    /**售价*/
    private BigDecimal thinkmoney;
    /**商品所在学校*/
    private String school;
    /**发布时间*/
    private Date createtime;
    /**修改时间*/
    private Date updatetime;
    /**结束时间*/
    private Date endtime;
    /** 0违规 1正常 2删除  3待审核*/
    private Integer commstatus;
    /**常用选项:自提,可小刀,不议价等选项*/
    private String common;
    /**常用类别字段*/
    private String common2;
    /**商品其他图集合 */
    private List<String> otherimg;
    /**浏览量*/
    private Integer rednumber;
    /**商品类别*/
    private String category;
    /**简介图*/
    private String image;
    /**用户id */
    private String userid;
}

(5)查询商品
在这里插入图片描述

主要代码如下:在这里插入代码片
/** 搜索商品,前端传入当前页数(nowPaging)、搜索的商品名(commname)*/
@GetMapping("/product/search/{nowPaging}/{commname}")
@ResponseBody
public ResultVo searchCommodity(@PathVariable("nowPaging") Integer page, @PathVariable("commname") String commname){
    List<Commodity> commodityList = commodityService.queryCommodityByName((page - 1) * 20, 20, commname);
    if(!StringUtils.isEmpty(commodityList)){//如果有对应商品
        for (Commodity commodity : commodityList) {
            /**查询商品对应的其它图片*/
            List<String> imagesList = commimagesService.LookGoodImages(commodity.getCommid());
            commodity.setOtherimg(imagesList); }
        return new ResultVo(true,StatusCode.OK,"查询成功",commodityList);
    }else{return new ResultVo(true,StatusCode.ERROR,"没有相关商品"); }}

(6)修改删除商品

在这里插入图片描述


主要代码如下:

/** 修改商品
1、修改商品信息
2、修改商品的其他图的状态
3、插入商品的其他图
 */
@PostMapping("/changegoods/rel")
@ResponseBody
public String changegoods(@RequestBody Commodity commodity, HttpSession session){
    String userid = (String) session.getAttribute("userid");
    commodity.setUpdatetime(new Date()).setCommstatus(3);
    commodity.setCommon(commodity.getCommon()+"、"+commodity.getCommon2());//常用选项拼接
    commodityService.ChangeCommodity(commodity);
    commimagesService.DelGoodImages(commodity.getCommid());
    List<Commimages> commimagesList=new ArrayList<>();
    for (String list:commodity.getOtherimg()) {
        commimagesList.add(new Commimages().setId(KeyUtil.genUniqueKey()).setCommid(commodity.getCommid()).setImage(list));}
    commimagesService.InsertGoodImages(commimagesList);
    /**发出待审核系统通知*/
    Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname("商品审核")
            .setWhys("您的商品 <a href=/product-detail/"+commodity.getCommid()+" style=\"color:#08bf91\" target=\"_blank\" >"+commodity.getCommname()+"</a> 进入待审核队列,请您耐心等待。");noticesService.insertNotices(notices);return "0";}

(7)验证码登录
在这里插入图片描述

主要代码如下:
public class ValidateCode {
    private int width = 160; // 图片的宽度。
    private int height = 60;// 图片的高度。
    private int codeCount = 4;// 验证码字符个数
    private int lineCount = 100; // 验证码干扰线数
    public static String code = null;  // 验证码  
    private BufferedImage buffImg = null; // 验证码图片Buffer
    private char[] codeSequence = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
    public ValidateCode() {this.createCode(); }
    public ValidateCode(int width, int height) {
        this.width = width;
        this.height = height;
        this.createCode();}
    public ValidateCode(int width, int height, int codeCount, int lineCount) {
        this.width = width;
        this.height = height;
        this.codeCount = codeCount;
        this.lineCount = lineCount;
        this.createCode();}
    public void createCode() {
        int x = 0, fontHeight = 0, codeY = 0;
        int red = 0, green = 0, blue = 0;
        x = width / (codeCount + 2);//每个字符的宽度
        fontHeight = height - 2;//字体的高度
        codeY = height - 4;        
        buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 图像buffer
        Graphics2D g = buffImg.createGraphics();
        Random random = new Random(); // 生成随机数
        g.setColor(Color.WHITE);// 将图像填充为白色
        g.fillRect(0, 0, width, height);
        ImgFontByte imgFont = new ImgFontByte();// 创建字体
        Font font = imgFont.getFont(fontHeight);
        g.setFont(font);
        for (int i = 0; i < lineCount; i++) {
            int xs = random.nextInt(width);
            int ys = random.nextInt(height);
            int xe = xs + random.nextInt(width / 8);
            int ye = ys + random.nextInt(height / 8);
            red = random.nextInt(255);
            green = random.nextInt(255);
            blue = random.nextInt(255);
            g.setColor(new Color(red, green, blue));
            g.drawLine(xs, ys, xe, ye); }
        // randomCode记录随机产生的验证码
        StringBuffer randomCode = new StringBuffer();
        // 随机产生codeCount个字符的验证码。
        for (int i = 0; i < codeCount; i++) {
            String strRand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);
            // 产生随机的颜色值,让输出的每个字符的颜色值都将不同。
            red = random.nextInt(255);
            green = random.nextInt(255);
            blue = random.nextInt(255);
            g.setColor(new Color(red, green, blue));
            g.drawString(strRand, (i + 1) * x, codeY);
            // 将产生的四个随机数组合在一起。
            randomCode.append(strRand);  }
        // 将四位数字的验证码保存到Session中。
        code = randomCode.toString();}
    public void write(String path) throws IOException {
        OutputStream sos = new FileOutputStream(path);
this.write(sos); }
    public void write(OutputStream sos) throws IOException {
        ImageIO.write(buffImg, "png", sos);sos.close();}
    public BufferedImage getBuffImg() {return buffImg;}
    public static String getCode() {return code; }}

源代码链接:https://pan.baidu.com/s/1RL0l2jmvo8bp3rLOsrCiPw
提取码:CXJK

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChengKe---Dawn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值