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

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

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