java对接微信小程序(登录&获取用户信息)

需求说明:

用户通过小程序登录,进入到平台系统,进行各功能操作;

解决方案:

相关代码:

首先我们需要用到 http工具类 方便后续的接口调用:

import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class HttpClientUtils {
          
   
  
    final static int TIMEOUT = 1000;
 
    final static int TIMEOUT_MSEC = 5 * 1000;   
  
    public static String doPost(String url, Map<String, String> paramMap) throws IOException {
          
   
        // 创建Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String resultString = "";
 
        try {
          
   
            // 创建Http Post请求
            HttpPost httpPost = new HttpPost(url);
 
            // 创建参数列表
            if (paramMap != null) {
          
   
                List<NameValuePair> paramList = new ArrayList<>();
                for (Map.Entry<String, String> param : paramMap.entrySet()) {
          
   
                    paramList.add(new BasicNameValuePair(param.getKey(), param.getValue()));
                }
                // 模拟表单
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
                httpPost.setEntity(entity);
            }
 
            httpPost.setConfig(builderRequestConfig());
 
            // 执行http请求
            response = httpClient.execute(httpPost);
 
            resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
        } catch (Exception e) {
          
   
            throw e;
        } finally {
          
   
            try {
          
   
                response.close();
            } catch (IOException e) {
          
   
                throw e;
            }
        }
 
        return resultString;
    }
  
    private static RequestConfig builderRequestConfig() {
          
   
        return RequestConfig.custom()
                .setConnectTimeout(TIMEOUT_MSEC)
                .setConnectionRequestTimeout(TIMEOUT_MSEC)
                .setSocketTimeout(TIMEOUT_MSEC).build();
    }
}
小程序用户表
CREATE TABLE `wechat_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `nickname` varchar(100) DEFAULT NULL COMMENT 用户昵称,
  `avatar_url` varchar(500) DEFAULT NULL COMMENT 用户头像,
  `gender` int(11) DEFAULT NULL COMMENT 性别  0-未知、1-男性、2-女性,
  `country` varchar(100) DEFAULT NULL COMMENT 所在国家,
  `province` varchar(100) DEFAULT NULL COMMENT 省份,
  `city` varchar(100) DEFAULT NULL COMMENT 城市,
  `mobile` varchar(100) DEFAULT NULL COMMENT 手机号码,
  `open_id` varchar(100) NOT NULL COMMENT 小程序openId,
  `union_id` varchar(100) DEFAULT  COMMENT 小程序unionId,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 插入时间,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,
  PRIMARY KEY (`id`),
  KEY `idx_open_id` (`open_id`),
  KEY `idx_union_id` (`union_id`),
  KEY `idx_mobile` (`mobile`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT=小程序用户表;
dto

主要代码:

controller
mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mmc.aircraftsystemserver.api.wechet.pojo.WechatUser;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface WechatMapper extends BaseMapper<WechatUser> {
          
   

}
impl

注意:

经验分享 程序员 微信小程序 职场和发展