Browse Source

Merge branch 'add-integral' into 'master'

Add integral



See merge request !12

chenxz 7 years ago
parent
commit
62998e2396
18 changed files with 657 additions and 7 deletions
  1. 21 1
      mooctest-user-server/pom.xml
  2. 54 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/configure/WechatConfiguration.java
  3. 15 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/WechatUserConstants.java
  4. 71 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/data/Token.java
  5. 33 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/data/UserInfo.java
  6. 2 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserMapper.java
  7. 31 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserWechatMapper.java
  8. 23 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/UserWechat.java
  9. 31 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/WechatRPC.java
  10. 22 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/WechatService.java
  11. 45 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/WechatServiceImpl.java
  12. 129 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/HttpClientUtils.java
  13. 68 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/WechatUtil.java
  14. 2 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java
  15. 18 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/WechatLogic.java
  16. 1 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java
  17. 85 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/WechatLogicImpl.java
  18. 6 5
      mooctest-user-server/src/main/resources/application.yaml

+ 21 - 1
mooctest-user-server/pom.xml

@@ -24,7 +24,7 @@
         <dependency>
             <groupId>cn.iselab.mooctest</groupId>
             <artifactId>user-dubbo-api</artifactId>
-            <version>1.0.17</version>
+            <version>1.0.20</version>
         </dependency>
         <dependency>
             <groupId>org.mybatis.spring.boot</groupId>
@@ -37,6 +37,11 @@
             <version>0.0.1</version>
         </dependency>
         <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
             <version>${spring.boot.version}</version>
@@ -171,6 +176,21 @@
             <artifactId>disruptor</artifactId>
             <version>3.3.2</version>
         </dependency>
+        <dependency>
+            <groupId>net.dongliu</groupId>
+            <artifactId>requests</artifactId>
+            <version>4.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.iselab</groupId>
+            <artifactId>ronglian-sms</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.4.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 54 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/configure/WechatConfiguration.java

@@ -0,0 +1,54 @@
+package cn.iselab.mooctest.user.configure;
+
+import cn.iselab.mooctest.user.data.Token;
+import cn.iselab.mooctest.user.util.WechatUtil;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import java.util.Hashtable;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午4:35 2018/4/2
+ * @Modified By:
+ */
+@ConfigurationProperties(prefix="wechat")
+@Scope(value = "prototype")
+@Component
+public class WechatConfiguration {
+
+    private String appId;
+
+    private String appSecret;
+
+    private Token token;
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getAppSecret() {
+        return appSecret;
+    }
+
+    public void setAppSecret(String appSecret) {
+        this.appSecret = appSecret;
+    }
+
+    public Token getToken(String code) {
+        if (appId != null && appSecret != null) {
+            token = WechatUtil.getToken(appId, appSecret, code);
+        }
+        return token;
+    }
+
+    public void setToken(Token token) {
+        this.token = token;
+    }
+}

+ 15 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/constants/WechatUserConstants.java

@@ -0,0 +1,15 @@
+package cn.iselab.mooctest.user.constants;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午10:55 2018/4/17
+ * @Modified By:
+ */
+public class WechatUserConstants {
+
+
+    public final static int NEW=0;
+
+    public final static int OLD=1;
+}

+ 71 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/data/Token.java

@@ -0,0 +1,71 @@
+package cn.iselab.mooctest.user.data;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午4:38 2018/4/2
+ * @Modified By:
+ */
+public class Token {
+
+    // 接口访问凭证
+    private String accessToken;
+    // 凭证有效期,单位:秒
+    private int expiresIn;
+    private Long createTime;
+
+    private String refresh_token;
+
+    private String openId;
+
+    public Token() {
+        createTime = System.currentTimeMillis();
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public int getExpiresIn() {
+        return expiresIn;
+    }
+
+    public void setExpiresIn(int expiresIn) {
+        this.expiresIn = expiresIn;
+    }
+
+    public boolean isValid() {
+        if ((System.currentTimeMillis() - createTime) < (expiresIn - 100) * 1000) {
+            return true;
+        }
+        return false;
+    }
+
+    public String getRefresh_token() {
+        return refresh_token;
+    }
+
+    public void setRefresh_token(String refresh_token) {
+        this.refresh_token = refresh_token;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+}

+ 33 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/data/UserInfo.java

@@ -0,0 +1,33 @@
+package cn.iselab.mooctest.user.data;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午8:57 2018/4/2
+ * @Modified By:
+ */
+@Data
+public class UserInfo {
+
+    private String openid;
+
+    private String nickname;
+
+    private String sex;
+
+    private String headimgurl;
+
+    private String unionid;
+
+    private String country;
+
+    private String province;
+
+    private List<String> privilege;
+
+    private String city;
+}

+ 2 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserMapper.java

@@ -2,6 +2,7 @@ package cn.iselab.mooctest.user.mapper;
 
 import cn.iselab.mooctest.user.model.User;
 import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
@@ -14,7 +15,7 @@ import java.util.List;
 public interface UserMapper {
 
     @Select("SELECT * FROM user WHERE id = #{id}")
-    User findById(Long id);
+    User findById(@Param("id")Long id);
 
     @Select("SELECT * FROM user WHERE email = #{email}")
     User findByEmail(String email);

+ 31 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/mapper/UserWechatMapper.java

@@ -0,0 +1,31 @@
+package cn.iselab.mooctest.user.mapper;
+
+import cn.iselab.mooctest.user.model.UserWechat;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:01 2018/4/17
+ * @Modified By:
+ */
+@Mapper
+public interface UserWechatMapper {
+
+    @Select("select * from user_wechat where user_id=#{userId}")
+    UserWechat findByUserId(Long userId);
+
+    @Select("select * from user_wechat where open_id=#{openId}")
+    UserWechat findByOpenId(String openId);
+
+    @Select("select * from user_wechat where union_id=#{unionId}")
+    UserWechat findByUnionId(String unionId);
+
+    @Insert("insert into user_wechat(user_id,union_id,open_id,is_delete) values (#{userId},#{unionId},#{openId},#{isDelete})")
+    void save(UserWechat wechat);
+
+    @Insert("update user_wechat set is_delete=#{isDelete}")
+    void update(UserWechat wechat);
+}

+ 23 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/UserWechat.java

@@ -0,0 +1,23 @@
+package cn.iselab.mooctest.user.model;
+
+import lombok.Data;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午10:56 2018/4/17
+ * @Modified By:
+ */
+@Data
+public class UserWechat {
+
+    private long id;
+
+    private long userId;
+
+    private String unionId;
+
+    private String openId;
+
+    private boolean isDelete;
+}

+ 31 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/rpc/WechatRPC.java

@@ -0,0 +1,31 @@
+package cn.iselab.mooctest.user.rpc;
+
+import cn.iselab.mooctest.rpc.user.api.WechatService;
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.rpc.user.data.UserWechatDTO;
+import cn.iselab.mooctest.user.web.logic.WechatLogic;
+import com.alibaba.dubbo.config.annotation.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午3:26 2018/4/17
+ * @Modified By:
+ */
+@Service(version = "1.0.0")
+public class WechatRPC implements WechatService {
+
+    @Autowired
+    WechatLogic wechatLogic;
+
+    @Override
+    public UserWechatDTO loginByCode(String code){
+        return wechatLogic.getUserByCode(code);
+    }
+
+    @Override
+    public UserDTO setUserWechat(UserWechatDTO dto){
+        return wechatLogic.setUserWechat(dto);
+    }
+}

+ 22 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/WechatService.java

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.user.service;
+
+import cn.iselab.mooctest.user.model.UserWechat;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:15 2018/4/17
+ * @Modified By:
+ */
+public interface WechatService {
+
+    UserWechat findByOpenId(String openId);
+
+    UserWechat findByUnionId(String unionId);
+
+    UserWechat findByUserId(Long userId);
+
+    void save(UserWechat wechat);
+
+    void update(UserWechat wechat);
+}

+ 45 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/WechatServiceImpl.java

@@ -0,0 +1,45 @@
+package cn.iselab.mooctest.user.service.impl;
+
+import cn.iselab.mooctest.user.mapper.UserWechatMapper;
+import cn.iselab.mooctest.user.model.UserWechat;
+import cn.iselab.mooctest.user.service.WechatService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:15 2018/4/17
+ * @Modified By:
+ */
+@Service
+public class WechatServiceImpl implements WechatService {
+
+    @Autowired
+    UserWechatMapper wechatMapper;
+
+    @Override
+    public UserWechat findByOpenId(String openId){
+        return wechatMapper.findByOpenId(openId);
+    }
+
+    @Override
+    public UserWechat findByUnionId(String unionId){
+        return wechatMapper.findByUnionId(unionId);
+    }
+
+    @Override
+    public UserWechat findByUserId(Long userId){
+        return wechatMapper.findByUserId(userId);
+    }
+
+    @Override
+    public void save(UserWechat wechat){
+        wechatMapper.save(wechat);
+    }
+
+    @Override
+    public void update(UserWechat wechat){
+        wechatMapper.update(wechat);
+    }
+}

+ 129 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/HttpClientUtils.java

@@ -0,0 +1,129 @@
+package cn.iselab.mooctest.user.util;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.conn.ConnectTimeoutException;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.ssl.TrustStrategy;
+import ytx.org.apache.http.conn.ssl.X509HostnameVerifier;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+import java.io.IOException;
+import java.net.SocketTimeoutException;
+import java.security.GeneralSecurityException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午8:25 2018/4/2
+ * @Modified By:
+ */
+public class HttpClientUtils {
+
+    public static final int connTimeout=10000;
+    public static final int readTimeout=10000;
+    public static final String charset="UTF-8";
+    private static HttpClient client = null;
+
+    static {
+        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
+        cm.setMaxTotal(128);
+        cm.setDefaultMaxPerRoute(128);
+        client = HttpClients.custom().setConnectionManager(cm).build();
+    }
+
+    public static String get(String url, String charset) throws Exception {
+        return get(url, charset, connTimeout, readTimeout);
+    }
+
+    public static String get(String url, String charset, Integer connTimeout,Integer readTimeout)
+            throws ConnectTimeoutException,SocketTimeoutException, Exception {
+
+        HttpClient client = null;
+        HttpGet get = new HttpGet(url);
+        String result = "";
+        try {
+            // 设置参数
+            RequestConfig.Builder customReqConf = RequestConfig.custom();
+            if (connTimeout != null) {
+                customReqConf.setConnectTimeout(connTimeout);
+            }
+            if (readTimeout != null) {
+                customReqConf.setSocketTimeout(readTimeout);
+            }
+            get.setConfig(customReqConf.build());
+
+            HttpResponse res = null;
+
+            if (url.startsWith("https")) {
+                // 执行 Https 请求.
+                client = createSSLInsecureClient();
+                res = client.execute(get);
+            } else {
+                // 执行 Http 请求.
+                client = HttpClientUtils.client;
+                res = client.execute(get);
+            }
+
+            result = IOUtils.toString(res.getEntity().getContent(), charset);
+        } finally {
+            get.releaseConnection();
+            if (url.startsWith("https") && client != null && client instanceof CloseableHttpClient) {
+                ((CloseableHttpClient) client).close();
+            }
+        }
+        return result;
+    }
+
+    private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException {
+        try {
+            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
+                public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+                    return true;
+                }
+            }).build();
+
+            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {
+
+                @Override
+                public boolean verify(String arg0, SSLSession arg1) {
+                    return true;
+                }
+
+                @Override
+                public void verify(String host, SSLSocket ssl)
+                        throws IOException {
+                }
+
+                @Override
+                public void verify(String host, X509Certificate cert)
+                        throws SSLException {
+                }
+
+                @Override
+                public void verify(String host, String[] cns,
+                                   String[] subjectAlts) throws SSLException {
+                }
+
+            });
+
+            return HttpClients.custom().setSSLSocketFactory(sslsf).build();
+
+        } catch (GeneralSecurityException e) {
+            throw e;
+        }
+    }
+
+}

+ 68 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/WechatUtil.java

@@ -0,0 +1,68 @@
+package cn.iselab.mooctest.user.util;
+
+import cn.iselab.mooctest.rpc.user.data.WechatUserInfoDTO;
+import cn.iselab.mooctest.user.data.Token;
+import cn.iselab.mooctest.user.data.UserInfo;
+import com.google.gson.Gson;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 下午4:41 2018/4/2
+ * @Modified By:
+ */
+public class WechatUtil {
+
+    protected final static Logger LOG = LoggerFactory.getLogger(WechatUtil.class);
+
+    public final static String base_url="https://api.weixin.qq.com/sns/";
+
+    public final static String token_url=base_url+"oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
+
+    public final static String refresh_url=base_url+"oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN";
+
+    public final static String user_info_url=base_url+"userinfo?access_token=ACCESS_TOKEN&openid=OPENID";
+
+    public static Token getToken(String appId, String appSecret, String code) {
+        Token token = new Token();
+        String result="";
+        try {
+            String url = token_url.replace("APPID", appId).replace("SECRET", appSecret).replace("CODE", code);
+            result = HttpClientUtils.get(url.toString(), "UTF-8");
+        }catch (Exception e){
+            LOG.error("获取token失败:"+e.getMessage());
+        }
+        JSONObject object=new JSONObject(result);
+        try {
+            System.out.println(object);
+            token.setAccessToken(object.getString("access_token"));
+            token.setExpiresIn(object.getInt("expires_in"));
+            token.setRefresh_token(object.getString("refresh_token"));
+            token.setOpenId(object.getString("openid"));
+        }catch (Exception e){
+            LOG.error("获取token失败 errcode:" + object.getInt("errcode") + " errmsg:" + object.getString("errmsg"));
+        }
+        return token;
+    }
+
+
+
+    public static WechatUserInfoDTO getWxUser(String accessToken, String openid){
+        Gson gson=new Gson();
+        String result="";
+        try {
+            String url = user_info_url.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openid);
+            result = HttpClientUtils.get(url.toString(), "UTF-8");
+        }catch (Exception e){
+            LOG.error("获取token失败:"+e.getMessage());
+        }
+        WechatUserInfoDTO userInfo=gson.fromJson(result,WechatUserInfoDTO.class);
+        System.out.println("openId:"+userInfo.getOpenid());
+        System.out.println("unionId:"+userInfo.getUnionid());
+        System.out.println("nickname:"+userInfo.getNickname());
+        return userInfo;
+    }
+}

+ 2 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.user.web.logic;
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author sean
@@ -27,4 +28,5 @@ public interface UserLogic {
     List<UserDTO> getUserByFuzzyEmail(UserDTO userDTO);
 
     List<UserDTO> getUserByFuzzyNameOrEmail(UserDTO userDTO);
+
 }

+ 18 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/WechatLogic.java

@@ -0,0 +1,18 @@
+package cn.iselab.mooctest.user.web.logic;
+
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.rpc.user.data.UserWechatDTO;
+
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:11 2018/4/17
+ * @Modified By:
+ */
+public interface WechatLogic {
+
+    UserWechatDTO getUserByCode(String code);
+
+    UserDTO setUserWechat(UserWechatDTO dto);
+}

+ 1 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
 
 import java.sql.Timestamp;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author sean

+ 85 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/WechatLogicImpl.java

@@ -0,0 +1,85 @@
+package cn.iselab.mooctest.user.web.logic.impl;
+
+import cn.iselab.mooctest.rpc.user.data.UserDTO;
+import cn.iselab.mooctest.rpc.user.data.UserWechatDTO;
+import cn.iselab.mooctest.rpc.user.data.WechatUserInfoDTO;
+import cn.iselab.mooctest.user.configure.WechatConfiguration;
+import cn.iselab.mooctest.user.constants.WechatUserConstants;
+import cn.iselab.mooctest.user.data.Token;
+import cn.iselab.mooctest.user.data.UserInfo;
+import cn.iselab.mooctest.user.model.User;
+import cn.iselab.mooctest.user.model.UserWechat;
+import cn.iselab.mooctest.user.service.UserService;
+import cn.iselab.mooctest.user.service.WechatService;
+import cn.iselab.mooctest.user.util.WechatUtil;
+import cn.iselab.mooctest.user.web.logic.UserLogic;
+import cn.iselab.mooctest.user.web.logic.WechatLogic;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Author ROKG
+ * @Description
+ * @Date: Created in 上午11:11 2018/4/17
+ * @Modified By:
+ */
+@Service
+public class WechatLogicImpl implements WechatLogic {
+
+    @Autowired
+    WechatConfiguration wechatConfiguration;
+
+    @Autowired
+    UserService userService;
+
+    @Autowired
+    WechatService wechatService;
+
+    @Autowired
+    UserLogic userLogic;
+
+    @Override
+    public UserWechatDTO getUserByCode(String code){
+        UserWechatDTO dto=new UserWechatDTO();
+        Token token=wechatConfiguration.getToken(code);
+        WechatUserInfoDTO userInfo= WechatUtil.getWxUser(token.getAccessToken(),token.getOpenId());
+        UserWechat wechat=wechatService.findByUnionId(userInfo.getUnionid());
+        if (wechat != null && !wechat.isDelete()) {
+            UserDTO userDTO=userLogic.getUserById(wechat.getUserId());
+            dto.setUser(userDTO);
+            dto.setType(UserWechatDTO.OLD);
+            return dto;
+        }else {
+            dto.setUserInfo(userInfo);
+            dto.setType(UserWechatDTO.NEW);
+            return dto;
+        }
+    }
+
+    @Override
+    public UserDTO setUserWechat(UserWechatDTO dto){
+        UserDTO userDTO=dto.getUser();
+        WechatUserInfoDTO userInfoDTO=dto.getUserInfo();
+        UserWechat wechat=wechatService.findByUserId(userDTO.getId());
+        if (wechat != null) {
+            if(wechat.isDelete()){
+                wechat.setDelete(false);
+                wechatService.update(wechat);
+                return userDTO;
+            }else {
+                return userDTO;
+            }
+        }else {
+            wechat=new UserWechat();
+            wechat.setUserId(userDTO.getId());
+            wechat.setUnionId(userInfoDTO.getUnionid());
+            wechat.setOpenId(userInfoDTO.getOpenid());
+            wechat.setDelete(false);
+            wechatService.save(wechat);
+            return userDTO;
+        }
+    }
+}

+ 6 - 5
mooctest-user-server/src/main/resources/application.yaml

@@ -21,6 +21,10 @@ spring:
     # The SQL dialect makes Hibernate generate better SQL for the chosen database
     properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
 
+wechat:
+    appId: wx60f06d61f21804be
+    appSecret: f84db4dc62377926624093b49ac3be1f
+
 ---
 # 开发环境
 spring:
@@ -29,11 +33,11 @@ spring:
         driverClassName: com.mysql.jdbc.Driver
         url: jdbc:mysql://127.0.0.1:3306/mooctest_user?useUnicode=yes&characterEncoding=UTF-8
         username: root
-        password: zhangxin
+        password: cxz6518
 
     dubbo:
         application.name: user-service-provider
-        registry.address: zookeeper://118.178.131.206:2181
+        registry.address: zookeeper://127.0.0.1:2181
         protocol.name: dubbo
         protocol.port: 20900
 #        protocol.host: 127.0.0.1
@@ -45,14 +49,11 @@ spring:
 server:
     port: 8081
 
-
-
 mybatis:
     typeAliasesPackage: cn.iselab.mooctest.user.model
     configuration:
         map-underscore-to-camel-case: true
 
-
 logging.config: classpath:log4j2.yaml
 
 ---