瀏覽代碼

feat : 用户接口代码补充提交

bilingfeng 2 年之前
父節點
當前提交
5dd54929ae

+ 31 - 36
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/LoginController.java

@@ -3,8 +3,6 @@ package com.zanxiang.sdk.controller;
 import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.sdk.domain.params.LoginMobileParam;
 import com.zanxiang.sdk.domain.params.LoginPasswordParam;
-import com.zanxiang.sdk.domain.params.QqLoginCallbackParam;
-import com.zanxiang.sdk.domain.params.UserData;
 import com.zanxiang.sdk.domain.vo.UserLoginVO;
 import com.zanxiang.sdk.service.RegisterLoginService;
 import com.zanxiang.sdk.service.UserTokenService;
@@ -17,7 +15,6 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 /**
  * @author : lingfeng
@@ -57,37 +54,35 @@ public class LoginController {
         return registerPassword.loginMobile(param, request);
     }
 
-    //-------------------------------- 微信和QQ授权登录(暂时没有用到) --------------------------------
-
-    @ApiOperation(value = "用户QQ授权登录")
-    @GetMapping("/register/login/qq")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO qqLoginAuth(HttpServletResponse response) {
-        registerPassword.qqLoginAuth(response);
-        return ResultVO.ok();
-    }
-
-    @ApiOperation(value = "用户QQ授权登录回调接口")
-    @PostMapping("/register/login/qq/call/back")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO<UserLoginVO> qqLoginCallback(@Validated @RequestBody QqLoginCallbackParam qqLoginCallbackParam,
-                                                 HttpServletRequest request, UserData userData) {
-        return registerPassword.qqLoginCallback(qqLoginCallbackParam, request, userData);
-    }
-
-    @ApiOperation(value = "用户微信授权登录")
-    @GetMapping("/register/login/vx")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO getUserDetail(HttpServletResponse response) {
-        registerPassword.vxLoginAuth(response);
-        return ResultVO.ok();
-    }
-
-    @ApiOperation(value = "用户微信授权登录回调接口")
-    @PostMapping("/register/login/vx/call/back")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO<UserLoginVO> vxLoginCallback(@Validated @RequestBody QqLoginCallbackParam qqLoginCallbackParam,
-                                                 HttpServletRequest request, UserData userData) {
-        return registerPassword.vxLoginCallback(qqLoginCallbackParam, request, userData);
-    }
+//    @ApiOperation(value = "用户QQ授权登录")
+//    @GetMapping("/register/login/qq")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO qqLoginAuth(HttpServletResponse response) {
+//        registerPassword.qqLoginAuth(response);
+//        return ResultVO.ok();
+//    }
+//
+//    @ApiOperation(value = "用户QQ授权登录回调接口")
+//    @PostMapping("/register/login/qq/call/back")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO<UserLoginVO> qqLoginCallback(@Validated @RequestBody QqLoginCallbackParam qqLoginCallbackParam,
+//                                                 HttpServletRequest request, UserData userData) {
+//        return registerPassword.qqLoginCallback(qqLoginCallbackParam, request, userData);
+//    }
+//
+//    @ApiOperation(value = "用户微信授权登录")
+//    @GetMapping("/register/login/vx")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO getUserDetail(HttpServletResponse response) {
+//        registerPassword.vxLoginAuth(response);
+//        return ResultVO.ok();
+//    }
+//
+//    @ApiOperation(value = "用户微信授权登录回调接口")
+//    @PostMapping("/register/login/vx/call/back")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO<UserLoginVO> vxLoginCallback(@Validated @RequestBody QqLoginCallbackParam qqLoginCallbackParam,
+//                                                 HttpServletRequest request, UserData userData) {
+//        return registerPassword.vxLoginCallback(qqLoginCallbackParam, request, userData);
+//    }
 }

+ 53 - 35
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/UserController.java

@@ -4,10 +4,7 @@ import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.sdk.common.annotation.ValidLogin;
 import com.zanxiang.sdk.domain.params.*;
 import com.zanxiang.sdk.domain.vo.UserLoginVO;
-import com.zanxiang.sdk.service.GameUserRoleService;
-import com.zanxiang.sdk.service.GameUserService;
-import com.zanxiang.sdk.service.UserOauthService;
-import com.zanxiang.sdk.service.UserService;
+import com.zanxiang.sdk.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -41,49 +38,70 @@ public class UserController {
     @Autowired
     private GameUserService gameUserService;
 
-    @ApiOperation(value = "用户重置密码")
-    @PostMapping("/update/password")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO updatePassword(@Validated @RequestBody UpdatePasswordParam updatePasswordParam, @ValidLogin UserData userData) {
-        return userService.updatePassword(updatePasswordParam, userData);
-    }
-
-
-    //------------------------- 11111 -------------------------
+    @Autowired
+    private UserCardService userCardService;
 
-    @ApiOperation(value = "用户获取信息详情")
-    @PostMapping("/get/user/detail")
+    @ApiOperation(value = "忘记密码找回")
+    @PostMapping("/find/password")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO getUserDetail(@Validated @RequestBody UserDetailParam userDetailParam, UserData userData) {
-        return userService.getUserDetail(userDetailParam, userData);
+    public ResultVO<Boolean> findPassword(@Validated @RequestBody FindPasswordParam param) {
+        return userService.findPassword(param);
     }
 
-    @ApiOperation(value = "更新用户授权信息")
-    @PostMapping("/update/user/Oauth")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-    public ResultVO updateUserOauth(@Validated @RequestBody UserOauthlUpdateParam param, @ValidLogin UserData userData) {
-        return userOauthService.updateUserOauth(param, userData);
+    @ApiOperation(value = "用户修改密码")
+    @PostMapping("/update/password")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+    public ResultVO<Boolean> updatePassword(@Validated @RequestBody UpdatePasswordParam param, @ValidLogin UserData userData) {
+        return userService.updatePassword(param, userData);
     }
 
-    @ApiOperation(value = "创建/更新游戏用户")
-    @PostMapping("/update/game/user")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-    public ResultVO updateGameUser(@Validated @RequestBody GameUserUpdateParam param, @ValidLogin UserData userData) {
-        return ResultVO.ok(gameUserService.updateGameUser(param, userData));
+    @ApiOperation(value = "用户绑定手机")
+    @PostMapping("/bind/phone")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+    public ResultVO<Boolean> bindPhone(@Validated @RequestBody BindPhoneParam param, @ValidLogin UserData userData) {
+        return userService.bindPhone(param, userData);
     }
 
-    @ApiOperation(value = "上传角色信息")
-    @PostMapping("/update/game/role")
+    @ApiOperation(value = "用户实名认证")
+    @PostMapping("/authentication")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO updateUserGameRole(@Validated @RequestBody GameUserRoleUpdateParam param, @ValidLogin UserData userData) {
-        return ResultVO.ok(gameUserRoleService.updateUserGameRole(param, userData));
+    public ResultVO<Boolean> userAuthentication(@Validated @RequestBody UserCardUpdateParam param, @ValidLogin UserData userData) {
+        return userCardService.userAuthentication(param, userData);
     }
 
-    @ApiOperation(value = "用户信息检测")
-    @PostMapping("/check")
+    @ApiOperation(value = "用户获取信息详情")
+    @PostMapping("/get/user/detail")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
-    public ResultVO upUserGameRole(@Validated @RequestBody UserCheckParam param, @ValidLogin UserData userData) {
-        return ResultVO.ok(userService.userCheck(param, userData));
+    public ResultVO getUserDetail(@Validated @RequestBody UserDetailParam userDetailParam, UserData userData) {
+        return userService.getUserDetail(userDetailParam, userData);
     }
 
+//    @ApiOperation(value = "更新用户授权信息")
+//    @PostMapping("/update/user/Oauth")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+//    public ResultVO updateUserOauth(@Validated @RequestBody UserOauthlUpdateParam param, @ValidLogin UserData userData) {
+//        return userOauthService.updateUserOauth(param, userData);
+//    }
+//
+//    @ApiOperation(value = "创建/更新游戏用户")
+//    @PostMapping("/update/game/user")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+//    public ResultVO updateGameUser(@Validated @RequestBody GameUserUpdateParam param, @ValidLogin UserData userData) {
+//        return ResultVO.ok(gameUserService.updateGameUser(param, userData));
+//    }
+//
+//    @ApiOperation(value = "上传角色信息")
+//    @PostMapping("/update/game/role")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO updateUserGameRole(@Validated @RequestBody GameUserRoleUpdateParam param, @ValidLogin UserData userData) {
+//        return ResultVO.ok(gameUserRoleService.updateUserGameRole(param, userData));
+//    }
+//
+//    @ApiOperation(value = "用户信息检测")
+//    @PostMapping("/check")
+//    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserLoginVO.class)})
+//    public ResultVO upUserGameRole(@Validated @RequestBody UserCheckParam param, @ValidLogin UserData userData) {
+//        return ResultVO.ok(userService.userCheck(param, userData));
+//    }
+
 }

+ 0 - 8
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/BindPhoneParam.java

@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 
 /**
  * @author : lingfeng
@@ -14,13 +13,6 @@ import javax.validation.constraints.NotNull;
 @Data
 public class BindPhoneParam {
 
-    /**
-     * 验证码类型
-     */
-    @ApiModelProperty(notes = "验证码类型")
-    @NotNull(message = "验证码类型不可为空")
-    private Integer type;
-
     /**
      * 手机号
      */

+ 43 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/FindPasswordParam.java

@@ -0,0 +1,43 @@
+package com.zanxiang.sdk.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-09-26
+ * @description : 忘记密码找回参数
+ */
+@Data
+public class FindPasswordParam {
+
+    /**
+     * 用户名
+     */
+    @ApiModelProperty(notes = "用户名")
+    @NotBlank(message = "用户名不可为空")
+    private String userName;
+
+    /**
+     * 手机号
+     */
+    @ApiModelProperty(notes = "手机号")
+    @NotBlank(message = "手机号不可为空")
+    private String mobile;
+
+    /**
+     * 验证码
+     */
+    @ApiModelProperty(notes = "验证码")
+    @NotBlank(message = "验证码不可为空")
+    private String code;
+
+    /**
+     * 新密码
+     */
+    @ApiModelProperty(notes = "新密码")
+    @NotBlank(message = "新密码不可为空")
+    private String newPassword;
+}

+ 0 - 7
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/LoginMobileParam.java

@@ -14,13 +14,6 @@ import javax.validation.constraints.NotNull;
 @Data
 public class LoginMobileParam {
 
-    /**
-     * 验证码类型
-     */
-    @ApiModelProperty(notes = "验证码类型")
-    @NotNull(message = "验证码类型不可为空")
-    private Integer type;
-
     /**
      * 手机号
      */

+ 30 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/UserCardUpdateParam.java

@@ -0,0 +1,30 @@
+package com.zanxiang.sdk.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-09-26
+ * @description : 实名认证更新参数
+ */
+@Data
+public class UserCardUpdateParam {
+
+    /**
+     * 真实姓名
+     */
+    @ApiModelProperty(notes = "真实姓名")
+    @NotBlank(message = "真实姓名不可为空")
+    private String cardName;
+
+    /**
+     * 身份证号
+     */
+    @NotBlank(message = "身份证号不可为空")
+    @ApiModelProperty(notes = "身份证号不可为空")
+    private String cardId;
+
+}

+ 4 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/LoginServiceImpl.java

@@ -5,6 +5,7 @@ import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.common.enums.AccountStatusEnum;
 import com.zanxiang.common.enums.DeviceTypeEnum;
 import com.zanxiang.common.enums.HttpStatusEnum;
+import com.zanxiang.common.enums.SmsTypeEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.text.UUID;
 import com.zanxiang.common.utils.IpUtils;
@@ -128,6 +129,7 @@ public class LoginServiceImpl implements RegisterLoginService {
                     .password(RegisterUtil.cmfPassword(password))
                     .deviceType(DeviceTypeEnum.DEVICE_TYPE_ANDROID_APP.getDeviceType())
                     .status(AccountStatusEnum.NORMAL_STATUS.getStatus())
+                    .authentication(0)
                     .createTime(LocalDateTime.now())
                     .updateTime(LocalDateTime.now())
                     .build();
@@ -161,12 +163,11 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<UserLoginVO> loginMobile(LoginMobileParam param, HttpServletRequest request) {
-        Integer type = param.getType();
         String mobile = param.getMobile();
         String code = param.getCode();
         Long gameId = param.getGameId();
         //验证码校验
-        HttpStatusEnum httpStatusEnum = smsService.smsCheck(type, mobile, code);
+        HttpStatusEnum httpStatusEnum = smsService.smsCheck(SmsTypeEnum.SMS_REG.getType(), mobile, code);
         //验证不通过, 返回
         if (!Objects.equals(httpStatusEnum, HttpStatusEnum.SUCCESS)) {
             return new ResultVO<>(httpStatusEnum);
@@ -180,6 +181,7 @@ public class LoginServiceImpl implements RegisterLoginService {
                     .mobile(mobile)
                     .deviceType(DeviceTypeEnum.DEVICE_TYPE_ANDROID_APP.getDeviceType())
                     .status(AccountStatusEnum.NORMAL_STATUS.getStatus())
+                    .authentication(0)
                     .createTime(LocalDateTime.now())
                     .updateTime(LocalDateTime.now())
                     .build();

+ 72 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/UserCardServiceImpl.java

@@ -0,0 +1,72 @@
+package com.zanxiang.sdk.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.common.domain.ResultVO;
+import com.zanxiang.common.enums.HttpStatusEnum;
+import com.zanxiang.mybatis.entity.User;
+import com.zanxiang.mybatis.entity.UserCard;
+import com.zanxiang.mybatis.mapper.UserCardMapper;
+import com.zanxiang.sdk.domain.params.UserCardUpdateParam;
+import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.service.UserCardService;
+import com.zanxiang.sdk.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-09-26
+ * @description : 用户实名认证
+ */
+@Slf4j
+@Service
+public class UserCardServiceImpl extends ServiceImpl<UserCardMapper, UserCard> implements UserCardService {
+
+    @Autowired
+    private UserService userService;
+
+    /**
+     * 用户实名认证
+     *
+     * @param param    : 实名认证参数
+     * @param userData : 用户登录信息
+     * @return : 返回结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ResultVO<Boolean> userAuthentication(UserCardUpdateParam param, UserData userData) {
+        String cardId = param.getCardId();
+        String cardName = param.getCardName();
+        //todo : 调用阿里的实名认证接口
+        int authentication = 1;
+        UserCard userCard = super.getOne(new LambdaQueryWrapper<UserCard>()
+                .eq(UserCard::getUserId, userData.getUserId()));
+        if (userCard != null) {
+            this.update(new LambdaUpdateWrapper<UserCard>()
+                    .set(UserCard::getCardId, cardId)
+                    .set(UserCard::getCardName, cardName)
+                    .set(UserCard::getUpdateTime, LocalDateTime.now()));
+            return new ResultVO<>(HttpStatusEnum.SUCCESS, Boolean.TRUE);
+        }
+        //新建记录
+        userCard = UserCard.builder()
+                .userId(userData.getUserId())
+                .cardId(cardId)
+                .cardName(cardName)
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build();
+        this.save(userCard);
+        //更新用户信息
+        userService.update(new LambdaUpdateWrapper<User>()
+                .set(User::getAuthentication, authentication)
+                .eq(User::getId, userData.getUserId()));
+        return new ResultVO<>(HttpStatusEnum.SUCCESS, Boolean.TRUE);
+    }
+}

+ 43 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/UserServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.common.enums.HttpStatusEnum;
+import com.zanxiang.common.enums.SmsTypeEnum;
 import com.zanxiang.common.exception.CustomException;
 import com.zanxiang.common.exception.ParamNullException;
 import com.zanxiang.common.utils.GameSignUtil;
@@ -51,6 +52,47 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Autowired
     private SmsService smsService;
 
+    /**
+     * 忘记密码找回
+     *
+     * @param param : 修改密码的参数
+     * @return : 返回修改结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ResultVO<Boolean> findPassword(FindPasswordParam param) {
+        String userName = param.getUserName();
+        String mobile = param.getMobile();
+        String code = param.getCode();
+        String newPassword = param.getNewPassword();
+        //查询用户信息
+        User user = super.getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getUsername, userName));
+        if (user == null) {
+            return new ResultVO<>(HttpStatusEnum.USERNAME_NOT_EXISTS);
+        }
+        if (Strings.isBlank(user.getMobile())) {
+            return new ResultVO<>(HttpStatusEnum.ACCOUNT_NOT_BIND_PHONE);
+        }
+        if (Objects.equals(mobile, user.getMobile())) {
+            return new ResultVO<>(HttpStatusEnum.PHONE_NUM_ERROR);
+        }
+        //验证码校验
+        HttpStatusEnum httpStatusEnum = smsService.smsCheck(SmsTypeEnum.SMS_FIND_PWD.getType(), mobile, code);
+        //验证不通过, 返回
+        if (!Objects.equals(httpStatusEnum, HttpStatusEnum.SUCCESS)) {
+            return new ResultVO<>(httpStatusEnum);
+        }
+        //更新用户密码
+        super.update(new LambdaUpdateWrapper<User>()
+                .set(User::getUpdateTime, LocalDateTime.now())
+                .set(User::getPassword, RegisterUtil.cmfPassword(newPassword))
+                .eq(User::getId, user.getId())
+        );
+        //返回修改成功
+        return new ResultVO<>(HttpStatusEnum.SUCCESS, Boolean.TRUE);
+    }
+
     /**
      * 用户重置密码
      *
@@ -96,9 +138,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     public ResultVO<Boolean> bindPhone(BindPhoneParam param, UserData userData) {
         String code = param.getCode();
         String mobile = param.getMobile();
-        Integer type = param.getType();
         //验证码校验
-        HttpStatusEnum httpStatusEnum = smsService.smsCheck(type, mobile, code);
+        HttpStatusEnum httpStatusEnum = smsService.smsCheck(SmsTypeEnum.SMS_BIND.getType(), mobile, code);
         //验证不通过, 返回
         if (!Objects.equals(httpStatusEnum, HttpStatusEnum.SUCCESS)) {
             return new ResultVO<>(httpStatusEnum);

+ 24 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/UserCardService.java

@@ -0,0 +1,24 @@
+package com.zanxiang.sdk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.common.domain.ResultVO;
+import com.zanxiang.mybatis.entity.UserCard;
+import com.zanxiang.sdk.domain.params.UserCardUpdateParam;
+import com.zanxiang.sdk.domain.params.UserData;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-09-26
+ * @description : 用户实名认证
+ */
+public interface UserCardService extends IService<UserCard> {
+
+    /**
+     * 用户实名认证
+     *
+     * @param param    : 实名认证参数
+     * @param userData : 用户登录信息
+     * @return : 返回结果
+     */
+    ResultVO<Boolean> userAuthentication(UserCardUpdateParam param, UserData userData);
+}

+ 8 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/UserService.java

@@ -14,6 +14,14 @@ import com.zanxiang.sdk.domain.vo.UserVO;
  */
 public interface UserService extends IService<User> {
 
+    /**
+     * 忘记密码找回
+     *
+     * @param param : 修改密码的参数
+     * @return : 返回修改结果
+     */
+    ResultVO<Boolean> findPassword(FindPasswordParam param);
+
     /**
      * 用户重置密码
      *