提交 23734aca authored 作者: 吕本才's avatar 吕本才

feat(mp): 完善小程序登录及用户校验逻辑

上级 391ec332
package com.link.hub.controller.mp.query;
import com.link.hub.pojo.mp.vo.MiniProgramOpenIdVO;
import com.link.hub.pojo.mp.vo.MpLoginVo;
import com.link.hub.service.officeAccount.WechatOfficeAccountService;
import com.link.hub.service.weChatMiniProgram.WechatMiniProgramService;
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;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......@@ -24,8 +22,8 @@ public class WechatMiniProgramController {
@Resource
private WechatOfficeAccountService wechatOfficeAccountService;
@PostMapping("/login")
public MiniProgramOpenIdVO getUserInfo(String code) {
MiniProgramOpenIdVO userInfo = wechatMiniProgramService.getUserInfo(code);
public MiniProgramOpenIdVO mpLogin(@RequestBody MpLoginVo vo) {
MiniProgramOpenIdVO userInfo = wechatMiniProgramService.getUserInfo(vo);
return userInfo;
}
......@@ -33,7 +31,7 @@ public class WechatMiniProgramController {
* 是否关注公众号
* @param openid
*/
@GetMapping("/isSubscribe")
@GetMapping("/query/isSubscribe")
public Boolean isSubscribe(String openid) {
return wechatOfficeAccountService.isSubscribe(openid);
}
......
......@@ -5,7 +5,7 @@ import lombok.Data;
@Data
public class MiniProgramOpenIdVO {
private String openid;
private String session_key;
// private String session_key;
private String unionid;
private String token;
private Long userId;
......
package com.link.hub.pojo.mp.vo;
import lombok.Data;
@Data
public class MpLoginVo {
private String code;
// 头像链接
private String avatarUrl;
// 昵称
private String nickname;
}
package com.link.hub.service.weChatMiniProgram;
import com.link.hub.pojo.mp.vo.MiniProgramOpenIdVO;
import com.link.hub.pojo.mp.vo.MpLoginVo;
public interface WechatMiniProgramService {
MiniProgramOpenIdVO getUserInfo(String code);
MiniProgramOpenIdVO getUserInfo(MpLoginVo code);
// Object isSubscribe(String openid);
}
......@@ -43,6 +43,10 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
MpUserDto mpUserDto = new MpUserDto();
mpUserDto.setId(SecurityUtils.getUserId());
WechatMiniProgramUser wechatMiniProgramUser = wechatMiniProgramUserService.queryMiniProgramUserOne(mpUserDto);
// 根据用户id查询小程序的用户信息
if (wechatMiniProgramUser == null) {
throw new IllegalArgumentException("用户不存在");
}
String openid = wechatMiniProgramUser.getOpenid();
if (!checkIsSubscribe(openid)) {
throw new IllegalArgumentException("用户未关注公众号");
......
......@@ -7,6 +7,7 @@ import com.link.hub.domain.weChatMiniProgram.entity.WechatMiniProgramUser;
import com.link.hub.pojo.mp.dto.MpOpenIdDTO;
import com.link.hub.pojo.mp.dto.MpUserDto;
import com.link.hub.pojo.mp.vo.MiniProgramOpenIdVO;
import com.link.hub.pojo.mp.vo.MpLoginVo;
import com.link.hub.service.weChatMiniProgram.WechatMiniProgramService;
import com.link.hub.service.weChatMiniProgram.WechatMiniProgramUserService;
import com.sfa.common.core.constant.SecurityConstants;
......@@ -40,7 +41,9 @@ public class WechatMiniProgramServiceServiceImpl implements WechatMiniProgramSer
private Long expireTime;
@Override
public MiniProgramOpenIdVO getUserInfo(String code) {
public MiniProgramOpenIdVO getUserInfo(MpLoginVo vo) {
String code = vo.getCode();
JSONObject jsonObject = WeChatPlatFormUtils.getOpenid(code, weChatMiniProgramConfig.getAppId(), weChatMiniProgramConfig.getAppSecret());
// 从jsonObject中获取openid
String openid = jsonObject.getString("openid");
......
......@@ -7,7 +7,6 @@ import com.link.hub.domain.weChatMiniProgram.wq.WechatMiniProgramUserWq;
import com.link.hub.pojo.mp.dto.MpOpenIdDTO;
import com.link.hub.pojo.mp.dto.MpUserDto;
import com.link.hub.service.weChatMiniProgram.WechatMiniProgramUserService;
import com.sfa.common.core.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......@@ -35,10 +34,10 @@ public class WechatMiniProgramUserServiceServiceImpl implements WechatMiniProgra
wechatMiniProgramUserWq.setOpenid(mpUserDto.getOpenid());
wechatMiniProgramUserWq.setUserId(mpUserDto.getId());
WechatMiniProgramUser wechatMiniProgramUser = wechatMiniProgramUserDao.queryMiniProgramUserOne(wechatMiniProgramUserWq);
if (wechatMiniProgramUser == null) {
log.error("用户不存在,openid:{},userId:{}", mpUserDto.getOpenid(), mpUserDto.getId());
throw new ServiceException("用户不存在");
}
// if (wechatMiniProgramUser == null) {
// log.error("用户不存在,openid:{},userId:{}", mpUserDto.getOpenid(), mpUserDto.getId());
// throw new ServiceException("用户不存在");
// }
return wechatMiniProgramUser;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论