فهرست منبع

Merge branch 'dev' of GameCenter/game-center into master

zhimo 1 سال پیش
والد
کامیت
11c4a76ddc

+ 138 - 42
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/OrderVO.java

@@ -15,153 +15,249 @@ import java.time.LocalDateTime;
 @Data
 public class OrderVO {
 
+    /**
+     * 主键id
+     */
     @ApiModelProperty(notes = "主键id")
     private Long id;
 
+    /**
+     * 日期
+     */
     @ApiModelProperty(notes = "日期")
     private LocalDate dateTime;
 
-    @ApiModelProperty(notes = "订单ID:订单号")
+    /**
+     * 游戏订单号
+     */
+    @ApiModelProperty(notes = "游戏订单号")
     private String orderId;
 
-    @ApiModelProperty(notes = "cp订单号")
+    /**
+     * cp订单号
+     */
+    @ApiModelProperty(notes = "CP订单号")
     private String cpOrderId;
 
-    @ApiModelProperty(notes = "第三方支付订单号")
+    /**
+     * 商户订单号
+     */
+    @ApiModelProperty(notes = "商户订单号")
     private String merchantOrderNo;
 
-    @ApiModelProperty(notes = "玩家id")
+    /**
+     * 玩家ID
+     */
+    @ApiModelProperty(notes = "玩家ID")
     private Long userId;
 
+    /**
+     * 玩家账号
+     */
     @ApiModelProperty(notes = "玩家账号")
     private String username;
 
+    /**
+     * 注册时间
+     */
     @ApiModelProperty(notes = "注册时间")
     private LocalDateTime regTime;
 
-    @ApiModelProperty(notes = "充值渠道id")
+    /**
+     * 渠道ID
+     */
+    @ApiModelProperty(notes = "渠道ID")
     private Long agentId;
 
-    @ApiModelProperty(notes = "充值渠道名称")
+    /**
+     * 渠道名称
+     */
+    @ApiModelProperty(notes = "渠道名称")
     private String agentName;
 
-    @ApiModelProperty(notes = "注册渠道id")
-    private Long regAgentId;
-
-    @ApiModelProperty(notes = "注册渠道名称")
-    private String regAgentName;
-
-    @ApiModelProperty(notes = "注册游戏id")
-    private Long regGameId;
-
-    @ApiModelProperty(notes = "注册游戏名称")
-    private String regGameName;
-
+    /**
+     * cpId
+     */
     @ApiModelProperty(notes = "cpId")
     private Long cpId;
 
-    @ApiModelProperty(notes = "cp名称")
+    /**
+     * cp名称
+     */
+    @ApiModelProperty(notes = "CP名称")
     private String cpName;
 
-    @ApiModelProperty(notes = "游戏应用类型id")
-    private Long regGameCategoryId;
-
-    @ApiModelProperty(notes = "游戏应用类型名称")
-    private String regGameCategoryName;
-
+    /**
+     * 归因投放人员id
+     */
     @ApiModelProperty(notes = "归因投放人员id")
     private Long pitcherId;
 
+    /**
+     * 归因投放人员名字
+     */
     @ApiModelProperty(notes = "归因投放人员名字")
     private String pitcherName;
 
+    /**
+     * 归因推广账号id
+     */
     @ApiModelProperty(notes = "归因推广账号id")
     private Long accountId;
 
+    /**
+     * 推广账号类型(1:腾讯、2:头条)
+     */
     @ApiModelProperty(notes = "推广账号类型(1:腾讯、2:头条)")
     private Integer accountType;
 
-    @ApiModelProperty(notes = "充值游戏id")
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(notes = "游戏ID")
     private Long gameId;
 
-    @ApiModelProperty(notes = "充值游戏名称")
+    /**
+     * 游戏名称
+     */
+    @ApiModelProperty(notes = "游戏名称")
     private String gameName;
 
-    @ApiModelProperty(notes = "充值游戏类型")
+    /**
+     * 游戏类型
+     */
+    @ApiModelProperty(notes = "游戏类型ID")
     private Long gameCategoryId;
 
-    @ApiModelProperty(notes = "充值游戏类型")
-    private String gameCategory;
+    /**
+     * 游戏类型
+     */
+    @ApiModelProperty(notes = "游戏类型名称")
+    private String gameCategoryName;
 
+    /**
+     * 游戏商品ID
+     */
     @ApiModelProperty(notes = "游戏商品ID")
     private String productId;
 
+    /**
+     * 产品名称
+     */
     @ApiModelProperty(notes = "产品名称")
     private String productName;
 
+    /**
+     * 订单金额
+     */
     @ApiModelProperty(notes = "订单金额")
     private BigDecimal amount;
 
+    /**
+     * 订单实付金额
+     */
     @ApiModelProperty(notes = "订单实付金额")
     private BigDecimal realAmount;
 
+    /**
+     * 支付方式id
+     */
     @ApiModelProperty(notes = "支付方式id")
     private Long payWayId;
 
-    @ApiModelProperty(notes = "支付方式")
-    private String payWay;
+    /**
+     * 支付方式
+     */
+    @ApiModelProperty(notes = "支付方式名称")
+    private String payWayName;
 
+    /**
+     * 支付场景id
+     */
     @ApiModelProperty(notes = "支付场景id")
     private Long payDeviceId;
 
-    @ApiModelProperty(notes = "支付场景")
+    /**
+     * 支付场景
+     */
+    @ApiModelProperty(notes = "支付场景名称")
     private String payDeviceName;
 
+    /**
+     * 商户号
+     */
     @ApiModelProperty(notes = "商户号")
     private String merchantNo;
 
+    /**
+     * 商户名称
+     */
     @ApiModelProperty(notes = "商户名称")
     private String merchantName;
 
+    /**
+     * 所在服务器名称
+     */
     @ApiModelProperty(notes = "所在服务器名称")
     private String serverName;
 
+    /**
+     * 角色名称
+     */
     @ApiModelProperty(notes = "角色名称")
     private String roleName;
 
+    /**
+     * 角色等级
+     */
     @ApiModelProperty(notes = "角色等级")
     private Long roleLevel;
 
+    /**
+     * 角色VIP
+     */
     @ApiModelProperty(notes = "角色VIP")
     private Long roleVipLevel;
 
+    /**
+     * 客户端操作系统, android, ios, windows, mac
+     */
     @ApiModelProperty(notes = "客户端操作系统, android, ios, windows, mac")
     private String deviceSystem;
 
-    @ApiModelProperty(notes = "是否切量  0 否 1 是")
-    private Boolean isSwitch;
-
+    /**
+     * 创建时间
+     */
     @ApiModelProperty(notes = "创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 支付时间
+     */
     @ApiModelProperty(notes = "支付时间")
     private LocalDateTime payTime;
 
-    @ApiModelProperty(notes = "订单结束时间")
-    private LocalDateTime endTime;
-
+    /**
+     * cp最后通知时间
+     */
     @ApiModelProperty(notes = "cp最后通知时间")
     private LocalDateTime lastCpNotifyTime;
 
+    /**
+     * 支付状态,1待支付,2 支付成功,-1 已取消
+     */
     @ApiModelProperty(notes = "支付状态,1待支付,2 支付成功,-1 已取消")
     private Integer status;
 
+    /**
+     * CP通知状态,1为待处理,2为成功,-1为失败
+     */
     @ApiModelProperty(notes = "CP通知状态,1为待处理,2为成功,-1为失败")
     private Integer cpStatus;
 
+    /**
+     * 是否首充 0 否 1 是
+     */
     @ApiModelProperty(notes = "是否首充 0 否 1 是")
     private Integer isFirstRecharge;
-
-    @ApiModelProperty(notes = "广告上报状态, 0 : 未上报, 1 : 上报成功, 2 : 上报失败")
-    private Integer callBackStatus;
 }

+ 7 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/PayMerchantListVO.java

@@ -30,11 +30,17 @@ public class PayMerchantListVO {
     @ApiModelProperty(notes = "商户号")
     private String merchantNo;
 
+    /**
+     * 商户名称
+     */
+    @ApiModelProperty(notes = "商户名称")
+    private String merchantName;
+
     /**
      * 商户主体
      */
     @ApiModelProperty(notes = "商户主体")
-    private String merchantName;
+    private String merchantCompany;
 
     /**
      * 商户平台id

+ 21 - 56
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/OrderServiceImpl.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.base.pojo.enums.GameCategoryEnum;
+import com.zanxiang.game.module.base.pojo.enums.PayDeviceEnum;
+import com.zanxiang.game.module.base.pojo.enums.PayWayEnum;
 import com.zanxiang.game.module.manage.pojo.dto.*;
 import com.zanxiang.game.module.manage.pojo.params.OrderParam;
 import com.zanxiang.game.module.manage.pojo.params.UserOrderListParam;
@@ -27,7 +29,10 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -52,12 +57,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IUserService userService;
 
-    @Autowired
-    private IPayWayService payWayService;
-
-    @Autowired
-    private IPayDeviceService payDeviceService;
-
     @Autowired
     private IAgentService agentService;
 
@@ -140,15 +139,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         Map<Long, AgentDTO> agentMap = agentDTOList.stream().collect(Collectors.toMap(AgentDTO::getId, Function.identity()));
         //游戏信息
         Map<Long, GameDTO> gameMap = gameService.gameMap(orderListVOList.stream()
-                .map(orderVO -> Arrays.asList(orderVO.getGameId(), orderVO.getRegGameId()))
-                .flatMap(List::stream).collect(Collectors.toSet()));
-        //支付渠道列表
-        Map<Long, PayWayDTO> payWayMap = payWayService.payWayMap();
-        //支付方式列表
-        Map<Long, PayDeviceDTO> payDeviceMap = payDeviceService.payDeviceMap();
+                .map(OrderVO::getGameId).collect(Collectors.toSet()));
         //字段信息补充更新
-        orderListVOList.forEach(vo -> this.update(vo, userMap, gameMap, cpMap,
-                payWayMap, payDeviceMap, agentMap));
+        orderListVOList.forEach(vo -> this.toVO(vo, userMap, gameMap, cpMap, agentMap));
         //设置返回
         OrderListVO orderListVO = new OrderListVO();
         orderListVO.setSize(page.getSize());
@@ -160,62 +153,35 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return orderListVO;
     }
 
-    private void update(OrderVO orderVO, Map<Long, UserDTO> userMap, Map<Long, GameDTO> gameMap, Map<Long, CpDTO> cpMap,
-                        Map<Long, PayWayDTO> payWayMap, Map<Long, PayDeviceDTO> payDeviceMap, Map<Long, AgentDTO> agentMap) {
+    private void toVO(OrderVO orderVO, Map<Long, UserDTO> userMap, Map<Long, GameDTO> gameMap, Map<Long, CpDTO> cpMap,
+                      Map<Long, AgentDTO> agentMap) {
         orderVO.setDateTime(orderVO.getCreateTime().toLocalDate());
         //用户信息补充
         UserDTO userDTO = userMap.get(orderVO.getUserId());
-        if (userDTO != null) {
-            //注册渠道
-            AgentDTO agentDTO = agentMap.get(userDTO.getRegAgentId());
-            if (agentDTO != null) {
-                orderVO.setRegAgentId(agentDTO.getId());
-                orderVO.setRegAgentName(agentDTO.getAgentName());
-            }
-        }
-        //充值渠道
+        orderVO.setUsername(userDTO == null ? null : userDTO.getUsername());
+        //渠道账号
         AgentDTO agentDTO = agentMap.get(orderVO.getAgentId());
         if (agentDTO != null) {
             orderVO.setAccountId(agentDTO.getId());
             orderVO.setPitcherId(agentDTO.getCreateBy());
             orderVO.setPitcherName(agentDTO.getCreateByName());
             orderVO.setAccountType(agentDTO.getAccountType());
+            orderVO.setAgentName(agentDTO.getAgentName());
         }
-        //注册游戏
-        GameDTO regGameDTO = gameMap.get(orderVO.getRegGameId());
-        if (regGameDTO != null) {
-            orderVO.setRegGameName(regGameDTO.getName());
-            //注册游戏应用类型
-            GameCategoryEnum gameCategoryEnum = GameCategoryEnum.getGameCategory(regGameDTO.getCategory());
-            if (gameCategoryEnum != null) {
-                orderVO.setRegGameCategoryId(gameCategoryEnum.getId());
-                orderVO.setRegGameCategoryName(gameCategoryEnum.getName());
-            }
-        }
-        //CP
+        //CP名称
         CpDTO cpDTO = cpMap.get(orderVO.getCpId());
-        if (cpDTO != null) {
-            orderVO.setCpName(cpDTO.getCpName());
-        }
-        //充值游戏
+        orderVO.setCpName(cpDTO == null ? null : cpDTO.getCpName());
+        //游戏信息
         GameDTO gameDTO = gameMap.get(orderVO.getGameId());
         if (gameDTO != null) {
             orderVO.setGameName(gameDTO.getName());
-            //注册游戏应用类型
             GameCategoryEnum gameCategoryEnum = GameCategoryEnum.getGameCategory(gameDTO.getCategory());
-            if (gameCategoryEnum != null) {
-                orderVO.setGameCategory(gameCategoryEnum.getName());
-                orderVO.setGameCategoryId(gameCategoryEnum.getId());
-            }
-        }
-        //支付渠道
-        if (payWayMap.get(orderVO.getPayWayId()) != null) {
-            orderVO.setPayWay(payWayMap.get(orderVO.getPayWayId()).getPayWayName());
-        }
-        //支付场景
-        if (payDeviceMap.get(orderVO.getPayDeviceId()) != null) {
-            orderVO.setPayDeviceName(payDeviceMap.get(orderVO.getPayDeviceId()).getPayDeviceName());
+            orderVO.setGameCategoryId(gameCategoryEnum == null ? null : gameCategoryEnum.getId());
+            orderVO.setGameCategoryName(gameCategoryEnum == null ? null : gameCategoryEnum.getName());
         }
+        //支付渠道, 场景
+        orderVO.setPayWayName(PayWayEnum.getByPayWayId(orderVO.getPayWayId()));
+        orderVO.setPayDeviceName(PayDeviceEnum.getByPayWayId(orderVO.getPayDeviceId()));
     }
 
     private LambdaQueryWrapper<Order> getListWrapper(OrderParam param, List<Long> agentIdList, List<Long> userIdList, String select) {
@@ -245,7 +211,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .orderByDesc(Order::getCreateTime);
     }
 
-
     private OrderVO orderToVo(Order order) {
         if (Objects.isNull(order)) {
             return null;

+ 51 - 61
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/PayMerchantServiceImpl.java

@@ -5,27 +5,24 @@ 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.erp.security.util.SecurityUtil;
 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.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.PayWayDTO;
 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.vo.PayMerchantChoiceVO;
 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.IPayWayService;
 import com.zanxiang.game.module.mybatis.entity.PayMerchant;
 import com.zanxiang.game.module.mybatis.mapper.PayMerchantMapper;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.module.util.exception.BaseException;
 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;
 
@@ -43,31 +40,23 @@ import java.util.stream.Collectors;
 @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())) {
+            if (Objects.equals(param.getPayWayId().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())) {
+            if (Objects.equals(param.getPayWayId().intValue(), PayWayEnum.WX_PAY.getPayWayId())) {
                 configMap.put("mchId", param.getMerchantNo());
                 configMap.put("apiKey", param.getSecretKey());
                 configMap.put("signType", "MD5");
@@ -75,55 +64,56 @@ public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMe
             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.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.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())
+                .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

+ 14 - 4
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/PayMerchant.java

@@ -45,14 +45,14 @@ public class PayMerchant implements Serializable {
     private String merchantName;
 
     /**
-     * 支付渠道id
+     * 商户主体
      */
-    private Long payWayId;
+    private String merchantCompany;
 
     /**
-     * 支付渠道名称
+     * 支付渠道id
      */
-    private String payWayName;
+    private Long payWayId;
 
     /**
      * 商户号登录账号
@@ -145,11 +145,21 @@ public class PayMerchant implements Serializable {
     @TableLogic
     private Integer isDelete;
 
+    /**
+     * 创建者id
+     */
+    private Long createById;
+
     /**
      * 创建时间
      */
     private LocalDateTime createTime;
 
+    /**
+     * 更新者id
+     */
+    private Long updateById;
+
     /**
      * 更新时间
      */

+ 57 - 4
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/pojo/result/CardCheckResult.java

@@ -13,20 +13,64 @@ import java.util.Objects;
 public class CardCheckResult {
 
     /**
-     * 消息
+     * 返回码
      */
-    private String message;
+    private String code;
 
     /**
-     * 返回码
+     * 消息
      */
-    private String code;
+    private String message;
 
     /**
      * 结果
      */
     private String data;
 
+    /**
+     * 结果数据
+     */
+    private ResultBean result;
+
+    @Data
+    public static class ResultBean {
+
+        /**
+         * 名字
+         */
+        private String name;
+
+        /**
+         * 身份证号
+         */
+        private String idcard;
+
+        /**
+         * 核验结果状态码,1 一致;2 不一致;3 无记录
+         */
+        private String res;
+
+        /**
+         * 核验结果状态描述
+         */
+        private String description;
+
+        /**
+         * 性别
+         */
+        private String sex;
+
+        /**
+         * 生日
+         */
+        private String birthday;
+
+        /**
+         * 地址
+         */
+        private String address;
+    }
+
     public boolean isSuccess() {
         return Objects.equals(this.code, "0000");
     }
@@ -34,4 +78,13 @@ public class CardCheckResult {
     public boolean isPast() {
         return Objects.equals(this.data, "一致");
     }
+
+    public boolean isFail() {
+        return !Objects.equals(this.code, "0");
+    }
+
+    public boolean past() {
+        return this.result != null && Objects.equals(this.result.getRes(), "1");
+    }
+
 }

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/OrderPayServiceImpl.java

@@ -180,7 +180,7 @@ public class OrderPayServiceImpl implements IOrderPayService {
             paramMap.put("payH5Url", this.customH5Url);
             paramMap.put("openId", user.getOpenId());
             paramMap.put("description", "购买" + product.getAmount() + "元档充值");
-            paramMap.put("serverUrl", this.serverUrl.contains("84game") ? this.serverUrl + "/sdk" : this.serverUrl + "/api/sdk");
+            paramMap.put("serverUrl", this.serverUrl.contains("test") ? this.serverUrl + "/api/sdk" : this.serverUrl + "/sdk");
             log.error("下单参数返回, paramMap : {}", JsonUtil.toString(paramMap));
             return paramMap;
         }

+ 46 - 6
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserCardServiceImpl.java

@@ -21,8 +21,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
 import java.text.SimpleDateFormat;
@@ -50,8 +54,11 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
     @Autowired
     private RestTemplate restTemplate;
 
-    @Value("${authentication.appCode}")
-    private String appCode;
+    /**
+     * 服务器域名
+     */
+    @Value("${server.domain}")
+    private String serverUrl;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -78,7 +85,12 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
             return ResultVO.fail(HttpStatusEnum.CARD_ID_ERROR.getMsg());
         }
         //阿里实名认证
-        boolean authenticationCheck = this.authenticationCheck(cardName, cardId);
+        boolean authenticationCheck;
+        if (this.serverUrl.contains("test")) {
+            authenticationCheck = this.authenticationCheck(cardName, cardId);
+        } else {
+            authenticationCheck = this.userCardCheck(cardName, cardId);
+        }
         //实名认证失败
         if (!authenticationCheck) {
             return ResultVO.fail(HttpStatusEnum.AUTHENTICATION_FAIL.getMsg());
@@ -162,9 +174,10 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
 
     private boolean authenticationCheck(String cardName, String cardId) {
         String host = "https://dskj.market.alicloudapi.com/platform/check/verified";
+        String appCode = "f395b1587fc04a49a975f908660fb1e9";
         String url = host + "?certCode=" + cardId + "&realName=" + cardName;
         HttpHeaders headers = new HttpHeaders();
-        headers.set("Authorization", "APPCODE " + this.appCode);
+        headers.set("Authorization", "APPCODE " + appCode);
         headers.set("X-Ca-Nonce", UUID.randomUUID().toString());
         HttpEntity httpEntity = new HttpEntity<>(headers);
         CardCheckResult result;
@@ -172,13 +185,40 @@ public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> i
             String resultStr = restTemplate.postForObject(url, httpEntity, String.class);
             result = JsonUtil.toObj(resultStr, CardCheckResult.class);
         } catch (Exception e) {
-            log.error("请求阿里实名认证接口异常, cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
+            log.error("请求阿里实名认证接口异常(OLD), cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
             throw new BaseException("请求阿里实名认证接口异常");
         }
         if (result == null || !result.isSuccess()) {
-            log.error("请求阿里实名认证接口返回值为空, cardName : {}, cardId : {}", cardName, cardId);
+            log.error("请求阿里实名认证接口返回值为空(OLD), cardName : {}, cardId : {}, result : {}", cardName, cardId, JsonUtil.toString(result));
             throw new BaseException("实名认证失败");
         }
         return result.isPast();
     }
+
+    private boolean userCardCheck(String cardName, String cardId) {
+        String url = "https://eid.shumaidata.com/eid/check";
+        String appCode = "f395b1587fc04a49a975f908660fb1e9";
+        //请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Authorization", "APPCODE " + appCode);
+        MultiValueMap<String, String> requestParams = new LinkedMultiValueMap<>();
+        requestParams.add("name", cardName);
+        requestParams.add("idcard", cardId);
+        CardCheckResult result;
+        try {
+            ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST,
+                    new HttpEntity<>(requestParams, headers), String.class);
+            String body = responseEntity.getBody();
+            result = JsonUtil.toObj(body, CardCheckResult.class);
+        } catch (Exception e) {
+            log.error("请求阿里实名认证接口异常(NEW), cardName : {}, cardId : {}, e : {}", cardName, cardId, e.getMessage());
+            throw new BaseException("请求阿里实名认证接口异常");
+        }
+        if (result == null || result.isFail()) {
+            log.error("请求阿里实名认证接口返回值为空(NEW),cardName : {},cardId : {}, result : {}", cardName, cardId, JsonUtil.toString(result));
+            throw new BaseException("实名认证失败");
+        }
+        log.error("实名认证结果, result : {}", JsonUtil.toString(result));
+        return result.past();
+    }
 }