diff --git a/src/main/java/com/example/demo/controller/coin/MarketController.java b/src/main/java/com/example/demo/controller/coin/MarketController.java index caec947..231a010 100644 --- a/src/main/java/com/example/demo/controller/coin/MarketController.java +++ b/src/main/java/com/example/demo/controller/coin/MarketController.java @@ -2,6 +2,7 @@ package com.example.demo.controller.coin; import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Market; +import com.example.demo.domain.vo.cash.AreaPayTypeTreeVO; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.coin.MarketService; import com.example.demo.Util.LanguageTranslationUtil; @@ -48,6 +49,20 @@ public class MarketController { } } + //获取市场-支付方式树形结构 + @RequestMapping("/getAreaPayTypeTree") + public Result getAreaPayTypeTree(@RequestHeader(defaultValue = "zh_CN") String lang) { + try { + + List marketsTree = marketService.getAreaPayTypeTree(); + + + return Result.success(marketsTree); + } catch (Exception e) { + log.error("获取市场列表失败", e); + return Result.error("获取市场列表失败"); + } + } /** * 递归转换市场名称为指定语言 diff --git a/src/main/java/com/example/demo/domain/DTO/AreaPayTypeDTO.java b/src/main/java/com/example/demo/domain/DTO/AreaPayTypeDTO.java new file mode 100644 index 0000000..c8d4a54 --- /dev/null +++ b/src/main/java/com/example/demo/domain/DTO/AreaPayTypeDTO.java @@ -0,0 +1,18 @@ +package com.example.demo.domain.DTO; + +import lombok.Data; +/** + * @program: gold-java + * @ClassName AreaPayTypeDTO + * @description: + * @author: Ethan + * @create: 2026−04-03 16:06 + * @Version 1.0 + **/ +@Data +public class AreaPayTypeDTO { + private Integer areaId; + private String areaName; + private Integer payTypeId; + private String payTypeName; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/entity/CashRecord.java b/src/main/java/com/example/demo/domain/entity/CashRecord.java index e439093..d8c8e5a 100644 --- a/src/main/java/com/example/demo/domain/entity/CashRecord.java +++ b/src/main/java/com/example/demo/domain/entity/CashRecord.java @@ -83,7 +83,7 @@ public class CashRecord implements Serializable { private LocalDateTime refundTime; // 退款日期(到天) private String refundRemark; // 退款备注(执行人填写) private String refundVoucher; // 退款截图 - private Integer performanceMarket; // 业绩地区 + private String performanceMarket; // 业绩地区 private String performanceMarketName; // 业绩地区名称 // 系统字段 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") diff --git a/src/main/java/com/example/demo/domain/vo/cash/AreaPayTypeTreeVO.java b/src/main/java/com/example/demo/domain/vo/cash/AreaPayTypeTreeVO.java new file mode 100644 index 0000000..ce5f48d --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/cash/AreaPayTypeTreeVO.java @@ -0,0 +1,20 @@ +package com.example.demo.domain.vo.cash; + +import lombok.Data; + +import java.util.List; + +/** + * @program: gold-java + * @ClassName AreaPayTypeTreeVO + * @description: + * @author: Ethan + * @create: 2026−04-03 16:04 + * @Version 1.0 + **/ +@Data +public class AreaPayTypeTreeVO { + private Integer id; // 地区ID + private String name; // 地区名称 + private List children; // 支付方式列表 +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/vo/cash/PayTypeVO.java b/src/main/java/com/example/demo/domain/vo/cash/PayTypeVO.java new file mode 100644 index 0000000..2c3d7bd --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/cash/PayTypeVO.java @@ -0,0 +1,16 @@ +package com.example.demo.domain.vo.cash; + +import lombok.Data; +/** + * @program: gold-java + * @ClassName PayTypeVO + * @description: + * @author: Ethan + * @create: 2026−04-03 16:04 + * @Version 1.0 + **/ +@Data +public class PayTypeVO { + private Integer id; + private String name; +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java index 87eda8d..ca7a2e2 100644 --- a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java @@ -1,6 +1,7 @@ package com.example.demo.mapper.coin; import cn.hutool.core.lang.Opt; +import com.example.demo.domain.DTO.AreaPayTypeDTO; import com.example.demo.domain.entity.Market; import org.apache.ibatis.annotations.Param; @@ -23,4 +24,6 @@ public interface MarketMapper { String getMarketById(String market); //获取市场id List getMarketByIds(@Param("marketIds") Set marketIds); + //获取市场-支付方式树形结构 + List selectAreaPayTypeList(); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/coin/MarketService.java b/src/main/java/com/example/demo/service/coin/MarketService.java index 21d03a0..1be6789 100644 --- a/src/main/java/com/example/demo/service/coin/MarketService.java +++ b/src/main/java/com/example/demo/service/coin/MarketService.java @@ -1,6 +1,7 @@ package com.example.demo.service.coin; import com.example.demo.domain.entity.Market; +import com.example.demo.domain.vo.cash.AreaPayTypeTreeVO; import java.util.List; @@ -19,4 +20,7 @@ public interface MarketService { List getMarketIds(List list); //dao获取市场id String getMarketIdsDao(String country); + //获取市场-支付方式树形结构 + List getAreaPayTypeTree(); + } diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index 9b2fc76..acd9fb3 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -140,9 +140,9 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setOrderType(1); //订单类型:1-收款 cashRecord.setMarket(cashCollection.getMarket()); if(areaInfo.getArea().equals("0")){ - cashRecord.setPerformanceMarket(Integer.valueOf(cashCollection.getMarket())); + cashRecord.setPerformanceMarket(cashCollection.getMarket()); }else { - cashRecord.setPerformanceMarket(Integer.valueOf(areaInfo.getArea())); + cashRecord.setPerformanceMarket(areaInfo.getArea()); } //地区,根据 jwcode 插入 @@ -521,6 +521,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { }else cashRecord.setName("未知"); cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode())); + cashRecord.setPerformanceMarket(cashRecord.getMarket()); if (gOrder.getType().equals("gold")){ //充金豆 cashRecord.setActivity("99"); cashRecord.setGoodsName("Link充值金豆"); @@ -545,6 +546,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setPayType("IOS内购"); cashRecord.setBankCode(gOrder.getIosTransactionId()); cashRecord.setReceivedMarket("4"); + cashRecord.setPerformanceMarket("4"); cashRecord.setPayload("IOS"); break; case 5: diff --git a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java index c62b225..4cb9e1a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java @@ -1,12 +1,17 @@ package com.example.demo.serviceImpl.coin; +import com.example.demo.domain.DTO.AreaPayTypeDTO; import com.example.demo.domain.entity.Market; +import com.example.demo.domain.vo.cash.AreaPayTypeTreeVO; +import com.example.demo.domain.vo.cash.PayTypeVO; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.service.coin.MarketService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -83,4 +88,39 @@ public class MarketServiceImpl implements MarketService { return "24030"; // 异常时返回默认市场 } } + @Override + public List getAreaPayTypeTree() { + // 1. 查询关联数据 + List dtoList = marketMapper.selectAreaPayTypeList(); + + // 2. 按地区分组 + Map> groupByArea = dtoList.stream() + .collect(Collectors.groupingBy(AreaPayTypeDTO::getAreaId)); + + List treeList = new ArrayList<>(); + + // 3. 封装树形 + for (Map.Entry> entry : groupByArea.entrySet()) { + AreaPayTypeDTO first = entry.getValue().get(0); + + AreaPayTypeTreeVO tree = new AreaPayTypeTreeVO(); + tree.setId(first.getAreaId()); + tree.setName(first.getAreaName()); + + // 封装支付方式 + List children = entry.getValue().stream() + .map(dto -> { + PayTypeVO vo = new PayTypeVO(); + vo.setId(dto.getPayTypeId()); + vo.setName(dto.getPayTypeName()); + return vo; + }) + .distinct() // 去重 + .collect(Collectors.toList()); + + tree.setChildren(children); + treeList.add(tree); + } + return treeList; + } } \ No newline at end of file diff --git a/src/main/resources/mapper/MarketMapper.xml b/src/main/resources/mapper/MarketMapper.xml index 27544bc..ce7bbd2 100644 --- a/src/main/resources/mapper/MarketMapper.xml +++ b/src/main/resources/mapper/MarketMapper.xml @@ -55,4 +55,16 @@ + \ No newline at end of file