聚合支付项目-14
  DS5Q6Ie4ExGM 2023年12月22日 16 0

1.7 工程测试

通过一个案例”根据Id查询商户“的开发去熟悉项目架构的基本开发方法。

1.7.1生成代码

使用mp的自动生成工程生成entity、mapper等文件。

1)修改生成类中的数据库链接,连接huiminpay_merchant_service数据库

2)设置包路径

PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.huiminpay");

3)运行生成类,输入模块名:merchant

生成成功:

将生成的entity、mapper拷贝到huiminpay-merchant-service工程

1.7.2Mybatis-Plus配置

1.7.2.1配置连接池Druid

  1. 在nacos中新建连接池Druid配置:spring-boot-starter-druid.yaml,Group为:COMMON_GROUP
    内容如下:
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/oauth?useUnicode=true
    username: root
    password: yourpassword
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      filter:
        stat:
          slow-sql-millis: 1
          log-slow-sql: true
      filters: config,stat,wall,log4j2
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        session-stat-enable: false
        session-stat-max-count: 1000
        principal-cookie-name: admin
        principal-session-name: admin
        profile-enable: true
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        allow: 127.0.0.1
        deny: 127.0.0.1
        reset-enable: false
        login-password: admin
        login-username: admin
      aop-patterns: com.huiminpay.*.service.*
  1. 商户服务覆盖部分配置(数据库名和用户名密码):merchant-service.yaml
# 覆盖spring‐boot‐starter‐druid.yaml的项目
spring:
  datasource:
    druid:
      url: jdbc:mysql://127.0.0.1:3306/huiminpay_merchant_service?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&useSSL=false
      username: root
      password: yourpassword
  1. 应用配置到项目中:bootstrap.yml
- refresh: true
  data-id: spring-boot-starter-druid.yaml # spring boot starter druid配置
  group: COMMON_GROUP # 通用配置组

1.7.2.2配置Mybatis-Plus

  1. 在nacos中添加配置:spring-boot-mybatis-plus.yaml,Group为:COMMON_GROUP
mybatis-plus:
  configuration:
    cache-enabled: false
    map-underscore-to-camel-case: true
  global-config:
    id-type: 0
    field-strategy: 0
    db-column-underline: true
    refresh-mapper: true
  typeAliasesPackage: com.huiminpay.user.entity
  mapper-locations: classpath:com/huimin/*/mapper/*.xml
  1. 商户服务覆盖部分Mybatis-Plus配置:merchant-service.yaml
mybatis-plus:
  typeAliasesPackage: com.huiminpay.merchant.entity
  mapper-locations: classpath:com/huiminpay/*/mapper/*.xml
  1. 应用配置到项目中:bootstrap.yml
- refresh: true
  data-id: spring-boot-mybatis-plus.yaml # spring boot mybatisplus配置
  group: COMMON_GROUP # 通用配置组
  1. 添加分页和性能分析插件:MybatisPlusConfig
package com.huiminpay.merchant.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Administrator
 * @version 1.0
 **/
@Configuration
@MapperScan("com.huiminpay.**.mapper")
public class MybatisPlusConfig {

    /**
     * 分页插件,自动识别数据库类型
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    /**
     * 启用性能分析插件
     */
    @Bean
    public PerformanceInterceptor performanceInterceptor(){
        return new PerformanceInterceptor();
    }
}

1.7.3创建接口

在huiminpay-merchant-api下新建商户接口:MerchantService

package com.huiminpay.merchant.api;

import com.huiminpay.merchant.api.dto.MerchantDTO;

public interface IMerchantService{
    /**
     * 根据ID查询商户信息
     * @param merchantId
     * @return
     */
    MerchantDTO queryMerchantById(Long merchantId);
}

注意:DTO类型的对象作为service层传输的对象。

dto:表示的是 vo和entity的一个中间转换对象,是vo或entity对象中属性的一个子对象。当前端传来vo数据,我们提取vo中的数据到dto中,再将dto的数据处理后全部移动到entity中进行数据的保存。反之亦然

在huiminpay-merchant-api工程 定义MerchantDTO

package com.huiminpay.merchant.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
@ApiModel("商户基本信息")
@Data
public class MerchantDTO implements Serializable {
    /**
     * 主键
     */
//    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 商户名称
     */
    @ApiModelProperty(name = "merchantName",value = "商户名称",example = "黄焖鸡")
    private String merchantName;

    /**
     * 企业编号
     */
    @ApiModelProperty(name = "merchantNo",value = "企业编号",example = "10000")
    private String merchantNo;

    /**
     * 企业地址
     */
    private String merchantAddress;

    /**
     * 商户类型
     */
    private String merchantType;

    /**
     * 营业执照(企业证明)
     */
    private String businessLicensesImg;

    /**
     * 法人身份证正面照片
     */
    private String idCardFrontImg;

    /**
     * 法人身份证反面照片
     */
    private String idCardAfterImg;

    /**
     * 联系人姓名
     */
    private String username;

    /**
     * 联系人手机号(关联统一账号)
     */
    private String mobile;

    /**
     * 联系人地址
     */
    private String contactsAddress;

    /**
     * 审核状态 0-未申请,1-已申请待审核,2-审核通过,3-审核拒绝
     */
    private String auditStatus;

    /**
     * 租户ID,关联统一用户
     */
    private Long tenantId;

    private String password;
}

@ApiModel和 @ApiModelProperty是Swagger注解后边会学习。

实现类:

package com.huiminpay.merchant.service;

import com.huiminpay.merchant.entity.Merchant;
import com.huiminpay.merchant.mapper.MerchantMapper;
import com.yh.merchant.api.IMerchantService;
import com.yh.merchant.api.dto.MerchantDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author suozhenhua
 * @since 2021-03-15
 */
@Slf4j
@org.apache.dubbo.config.annotation.Service
public class MerchantServiceImpl implements IMerchantService {
    @Autowired
    MerchantMapper merchantMapper;
    @Override
    public MerchantDTO queryMerchantById(Long merchantId) {
        Merchant merchant = merchantMapper.selectById(merchantId);
        MerchantDTO merchantDTO = new MerchantDTO();
        BeanUtils.copyProperties(merchant,merchantDTO);
        return merchantDTO;
    }
}

1.7.4创建接口实现

在huiminpay-merchant-service下新建商户接口实现类:MerchantServiceImpl,并添加新建商户测试方法 本方法从huiminpay_merchant_service数据库的merchant表查询数据。

public MerchantDTO queryMerchantById(Long merchantId) {
    Merchant merchant = merchantMapper.selectById(merchantId);
    MerchantDTO merchantDTO = new MerchantDTO();
    BeanUtils.copyProperties(merchant,merchantDTO);
    return merchantDTO;
}

1.7.5应用层

在huiminpay-merchant-application下添加如下pom依赖:

<dependency>
    <groupId>com.huiminpay</groupId>
    <artifactId>huiminpay-merchant-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

在huiminpay-merchant-application下新建商户Controller:MerchantController,并调用商户中心服务提供的新 建商户接口

package com.huiminpay.merchant.controller;

import com.yh.merchant.api.IMerchantService;
import com.yh.merchant.api.dto.MerchantDTO;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MerchantController {
    @Reference
    IMerchantService merchantService;

    @GetMapping("/merchants/{id}")
    public MerchantDTO queryMerchantById(@PathVariable("id") Long id) {
        MerchantDTO merchantDTO = merchantService.queryMerchantById(id);
        return merchantDTO;
    }
}
  1. 启动商户平台应用和商户服务
  2. 访问 http://localhost:57010/merchant/merchants/具体的id值 测试查询商户

如果merchant表没有数据可手动添加后再行测试。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
DS5Q6Ie4ExGM
作者其他文章 更多

2023-11-02

2023-11-02

2023-11-02