谷粒商场篇】第三天


中国加油,武汉加油!

篇幅较长,请配合目录观看

1. 系统名称

Gmall-Manage

2. 数据结构

sku+spu

数据结构全称汉意
skustock keeping unitl标准的库存存储单元
spustandard product until标准的产品单元

3. pms商品数据结构的划分

数据结构含义
pms_sku_xxxsku的结构
pms_spu_xxxspu的结构
pms_catalog_xxx类目的结构
pms_attr_xxx属性的结构

4. manage系统前后端分离

4.1 安装nodejs

npm install

在这里插入图片描述

4.2 解压gmall-admin前端项目

  1. conf 配置前端服务的ip和前端访问数据的后端服务的ip地址
  2. dev.env.js 前端访问数据的后端服务的ip地址
  3. index.js 前端服务器的端口

4.3 用npm命令编译和启动前端项目

修改conf目录下的dev.env.js和index.js的端口为127.0.0.1
在gmall-admin目录下
npm run dev
账号:admin
密码:admin

在这里插入图片描述

4.4 前后端请求格式

  1. 一般前端会用post向后端发送请求(把参数封装到json中)
  2. 请求格式 @RequestBody
  3. 返回格式 @ResponseBody

5. 商城的商品录入功能

  1. 三级分类的查询
  2. 商品的平台属性列表的增删改查
  3. 商品spu的添加
    Spu列表查询
    spu的销售属性、属性值、Fastdfs图片上传
  4. 商品sku的添加
    sku信息、sku关联的销售属性、sku关联的平台属性、sku图片

6. 新建gmall-manage-service项目(springboot)

6.1 继承gmall-parent和引入gmall-api和gmall-service-util依赖

<parent>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
...
<dependency>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-service-util</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

6.2 写application.properties

# 项目配置
server.port=8081

# jdbc配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/gmall
spring.datasource.username=root
spring.datasource.password=123456

# mybatis配置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
# 驼峰
mybatis.configuration.map-underscore-to-camel-case=true
# 别名
mybatis.type-aliases-package=com.wpj.gmall.bean

# 日志级别
logging.level.root=info

# dubbo的配置
# dubbo中的服务名称
spring.dubbo.application=manage-service
# dubbo的通讯协议名称
spring.dubbo.protocol.name=dubbo
# zookeeper注册中心的地址
spring.dubbo.registry.address=47.98.33.215:2181
# zookeeper的通讯协议的名称
spring.dubbo.registry.protocol=zookeeper
# dubbo的服务的扫描路径
spring.dubbo.base-package=com.wpj.gmall

6.3 写程序入口

package com.wpj.gmall.manage;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = {"com.wpj.gmall.manage.mapper"})
public class GmallManageServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(GmallManageServiceApplication.class, args);
    }

}

7. 新建gmall-manage-web项目(springboot)

7.1 继承gmall-parent和引入gmall-api和gmall-web-util依赖

<parent>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
<dependency>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>com.wpj.gmall</groupId>
    <artifactId>gmall-web-util</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

7.2 新建Controller

package com.wpj.gmall.manage.controller;

import com.wpj.gmall.bean.PmsBaseCatalog1;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class CatalogController {

    @RequestMapping("getCatalog1")
    @ResponseBody
    public List<PmsBaseCatalog1> getCatalog1(){
        return null;
    }
    
}

7.3 写application.properties

# 服务端口
server.port=8082
# 日志级别
logging.level.root=info
# dubbo的配置
# dubbo中的服务名称
spring.dubbo.application=manage-web
# dubbo的通讯协议名称
spring.dubbo.protocol.name=dubbo
# zookeeper注册中心的地址
spring.dubbo.registry.address=47.98.33.215:2181
# zookeeper的通讯协议的名称
spring.dubbo.registry.protocol=zookeeper
# dubbo的服务的扫描路径
spring.dubbo.base-package=com.wpj.gmall

7.4 新建一个Service在gmall-api中

在这里插入图片描述
在这里插入图片描述

7.5 在gmall-manage-service写一个实现

package com.wpj.gmall.manage.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.wpj.gmall.bean.PmsBaseCatalog1;
import com.wpj.gmall.manage.mapper.PmsCatalog1Mapper;
import com.wpj.gmall.manage.mapper.PmsCatalog2Mapper;
import com.wpj.gmall.manage.mapper.PmsCatalog3Mapper;
import com.wpj.gmall.service.ICatalogService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class CatalogServiceImpl implements ICatalogService {

    @Autowired
    private PmsCatalog1Mapper pmsCatalog1Mapper;
    @Autowired
    private PmsCatalog2Mapper pmsCatalog2Mapper;
    @Autowired
    private PmsCatalog3Mapper pmsCatalog3Mapper;

    @Override
    public List<PmsBaseCatalog1> getCatalog1() {
        return pmsCatalog1Mapper.selectAll();
    }
}

7.6 在gmall-manage-service写三个mapper接口

package com.wpj.gmall.manage.mapper;

import com.wpj.gmall.bean.PmsBaseCatalog1;
import tk.mybatis.mapper.common.Mapper;

public interface PmsCatalog1Mapper extends Mapper<PmsBaseCatalog1> {
}
package com.wpj.gmall.manage.mapper;

import com.wpj.gmall.bean.PmsBaseCatalog2;
import tk.mybatis.mapper.common.Mapper;

public interface PmsCatalog2Mapper  extends Mapper<PmsBaseCatalog2> {
}
package com.wpj.gmall.manage.mapper;

import com.wpj.gmall.bean.PmsBaseCatalog3;
import tk.mybatis.mapper.common.Mapper;

public interface PmsCatalog3Mapper extends Mapper<PmsBaseCatalog3> {
}

在这里插入图片描述

8. 启动gmall-manage-service和gmall-manage-web的程序入口

在这里插入图片描述

9. 前后端跨域问题

在这里插入图片描述

9.1 前端和后端因为来自不同的网域,所以在http的安全协议策略下不信任

9.2 解决方案

  1. 在springmvc的控制层加入@CrossOrigin跨域访问的注解
    在这里插入图片描述
    在这里插入图片描述

10. 列表的查询

10.1 gmall-manage-web的Controller添加方法

@RequestMapping("getCatalog2")
@ResponseBody
public List<PmsBaseCatalog2> getCatalog2(String catalog1Id){
    List<PmsBaseCatalog2> catalog2s = iCatalogService.getCatalog2(catalog1Id);
    return catalog2s;
}
@RequestMapping("getCatalog3")
@ResponseBody
public List<PmsBaseCatalog3> getCatalog3(String catalog2Id){
    List<PmsBaseCatalog3> catalog3s = iCatalogService.getCatalog3(catalog2Id);
    return catalog3s;
}

10.2 gmall-api的Service添加方法

List<PmsBaseCatalog2> getCatalog2(String catalog1Id);
List<PmsBaseCatalog3> getCatalog3(String catalog2Id);

10.3 gmall-manage-service的ServiceImpl添加方法

@Override
public List<PmsBaseCatalog2> getCatalog2(String catalog1Id) {
    PmsBaseCatalog2 pmsBaseCatalog2 = new PmsBaseCatalog2();
    pmsBaseCatalog2.setCatalog1Id(catalog1Id);
    List<PmsBaseCatalog2> pmsBaseCatalog2s = pmsCatalog2Mapper.select(pmsBaseCatalog2);
    return pmsBaseCatalog2s;
}
@Override
public List<PmsBaseCatalog3> getCatalog3(String catalog2Id) {
    PmsBaseCatalog3 pmsBaseCatalog3 = new PmsBaseCatalog3();
    pmsBaseCatalog3.setCatalog2Id(catalog2Id);
    List<PmsBaseCatalog3> pmsBaseCatalog3s = pmsCatalog3Mapper.select(pmsBaseCatalog3);
    return pmsBaseCatalog3s;
}

在这里插入图片描述

11. 商品平台属性的管理功能(增删改查)

11.1 根据三级分类的id查询商品平台属性

11.2 写PmsBaseAttrInfoMapper和PmsBaseAttrValueMapper

package com.wpj.gmall.manage.mapper;

import com.wpj.gmall.bean.PmsBaseAttrInfo;
import tk.mybatis.mapper.common.Mapper;

public interface PmsBaseAttrInfoMapper extends Mapper<PmsBaseAttrInfo> {
}
package com.wpj.gmall.manage.mapper;

import com.wpj.gmall.bean.PmsBaseAttrValue;
import tk.mybatis.mapper.common.Mapper;

public interface PmsBaseAttrValueMapper extends Mapper<PmsBaseAttrValue> {
}

11.3 写IAttrService及其Impl

package com.wpj.gmall.service;

import com.wpj.gmall.bean.PmsBaseAttrInfo;

import java.util.List;

public interface IAttrService {
    List<PmsBaseAttrInfo> attrInfoList(String catalog3Id);
}
package com.wpj.gmall.manage.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.wpj.gmall.bean.PmsBaseAttrInfo;
import com.wpj.gmall.manage.mapper.PmsBaseAttrInfoMapper;
import com.wpj.gmall.manage.mapper.PmsBaseAttrValueMapper;
import com.wpj.gmall.service.IAttrService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@Service
public class AttrServiceImpl implements IAttrService {

    @Autowired
    private PmsBaseAttrInfoMapper pmsBaseAttrInfoMapper;
    @Autowired
    private PmsBaseAttrValueMapper pmsBaseAttrValueMapper;

    @Override
    public List<PmsBaseAttrInfo> attrInfoList(String catalog3Id) {
        PmsBaseAttrInfo pmsBaseAttrInfo = new PmsBaseAttrInfo();
        pmsBaseAttrInfo.setCatalog3Id(catalog3Id);
        List<PmsBaseAttrInfo> pmsBaseAttrInfos = pmsBaseAttrInfoMapper.select(pmsBaseAttrInfo);
        return pmsBaseAttrInfos;
    }
}

11.4 写Controller

package com.wpj.gmall.manage.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.wpj.gmall.bean.PmsBaseAttrInfo;
import com.wpj.gmall.service.IAttrService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@CrossOrigin
public class AttrController {

    @Reference
    private IAttrService iAttrService;

    @RequestMapping("attrInfoList")
    @ResponseBody
    public List<PmsBaseAttrInfo> attrInfoList(String catalog3Id) {
        return iAttrService.attrInfoList(catalog3Id);
    }
}

11.5 重启程序入口测试

在这里插入图片描述

12 添加平台属性

12.1 Controller添加方法

@RequestMapping("saveAttrInfo")
@ResponseBody
public String saveAttrInfo(@RequestBody PmsBaseAttrInfo pmsBaseAttrInfo){
    return "success";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值