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


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

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

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

    项目演示视频:

    基于springboot玩具商城平台java web玩具玩偶商城毕业设计源码含支付宝沙箱

    表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整合了所有的框架。

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

    1. package com.scut.mall.controller.user;
    2. import com.alipay.api.AlipayClient;
    3. import com.alipay.api.DefaultAlipayClient;
    4. import com.alipay.api.request.AlipayTradePagePayRequest;
    5. import com.google.gson.Gson;
    6. import com.scut.mall.entity.Order;
    7. import com.scut.mall.entity.OrderItem;
    8. import com.scut.mall.entity.User;
    9. import com.scut.mall.entity.pojo.ResultBean;
    10. import com.scut.mall.service.OrderService;
    11. import com.scut.mall.utils.AlipayConfig;
    12. import org.springframework.beans.factory.annotation.Autowired;
    13. import org.springframework.data.domain.PageRequest;
    14. import org.springframework.data.domain.Pageable;
    15. import org.springframework.data.domain.Sort;
    16. import org.springframework.stereotype.Controller;
    17. import org.springframework.web.bind.annotation.RequestMapping;
    18. import org.springframework.web.bind.annotation.RequestMethod;
    19. import org.springframework.web.bind.annotation.RequestParam;
    20. import org.springframework.web.bind.annotation.ResponseBody;
    21. import javax.servlet.http.HttpServletRequest;
    22. import javax.servlet.http.HttpServletResponse;
    23. import java.io.IOException;
    24. import java.util.List;
    25. import java.util.UUID;
    26. /**
    27. * @ Author :java
    28. * @ Date :2022/4/22 23:47
    29. * @ Description:订单控制层类
    30. * @ Modified By:
    31. */
    32. @Controller
    33. @RequestMapping("/order")
    34. public class OrderController {
    35. @Autowired
    36. private OrderService orderService;
    37. /**
    38. * 打开订单列表页面
    39. *
    40. * @return
    41. */
    42. @RequestMapping("/toList.html")
    43. public String toOrderList() {
    44. return "mall/order/list";
    45. }
    46. /**
    47. * 查询用户订单列表
    48. *
    49. * @param pageindex,request
    50. * @return
    51. */
    52. @RequestMapping("/list.do")
    53. @ResponseBody
    54. public ResultBean<List<Order>> listData(int pageindex , HttpServletRequest request,
    55. @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
    56. Pageable pageable = PageRequest.of(pageindex, pageSize, Sort.by(Sort.Direction.ASC,"id"));
    57. List<Order> orders = orderService.findUserOrder(request, pageable).getContent();
    58. return new ResultBean<>(orders);
    59. }
    60. /**
    61. * 查询订单详情
    62. *
    63. * @param orderId
    64. * @return
    65. */
    66. @RequestMapping("/getDetail.do")
    67. @ResponseBody
    68. public ResultBean<List<OrderItem>> getDetail(int orderId) {
    69. List<OrderItem> orderItems = orderService.findItems(orderId);
    70. return new ResultBean<>(orderItems);
    71. }
    72. // /**
    73. // * 提交订单
    74. // *
    75. // * @param addressId
    76. // * @param request
    77. // * @param response
    78. // */
    79. // @RequestMapping("/submit.do")
    80. // public void submit(Integer addressId,
    81. // HttpServletRequest request,
    82. // HttpServletResponse response) throws Exception {
    83. // orderService.submit(addressId, request, response);
    84. // }
    85. @ResponseBody
    86. @RequestMapping(method = RequestMethod.POST, value = "/submit.do")
    87. public ResultBean<Boolean> submit(int address, HttpServletRequest request, HttpServletResponse response) throws Exception{
    88. orderService.submit( address, request, response );
    89. return new ResultBean<>(true);
    90. }
    91. /**
    92. * 支付方法
    93. *
    94. * @param orderId
    95. */
    96. @RequestMapping("pay1.do")
    97. @ResponseBody
    98. public ResultBean<Boolean> pay1(int orderId,HttpServletRequest request, HttpServletResponse response) throws Exception,IOException {
    99. orderService.pay(orderId,request,response);
    100. return new ResultBean<>(true);
    101. }
    102. @RequestMapping("pay.do")
    103. @ResponseBody
    104. public String pay(int orderId,HttpServletRequest request, HttpServletResponse response) throws Exception,IOException {
    105. Order order = orderService.findById(orderId);
    106. User user = (User) request.getSession().getAttribute("user");
    107. request.getSession().setAttribute("orderId", orderId);
    108. String username="";
    109. if(user!=null){
    110. username=user.getUserName();
    111. }
    112. Gson gson = new Gson();
    113. //商户订单号,商户网站订单系统中唯一订单号,必填
    114. String out_trade_no =UUID.randomUUID().toString();
    115. //获得初始化的AlipayClient
    116. AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
    117. //设置请求参数
    118. AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
    119. //这里设置支付后跳转的地址
    120. alipayRequest.setReturnUrl(AlipayConfig.return_url);
    121. //alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
    122. //付款金额,必填
    123. String total_amount = String.valueOf(order.getTotal());
    124. //订单名称,必填
    125. String subject ="用户"+username+"订单";
    126. //商品描述,可空
    127. String body = "";
    128. // 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
    129. String timeout_express = "5m";
    130. alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
    131. + "\"total_amount\":\""+ total_amount +"\","
    132. + "\"subject\":\""+ subject +"\","
    133. + "\"body\":\""+ body +"\","
    134. + "\"timeout_express\":\""+ timeout_express +"\","
    135. + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    136. //请求
    137. String result = alipayClient.pageExecute(alipayRequest).getBody();
    138. return result;
    139. }
    140. @RequestMapping("payreturn")
    141. public String alipayNotifyNotice( HttpServletRequest request, HttpServletResponse response) throws Exception {
    142. System.out.println("支付成功。。。。");
    143. int orderId = (int) request.getSession().getAttribute("orderId");
    144. orderService.pay(orderId, request, response);
    145. return "mall/order/list";
    146. }
    147. /**
    148. * 确认收货
    149. * @param orderId
    150. * @param response
    151. * @return
    152. * @throws IOException
    153. */
    154. @RequestMapping("receive.do")
    155. @ResponseBody
    156. public ResultBean<Boolean> receive(int orderId, HttpServletResponse response) throws IOException {
    157. orderService.receive(orderId);
    158. return new ResultBean<>(true);
    159. }
    160. /**
    161. * create by: Cillivian
    162. * description:分页显示
    163. * create time: 22:26 2022/4/13 0013
    164. *
    165. * @Param: null
    166. * @return
    167. */
    168. @ResponseBody
    169. @RequestMapping("/getTotal.do")
    170. public ResultBean<Integer> getTotal() {
    171. Pageable pageable = PageRequest.of(1, 15, Sort.by(Sort.Direction.ASC,"id"));
    172. int total = (int) orderService.findAll(pageable).getTotalElements();
    173. return new ResultBean<>(total);
    174. }
    175. }

     

    pom.xml代码文件:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <groupId>com.scut</groupId>
    6. <artifactId>mall</artifactId>
    7. <version>0.0.1-SNAPSHOT</version>
    8. <packaging>jar</packaging>
    9. <name>mall</name>
    10. <description>QQ211811 9173 java程序猿 好乐思玩具</description>
    11. <parent>
    12. <groupId>org.springframework.boot</groupId>
    13. <artifactId>spring-boot-starter-parent</artifactId>
    14. <version>2.1.0.RELEASE</version>
    15. <relativePath/> <!-- lookup parent from repository -->
    16. </parent>
    17. <properties>
    18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    20. <java.version>1.8</java.version>
    21. </properties>
    22. <dependencies>
    23. <dependency>
    24. <groupId>org.springframework.boot</groupId>
    25. <artifactId>spring-boot-starter</artifactId>
    26. </dependency>
    27. <!--log4j 2-->
    28. <dependency>
    29. <groupId>org.springframework.boot</groupId>
    30. <artifactId>spring-boot-starter-log4j2</artifactId>
    31. </dependency>
    32. <!--mysql-->
    33. <dependency>
    34. <groupId>mysql</groupId>
    35. <artifactId>mysql-connector-java</artifactId>
    36. <version>8.0.12</version>
    37. </dependency>
    38. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    39. <dependency>
    40. <groupId>org.mybatis</groupId>
    41. <artifactId>mybatis</artifactId>
    42. <version>3.2.0</version>
    43. </dependency>
    44. <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    45. <dependency>
    46. <groupId>org.mybatis.generator</groupId>
    47. <artifactId>mybatis-generator-core</artifactId>
    48. <version>1.3.2</version>
    49. </dependency>
    50. <dependency>
    51. <groupId>org.springframework.boot</groupId>
    52. <artifactId>spring-boot-starter-data-jpa</artifactId>
    53. </dependency>
    54. <!--druid连接池 mybatis-->
    55. <dependency>
    56. <groupId>com.alibaba</groupId>
    57. <artifactId>druid</artifactId>
    58. <version>1.1.12</version>
    59. </dependency>
    60. <!--aop 切面-->
    61. <dependency>
    62. <groupId>org.springframework.boot</groupId>
    63. <artifactId>spring-boot-starter-aop</artifactId>
    64. </dependency>
    65. <!--controller -->
    66. <dependency>
    67. <groupId>org.springframework.boot</groupId>
    68. <artifactId>spring-boot-starter-web</artifactId>
    69. </dependency>
    70. <!--html模板引擎-->
    71. <dependency>
    72. <groupId>org.springframework.boot</groupId>
    73. <artifactId>spring-boot-starter-thymeleaf</artifactId>
    74. </dependency>
    75. <dependency>
    76. <groupId>commons-lang</groupId>
    77. <artifactId>commons-lang</artifactId>
    78. <version>2.6</version>
    79. </dependency>
    80. <!--SpringBoot2.0thymeleaf布局模块 -->
    81. <dependency>
    82. <groupId>nz.net.ultraq.thymeleaf</groupId>
    83. <artifactId>thymeleaf-layout-dialect</artifactId>
    84. </dependency>
    85. <!--热加载代码方便调试用 -->
    86. <dependency>
    87. <groupId>org.springframework.boot</groupId>
    88. <artifactId>spring-boot-devtools</artifactId>
    89. <scope>runtime</scope>
    90. <optional>true</optional>
    91. </dependency>
    92. <!--测试框架-->
    93. <dependency>
    94. <groupId>org.springframework.boot</groupId>
    95. <artifactId>spring-boot-starter-test</artifactId>
    96. <scope>test</scope>
    97. </dependency>
    98. <dependency>
    99. <groupId>org.springframework.boot</groupId>
    100. <artifactId>spring-boot-test</artifactId>
    101. <version>2.1.0.RELEASE</version>
    102. <scope>test</scope>
    103. </dependency>
    104. <!--JSON-->
    105. <dependency>
    106. <groupId>com.fasterxml.jackson.jaxrs</groupId>
    107. <artifactId>jackson-jaxrs-json-provider</artifactId>
    108. <version>2.9.6</version>
    109. </dependency>
    110. <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
    111. <dependency>
    112. <groupId>com.alipay.sdk</groupId>
    113. <artifactId>alipay-sdk-java</artifactId>
    114. <version>3.1.0</version>
    115. </dependency>
    116. <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    117. <dependency>
    118. <groupId>com.google.code.gson</groupId>
    119. <artifactId>gson</artifactId>
    120. <version>2.8.0</version>
    121. </dependency>
    122. </dependencies>
    123. <build>
    124. <plugins>
    125. <plugin>
    126. <groupId>org.springframework.boot</groupId>
    127. <artifactId>spring-boot-maven-plugin</artifactId>
    128. </plugin>
    129. </plugins>
    130. </build>
    131. <repositories>
    132. <repository>
    133. <id>maven-ali</id>
    134. <url>http://maven.aliyun.com/nexus/content/groups/public//</url>
    135. <releases>
    136. <enabled>true</enabled>
    137. </releases>
    138. <snapshots>
    139. <enabled>true</enabled>
    140. <updatePolicy>always</updatePolicy>
    141. <checksumPolicy>fail</checksumPolicy>
    142. </snapshots>
    143. </repository>
    144. </repositories>
    145. </project>

  • 相关阅读:
    Spring Boot虚拟线程的性能还不如Webflux?
    vue、uniapp如何在js中获取scss的变量
    【电子电路】长按键拉低电平,适用在有休眠机制的MCU但是没有看门狗,一个按键多个功能场景下使用
    【微信小程序】scroll-view的基本使用
    编程基础都要懂的计算机组成
    万能的Python爬虫模板来了
    蓝桥杯:核桃的数量(3148)java
    Monaco Editor教程(十一):monaco中的位置信息Position类型详解
    k8s 中的 ingress 使用细节
    IOT 之 MQTT协议
  • 原文地址:https://blog.csdn.net/weixin_46437112/article/details/127931031