diff --git a/accompany-base/accompany-common/src/main/java/com/accompany/common/constant/Constant.java b/accompany-base/accompany-common/src/main/java/com/accompany/common/constant/Constant.java index 951c38967..17c019756 100644 --- a/accompany-base/accompany-common/src/main/java/com/accompany/common/constant/Constant.java +++ b/accompany-base/accompany-common/src/main/java/com/accompany/common/constant/Constant.java @@ -1756,6 +1756,11 @@ public class Constant { */ public static final String H5_AREA_CHARGE_CONFIG = "h5_area_charge_config"; + /** + * 支付方式 + */ + public static final String CHARGE_WAY_CONFIG = "charge_way_config"; + } public static class ActiveMq { diff --git a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProd.java b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProd.java index d1d1975cb..441127409 100644 --- a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProd.java +++ b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProd.java @@ -13,6 +13,10 @@ public class ChargeProd { private String localCurrencyCode; + private String payChannel; + + private String paymentType; + private Long money; private Integer changeGoldRate; @@ -75,6 +79,22 @@ public class ChargeProd { this.localCurrencyCode = localCurrencyCode; } + public String getPayChannel() { + return payChannel; + } + + public void setPayChannel(String payChannel) { + this.payChannel = payChannel; + } + + public String getPaymentType() { + return paymentType; + } + + public void setPaymentType(String paymentType) { + this.paymentType = paymentType; + } + public Long getMoney() { return money; } diff --git a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProdExample.java b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProdExample.java index 6fa8db757..100740942 100644 --- a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProdExample.java +++ b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/model/ChargeProdExample.java @@ -454,6 +454,26 @@ public class ChargeProdExample { return (Criteria) this; } + public Criteria andCountryEqualTo(String value) { + addCriterion("country = ", value, "country"); + return (Criteria) this; + } + + public Criteria andPayChannelEqualTo(String value) { + addCriterion("pay_channel = ", value, "pay_channel"); + return (Criteria) this; + } + + public Criteria andPaymentTypeEqualTo(String value) { + addCriterion("payment_type = ", value, "payment_type"); + return (Criteria) this; + } + + public Criteria andPaymentTypeEqualIsNull() { + addCriterion("payment_type is null"); + return (Criteria) this; + } + public Criteria andChangeGoldRateIsNull() { addCriterion("change_gold_rate is null"); return (Criteria) this; diff --git a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/service/ChargeProdService.java b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/service/ChargeProdService.java index c3c73fbd3..b8bc2ba22 100644 --- a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/service/ChargeProdService.java +++ b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/service/ChargeProdService.java @@ -3,10 +3,13 @@ package com.accompany.payment.service; import com.accompany.common.constant.Constant; import com.accompany.common.redis.RedisKey; import com.accompany.core.service.common.JedisService; +import com.accompany.core.vo.BaseRequestVO; import com.accompany.payment.mapper.ChargeProdMapper; import com.accompany.payment.model.ChargeProd; import com.accompany.payment.model.ChargeProdExample; import com.accompany.payment.vo.ChargeProdVo; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import lombok.extern.slf4j.Slf4j; @@ -16,10 +19,9 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.lang.reflect.Type; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j @@ -31,22 +33,6 @@ public class ChargeProdService { private JedisService jedisService; private Gson gson = new Gson(); - public List getAllChargeProdList() { - String chargeProdStr = jedisService.read(RedisKey.charge_prod.getKey()); - List chargeProdList = null; - if (StringUtils.isEmpty(chargeProdStr)) { - ChargeProdExample chargeProdExample = new ChargeProdExample(); - chargeProdExample.setOrderByClause(" seq_no asc"); - chargeProdList = chargeProdMapper.selectByExample(chargeProdExample); - batchSaveChargeProdCache(chargeProdList); - } else { - Type typeJson = new TypeToken>() { - }.getType(); - chargeProdList = gson.fromJson(chargeProdStr, typeJson); - } - return chargeProdList; - } - public List query(int type, String appVersion, String os,String channel) { Map chargeProdKeyMap = jedisService.hgetAllBykey(RedisKey.charge_prod.getKey()); List chargeProdList = com.beust.jcommander.internal.Lists.newArrayList(); @@ -139,9 +125,57 @@ public class ChargeProdService { chargeProdVo.setSeqNo(chargeProd.getSeqNo()); chargeProdVo.setProdDesc(chargeProd.getProdDesc()); chargeProdVo.setRate(chargeProd.getChangeGoldRate()); + chargeProdVo.setChargeGoldNum(chargeProd.getChargeGoldNum()); chargeProdVoList.add(chargeProdVo); } Collections.sort(chargeProdVoList); return chargeProdVoList; } + + public List getAllChargeProdVoList(String countryCode, String payChannel, String paymentType) { + BaseRequestVO baseRequestVO = new BaseRequestVO(); + + ChargeProdExample chargeProdExample = new ChargeProdExample(); + chargeProdExample.createCriteria().andCountryEqualTo(countryCode) + .andPayChannelEqualTo(payChannel) + .andProdStatusIn(this.getAvailableChargeProdStatus()); + if (StringUtils.isBlank(paymentType)) { + chargeProdExample.createCriteria().andPaymentTypeEqualIsNull(); + } else { + chargeProdExample.createCriteria().andPaymentTypeEqualTo(paymentType); + } + + List chargeProds = chargeProdMapper.selectByExample(chargeProdExample); + List chargeProdList = Lists.newArrayList(); + for (ChargeProd chargeProd : chargeProds) { + + if (Constant.ChargeProdStatus.using.equals(chargeProd.getProdStatus())) { + chargeProdList.add(chargeProd); + continue; + } + + if (Constant.ChargeProdStatus.audit.equals(chargeProd.getProdStatus())) { + if (Constant.OsType.IOS.equalsIgnoreCase(baseRequestVO.getOs())) { + chargeProdList.add(chargeProd); + } + } + } + + return chargeProdList.stream() + .map(chargeProd -> { + ChargeProdVo chargeProdVo = new ChargeProdVo(); + chargeProdVo.setChannel(chargeProd.getChannel()); + chargeProdVo.setChargeProdId(chargeProd.getChargeProdId()); + chargeProdVo.setProdName(chargeProd.getProdName()); + chargeProdVo.setGiftGoldNum(chargeProd.getGiftGoldNum()); + chargeProdVo.setMoney(chargeProd.getMoney()); + chargeProdVo.setSeqNo(chargeProd.getSeqNo()); + chargeProdVo.setProdDesc(chargeProd.getProdDesc()); + chargeProdVo.setChargeGoldNum(chargeProd.getChargeGoldNum()); + return chargeProdVo; + }) + .sorted() + .collect(Collectors.toList()); + } + } diff --git a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/vo/ChargeProdVo.java b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/vo/ChargeProdVo.java index d23014303..cfe40633d 100644 --- a/accompany-base/accompany-payment/src/main/java/com/accompany/payment/vo/ChargeProdVo.java +++ b/accompany-base/accompany-payment/src/main/java/com/accompany/payment/vo/ChargeProdVo.java @@ -11,7 +11,9 @@ public class ChargeProdVo implements Comparable { private Integer giftGoldNum; private Byte channel; private Byte seqNo; + private Long chargeGoldNum; private Integer rate; + private String currencySign; public Integer getRate() { return rate; @@ -77,6 +79,22 @@ public class ChargeProdVo implements Comparable { this.channel = channel; } + public Long getChargeGoldNum() { + return chargeGoldNum; + } + + public void setChargeGoldNum(Long chargeGoldNum) { + this.chargeGoldNum = chargeGoldNum; + } + + public String getCurrencySign() { + return currencySign; + } + + public void setCurrencySign(String currencySign) { + this.currencySign = currencySign; + } + @Override public int compareTo(ChargeProdVo chargeProdVo) { Byte seqNoVo = chargeProdVo.seqNo; diff --git a/accompany-base/accompany-payment/src/main/resources/mapper/ChargeProdMapper.xml b/accompany-base/accompany-payment/src/main/resources/mapper/ChargeProdMapper.xml index 86015eb1f..e417ef8f4 100644 --- a/accompany-base/accompany-payment/src/main/resources/mapper/ChargeProdMapper.xml +++ b/accompany-base/accompany-payment/src/main/resources/mapper/ChargeProdMapper.xml @@ -8,6 +8,8 @@ + + @@ -77,7 +79,7 @@ - charge_prod_id, prod_name, prod_desc, prod_status, country, local_currency_code, money, change_gold_rate, gift_gold_num, + charge_prod_id, prod_name, prod_desc, prod_status, country, local_currency_code, pay_channel, payment_type, money, change_gold_rate, gift_gold_num, first_gift_gold_num, channel, seq_no, charge_gold_num