This commit is contained in:
Owen 2025-01-05 19:15:19 +08:00
parent 8221ea32a5
commit 7beaad5d14
22 changed files with 132 additions and 75 deletions

View File

@ -69,7 +69,7 @@ public class ProductLimitController {
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('haoka:product-limit:query')") @PreAuthorize("@ss.hasPermission('haoka:product-limit:query')")
public CommonResult<ProductLimitRespVO> getProductLimit(@RequestParam("id") Long id) { public CommonResult<ProductLimitRespVO> getProductLimit(@RequestParam("id") Long id) {
ProductLimitDO productLimit = productLimitService.getProductLimit(id); ProductLimitRespVO productLimit = productLimitService.getProductLimit(id);
return success(BeanUtils.toBean(productLimit, ProductLimitRespVO.class)); return success(BeanUtils.toBean(productLimit, ProductLimitRespVO.class));
} }
@ -114,4 +114,4 @@ public class ProductLimitController {
return success(productLimitService.getProductLimitCardListByHaokaProductLimitId(haokaProductLimitId)); return success(productLimitService.getProductLimitCardListByHaokaProductLimitId(haokaProductLimitId));
} }
} }

View File

@ -19,7 +19,7 @@ public class ProductLimitAreaPageReqVO extends PageParam {
private Long haokaProductLimitId; private Long haokaProductLimitId;
@Schema(description = "地区") @Schema(description = "地区")
private Integer addressCode; private String addressCode;
@Schema(description = "地区", example = "张三") @Schema(description = "地区", example = "张三")
private String addressName; private String addressName;
@ -31,4 +31,4 @@ public class ProductLimitAreaPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
} }

View File

@ -24,7 +24,7 @@ public class ProductLimitAreaRespVO {
@Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("地区") @ExcelProperty("地区")
private Integer addressCode; private String addressCode;
@Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("地区") @ExcelProperty("地区")
@ -39,4 +39,4 @@ public class ProductLimitAreaRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} }

View File

@ -18,7 +18,7 @@ public class ProductLimitAreaSaveReqVO {
@Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "地区不能为空") @NotNull(message = "地区不能为空")
private Integer addressCode; private String addressCode;
@Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @Schema(description = "地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "地区不能为空") @NotEmpty(message = "地区不能为空")
@ -27,4 +27,4 @@ public class ProductLimitAreaSaveReqVO {
@Schema(description = "是否允许") @Schema(description = "是否允许")
private Boolean allowed; private Boolean allowed;
} }

View File

@ -57,4 +57,6 @@ public class ProductLimitRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
} private List<ProductLimitAreaRespVO> productLimitAreaVos;
private List<ProductLimitCardRespVO> productLimitCardRespVO;
}

View File

@ -34,7 +34,7 @@ public class ProductLimitAreaDO extends BaseDO {
/** /**
* 地区 * 地区
*/ */
private Integer addressCode; private String addressCode;
/** /**
* 地区 * 地区
*/ */

View File

@ -70,4 +70,5 @@ public class ProductLimitDO extends BaseDO {
*/ */
private Long deptId; private Long deptId;
} }

View File

@ -9,8 +9,11 @@ import cn.iocoder.yudao.module.haoka.api.ApiFrom;
import cn.iocoder.yudao.module.haoka.controller.admin.orders.vo.OrdersPageReqVO; import cn.iocoder.yudao.module.haoka.controller.admin.orders.vo.OrdersPageReqVO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.orders.OrdersDO; import cn.iocoder.yudao.module.haoka.dal.dataobject.orders.OrdersDO;
import cn.iocoder.yudao.module.haoka.service.api.ApiDealStrategyService; import cn.iocoder.yudao.module.haoka.service.api.ApiDealStrategyService;
import cn.iocoder.yudao.module.haoka.service.api.models.ApiDealResp;
import cn.iocoder.yudao.module.haoka.service.api.models.OrderApiQueryResp;
import cn.iocoder.yudao.module.haoka.service.orders.OrdersService; import cn.iocoder.yudao.module.haoka.service.orders.OrdersService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -48,6 +51,10 @@ public class HaokaUpdateOrderSchedule {
pageNo += 1; pageNo += 1;
pageReqVO.setPageNo(pageNo); pageReqVO.setPageNo(pageNo);
pageReqVO.setPageSize(pageSize); pageReqVO.setPageSize(pageSize);
// 需要更新的订单过滤 todo
// pageReqVO.setStatus(Lists.asList(1));
PageResult<OrdersDO> ordersPage = ordersService.getOrdersPage(pageReqVO); PageResult<OrdersDO> ordersPage = ordersService.getOrdersPage(pageReqVO);
total = ordersPage.getTotal(); total = ordersPage.getTotal();
for (OrdersDO ordersDO : ordersPage.getList()) { for (OrdersDO ordersDO : ordersPage.getList()) {
@ -61,7 +68,8 @@ public class HaokaUpdateOrderSchedule {
private void updateOrderInfo(final OrdersDO ordersDO) { private void updateOrderInfo(final OrdersDO ordersDO) {
log.info("更新前--{}", JSON.toJSONString(ordersDO)); log.info("更新前--{}", JSON.toJSONString(ordersDO));
apiDealStrategyService.updateOrderInfo(ordersDO); ApiDealResp<OrderApiQueryResp> updateOrderInfo = apiDealStrategyService.getUpdateOrderInfo(ordersDO);
// todo 上游更新
ordersService.updateById(ordersDO); ordersService.updateById(ordersDO);
log.info("更新后--{}", JSON.toJSONString(ordersDO)); log.info("更新后--{}", JSON.toJSONString(ordersDO));
} }

View File

@ -122,56 +122,61 @@ public class ApiDealServiceImpl implements ApiDealStrategyService {
} }
} }
//
@Override @Override
public void updateOrderInfo(final OrdersDO ordersDO) { public ApiDealResp<OrderApiQueryResp> getUpdateOrderInfo(final OrdersDO ordersDO) {
OrderApiQueryParam param = new OrderApiQueryParam(); OrderApiQueryParam param = new OrderApiQueryParam();
// 幂等 orderId,上游状态上游备注
//
param.setId(ordersDO.getId()); param.setId(ordersDO.getId());
param.setSupplierOrderId(ordersDO.getId().toString()); param.setSupplierOrderId(ordersDO.getId().toString());
param.setProductId(ordersDO.getProductId()); param.setProductId(ordersDO.getProductId());
param.setPlanMobileProduced(ordersDO.getPlanMobileProduced()); param.setPlanMobileProduced(ordersDO.getPlanMobileProduced());
ApiDealResp<OrderApiQueryResp> resp = this.queryOrder(new SuperiorApiLogSaveReqVO(),param); return this.queryOrder(new SuperiorApiLogSaveReqVO(),param);
// 上游接口不支持根据订单ID查询 // // 上游接口不支持根据订单ID查询
if (!resp.getIsSupport()) { // if (!resp.getIsSupport()) {
return; // return;
} // }
//
// 查询接口是否调用成功 // // 查询接口是否调用成功
if (!resp.getSuccess()) { // if (!resp.getSuccess()) {
return; // return;
} // }
//
// 是否被上游拉黑 // // 是否被上游拉黑
if (resp.getIsBlack()) { // if (resp.getIsBlack()) {
//
} // }
//
OrderApiQueryResp data = resp.getData(); // OrderApiQueryResp data = resp.getData();
if (data == null) { // if (data == null) {
return; // return;
} // }
//
// 上游对订单状态的描述 // // 上游对订单状态的描述
String orderStatusDesc = data.getSupplierOrderStatusDesc(); // String orderStatusDesc = data.getSupplierOrderStatusDesc();
if (StringUtils.isNotEmpty(orderStatusDesc)) { // if (StringUtils.isNotEmpty(orderStatusDesc)) {
ordersDO.setUpStatus(orderStatusDesc); // ordersDO.setUpStatus(orderStatusDesc);
} // }
// 对应好卡的订单状态Todo // // 对应好卡的订单状态Todo
String orderStatusCode = data.getOrderStatusCode(); // String orderStatusCode = data.getOrderStatusCode();
if (StringUtils.isNotEmpty(orderStatusCode)) { // if (StringUtils.isNotEmpty(orderStatusCode)) {
// 对应好卡的订单状态Todo // // 对应好卡的订单状态Todo
} // }
// 物流信息 头都 // // 物流信息 头都
String trackingNumber = data.getTrackingNumber(); // String trackingNumber = data.getTrackingNumber();
if (StringUtils.isNotEmpty(trackingNumber)) { // if (StringUtils.isNotEmpty(trackingNumber)) {
ordersDO.setTrackingNumber(trackingNumber); // ordersDO.setTrackingNumber(trackingNumber);
} // }
String trackingCompany = data.getTrackingCompany(); // String trackingCompany = data.getTrackingCompany();
if (StringUtils.isNotEmpty(trackingCompany)) { // if (StringUtils.isNotEmpty(trackingCompany)) {
ordersDO.setTrackingCompany(trackingCompany); // ordersDO.setTrackingCompany(trackingCompany);
} // }
} }
@Override @Override

View File

@ -26,7 +26,7 @@ public interface ApiDealStrategy {
ApiDealResp<OrderApiQueryResp> queryOrder(final SuperiorApiLogSaveReqVO logVO, ApiDealResp<OrderApiQueryResp> queryOrder(final SuperiorApiLogSaveReqVO logVO,
OrderApiQueryParam param) throws Exception; OrderApiQueryParam param) throws Exception;
default void updateOrderInfo(final OrdersDO ordersDO) { default ApiDealResp<OrderApiQueryResp> getUpdateOrderInfo(final OrdersDO ordersDO) {
return ApiDealResp.failed("未处理");
} }
} }

View File

@ -10,7 +10,7 @@ public class ApiDealResp<T> {
private T data; private T data;
private Boolean isBlack =false; private Boolean isBlack =false;
private ApiDealResp(Boolean success, String msg, Boolean isSupport, T data) { public ApiDealResp(Boolean success, String msg, Boolean isSupport, T data) {
this.success = success; this.success = success;
this.msg = msg; this.msg = msg;
this.isSupport = isSupport; this.isSupport = isSupport;

View File

@ -18,9 +18,7 @@ import java.time.LocalDateTime;
@AllArgsConstructor @AllArgsConstructor
public class OrderApiCreateParam { public class OrderApiCreateParam {
private String jsonParam; private String orderCreateParam;
private String outerOrderId;
/** /**
* 订单ID AAA * 订单ID AAA
@ -29,7 +27,7 @@ public class OrderApiCreateParam {
private Long id; private Long id;
/** /**
* 产品ID AAA * 产品ID SKU AAA
*/ */
private Long productId; private Long productId;
@ -39,6 +37,9 @@ public class OrderApiCreateParam {
*/ */
private String planMobile; private String planMobile;
/**
* 收获地址
*/
private String addressMobile; private String addressMobile;
/** /**

View File

@ -24,7 +24,7 @@ public class OrderApiCreateResp extends BaseDO {
/** /**
* 接口数据对象 * 接口数据对象
*/ */
private Object data; private String orderCreateResponse;
/** /**
* 上游订单ID * 上游订单ID

View File

@ -90,7 +90,7 @@ public class GuangZhouDxApiDealStrategy implements ApiDealStrategy {
OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp(); OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp();
orderApiCreateResp.setSupplierOrderId(supplierOrderId); orderApiCreateResp.setSupplierOrderId(supplierOrderId);
orderApiCreateResp.setData(supplierOrderId); orderApiCreateResp.setOrderCreateResponse(supplierOrderId);
return ApiDealResp.ok(orderApiCreateResp); return ApiDealResp.ok(orderApiCreateResp);
} }

View File

@ -107,7 +107,7 @@ public class HaiNanDxApiDealStrategy implements ApiDealStrategy {
} }
OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp(); OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp();
orderApiCreateResp.setData(responseInfo); orderApiCreateResp.setOrderCreateResponse(JSON.toJSONString(responseInfo));
return ApiDealResp.ok(orderApiCreateResp); return ApiDealResp.ok(orderApiCreateResp);
} catch (UnirestException e) { } catch (UnirestException e) {
return ApiDealResp.failed(e.getMessage()); return ApiDealResp.failed(e.getMessage());

View File

@ -90,8 +90,8 @@ public class HuNanDxApiDealStrategy implements ApiDealStrategy {
orderParam.setServiceOrderReceiverDistrictCode(addressDistrict.getName()); orderParam.setServiceOrderReceiverDistrictCode(addressDistrict.getName());
orderParam.setServiceOrderReceiverAddress(param.getAddress()); orderParam.setServiceOrderReceiverAddress(param.getAddress());
if (StringUtils.isNotEmpty(param.getJsonParam())) { if (StringUtils.isNotEmpty(param.getOrderCreateParam())) {
JSONObject objectParam = JSON.parseObject(param.getJsonParam()); JSONObject objectParam = JSON.parseObject(param.getOrderCreateParam());
possessParam.setNumberId(objectParam.getString("numberId")); possessParam.setNumberId(objectParam.getString("numberId"));
possessParam.setPoolId(objectParam.getString("poolId")); possessParam.setPoolId(objectParam.getString("poolId"));
} }
@ -191,7 +191,7 @@ public class HuNanDxApiDealStrategy implements ApiDealStrategy {
OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp(); OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp();
orderApiCreateResp.setData(responseInfo); orderApiCreateResp.setOrderCreateResponse(JSON.toJSONString(responseInfo));
orderApiCreateResp.setSupplierOrderId(param.getId().toString()); orderApiCreateResp.setSupplierOrderId(param.getId().toString());
return ApiDealResp.ok(orderApiCreateResp); return ApiDealResp.ok(orderApiCreateResp);

View File

@ -190,7 +190,7 @@ public class LianTongApiDealStrategy implements ApiDealStrategy {
} }
OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp(); OrderApiCreateResp orderApiCreateResp = new OrderApiCreateResp();
orderApiCreateResp.setData(response); orderApiCreateResp.setOrderCreateResponse(JSON.toJSONString(response));
return ApiDealResp.ok(orderApiCreateResp); return ApiDealResp.ok(orderApiCreateResp);
} }

View File

@ -38,8 +38,11 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper,OrdersDO> implem
@Qualifier(ApiFrom.ApiDealStrategyImpl) @Qualifier(ApiFrom.ApiDealStrategyImpl)
private ApiDealStrategyService apiDealStrategyService; private ApiDealStrategyService apiDealStrategyService;
// 19547688 -> 电信 19547688 湖南电信号码+号码ID
@Override @Override
public Long createOrders(OrdersSaveReqVO createReqVO) { public Long createOrders(OrdersSaveReqVO createReqVO) {
// orderCreateParam='{号码ID:1666666}'
// createReqVO.getOrderCreateParam();
// 插入 // 插入
OrdersDO orders = BeanUtils.toBean(createReqVO, OrdersDO.class); OrdersDO orders = BeanUtils.toBean(createReqVO, OrdersDO.class);
orders.setId(SnowflakeId.generate()); orders.setId(SnowflakeId.generate());
@ -82,7 +85,22 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper,OrdersDO> implem
ApiDealResp<OrderApiCreateResp> order = apiDealStrategyService.createOrder(null); ApiDealResp<OrderApiCreateResp> order = apiDealStrategyService.createOrder(null);
OrderApiCreateParam param = new OrderApiCreateParam(); OrderApiCreateParam param = new OrderApiCreateParam();
BeanUtils.copyProperties(ordersDO,param); BeanUtils.copyProperties(ordersDO,param);
apiDealStrategyService.createOrder(param); ApiDealResp<OrderApiCreateResp> orderResponse = apiDealStrategyService.createOrder(param);
// 是否是是上游黑名单 如果是 存本地黑名单
Boolean isBlack = orderResponse.getIsBlack();
// 上游是否支持这个接口
// Boolean isSupport = orderResponse.getIsSupport(); 都支持创建订单的 查询不一定
// 成功
Boolean success = orderResponse.getSuccess();
// 响应信息
String msg = orderResponse.getMsg();
// 订单创结果
OrderApiCreateResp orderData = orderResponse.getData();
// 上游订单ID
orderData.getSupplierOrderId();
// ordersDO 记录 create param 响应信息
} }
} }

View File

@ -44,7 +44,7 @@ public interface ProductLimitService {
* @param id 编号 * @param id 编号
* @return 产品限制条件 * @return 产品限制条件
*/ */
ProductLimitDO getProductLimit(Long id); ProductLimitRespVO getProductLimit(Long id);
/** /**
* 获得产品限制条件分页 * 获得产品限制条件分页
@ -74,4 +74,4 @@ public interface ProductLimitService {
*/ */
List<ProductLimitCardDO> getProductLimitCardListByHaokaProductLimitId(Long haokaProductLimitId); List<ProductLimitCardDO> getProductLimitCardListByHaokaProductLimitId(Long haokaProductLimitId);
} }

View File

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.haoka.service.product; package cn.iocoder.yudao.module.haoka.service.product;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*; import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*;
import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitDO; import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitDO;
import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitAreaDO; import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitAreaDO;
@ -85,8 +87,26 @@ public class ProductLimitServiceImpl implements ProductLimitService {
} }
@Override @Override
public ProductLimitDO getProductLimit(Long id) { public ProductLimitRespVO getProductLimit(Long id) {
return productLimitMapper.selectById(id); ProductLimitDO productLimitDO = productLimitMapper.selectById(id);
if (productLimitDO == null) {
return null;
}
ProductLimitRespVO bean = BeanUtils.toBean(productLimitDO, ProductLimitRespVO.class);
List<ProductLimitAreaDO> productLimitAreaDOS = productLimitAreaMapper.selectList(new LambdaQueryWrapperX<ProductLimitAreaDO>()
.eqIfPresent(ProductLimitAreaDO::getHaokaProductLimitId, id)
);
bean.setProductLimitAreaVos(BeanUtils.toBean(productLimitAreaDOS,ProductLimitAreaRespVO.class));
List<ProductLimitCardDO> productLimitCard = productLimitCardMapper.selectList(new LambdaQueryWrapperX<ProductLimitCardDO>()
.eqIfPresent(ProductLimitCardDO::getHaokaProductLimitId, id)
);
bean.setProductLimitCardRespVO(BeanUtils.toBean(productLimitCard,ProductLimitCardRespVO.class));
return bean;
} }
@Override @Override
@ -108,7 +128,7 @@ public class ProductLimitServiceImpl implements ProductLimitService {
private void updateProductLimitAreaList(Long haokaProductLimitId, List<ProductLimitAreaDO> list) { private void updateProductLimitAreaList(Long haokaProductLimitId, List<ProductLimitAreaDO> list) {
deleteProductLimitAreaByHaokaProductLimitId(haokaProductLimitId); deleteProductLimitAreaByHaokaProductLimitId(haokaProductLimitId);
list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新 list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新
createProductLimitAreaList(haokaProductLimitId, list); createProductLimitAreaList(haokaProductLimitId, list);
} }
@ -130,7 +150,7 @@ public class ProductLimitServiceImpl implements ProductLimitService {
private void updateProductLimitCardList(Long haokaProductLimitId, List<ProductLimitCardDO> list) { private void updateProductLimitCardList(Long haokaProductLimitId, List<ProductLimitCardDO> list) {
deleteProductLimitCardByHaokaProductLimitId(haokaProductLimitId); deleteProductLimitCardByHaokaProductLimitId(haokaProductLimitId);
list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新 list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新
createProductLimitCardList(haokaProductLimitId, list); createProductLimitCardList(haokaProductLimitId, list);
} }
@ -138,4 +158,4 @@ public class ProductLimitServiceImpl implements ProductLimitService {
productLimitCardMapper.deleteByHaokaProductLimitId(haokaProductLimitId); productLimitCardMapper.deleteByHaokaProductLimitId(haokaProductLimitId);
} }
} }

View File

@ -1,2 +1,2 @@
ALTER TABLE `haoka_dev`.`haoka_product` ALTER TABLE `haoka_product`
MODIFY COLUMN `belong_area_code` varchar(64) NOT NULL COMMENT '归属地' AFTER `haoka_product_type_id`; MODIFY COLUMN `belong_area_code` varchar(64) NOT NULL COMMENT '归属地' AFTER `haoka_product_type_id`;

View File

@ -0,0 +1,2 @@
ALTER TABLE `haoka_product_limit_area`
MODIFY COLUMN `address_code` varchar(128) NOT NULL COMMENT '地区' AFTER `haoka_product_limit_id`;