作者主页:源码空间站2022
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
项目介绍
后台功能:
1. 后台商品信息的添加
2. 后台商品信息的维护
要求:商品图片的修改。先显示现有的图片,当鼠标移动到图片上时,图片右上角显示一把X,即允许删除当前图片,然后提供添加新图片的按钮。类似于QQ空间相册中图片的修改一样。
上传的所有商品图片必须在右下角自动加上水印,即前台显示时,显示已经加好水印的图片。
3. 后台统计报表
要求:使用Echarts显示统计日营业额、月营业额、季度营业额以及年度营业额 以及 根据商品统计月营业额
前台功能:
1. 首页商品显示
要求:显示每种类型的最新四种商品信息(一次性查出,即只能发送一次请求和一条sql语句)
2. 点击首页 查看更多后,根据类型跳到goods.html页面分页显示当前类型的商品信息,排序规则:先根据销售数量降序,再根据商品编号降序
3. 点击加入购物车按钮时
要求: 先判断有没有登录,如果没有登录先提醒用户"请先登录...",然后跳到登录界面,登录成功后再跳回到原来界面
如果已经登录,加入购物车前,先判断该商品购物车中是否已经存在,如果存在则直接加数量,如果不存在则添加次商品信息到购物车
当前页面 "我的购物车" 商品信息的数量相应的改变
4. 当点击头部或其它地方的 "我的购物车" 时,跳到购物车页面
要求:需要做登录校验
完善全选全不选效果
完善增或减商品的数量,合计、商品数量总计等信息需要联动
5. 在我的购物车页面勾选需要结账的商品后,点击去结账
要求:如果没有勾选任何商品,则给出提示信息
点击编辑收货地址,弹出收货地址编辑框,让用户选择当前订单的收货地址,省市区采用js解析xml三级级联实现
完善收货地址编辑列表,添加设为默认收货地址按钮和当前为默认收货地址的标签,效果可参考京东、淘宝的收货地址效果
修改默认收货地址时,只允许发送一条sql语句
6. 点击提交订单时(需要做登录校验)
要求:删除当前用户购物车中,已下单的商品信息
修改用户已经购买的商品的相应的库存量
在订单表中添加一条订单记录
在订单详细表中添加购买商品的详细信息
要求以上操作必须添加事务管理,所有操作要么同时成功要么都回滚,并且对每个表的操作只能发送一条sql一句,即总共下单功能只能发送4条sql语句
7. 在首页或商品信息页面,当用户点击某个商品时,跳到 details.html 显示该商品的详细信息
扩展功能:
1. 添加前台会员信息的修改,允许前台会员拍照上传或选择图片上传的方式修改个人的图像
2. 购物车数据使用redis缓存
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
1. 后端:SpringBoot
2. 前端:HTML+Thymeleaf+jQuery+easyUI+bootstrap
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,前台地址:http://localhost:8080
用户名 wang11 密码123456
后台地址: http://localhost:8080/toAdminLogin
用户名 supperman 密码 123456
运行截图
前台界面
后台界面
代码相关
商品管理控制器
@Controller
public class GoodsCarController {
@Resource(name = "goodsCarService")
GoodsCarService goodsCarService;
@Resource(name = "userService")
UserService userService;
@Resource(name = "orderService")
OrderService orderService;
/**
* 加入购物车
*/
@RequestMapping("/addGoodsCar")
@ResponseBody
public Map<String, Object> addGoodsCar(String goodsid, String shuliang, HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
User u = userService.findUserByUsername(username);
String userid = u.getId();
List<Goodscar> goodscars = goodsCarService.findGoodscarByUserId(userid);
for (Goodscar gs : goodscars) {
if (gs.getGoodsid().equals(goodsid)){
double count = Double.parseDouble(shuliang);
count += gs.getCount();
Map<String, Object> map1 = new HashMap<String, Object>();
int reserved1 = (int) count;
map1.put("count",count);
map1.put("goodsid",goodsid);
map1.put("reserved1",String.valueOf(reserved1));
int result = goodsCarService.updateGoodsCarByCount(map1);
if (result == 1){
List<Goodscar> gds = goodsCarService.findGoodscarByUserId(userid);
App.goodscarList = gds;
session.setAttribute("goodscarList", App.goodscarList);
session.setAttribute("count", App.goodscarList.size());
map.put("status", 0);
map.put("message", "加入购物车成功");
}else {
map.put("status", 1);
map.put("message", "加入购物车失败");
}
return map;
}
}
String id = App.getUid();
int dr = 1;
double count = Double.parseDouble(shuliang);
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id",id);
map1.put("goodsid",goodsid);
map1.put("userid",userid);
map1.put("dr",dr);
map1.put("count",count);
map1.put("reserved1",shuliang);
int result = goodsCarService.addGoodsCar(map1);
if (result == 1) {
List<Goodscar> gods = goodsCarService.findGoodscarByUserId(userid);
App.goodscarList = gods;
session.setAttribute("goodscarList", App.goodscarList);
session.setAttribute("count", App.goodscarList.size());
map.put("status", 0);
map.put("message", "加入购物车成功");
} else {
map.put("status", 1);
map.put("message", "加入购物车失败");
}
return map;
}
/**
* 购物车的商品单个逻辑删除
*/
@RequestMapping("/goodscarDelete")
@ResponseBody
public Map<String, Object> goodscarDelete(String id, HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
int result = goodsCarService.goodsDelete(id);
if (result == 1) {
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
User u = userService.findUserByUsername(username);
List<Goodscar> goodscars = goodsCarService.findGoodscarByUserId(u.getId());
App.goodscarList = goodscars;
session.setAttribute("goodscarList", App.goodscarList);
session.setAttribute("count", App.goodscarList.size());
map.put("status", 0);
map.put("message", "删除成功");
} else {
map.put("status", 1);
map.put("message", "删除失败");
}
return map;
}
/**
* 结算商品
*/
@RequestMapping("/totalAllGoods")
@ResponseBody
public Map<String, Object> totalAllGoods(String ids,String reserved1s, HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
HttpSession session = request.getSession();
String[] gcids = ids.split(",");
String[] resves = reserved1s.split(",");
Map<String, Object> map3 = new HashMap<String, Object>();
for (int i=0;i<gcids.length;i++){
int reserved1 = Integer.parseInt(resves[i]);
map3.put("count",reserved1);
map3.put("id",gcids[i]);
map3.put("reserved1",String.valueOf(reserved1));
goodsCarService.updateGoodsCarCount(map3);
}
int result = goodsCarService.totalAllGoods(gcids);
if (result <= 0) {
map.put("status", 1);
map.put("message", "交易失败");
} else {
String uname = (String) session.getAttribute("username");
User u = userService.findUserByUsername(uname);
List<Goodscar> goodscars = goodsCarService.findGoodscarDrById(gcids);
List<Ordergoods> orders = new ArrayList<Ordergoods>();
Map<String, Object> map1 = new HashMap<String, Object>();
for (Goodscar gc : goodscars) {
String id = App.getUid();
String uid = gc.getUserid();
String gid = gc.getGoodsid();
String gcid = gc.getId();
int dr = gc.getDr();
map1.put("id",id);
map1.put("userid",uid);
map1.put("goodsid",gid);
map1.put("goodscarid",gcid);
map1.put("dr",dr);
orderService.addOrdergoods(map1);
}
List<Ordergoods> gcs = orderService.selectOrderByuserId(u.getId());
for (Ordergoods gs : gcs) {
orders.add(gs);
}
if (orders.size() <= 0) {
map.put("status", 1);
map.put("message", "交易失败");
} else {
session.setAttribute("orders", orders);
String userid = u.getId();
List<Goodscar> gc = goodsCarService.findGoodscarByUserId(userid);
App.goodscarList = gc;
session.setAttribute("goodscarList", App.goodscarList);
session.setAttribute("count", App.goodscarList.size());
map.put("status", 0);
map.put("message", "交易成功");
}
}
return map;
}
/**
* 立即购买
*/
@RequestMapping("/buyGoodsImmediately")
@ResponseBody
public Map<String, Object> buyGoodsImmediately(String goodsid, String shuliang,HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>();
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
User u = userService.findUserByUsername(username);
String userid = u.getId();
String id = App.getUid();
int dr = 0;
double count = Double.parseDouble(shuliang);
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id",id);
map1.put("goodsid",goodsid);
map1.put("userid",userid);
map1.put("dr",dr);
map1.put("count",count);
map1.put("reserved1",shuliang);
int result = goodsCarService.addGoodsCar(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id",App.getUid());
map2.put("userid",userid);
map2.put("goodsid",goodsid);
map2.put("goodscarid",id);
map2.put("dr",dr);
int result2 = orderService.addOrdergoods(map2);
if (result == 1 && result2 == 1){
List<Ordergoods> orders = new ArrayList<Ordergoods>();
List<Ordergoods> gcs = orderService.selectOrderByuserId(u.getId());
for (Ordergoods gs : gcs) {
orders.add(gs);
}
session.setAttribute("orders", orders);
map.put("status", 0);
map.put("message", "购买成功");
map.put("result",id);
}else {
map.put("status", 1);
map.put("message", "购买失败");
map.put("result",null);
}
return map;
}
}
商品分类控制器
@Controller
public class GoodstypeController {
@Resource(name = "goodstypeService")
GoodstypeService goodstypeService;
/**
* 分页查询增加商品分类列表信息
*/
@RequestMapping("/addGoodsTypeList")
@ResponseBody
public Map<String, Object> addGoodsTypeList(int currentPage, String search) {
Map<String, Object> resultMap = new HashMap<String, Object>();
PageBean<Goodstype> pageBean = new PageBean<Goodstype>();
int pageSize = 5;
int start = (currentPage - 1) * pageSize;
int size = pageSize;
if (search == "" || search == null) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("start",start);
map.put("size",size);
List<Goodstype> lists = goodstypeService.findByPageType(map);
// List<Goodstype> list = goodstypeService.selectCountType();
int count = goodstypeService.selectCountType();
if (count <= 0) {
resultMap.put("status", 1);
resultMap.put("message", "没有数据");
resultMap.put("result", null);
} else {
int totalCount = count;
double tc = totalCount;
int totalPage = (int) Math.ceil(tc / pageSize);
pageBean.setCurrentage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(totalCount);
pageBean.setTotalPage(totalPage);
pageBean.setLists(lists);
resultMap.put("status", 0);
resultMap.put("message", "有数据");
resultMap.put("result", pageBean);
}
} else {
// String search1 = "";
// search1 += ("%" + search + "%");
Map<String, Object> map = new HashMap<String, Object>();
map.put("start",start);
map.put("size",size);
map.put("search",search);
List<Goodstype> lists = goodstypeService.findByPageTypeSearch(map);
// List<Goodstype> list = goodstypeService.selectSearchCounttype(search1);
int count = goodstypeService.selectSearchCounttype(search);
if (count <= 0) {
resultMap.put("status", 1);
resultMap.put("message", "没有数据");
resultMap.put("result", null);
} else {
int totalCount = count;
double tc = totalCount;
int totalPage = (int) Math.ceil(tc / pageSize);
pageBean.setCurrentage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(totalCount);
pageBean.setTotalPage(totalPage);
pageBean.setLists(lists);
resultMap.put("status", 0);
resultMap.put("message", "有数据");
resultMap.put("result", pageBean);
}
}
return resultMap;
}
/**
* 添加商品分类
*/
@RequestMapping("/addGoodsType")
@ResponseBody
public Map<String, Object> addGoodsType(String name) {
Map<String, Object> map = new HashMap<String, Object>();
int dr = 0;
String id = name;
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id",id);
map1.put("name",name);
map1.put("dr",dr);
int result = goodstypeService.addGoodsType(map1);
if (result == 1) {
map.put("status", 0);
map.put("message", "添加成功");
} else {
map.put("status", 1);
map.put("message", "添加失败");
}
return map;
}
/**
* 查询商品分类
*/
@RequestMapping("/selectGoodsType")
@ResponseBody
public Map<String, Object> selectGoodsType() {
Map<String, Object> map = new HashMap<String, Object>();
List<Goodstype> goodstypes = goodstypeService.selectGoodsType();
if (goodstypes != null) {
map.put("status", 0);
map.put("message", "查询成功");
map.put("result", goodstypes);
} else {
map.put("status", 1);
map.put("message", "查询失败");
map.put("result", null);
}
return map;
}
}
如果也想学习本系统,下面领取。回复:055springboot