Browse Source

04-03 地区-支付方式树形结构

lijianlin/feature-20260401-现金管理四期
lijianlin 6 days ago
parent
commit
a3565c96b0
  1. 15
      src/main/java/com/example/demo/controller/coin/MarketController.java
  2. 18
      src/main/java/com/example/demo/domain/DTO/AreaPayTypeDTO.java
  3. 2
      src/main/java/com/example/demo/domain/entity/CashRecord.java
  4. 20
      src/main/java/com/example/demo/domain/vo/cash/AreaPayTypeTreeVO.java
  5. 16
      src/main/java/com/example/demo/domain/vo/cash/PayTypeVO.java
  6. 3
      src/main/java/com/example/demo/mapper/coin/MarketMapper.java
  7. 4
      src/main/java/com/example/demo/service/coin/MarketService.java
  8. 6
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  9. 40
      src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java
  10. 12
      src/main/resources/mapper/MarketMapper.xml

15
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.config.interfac.Log;
import com.example.demo.domain.entity.Market; 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.domain.vo.coin.Result;
import com.example.demo.service.coin.MarketService; import com.example.demo.service.coin.MarketService;
import com.example.demo.Util.LanguageTranslationUtil; 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<AreaPayTypeTreeVO> marketsTree = marketService.getAreaPayTypeTree();
return Result.success(marketsTree);
} catch (Exception e) {
log.error("获取市场列表失败", e);
return Result.error("获取市场列表失败");
}
}
/** /**
* 递归转换市场名称为指定语言 * 递归转换市场名称为指定语言

18
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: 202604-03 16:06
* @Version 1.0
**/
@Data
public class AreaPayTypeDTO {
private Integer areaId;
private String areaName;
private Integer payTypeId;
private String payTypeName;
}

2
src/main/java/com/example/demo/domain/entity/CashRecord.java

@ -83,7 +83,7 @@ public class CashRecord implements Serializable {
private LocalDateTime refundTime; // 退款日期到天 private LocalDateTime refundTime; // 退款日期到天
private String refundRemark; // 退款备注执行人填写 private String refundRemark; // 退款备注执行人填写
private String refundVoucher; // 退款截图 private String refundVoucher; // 退款截图
private Integer performanceMarket; // 业绩地区
private String performanceMarket; // 业绩地区
private String performanceMarketName; // 业绩地区名称 private String performanceMarketName; // 业绩地区名称
// 系统字段 // 系统字段
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")

20
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: 202604-03 16:04
* @Version 1.0
**/
@Data
public class AreaPayTypeTreeVO {
private Integer id; // 地区ID
private String name; // 地区名称
private List<PayTypeVO> children; // 支付方式列表
}

16
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: 202604-03 16:04
* @Version 1.0
**/
@Data
public class PayTypeVO {
private Integer id;
private String name;
}

3
src/main/java/com/example/demo/mapper/coin/MarketMapper.java

@ -1,6 +1,7 @@
package com.example.demo.mapper.coin; package com.example.demo.mapper.coin;
import cn.hutool.core.lang.Opt; import cn.hutool.core.lang.Opt;
import com.example.demo.domain.DTO.AreaPayTypeDTO;
import com.example.demo.domain.entity.Market; import com.example.demo.domain.entity.Market;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -23,4 +24,6 @@ public interface MarketMapper {
String getMarketById(String market); String getMarketById(String market);
//获取市场id //获取市场id
List<Market> getMarketByIds(@Param("marketIds") Set<Integer> marketIds); List<Market> getMarketByIds(@Param("marketIds") Set<Integer> marketIds);
//获取市场-支付方式树形结构
List<AreaPayTypeDTO> selectAreaPayTypeList();
} }

4
src/main/java/com/example/demo/service/coin/MarketService.java

@ -1,6 +1,7 @@
package com.example.demo.service.coin; package com.example.demo.service.coin;
import com.example.demo.domain.entity.Market; import com.example.demo.domain.entity.Market;
import com.example.demo.domain.vo.cash.AreaPayTypeTreeVO;
import java.util.List; import java.util.List;
@ -19,4 +20,7 @@ public interface MarketService {
List<String> getMarketIds(List<String> list); List<String> getMarketIds(List<String> list);
//dao获取市场id //dao获取市场id
String getMarketIdsDao(String country); String getMarketIdsDao(String country);
//获取市场-支付方式树形结构
List<AreaPayTypeTreeVO> getAreaPayTypeTree();
} }

6
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -140,9 +140,9 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setOrderType(1); //订单类型1-收款 cashRecord.setOrderType(1); //订单类型1-收款
cashRecord.setMarket(cashCollection.getMarket()); cashRecord.setMarket(cashCollection.getMarket());
if(areaInfo.getArea().equals("0")){ if(areaInfo.getArea().equals("0")){
cashRecord.setPerformanceMarket(Integer.valueOf(cashCollection.getMarket()));
cashRecord.setPerformanceMarket(cashCollection.getMarket());
}else { }else {
cashRecord.setPerformanceMarket(Integer.valueOf(areaInfo.getArea()));
cashRecord.setPerformanceMarket(areaInfo.getArea());
} }
//地区根据 jwcode 插入 //地区根据 jwcode 插入
@ -521,6 +521,7 @@ public class CashCollectionServiceImpl implements CashCollectionService {
}else cashRecord.setName("未知"); }else cashRecord.setName("未知");
cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode())); cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(gOrder.getJwcode()));
cashRecord.setPerformanceMarket(cashRecord.getMarket());
if (gOrder.getType().equals("gold")){ //充金豆 if (gOrder.getType().equals("gold")){ //充金豆
cashRecord.setActivity("99"); cashRecord.setActivity("99");
cashRecord.setGoodsName("Link充值金豆"); cashRecord.setGoodsName("Link充值金豆");
@ -545,6 +546,7 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setPayType("IOS内购"); cashRecord.setPayType("IOS内购");
cashRecord.setBankCode(gOrder.getIosTransactionId()); cashRecord.setBankCode(gOrder.getIosTransactionId());
cashRecord.setReceivedMarket("4"); cashRecord.setReceivedMarket("4");
cashRecord.setPerformanceMarket("4");
cashRecord.setPayload("IOS"); cashRecord.setPayload("IOS");
break; break;
case 5: case 5:

40
src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java

@ -1,12 +1,17 @@
package com.example.demo.serviceImpl.coin; 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.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.mapper.coin.MarketMapper;
import com.example.demo.service.coin.MarketService; import com.example.demo.service.coin.MarketService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -83,4 +88,39 @@ public class MarketServiceImpl implements MarketService {
return "24030"; // 异常时返回默认市场 return "24030"; // 异常时返回默认市场
} }
} }
@Override
public List<AreaPayTypeTreeVO> getAreaPayTypeTree() {
// 1. 查询关联数据
List<AreaPayTypeDTO> dtoList = marketMapper.selectAreaPayTypeList();
// 2. 按地区分组
Map<Integer, List<AreaPayTypeDTO>> groupByArea = dtoList.stream()
.collect(Collectors.groupingBy(AreaPayTypeDTO::getAreaId));
List<AreaPayTypeTreeVO> treeList = new ArrayList<>();
// 3. 封装树形
for (Map.Entry<Integer, List<AreaPayTypeDTO>> entry : groupByArea.entrySet()) {
AreaPayTypeDTO first = entry.getValue().get(0);
AreaPayTypeTreeVO tree = new AreaPayTypeTreeVO();
tree.setId(first.getAreaId());
tree.setName(first.getAreaName());
// 封装支付方式
List<PayTypeVO> 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;
}
} }

12
src/main/resources/mapper/MarketMapper.xml

@ -55,4 +55,16 @@
</foreach> </foreach>
</if> </if>
</select> </select>
<select id="selectAreaPayTypeList" resultType="com.example.demo.domain.DTO.AreaPayTypeDTO">
SELECT
m.id AS areaId,
m.name AS areaName,
pt.id AS payTypeId,
pt.name AS payTypeName
FROM payment_type_tree ptt
LEFT JOIN market m ON ptt.area_id = m.id
LEFT JOIN payment_type pt ON ptt.type_id = pt.id
WHERE m.id IS NOT NULL AND pt.id IS NOT NULL
ORDER BY areaId
</select>
</mapper> </mapper>
Loading…
Cancel
Save