文末获取源码
开发语言:Java
框架:springcloud
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
本系统主要包括管理员和用户两个角色组成,主要包括以下功能:
(1)前台:首页、商品信息、购物资讯、个人中心、购物车。
(2)管理员:首页、个人中心、用户管理、商品信息管理、商品分类管理、系统管理、订单管理。
考虑到实际生活中分布式架构网上商城在管理方面的需要以及对该平台认真的分析,将系统权限按管理员和用户涉及用户划分。
管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、商品信息管理、商品分类管理、系统管理、订单管理等功能。管理员用例图如图

用户用例图如图
系统整体功图

分布式架构网上商城,在系统首页可以查看首首页、商品信息、购物资讯、个人中心、购物车等内容,并进行详细操作;如图

在用户注册页面通过填写账号、密码、确认密码、姓名、手机、邮箱等信息进行注册操作,如图

在商品信息页面可以查看商品名称、价格、单次购买、库存、商品类型、规格、上架时间、点击次数等内容进行购买、评论或收藏等操作,如图

在购物车页面可以查看购买商品、价格、数量、总价等内容,进行删除或购买等操作,如图
在个人中心页面通过填写账号、密码、姓名、性别、手机、邮箱、图片、余额等内容进行更新信息等操作,并可以根据我的订单、我的地址或我的收藏进行相应的操作,如图

管理员进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图

管理员登录系统后,可以对首页、个人中心、用户管理、商品信息管理、商品分类管理、系统管理、订单管理等功能进行相应的操作管理,如图

在用户管理页面可以对索引、账号、姓名、性别、手机、邮箱、头像等内容进行详情、修改或删除等操作,如图

在商品信息管理页面可以对索引、商品名称、商品类型、规格、上架时间、商品图片、价格、单限、库存等内容进行详情、查看评论、修改或删除等操作,如图

在商品分类管理页面可以对索引、类型等内容进行修改或删除等操作,如图
在购物资讯页面中可以对索引、标题、图片等内容进行详情、修改或删除等操作,并可以根据轮播图管理进行相应的操作,如图

- # 端口号
- server:
- port: 8761
- # 配置注册服务中心
- eureka:
- instance:
- hostname: 127.0.0.1
- # 配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔。生产环境不建议关闭
- server:
- enable-self-preservation: false
- eviction-interval-timer-in-ms: 6000
- peer-node-read-timeout-ms: 90000
- response-cache-update-interval-ms: 5000
- client:
- # 表明自己不是一个客户端,并且不进行自注册
- register-with-eureka: false
- fetch-registry: false
- # 注册中心的访问地址
- service-url:
- defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
- # 配置应用程序名称
- spring:
- application:
- name: cloud-eureka
- /**
- * 订单
- * 后端接口
- * @author
- * @email
- * @date 2022-03-16 23:51:29
- */
- @RestController
- @RequestMapping("/orders")
- public class OrdersController {
- @Autowired
- private OrdersService ordersService;
-
-
-
-
-
- /**
- * 后端列表
- */
- @RequestMapping("/page")
- public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
- HttpServletRequest request){
- if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
- orders.setUserid((Long)request.getSession().getAttribute("userId"));
- }
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
-
- return R.ok().put("data", page);
- }
-
- /**
- * 前端列表
- */
- @IgnoreAuth
- @RequestMapping("/list")
- public R list(@RequestParam Map<String, Object> params,OrdersEntity orders,
- HttpServletRequest request){
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
- return R.ok().put("data", page);
- }
-
- /**
- * 列表
- */
- @RequestMapping("/lists")
- public R list( OrdersEntity orders){
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
- return R.ok().put("data", ordersService.selectListView(ew));
- }
-
- /**
- * 查询
- */
- @RequestMapping("/query")
- public R query(OrdersEntity orders){
- EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
- ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
- OrdersView ordersView = ordersService.selectView(ew);
- return R.ok("查询订单成功").put("data", ordersView);
- }
-
- /**
- * 后端详情
- */
- @RequestMapping("/info/{id}")
- public R info(@PathVariable("id") Long id){
- OrdersEntity orders = ordersService.selectById(id);
- return R.ok().put("data", orders);
- }
-
- /**
- * 前端详情
- */
- @IgnoreAuth
- @RequestMapping("/detail/{id}")
- public R detail(@PathVariable("id") Long id){
- OrdersEntity orders = ordersService.selectById(id);
- return R.ok().put("data", orders);
- }
-
-
-
-
- /**
- * 后端保存
- */
- @RequestMapping("/save")
- public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
- orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
- //ValidatorUtils.validateEntity(orders);
- orders.setUserid((Long)request.getSession().getAttribute("userId"));
- ordersService.insert(orders);
- return R.ok();
- }
-
- /**
- * 前端保存
- */
- @RequestMapping("/add")
- public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
- orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
- //ValidatorUtils.validateEntity(orders);
- ordersService.insert(orders);
- return R.ok();
- }
-
- /**
- * 修改
- */
- @RequestMapping("/update")
- public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
- //ValidatorUtils.validateEntity(orders);
- ordersService.updateById(orders);//全部更新
- return R.ok();
- }
-
-
- /**
- * 删除
- */
- @RequestMapping("/delete")
- public R delete(@RequestBody Long[] ids){
- ordersService.deleteBatchIds(Arrays.asList(ids));
- return R.ok();
- }
-
- /**
- * 提醒接口
- */
- @RequestMapping("/remind/{columnName}/{type}")
- public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
- @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
- map.put("column", columnName);
- map.put("type", type);
-
- if(type.equals("2")) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Calendar c = Calendar.getInstance();
- Date remindStartDate = null;
- Date remindEndDate = null;
- if(map.get("remindstart")!=null) {
- Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
- c.setTime(new Date());
- c.add(Calendar.DAY_OF_MONTH,remindStart);
- remindStartDate = c.getTime();
- map.put("remindstart", sdf.format(remindStartDate));
- }
- if(map.get("remindend")!=null) {
- Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
- c.setTime(new Date());
- c.add(Calendar.DAY_OF_MONTH,remindEnd);
- remindEndDate = c.getTime();
- map.put("remindend", sdf.format(remindEndDate));
- }
- }
-
- Wrapper<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
- if(map.get("remindstart")!=null) {
- wrapper.ge(columnName, map.get("remindstart"));
- }
- if(map.get("remindend")!=null) {
- wrapper.le(columnName, map.get("remindend"));
- }
- if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
- wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
- }
-
-
- int count = ordersService.selectCount(wrapper);
- return R.ok().put("count", count);
- }
-
-
-
-
-
-
- /**
- * (按值统计)
- */
- @RequestMapping("/value/{xColumnName}/{yColumnName}")
- public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("xColumn", xColumnName);
- params.put("yColumn", yColumnName);
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- ew.in("status", new String[]{"已支付","已发货","已完成"});
- List<Map<String, Object>> result = ordersService.selectValue(params, ew);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- for(Map<String, Object> m : result) {
- for(String k : m.keySet()) {
- if(m.get(k) instanceof Date) {
- m.put(k, sdf.format((Date)m.get(k)));
- }
- }
- }
- return R.ok().put("data", result);
- }
-
- /**
- * (按值统计)时间统计类型
- */
- @RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
- public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("xColumn", xColumnName);
- params.put("yColumn", yColumnName);
- params.put("timeStatType", timeStatType);
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- ew.in("status", new String[]{"已支付","已发货","已完成"});
- List<Map<String, Object>> result = ordersService.selectTimeStatValue(params, ew);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- for(Map<String, Object> m : result) {
- for(String k : m.keySet()) {
- if(m.get(k) instanceof Date) {
- m.put(k, sdf.format((Date)m.get(k)));
- }
- }
- }
- return R.ok().put("data", result);
- }
-
- /**
- * 分组统计
- */
- @RequestMapping("/group/{columnName}")
- public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("column", columnName);
- EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
- ew.in("status", new String[]{"已支付","已发货","已完成"});
- List<Map<String, Object>> result = ordersService.selectGroup(params, ew);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- for(Map<String, Object> m : result) {
- for(String k : m.keySet()) {
- if(m.get(k) instanceof Date) {
- m.put(k, sdf.format((Date)m.get(k)));
- }
- }
- }
- return R.ok().put("data", result);
- }
- }