|
@@ -5,29 +5,28 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.zanxiang.erp.security.util.SecurityUtil;
|
|
import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
|
|
import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
|
|
|
|
+import com.zanxiang.game.module.base.pojo.enums.PayDeviceEnum;
|
|
import com.zanxiang.game.module.base.pojo.enums.PayWayEnum;
|
|
import com.zanxiang.game.module.base.pojo.enums.PayWayEnum;
|
|
import com.zanxiang.game.module.base.pojo.enums.StatusEnum;
|
|
import com.zanxiang.game.module.base.pojo.enums.StatusEnum;
|
|
|
|
+import com.zanxiang.game.module.base.util.DateUtils;
|
|
import com.zanxiang.game.module.manage.pojo.dto.PayMerchantDTO;
|
|
import com.zanxiang.game.module.manage.pojo.dto.PayMerchantDTO;
|
|
-import com.zanxiang.game.module.manage.pojo.dto.PayWayDTO;
|
|
|
|
import com.zanxiang.game.module.manage.pojo.params.PayMerchantAddUpdateParam;
|
|
import com.zanxiang.game.module.manage.pojo.params.PayMerchantAddUpdateParam;
|
|
import com.zanxiang.game.module.manage.pojo.params.PayMerchantListParam;
|
|
import com.zanxiang.game.module.manage.pojo.params.PayMerchantListParam;
|
|
-import com.zanxiang.game.module.manage.pojo.vo.PayDeviceChoiceVO;
|
|
|
|
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantChoiceVO;
|
|
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantChoiceVO;
|
|
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantListVO;
|
|
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantListVO;
|
|
-import com.zanxiang.game.module.manage.service.IPayDeviceService;
|
|
|
|
import com.zanxiang.game.module.manage.service.IPayMerchantService;
|
|
import com.zanxiang.game.module.manage.service.IPayMerchantService;
|
|
-import com.zanxiang.game.module.manage.service.IPayWayService;
|
|
|
|
import com.zanxiang.game.module.mybatis.entity.PayMerchant;
|
|
import com.zanxiang.game.module.mybatis.entity.PayMerchant;
|
|
import com.zanxiang.game.module.mybatis.mapper.PayMerchantMapper;
|
|
import com.zanxiang.game.module.mybatis.mapper.PayMerchantMapper;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
import com.zanxiang.module.util.bean.BeanUtil;
|
|
import com.zanxiang.module.util.bean.BeanUtil;
|
|
import com.zanxiang.module.util.exception.BaseException;
|
|
import com.zanxiang.module.util.exception.BaseException;
|
|
import org.apache.logging.log4j.util.Strings;
|
|
import org.apache.logging.log4j.util.Strings;
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
@@ -41,31 +40,23 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMerchant> implements IPayMerchantService {
|
|
public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMerchant> implements IPayMerchantService {
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private IPayDeviceService payDeviceService;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private IPayWayService payWayService;
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public boolean addOrUpdate(PayMerchantAddUpdateParam param) {
|
|
public boolean addOrUpdate(PayMerchantAddUpdateParam param) {
|
|
- Map<Long, PayWayDTO> payWayMap = payWayService.payWayMap();
|
|
|
|
String payDeviceIds = null;
|
|
String payDeviceIds = null;
|
|
if (CollectionUtils.isNotEmpty(param.getPayDeviceIdList())) {
|
|
if (CollectionUtils.isNotEmpty(param.getPayDeviceIdList())) {
|
|
payDeviceIds = param.getPayDeviceIdList().stream()
|
|
payDeviceIds = param.getPayDeviceIdList().stream()
|
|
.map(String::valueOf).collect(Collectors.joining(","));
|
|
.map(String::valueOf).collect(Collectors.joining(","));
|
|
}
|
|
}
|
|
- Long payWayId = param.getPayWayId();
|
|
|
|
String payConfig = null;
|
|
String payConfig = null;
|
|
if (Strings.isNotBlank(param.getSecretKey())) {
|
|
if (Strings.isNotBlank(param.getSecretKey())) {
|
|
Map<String, String> configMap = new HashMap<>(4);
|
|
Map<String, String> configMap = new HashMap<>(4);
|
|
- if (Objects.equals(payWayId.intValue(), PayWayEnum.ALI_PAY.getPayWayId())) {
|
|
|
|
|
|
+ if (Objects.equals(param.getPayWayId().intValue(), PayWayEnum.ALI_PAY.getPayWayId())) {
|
|
configMap.put("protocol", "https");
|
|
configMap.put("protocol", "https");
|
|
configMap.put("gatewayHost", "openapi.alipay.com");
|
|
configMap.put("gatewayHost", "openapi.alipay.com");
|
|
configMap.put("signType", "RSA2");
|
|
configMap.put("signType", "RSA2");
|
|
configMap.put("alipayPublicKey", param.getSecretKey());
|
|
configMap.put("alipayPublicKey", param.getSecretKey());
|
|
}
|
|
}
|
|
- if (Objects.equals(payWayId.intValue(), PayWayEnum.WX_PAY.getPayWayId())) {
|
|
|
|
|
|
+ if (Objects.equals(param.getPayWayId().intValue(), PayWayEnum.WX_PAY.getPayWayId())) {
|
|
configMap.put("mchId", param.getMerchantNo());
|
|
configMap.put("mchId", param.getMerchantNo());
|
|
configMap.put("apiKey", param.getSecretKey());
|
|
configMap.put("apiKey", param.getSecretKey());
|
|
configMap.put("signType", "MD5");
|
|
configMap.put("signType", "MD5");
|
|
@@ -73,55 +64,58 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
|
|
payConfig = JsonUtil.toString(configMap);
|
|
payConfig = JsonUtil.toString(configMap);
|
|
}
|
|
}
|
|
Long id = param.getId();
|
|
Long id = param.getId();
|
|
- PayMerchant payMerchant;
|
|
|
|
if (id == null) {
|
|
if (id == null) {
|
|
- payMerchant = PayMerchant.builder()
|
|
|
|
- .merchantNo(param.getMerchantNo())
|
|
|
|
- .merchantName(param.getMerchantName())
|
|
|
|
- .payWayId(param.getPayWayId())
|
|
|
|
- .payWayName(payWayMap.get(payWayId) == null ? null : payWayMap.get(payWayId).getPayWayName())
|
|
|
|
- .account(param.getAccount())
|
|
|
|
- .password(param.getPassword())
|
|
|
|
- .manager(param.getManager())
|
|
|
|
- .mobile(param.getMobile())
|
|
|
|
- .email(param.getEmail())
|
|
|
|
- .payConfig(payConfig)
|
|
|
|
- .maxPayLock(StatusEnum.YES.getCode())
|
|
|
|
- .remark(param.getRemark())
|
|
|
|
- .status(StatusEnum.YES.getCode())
|
|
|
|
- .isDelete(DeleteEnum.NO.getCode())
|
|
|
|
- .createTime(LocalDateTime.now())
|
|
|
|
- .updateTime(LocalDateTime.now())
|
|
|
|
- .payDeviceIds(payDeviceIds)
|
|
|
|
- .build();
|
|
|
|
- } else {
|
|
|
|
- payMerchant = super.getById(id);
|
|
|
|
- if (payMerchant == null) {
|
|
|
|
- throw new BaseException("参数错误, 商户信息不存在");
|
|
|
|
- }
|
|
|
|
- //商户号更新, 判断是否已经存在商户号
|
|
|
|
- if (!Objects.equals(payMerchant.getMerchantNo(), param.getMerchantNo())) {
|
|
|
|
- int count = super.count(new LambdaQueryWrapper<PayMerchant>()
|
|
|
|
- .eq(PayMerchant::getMerchantNo, param.getMerchantNo()));
|
|
|
|
- if (count > 0) {
|
|
|
|
- throw new BaseException("参数错误, 商户号已经存在, 不可更新为该商户号");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- payMerchant.setMerchantNo(param.getMerchantNo());
|
|
|
|
- payMerchant.setMerchantName(param.getMerchantName());
|
|
|
|
- payMerchant.setPayWayId(param.getPayWayId());
|
|
|
|
- payMerchant.setPayWayName(payWayMap.get(payWayId) == null ? null : payWayMap.get(payWayId).getPayWayName());
|
|
|
|
- payMerchant.setAccount(param.getAccount());
|
|
|
|
- payMerchant.setPassword(param.getPassword());
|
|
|
|
- payMerchant.setManager(param.getManager());
|
|
|
|
- payMerchant.setMobile(param.getMobile());
|
|
|
|
- payMerchant.setEmail(param.getEmail());
|
|
|
|
- payMerchant.setPayConfig(payConfig);
|
|
|
|
- payMerchant.setRemark(param.getRemark());
|
|
|
|
- payMerchant.setUpdateTime(LocalDateTime.now());
|
|
|
|
- payMerchant.setPayDeviceIds(payDeviceIds);
|
|
|
|
|
|
+ return super.save(this.transform(param, payConfig, payDeviceIds));
|
|
|
|
+ }
|
|
|
|
+ PayMerchant payMerchant = super.getById(id);
|
|
|
|
+ if (payMerchant == null) {
|
|
|
|
+ throw new BaseException("参数错误, 商户信息不存在");
|
|
|
|
+ }
|
|
|
|
+ //商户号更新, 判断是否已经存在商户号
|
|
|
|
+ if (!Objects.equals(payMerchant.getMerchantNo(), param.getMerchantNo())
|
|
|
|
+ && super.count(new LambdaQueryWrapper<PayMerchant>()
|
|
|
|
+ .eq(PayMerchant::getMerchantNo, param.getMerchantNo())) > 0) {
|
|
|
|
+ throw new BaseException("参数错误, 商户号已经存在, 不可更新为该商户号");
|
|
}
|
|
}
|
|
- return super.saveOrUpdate(payMerchant);
|
|
|
|
|
|
+ payMerchant.setMerchantNo(param.getMerchantNo());
|
|
|
|
+ payMerchant.setMerchantName(param.getMerchantName());
|
|
|
|
+ payMerchant.setMerchantCompany(param.getMerchantCompany());
|
|
|
|
+ payMerchant.setPayWayId(param.getPayWayId());
|
|
|
|
+ payMerchant.setAccount(param.getAccount());
|
|
|
|
+ payMerchant.setPassword(param.getPassword());
|
|
|
|
+ payMerchant.setManager(param.getManager());
|
|
|
|
+ payMerchant.setMobile(param.getMobile());
|
|
|
|
+ payMerchant.setEmail(param.getEmail());
|
|
|
|
+ payMerchant.setPayConfig(payConfig);
|
|
|
|
+ payMerchant.setRemark(param.getRemark());
|
|
|
|
+ payMerchant.setPayDeviceIds(payDeviceIds);
|
|
|
|
+ payMerchant.setUpdateById(SecurityUtil.getUserId());
|
|
|
|
+ payMerchant.setUpdateTime(LocalDateTime.now());
|
|
|
|
+ return super.updateById(payMerchant);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private PayMerchant transform(PayMerchantAddUpdateParam param, String payConfig, String payDeviceIds) {
|
|
|
|
+ return PayMerchant.builder()
|
|
|
|
+ .merchantNo(param.getMerchantNo())
|
|
|
|
+ .merchantName(param.getMerchantName())
|
|
|
|
+ .merchantCompany(param.getMerchantCompany())
|
|
|
|
+ .payWayId(param.getPayWayId())
|
|
|
|
+ .account(param.getAccount())
|
|
|
|
+ .password(param.getPassword())
|
|
|
|
+ .manager(param.getManager())
|
|
|
|
+ .mobile(param.getMobile())
|
|
|
|
+ .email(param.getEmail())
|
|
|
|
+ .payConfig(payConfig)
|
|
|
|
+ .maxPayLock(StatusEnum.YES.getCode())
|
|
|
|
+ .remark(param.getRemark())
|
|
|
|
+ .status(StatusEnum.YES.getCode())
|
|
|
|
+ .isDelete(DeleteEnum.NO.getCode())
|
|
|
|
+ .createById(SecurityUtil.getUserId())
|
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
|
+ .updateById(SecurityUtil.getUserId())
|
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
|
+ .payDeviceIds(payDeviceIds)
|
|
|
|
+ .build();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -135,12 +129,6 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public IPage<PayMerchantListVO> pageList(PayMerchantListParam param) {
|
|
public IPage<PayMerchantListVO> pageList(PayMerchantListParam param) {
|
|
- //米大师商户与微信商户同类型
|
|
|
|
- if (Objects.equals(param.getPayWayId(), PayWayEnum.MI_PAY.getPayWayId())) {
|
|
|
|
- param.setPayWayId(PayWayEnum.WX_PAY.getPayWayId());
|
|
|
|
- }
|
|
|
|
- //支付方式
|
|
|
|
- Map<Long, PayDeviceChoiceVO> payDeviceMap = payDeviceService.payDeviceChoiceMap();
|
|
|
|
//查询
|
|
//查询
|
|
return page(param.toPage(), new LambdaQueryWrapper<PayMerchant>()
|
|
return page(param.toPage(), new LambdaQueryWrapper<PayMerchant>()
|
|
.eq(param.getMerchantNo() != null, PayMerchant::getMerchantNo, param.getMerchantNo())
|
|
.eq(param.getMerchantNo() != null, PayMerchant::getMerchantNo, param.getMerchantNo())
|
|
@@ -148,29 +136,29 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
|
|
.eq(param.getStatus() != null, PayMerchant::getStatus, param.getStatus())
|
|
.eq(param.getStatus() != null, PayMerchant::getStatus, param.getStatus())
|
|
.like(Strings.isNotBlank(param.getMerchantName()), PayMerchant::getMerchantName, param.getMerchantName())
|
|
.like(Strings.isNotBlank(param.getMerchantName()), PayMerchant::getMerchantName, param.getMerchantName())
|
|
.orderByDesc(PayMerchant::getCreateTime))
|
|
.orderByDesc(PayMerchant::getCreateTime))
|
|
- .convert(payMerchant -> this.toVo(payMerchant, payDeviceMap));
|
|
|
|
|
|
+ .convert(this::toVo);
|
|
}
|
|
}
|
|
|
|
|
|
- private PayMerchantListVO toVo(PayMerchant payMerchant, Map<Long, PayDeviceChoiceVO> payDeviceMap) {
|
|
|
|
|
|
+ private PayMerchantListVO toVo(PayMerchant payMerchant) {
|
|
PayMerchantListVO payMerchantListVO = BeanUtil.copy(payMerchant, PayMerchantListVO.class);
|
|
PayMerchantListVO payMerchantListVO = BeanUtil.copy(payMerchant, PayMerchantListVO.class);
|
|
if (payMerchantListVO == null) {
|
|
if (payMerchantListVO == null) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- List<Long> payDeviceIdList = new ArrayList<>();
|
|
|
|
- List<String> payDeviceNameList = new ArrayList<>();
|
|
|
|
- String payDeviceIds = payMerchant.getPayDeviceIds();
|
|
|
|
- if (Strings.isNotBlank(payDeviceIds)) {
|
|
|
|
- String[] deviceIdArray = payDeviceIds.split(",");
|
|
|
|
- for (String deviceId : deviceIdArray) {
|
|
|
|
- PayDeviceChoiceVO payDeviceChoiceVO = payDeviceMap.get(Long.valueOf(deviceId));
|
|
|
|
- if (payDeviceChoiceVO != null) {
|
|
|
|
- payDeviceIdList.add(payDeviceChoiceVO.getId());
|
|
|
|
- payDeviceNameList.add(payDeviceChoiceVO.getPayDeviceName());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //判断月更新日期是否为本月
|
|
|
|
+ if (!DateUtils.isThisMonth(payMerchant.getMouthUpdateDate())) {
|
|
|
|
+ //月已用额度归零
|
|
|
|
+ payMerchantListVO.setMouthPayAmount(BigDecimal.ZERO);
|
|
|
|
+ }
|
|
|
|
+ //判断日更新日期是否为今天
|
|
|
|
+ if (!DateUtils.isToday(payMerchant.getDayUpdateDate())) {
|
|
|
|
+ //日已用额度归零
|
|
|
|
+ payMerchantListVO.setDayPayAmount(BigDecimal.ZERO);
|
|
|
|
+ }
|
|
|
|
+ //判断周更新日期是否为本周
|
|
|
|
+ if (!DateUtils.isThisWeek(payMerchant.getMouthUpdateDate())) {
|
|
|
|
+ //周已用额度归零
|
|
|
|
+ payMerchantListVO.setWeakerPayAmount(BigDecimal.ZERO);
|
|
}
|
|
}
|
|
- payMerchantListVO.setPayDeviceIdList(payDeviceIdList);
|
|
|
|
- payMerchantListVO.setPayDeviceNameList(payDeviceNameList);
|
|
|
|
//密钥
|
|
//密钥
|
|
if (Strings.isNotBlank(payMerchant.getPayConfig())) {
|
|
if (Strings.isNotBlank(payMerchant.getPayConfig())) {
|
|
Map<String, String> payConfigMap = JsonUtil.toMap(payMerchant.getPayConfig(), Map.class, String.class);
|
|
Map<String, String> payConfigMap = JsonUtil.toMap(payMerchant.getPayConfig(), Map.class, String.class);
|
|
@@ -181,6 +169,23 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
|
|
payMerchantListVO.setSecretKey(payConfigMap.get("apiKey"));
|
|
payMerchantListVO.setSecretKey(payConfigMap.get("apiKey"));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //支付渠道
|
|
|
|
+ payMerchantListVO.setPayWayName(PayWayEnum.getByPayWayId(payMerchantListVO.getPayWayId()));
|
|
|
|
+ //支付方式
|
|
|
|
+ String payDeviceIds = payMerchant.getPayDeviceIds();
|
|
|
|
+ if (Strings.isBlank(payDeviceIds)) {
|
|
|
|
+ return payMerchantListVO;
|
|
|
|
+ }
|
|
|
|
+ payMerchantListVO.setPayDeviceIdList(new ArrayList<>());
|
|
|
|
+ payMerchantListVO.setPayDeviceNameList(new ArrayList<>());
|
|
|
|
+ String[] deviceIdArray = payDeviceIds.split(",");
|
|
|
|
+ for (String deviceId : deviceIdArray) {
|
|
|
|
+ PayDeviceEnum payDeviceEnum = PayDeviceEnum.getPayDeviceEnum(Long.valueOf(deviceId));
|
|
|
|
+ if (payDeviceEnum != null) {
|
|
|
|
+ payMerchantListVO.getPayDeviceIdList().add(payDeviceEnum.getPayDeviceId());
|
|
|
|
+ payMerchantListVO.getPayDeviceNameList().add(payDeviceEnum.getPayDeviceName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return payMerchantListVO;
|
|
return payMerchantListVO;
|
|
}
|
|
}
|
|
|
|
|