毕业设计之:宠物日志小程序

本文介绍了如何使用SpringBoot和MyBatis开发一个宠物饲养小程序,通过微信API获取用户的openid并进行授权登录。同时处理新用户注册和已有用户登录,以及使用JWT存储和管理token。
摘要由CSDN通过智能技术生成

写一个宠物饲养的小程序,记录自己宠物的日常,包括喂食、洗澡、称重、疫苗等,可以形成时间轴瀑布流。另外有互动区,可以与其它宠友一起交流饲养心得、分享萌宠的日常。技术栈:SpringBoot、MyBatis、原生小程序。

Gitee源码地址

 

 

由于个人的测试appid是没有获取用户手机号的权限的,但是可以获取到openid,这个ID对于每个用户也是唯一的,因此我们可以通过这个方式模拟小程序授权登录的效果:

@GetMapping("/getopenid")
	public JsonResult getOpenId(String code, HttpServletRequest request) {
        String url = "https://api.weixin.qq.com/sns/jscode2session";
        url += "?appid=你的测试appid";//小程序的appid
        url += "&secret=你的密钥";//appSecret
        url += "&js_code=" + code;
        url += "&grant_type=authorization_code";
        url += "&connect_redirect=1";
        String res = null;
        JsonResult result = new JsonResult();
        try {
	        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
	        // DefaultHttpClient();
	        HttpGet httpget = new HttpGet(url);    //GET方式
	        CloseableHttpResponse response = null;
	        // 配置信息
	        RequestConfig requestConfig = RequestConfig.custom()          // 设置连接超时时间(单位毫秒)
	                .setConnectTimeout(30000)                    // 设置请求超时时间(单位毫秒)
	                .setConnectionRequestTimeout(30000)             // socket读写超时时间(单位毫秒)
	                .setSocketTimeout(30000)                    // 设置是否允许重定向(默认为true)
	                .setRedirectsEnabled(false).build();           // 将上面的配置信息 运用到这个Get请求里
	        httpget.setConfig(requestConfig);                         // 向微信服务器发送Get请求,获取微信用户信息
			response = httpClient.execute(httpget);                   // 从响应模型中获取响应实体
			HttpEntity responseEntity = response.getEntity();
			if (responseEntity != null) {
			    res = EntityUtils.toString(responseEntity);
			    logger.info("WXMP_OPENID获取用户openid响应:"+res);
			}
			// 释放资源
			if (httpClient != null) {
			    httpClient.close();
			}
			if (response != null) {
			    response.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
			return JsonResult.error("500", "获取用openid发生异常");
		}
        JSONObject jo = JSON.parseObject(res);
        String openid = jo.getString("openid");
        logger.info("WXMP_OPENID获取用户openid:"+openid);
        //判断是否新用户,如果是新用户则自动注册插入数据库,否则登录
        User record = new User();
        record.setOpenId(openid);
        User user = userMapper.selectOne(record);
        if(user==null) {
        	//插入新用户
        	user = new User();
        	user.setStatus(1);
        	user.setOpenId(openid);
        	userMapper.insertSelective(user);//插入数据库
        }
        //将openid存入token中
        String token = jwtConfig.createToken(openid);
        if (!StringUtils.isEmpty(token)) {
            jo.put("token",token) ;
        }
        jo.put("user", user);
        result.setData(jo);
        return result;
	}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值