含支付宝沙箱支付源码和论文开题报告任务书
本课题的主要研究内容:
1. 开发技术方面的研究
【563】基于SpringBoot的农产品商城平台多商户平台
网上电脑商城系统的实现将采用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.前台商品轮播管理:管理员可以对首页的轮播图进行管理操作。
package com.springboot.project.controller;
import com.alibaba.fastjson.JSONObject;
import com.springboot.project.mapper.StoreMapper;
import com.springboot.project.pojo.*;
import com.springboot.project.service.*;
import com.springboot.project.tools.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@Controller
@RequestMapping("/goods")
public class GoodsController {
@Autowired
private GoodsService goodsService;
@Autowired
private EvaluateService evaluateService;
@Autowired
private AddressService addressService;
@Autowired
private GoodsTypeService goodsTypeService;
@Autowired
private OrderService orderService;
@Autowired
private UserService userService;
@Autowired
private BrandService brandService;
@Autowired
private StoreMapper storeMapper;
@Autowired
private StoreService storeService;
/*获得全部产品*/
@RequestMapping("/getAllGoods")
public String getAllGoods(Model model) {
List<Goods> allGoodsList = goodsService.getAllGoods();
model.addAttribute("allGoodsList", allGoodsList);
return "/goodsList";
}
/*模糊查询*/
@RequestMapping("/getGoodsByLikeName/{goodsName}")
public String getGoodsByLikeName(@PathVariable String goodsName,Model model){
List<Goods> allGoodsList = goodsService.getGoodsByLikeName(goodsName);
model.addAttribute("allGoodsList",allGoodsList);
return "/goodsList";
}
/*根据goods_Id获得产品*/
@RequestMapping("/getGoodsById/{goodsId}")
public String getGoodsById(@PathVariable int goodsId, Model model) throws ParseException {
Goods goods = goodsService.getGoodsById(goodsId);
if (goods==null){
return "/error";
}
Store store = storeService.getByStoreId(goods.getGoodsStore());
GoodsStore goodsStore = new GoodsStore();
goodsStore.setGoodsId(goods.getGoodsId());
goodsStore.setGoodsName(goods.getGoodsName());
goodsStore.setGoodsAttr(goods.getGoodsAttr());
goodsStore.setGoodsBrand(goods.getGoodsBrand());
goodsStore.setGoodsDesc(goods.getGoodsDesc());
goodsStore.setGoodsNums(goods.getGoodsNums());
goodsStore.setGoodsStore(goods.getGoodsStore());
goodsStore.setGoodsType(goods.getGoodsType());
goodsStore.setGoodsImg(goods.getGoodsImg());
goodsStore.setGoodsSales(goods.getGoodsSales());
goodsStore.setGoodsPrice(goods.getGoodsPrice());
goodsStore.setStoreName(store.getStoreName());
List<Evaluate> evaluateList = evaluateService.getEvaByGoodsId(goodsId);
List<Evaluate3> evaluate3List = new ArrayList<>();
for (Evaluate evaluate : evaluateList) {
User user = userService.selectUserByUserId(evaluate.getEvaUser());
Evaluate3 evaluate3 = new Evaluate3();
evaluate3.setEvaId(evaluate.getEvaId());
evaluate3.setEvaUser(evaluate.getEvaUser());
evaluate3.setEvaGoods(evaluate.getEvaGoods());
evaluate3.setEvaContent(evaluate.getEvaContent());
evaluate3.setEvaLevel(evaluate.getEvaLevel());
SimpleDateFormat sf1 = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.ENGLISH);
Date date = sf1.parse(String.valueOf(evaluate.getEvaDate()));
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
evaluate3.setEvaDate(sf2.format(date));
evaluate3.setEvaStore(evaluate.getEvaStore());
evaluate3.setEvaState(evaluate.getEvaState());
evaluate3.setUser_Img(user.getUserImg());
evaluate3List.add(evaluate3);
}
int typeId = goods.getGoodsType();
model.addAttribute("goods", goodsStore);
model.addAttribute("typeId", typeId);
model.addAttribute("evaluateList", evaluate3List);
return "/goodsBuy";
}
/*订单详情页*/
@RequestMapping("/getGoodsByIdBuy/{goodsId}/{num}")
public String getGoodsByIdBuy(@PathVariable int goodsId,@PathVariable int num, Model model, HttpServletRequest request) {
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("addressList",address);
model.addAttribute("address1",address1);
model.addAttribute("goods",goods);
model.addAttribute("goodsId",goodsId);
model.addAttribute("num",num);
return "/order";
}
/*购物车页面*/
@RequestMapping("/cart")
public String cart(Model model,HttpSession session){
int userId = (int) session.getAttribute("userId");
List<Cart> cartList = goodsService.getCartByUserId(userId);
List<Goods> goodsList = new ArrayList<>();
for (int i=0;i<cartList.size();i++){
Goods goods1 = goodsService.getGoodsById(cartList.get(i).getCartGoods());
goodsList.add(goods1);
}
List<GoodsType> goodsTypes = new ArrayList<>();
for (int i=0;i<goodsList.size();i++){
GoodsType goodsType = goodsTypeService.getTypeByTypeId(goodsList.get(i).getGoodsType());
goodsTypes.add(goodsType);
}
List<CartGoods2> cartGoodsList = new ArrayList<>();
for (int i=0;i<cartList.size();i++){
CartGoods2 cartGoods = new CartGoods2();
cartGoods.setCartId(cartList.get(i).getCartId());
cartGoods.setCartGoods(cartList.get(i).getCartGoods());
cartGoods.setCartNum(cartList.get(i).getCartNum());
cartGoods.setCartPrice(cartList.get(i).getCartPrice());
cartGoods.setCartUser(cartList.get(i).getCartUser());
cartGoods.setGoodsId(goodsList.get(i).getGoodsId());
cartGoods.setGoodsName(goodsList.get(i).getGoodsName());
cartGoods.setGoodsNums(goodsList.get(i).getGoodsNums());
cartGoods.setGoodsAttr(goodsList.get(i).getGoodsAttr());
cartGoods.setGoodsImg(goodsList.get(i).getGoodsImg());
cartGoods.setTypeId(goodsTypes.get(i).getTypeId());
cartGoods.setTypeName(goodsTypes.get(i).getTypeName());
BigDecimal num = new BigDecimal( cartList.get(i).getCartNum());
BigDecimal price = cartList.get(i).getCartPrice();
BigDecimal allPrice = price.multiply(num);
cartGoods.setAllcartNum(allPrice);
cartGoodsList.add(cartGoods);
}
model.addAttribute("cartGoodsList",cartGoodsList);
return "/cart";
}
/*获取全部产品信息 分页*/
@RequestMapping("/getAllGoodsByStoreId")
@ResponseBody
public JSONObject getAllGoodsByStoreId(int page, int limit, String keyWord, HttpSession session) {
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<GoodsIntact> pBean = goodsService.getPageBean(pageBean.getPage(), pageBean.getLimit(), keyWord,userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*获取全部产品信息 分页*/
@RequestMapping("/getAllGoodsByStoreIdAndGoodId")
@ResponseBody
public JSONObject getAllGoodsByStoreIdAndGoodId(int page, int limit, String keyWord,String search, HttpSession session) {
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<GoodsIntact> pBean = goodsService.getPageBean2(pageBean.getPage(), pageBean.getLimit(), keyWord,search,userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*获取全部订单信息分页*/
@RequestMapping("/getAllOrdersByStoreId")
@ResponseBody
public JSONObject getAllGoodsByStoreId(Integer page, Integer limit, String keyWord, HttpSession session) {
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<orderGoods2> pBean = orderService.getPageBean(pageBean.getPage(), pageBean.getLimit(), keyWord,userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*获取订单信息 搜索 分页*/
@RequestMapping("/getAllOrdersByStoreId2")
@ResponseBody
public JSONObject getAllGoodsByStoreId2(Integer page, Integer limit, String keyWord,String search, HttpSession session) {
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<orderGoods2> pBean = orderService.getPageBean2(pageBean.getPage(), pageBean.getLimit(), keyWord,search,userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*获取全部评论信息 分页*/
@RequestMapping("/getAllEvaluateByStoreId")
@ResponseBody
public JSONObject getAllEvaluateByStoreId(Integer page, Integer limit, String keyWord, HttpSession session) {
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<Evaluate2> pBean = evaluateService.getPageBean(pageBean.getPage(), pageBean.getLimit(), keyWord,userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*通过产品获取全部评论信*/
@RequestMapping("/getAllCommByGoodsId")
@ResponseBody
public JSONObject getAllByGoodsId(Integer page, Integer limit, String keyWord, String search,HttpSession session) {
System.out.println(search);
int userId = (int) session.getAttribute("userId");
PageBean pageBean = new PageBean();
pageBean.setPage(page);
pageBean.setLimit(limit);
PageBean<Evaluate2> pBean = evaluateService.getPageBean2(pageBean.getPage(), pageBean.getLimit(), Integer.parseInt(search),userId);
JSONObject jsObj = new JSONObject();
jsObj.put("msg", "");
jsObj.put("code", 0);
jsObj.put("count", pBean.getTotalRecs());
jsObj.put("data", pBean.getJsArr());
return jsObj;
}
/*下架产品*/
@RequestMapping("/deleteGood")
@ResponseBody
public String deleteGood(@RequestParam(value = "goodsId",required = true)int goodsId){
int i =goodsService.deleteGoodsByGoodsId(goodsId);
if(i == 1){
return "success";
}else {
return "flag";
}
}
/*上架产品*/
@RequestMapping("/renewGoods/{goodsId}")
@ResponseBody
public String renewGoods(@PathVariable int goodsId){
int rs = goodsService.renewGoods(goodsId);
if (rs>0){
return "success";
}else {
return "fail";
}
}
/*发货*/
@RequestMapping("/updateGoodsByDelivery")
@ResponseBody
public String updateGoodsByDelivery(@RequestParam(value = "id",required = true)Long id){
int i = goodsService.updateGoodsByDelivery(id);
if(i == 1){
return "success";
}else {
return "flag";
}
}
/*确认收货*/
@RequestMapping("/getGoodsByIdReceiving")
@ResponseBody
public String getGoodsByIdReceiving(@RequestParam(value = "orderId",required = true)Long id){
int i = goodsService.getGoodsByIdReceiving(id);
if(i == 1){
return "success";
}else {
return "flag";
}
}
@RequestMapping("/getAllBrand")
@ResponseBody
public List<Brand> getAllBrand(){
List<Brand> brandList = brandService.getAllBrand();
return brandList;
}
@RequestMapping("/getAllGoodsType")
@ResponseBody
public List<GoodsType> getAllGoodsType(){
List<GoodsType> goodsTypeList = goodsTypeService.getAllGoodsType();
return goodsTypeList;
}
@RequestMapping("/getGoodsByBrand/{brandId}")
public String getGoodsByBrand(@PathVariable int brandId,Model model){
List<Goods> allGoodsList = goodsService.getGoodsByBrand(brandId);
model.addAttribute("allGoodsList", allGoodsList);
return "/goodsList";
}
@RequestMapping("/getGoodsByType/{typeId}")
public String getGoodsByType(@PathVariable int typeId,Model model){
List<Goods> allGoodsList = goodsService.getGoodsByType(typeId);
model.addAttribute("allGoodsList", allGoodsList);
return "/goodsList";
}
@RequestMapping("/toAddGoods")
public String toAddGoods(){
return "/admin/addGoods";
}
@RequestMapping(value = "/upload")
@ResponseBody
public JSONObject upUserImg(@RequestParam(value = "file") MultipartFile file) throws IOException {
String name = file.getOriginalFilename();
System.out.println(name);
/*String path = "G:/shejiing/code/ec_system/src/main/resources/static/img/header/banner/" + name;*/
String path = "G:/shejiing/code/template/src/main/resources/static/img/header/goods/" + name;
file.transferTo(new File(path));
JSONObject jsonObject = new JSONObject();
jsonObject.put("goodsImg", name);
return jsonObject;
}
/*添加产品*/
@RequestMapping("/addGoods")
@ResponseBody
public String addGoods(Goods goods){
int rs = goodsService.addGoods(goods);
if (rs>0){
return "success";
}else {
return "fail";
}
}
/*修改产品信息*/
@RequestMapping("/updateGoods")
@ResponseBody
public String updateGoods(Goods goods){
int rs = goodsService.updateGoods(goods);
if (rs>0){
return "success";
}else {
return "fail";
}
}
/*通过店家获取产品*/
@RequestMapping("/getAllGoodsByStore")
@ResponseBody
public List<Goods> getByStore(HttpSession httpSession){
int userId = (int) httpSession.getAttribute("userId");
Store store = storeService.selectByUserId(userId);
List<Goods> goodsList = goodsService.getGoodsByStoreId(store.getStoreId());
return goodsList;
}
}