1.本课题的研究目的和意义: 电子商城的研究目的: 商业经济发展到一定阶段,必然会与科技发展相结合,网络和实体经济结合的电子商务平台中的电子商城就是一个典型的成功案例。电子商务中重要的一环电子商城应用而生。将商品信息依托电子商城发布到互联网上,是对实体经济的一种挑战,同时给消费者一种耳目一新的消费方式,极大方便了购物过程。电子商城可以创造更多的创业机会,人们可以方便的在电子商城上开属于自己风格的店铺。变相的激发了消费的购物热情和调高购物的质量,加快了经济的发展。因此网上商城的快速发展,对国家对人民的非常有利的。当代,电子商城的发展已经成为各个国家发展的趋势,是人们和社会经济发展不可或缺的的一部分,他在改变着人们的消费理念,也是大众消费的主要方式。而随着国内计算机信息技术发展,网上购物会更加快速的发展起来,为消费者和商家都提供更加广阔的销售平台。因此,开发一个网上商城系统非常符合当今社会的发展形势。 电子商城的开发意义: (1)相比于实体店铺,电子商城的对于资金的投入少,回报却快。占压很少的资金,实体店存货占压大量的资金。 (2)营业时间比实体店的长,受自然因素影响小,一般可以24小时营业,不需要雇佣多数服务人员,只需要少量客服。店面大小不受控制,电子商城可以轻松拥有很大的店面,也可以摆多种商品,优秀于传统的实体店面。 (3)地理位置不受影响,电子商城只需要在家登陆客户端,就可以完成实体店的大部分工作,不用考虑地理的优越性。消费者可以在互联网链接的任何地方登陆并购买商品,消费者和商家同时不受地理影响,不见面也可以完成交易。电子商城是多位一体的平台消费宣传支付和快递于一体。为消费者提供便捷的服务,增加社会的就业机会。 【553】基于SpringBoot的电子产品商城平台多商户平台含支付宝沙箱支付源码论文开题报告任务书 |
电子商务的发展及电脑商城的设计与实现的文献综述 1. 电子商务的研究背景 现代互联网的普及,计算机技术的完善和消费者观念的更新,传统的商务模式逐渐地不能够满足人们的需求,而以B2C电子商务进行网购的方式逐渐变成了生活的时尚,例如我国知名B2C电商平台京东商城,以它良好的经营方式,优化供应链,在成本方面下功夫,给顾客创造价值,比传统企业更有活力。所以基于电子商务模式的电脑商城,它使得商品的交易更加方便,有效,成本更低,将成为企业销售的崭新模式。电子商务没有地域的局限,时间的局限,对于顾客,只需要通过电脑或者手机随时随地进行商务交易,这大大方便了人们的生活。对于商家,只需要了解顾客需求和信息,更好得像顾客进行销售服务。所以电子商务系统的开发突破时间、空间和地域的限制,它对于个人,社会还是企业都带了勃勃生机。 2. 电子商务系统的构成 随着电子商务整体框架模型的建立和完善,传统商务运作逐步向电子商务运作方向演化,逐渐形成了电子商务条件下的商务系统,我们称之为电子商务系统。 电子商务系统的基本组成要素有:采购者、供应者、支付系统、认证中心、物流中心和电子商务服务商。所有参与各方围绕电子商务网络相互协作开展业务,共同完成电子商务系统的功能。 3. 我国电子商务的发展机遇 随着全球经济一体化的进程日益临近,传统的商务模式存在的局限性,已不能适用于未来的发展,电子商务市场终将出现服务型、综合化的必然趋势。电子商务为传统产业降低了交易成本并带来了效益,也给金融、电信、物流等行业带来良性变革,它将传统商业活动中物流、资金流、信息流的传递方式利用网络科技整合,企业将重要的信息以全球信息网(www)、企业内部网(Intranet)或外联网(Extranet)直接与分布各地的客户、员工、经销商及供应商连接,创造更具竞争力的经营优势。 所以电子商务依存于网络科技的发展、相关的法律和法规、金融电子化的发展水平及计算机的应用普及率等因素,它的关键是网络化及金融电子化。我国目前网络应用远不如欧美先进国家,企业间的商业模式大多还是实物经济,但是我们应该看到,国内企业间的电子商务正在快速发展。 4. 网上电脑商城的实现意义 现在电脑在每家每户都普及,电脑市场进入一个迅速发展的时期,电脑企业通过电子商务这一观念,必须调整思路,以适应市场的变化。围绕着电脑交易,打造一个电脑商城,通过这个商城用户可以进行搜索所想要的电脑相关商品,并进行购买。 购物是人们日常生活中必不可少的。中国人均GDP收入的提高,购物消费领域逐渐呈现出两大特点:第一,购物流通市场总量迅速扩大;第二,市场份额向高档名优商品集中。电脑市场的新趋势必然对传统的电脑销售模式产生深刻影响。目前,传统的经销商代理、批发、分销仍是主要销售渠道,但随着终端的强势崛起已经开始日薄西山。传统的销售方式带着高昂的运营成本和递减的边际效率,让厂商倍感无奈。针对传统电脑商品流通渠道的现状,提出以B2C现代电子商务激活传统电脑商品流通行业的设想。 5. 电子商务系统的架构 系统架构将采用B/S架构,B/S架构的优点:客户端不用去维护,不需要安装特点的软件,只需要在网上即可进行。系统管理员不需要在成百上千部电脑之间来回操作,只需要管理服务器即可,客户端是浏览器,也无需做维护。无论用户规模有多大,所有的操作只需针对服务器进行。如果是异地,只需要将服务器连接专网即可,实现远程维护、升级和共享。但是也有缺点:B/C架构软件安装只能安装在服务器上,要是服务器的访问量过大,服务器运行数据负荷较重,很有可能使得服务器发生崩溃,后果不堪设想。 6. 网上电脑商城的实现技术 在开发技术方面,运用IDEA开发工具和使用MySQL数据库。Web开发技术选择SpringBoot,它基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用,从而改变了web应用的开发模式。视图层将不再采用jsp视图,因为jsp视图层与程序有过多的耦合,SpringBoot将默认使用Thymeleaf模板引擎,它能很好的和SpringMVC结合,可以直接在浏览器正确显示,实现前后端耦合降低。前端也使用些前端框架,例如Bootstrap和Layui,还需要通过Ajax技术与服务器进行数据交换,可以使得网页实现布局更新。在持久层方面,选择MyBatis框架,它内部封装了JDBC,通过XML或者注解的方式运行SQL将结果映射为Java对象并返回。MyBatis 支持定制化 SQL、存储过程以及高级映射。MyBatis 是可以双向映射的,可以将数据集映射为Java对象,也可以将Java对象映射为数据库中的记录。MyBatis框架可以大大减少代码量,容易上手,能与Spring很好的集成,支持动态SQL,相当的灵活,简化了开发。 7. 总结 最后总结一下,随着人们的生活水平提高,网购成为传统商城必不可少的经营策略之一。因此随着互联网和电子商务的发展,他将有力改变现存企业的经营模式,增加企业的竞争力,给企业提供高效低成本的发展空间。在技术上使用IDEA开发工具和MySQL数据库,使用SpringMVC设计模式,AJAX局部刷新技术,使得页面清晰简洁,用户一目了然,方便查找商品信息,给用户更好的购物体验。技术上,架构上采用B/C架构,技术上使用广泛的SpringBoot框架和运行稳定的MySQL数据库就可以基本实现。经济上,系统若是上线,考虑到服务器价格并不高,可以选择租用服务器,大约几十元一个月,维护费用低廉。操作上,对于用户来说,本网站只要求使用者掌握一定的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同需求。所以通过上述文献的研究,依照该方案去开发这个网上电脑商城系统是可行的,有意义的。 【553】基于SpringBoot的电子产品商城平台多商户平台含支付宝沙箱支付源码论文开题报告任务书 |
3.本课题的主要研究内容: 1. 开发技术方面的研究 网上电脑商城系统的实现将采用IDEA开发工具,Maven项目管理工具,后端使用SpringBoot框架和MyBatis框架。前端使用Layui框架,Bootstrap框架和Ajax异步请求技术。数据库选择MySQL数据库来存储数据,服务器使用Tomcat服务器。 SpringBoot是目前广泛流行的开发框架,它的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序,从而简化了开发。 MyBatis是一个开源的数据持久层框架,内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。作为持久层框架,主要思想是将程序中的大量的SQL语句分离出来,配置在相应的配置文件中,这样可以在不修改代码的情况下,直接在配置文件中的修改SQL,从而简化了开发。 MySQL数据库是目前流行的关系型数据库,可以用来存储和管理大量的数据。它支持多种操作系统,提供多种API接口,支持多种开发语言,代码开源,使用成本低,性能卓越,服务稳定,易于维护,是企业开发的不二之选。 前端使用Layui框架,Bootstrap框架和Ajax异步请求技术,使得页面清晰简洁,用户一目了然,方便查找商品信息,给用户更好的购物体验。 2. 系统的开发 2.1系统的分析 对于系统的分析,将采用UML技术,它是一种进行面向对象程序设计的工具,用来把现实中的问题抽象成面向对象的解决方案,以便进一步的编码。UML是由一堆图组成的,包括:用例图、类图、对象图、状态转换图、活动图、时序图、部署图等等。UML的作用: 1. UML使软件分析和设计人员对目标问题有更深刻的理解和认识。 2. UML使得项目所涉及的所有人员都能参与到项目的设计中来,UML为非专业编程人士理解软件的功能和构造,提供了一种直白、简单、通俗的方法。 2.2系统的设计 网上商城系统将分三个模块,用户模块,店家模块和系统管理员模块。 用户模块:游客可以浏览电脑商城的信息,想要购买商品则必须注册用户,成功注册之后,登陆进去可以修改个人信,可以在商城里浏览商品,将心仪的商品收藏到收藏夹,加入购物车,结算。结算之后生成快递单号,当确认收货之后可以对商品进行评价,若商品不符合心意,可以向商家申请售后。用户也可以向管理员申请开铺,然后在电脑商城里销售相关的电脑商品。 店家模块:店家可以进行商品管理、商品分类管理、订单管理、查看商品的销售情况和售后处理。 管理员:管理员则可以进行用户管理和店家管理。 2.3系统的实现 本系统采用B/S架构,后端使用SpringBoot框架和MyBatis框架。前端使用Layui框架,Bootstrap框架和Ajax异步请求技术。数据库选择MySQL数据库来存储数据,服务器使用Tomcat服务器。参考实际的电商系统的逻辑去设计和建立数据库,前台可以完成购物操作,后台可以及时管理用户信息、店铺信息,商品信息,订单信息等等。 主要功能: 前台模块: 1.用户登录注册功能。 2.浏览商品信息功能:实现显示所有电脑相关商品信息。 3.商品查询功能:按条件查询相关商品。 4.收藏商品功能:将自己喜欢的商品添加到自己收藏夹中 5.我的购物车:用户可以管理自己购物车的商品,可以删除商品或者清空购物车。 6.我的订单:用户可以查看或删除自己的订单,下单后可以查询快递单号。确认收货之后可以删除订单,并可以对商品进行评价。 7.退款功能:用户对相关商品的店家申请售后。 8.支付功能:使用支付宝模拟支付。 9.修改个人信息功能:用户对自己的个人信息,收货地址和头像进行修改。 10.评价功能:用户可以在已购商品购买页面对商品进行评价。 11.成为卖家功能:用户可以向管理员申请成为店家,可以进行电脑相关商品的销售。 后台模块: 店家: 1.商品管理:对商品进行增删改查操作。 2.商品分类管理:对商品分类进行增删改查操作。 3.订单管理:查看该店铺商品所有订单。 4.商品销量报表:以报表的形式展现该店各个电脑商品的销售情况。 5.售后服务:审核用户的售后,进行退货操作。 6.查看评论:查看该店家商品的评价信息。 管理员: 1.店家管理:可以停用店家的运营。 2.用户管理:管理员可以对用户信息进行增删改查操作。 3.前台商品轮播管理:管理员可以对首页的轮播图进行管理操作。 2.4系统的测试 系统测试将采用黑盒测试,测试人员完全不考虑程序内部的逻辑结构和内部属性,只是根据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试主要是为了发现以下几类错误: 1.是否有不正确或遗漏的功能 2.在接口上,输入是否正确的接受,能否输出正确的结果 3.是否有数据结构错误或外部信息(例如数据文件)访问错误。 4. 性能上是否能够满足要求。 5.是否有初始化或者终止性错误。 |
package com.springboot.project.controller;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.springboot.project.config.AlipayConfig;
import com.springboot.project.pojo.*;
import com.springboot.project.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@Controller
@RequestMapping("/payment")
public class PayController {
@Autowired
private AlipayConfig alipayConfig;
@Autowired
private OrderService orderService;
@Autowired
private GoodsService goodsService;
@Autowired
private EvaluateService evaluateService;
@Autowired
private AddressService addressService;
@Autowired
private StoreService storeService;
/*待付款*/
@RequestMapping("/getOrderIdByIdBuy/{OrderId}")
public void getOrderIdByIdBuy(@PathVariable Long OrderId, Model model, HttpServletResponse response,HttpSession session,HttpServletRequest request) {
request.getSession().removeAttribute("orderId3");
String type = "info"; // 类型
OrderDetail orderDetail = orderService.selectGoodsIdByOrderId(OrderId);
Goods goods = goodsService.getGoodsById(orderDetail.getDetailGoods());
BigDecimal price = goods.getGoodsPrice();
int price2 = price.intValue() * orderDetail.getDetailNum();
try {
AlipayClient alipayClient = new DefaultAlipayClient(
alipayConfig.getOpenApiDomain(),
alipayConfig.getAppId(),
alipayConfig.getMerchantPrivateKey(),
alipayConfig.getFormat(),
alipayConfig.getCharset(),
alipayConfig.getAlipayPublicKey(),
alipayConfig.getSignType()); //获得初始化的AlipayClient
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl(alipayConfig.getReturnUrl());
alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl());//在公共参数中设置回跳和通知地址
if (type.equals("info")){
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+OrderId+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+price2+"\"," +
" \"subject\":\""+goods.getGoodsName()+"\"," +
" \"body\":\""+goods.getGoodsName()+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}else if (type.equals("cart")){
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+OrderId+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+goods.getGoodsPrice()+"\"," +
" \"subject\":\""+goods.getGoodsName()+"\"," +
" \"body\":\""+goods.getGoodsName()+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
session.setAttribute("type",type);
response.setContentType("text/html;charset=" + alipayConfig.getCharset());
response.getWriter().write(form);//直接将完整的表单html输出到页面
response.getWriter().flush();
response.getWriter().close();
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("exception", "支付出错了!");
}
}
/*单样商品购买生成订单*/
@RequestMapping("/payById/{goodsId}/{num}")
public void payById(@PathVariable int goodsId, @PathVariable int num, Model model, HttpServletResponse response, HttpServletRequest request) {
request.getSession().removeAttribute("orderId3");
String orderId = "";
String orderDetailsId = "";
String type = "info";
HttpSession session = request.getSession();
int userId = (int) session.getAttribute("userId");
Goods goods = goodsService.getGoodsById(goodsId);
List<Address> address = addressService.getAddrByUserId(userId);
Address address1 = addressService.getAddrByUserIdByDefault(userId);
BigDecimal price = goods.getGoodsPrice();
int price2 = price.intValue() * num;
BigDecimal price3 = new BigDecimal(price2);
goods.setGoodsPrice(price3);
model.addAttribute("address1",address1);
model.addAttribute("goods",goods);
model.addAttribute("num",num);
Long orderId2 = Long.valueOf(getOrderIdByTime());
Goods goods1 = goodsService.selectStoreByGoodsId(goods.getGoodsId());
Orderinfo order = new Orderinfo();
order.setOrderId(orderId2);
order.setOrderUser(userId);
order.setOrderDate(new Date());
order.setOrderPrice(price3);
/*待付款*/
order.setOrderState(1);
order.setOrderReceiver(address1.getAddrReceiver());
order.setOrderPhone(address1.getAddrPhone());
order.setOrderAddress(address1.getAddrProvince()+address1.getAddrCity()+address1.getAddrArea()+address1.getAddrStreet()+address1.getAddrDetail());
order.setCreateTime(new Timestamp(new Date().getTime()));
order.setUpdateTime(new Timestamp(new Date().getTime()));
order.setOrderStore(goods1.getGoodsStore());
orderService.insertOrder(order);
OrderDetail orderDetail = new OrderDetail();
orderDetail.setDetailOrder(orderId2);
orderDetail.setDetailGoods(goods.getGoodsId());
orderDetail.setDetailPrice(price3.doubleValue());
orderDetail.setDetailNum(num);
orderService.insertDetail(orderDetail);
try {
AlipayClient alipayClient = new DefaultAlipayClient(
alipayConfig.getOpenApiDomain(),
alipayConfig.getAppId(),
alipayConfig.getMerchantPrivateKey(),
alipayConfig.getFormat(),
alipayConfig.getCharset(),
alipayConfig.getAlipayPublicKey(),
alipayConfig.getSignType()); //获得初始化的AlipayClient
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl(alipayConfig.getReturnUrl());
alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl());//在公共参数中设置回跳和通知地址
if (type.equals("info")){
/* Order order = orderService.selectByOrderIdAndOrderDetailsId(orderId,orderDetailsId);*/
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+orderId2+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+price2+"\"," +
" \"subject\":\""+goods.getGoodsName()+"\"," +
" \"body\":\""+goods.getGoodsName()+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}else if (type.equals("cart")){
/* OrderDetails orderDetails = detailsService.selectByPrimaryKey(orderId);*/
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+orderId2+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+price2+"\"," +
" \"subject\":\""+goods.getGoodsName()+"\"," +
" \"body\":\""+goods.getGoodsName()+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
session.setAttribute("type",type);
response.setContentType("text/html;charset=" + alipayConfig.getCharset());
response.getWriter().write(form);//直接将完整的表单html输出到页面
response.getWriter().flush();
response.getWriter().close();
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("exception", "支付出错了!");
}
}
/*结算*/
@RequestMapping("/pay")
public void pay( Model model, HttpServletResponse response, HttpServletRequest request) {
String orderId = "";
String orderDetailsId = "";
String type = "info";
HttpSession session = request.getSession();
// CartId集合
List Classifys = (List) session.getAttribute("Classifys");
// 商品数量集合
List num = (List) session.getAttribute("num");
int userId = (int) session.getAttribute("userId");
List<Integer> goodsId = new ArrayList();
BigDecimal Allprice = new BigDecimal("0");
/*通过cartId拿到goodsId*/
for(int i =0;i<Classifys.size();i++){
String a = (String) Classifys.get(i);
Integer b = Integer.parseInt(a);
Cart cart = goodsService.getGoodsIdByCartId(b);
goodsId.add(cart.getCartGoods());
}
List<Goods> goodsList = new ArrayList<>();
/*通过goodsId拿到goods*/
for(int i =0;i<goodsId.size();i++) {
Integer b = goodsId.get(i);
Goods goods = goodsService.getGoodsById(b);
goodsList.add(goods);
}
// 根据商品集合,获取总价
for(int j=0;j<goodsList.size();j++) {
BigDecimal price = goodsList.get(j).getGoodsPrice();
String num2 = (String) num.get(j);
Integer num3 = Integer.parseInt(num2);
int price2 = price.intValue() * num3;
BigDecimal price3 = new BigDecimal(price2);
goodsList.get(j).setGoodsPrice(price3);
Allprice = Allprice.add(price3);
}
// 数量
for (int c =0;c<num.size();c++){
String a = (String) num.get(c);
Integer b = Integer.parseInt(a);
goodsList.get(c).setGoodsNums(b);
}
// 定义订单id
Long orderId2 = null;
String goodsName = "";
List<Long> orderId3 = new ArrayList<>();
//循环遍历生成订单
for(int c=0;c < goodsList.size();c++){
Goods goods = goodsService.getGoodsById(goodsList.get(c).getGoodsId());
goodsName = goodsName + goods.getGoodsName() + " ";
List<Address> address = addressService.getAddrByUserId(userId);
Address address1 = addressService.getAddrByUserIdByDefault(userId);
goods.setGoodsPrice(goodsList.get(c).getGoodsPrice());
model.addAttribute("address1",address1);
model.addAttribute("goods",goods);
model.addAttribute("num",num);
orderId2 = Long.valueOf(getOrderIdByTime());
Goods goods1 = goodsService.selectStoreByGoodsId(goods.getGoodsId());
Orderinfo order = new Orderinfo();
order.setOrderId(orderId2);
order.setOrderUser(userId);
order.setOrderDate(new Date());
order.setOrderPrice(goodsList.get(c).getGoodsPrice());
order.setOrderState(1);
order.setOrderReceiver(address1.getAddrReceiver());
order.setOrderPhone(address1.getAddrPhone());
order.setOrderAddress(address1.getAddrProvince()+address1.getAddrCity()+address1.getAddrArea()+address1.getAddrStreet()+address1.getAddrDetail());
order.setCreateTime(new Timestamp(new Date().getTime()));
order.setUpdateTime(new Timestamp(new Date().getTime()));
order.setOrderStore(goods1.getGoodsStore());
orderService.insertOrder(order);
OrderDetail orderDetail = new OrderDetail();
orderDetail.setDetailOrder(orderId2);
orderDetail.setDetailGoods(goods.getGoodsId());
BigDecimal bigDecimal = goodsList.get(c).getGoodsPrice();
orderDetail.setDetailPrice(bigDecimal.doubleValue());
orderDetail.setDetailNum(goodsList.get(c).getGoodsNums());
orderService.insertDetail(orderDetail);
orderId3.add(orderId2);
}
session.setAttribute("orderId3",orderId3);
try {
AlipayClient alipayClient = new DefaultAlipayClient(
alipayConfig.getOpenApiDomain(),
alipayConfig.getAppId(),
alipayConfig.getMerchantPrivateKey(),
alipayConfig.getFormat(),
alipayConfig.getCharset(),
alipayConfig.getAlipayPublicKey(),
alipayConfig.getSignType()); //获得初始化的AlipayClient
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl(alipayConfig.getReturnUrl());
alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl());//在公共参数中设置回跳和通知地址
if (type.equals("info")){
/* Order order = orderService.selectByOrderIdAndOrderDetailsId(orderId,orderDetailsId);*/
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+orderId2+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+Allprice+"\"," +
" \"subject\":\""+goodsName+"\"," +
" \"body\":\""+goodsName+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}else if (type.equals("cart")){
/* OrderDetails orderDetails = detailsService.selectByPrimaryKey(orderId);*/
alipayRequest.setBizContent("{" +
" \"out_trade_no\":\""+orderId2+"\"," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\""+Allprice+"\"," +
" \"subject\":\""+goodsName+"\"," +
" \"body\":\""+goodsName+"\"," +
" \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"2088511833207846\"" +
" }"+
" }");//填充业务参数
}
String form="";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
session.setAttribute("type",type);
response.setContentType("text/html;charset=" + alipayConfig.getCharset());
response.getWriter().write(form);//直接将完整的表单html输出到页面
response.getWriter().flush();
response.getWriter().close();
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("exception", "支付出错了!");
}
}
/**/
@RequestMapping("/return")
public String returnUrl(Long out_trade_no,String total_amount,String body,
Model model,HttpSession session) throws ParseException {
List<Long> orderId3 = (List<Long>) session.getAttribute("orderId3");
if(orderId3 != null){
for (Long orderId : orderId3){
Orderinfo orderinfo = new Orderinfo();
orderinfo.setOrderId(orderId);
orderinfo.setOrderState(2);/*已支付*/
orderService.updataByno(orderinfo);
OrderDetail orderDetail = goodsService.selectGoodIdByOrderId(orderId);
goodsService.updataGoodsNumsAndSales(orderDetail.getDetailGoods(),orderDetail.getDetailNum());
}
}else{
Orderinfo orderinfo = new Orderinfo();
orderinfo.setOrderId(out_trade_no);
orderinfo.setOrderState(2);
orderService.updataByno(orderinfo);
OrderDetail orderDetail = goodsService.selectGoodIdByOrderId(out_trade_no);
goodsService.updataGoodsNumsAndSales(orderDetail.getDetailGoods(),orderDetail.getDetailNum());
}
/*返回到用户订单*/
int userId = (int) session.getAttribute("userId");
List<Orderinfo> orderinfoList = orderService.selectOrderByUserId(userId);
List<Integer> orderDetails2 = new ArrayList<>();
for (Orderinfo orderinfo1 : orderinfoList ) {
Long id = orderinfo1.getOrderId();
OrderDetail orderDetail3 = orderService.selectGoodsIdByOrderId(id);
orderDetails2.add(orderDetail3.getDetailGoods());
}
List<Goods> goods = new ArrayList<>();
for (Integer integer : orderDetails2) {
Goods goods1 = goodsService.getGoodsById(integer);
goods.add(goods1);
}
List<orderGoods3> orderGoodsList = new ArrayList<>();
for (int i = 0;i < orderinfoList.size();i++) {
Store store = storeService.selectByOrderId(orderinfoList.get(i).getOrderStore());
orderGoods3 orderGoods = new orderGoods3();
orderGoods.setOrderId(orderinfoList.get(i).getOrderId());
orderGoods.setOrderUser(orderinfoList.get(i).getOrderUser());
orderGoods.setOrderDate(orderinfoList.get(i).getOrderDate());
orderGoods.setOrderPrice(orderinfoList.get(i).getOrderPrice());
orderGoods.setOrderState(orderinfoList.get(i).getOrderState());
orderGoods.setOrderReceiver(orderinfoList.get(i).getOrderReceiver());
orderGoods.setOrderPhone(orderinfoList.get(i).getOrderPhone());
orderGoods.setOrderAddress(orderinfoList.get(i).getOrderAddress());
orderGoods.setCreateTimeOrder(orderinfoList.get(i).getCreateTime());
orderGoods.setUpdateTimeOrder(orderinfoList.get(i).getUpdateTime());
orderGoods.setGoodsStore(store.getStoreName());
orderGoods.setGoodsId(goods.get(i).getGoodsId());
orderGoods.setGoodsName(goods.get(i).getGoodsName());
orderGoods.setGoodsNums(goods.get(i).getGoodsNums());
orderGoods.setGoodsBrand(goods.get(i).getGoodsBrand());
orderGoods.setGoodsType(goods.get(i).getGoodsType());
orderGoods.setGoodsPrice(goods.get(i).getGoodsPrice());
orderGoods.setGoodsDesc(goods.get(i).getGoodsDesc());
orderGoods.setGoodsSales(goods.get(i).getGoodsSales());
orderGoods.setGoodsState(goods.get(i).getGoodsState());
orderGoods.setGoodsImg(goods.get(i).getGoodsImg());
orderGoods.setCreateTimeGoods(goods.get(i).getCreateTime());
Timestamp ts = new Timestamp(System.currentTimeMillis());
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
orderGoods.setUpdateTimeGoods(sf2.format(orderinfoList.get(i).getCreateTime()));
orderGoodsList.add(orderGoods);
}
model.addAttribute("orderinfoList",orderinfoList);
model.addAttribute("orderGoodsList",orderGoodsList);
return "/orderUserList";
}
@RequestMapping("/notify")
public void notifyUrl(){
System.out.println("notify--------------------------");
}
public static String getOrderIdByTime() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
String newDate=sdf.format(new Date());
String result="";
Random random=new Random();
for(int i=0;i<3;i++){
result+=random.nextInt(10);
}
return newDate+result;
}
}