基于springboot在线玩具商城交易平台的设计与实现

news2025/7/23 21:24:08

 

随着科技创新不断突破玩具界限,特别是随着智能时代到来,电子游戏的兴起对传统玩具行业带来了冲击,智能玩具应运而生,成为新产品方向。智能玩具受消费者青睐,

随着电子商务的发展,其在我国的经济地位越来越重要[3],一大批电子商务 应用逐渐被开发出来,例如,阿里巴巴旗下的淘宝,天猫,亚马逊,京东等,这 些都已成为流行的电子商务系统。互联网已经逐渐引发新的产业革命,在当今经 济领域中依靠互联网的电子商务已经越来越重要。本文主要在了解这些背景的情 况下,设计出一款电子商务系统用于在线交易玩具商品,给企业以及消费者提供一个 可信赖的购物平台。

本商城网站采用B/S结构,web开发,用户自己在浏览器中输入网址来浏览网页中的信息。 采用mysql数据库来存储所有动态数据,本网站从技术方向来说,分为前端页面和后台逻辑开发,页面设计使用html+js+jquery技术,后台使用springboot+JPA。将IDEA作为编译环境,Java作为本网站的开发语言来设计开发。网上玩具商城系统开发环境如表1-1所示。

表1-1 系统开发环境表

操作平台:

Windows 10

硬件平台:

  CPU:i7

内存: 8G

 硬件平台:

硬盘:500GB

数据库:

MySql

 开发工具:

  IDEA

开发浏览器:

Google,火狐

网站站的设计与实现采用IDEA+jdk1.8作为开发环境,页面设计使用html技术和前端框架bootstrap,后台采用springboot+JPA+MySql来实现。开发过程应用了MVC模式

开发环境

本网站以IDEA作为集成开发环境,后台服务器采用springboot内置的tomcat,软件开发工具包选用JDK1.8。

JDK作为java开发必备的环境,IDEA才能正常工作。IDEA是一个优秀成熟的java开发工具,已经用了几十年了,不管是学生还是公司的开发人员的不二之选,

页面设计

 本系统采用html作为前端显示。html学习简单易懂,大部分学生和老师都在用,html在配合前端框架bootstrap或者其他前端框架的时候开发非常简易,而且快速,是作为开发前端显示的良好选择。

后台设计

   后台采用springboot+JPA作为后台框架。springboot的目的是为了简化Spring应用的搭建以及开发过程,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,springboot整合了所有的框架。

 

 

本系统采用支付宝沙箱支付,关键代码如下:

package com.scut.mall.controller.user;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.google.gson.Gson;
import com.scut.mall.entity.Order;
import com.scut.mall.entity.OrderItem;
import com.scut.mall.entity.User;
import com.scut.mall.entity.pojo.ResultBean;
import com.scut.mall.service.OrderService;
import com.scut.mall.utils.AlipayConfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

/**
 * @ Author     :java
 * @ Date       :2022/4/22 23:47
 * @ Description:订单控制层类
 * @ Modified By:
 */
@Controller
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private OrderService orderService;

    /**
     * 打开订单列表页面
     *
     * @return
     */
    @RequestMapping("/toList.html")
    public String toOrderList() {
        return "mall/order/list";
    }

    /**
     * 查询用户订单列表
     *
     * @param pageindex,request
     * @return
     */
    @RequestMapping("/list.do")
    @ResponseBody
    public ResultBean<List<Order>> listData(int pageindex , HttpServletRequest request,
                                            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
        Pageable pageable = PageRequest.of(pageindex, pageSize, Sort.by(Sort.Direction.ASC,"id"));
        List<Order> orders = orderService.findUserOrder(request, pageable).getContent();
        return new ResultBean<>(orders);
    }

    /**
     * 查询订单详情
     *
     * @param orderId
     * @return
     */
    @RequestMapping("/getDetail.do")
    @ResponseBody
    public ResultBean<List<OrderItem>> getDetail(int orderId) {
        List<OrderItem> orderItems = orderService.findItems(orderId);
        return new ResultBean<>(orderItems);
    }

//    /**
//     * 提交订单
//     *
//     * @param addressId
//     * @param request
//     * @param response
//     */
//    @RequestMapping("/submit.do")
//    public void submit(Integer addressId,
//                       HttpServletRequest request,
//                       HttpServletResponse response) throws Exception {
//        orderService.submit(addressId, request, response);
//    }

    @ResponseBody
    @RequestMapping(method = RequestMethod.POST, value = "/submit.do")
    public ResultBean<Boolean> submit(int address, HttpServletRequest request, HttpServletResponse response) throws Exception{

        orderService.submit( address, request, response );
        return new ResultBean<>(true);
    }
    /**
     * 支付方法
     *
     * @param orderId
     */
    @RequestMapping("pay1.do")
    @ResponseBody
    public ResultBean<Boolean> pay1(int orderId,HttpServletRequest request, HttpServletResponse response) throws Exception,IOException {
        orderService.pay(orderId,request,response);
        return new ResultBean<>(true);
    }

    @RequestMapping("pay.do")
    @ResponseBody
    public String pay(int orderId,HttpServletRequest request, HttpServletResponse response) throws Exception,IOException {
    	Order order = orderService.findById(orderId);
    	User user = (User) request.getSession().getAttribute("user");
    	request.getSession().setAttribute("orderId", orderId);
    	String username="";
    	if(user!=null){
    		username=user.getUserName();
    	}
    	Gson gson = new Gson();
    	
    	//商户订单号,商户网站订单系统中唯一订单号,必填
    	String out_trade_no =UUID.randomUUID().toString();  
    	
		//获得初始化的AlipayClient
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		//设置请求参数
		AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
		//这里设置支付后跳转的地址
		alipayRequest.setReturnUrl(AlipayConfig.return_url);
		//alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

		//付款金额,必填
		String total_amount = String.valueOf(order.getTotal());
		//订单名称,必填
		String subject ="用户"+username+"订单";
		//商品描述,可空
		String body = "";

		// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
    	String timeout_express = "5m";

		alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
				+ "\"total_amount\":\""+ total_amount +"\","
				+ "\"subject\":\""+ subject +"\","
				+ "\"body\":\""+ body +"\","
				+ "\"timeout_express\":\""+ timeout_express +"\","
				+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

		//请求
		String result = alipayClient.pageExecute(alipayRequest).getBody();

		return result;
    }
    
    
    @RequestMapping("payreturn")
	public String alipayNotifyNotice( HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("支付成功。。。。");
		
		int orderId = (int) request.getSession().getAttribute("orderId");
		orderService.pay(orderId, request, response);
		 return "mall/order/list";
	
}
    
    /**
     * 确认收货
     * @param orderId
     * @param response
     * @return
     * @throws IOException
     */
    @RequestMapping("receive.do")
    @ResponseBody
    public ResultBean<Boolean> receive(int orderId, HttpServletResponse response) throws IOException {
        orderService.receive(orderId);
        return new ResultBean<>(true);
    }
    /**
     * create by: Cillivian
     * description:分页显示
     * create time: 22:26 2022/4/13 0013
     *
      * @Param: null
     * @return
     */
    @ResponseBody
    @RequestMapping("/getTotal.do")
    public ResultBean<Integer> getTotal() {
        Pageable pageable =  PageRequest.of(1, 15, Sort.by(Sort.Direction.ASC,"id"));
        int total = (int) orderService.findAll(pageable).getTotalElements();
        return new ResultBean<>(total);
    }
}

 

 

 

pom.xml代码文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.scut</groupId>
    <artifactId>mall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mall</name>
    <description>QQ211811 9173 java程序猿 好乐思玩具</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--log4j 2-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
             <version>8.0.12</version> 
          
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.0</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.2</version>
</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--druid连接池 mybatis-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <!--aop 切面-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!--controller -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--html模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <!--SpringBoot2.0thymeleaf布局模块 -->
        <dependency>
            <groupId>nz.net.ultraq.thymeleaf</groupId>
            <artifactId>thymeleaf-layout-dialect</artifactId>
        </dependency>
        <!--热加载代码方便调试用 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--测试框架-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.1.0.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <!--JSON-->
        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
            <version>2.9.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
             <groupId>com.alipay.sdk</groupId>
             <artifactId>alipay-sdk-java</artifactId>
             <version>3.1.0</version>
         </dependency>
       <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

<repositories>
        <repository>
            <id>maven-ali</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>fail</checksumPolicy>
            </snapshots>
        </repository>
</repositories>

</project>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring boot酒店会员点餐系统毕业设计源码072005

Springboot酒店会员点餐系统 摘 要 进入21世纪以来&#xff0c;计算机有了迅速的发展。计算机应用、信息技术全面渗透到了人类社会的各个方面&#xff0c;信息化已成为世界经济和社会发展的大趋势。―企业的管理也从人工操作变得更加自动化、智能化和高效化。如果复杂的工作光靠…

PMP大家都是怎么备考的?使用什么工具可以分享一下吗?

这里分享PMP理论中的4个工具&#xff0c;在人生管理和项目管理中是通用的。所有的工具&#xff0c;只有在对的时间&#xff0c;用在对的地方&#xff0c;才能真正指导实践。 项目经理应符合PMI人才三角。分别为&#xff1a;技术项目管理&#xff1b;领导力&#xff1b;战略和…

腾讯云服务器后台重装后需要配置的一些东西

1、adduser 用户名&#xff08;创建普通用户&#xff09; 2、passwd 用户名&#xff08;给普通用户设置密码&#xff09; 3、userdel -r 用户名&#xff08;删除普通用户&#xff09; 4、修改/etc/sudoers文件&#xff08;给普通用户可以提权的机会&#xff09; 5、sudo yum in…

Hive——Hive常用内置函数总结

✅作者简介&#xff1a;最近接触到大数据方向的程序员&#xff0c;刚入行的小白一枚 &#x1f34a;作者博客主页&#xff1a;皮皮皮皮皮皮皮卡乒的博客 &#x1f34b;当前专栏&#xff1a;Hive学习进阶之旅 &#x1f352;研究方向&#xff1a;大数据方向&#xff0c;数据汇聚&a…

vdsm:添加接口调试demo

目录 添加API接口 2.添加api方法 3.Vdsm-api.yml添加参数 暴露jsonrpc接口&#xff1a; 需要重启vdsmd vdsm-client 调试 本文通过添加一个配置ovs全局参数的接口 添加API接口 文件路径&#xff1a;API.py 2.添加api方法 文件路径&#xff1a;network/api.py 3.Vdsm-ap…

4.2——Node.js的npm和包

目录初识node.jsnode.js的安装和查看版本使用node命令对js文件运行窗口的快捷键fs 文件系统模块fs.readFile() 方法写入文件fs.writeFile()案例——考试成绩整理路径问题path 路径模块路径拼接path.join()获取路径中的文件名path.basename()获取路径中的文件扩展名path.extname…

用Python的Django框架来制作一个RSS阅读器

Django带来了一个高级的聚合生成框架&#xff0c;它使得创建RSS和Atom feeds变得非常容易。 什么是RSS&#xff1f; 什么是Atom&#xff1f; RSS和Atom都是基于XML的格式&#xff0c;你可以用它来提供有关你站点内容的自动更新的feed。 了解更多关于RSS的可以访问 http://www…

[附源码]SSM计算机毕业设计足球队管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]java毕业设计企业记账系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

QT 发布文章遇到问题解决方案

提供了两种可以发布 Qt 程序的方案&#xff0c;建议使用第二种直接生成对应的文件&#xff0c;直接打包就可以 1. 手动复制需要的文件到运行目录下 我们写完 QT 程序当然是要发布或者发给其他需要用到的人&#xff0c;由于找不到Qt6Core.dll,无法继续执行代码,打开 realease …

Python基础语法

一、字面量&#xff1a;在代码中&#xff0c;被写下来的固定的值 二、注释 /增加代码的可读性 单行注释 #空格注释文字内容 &#xff08;加空格只是规范&#xff09;#右边 多行注释 一对三个双引号 """注释内容""" 三、变量 -->程序运行时…

Linux基础内容(12)—— 程序地址空间

目录 1.误区和它的由来 2.虚拟地址的证明 3.虚拟地址的实现 1.虚拟空间的解释 2.操作系统管理和规划虚拟空间 3.虚拟地址与物理地址的联系 4.多进程的虚拟地址解释 5.磁盘中可执行文件的地址 6.进程地址空间出现的原因 接上面内容 Linux基础内容&#xff08;11&#…

在排序数组中查找元素的第一个和最后一个位置 - 力扣中等

在排序数组中查找元素的第一个和最后一个位置 题目链接 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间…

2022 年 10 月 NFT 报告

Sept. 13, 2022, Daniel Data Source: October 2022 NFT Report (ENG) 10 月对于区块链来说是一个相对沉闷的月份&#xff0c;没有巨大的市场波动、项目启动或融资轮次。 由于宏观环境依然严峻&#xff0c;NFT 市场自夏末以来继续停滞不前。 从上个月的报告开始&#xff0c;F…

精准配置无线接入点发射功率

目录 1、为什么需要调节无线接入点的发射功率 2、无线接入点发送功率配置原则 2.1 802.11管理帧发射功率对接入行为影响 2.2 802.11数据帧发射功率对接入质量的影响 2.3 802.11管理帧、数据帧发射功率协调原则 1、数据帧发射功率务必大于等于管理帧发射功率 2、高频射频…

DOX-Poloxamer/DBCO-PEG-DOX 阿霉素修饰泊洛沙姆/二苯基环辛-聚乙二醇-阿霉素的探究

小编这里分享了DOX-Poloxamer/DBCO-PEG-DOX 阿霉素修饰泊洛沙姆/二苯基环辛-聚乙二醇-阿霉素的探究&#xff0c;和小编一起来看&#xff01; DBCO&#xff08;二苯并环辛炔&#xff09;是一种环炔烃&#xff0c;可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反…

【毕业设计】机器视觉答题卡识别系统 - python 深度学习

文章目录1 简介2 什么是机器视觉3 实现步骤4 最后1 简介 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&#xff0c;各个学校对毕设的要求越来越高&#xff0c;难度也…

Cy7-NH2/amine氨基修饰荧光染料

伯胺基(primary amine)是生物标记反应中常用的基团。蛋白表面赖氨酸侧链(residue)官能团就是伯氨基,伯胺基可以和NHS活化酯(N-羟基琥珀酰亚胺酯,N-hydroxysuccinimide ester,succinimidyl ester),异氰酸酯(-NCS,isothiocyanate)或其它活化基团反应生成稳定链接,从而把Cy7分子连…

标志寄存器

标志寄存器 文章目录标志寄存器1.标志寄存器概念1.1 零标志位(ZF)1.2 奇偶标志位(PF)1.3 符号标志符(SF)1.4 进位标志符(CF)1.5溢出标志符(OF)2.adc指令和sbb指令3.cmp指令4.检测比较结果的条件转移指令5.DF标志和串传送指令6.pushf和popf1.标志寄存器概念 CPU内部的寄存器中&a…

UG NX 12装配——组件位置:装配约束

利用装配约束在装配中定位组件。 选择【装配】【组件】【装配约束】命令&#xff0c;或单击【装配】工具条上的【装配约束】按钮出现【装配约束】对话框。 &#xff08;1&#xff09;接触对齐 接触对齐约束可约束两个组件&#xff0c;使其彼此接触或对齐。这是最常用的约束。…