基于SSM的农副产品交易平台

基于SSM的农副产品交易平台

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

中国是世界上最大的农业生产国,其农产品的产量和品种非常丰富。中国的农产品供应十分充足,产量稳定,品质优良,价格实惠,受到市场欢迎。 中国农产品是指在中国境内以农业生产活动所产出的农业产品。中国农业产品主要有水果、蔬菜、粮…
另外,在农业技术改良方面,中国也不断努力,将传统农业技术与现代科技相结合,以提高农产品的产量和品质。

二、项目技术简介:

  1. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  2. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  3. Jsp:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

    JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。

三、系统功能模块介绍:

请添加图片描述

四、数据库设计:

1:car(car)

字段名类型默认值列注释
idint(20)NULL
item_idint(20)NULL
user_idint(20)NULL
numint(20)NULL
priceVARCHAR(255)NULL

2:comment(comment)

字段名类型默认值列注释
idint(20)NULL
user_idint(20)NULL
item_idint(20)NULL
contentvarchar(200)NULL
addTimetimestamp(0)NULL

3:item(item)

字段名类型默认值列注释
idint(20)NULL
namevarchar(200)NULL
pricevarchar(200)NULL
zkint(20)NULL
scNumint(20)NULL
gmNumint(20)NULL
url1varchar(200)NULL
url2varchar(200)NULL
url3varchar(200)NULL
url4varchar(200)NULL
url5varchar(200)NULL
mstextNULL
pam1varchar(200)NULL
pam2varchar(200)NULL
pam3varchar(200)NULL
val1varchar(200)NULL
val2varchar(200)NULL
val3varchar(200)NULL
typeint(20)NULL
category_id_oneint(20)NULL
category_id_twoint(20)NULL
isDeleteint(20)NULL

4:item_category(item_category)

字段名类型默认值列注释
idint(20)NULL
namevarchar(200)NULL
pidint(20)NULL
isDeleteint(20)NULL

5:item_order(item_order)

字段名类型默认值列注释
idint(20)NULL
item_idint(20)NULL
user_idint(20)NULL
codevarchar(200)NULL
addTimetimestamp(0)NULL
totalvarchar(200)NULL
isDeleteint(20)NULL
statusint(20)NULL

6:manage(manage)

字段名类型默认值列注释
idint(20)NULL
userNamevarchar(200)NULL
passWordvarchar(200)NULL
realNamevarchar(200)NULL

7:message(message)

字段名类型默认值列注释
idint(20)NULL
namevarchar(200)NULL
contentvarchar(200)NULL
phonevarchar(200)NULL

8:news(news)

字段名类型默认值列注释
idint(20)NULL
namevarchar(200)NULL
contenttextNULL
addTimetimestamp(0)NULL

9:order_detail(order_detail)

字段名类型默认值列注释
idint(11)NULL
item_idint(255)NULL
order_idint(11)NULL
statusint(11)NULL0.未退货1已退货
numint(11)NULL
totalvarchar(255)NULL

10:sc(sc)

字段名类型默认值列注释
idint(20)NULL
item_idint(20)NULL
user_idint(20)NULL

11:user(user)

字段名类型默认值列注释
idint(20)NULL
userNamevarchar(200)NULL
passWordvarchar(200)NULL
phonevarchar(200)NULL
realNamevarchar(200)NULL
sexvarchar(200)NULL
addressvarchar(200)NULL
emailvarchar(200)NULL

12:user_order(user_order)

字段名类型默认值列注释
order_idint(20)NULL
order_novarchar(200)NULL
user_idvarchar(200)NULL
order_statusint(20)NULL
order_amountVARCHAR(255)NULL

五、功能模块:

  1. 首页:首页向用户推荐热门商品等数据

    首页

  2. 购物车:用户可以把自己喜欢的农产品添加至购物车

    购物车

  3. 个人中心:个人中心可以查看用户订单信息,修改自己的个人信息,商品收藏等信息

    个人中心

  4. 模拟支付:用户在购买农产品之后,会进行支付宝沙箱的模拟支付

    模拟支付

  5. 后台管理:后台管理主要对前台商品,商品分类,订单等一系列数据进行管理操作

    后台管理

六、代码示例:

首页
   * 分页查询商品列表
     */
    @RequestMapping("/findBySql")
    public String findBySql(Model model, Item item){
        String sql = "select * from item where isDelete = 0 ";
        if(!isEmpty(item.getName())){
            sql += " and name like '%" + item.getName() + "%' ";
        }
        sql += " order by id desc";
        Pager<Item> pagers = itemService.findBySqlRerturnEntity(sql);
        model.addAttribute("pagers",pagers);
        model.addAttribute("obj",item);
        return "item/item";
    }
购物车

    @RequestMapping("/exAdd")
    @ResponseBody
    public String exAdd(Car car, HttpServletRequest request){
        JSONObject js = new JSONObject();
        Object attribute = request.getSession().getAttribute(Consts.USERID);
        if(attribute==null){
            js.put(Consts.RES,0);
            return js.toJSONString();
        }
        //保存到购物车
        Integer userId = Integer.valueOf(attribute.toString());
        car.setUserId(userId);
        Item item = itemService.load(car.getItemId());
        String price = item.getPrice();
        Double valueOf = Double.valueOf(price);
        car.setPrice(valueOf);
        if(item.getZk()!=null){
            valueOf = valueOf*item.getZk()/10;
            BigDecimal bg = new BigDecimal(valueOf).setScale(2, RoundingMode.UP);
            car.setPrice(bg.doubleValue());
            valueOf = bg.doubleValue();
        }
        Integer num = car.getNum();
        Double t = valueOf*num;

        BigDecimal bg = new BigDecimal(t).setScale(2, RoundingMode.UP);
        double doubleValue = bg.doubleValue();
        car.setTotal(doubleValue+"");
        carService.insert(car);
        js.put(Consts.RES,1);
        return js.toJSONString();
    }
个人中心
 /**
     * 我的订单
     */
    @RequestMapping("/my")
    public String my(Model model, HttpServletRequest request){
        Object attribute = request.getSession().getAttribute(Consts.USERID);
        if(attribute==null){
            return "redirect:/login/uLogin";
        }
        Integer userId = Integer.valueOf(attribute.toString());
        //全部订单
        String sql = "select * from item_order where user_id="+userId+" order by id desc";
        List<ItemOrder> all = itemOrderService.listBySqlReturnEntity(sql);
        //待发货
        String sql2 = "select * from item_order where user_id="+userId+" and status=0 order by id desc";
        List<ItemOrder> dfh = itemOrderService.listBySqlReturnEntity(sql2);

        //已取消
        String sql3 = "select * from item_order where user_id="+userId+" and status=1 order by id desc";
        List<ItemOrder> yqx = itemOrderService.listBySqlReturnEntity(sql3);
        //已发货
        String sql4 = "select * from item_order where user_id="+userId+" and status=2 order by id desc";
        List<ItemOrder> dsh = itemOrderService.listBySqlReturnEntity(sql4);
        //已收货
        String sql5 = "select * from item_order where user_id="+userId+" and status=3 order by id desc";
        List<ItemOrder> ysh = itemOrderService.listBySqlReturnEntity(sql5);

        model.addAttribute("all",all);
        model.addAttribute("dfh",dfh);
        model.addAttribute("yqx",yqx);
        model.addAttribute("dsh",dsh);
        model.addAttribute("ysh",ysh);
        return "itemOrder/my";
    }
模拟支付
@RequestMapping("/exAdd")
    @ResponseBody
    public String exAdd(@RequestBody List<CarDto> list,HttpServletRequest request){
        Object attribute = request.getSession().getAttribute(Consts.USERID);
        JSONObject js = new JSONObject();
        if(attribute==null){
            js.put(Consts.RES,0);
            return js.toJSONString();
        }
        Integer userId = Integer.valueOf(attribute.toString());
        User byId = userService.getById(userId);
        if(StringUtils.isEmpty(byId.getAddress())){
            js.put(Consts.RES,2);
            return js.toJSONString();
        }
        List<Integer> ids = new ArrayList<>();
        BigDecimal to = new BigDecimal(0);
        for(CarDto c:list){
            ids.add(c.getId());
            Car load = carService.load(c.getId());
            to = to.add(new BigDecimal(load.getPrice()).multiply(new BigDecimal(c.getNum())));
        }
        ItemOrder order = new ItemOrder();
        order.setStatus(0);
        order.setCode(getOrderNo());
        order.setIsDelete(0);
        order.setTotal(to.setScale(2,BigDecimal.ROUND_HALF_UP).toString());
        order.setUserId(userId);
        order.setAddTime(new Date());
        itemOrderService.insert(order);

        //订单详情放入orderDetail,删除购物车
        if(!CollectionUtils.isEmpty(ids)){
            for(CarDto c:list){
                Car load = carService.load(c.getId());
                OrderDetail de = new OrderDetail();
                de.setItemId(load.getItemId());
                de.setOrderId(order.getId());
                de.setStatus(0);
                de.setNum(c.getNum());
                de.setTotal(String.valueOf(c.getNum()*load.getPrice()));
                orderDetailService.insert(de);
                //修改成交数
                Item load2 = itemService.load(load.getItemId());
                load2.setGmNum(load2.getGmNum()+c.getNum());
                itemService.updateById(load2);
                //删除购物车
                carService.deleteById(c.getId());
            }
        }
        js.put(Consts.RES,1);
        return js.toJSONString();
    }
后台管理
 @RequestMapping("/findBySql")
    public String findBySql(Model model,HttpServletRequest request){
        Object attribute = request.getSession().getAttribute(Consts.USERID);
        if(attribute==null){
            return "redirect:/login/uLogin";
        }
        Integer userId = Integer.valueOf(attribute.toString());
        String sql = "select * from sc where user_id="+userId+" order by id desc";
        Pager<Sc> pagers = scService.findBySqlRerturnEntity(sql);
        model.addAttribute("pagers",pagers);
        return "sc/my";
    }

七、项目总结:

  之前在课本上学习过软件开发的知识,包括开发流程的了解,开发技术的学习,还有如何进行系统需求分析与设计,老师也选取了比较有代表性的管理系统在课堂上进行讲解,并在课后布置作业让我们练习,期间老师也让我们也对系统实现与测试进行了了解。所以面对本次网上商品订单转手系统的开发制作,我的脑海里还是有比较清晰的思路。在系统制作中,以及配套文档的编写中,我都是按照软件开发流程一步步开展我的工作。

    从系统的角度讲,网上商品订单转手系统制作中,它的难点在于功能的确定,对系统结构的设计,还有设计性能优良的数据库,以及采用成熟的技术实现系统功能等,这些是我面临的困难。针对这些难点,我采取了一定的措施。在不知道系统的功能时,我在网上寻找了很多相似系统,并把这些系统的大致功能进行了记载,把对本系统有用的功能部分进行了采用,另外,我也从网上获取了大量关于系统设计方面的知识,包括系统模块划分,设计原则,数据库表的设计与创建等知识,也从软件开发类博客中,获取了程序编码的技术知识,包括数据增删改代码模块的编写与使用。在本系统编码完成其对应功能后,我对系统的所有功能进行了耐心的测试,最后发现我开发的系统是合格的,可以进行验收。因为本系统除了具备简洁美观的界面外,在功能上可以满足使用者对于数据操作的需求,并且本系统的功能与系统分析设计的功能保持高度一致,而且系统运行稳定,面对用户的误操作,也建立了报错反馈机制,系统的质量可靠。唯一不足的就是系统数据表的设计在字段考虑上并不全面,为字段匹配的数据类型也不精确,还有系统代码部分,有很多地方还没有进行注释,代码编写不够简洁等。

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值