Преглед на файлове

后台游戏支付配置信息获取

xufeng преди 2 години
родител
ревизия
43459449ba

+ 7 - 6
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/GamePayWayController.java

@@ -5,6 +5,7 @@ import com.zanxiang.common.domain.ResultVo;
 import com.zanxiang.manage.domain.params.GameAnalogPayParam;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
 import com.zanxiang.manage.domain.params.GamePayWayParam;
+import com.zanxiang.manage.domain.vo.AllGamePayWayByGameIdVO;
 import com.zanxiang.manage.domain.vo.GameAnalogPayVO;
 import com.zanxiang.manage.domain.vo.GamePayWayListVO;
 import com.zanxiang.manage.service.GamePayWayService;
@@ -43,12 +44,12 @@ public class GamePayWayController {
         return ResultVo.ok(gamePayWayService.list(param));
     }
 
-//    @ApiOperation(value = "游戏详情支付配置展示")
-//    @GetMapping(value = "/info")
-//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Void.class)})
-//    public ResultVo<Void> getInfo(@RequestParam Long id) {
-//        return new ResultVo<>();
-//    }
+    @ApiOperation(value = "游戏详情支付配置展示")
+    @GetMapping(value = "/allGamePayWayByGameId")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = AllGamePayWayByGameIdVO.class)})
+    public ResultVo<AllGamePayWayByGameIdVO> getInfo(@RequestParam Long gameId) {
+        return new ResultVo<>(gamePayWayService.getAllGamePayWayByGameId(gameId));
+    }
 
     @ApiOperation(value = "获取游戏虚拟支付配置")
     @GetMapping(value = "/analog/pay/info")

+ 23 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/AllGamePayWayByGameIdVO.java

@@ -0,0 +1,23 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author xufeng
+ * @date 2022/7/13 17:52
+ */
+@Data
+public class AllGamePayWayByGameIdVO {
+    @ApiModelProperty(notes = "微信支付配置")
+    private GameWxpayPayVO wxpayPayVO;
+
+    @ApiModelProperty(notes = "虚拟支付配置")
+    private GameAnalogPayVO.PayConfigBean analogPayVO;
+
+    @ApiModelProperty(notes = "支付宝支付配置")
+    private GameAlipayPayVO alipayPayVO;
+
+    @ApiModelProperty(notes = "支付策略配置——订单起量切换规则")
+    private GameStrategyInfoVO gameStrategyVO;
+}

+ 32 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameAlipayPayVO.java

@@ -0,0 +1,32 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author : xufeng
+ * @time : 2022-07-13
+ * @description : 游戏支付宝支付展示
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameAlipayPayVO {
+
+    @ApiModelProperty(notes = "商户号")
+    private String merchantNo;
+
+    @ApiModelProperty(notes = "商户主体")
+    private String merchantName;
+
+    @ApiModelProperty(notes = "登录账号")
+    private String loginName;
+
+    @ApiModelProperty(notes = "管理员")
+    private String managePerson;
+
+}

+ 63 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameStrategyInfoVO.java

@@ -0,0 +1,63 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 注释游戏策略
+ *
+ * @author xufeng
+ * @date 2022-07-01 11:38
+ */
+@Data
+public class GameStrategyInfoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(notes = "ID")
+    private Long id;
+
+    @ApiModelProperty(notes = "策略名称")
+    private String name;
+
+    @ApiModelProperty(notes = "策略类型 1:订单起量切换规则")
+    private Integer type;
+
+    @ApiModelProperty(notes = "关联游戏id")
+    private Long gameId;
+
+    @ApiModelProperty(notes = "关联游戏名称")
+    private String gameName;
+
+    @ApiModelProperty(notes = "关联游戏类型")
+    private String gameType;
+
+    @ApiModelProperty(notes = "支付方式")
+    private String gamePayWay;
+
+    @ApiModelProperty(notes = "支付盒子")
+    private String gamePayBox;
+
+    @ApiModelProperty(notes = "支付商户号")
+    private String payMerchant;
+
+    @ApiModelProperty(notes = "关联应用名称")
+    private String applicationName;
+
+    @ApiModelProperty(notes = "关联商户号_商户主体")
+    private String applicationMerchant;
+
+    @ApiModelProperty(notes = "删除状态 0正常 1删除")
+    private Integer isDelete;
+
+    @ApiModelProperty(notes = "状态 0正常 1不可用")
+    private Integer status;
+
+    @ApiModelProperty(notes = "配置")
+    private GameStrategyOrderVO config;
+
+    @ApiModelProperty(notes = "渠道")
+    private Long channel;
+}

+ 17 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameStrategyOrderVO.java

@@ -0,0 +1,17 @@
+package com.zanxiang.manage.domain.vo;
+
+import com.zanxiang.common.domain.gameStrategy.Order;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 注释游戏策略
+ *
+ * @author xufeng
+ * @date 2022-07-01 11:38
+ */
+@Data
+public class GameStrategyOrderVO extends Order implements Serializable {
+
+}

+ 40 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameWxpayPayVO.java

@@ -0,0 +1,40 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author : xufeng
+ * @time : 2022-07-13
+ * @description : 游戏支付宝支付展示
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class GameWxpayPayVO {
+
+    @ApiModelProperty(notes = "支付盒子")
+    private String boxName;
+
+    @ApiModelProperty(notes = "关联应用名称")
+    private String applicationName;
+
+    @ApiModelProperty(notes = "关联应用APPID")
+    private String appId;
+
+    @ApiModelProperty(notes = "关联应用原始ID")
+    private String primevalId;
+
+    @ApiModelProperty(notes = "商户主体")
+    private String company;
+
+    @ApiModelProperty(notes = "管理员")
+    private String managePerson;
+
+    @ApiModelProperty(notes = "商户号id_商户名称(多个,分割)")
+    private String payMerchantDetail;
+}

+ 17 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/GamePayWayService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.manage.domain.params.GameAnalogPayParam;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
 import com.zanxiang.manage.domain.params.GamePayWayParam;
+import com.zanxiang.manage.domain.vo.AllGamePayWayByGameIdVO;
 import com.zanxiang.manage.domain.vo.GameAnalogPayVO;
 import com.zanxiang.manage.domain.vo.GamePayWayListVO;
 import com.zanxiang.manage.domain.vo.GamePayWayVO;
@@ -28,6 +29,14 @@ public interface GamePayWayService extends IService<GamePayWay> {
      */
     List<GamePayWayVO> getByGameId(Long gameId);
 
+    /**
+     * 根据游戏id查询(状态yes)
+     *
+     * @param gameId
+     * @return
+     */
+    List<GamePayWayVO> getByGameIdForStatusYes(Long gameId);
+
     /**
      * 游戏配置更新/保存/删除
      *
@@ -59,4 +68,12 @@ public interface GamePayWayService extends IService<GamePayWay> {
      * @return : 返回新增或者更新的结果
      */
     Boolean gameAnalogPayAddOrUpdate(GameAnalogPayParam payParam);
+
+    /**
+     * 获取游戏所有支付方式
+     *
+     * @param gameId 游戏id
+     * @return
+     */
+    AllGamePayWayByGameIdVO getAllGamePayWayByGameId(Long gameId);
 }

+ 115 - 5
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GamePayWayServiceImpl.java

@@ -4,27 +4,32 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.util.JSONPObject;
 import com.zanxiang.common.enums.DeleteEnum;
 import com.zanxiang.common.enums.PayWayEnum;
+import com.zanxiang.common.enums.StatusEnum;
 import com.zanxiang.common.exception.ParamNullException;
 import com.zanxiang.common.utils.JsonUtil;
+import com.zanxiang.common.utils.StringUtils;
 import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.manage.domain.mapper.GamePayWayListMapper;
 import com.zanxiang.manage.domain.params.GameAnalogPayParam;
 import com.zanxiang.manage.domain.params.GamePayWayListParam;
 import com.zanxiang.manage.domain.params.GamePayWayParam;
-import com.zanxiang.manage.domain.vo.GameAnalogPayVO;
-import com.zanxiang.manage.domain.vo.GamePayWayListVO;
-import com.zanxiang.manage.domain.vo.GamePayWayVO;
-import com.zanxiang.manage.service.GamePayWayService;
-import com.zanxiang.mybatis.entity.GamePayWay;
+import com.zanxiang.manage.domain.vo.*;
+import com.zanxiang.manage.service.*;
+import com.zanxiang.mybatis.entity.*;
 import com.zanxiang.mybatis.mapper.GamePayWayMapper;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 游戏支付配置表 服务实现类
@@ -38,6 +43,18 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
     @Autowired
     private GamePayWayListMapper gamePayWayListMapper;
 
+    @Autowired
+    private PayMerchantService payMerchantService;
+
+    @Autowired
+    private PayBoxService payBoxService;
+
+    @Autowired
+    private PayApplicationService payApplicationService;
+
+    @Autowired
+    private GameStrategyService gameStrategyService;
+
     @Override
     public List<GamePayWayVO> getByGameId(Long gameId) {
         List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
@@ -46,6 +63,16 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
         return BeanUtils.copyList(gamePayWayList, GamePayWayVO.class);
     }
 
+
+    @Override
+    public List<GamePayWayVO> getByGameIdForStatusYes(Long gameId) {
+        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
+                .eq(GamePayWay::getGameId, gameId)
+                .eq(GamePayWay::getStatus, StatusEnum.YES.getCode())
+                .select(GamePayWay::getId, GamePayWay::getPayWayName));
+        return BeanUtils.copyList(gamePayWayList, GamePayWayVO.class);
+    }
+
     @Override
     public Boolean saveOrUpdate(GamePayWayParam bo) {
         if (bo.getIsDelete() != null && bo.getIsDelete() == DeleteEnum.YES.getCode()) {
@@ -113,4 +140,87 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
         }
         return super.saveOrUpdate(gamePayWay);
     }
+
+    @Override
+    public AllGamePayWayByGameIdVO getAllGamePayWayByGameId(Long gameId) {
+        List<GamePayWay> gamePayWayList = super.list(new LambdaQueryWrapper<GamePayWay>()
+                .eq(GamePayWay::getGameId, gameId)
+                .eq(GamePayWay::getStatus, StatusEnum.YES.getCode())
+        );
+        if (CollectionUtils.isEmpty(gamePayWayList)) {
+            return null;
+        }
+        AllGamePayWayByGameIdVO data = new AllGamePayWayByGameIdVO();
+        gamePayWayList.stream().forEach(t -> {
+            //支付宝
+            if (PayWayEnum.ALIPAY.getNum().equals(t.getPayWayId())) {
+                if (Objects.isNull(t.getPayMerchantId()) || t.getPayMerchantId() == 0) {
+                    //商户号为空则跳过
+                    return;
+                }
+                PayMerchant payMerchantInfo = payMerchantService.getById(t.getPayMerchantId());
+                if (Objects.isNull(payMerchantInfo)) {
+                    //商户号内容为空
+                    return;
+                }
+                GameAlipayPayVO alipayPayVO = new GameAlipayPayVO();
+                alipayPayVO.setMerchantNo(payMerchantInfo.getMerchantNo());
+                alipayPayVO.setMerchantName(payMerchantInfo.getMerchantName());
+                alipayPayVO.setLoginName(payMerchantInfo.getLoginName());
+                alipayPayVO.setManagePerson(payMerchantInfo.getManagePerson());
+                data.setAlipayPayVO(alipayPayVO);
+            }
+            //微信
+            if (PayWayEnum.WXPAY.getNum().equals(t.getPayWayId())) {
+
+                if (Objects.isNull(t.getPayBoxId()) || t.getPayBoxId() == 0) {
+                    //商户号为空则跳过
+                    return;
+                }
+                PayBox payBoxInfo = payBoxService.getById(t.getPayBoxId());
+                if (Objects.isNull(payBoxInfo) || Objects.isNull(payBoxInfo.getPayApplicationId()) ||
+                        payBoxInfo.getPayApplicationId() <= 0) {
+                    return;
+                }
+                PayApplication payApplicationInfo = payApplicationService.getById(payBoxInfo.getPayApplicationId());
+                if (Objects.isNull(payApplicationInfo)) {
+                    return;
+                }
+                GameWxpayPayVO gameWxpayPayVO = new GameWxpayPayVO();
+                gameWxpayPayVO.setBoxName(payBoxInfo.getName());
+                gameWxpayPayVO.setApplicationName(payApplicationInfo.getName());
+                gameWxpayPayVO.setAppId(payApplicationInfo.getAppId());
+                gameWxpayPayVO.setPrimevalId(payApplicationInfo.getPrimevalId());
+                gameWxpayPayVO.setCompany(payApplicationInfo.getCompany());
+                gameWxpayPayVO.setManagePerson(payApplicationInfo.getManagePerson());
+
+                //获取商户号列表
+                List<PayMerchant> payMerchantList = payMerchantService.list();
+                Map<String, PayMerchant> payMerchantData = payMerchantList.stream().collect(Collectors.toMap(PayMerchant::getMerchantNo, PayMerchant -> PayMerchant));
+                if (StringUtils.isNotEmpty(payBoxInfo.getPayMerchantId())) {
+                    String merchantDetail = payBoxService.getMerchantDetail(payMerchantData, payBoxInfo.getPayMerchantId());
+                    gameWxpayPayVO.setPayMerchantDetail(merchantDetail);
+                }
+                data.setWxpayPayVO(gameWxpayPayVO);
+            }
+            //米大师虚拟支付
+            if (PayWayEnum.MIPAY.getNum().equals(t.getPayWayId())) {
+                GameAnalogPayVO.PayConfigBean payConfigBean = JsonUtil.toObj(t.getPayConfig(), GameAnalogPayVO.PayConfigBean.class);
+                data.setAnalogPayVO(payConfigBean);
+            }
+            //支付策略配置
+            GameStrategy gameStrategy = gameStrategyService.getOne(new LambdaQueryWrapper<GameStrategy>()
+                    .eq(GameStrategy::getGameId, gameId)
+                    .eq(GameStrategy::getStatus, StatusEnum.YES.getCode()).last("limit 1")
+            );
+            if (!Objects.isNull(gameStrategy)) {
+                GameStrategyInfoVO gameStrategyInfo = BeanUtils.copy(gameStrategy, GameStrategyInfoVO.class);
+                if (StringUtils.isNotEmpty(gameStrategy.getConfig())) {
+                    gameStrategyInfo.setConfig(BeanUtils.copy(gameStrategy.getConfig(), GameStrategyOrderVO.class));
+                }
+                data.setGameStrategyVO(gameStrategyInfo);
+            }
+        });
+        return data;
+    }
 }