提交 6d4d728d 作者: Administrator

feat : 微信小程序用户 根据微信唯一标识获取手机号码,注册小程序账号

上级 ca409c7b
...@@ -2,11 +2,10 @@ ...@@ -2,11 +2,10 @@
package com.yiring.app.feign; package com.yiring.app.feign;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(url = "api.weixin.qq.com", name = "wxclient") @FeignClient(url = "api.weixin.qq.com", name = "wxclient")
public interface WxClient { public interface WxClient {
...@@ -22,13 +21,10 @@ public interface WxClient { ...@@ -22,13 +21,10 @@ public interface WxClient {
* @date 15:20 * @date 15:20
*/ */
@RequestMapping(value = "/sns/jscode2session", method = RequestMethod.GET) @RequestMapping(value = "/sns/jscode2session", method = RequestMethod.GET)
@ApiImplicitParams( JSONObject getOpenid(
{ @RequestParam("appid") String appid,
@ApiImplicitParam(value = "appid", required = true, name = "appid"), @RequestParam("secret") String secret,
@ApiImplicitParam(value = "secret", required = true, name = "secret"), @RequestParam("js_code") String js_code,
@ApiImplicitParam(value = "js_code", required = true, name = "js_code"), @RequestParam("grant_type") String grant_type
@ApiImplicitParam(value = "grant_type", required = true, name = "grant_type"), );
}
)
JSONObject getOpenid(String appid, String secret, String js_code, String grant_type);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.appUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:40
*/
@ApiModel("AppletUserParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class AppletUserParam implements Serializable {
@Serial
private static final long serialVersionUID = 1684195733142347657L;
@ApiModelProperty(value = "手机号", example = "17674741309", required = true)
@NotEmpty(message = "手机号不能为空")
String mobile;
@ApiModelProperty(value = "微信唯一标识", example = "17674741309", required = true)
@NotEmpty(message = "微信唯一标识不能为空")
String openid;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.appUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:52
*/
@ApiModel("AppletUserQueryParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class AppletUserQueryParam implements Serializable {
@Serial
private static final long serialVersionUID = 1806727740548075365L;
@ApiModelProperty(value = "小程序 appId", example = "1", required = true)
String appid;
@ApiModelProperty(value = "小程序 appSecret", example = "1", required = true)
String secret;
@ApiModelProperty(value = "登录时获取的 code", example = "1", required = true)
String js_code;
@ApiModelProperty(value = "授权类型,此处只需填写 authorization_code", example = "1", required = true)
String grant_type;
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.appletUser; package com.yiring.app.service.appletUser;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
/** /**
...@@ -13,12 +15,18 @@ public interface AppletUserService { ...@@ -13,12 +15,18 @@ public interface AppletUserService {
/** /**
* 根据用户唯一标识获取手机号码,通过手机号码查询用户来访信息分页 * 根据用户唯一标识获取手机号码,通过手机号码查询用户来访信息分页
* @author tzl * @author tzl
* @date 2022/4/24 9:34 * @date 2022/4/28 13:58
* @param appid String * @param appletUserQueryParam
* @param secret String
* @param js_code String
* @param grant_type String
* @return com.yiring.common.core.Result<java.lang.String> * @return com.yiring.common.core.Result<java.lang.String>
*/ */
Result<String> selectMobile(String appid, String secret, String js_code, String grant_type); Result<String> selectMobile(AppletUserQueryParam appletUserQueryParam);
/**
* 小程序注册
* @author tzl
* @date 2022/4/28 13:43
* @param appletUserParam 入参
* @return com.yiring.common.core.Result<java.lang.String>
*/
Result<String> saveAppUser(AppletUserParam appletUserParam);
} }
...@@ -6,10 +6,17 @@ import com.alibaba.fastjson.JSONObject; ...@@ -6,10 +6,17 @@ import com.alibaba.fastjson.JSONObject;
import com.yiring.app.domain.appletUser.AppletUser; import com.yiring.app.domain.appletUser.AppletUser;
import com.yiring.app.domain.appletUser.AppletUserRepository; import com.yiring.app.domain.appletUser.AppletUserRepository;
import com.yiring.app.feign.WxClient; import com.yiring.app.feign.WxClient;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.app.service.appletUser.AppletUserService; import com.yiring.app.service.appletUser.AppletUserService;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* @author Administrator * @author Administrator
...@@ -17,6 +24,9 @@ import javax.annotation.Resource; ...@@ -17,6 +24,9 @@ import javax.annotation.Resource;
* @description: TODO * @description: TODO
* @date 2022/4/24 9:25 * @date 2022/4/24 9:25
*/ */
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class AppletUserServiceImpl implements AppletUserService { public class AppletUserServiceImpl implements AppletUserService {
@Resource @Resource
...@@ -26,18 +36,35 @@ public class AppletUserServiceImpl implements AppletUserService { ...@@ -26,18 +36,35 @@ public class AppletUserServiceImpl implements AppletUserService {
WxClient wxClient; WxClient wxClient;
@Override @Override
public Result<String> selectMobile(String appid, String secret, String js_code, String grant_type) { public Result<String> selectMobile(AppletUserQueryParam appletUserQueryParam) {
JSONObject jsonObject = wxClient.getOpenid(appid, secret, js_code, grant_type); JSONObject jsonObject = wxClient.getOpenid(
appletUserQueryParam.getAppid(),
appletUserQueryParam.getSecret(),
appletUserQueryParam.getJs_code(),
appletUserQueryParam.getGrant_type()
);
Object openid = jsonObject.get("openid"); Object openid = jsonObject.get("openid");
if (StrUtil.isNotBlank(openid.toString())) { if (StrUtil.isNotBlank(openid.toString())) {
Optional<AppletUser> optional = appletUserRepository.findById(openid.toString()); Optional<AppletUser> optional = appletUserRepository.findById(openid.toString());
//如果该微信为第一次登录小程序 //如果该微信为第一次登录小程序
if (optional.isEmpty()) { if (optional.isEmpty()) {
return Result.ok("绑定手机号码"); return Result.no(Status.NOT_FOUND);
} }
AppletUser appletUser = optional.get(); AppletUser appletUser = optional.get();
return Result.ok(appletUser.getMobile()); return Result.ok(appletUser.getMobile());
} }
return null; return null;
} }
@Override
public Result<String> saveAppUser(AppletUserParam appletUserParam) {
Integer integer = appletUserRepository.countMobile(appletUserParam.getMobile());
if (integer > 0) {
return Result.no(Status.BAD_REQUEST, "手机号已绑定");
}
AppletUser appletUser = new AppletUser();
BeanUtils.copyProperties(appletUserParam, appletUser);
appletUserRepository.saveAndFlush(appletUser);
return Result.ok();
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.appUser;
import com.yiring.app.param.appUser.AppletUserParam;
import com.yiring.app.param.appUser.AppletUserQueryParam;
import com.yiring.app.service.appletUser.AppletUserService;
import com.yiring.common.core.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author tzl
* @version 1.0
* @description:
* @date 2022/4/28 13:48
*/
@Slf4j
@Validated
@Api(tags = "Map(地图)")
@RestController
@RequestMapping("/map/")
public class AppletUserController {
@Resource
AppletUserService appletUserService;
@ApiOperation("微信绑定手机号码")
@PostMapping("saveAppUser")
public Result<String> saveAppUser(@Valid AppletUserParam appletUserParam) {
return appletUserService.saveAppUser(appletUserParam);
}
@ApiOperation("根据code获取微信用户唯一标识,返回其绑定的手机号码")
@GetMapping("selectMobile")
public Result<String> selectMobile(@Valid AppletUserQueryParam appletUserQueryParam) {
return appletUserService.selectMobile(appletUserQueryParam);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论