|
@@ -3,34 +3,124 @@ package com.zanxiang.manage.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.zanxiang.common.enums.PayDeviceEnum;
|
|
|
+import com.zanxiang.common.enums.DeleteEnum;
|
|
|
import com.zanxiang.common.enums.PayWayEnum;
|
|
|
+import com.zanxiang.common.enums.StatusEnum;
|
|
|
+import com.zanxiang.common.exception.BaseException;
|
|
|
import com.zanxiang.common.utils.bean.BeanUtils;
|
|
|
+import com.zanxiang.manage.domain.dto.PayWayDTO;
|
|
|
+import com.zanxiang.manage.domain.params.PayMerchantAddUpdateParam;
|
|
|
import com.zanxiang.manage.domain.params.PayMerchantListParam;
|
|
|
+import com.zanxiang.manage.domain.vo.PayDeviceChoiceVO;
|
|
|
import com.zanxiang.manage.domain.vo.PayMerchantChoiceVO;
|
|
|
import com.zanxiang.manage.domain.vo.PayMerchantListVO;
|
|
|
+import com.zanxiang.manage.service.IPayDeviceService;
|
|
|
import com.zanxiang.manage.service.IPayMerchantService;
|
|
|
+import com.zanxiang.manage.service.IPayWayService;
|
|
|
+import com.zanxiang.module.util.JsonUtil;
|
|
|
import com.zanxiang.mybatis.entity.PayMerchant;
|
|
|
import com.zanxiang.mybatis.mapper.PayMerchantMapper;
|
|
|
import org.apache.logging.log4j.util.Strings;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
- * 游戏支付商户配置表 服务实现类
|
|
|
- *
|
|
|
- * @author xufeng
|
|
|
- * @date 2022-06-16 19:04
|
|
|
+ * @author : lingfeng
|
|
|
+ * @time : 2022-11-25
|
|
|
+ * @description : 商户管理
|
|
|
*/
|
|
|
@Service
|
|
|
public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMerchant> implements IPayMerchantService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IPayDeviceService payDeviceService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IPayWayService payWayService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addOrUpdate(PayMerchantAddUpdateParam param) {
|
|
|
+ Map<Long, PayWayDTO> payWayMap = payWayService.payWayMap();
|
|
|
+ String payDeviceIds = null;
|
|
|
+ if (CollectionUtils.isNotEmpty(param.getPayDeviceIdList())) {
|
|
|
+ payDeviceIds = param.getPayDeviceIdList().stream().map(String::valueOf).collect(Collectors.joining(","));
|
|
|
+ }
|
|
|
+ Long payWayId = param.getPayWayId();
|
|
|
+ String payConfig = null;
|
|
|
+ if (Strings.isNotBlank(param.getSecretKey())) {
|
|
|
+ Map<String, String> configMap = new HashMap<>(4);
|
|
|
+ if (Objects.equals(payWayId.intValue(), PayWayEnum.ALI_PAY.getPayWayId())) {
|
|
|
+ configMap.put("protocol", "https");
|
|
|
+ configMap.put("gatewayHost", "openapi.alipay.com");
|
|
|
+ configMap.put("signType", "RSA2");
|
|
|
+ configMap.put("alipayPublicKey", param.getSecretKey());
|
|
|
+ }
|
|
|
+ if (Objects.equals(payWayId.intValue(), PayWayEnum.WX_PAY.getPayWayId())) {
|
|
|
+ configMap.put("mchId", param.getMerchantNo());
|
|
|
+ configMap.put("apiKey", param.getSecretKey());
|
|
|
+ configMap.put("signType", "MD5");
|
|
|
+ }
|
|
|
+ payConfig = JsonUtil.toString(configMap);
|
|
|
+ }
|
|
|
+ Long id = param.getId();
|
|
|
+ PayMerchant payMerchant;
|
|
|
+ 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.saveOrUpdate(payMerchant);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<PayMerchantChoiceVO> payMerchantChoiceList() {
|
|
|
List<PayMerchant> payMerchantList = super.list(new LambdaQueryWrapper<PayMerchant>().
|
|
@@ -44,40 +134,41 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
|
|
|
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>()
|
|
|
.eq(param.getMerchantNo() != null, PayMerchant::getMerchantNo, param.getMerchantNo())
|
|
|
.eq(param.getPayWayId() != null, PayMerchant::getPayWayId, param.getPayWayId())
|
|
|
.eq(param.getStatus() != null, PayMerchant::getStatus, param.getStatus())
|
|
|
.like(Strings.isNotBlank(param.getMerchantName()), PayMerchant::getMerchantName, param.getMerchantName())
|
|
|
.orderByDesc(PayMerchant::getCreateTime))
|
|
|
- .convert(this::toVo);
|
|
|
+ .convert(payMerchant -> this.toVo(payMerchant, payDeviceMap));
|
|
|
}
|
|
|
|
|
|
- private PayMerchantListVO toVo(PayMerchant payMerchant) {
|
|
|
+ private PayMerchantListVO toVo(PayMerchant payMerchant, Map<Long, PayDeviceChoiceVO> payDeviceMap) {
|
|
|
PayMerchantListVO payMerchantListVO = BeanUtils.copy(payMerchant, PayMerchantListVO.class);
|
|
|
if (payMerchantListVO == null) {
|
|
|
return null;
|
|
|
}
|
|
|
- List<String> payDeviceNameList = new ArrayList<>();
|
|
|
- if (Objects.equals(payMerchant.getPayWayId().intValue(), PayWayEnum.ALI_PAY.getPayWayId())) {
|
|
|
- payDeviceNameList.add(PayDeviceEnum.PC_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.H5_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.APP_PAY.getPayDeviceName());
|
|
|
- }
|
|
|
- if (Objects.equals(payMerchant.getPayWayId().intValue(), PayWayEnum.WX_PAY.getPayWayId())) {
|
|
|
- payDeviceNameList.add(PayDeviceEnum.PC_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.H5_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.APPLET_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.MI_PAY.getPayDeviceName());
|
|
|
- payDeviceNameList.add(PayDeviceEnum.CUSTOM_PAY.getPayDeviceName());
|
|
|
+ List<PayDeviceChoiceVO> payDeviceChoiceVOList = 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) {
|
|
|
+ payDeviceChoiceVOList.add(payDeviceChoiceVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- payMerchantListVO.setPayDeviceNameList(payDeviceNameList);
|
|
|
+ payMerchantListVO.setPayDeviceChoiceVOList(payDeviceChoiceVOList);
|
|
|
return payMerchantListVO;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean statusUpdate(Long id, Integer status) {
|
|
|
+ public boolean statusUpdate(Long id, Integer status) {
|
|
|
return super.update(new LambdaUpdateWrapper<PayMerchant>()
|
|
|
.set(PayMerchant::getStatus, status)
|
|
|
.set(PayMerchant::getUpdateTime, LocalDateTime.now())
|