package com.wfuhui.modules.wechat.controller;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import me.chanjar.weixin.common.error.WxErrorException;
import com.wfuhui.common.annotation.AuthIgnore;
import com.wfuhui.web.utils.JwtUtils;
import com.wfuhui.common.utils.R;
import com.wfuhui.modules.member.entity.MemberEntity;
import com.wfuhui.modules.member.service.MemberService;
/**
* 微信小程序用户接口
*/
@RestController
@RequestMapping("/api/wechat")
public class WxMaUserController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private WxMaService wxService;
@Autowired
private MemberService memberService;
@Autowired
private JwtUtils jwtUtils;
/**
* 登陆接口
*/
@AuthIgnore
@GetMapping("login")
public R login(String code) {
if (StringUtils.isBlank(code)) {
return R.error("empty jscode");
}
try {
WxMaJscode2SessionResult session = this.wxService.getUserService().getSessionInfo(code);
this.logger.info(session.getSessionKey());
this.logger.info(session.getOpenid());
//查询用户信息
MemberEntity user = memberService.queryByOpenid(session.getOpenid());
if(user == null) {
String sessionKey = session.getSessionKey();
return R.error(1, "未注册").put("sessionKey", sessionKey);
}
//生成token
String token = jwtUtils.generateToken(user.getId());
Map<String, Object> map = new HashMap<String, Object>();
map.put("token", token);
map.put("userInfo", user);
return R.ok(map);
} catch (Exception e) {
this.logger.error(e.getMessage(), e);
return R.error();
}
}
/**
* 用户注册
*/
@AuthIgnore
@GetMapping("register")
public R register(String avatarUrl, String nickname, String gender, String code) {
try {
String openid = this.wxService.getUserService().getSessionInfo(code).getOpenid();
//查询用户信息
MemberEntity user = memberService.queryByOpenid(openid);
if(user != null) {
return R.ok();
}
//注册
MemberEntity member = new MemberEntity();
member.setAvatarUrl("http://localhost:10001/img/1672730642079.jpg");
member.setOpenid(openid);
member.setNickname(filterUtf8mb4(nickname));
member.setGender(gender);
member.setCreateTime(new Date());
memberService.save(member);
return R.ok();
} catch (WxErrorException e) {
e.printStackTrace();
return R.error();
}
}
public static String filterUtf8mb4(String str) {
final int LAST_BMP = 0xFFFF;
StringBuilder sb = new StringBuilder(str.length());
for (int i = 0; i < str.length(); i++) {
int codePoint = str.codePointAt(i);
if (codePoint < LAST_BMP) {
sb.appendCodePoint(codePoint);
} else {
i++;
}
}
return sb.toString();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于Java+Springboot的电影购票微信小程序带后台管理(源码+数据库).zip (281个子文件)
.gitignore 318B
store.html 7KB
advert.html 5KB
member.html 4KB
user.html 4KB
login.html 4KB
index.html 3KB
WxMaUserController.java 4KB
MovieServiceImpl.java 4KB
OrderServiceImpl.java 3KB
MovieEntity.java 3KB
ShiroConfig.java 3KB
OrderEntity.java 3KB
SessionsEntity.java 3KB
ApiOrderController.java 3KB
SysLoginController.java 3KB
MovieController.java 3KB
ApiUeditorController.java 3KB
CategoryController.java 3KB
OrderController.java 3KB
StatisticsController.java 2KB
SysUserController.java 2KB
ApiCollectController.java 2KB
SysUserEntity.java 2KB
AuthorizationInterceptor.java 2KB
SessionsServiceImpl.java 2KB
OrderEvaluationServiceImpl.java 2KB
WxPayProperties.java 2KB
OrderEvaluationController.java 2KB
StoreController.java 2KB
SysUserServiceImpl.java 2KB
OrderEvaluationEntity.java 2KB
AdvertController.java 2KB
SessionsController.java 2KB
ApiLoginController.java 2KB
IPUtils.java 2KB
HistoryController.java 2KB
StoreEntity.java 2KB
CollectController.java 2KB
JwtUtils.java 2KB
MemberController.java 2KB
MemberEntity.java 2KB
SeatController.java 2KB
SeatEntity.java 2KB
WxPayConfiguration.java 2KB
ApiMovieController.java 2KB
OrderSeatEntity.java 2KB
WxMaProperties.java 2KB
UeditorConfig.java 2KB
ApiEvaluationController.java 2KB
WxMaConfiguration.java 1KB
ApiFileUploadController.java 1KB
OrderMovieEntity.java 1KB
Query.java 1KB
ApiSesssionsController.java 1KB
AdvertEntity.java 1KB
RExceptionHandler.java 1KB
MemberServiceImpl.java 1KB
HistoryEntity.java 1KB
CollectServiceImpl.java 1KB
ApiMemberController.java 1KB
WebMvcConfig.java 1KB
OrderSeatServiceImpl.java 1KB
ApiStoreController.java 1KB
CategoryServiceImpl.java 1KB
ApiHistoryController.java 1KB
CategoryEntity.java 1KB
HistoryServiceImpl.java 1KB
AdvertServiceImpl.java 1KB
CorsConfig.java 1KB
StoreServiceImpl.java 1KB
ApiCategoryController.java 1KB
ShiroUtils.java 1KB
ApiAdvertController.java 1KB
ApiSeatController.java 1KB
SeatServiceImpl.java 1KB
MD5Util.java 1KB
CollectEntity.java 1KB
SysUserService.java 997B
R.java 919B
DateUtils.java 916B
KaptchaConfig.java 866B
RException.java 850B
MoviePicEntity.java 802B
JsonUtils.java 766B
NumberUtil.java 739B
MovieDao.java 671B
OrderService.java 652B
BaseDao.java 624B
MemberService.java 613B
MovieService.java 608B
OrderEvaluationService.java 605B
CollectService.java 580B
CollectDao.java 567B
CategoryService.java 567B
OrderSeatService.java 557B
SessionsService.java 543B
HistoryService.java 541B
StoreService.java 540B
AdvertService.java 514B
共 281 条
- 1
- 2
- 3
资源评论
博士僧小星
- 粉丝: 1907
- 资源: 5877
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的异常姿势识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功