Просмотр исходного кода

feat : 增加强制实名认证开关

bilingfeng 2 лет назад
Родитель
Сommit
ced4697b72

+ 10 - 0
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/GameExt.java

@@ -74,6 +74,16 @@ public class GameExt implements Serializable {
      */
     private String mpCode;
 
+    /**
+     * CP充值回调路径
+     */
+    private String payCallBackUrl;
+
+    /**
+     * 强制实名认证开关
+     */
+    private Boolean checkSwitch;
+
     /**
      * 创建时间
      */

+ 5 - 6
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/LogPayCp.java

@@ -9,7 +9,6 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.Date;
 
 /**
  * 通知CP记录表
@@ -31,11 +30,6 @@ public class LogPayCp implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-    /**
-     * 支付方式
-     */
-    private String payId;
-
     /**
      * 订单号
      */
@@ -80,4 +74,9 @@ public class LogPayCp implements Serializable {
      * 创建时间
      */
     private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
 }

+ 0 - 10
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/LoginController.java

@@ -7,7 +7,6 @@ import com.zanxiang.sdk.domain.params.LoginMobileParam;
 import com.zanxiang.sdk.domain.params.LoginPasswordParam;
 import com.zanxiang.sdk.domain.params.UserData;
 import com.zanxiang.sdk.domain.vo.UserLoginVO;
-import com.zanxiang.sdk.service.PerformOrderService;
 import com.zanxiang.sdk.service.RegisterLoginService;
 import com.zanxiang.sdk.service.UserTokenService;
 import io.swagger.annotations.Api;
@@ -34,15 +33,6 @@ public class LoginController {
     @Autowired
     private UserTokenService userTokenService;
 
-    @Autowired
-    private PerformOrderService performOrderService;
-
-    @UnSignCheck
-    @GetMapping("test")
-    public void test() {
-        performOrderService.test();
-    }
-
     @UnSignCheck
     @ApiOperation(value = "登录凭证验证")
     @GetMapping("/token/check")

+ 6 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/vo/UserLoginVO.java

@@ -76,4 +76,10 @@ public class UserLoginVO {
      */
     @ApiModelProperty(notes = "用户身份证号")
     private String cardId;
+
+    /**
+     * 是否需要强制实名
+     */
+    @ApiModelProperty(notes = "是否需要强制实名, true : 是, false : 否")
+    private Boolean checkSwitch;
 }

+ 6 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/vo/UserVO.java

@@ -70,4 +70,10 @@ public class UserVO {
      */
     @ApiModelProperty(notes = "用户身份证号")
     private String cardId;
+
+    /**
+     * 是否需要强制实名
+     */
+    @ApiModelProperty(notes = "是否需要强制实名, true : 是, false : 否")
+    private Boolean checkSwitch;
 }

+ 39 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/enums/TokenCheckEnum.java

@@ -0,0 +1,39 @@
+package com.zanxiang.sdk.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-10-28
+ * @description : token监测
+ */
+@Getter
+@AllArgsConstructor
+public enum TokenCheckEnum {
+
+    /**
+     * 参数不全
+     */
+    PARAM_LACK(-1, "参数不全"),
+
+    /**
+     * 微信支付
+     */
+    CHECK_FAIL(-2, "验证失败"),
+
+    /**
+     * 签名错误
+     */
+    SIGN_ERROR(-3, "签名错误");
+
+    /**
+     * 支付方式
+     */
+    private final Integer code;
+
+    /**
+     * 支付类前缀
+     */
+    private final String msg;
+}

+ 10 - 9
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/LoginServiceImpl.java

@@ -10,6 +10,7 @@ import com.zanxiang.common.text.UUID;
 import com.zanxiang.common.utils.URIUtil;
 import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.module.web.util.IpUtil;
+import com.zanxiang.mybatis.entity.GameExt;
 import com.zanxiang.mybatis.entity.User;
 import com.zanxiang.mybatis.entity.UserCard;
 import com.zanxiang.sdk.constant.ApiUrlConstant;
@@ -84,6 +85,9 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Autowired
     private GameUserService gameUserService;
 
+    @Autowired
+    private GameExtService gameExtService;
+
     /**
      * QQ开发者应用id
      */
@@ -106,10 +110,6 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<UserLoginVO> loginPassword(LoginPasswordParam param, UserData userData) {
-
-        log.error("账号注册, userData : {}", JsonUtil.toString(userData));
-
-
         String username = param.getUsername();
         String password = param.getPassword();
         //用户信息
@@ -174,10 +174,6 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<UserLoginVO> loginMobile(LoginMobileParam param, UserData userData) {
-
-        log.error("手机号注册, userData : {}", JsonUtil.toString(userData));
-
-
         String mobile = param.getMobile();
         //验证码校验
         HttpStatusEnum httpStatusEnum = smsService.smsCheck(SmsTypeEnum.SMS_REG.getType(), mobile, param.getCode());
@@ -230,8 +226,10 @@ public class LoginServiceImpl implements RegisterLoginService {
         userLoginLogService.addUserLoginLog(userData.getIp(), user, userData.getGameId(), 0);
         //查询用户实名信息
         UserCard userCard = userCardService.getOne(new LambdaQueryWrapper<UserCard>().eq(UserCard::getUserId, user.getId()));
+        //查询游戏
+        GameExt gameExt = gameExtService.getByGameId(userData.getGameId());
         //构造用户登录信息
-        return UserLoginVO.builder()
+        UserLoginVO userLoginVO = UserLoginVO.builder()
                 .userId(user.getId())
                 .userName(user.getUsername())
                 .token(userToken)
@@ -241,7 +239,10 @@ public class LoginServiceImpl implements RegisterLoginService {
                 .phoneNum(user.getShowPhoneNum())
                 .cardName(userCard == null ? null : userCard.getShowCardName())
                 .cardId(userCard == null ? null : userCard.getShowCardId())
+                .checkSwitch(gameExt.getCheckSwitch())
                 .build();
+        log.error("用户登录返回登录信息, userLoginVO : {}", JsonUtil.toString(userLoginVO));
+        return userLoginVO;
     }
 
     /**

+ 9 - 55
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PerformOrderServiceImpl.java

@@ -64,9 +64,6 @@ public class PerformOrderServiceImpl implements PerformOrderService {
     @Autowired
     private OrderCompleteService orderCompleteService;
 
-    @Autowired
-    private GameService gameService;
-
     @Autowired
     private GamePayWayService gamePayWayService;
 
@@ -81,17 +78,12 @@ public class PerformOrderServiceImpl implements PerformOrderService {
 
     @Override
     public Boolean pushCp(PlatformOrderDTO orderInfo) {
-        log.info("订单:{} 充值成功推送cp方回调 ----------start---------", orderInfo.getId());
+        log.info("充值回调CP, orderInfo : {} ----------start---------", JsonUtil.toString(orderInfo));
         if (orderInfo.getCpStatus() == CpStatusEnum.SUCCESS.getCode()) {
             return true;
         }
-        Game gameInfo = gameService.getById(orderInfo.getGameId());
-        String cpPaybackUrl = gameInfo.getCpPaybackUrl();
-        if (StringUtils.isEmpty(gameInfo.getCpPaybackUrl())) {
-            log.error("订单充值成功推送cp方回调失败, CP回调地址为空, orderInfo : {}, gameInfo : {}",
-                    JsonUtil.toString(orderInfo), JsonUtil.toString(gameInfo));
-            return false;
-        }
+        GameExt gameExt = gameExtService.getByGameId(orderInfo.getGameId());
+        String cpPaybackUrl = gameExt.getPayCallBackUrl();
         //回调CP
         Map<String, String> map = new HashMap<>(9);
         map.put("userId", String.valueOf(orderInfo.getUserId()));
@@ -105,12 +97,12 @@ public class PerformOrderServiceImpl implements PerformOrderService {
         map.put("sign", this.paySign(orderInfo.getGameId(), map));
         //url
         String url = URIUtil.fillUrlParams(cpPaybackUrl, map, false);
-        log.error("回调Cp的请求地址, url : {}", url);
-        String resultStr = null;
+        String resultStr;
         try {
             resultStr = restTemplate.getForObject(url, String.class);
         } catch (Exception e) {
-            System.out.println("异常" + e.getMessage());
+            log.error("回调CP充值接口异常, orderInfo : {}, e : {}", JsonUtil.toString(orderInfo), e.getMessage());
+            throw new BaseException("回调CP充值接口异常");
         }
         Map<String, String> resultMap = JsonUtil.toMap(resultStr, Map.class, String.class, String.class);
         boolean pushSuccess = Objects.equals(resultMap.get("result"), "200");
@@ -131,8 +123,10 @@ public class PerformOrderServiceImpl implements PerformOrderService {
         logPayCp.setParams(JsonUtil.toString(map));
         logPayCp.setExt(orderInfo.getExt());
         logPayCp.setNotifyCnt(orderInfo.getCpNotifyCnt() + 1);
+        logPayCp.setCreateTime(LocalDateTime.now());
+        logPayCp.setUpdateTime(LocalDateTime.now());
         logPayCpService.save(logPayCp);
-        log.info("订单:{} 充值成功推送cp方回调 ----------end---------", orderInfo.getId());
+        log.info("充值回调CP----------end---------");
         return pushSuccess;
     }
 
@@ -149,9 +143,6 @@ public class PerformOrderServiceImpl implements PerformOrderService {
         sb.append("&time=").append(map.get("time"));
         sb.append("&serverId=").append(map.get("serverId"));
         sb.append("&orderId=").append(map.get("orderId"));
-
-        log.error("支付回调参与加密参数, str : {}", sb.toString());
-
         //加密
         String sign;
         try {
@@ -162,43 +153,6 @@ public class PerformOrderServiceImpl implements PerformOrderService {
         return sign;
     }
 
-    @Override
-    public void test() {
-        String url = "https://api.vmicro.cn/pm/notify/ly.php?channel_id=61";
-        long time = System.currentTimeMillis();
-        HashMap<String, String> map = new HashMap<>();
-        String ext = "{\"appid\":\"328\",\"mtype\":\"61\",\"agent_id\":\"445\",\"site_id\":\"3956\",\"order_id\":\"Y202210271116296076030\"}";
-        map.put("userId", "83");
-        map.put("money", "10.0");
-        map.put("time", String.valueOf(time));
-        map.put("serverId", "60076");
-        map.put("roleId", "635788e11100264a56573114");
-        map.put("roleName", "付晓亦");
-        map.put("orderId", "Y202210271116296076030");
-        map.put("ext", URIUtil.encodeURIComponent(ext));
-
-        String str = "payKey=payKey789&userId=83&money=10.0&time=" + time + "&serverId=60076&orderId=Y202210271116296076030";
-        try {
-            String s = SignUtil.MD5(str).toUpperCase();
-            map.put("sign", s);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        String uri = URIUtil.fillUrlParams(url, map, false);
-
-        log.error("模拟请求支付成功, url : {}", uri);
-
-
-        String object = null;
-
-        try {
-            object = restTemplate.getForObject(uri, String.class);
-        } catch (Exception e) {
-            System.out.println("异常" + e.getMessage());
-        }
-        System.out.println(JsonUtil.toString(object));
-    }
-
     @Override
     public Boolean createOrderComplete(PlatformOrderDTO orderInfo) {
         log.info("订单:{} 创建订单宽表 ----------start---------", orderInfo.getId());

+ 7 - 1
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/UserServiceImpl.java

@@ -8,6 +8,7 @@ import com.zanxiang.common.enums.HttpStatusEnum;
 import com.zanxiang.common.enums.SmsTypeEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.bean.BeanUtils;
+import com.zanxiang.module.util.JsonUtil;
 import com.zanxiang.mybatis.entity.GameExt;
 import com.zanxiang.mybatis.entity.User;
 import com.zanxiang.mybatis.entity.UserCard;
@@ -196,8 +197,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         User user = this.getById(userId);
         //查询用户实名信息
         UserCard userCard = userCardService.getOne(new LambdaQueryWrapper<UserCard>().eq(UserCard::getUserId, userId));
+        //查询游戏
+        GameExt gameExt = gameExtService.getByGameId(userData.getGameId());
         //构造用户登录信息
-        return UserVO.builder()
+        UserVO userVO = UserVO.builder()
                 .userId(user.getId())
                 .userName(user.getUsername())
                 .authentication(user.getAuthentication())
@@ -206,7 +209,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 .phoneNum(user.getShowPhoneNum())
                 .cardName(userCard == null ? null : userCard.getShowCardName())
                 .cardId(userCard == null ? null : userCard.getShowCardId())
+                .checkSwitch(gameExt.getCheckSwitch())
                 .build();
+        log.error("获取用户详情返回用户信息, userVO : {}", JsonUtil.toString(userVO));
+        return userVO;
     }
 
     /**

+ 11 - 6
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/UserTokenServiceImpl.java

@@ -16,6 +16,7 @@ import com.zanxiang.mybatis.mapper.UserTokenMapper;
 import com.zanxiang.sdk.constant.RedisKeyConstant;
 import com.zanxiang.sdk.domain.dto.UserTokenDTO;
 import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.enums.TokenCheckEnum;
 import com.zanxiang.sdk.service.GameExtService;
 import com.zanxiang.sdk.service.UserTokenService;
 import com.zanxiang.sdk.util.RedisUtil;
@@ -57,7 +58,7 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
         //查询登录签名
         GameExt gameExt = gameExtService.getByGameId(appId);
         if (gameExt == null || Strings.isBlank(gameExt.getLoginKey())) {
-            return ResultVO.ok(-1, "参数不全");
+            return ResultVO.ok(TokenCheckEnum.PARAM_LACK.getCode(), TokenCheckEnum.PARAM_LACK.getMsg());
         }
         //查询token是否存在
         UserToken userToken = super.getOne(new LambdaQueryWrapper<UserToken>()
@@ -65,22 +66,26 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
                 .eq(UserToken::getUserId, userId));
         //判断token是否存在, 并且没有过期
         if (userToken == null || userToken.getExpireTime() < DateUtils.localDateTimeToSecond(LocalDateTime.now())) {
-            return ResultVO.ok(-3, "验证失败");
+            return ResultVO.ok(TokenCheckEnum.SIGN_ERROR.getCode(), TokenCheckEnum.SIGN_ERROR.getMsg());
         }
         //登录密钥
         String loginKey = gameExt.getLoginKey();
         //计算用户签名
-        String sb = "loginKey=" + loginKey + "&appId=" + appId + "&userId=" + userId + "&token=" + token;
+        StringBuilder sb = new StringBuilder();
+        sb.append("loginKey=").append(loginKey);
+        sb.append("&appId=").append(appId);
+        sb.append("&userId=").append(userId);
+        sb.append("&token=").append(token);
         String mySign;
         try {
-            mySign = SignUtil.MD5(sb).toUpperCase();
+            mySign = SignUtil.MD5(sb.toString()).toUpperCase();
         } catch (Exception e) {
-            log.error("md5工具类加密异常");
+            log.error("md5工具类加密异常, str : {}, e : {}", sb.toString(), e.getMessage());
             throw new BaseException("MD5加密异常");
         }
         //签名错误
         if (!Objects.equals(mySign, sign)) {
-            return ResultVO.ok(-2, "签名错误");
+            return ResultVO.ok(TokenCheckEnum.CHECK_FAIL.getCode(), TokenCheckEnum.CHECK_FAIL.getMsg());
         }
         return ResultVO.ok(userId);
     }

+ 0 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/PerformOrderService.java

@@ -10,8 +10,6 @@ import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
  */
 public interface PerformOrderService {
 
-    void test();
-
     /**
      * cp方履约推送
      *