ソースを参照

feat:添加合作商和秘钥相关接口

photo
xmzhao71 1年前
コミット
ba7903b5e9
19個のファイルの変更431行の追加14行の削除
  1. +49
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java
  2. +32
    -0
      suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java
  3. +9
    -1
      suimangAdmin/src/main/resources/application-dev.yml
  4. +9
    -1
      suimangAdmin/src/main/resources/application-prod.yml
  5. +1
    -1
      suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java
  6. +18
    -0
      suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java
  7. +29
    -0
      suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java
  8. +14
    -0
      suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java
  9. +14
    -0
      suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java
  10. +1
    -1
      suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java
  11. +31
    -0
      suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java
  12. +16
    -0
      suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java
  13. +7
    -0
      suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java
  14. +26
    -0
      suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java
  15. +48
    -1
      suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java
  16. +18
    -1
      suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java
  17. +36
    -5
      suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java
  18. +41
    -0
      suimangService/src/main/resources/mapper/ServiceInfoMapper.xml
  19. +32
    -3
      suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml

+ 49
- 0
suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java ファイルの表示

@@ -0,0 +1,49 @@
package com.iformall.controller.sm;

import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.neuver.SaveServiceInfoDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO;
import com.iformall.domain.po.sm.ServiceInfo;
import com.iformall.service.sm.ServiceInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/serviceInfo")
@Api(tags = "合作商接口")
public class ServiceInfoController extends BaseController {

@Autowired
private ServiceInfoService serviceInfoService;

@ApiOperation("分页查询合作商")
@GetMapping("/page")
public ResultData pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) {
return new ResultData(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize));
}

@ApiOperation("新增合作商")
@PostMapping("/save")
public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) {
serviceInfoService.saveServiceInfo(dto);
return new ResultData();
}

@ApiOperation("修改合作商")
@PostMapping("/update")
public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) {
serviceInfoService.updateServiceInfo(dto);
return new ResultData();
}

@ApiOperation("修改合作商状态")
@PostMapping("/updateStatus")
public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) {
serviceInfoService.updateServiceInfoStatus(dto);
return new ResultData();
}
}

+ 32
- 0
suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java ファイルの表示

@@ -0,0 +1,32 @@
package com.iformall.controller.sm;

import com.iformall.common.ResultData;
import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO;
import com.iformall.domain.po.WxThirdPartyApi;
import com.iformall.service.WxThirdPartyApiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/thirdPartyApi")
@Api(tags = "秘钥接口")
public class ThirdPartyApiController {

@Autowired
private WxThirdPartyApiService thirdPartyApiService;

@ApiOperation("分页查询秘钥")
@GetMapping("/page")
public ResultData pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) {
return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize));
}

@ApiOperation("修改秘钥状态")
@PostMapping("/updateStatus")
public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) {
thirdPartyApiService.updateThirdPartyApiStatus(dto);
return new ResultData();
}
}

+ 9
- 1
suimangAdmin/src/main/resources/application-dev.yml ファイルの表示

@@ -200,4 +200,12 @@ ueditor:
logging:
level:
com.iformall: debug
path: ./logs/admin
path: ./logs/admin

suimang:
oral_broadcasting: xxx
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx
callbackUrl: xxx

+ 9
- 1
suimangAdmin/src/main/resources/application-prod.yml ファイルの表示

@@ -156,4 +156,12 @@ ueditor:
logging:
level:
com.iformall.mapper: debug
path: ./logs/admin
path: ./logs/admin

suimang:
oral_broadcasting: xxx
photo_speak: xxx
photo_speak_hy: xxx
digital_avatar: xxx
digital_avatar_hy: xxx
callbackUrl: xxx

+ 1
- 1
suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java ファイルの表示

@@ -16,7 +16,7 @@ public class SaveServiceInfoDTO {
private String name;
@ApiModelProperty("所在地址")
private String address;
@ApiModelProperty("客户唯一凭证,api接入需提供")
@ApiModelProperty("客户唯一凭证")
private String code;
@ApiModelProperty("接入方式(1:api接入,2:私有化接入)")
private Integer type;


+ 18
- 0
suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java ファイルの表示

@@ -0,0 +1,18 @@
package com.iformall.domain.dto.neuver;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

@ApiModel(value = "新增开放接口秘钥")
@Data
@Builder
public class SaveThirdPartyApiDTO {
@ApiModelProperty("第三方类型(1:API接入,2:私有化接入)")
private Integer type;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("接入商id")
private Long serviceId;
}

+ 29
- 0
suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java ファイルの表示

@@ -0,0 +1,29 @@
package com.iformall.domain.dto.neuver;

import com.iformall.common.CommonConstants;
import com.iformall.domain.po.sm.ServiceInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@ApiModel(value = "修改接入商")
@Data
public class UpdateServiceInfoDTO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("客户名称")
private String name;
@ApiModelProperty("所在地址")
private String address;

public static ServiceInfo mapping(UpdateServiceInfoDTO dto) {
ServiceInfo serviceInfo = new ServiceInfo();
serviceInfo.setId(dto.getId());
serviceInfo.setUpdateTime(new Date());
serviceInfo.setName(dto.getName());
serviceInfo.setAddress(dto.getAddress());
return serviceInfo;
}
}

+ 14
- 0
suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java ファイルの表示

@@ -0,0 +1,14 @@
package com.iformall.domain.dto.neuver;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value = "更新接入商状态")
@Data
public class UpdateServiceInfoStatusDTO {
@ApiModelProperty("接入商id")
private Long id;
@ApiModelProperty("状态(0:正常,1:失效)")
private Integer status;
}

+ 14
- 0
suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java ファイルの表示

@@ -0,0 +1,14 @@
package com.iformall.domain.dto.neuver;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(value = "更新开放接口秘钥状态")
@Data
public class UpdateThirdPartyApiStatusDTO {
@ApiModelProperty("开放接口秘钥id")
private Long id;
@ApiModelProperty("状态(0:正常,1:失效)")
private Integer status;
}

+ 1
- 1
suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java ファイルの表示

@@ -44,7 +44,7 @@ public class ServiceInfo {
@TableField("address")
private String address;
/**
* 客户唯一凭证,api接入需提供
* 客户唯一凭证
*/
@TableField("code")
private String code;


+ 31
- 0
suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java ファイルの表示

@@ -0,0 +1,31 @@
package com.iformall.enums.sm;

public enum EnumThirdPartyType {
API_JOIN(1, "API接入"),
PRIVATE_JOIN(2, "私有化接入");

public static EnumThirdPartyType getEnum(Integer code) {
for (EnumThirdPartyType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumThirdPartyType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 16
- 0
suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java ファイルの表示

@@ -3,5 +3,21 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.ServiceInfo;

import java.util.List;

/**
* 合作商service
*
* @author xmzhao71
* @date 2023-10-24
*/
public interface ServiceInfoMapper extends CommonMapper<ServiceInfo, Long> {

/**
* 全查询合作商
*
* @param serviceInfo
* @return {@link List}<{@link ServiceInfo}>
*/
List<ServiceInfo> listServiceInfo(ServiceInfo serviceInfo);
}

+ 7
- 0
suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java ファイルの表示

@@ -9,4 +9,11 @@ public interface WxThirdPartyApiMapper extends CommonMapper<WxThirdPartyApi, Lon

List<WxThirdPartyApi> findList(WxThirdPartyApi apiConfig);

/**
* 全查询秘钥
*
* @param thirdPartyApi
* @return {@link List}<{@link WxThirdPartyApi}>
*/
List<WxThirdPartyApi> listThirdPartyApi(WxThirdPartyApi thirdPartyApi);
}

+ 26
- 0
suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java ファイルの表示

@@ -1,5 +1,8 @@
package com.iformall.service;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO;
import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO;
import com.iformall.domain.po.WxThirdPartyApi;

import java.util.List;
@@ -18,4 +21,27 @@ public interface WxThirdPartyApiService {

WxThirdPartyApi findByApp(String appId, String appKey);

/**
* 分页查询秘钥
*
* @param thirdPartyApi
* @param pageNum
* @param pageSize
* @return {@link PageInfo}<{@link WxThirdPartyApi}>
*/
PageInfo<WxThirdPartyApi> pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize);

/**
* 新增秘钥
*
* @param dto
*/
void saveThirdPartyApi(SaveThirdPartyApiDTO dto);

/**
* 修改秘钥状态
*
* @param dto
*/
void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto);
}

+ 48
- 1
suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java ファイルの表示

@@ -1,12 +1,19 @@
package com.iformall.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.domain.po.WxAppinfo;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.CommonConstants;
import com.iformall.common.IdWorker;
import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO;
import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO;
import com.iformall.domain.po.WxThirdPartyApi;
import com.iformall.mapper.WxThirdPartyApiMapper;
import com.iformall.service.WxThirdPartyApiService;
import com.iformall.utils.Constant;
import com.iformall.utils.RedisCacheUtils;
import com.iformall.utils.sign.AppUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,4 +59,44 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService {
RedisCacheUtils.cache(redisTemplate, Constant.publicApi + appId, apiConfig,0l);
return apiConfig;
}

@Override
public PageInfo<WxThirdPartyApi> pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxThirdPartyApiMapper.listThirdPartyApi(thirdPartyApi));
}

@Override
public void saveThirdPartyApi(SaveThirdPartyApiDTO dto) {
WxThirdPartyApi thirdPartyApi = buildThirdPartyApi(dto);
wxThirdPartyApiMapper.insert(thirdPartyApi);
}

@Override
public void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto) {
wxThirdPartyApiMapper.update(null, new LambdaUpdateWrapper<WxThirdPartyApi>()
.set(WxThirdPartyApi::getStatus, dto.getStatus())
.eq(WxThirdPartyApi::getId, dto.getId()));
}

/**
* 构建秘钥实体
*
* @param dto
* @return {@link WxThirdPartyApi}
*/
private WxThirdPartyApi buildThirdPartyApi(SaveThirdPartyApiDTO dto) {
WxThirdPartyApi thirdPartyApi = new WxThirdPartyApi();
thirdPartyApi.setId(IdWorker.get().nextId());
thirdPartyApi.setType(dto.getType());
thirdPartyApi.setName(dto.getName());
thirdPartyApi.setServiceId(dto.getServiceId());
String appId = AppUtils.getAppId();
String appKey = AppUtils.getAppKey(appId);
String signKey = AppUtils.getSignKey(appId, appKey);
thirdPartyApi.setAppId(appId);
thirdPartyApi.setAppKey(appKey);
thirdPartyApi.setSignKey(signKey);
thirdPartyApi.setStatus(CommonConstants.STATUS_NORMAL);
return thirdPartyApi;
}
}

+ 18
- 1
suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java ファイルの表示

@@ -2,6 +2,9 @@ package com.iformall.service.sm;

import com.github.pagehelper.PageInfo;
import com.iformall.domain.dto.neuver.SaveServiceInfoDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO;
import com.iformall.domain.po.sm.ServiceInfo;
import com.iformall.domain.vo.neuver.PageServiceInfoVO;

/**
@@ -26,5 +29,19 @@ public interface ServiceInfoService {
* @param pageSize
* @return {@link PageInfo}<{@link PageServiceInfoVO}>
*/
PageInfo<PageServiceInfoVO> pageServiceInfo(Integer pageNum, Integer pageSize);
PageInfo<ServiceInfo> pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize);

/**
* 修改接入商
*
* @param dto
*/
void updateServiceInfo(UpdateServiceInfoDTO dto);

/**
* 修改接入商状态
*
* @param dto
*/
void updateServiceInfoStatus(UpdateServiceInfoStatusDTO dto);
}

+ 36
- 5
suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java ファイルの表示

@@ -1,18 +1,23 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.CommonConstants;
import com.iformall.common.ErrorCode;
import com.iformall.domain.dto.neuver.SaveServiceInfoDTO;
import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO;
import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO;
import com.iformall.domain.po.sm.ServiceInfo;
import com.iformall.domain.vo.neuver.PageServiceInfoVO;
import com.iformall.exception.BizException;
import com.iformall.mapper.ServiceInfoMapper;
import com.iformall.service.WxThirdPartyApiService;
import com.iformall.service.sm.ServiceInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

@@ -21,20 +26,46 @@ public class ServiceInfoServiceImpl implements ServiceInfoService {

@Autowired
private ServiceInfoMapper serviceInfoMapper;
@Autowired
private WxThirdPartyApiService thirdPartyApiService;

@Transactional(rollbackFor = Exception.class)
@Override
public void saveServiceInfo(SaveServiceInfoDTO dto) {
// 校验
ServiceInfo serviceInfo = serviceInfoMapper.selectOne(new LambdaQueryWrapper<ServiceInfo>()
.eq(ServiceInfo::getDelFlag, CommonConstants.DEL_FLAG_NORMAL)
.eq(ServiceInfo::getCode, dto.getCode()));
Optional.ofNullable(serviceInfo).orElseThrow(() -> new BizException(ErrorCode.CODE_ALREADY_EXISTS));
if (serviceInfo != null) {
throw new BizException(ErrorCode.CODE_ALREADY_EXISTS);
}

ServiceInfo mapping = SaveServiceInfoDTO.mapping(dto);
serviceInfoMapper.insert(mapping);

// 生成秘钥
SaveThirdPartyApiDTO thirdPartyApi = SaveThirdPartyApiDTO.builder()
.type(mapping.getType())
.name(mapping.getName())
.serviceId(mapping.getId())
.build();
thirdPartyApiService.saveThirdPartyApi(thirdPartyApi);
}

serviceInfoMapper.insert(SaveServiceInfoDTO.mapping(dto));
@Override
public PageInfo<ServiceInfo> pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> serviceInfoMapper.listServiceInfo(serviceInfo));
}

@Override
public void updateServiceInfo(UpdateServiceInfoDTO dto) {
serviceInfoMapper.updateById(UpdateServiceInfoDTO.mapping(dto));
}

@Override
public PageInfo<PageServiceInfoVO> pageServiceInfo(Integer pageNum, Integer pageSize) {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> serviceInfoMapper.selectList(null));
public void updateServiceInfoStatus(UpdateServiceInfoStatusDTO dto) {
serviceInfoMapper.update(null, new LambdaUpdateWrapper<ServiceInfo>()
.set(ServiceInfo::getStatus, dto.getStatus())
.eq(ServiceInfo::getId, dto.getId()));
}
}

+ 41
- 0
suimangService/src/main/resources/mapper/ServiceInfoMapper.xml ファイルの表示

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.iformall.mapper.ServiceInfoMapper">


<sql id="allColumns">
`id`, `create_time`, `update_time`, `name`, `address`, `code`, `type`, `status`, `del_flag`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != name and '' != name">
and `name` LIKE CONCAT('%', #{name},'%')
</if>
<if test=" null != code and '' != code">
and `code` = #{code}
</if>
<if test=" null != type ">
and `type` = #{type}
</if>
<if test=" null != status ">
and `status` = #{status}
</if>
<if test=" null != delFlag ">
and `del_flag` = #{delFlag}
</if>
</sql>

<select id="listServiceInfo" resultType="com.iformall.domain.po.sm.ServiceInfo">
SELECT
<include refid="allColumns"/>
FROM service_info
<include refid="dynamicWhereConditions"/>
</select>


</mapper>

+ 32
- 3
suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml ファイルの表示

@@ -21,8 +21,33 @@
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`type`,`name`,`app_id`,`app_key`,`sign_key`,`api_url`, `token`,`token_expired_time`,`user_name`,`password`,`version`,`remark`,`tp_id`
`id`, `tenant_id`, `parent_tenant_id`, `type`, `name`, `service_id`, `app_id`, `app_key`, `sign_key`, `api_url`, `token`, `token_expired_time`, `user_name`, `password`, `version`, `tp_id`, `remark`, `status`
</sql>
<sql id="generalWhereConditions">
WHERE 1 = 1
<if test=" null != id ">
AND `id` = #{id}
</if>
<if test=" null != type ">
AND `type` = #{type}
</if>
<if test=" null != name and '' != name ">
AND `name` = #{name}
</if>
<if test=" null != serviceId ">
AND `service_id` = #{serviceId}
</if>
<if test=" null != appId ">
AND `app_id` = #{appId}
</if>
<if test=" null != appKey ">
AND `app_key` = #{appKey}
</if>
<if test=" null != status ">
AND `status` = #{status}
</if>
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
@@ -62,6 +87,10 @@
<include refid="dynamicWhereConditions"/>
</select>



<select id="listThirdPartyApi" resultType="com.iformall.domain.po.WxThirdPartyApi">
SELECT
<include refid="allColumns"/>
FROM wx_third_party_api
<include refid="generalWhereConditions"></include>
</select>
</mapper>

読み込み中…
キャンセル
保存