商业Java版 ThinkInShop

  1. 主页
  2. 文档
  3. 商业Java版 ThinkInShop
  4. 开发文档
  5. 管理后台API开发文档

管理后台API开发文档

来客推java版本工程主要使用Springboot、Dubbo、Maven 来开发;

遵循阿里java开发规范 开发工具有规范的插件。

| 开发准备

环境 版本 备注
JDK 1.8.211 java环境
Mysql 5.5-5.6 数据存储
Redis 6.2 服务信息注册中心
zookeeper 3.5 dubbo注册中心
Maven 3.6.3 代码构建

 

项目结构介绍

1、整体结构介绍

此结构为通用结构,不包括插件模块的结构

laiketui-java-app    #整体项目
├── pom.xml    #maven 文件
├── laike-admin-store #pc管理后台
├── laike-admin-store-api    #pc管理后台接口
├── laike-app    #移动端
├── laike-app-service-api    #移动端接口
├── laike-common    #公共模块
├── laike-common-serviceapi    #公共模块接口
├── laike-coupon    #优惠券模块
├── laike-coupon-service-api    #优惠券模块接口
├── laike-domain    #所有实体/vo类
├── laike-file    #资源管理文件上传
├── laike-file-api    #资源管理文件上传接口
├── laike-gateway    #网关
├── laike-mch    #多店铺模块
├── laike-mch-service-api    #多店铺模块接口
├── laike-order    #订单模块
├── laike-order-serice-api    #订单模块接口
├── laike-payment    #支付模块
├── laike-payment-service-api    #支付模块接口
├── laike-products    #商品模块
├── laike-products-service-api    #商品模块接口
├── laike-freight    #运费模块
├── laike-freight-service-api    #运费模块接口
├── laike-invoice    #发票模块
├── laike-invoice-service-api    #发票模块接口
├── laike-store-pc    #pc商城模块
├── laike-store-pc-api    #pc商城模块接口
├── laike-plugin-distribution    #分销模块
├── laike-plugin-api    #分销模块接口
├── laike-task    #定时任务模块
├── laike-user    #用户模块
└── laike-user-service-api    #用户模块接口

此树结构为插件模块介绍

laiketui-java-app    #
├── laike-seckill #秒杀
├── laike-seckill-service-api    #秒杀接口
├── laike-diy    #首页diy
├── laike-diy-service-api    #首页diy接口
├── laike-presell    #预售模块
├── laike-presell-service-api    #预售模块接口
├── laike-member #秒杀
├── laike-member-service-api    #秒杀接口
├── laike-plugin-common    #公共模块 
├── laike-plugin-integral    #积分模块
├── laike-plugin-integral-api    #积分接口
├── laike-auction    #竞拍接口
└── laike-auction-service-api    #竞拍模块接口

 

2、单模块结构介绍

laike-xxxx 单个模块结构

laike-xxxx    #模块名
├── laike-xxxx.iml 
├── mvnw
├── mvnw.cmd
├── pom.xml    #maven构建文件
├── src    #源码文件
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── laiketui
│   │   │           └── xxxx    #模块名
│   │   │               ├── LaikeXxxxApplication.java    #模块启动类
│   │   │               ├── common    #模块内通用文件夹
│   │   │               │   ├── consts    #模块内常量文件夹
│   │   │               │   └── uitls    #模块帮助类文件夹
│   │   │               ├── controller    #控制层代码
│   │   │               └── service    #服务层代码 
│   │   └── resources
│   │       ├── application.yml    #模块配置文件
│   │       ├── logback-spring.xml    #日志配置文件
│   │       ├── static    #静态资源
│   │       └── templates    #静态模版
│   └── test    #测试代码
└── target    #模块编译后文件存放文件夹

 

管理后台API开发文档

!!!!!! LaikeXxxxApplication.java 模块启动类 不要在开发工具里面配tomcat
!!!!!! LaikeXxxxApplication.java 模块启动类 不要在开发工具里面配tomcat
!!!!!! LaikeXxxxApplication.java 模块启动类 不要在开发工具里面配tomcat

一、网关 laike-gateway

1、网关入参数格式

入参 是否必填 类型 备注
api string 接口名api的取值
accessId string token值
image MultipartFile 单图片
file MultipartFile 单文件
files MultipartFile 多文件
exportType string 是否导出标志 1导出 0否
store_id int 商城id:移动端必填;管理后台pc端控制台非必填;具体商城必填;
store_type int 端类型 1:微信小程序 2:app 7:H5 8:管理后台
其他用户自定义参数可以同时拼入请求中
{
  api: 'app.xx.kkk',
  id: this.id,
  store_type:7,
  store_id:1
}

注:api的取值来源有两种:

  • @HttpApiMethod(urlMapping=”com.laiketui.getuser”) urlMapping的值 com.laiketui.getuser 或 apiKey 的值
  • @DubboApiMethod(apiKey = “app.aution.index”) apiKey的值 app.aution.index

2、控制层统一使用Result封装接口返回的结果

出参 名称 类型 备注
message 操作消息 string 消息
code 操作编码 string 请求code
data 操作结果 Object 操作结果
{
  "code":"200",
  "message":"操作成功",
  "data":{
                "activityNum":137,
                "returnNum":25,
                "shiWuNum":253,
                "orderNum":390
               }
}

二、服务注册

1、Http服务信息注册

在spring 控制层的controller代码方法上面使用注解 @HttpApiMethod(urlMapping=”com.laiketui.getuser”) 完成http服务注册。

    @ApiOperation("添加购物车api")
@PostMapping("addCart")
@HttpApiMethod(urlMapping = "app.product.add_cart")
public Result addCart(AddCartVo vo) {
    try {
        return Result.success(productService.addCart(vo));
    } catch (LaiKeAPIException e) {
        return Result.error(e.getCode(), e.getMessage());
    }
}

2、Dubbo服务新增注册

在服务层的serviceImpl类的方法上面使用注解 @HttpApiMethod(urlMapping=”com.laiketui.getuser”) 完成Dubbo服务注册。前端开发人员调用的时候指定api参数的值为 apiKey的值 ,通过网关完成dubbo服务的掉用。

@DubboApiMethod(apiKey = "app.aution.index")
public Map<String, Object> index(MainVo vo, String type) throws LaiKeAPIException {
    return null;
}

三、配置信息 application.yml

Redis 配置

  • [ ] laike-core 配置 application-dev/prod.yml
  • redis:
        database: 0
        host: localhost
        port: 6339
        password: laiketui.com
    
  • Mysql配置
  • datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      ##############修改配置################
      url: jdbc:mysql://localhost:3306/v3_db?useUnicode=true&autoReconnect=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false
      username: root
      password: root321
      ##############修改配置################
      type: com.alibaba.druid.pool.DruidDataSource
      initialSize: 1
      minIdle: 1
      maxIdle: 5
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      filters: stat,wall
      maxPoolPreparedStatementPerConnectionSize: 20
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    
  • zookeeper配置:每个模块单独配置 application.yml
  • dubbo:
      application:
        name: laike-app
      registry:
        id: zookeeper-registryapplication.yml
        protocol: zookeeper
        # 根据实际情况修改ip和端口号
        address: 127.0.0.1:2181
      protocol:
        name: dubbo
        # 各个模块目前有默认的端口配置 若端口被占用 可以修改此端口
        port: 20991
        accesslog: dubbo-access.log
      provider:
        retries: 0 
        timeout: 600000  
        delay: -1  
        filter: -exception,dubboExceptionFilter 
      monitor:
        protocol: registry
    
  • 其他配置说明
  • server:
      # tomcat端口
      port: 18004
    
    # 自定义配置
    node:
        # http服务注册的节点所在ip 默认127.0.0.1 分布式部署的时候可以修改为具体的ip地址
      ip: 127.0.0.1
      # 微信支付的p12证书保存位置:不同的操作系统需要修改保存的位置,注意需要读写权限
      # 位置不对的话影响微信支付的退款操作
      # 注:此配置仅 laike-admin-store 模块需要
      wx-certp12-path: C:/certs
    
  • maven 下载第三方jar包 ,邮件中的m2.zip文件

    运行 启动各个模块的XxxApplication.java类main方法 启动模块

    安装laike-root包

    # -Dfile root的实际文件位置
    mvn install:install-file -Dfile=/path/laike-root-0.0.1-SNAPSHOT.jar -DgroupId=com.laiketui -DartifactId=laike-root -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
    

    安装 xxl-job包

  • ### -Dfile xx-xjob的实际文件位置
    mvn install:install-file -Dfile=C:\xxl-job-core-2.3.0-SNAPSHOT.jar -DgroupId=com.xuxueli -DartifactId=xxl-job-core -Dversion=2.3.0-SNAPSHOT -Dpackaging=jar
    

    API接口文档在线访问地址:
    http://ip:模块端口/模块上下文/swagger-ui.html
    模块上下端口和模块上下问在对应模块的application.yml 文件开头

  • server:  
      port_register: 18001 
      port: 模块端口 
      ssl:  
        enabled: false  
      tomcat:  
        uri-encoding: UTF-8  
      servlet:  
        context-path: /模块上下文
    

     

    如果要用域名去访问则需要配置nginx 转发

    启动模块说明

    除了 以下命名的模块不需要启动之外其他的需要

     laike-xx-api 
    laike-xx-service-api 
    laike-common-serviceapi 
    laike-common
    laike-domain
    

     

    store_type 字段说明

  • /**
             * app
             */
            int STORE_TYPE_APP = 2;
            /**
             * h5
             */
            int STORE_TYPE_H5 = 2;
            /**
             * 微信小程序
             */
            int STORE_TYPE_WX_MP = 1;
            /**
             * pc店铺
             */
            int STORE_TYPE_PC_MCH = 7;
            /**
             * pc商城
             */
            int STORE_TYPE_PC_MALL = 6;
            /**
             * pc管理后台
             */
            int STORE_TYPE_PC_ADMIN = 8;
            /**
             * 支付宝小程序
             */
            int STORE_TYPE_ALI_MP = 3;
            /**
             * 字节跳动小程序
             */
            int STORE_TYPE_BYTEDANCE_MP = 4;
            /**
             * 百度小程序
             */
            int STORE_TYPE_BAIDU_MP = 5;
    
  • ordertype 字段说明
    /**
            * 普通订单
            */
           String ORDERS_HEADER_GM = "GM";
           /**
            * 砍价头部
            */
           String ORDERS_HEADER_KJ = "KJ";
    
           /**
            * 拼团订单
            */
           String ORDERS_HEADER_PT = "PT";
    
           /**
            * 预售订单
            */
           String ORDERS_HEADER_PS = "PS";
    
           /**
            * 开团订单
            */
           String ORDERS_HEADER_KT = "KT";
    
           /**
            * 分销订单
            */
           String ORDERS_HEADER_FX = "FX";
    
           /**
            * 竞拍
            */
           String ORDERS_HEADER_JP = "JP";
    
           /**
            * 特惠
            */
           String ORDERS_HEADER_TH = "TH";
    
           /**
            * 秒杀
            */
           String ORDERS_HEADER_MS = "MS";
    
           /**
            * 竞拍
            */
           String ORDERS_HEADER_AC = "AC";
    
           /**
            * 充值
            */
           String ORDERS_HEADER_CZ = "CZ";
    
           /**
            * 积分商城
            */
           String ORDERS_HEADER_IN = "IN";
    
           /**
            * vip订单
            */
           String ORDERS_HEADER_DJ = "DJ";
    
           /**
            * 平台拼团订单
            */
           String PTHD_ORDER_PP = "PP";
           /**
            * 平台秒杀订单
            */
           String PTHD_ORDER_PM = "PM";
           /**
            * 虚拟订单
            */
           String ORDERS_HEADER_VI = "VI";
    
           /**
            * 店铺保证金 - 临时表+保证金表
            */
           String ORDERS_HEADER_MCH_PROMISE = "PR";
    
           /**
            * 平台标识
            */
           String PTHD_ORDER_HEADER = "pthd_";
    

     

  • 系统配置信息修改示意图,目前没有的模块请忽略不计

    管理后台API开发文档