Feat: Api 联通 + 地区整理

This commit is contained in:
Owen 2024-12-26 22:05:28 +08:00
parent 598d68cab3
commit 8ac418984a
3 changed files with 194 additions and 28 deletions

View File

@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.haoka.api.liantong.LianTongApiUtil;
import cn.iocoder.yudao.module.haoka.api.liantong.client.ZopClient;
import cn.iocoder.yudao.module.haoka.api.liantong.model.ZopResponse;
import cn.iocoder.yudao.module.haoka.api.liantong.model.request.KingNumSelectRequest;
import cn.iocoder.yudao.module.haoka.api.liantong.model.response.KingNumSelectResponse;
import cn.iocoder.yudao.module.haoka.api.liantong.model.request.*;
import cn.iocoder.yudao.module.haoka.api.liantong.model.response.*;
import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorapi.SuperiorApiDevConfigDO;
import cn.iocoder.yudao.module.haoka.service.superiorapi.SuperiorApiDevConfigService;
import cn.iocoder.yudao.module.haoka.service.superiorapi.SuperiorApiService;
@ -35,16 +35,142 @@ public class HaokaAllSuperiorApiService {
private ZopClient lianTongZopClient(ApiFrom apiFrom) {
Map<String, String> devConfig = this.getDevConfig(apiFrom);
return this.lianTongZopClient(devConfig);
}
private ZopClient lianTongZopClient(Map<String, String> devConfig) {
String reqUrl = devConfig.get(LianTongApiUtil.KEY_reqUrl);
String appCode = devConfig.get(LianTongApiUtil.KEY_appCode);
String hmac = devConfig.get(LianTongApiUtil.KEY_hmac);
String aes = devConfig.get(LianTongApiUtil.KEY_aes);
return LianTongApiUtil.getClient(appCode, hmac, aes);
return LianTongApiUtil.getClient(reqUrl, appCode, hmac, aes);
}
public KingNumSelectResponse lianTongSelectNumber(KingNumSelectRequest kingNumSelectRequest) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(kingNumSelectRequest);
}
/**
* 联通占号接口占号期间类需要把订单同步给联通调用完成同步订单接口
*
* @param request request
* @return KingNumStateChangeResponse
*/
public KingNumStateChangeResponse lianTongZhanHao(KingNumStateChangeRequest request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
/**
* 联通---收货地址省市区和号码省市信息查询接口
* <p>
* 用于查询收货地址的省市区信息和号码归属省市信息
*
* @param request 请求参数
* @return KingPostInfoResponse
*/
public KingPostInfoResponse lianTongPostInfoQuery(KingPostInfoRequest request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
/**
* 资料提交
*
* @param request request
* @return KingIdentityCustV2Response
*/
public KingIdentityCustV2Response lianTongSubmitUserInfo(KingIdentityCustV2Request request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
/**
* 联通---意向单同步接口
* <p>
* 用于用户填写完身份证信息联系电话收货地址信息后将意向单数据未选号同步给联通商城
*
* @param request 请求参数
* @return KingPreOrderSyncResponse
*/
public KingPreOrderSyncResponse lianTongPreOrderSync(KingPreOrderSyncRequest request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
/**
* 联通---同步订单
* <p>
* goodsId Y String V12 商品编码咨询联通商城管理员此处商品ID以省份编码开头意为商城省份商品ID比如北京的商品ID为11XXXXXXXXXX
* provinceCode Y String F2 号码省份
* cityCode Y String F3 号码地市
* phoneNum Y String V20 号码
* token Y String V500 预约单同步服务返回参数
* createTime Y String V30 订单创建时间格式yyyy-mm-dd hh24miss
* isOpenCF Y String V1 是否开通呼叫转移服务: 0不开通 1开通2C业务必传
* actId N String V8 合约id如果是金融分期必选
* totalPrice N String V15 总价 = 商品价格+号码预存款的价格 (单位 : )
* captchaId N String V 19 短信验证码校验流水短信验证码校验接口返回值 )
*
* @param request request
* @return KingOrderSyncResponse
* rspCode Y String F4 0000-操作成功;0002-当前客户正在下单仅在并发请求情况下出现不是业务逻辑异常;P002-号码查询服务失败;9999-其他错误;8888-订单已存在注针对9999报错建议第三方增加订单同步重试机制设置重试次数上限如5如都返回失败联系商城管理员走运维处理
* rspDesc N String V256 如果同步失败此处说明原因
* uuid Y String V256 流水号
* body N JSONString V500 {\"mallOrderId\":\"369705189376\",\"orderNo\":\"7019042323299970\",\"preNumber\":\"17600271211\",\"shortUrl\":\"https://url.cn/5t6aZM\"}shortUrl非必返回参数证件信息大于十六岁会返回该参数。
*/
public KingOrderSyncResponse lianTongOrderSyncV2(KingOrderSyncV2Request request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
// request.setGoodsId(GOODS_ID);
// request.setProvinceCode(PROVINCE_CODE);
// request.setCityCode(CITY_CODE);
// request.setPhoneNum(number);
// request.setToken(token);
// request.setCreateTime(CREATE_TIME);
return zopClient.execute(request);
}
/**
* @param type 消息类型3-下单消息4-订单状态变更消息
*/
public KingMessageGetResponse lianTongMessageGet(String type) {
Map<String, String> devConfig = this.getDevConfig(ApiFrom.LianTong);
String msgChannel = devConfig.get(LianTongApiUtil.KEY_msgChannel);
KingMessageGetRequest request = new KingMessageGetRequest();
request.setType(type);
request.setMsgChannel(msgChannel);
ZopClient zopClient = this.lianTongZopClient(devConfig);
return zopClient.execute(request);
}
/**
* @param megIds 消息id,支持传多个逗号分隔5418052422792399,3018052422792357,1518061322813443
* @param type 消息类型3-下单消息4-订单状态变更消息
*/
public KingMessageDelResponse lianTongMessageDel(String type, String megIds) {
KingMessageDelRequest request = new KingMessageDelRequest();
request.setType(type);
request.setMsgId(megIds);
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
/**
* 联通---token选号接口
* <p>
* 用于通过 token 进行选号操作
*
* @param request 请求参数
* @return KingNumSelectResponse
*/
public KingNumSelectResponse lianTongTokenSelectNumber(KingNumTokenSelectRequest request) {
ZopClient zopClient = this.lianTongZopClient(ApiFrom.LianTong);
return zopClient.execute(request);
}
}

View File

@ -11,12 +11,16 @@ public class LianTongApiUtil {
public static final String KEY_hmac = "hmac";
public static final String KEY_aes = "aes";
public static ZopClient getClient( String appCode ,String hmac,String aes){
public static final String KEY_reqUrl = "reqUrl";
public static final String KEY_msgChannel = "msgChannel";
public static ZopClient getClient( String reqUrl,String appCode ,String hmac,String aes){
// String appCode = "1A2715D230724895AFB318FE8919244A";
// String hmac = "wi/iBAuOWhfn63nEw8/yi2g1kypvdc1X7qt901z1G+uZN2JzdW0SwsxBwYDGYBDW+etr2i4V/rLpXp5yQb9BBg==";
// String aes = "uH6eH0iGoFsgsfOHOF/kUw==";
return new ZopHttpClient(appCode, hmac, aes);
return new ZopHttpClient(reqUrl,appCode, hmac, aes);
}
public static void main(String[] args) {

View File

@ -1,37 +1,18 @@
package cn.iocoder.yudao.module.haoka.controller.admin.api;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.haoka.api.HaokaAllSuperiorApiService;
import cn.iocoder.yudao.module.haoka.api.liantong.model.ZopResponse;
import cn.iocoder.yudao.module.haoka.api.liantong.model.request.KingNumSelectRequest;
import cn.iocoder.yudao.module.haoka.api.liantong.model.response.KingNumSelectResponse;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.HaokaDemoPageReqVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.HaokaDemoRespVO;
import cn.iocoder.yudao.module.haoka.controller.admin.demo.vo.HaokaDemoSaveReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.demo.HaokaDemoDO;
import cn.iocoder.yudao.module.haoka.service.demo.HaokaDemoService;
import cn.iocoder.yudao.module.haoka.api.liantong.model.request.*;
import cn.iocoder.yudao.module.haoka.api.liantong.model.response.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "上游接口")
@Tag(name = "API----上游接口")
@RestController
@RequestMapping("/haoka/api")
@Validated
@ -47,4 +28,59 @@ public class HaokaApiController {
return success(zopResponse);
}
@PostMapping("/lian-tong/zhan-hao")
@Operation(summary = "联通占号接口")
public CommonResult<KingNumStateChangeResponse> lianTongZhanHao(@RequestBody KingNumStateChangeRequest request) {
KingNumStateChangeResponse response = haokaAllSuperiorApiService.lianTongZhanHao(request);
return success(response);
}
@PostMapping("/lian-tong/submit-user-info")
@Operation(summary = "联通资料提交接口")
public CommonResult<KingIdentityCustV2Response> lianTongSubmitUserInfo(@RequestBody KingIdentityCustV2Request request) {
KingIdentityCustV2Response response = haokaAllSuperiorApiService.lianTongSubmitUserInfo(request);
return success(response);
}
@PostMapping("/lian-tong/order-sync-v2")
@Operation(summary = "联通订单同步接口")
public CommonResult<KingOrderSyncResponse> lianTongOrderSyncV2(@RequestBody KingOrderSyncV2Request request) {
KingOrderSyncResponse response = haokaAllSuperiorApiService.lianTongOrderSyncV2(request);
return success(response);
}
@GetMapping("/lian-tong/message-get")
@Operation(summary = "联通消息获取接口")
public CommonResult<KingMessageGetResponse> lianTongMessageGet(@RequestParam String type) {
KingMessageGetResponse response = haokaAllSuperiorApiService.lianTongMessageGet(type);
return success(response);
}
@PostMapping("/lian-tong/message-del")
@Operation(summary = "联通消息删除接口")
public CommonResult<KingMessageDelResponse> lianTongMessageDel(@RequestParam String type, @RequestParam String megIds) {
KingMessageDelResponse response = haokaAllSuperiorApiService.lianTongMessageDel(type, megIds);
return success(response);
}
@PostMapping("/lian-tong/pre-order-sync")
@Operation(summary = "联通意向单同步接口")
public CommonResult<KingPreOrderSyncResponse> lianTongPreOrderSync(@RequestBody KingPreOrderSyncRequest request) {
KingPreOrderSyncResponse response = haokaAllSuperiorApiService.lianTongPreOrderSync(request);
return success(response);
}
@PostMapping("/lian-tong/post-info-query")
@Operation(summary = "联通收货地址和号码信息查询接口")
public CommonResult<KingPostInfoResponse> lianTongPostInfoQuery(@RequestBody KingPostInfoRequest request) {
KingPostInfoResponse response = haokaAllSuperiorApiService.lianTongPostInfoQuery(request);
return success(response);
}
@PostMapping("/lian-tong/token-select-number")
@Operation(summary = "联通token选号接口")
public CommonResult<KingNumSelectResponse> lianTongTokenSelectNumber(@RequestBody KingNumTokenSelectRequest request) {
KingNumSelectResponse response = haokaAllSuperiorApiService.lianTongTokenSelectNumber(request);
return success(response);
}
}