5

聚合支付项目-28_TheEye的技术博客_51CTO博客

 6 months ago
source link: https://blog.51cto.com/u_16228353/9982206
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

聚合支付项目-28

精选 原创

TheEyess 2024-03-09 10:43:45 博主文章分类:微服务项目-聚合支付 ©著作权

文章标签 List 绑定服务 ci 文章分类 Java 后端开发

5.3 应用绑定服务类型

5.3.1 系统设计

为应用绑定服务类型即指定应用使用哪些服务类型,数据模型设计如下 :

5.3.2 交易服务-获取平台服务类型(接口①)

绑定服务类型页面,页面中列表出服务类型。

5.3.1.1 接口定义

1、接口描述:查询平台支持的所有服务类型

2、接口定义如下:PayChannelService

package com.huiminpay.transaction.api;

/**
 \* 支付渠道服务 管理平台支付渠道,原始支付渠道,以及相关配置
 */
public interface PayChannelService {

  /**
  \* 获取平台服务类型
  \* @return
  */
  List<PlatformChannelDTO> queryPlatformChannel() throws BusinessException;
}
5.3.1.2 接口实现

定义PayChannelServiceImpl类及queryPlatformChannel实现方法:

package com.huiminpay.transaction.service;

import com.huiminpay.transaction.api.PayChannelService;
import com.huiminpay.transaction.api.dto.PlatformChannelDTO;
import com.huiminpay.transaction.convert.PlatformChannelConvert;
import com.huiminpay.transaction.entity.PlatformChannel;
import com.huiminpay.transaction.mapper.PlatformChannelMapper;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@org.apache.dubbo.config.annotation.Service
public class PayChannelServiceImpl implements PayChannelService {

  @Autowired
  private PlatformChannelMapper platformChannelMapper;

  @Override
  public List<PlatformChannelDTO> queryPlatformChannel() {
    List<PlatformChannel> platformChannels = platformChannelMapper.selectList(null);
    List<PlatformChannelDTO> platformChannelDTOS = 
        PlatformChannelConvert.INSTANCE.listentity2listdto(platformChannels);
    return platformChannelDTOS;
  }
}

5.3.3 商户平台应用-获取平台服务类型(接口②)

5.3.3.1 接口定义

在商户平台应用工程添加依赖:

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

1、接口描述:请求交易服务查询平台支持的所有服务类型

2、接口定义如下:PlatformParamController

package com.huiminpay.merchant.controller;

@Api(value = "商户平台-渠道和支付参数相关", tags = "商户平台-渠道和支付参数", description = "商户平台-渠道和支付参数相关")
@Slf4j
@RestController
public class PlatformParamController {

    @Reference  
    private PayChannelService payChannelService;  

    @ApiOperation("获取平台服务类型")  
    @GetMapping(value="/my/platform-channels")  
    public List<PlatformChannelDTO> queryPlatformChannel(){  
        return payChannelService.queryPlatformChannel();    
    }  
}
5.3.3.2 接口测试

5.3.4 交易服务-绑定服务类型接口(接口③)

点击开启服务为应用绑定服务类型

5.3.4.1 接口定义

1、接口描述:

1)查询出指定应用就否已绑定选定的服务类型

2)如果该应用没有绑定该 服务类型则进行绑定

2、接口定义如下:

在PayChannelService接口中定义bindPlatformChannelForApp

/**  
 \* 为app绑定平台服务类型  
 \* @param appId 应用id  
 \* @param platformChannelCodes 平台服务类型列表  
 */  
void bindPlatformChannelForApp(String appId, String platformChannelCodes) throws BusinessException;
5.3.4.2 接口实现

定义PayChannelServiceImpl类及bindPlatformChannelForApp实现方法:

package com.huiminpay.transaction.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huiminpay.transaction.api.PayChannelService;
import com.huiminpay.transaction.entity.AppPlatformChannel;
import com.huiminpay.transaction.mapper.AppPlatformChannelMapper;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;

@Service
public class PayChannelServiceImpl implements PayChannelService {
    @Autowired
     private AppPlatformChannelMapper appPlatformChannelMapper;

    @Override  
    @Transactional
    public void bindPlatformChannelForApp(String appId, String platformChannelCodes) throws 
        BusinessException {
        //根据appId和平台服务类型code查询app_platform_channel
        AppPlatformChannel appPlatformChannel = appPlatformChannelMapper.selectOne(
            new LambdaQueryWrapper<AppPlatformChannel>()
            .eq(AppPlatformChannel::getAppId, appId)
            .eq(AppPlatformChannel::getPlatformChannel, platformChannelCodes));
        //如果没有绑定则绑定
        if(appPlatformChannel ==null){
            appPlatformChannel = new AppPlatformChannel();
            appPlatformChannel.setAppId(appId);
            appPlatformChannel.setPlatformChannel(platformChannelCodes);
            appPlatformChannelMapper.insert(appPlatformChannel);
        }
    }
}

5.3.5 商户平台应用-绑定服务类型接口(接口④)

5.3.5.1 接口定义

1、接口描述:请求交易服务为指定应用添加服务类型

2、接口定义如下:

在AppController类中定义bindPlatformForApp方法:

@DubboReference
private PayChannelService payChannelService;


@ApiOperation("绑定服务类型")
@PostMapping(value="/my/apps/{appId}/platform-channels")
@ApiImplicitParams({@ApiImplicitParam(value = "应用id",name = "appId",dataType = "string",paramType = "path"),
                    @ApiImplicitParam(value = "服务类型code",name = "platformChannelCodes",dataType = "string",paramType = "query")
                   })
public void bindPlatformForApp(@PathVariable("appId") String appId, 
                               @RequestParam("platformChannelCodes") String platformChannelCodes){
    payChannelService.bindPlatformChannelForApp(appId,platformChannelCodes);
}
5.3.5.2 接口测试

5.3.6 交易服务-查询服务类型绑定状态

5.3.6.1 接口定义

1、接口描述

1)查询应用是否已经绑定了某个服务类型

2、接口定义如下

1)PayChannelService

/**
   \* 应用是否已经绑定了某个服务类型
   \* @param appId
   \* @param platformChannel
   \* @return 已绑定返回1,否则 返回0
   */
int queryAppBindPlatformChannel(String appId,String platformChannel) throws BusinessException;
5.5.5.2 接口实现

在PayChannelServiceImpl中实现queryAppBindPlatformChannel方法:

@Override
public int queryAppBindPlatformChannel(String appId, String platformChannel) {
    int count = appPlatformChannelMapper.selectCount(
        new QueryWrapper<AppPlatformChannel>().lambda()
        .eq(AppPlatformChannel::getAppId, appId)
        .eq(AppPlatformChannel::getPlatformChannel, platformChannel));
    //已存在绑定关系返回1
    if (count > 0) {
        return 1;
    } else {
        return 0;
    }
}

5.3.7 商户平台-查询服务类型绑定状态

5.3.7.1 接口实现

查询应用是否已经绑定了某个服务类型

在AppController中定义:

@ApiOperation("查询应用是否绑定了某个服务类型")
@ApiImplicitParams({
    @ApiImplicitParam(name = "appId", value = "应用appId", required = true, dataType = "String", paramType = "query"),
    @ApiImplicitParam(name = "platformChannel", value = "服务类型", required = true, dataType = "String", paramType = "query")
})
@GetMapping("/my/merchants/apps/platformchannels")
public int queryAppBindPlatformChannel(@RequestParam String appId, @RequestParam String platformChannel){
    return payChannelService.queryAppBindPlatformChannel(appId,platformChannel);
}
  • 收藏
  • 评论
  • 分享
  • 举报

上一篇:聚合支付项目-27


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK