Forráskód Böngészése

健康小屋- 临时需求-免登录

huangzhiyong 6 éve
szülő
commit
0e9cf2627c
17 módosított fájl, 886 hozzáadás és 25 törlés
  1. 4 1
      common/common-util/pom.xml
  2. 15 0
      common/common-util/src/main/java/com/yihu/jw/util/http/AllowAllHostnameVerifier.java
  3. 100 0
      common/common-util/src/main/java/com/yihu/jw/util/http/CustomTrustClientClientImpl.java
  4. 336 0
      common/common-util/src/main/java/com/yihu/jw/util/http/DefaultClientImpl.java
  5. 54 0
      common/common-util/src/main/java/com/yihu/jw/util/http/HTTPClient.java
  6. 23 0
      common/common-util/src/main/java/com/yihu/jw/util/http/HTTPResponse.java
  7. 155 0
      common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientKit.java
  8. 2 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/constant/LoginInfo.java
  9. 35 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/LoginController.java
  10. 2 1
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java
  11. 6 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/dao/facility/FacilityServerDao.java
  12. 2 2
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/job/ActivatedUserUpdateTask.java
  13. 19 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityServerService.java
  14. 61 21
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityService.java
  15. 65 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/LoginService.java
  16. 1 0
      svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/UserService.java
  17. 6 0
      wlyy-parent-pom/pom.xml

+ 4 - 1
common/common-util/pom.xml

@ -61,6 +61,9 @@
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>
    </dependencies>
</project>

+ 15 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/AllowAllHostnameVerifier.java

@ -0,0 +1,15 @@
package com.yihu.jw.util.http;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
/**
 * @author Air
 * @version 1.0
 * @created 2015.07.02 15:48
 */
public class AllowAllHostnameVerifier implements HostnameVerifier {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
}

+ 100 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/CustomTrustClientClientImpl.java

@ -0,0 +1,100 @@
package com.yihu.jw.util.http;
import okhttp3.OkHttpClient;
import javax.net.ssl.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Collection;
/**
 * 用于非受信证书的HTTPS访问
 *
 * @created Airhead 2016/8/24.
 */
class CustomTrustClientClientImpl extends DefaultClientImpl {
    CustomTrustClientClientImpl() {
        try {
            final TrustManager[] trustManagers = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                        }
                        @Override
                        public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                        }
                        @Override
                        public X509Certificate[] getAcceptedIssuers() {
                            return new X509Certificate[0];
                        }
                    }
            };
            final SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(null, trustManagers, new SecureRandom());
            SSLSocketFactory socketFactory = sslContext.getSocketFactory();
            OkHttpClient httpClient = new OkHttpClient.Builder()
                    .sslSocketFactory(socketFactory, (X509TrustManager) trustManagers[0])
                    .hostnameVerifier(new AllowAllHostnameVerifier()).build();
            setHttpClient(httpClient);
        } catch (NoSuchAlgorithmException | KeyManagementException e) {
            e.printStackTrace();
        }
    }
    CustomTrustClientClientImpl(String path, String password) {
        try {
            InputStream inputStream = new FileInputStream(new File(path));
            CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
            Collection<? extends Certificate> certificates = certificateFactory.generateCertificates(inputStream);
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            InputStream in = null;
            keyStore.load(in, password.toCharArray());
            int index = 0;
            for (Certificate certificate : certificates) {
                String certificateAlias = Integer.toString(index++);
                keyStore.setCertificateEntry(certificateAlias, certificate);
            }
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyManagerFactory.init(keyStore, password.toCharArray());
            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
            trustStore.load(inputStream, password.toCharArray());
            trustManagerFactory.init(trustStore);
            TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
            if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509KeyManager)) {
                throw new IllegalStateException("Unexpectd default trust managers:" + Arrays.toString(trustManagers));
            }
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustManagers, new SecureRandom());
            SSLSocketFactory socketFactory = sslContext.getSocketFactory();
            OkHttpClient httpClient = new OkHttpClient.Builder()
                    .sslSocketFactory(socketFactory, (X509TrustManager) trustManagers[0])
                    .hostnameVerifier(new AllowAllHostnameVerifier()).build();
            setHttpClient(httpClient);
        } catch (NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException | KeyManagementException | UnrecoverableKeyException e) {
            e.printStackTrace();
        }
    }
}

+ 336 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/DefaultClientImpl.java

@ -0,0 +1,336 @@
package com.yihu.jw.util.http;
import okhttp3.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
 * @author Airhead
 * @since 2016/8/24.
 */
class DefaultClientImpl implements HTTPClient {
    private static final Log log = LogFactory.getLog(DefaultClientImpl.class);
    private OkHttpClient httpClient;
    DefaultClientImpl() {
        this.httpClient = new OkHttpClient.Builder().connectTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS).build();
    }
    public HTTPResponse get(String url) {
        return get(url, null);
    }
    public HTTPResponse get(String url, Map<String, String> params) {
        return get(url, params, null);
    }
    public HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers) {
        try {
            Request.Builder builder = new Request.Builder();
            if (headers != null) {
                builder.headers(Headers.of(headers));
            }
            Request request = builder
                    .url(formatURL(url, params))
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            // ?? 怎么把异常处理了??  应该交由调用者处理
            ex.printStackTrace();
            log.error(ex.getMessage());
            return new HTTPResponse(417,ex.getMessage());
        }
    }
    public HTTPResponse post(String url) {
        return post(url, (Map<String, String>) null);
    }
    public HTTPResponse post(String url, Map<String, String> params) {
        return post(url, params, null);
    }
    public HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers) {
        try {
            FormBody.Builder fromBodyBuilder = new FormBody.Builder();
            if (params != null) {
                params.forEach(fromBodyBuilder::add);
            }
            RequestBody requestBody = fromBodyBuilder
                    .build();
            Request.Builder builder = new Request.Builder();
            if (headers != null) {
                builder.headers(Headers.of(headers));
            }
            Request request = builder
                    .url(url)
                    .post(requestBody)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            //讲异常信息返回,交由调用者处理
            log.error(ex.getMessage());
            return new HTTPResponse(417,ex.getMessage());
        }
    }
    @Override
    public HTTPResponse post(String url, String json, Map<String, String> headers) {
        try {
            Request.Builder builder = new Request.Builder();
            if (headers != null) {
                builder.headers(Headers.of(headers));
            }
            final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            RequestBody body = RequestBody.create(JSON, json);
            Request request = builder
                    .url(url)
                    .post(body)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse postFile(String url, String path) {
        return postFile(url, path, null);
    }
    public HTTPResponse postFile(String url, String path, Map<String, String> params) {
        return postFile(url, path, params, null);
    }
    public HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers) {
        try {
            File file = new File(path);
            final MediaType type = MediaType.parse("application/zip");
            Request.Builder requestBuilder = new Request.Builder();
            if (headers != null) {
                requestBuilder.headers(Headers.of(headers));
            }
            MultipartBody.Builder multipartBuilder = new MultipartBody.Builder();
            multipartBuilder.setType(MultipartBody.FORM)
                    .addFormDataPart("pack", file.getName(), RequestBody.create(type, file));
            for (String key : params.keySet()) {
                multipartBuilder.addFormDataPart(key, params.get(key));
            }
            Request request = requestBuilder
                    .url(url)
                    .post(multipartBuilder.build())
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    @Override
    public HTTPResponse postFile(String url, String key, String path, String contentType) {
        try {
            File file = new File(path);
            final MediaType type = MediaType.parse(contentType);
            Request.Builder requestBuilder = new Request.Builder();
            MultipartBody.Builder multipartBuilder = new MultipartBody.Builder();
            multipartBuilder.setType(MultipartBody.FORM)
                    .addFormDataPart(key, file.getName(), RequestBody.create(type, file));
            Request request = requestBuilder
                    .url(url)
                    .post(multipartBuilder.build())
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse put(String url) {
        return put(url, (Map<String, String>) null);
    }
    public HTTPResponse put(String url, Map<String, String> params) {
        return put(url, params, null);
    }
    @Override
    public HTTPResponse put(String url, String json) {
        try {
            final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            RequestBody body = RequestBody.create(JSON, json);
            Request request = new Request.Builder()
                    .url(url)
                    .put(body)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            ex.printStackTrace();
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers) {
        try {
            FormBody.Builder fromBodyBuilder = new FormBody.Builder();
            if (params != null) {
                params.forEach(fromBodyBuilder::add);
            }
            RequestBody requestBody = fromBodyBuilder
                    .build();
            Request.Builder builder = new Request.Builder();
            if (headers != null) {
                builder.headers(Headers.of(headers));
            }
            Request request = builder
                    .url(url)
                    .put(requestBody)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse delete(String url) {
        return delete(url, (Map<String, String>) null);
    }
    public HTTPResponse delete(String url, Map<String, String> params) {
        return delete(url, params, null);
    }
    @Override
    public HTTPResponse delete(String url, String json) {
        try {
            final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            RequestBody body = RequestBody.create(JSON, json);
            Request request = new Request.Builder()
                    .url(url)
                    .delete(body)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers) {
        try {
            FormBody.Builder fromBodyBuilder = new FormBody.Builder();
            if (params != null) {
                params.forEach(fromBodyBuilder::add);
            }
            RequestBody requestBody = fromBodyBuilder
                    .build();
            Request.Builder builder = new Request.Builder();
            if (headers != null) {
                builder.headers(Headers.of(headers));
            }
            Request request = builder
                    .url(url)
                    .delete(requestBody)
                    .build();
            Response response = httpClient.newCall(request).execute();
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return new HTTPResponse(417, ex.getMessage());
        }
    }
    public HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers) {
        if (method.equals(POST)) {
            return post(url, params, headers);
        }
        if (method.equals(GET)) {
            return get(url, params, headers);
        }
        if (method.equals(PUT)) {
            return put(url, params, headers);
        }
        if (method.equals(DELETE)) {
            return delete(url, params, headers);
        }
        return get(url, params, headers);
    }
    protected void setHttpClient(OkHttpClient okHttpClient) {
        this.httpClient = okHttpClient;
    }
    private String formatURL(String url, Map<String, String> params) {
        if (params == null) {
            return url;
        }
        final String[] query = {""};
        params.forEach((name, value) -> {
            try {
                query[0] += "&" + name + "=" + URLEncoder.encode(value, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("encode url ");
            }
        });
        if (url.contains("?")) {
            return url + query[0];
        }
        return url + "?" + query[0].substring(1);
    }
}

+ 54 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/HTTPClient.java

@ -0,0 +1,54 @@
package com.yihu.jw.util.http;
import java.util.Map;
/**
 * @created Airhead 2016/8/24.
 */
public interface HTTPClient {
    //主要的几种方法,其他的暂时未使用
    String GET = "GET";
    String POST = "POST";
    String PUT = "PUT";
    String DELETE = "DELETE";
    HTTPResponse get(String url);
    HTTPResponse get(String url, Map<String, String> params);
    HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse post(String url);
    HTTPResponse post(String url, Map<String, String> params);
    HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse post(String url, String json, Map<String, String> headers);
    HTTPResponse postFile(String url, String path);
    HTTPResponse postFile(String url, String path, Map<String, String> params);
    HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers);
    HTTPResponse postFile(String url, String key, String path, String contentType);
    HTTPResponse put(String url);
    HTTPResponse put(String url, Map<String, String> params);
    HTTPResponse put(String url, String json);
    HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse delete(String url);
    HTTPResponse delete(String url, Map<String, String> params);
    HTTPResponse delete(String url, String json);
    HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers);
}

+ 23 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/HTTPResponse.java

@ -0,0 +1,23 @@
package com.yihu.jw.util.http;
/**
 * @created Airhead 2016/8/24.
 */
public class HTTPResponse {
    private final int statusCode;// e.g. 200
    private final String body;
    public HTTPResponse(int statusCode, String body) {
        this.statusCode = statusCode;
        this.body = body;
    }
    public int getStatusCode() {
        return statusCode;
    }
    public String getBody() {
        return body;
    }
}

+ 155 - 0
common/common-util/src/main/java/com/yihu/jw/util/http/HttpClientKit.java

@ -0,0 +1,155 @@
package com.yihu.jw.util.http;
import javafx.util.Pair;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import java.util.HashMap;
import java.util.Map;
/**
 * @created Airhead 2016/8/24.
 */
public class HttpClientKit {
    private static Map<String, Pair<String, String>> keyStoreMap = new HashMap<>();
    private static Map<String, SSLConnectionSocketFactory> keyStoreSSLMap = new HashMap<>();
    /**
     * 用于HTTP和受信HTTPS
     *
     * @return
     */
    public static HTTPClient use() {
        return new DefaultClientImpl();
    }
    /**
     * 用于非受信HTTPS
     *
     * @param host host正常情况是不需要包含端口号的。
     *             但在非域名(或开发)时,不同的端口会使用不同证书,
     *             在添加host时,可以增加端口号
     *             格式:
     *             1.ip:port
     *             2.domain
     * @return
     */
    public static HTTPClient custom(String host) {
        if (host != null) {
            Pair<String, String> keyStore = keyStoreMap.get(host);
            if (keyStore != null) {
                return new CustomTrustClientClientImpl(keyStore.getKey(), keyStore.getValue());
            }
        }
        return new CustomTrustClientClientImpl();
    }
    public static void addKeyStore(String host, String file, String password) throws Exception {
        keyStoreMap.put(host, new Pair<>(file, password));
    }
    public static void addKeyStoreSSL(String host, SSLConnectionSocketFactory sslConnectionSocketFactory) throws Exception {
        keyStoreSSLMap.put(host, sslConnectionSocketFactory);
    }
    public static HTTPResponse get(String url) {
        return use().get(url);
    }
    public static HTTPResponse get(String url, Map<String, String> params) {
        return use().get(url, params);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers) {
        return use().get(url, params, headers);
    }
    public static HTTPResponse post(String url) {
        return use().post(url);
    }
    public static HTTPResponse post(String url, Map<String, String> params) {
        return use().post(url, params);
    }
    public static HTTPResponse post(String url, String json) {
        return use().post(url, json, null);
    }
    public static HTTPResponse post(String url, String json, Map<String, String> headers) {
        return use().post(url, json, headers);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers) {
        return use().post(url, params, headers);
    }
    public static HTTPResponse postFile(String url, String path) {
        return use().postFile(url, path);
    }
    public static HTTPResponse postFile(String url, String path, Map<String, String> params) {
        if (url.startsWith("https")) {
            return custom(url).postFile(url, path, params);
        } else {
            return use().postFile(url, path, params);
        }
    }
    public static HTTPResponse postFile(String url, String key, String path, String contentType) {
        if (url.startsWith("https")) {
            return custom(url).postFile(url, key, path, contentType);
        } else {
            return use().postFile(url, key, path, contentType);
        }
    }
    public static HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers) {
        if (url.startsWith("https")) {
            return custom(url).postFile(url, path, params, headers);
        } else {
            return use().postFile(url, path, params, headers);
        }
    }
    public static HTTPResponse put(String url) {
        return use().put(url);
    }
    public static HTTPResponse put(String url, Map<String, String> params) {
        return use().put(url, params);
    }
    public static HTTPResponse put(String url, String json) {
        return use().put(url, json);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers) {
        return use().put(url, params, headers);
    }
    public static HTTPResponse delete(String url) {
        return use().delete(url);
    }
    public static HTTPResponse delete(String url, Map<String, String> params) {
        return use().delete(url, params);
    }
    public static HTTPResponse delete(String url, String json) {
        return use().delete(url, json);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers) {
        return use().delete(url, params, headers);
    }
    public static HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers) {
        if (url.startsWith("https")) {
            return custom(url).request(method, url, params, headers);
        } else {
            return use().request(method, url, params, headers);
        }
    }
}

+ 2 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/constant/LoginInfo.java

@ -17,6 +17,8 @@ public class LoginInfo {
    //用户创建
    public static final String SAVE_TYPE_IJK = "ijkLogin";  //i健康登录注册
    public static final String SAVE_TYPE_PHONE = "phoneLogin";//手机登录注册
    public static final String SAVE_TYPE_IDCARDNO= "idCardNoLogin";  //身份证登录注册
    //用户类型
    public static final String USER_TYPE_PATIENT = "patient";//居民

+ 35 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/LoginController.java

@ -127,6 +127,41 @@ public class LoginController extends EnvelopRestEndpoint {
        }
    }
    @PostMapping("/idCard/register")
    @ApiOperation(value = "【普通用户】-身份证认证注册")
    public Envelop idCardNoRegister(
            HttpServletRequest request,
            @ApiParam(name = "name", value = "用户姓名", required = true) @RequestParam(required = true, name = "name") String name,
            @ApiParam(name = "idCardNo", value = "身份证号码", required = true) @RequestParam(required = true, name = "idCardNo") String idCardNo) {
        try {
            loginService.idCardRegister(request,name, idCardNo);
        } catch (ManageException e) {
            return failed(e.getMessage());
        }
        return success("用户认证完成!");
    }
    @PostMapping("/idCard/login")
    @ApiOperation(value = "【普通用户】-身份证登录")
    public Envelop idCardLogin(
            HttpServletRequest request,
            @ApiParam(name = "username", value = "账号", required = true) @RequestParam(required = true, name = "username") String username,
            @ApiParam(name = "password", value = "密码", required = true) @RequestParam(required = true, name = "password") String password) {
        User user = null;
        try {
            user = loginService.idCardlogin(request, username, password);
        } catch (ManageException e) {
            failed(e.getMessage());
        }
        if (user != null) {
            return success("登录成功", user);
        } else {
            return failed("登录失败");
        }
    }
    @PostMapping("/loginout")
    @ApiOperation(value = "登出")
    public Envelop loginout(

+ 2 - 1
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java

@ -462,7 +462,7 @@ public class FacilitiesController extends EnvelopRestEndpoint {
    @PostMapping(value = "/demoImport")
    @ApiOperation(value = "模拟导入设施")
    @ApiOperation(value = "导入设施列表临时接口")
    public Envelop demoImport(
            @ApiParam(name = "file", value = "文件", required = true)
            @RequestPart(value = "file") MultipartFile file,
@ -474,6 +474,7 @@ public class FacilitiesController extends EnvelopRestEndpoint {
            List<Map<String,String>> dataList = excelReader.getCorrectLs();
            if (dataList.size() > 0) {
                //TODO 导入
                facilityService.batchInsertDemo(dataList);
                System.out.println(dataList);
                return success("导入成功!");
            }

+ 6 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/dao/facility/FacilityServerDao.java

@ -3,6 +3,8 @@ package com.yihu.jw.healthyhouse.dao.facility;
import com.yihu.jw.healthyhouse.model.facility.FacilityServer;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
 * 设施服务dao
 * @author zdm
@ -12,5 +14,9 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface FacilityServerDao extends JpaRepository<FacilityServer, Long> {
    FacilityServer findById(String id);
    FacilityServer findByCode(String code);
    List<FacilityServer> findByNameIn(List<String> name);
}

+ 2 - 2
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/job/ActivatedUserUpdateTask.java

@ -21,7 +21,7 @@ import java.util.*;
 * Task - 定时检查集群状态,提高解析任务容错率
 * Created by progr1mmer on 2017/12/15.
 */
//@Component
@Component
public class ActivatedUserUpdateTask {
    @Autowired
@ -29,7 +29,7 @@ public class ActivatedUserUpdateTask {
    @Autowired
    private UserService userService;
    @Scheduled(cron = "0/40 * * * * ?")
    @Scheduled(cron = "0/30 * * * * ?")
    private void startTask() {
        List<String> keys = new ArrayList<>();
        String pattern = "healthyHouse:*:activated";

+ 19 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityServerService.java

@ -31,5 +31,24 @@ public class FacilityServerService extends BaseJpaService<FacilityServer, Facili
        return  facilityServerDao.findById(id);
    }
    public List<FacilityServer> findByNameIn (List<String> names) {
       return facilityServerDao.findByNameIn(names);
    }
    /**
     * 设施服务编码生成
     *
     * @return
     */
    public String genFacilityServerCode() {
        String code = "HFHS" + randomString(5);
        FacilityServer facility = facilityServerDao.findByCode(code);
        while (facility != null) {
            code = "HFHS" + randomString(5);
            facility = facilityServerDao.findByCode(code);
        }
        return code;
    }
}

+ 61 - 21
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityService.java

@ -1,15 +1,19 @@
package com.yihu.jw.healthyhouse.service.facility;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.healthyhouse.dao.facility.FacilityDao;
import com.yihu.jw.healthyhouse.dao.facility.FacilityServerRelationDao;
import com.yihu.jw.healthyhouse.model.facility.Facility;
import com.yihu.jw.healthyhouse.model.facility.FacilityServer;
import com.yihu.jw.healthyhouse.model.facility.FacilityServerRelation;
import com.yihu.jw.healthyhouse.service.area.BaseCityService;
import com.yihu.jw.healthyhouse.service.area.BaseTownService;
import com.yihu.jw.healthyhouse.service.dict.SystemDictEntryService;
import com.yihu.jw.healthyhouse.util.RestTemplateUtil;
import com.yihu.jw.healthyhouse.util.facility.msg.FacilityMsg;
import com.yihu.jw.healthyhouse.util.poi.ExcelUtils;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.util.http.HTTPResponse;
import com.yihu.jw.util.http.HttpClientKit;
import com.yihu.mysql.query.BaseJpaService;
import jxl.write.Colour;
import jxl.write.WritableCellFormat;
@ -19,20 +23,15 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * 设施管理器.
@ -53,6 +52,10 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
    private BaseTownService baseTownService;
    @Autowired
    private SystemDictEntryService systemDictEntryService;
    @Autowired
    private FacilityServerService facilityServerService;
    @Autowired
    private FacilityServerRelationDao facilityServerRelationDao;
@ -110,10 +113,6 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xlsx");
            OutputStream os = response.getOutputStream();
            //获取导出数据集
            JSONObject order = new JSONObject();
            order.put("id", "asc");
            //写excel
            Workbook workbook = new XSSFWorkbook();
            int k = 0;
@ -285,11 +284,12 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
    /**
     *  //TODO 临时方法
     * 批量导入设施的集合
     *
     * @param facilities 设施列表
     */
    public Map<String, Object> batchInsertDemo(List<Map<String,String> > facilities) throws ManageException {
    public Map<String, Object> batchInsertDemo(List<Map<String,String> > facilities) throws ManageException, IOException {
        Map<String, Object> result = new HashMap<>();
        //批量存储的集合
        int correctCount = 0;
@ -316,8 +316,33 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
                facility.setAddress(facilityMsg.get("address"));
            }
            facility.setStatus("0");
            facility.setDeleteFlag("0");
            getLatAndlon(facility);//获取经纬度
            //已添加过的经纬度不再次导入
            if (isHasFacility(facility.getLongitude(), facility.getLatitude())) {
                errors.add(facility);
            } else {
                //获取设施服务
                String servies = facilityMsg.get("service");
                String[] serviceArr= servies.split("、");
                List<FacilityServer> facilityServers = facilityServerService.findByNameIn(Arrays.asList(serviceArr));
                if (facilities!=null ){
                    List<FacilityServerRelation> relations = new ArrayList<>();
                    for (FacilityServer facilityServer : facilityServers) {
                        //遍历添加设施项目
                        FacilityServerRelation relation = new FacilityServerRelation();
                        relation.setFacilitieCode(facility.getCode());
                        relation.setFacilitieName(facility.getName());
                        relation.setServiceCode(facilityServer.getCode());
                        relation.setServiceName(facilityServer.getName());
                        relation.setServiceName(facilityServer.getName());
                        relations.add(relation);
                    }
                    facilityServerRelationDao.save(relations);
                }
                corrects.add(facility);
            }
            if (corrects.size() > 100) {
                facilityDao.save(corrects);
@ -335,12 +360,27 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
        return result;
    }
    public Envelop getLatAndlon(String address) {
        Map<String ,String> map = new HashMap<>();
        String url = "http://api.map.baidu.com/geocoder/v2/?address="+ address + "&output=json&ak=465443b4e84fb6823359e5921915e8dc&callback=showLocation";
        RestTemplateUtil restTemplateUtil = new RestTemplateUtil(url,null);
        Envelop envelop = restTemplateUtil.exchange(url, HttpMethod.GET, Envelop.class,map);
        return envelop;
    /**
     *  //TODO  临时方法
     * 获取经纬度
     * @param facility
     * @throws IOException
     */
    public void getLatAndlon(Facility facility) throws IOException {
        String url = "http://api.map.baidu.com/geocoder/v2/?address="+ facility.getAddress() + "&output=json&ak=465443b4e84fb6823359e5921915e8dc";
        HTTPResponse httpResponse = HttpClientKit.get(url);
        if (httpResponse.getStatusCode() == 200) {
            String result = httpResponse.getBody();
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String,Object> map = objectMapper.readValue(result,Map.class);
            Map result1 = (Map) map.get("result");
            Map<String,Double> location = (Map<String, Double>) result1.get("location");
            facility.setLatitude(location.get("lat"));
            facility.setLongitude(location.get("lng"));
            System.out.println(result);
        }
    }
}

+ 65 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/LoginService.java

@ -8,6 +8,7 @@ import com.yihu.jw.healthyhouse.constant.LoginInfo;
import com.yihu.jw.healthyhouse.constant.UserConstant;
import com.yihu.jw.healthyhouse.model.user.User;
import com.yihu.jw.restmodel.wlyy.HouseUserContant;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.security.MD5;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
@ -328,4 +329,68 @@ public class LoginService  extends BaseJpaService {
    }
    /**
     *  //TODO 体验版本方法,后续可能删除
     * 身份证登录
     *
     * @param loginCode
     * @param password
     * @return
     * @throws Exception
     */
    @Transactional(noRollbackForClassName = "ManageException")
    public User idCardlogin(HttpServletRequest request, String loginCode, String password) throws ManageException {
        //判断登陆信息是否正确
        User user = userService.findByCode(loginCode);
        if (user == null) {
            String message = "账号不存在";
            throw new ManageException(message);
        }
        if (!user.getPassword().equals(MD5.GetMD5Code(password + user.getSalt()))) {
            String message = "密码错误";
            throw new ManageException(message);
        }
        request.getSession().setAttribute(LoginInfo.IS_LOGIN, true);
        request.getSession().setAttribute(LoginInfo.TOKEN, ""); //TODO token是否添加
        request.getSession().setAttribute(LoginInfo.LOGIN_NAME, user.getName());
        request.getSession().setAttribute(LoginInfo.USER_ID, user.getId());
        user.setActivated(HouseUserContant.activated_active);
        user.setLastLoginTime(new Date());
        user= userService.saveOrUpdate(user, LoginInfo.SAVE_TYPE_IDCARDNO);
        return user;
    }
    @Transactional(noRollbackForClassName = "ManageException")
    public User idCardRegister(HttpServletRequest request, String name, String idCardNo) throws ManageException {
        if(!IdCardUtil.cardCodeVerifySimple(idCardNo)){
            throw new ManageException("身份证号格式有误");
        }
        User user = userService.findByLoginCodeAndUserType(idCardNo,LoginInfo.USER_TYPE_PATIENT);
        if (user==null) {
            //新增账号
            user = new User();
            String password = idCardNo.substring(idCardNo.length()-6,idCardNo.length());
            user.setPassword(password);
            user.setLoginCode(idCardNo);
            user.setName(name);
            user.setIdCardNo(idCardNo);
            user.setUserType(LoginInfo.USER_TYPE_PATIENT);
        }
        // 更新身份证验证字段
        user.setRealnameAuthentication(UserConstant.AUTHORIZED);
        user.setName(name);
        request.getSession().setAttribute(LoginInfo.IS_LOGIN, true);
        request.getSession().setAttribute(LoginInfo.TOKEN, ""); //TODO token是否添加
        request.getSession().setAttribute(LoginInfo.LOGIN_NAME, user.getName());
        request.getSession().setAttribute(LoginInfo.USER_ID, user.getId());
        user.setActivated(HouseUserContant.activated_active);
        user.setLastLoginTime(new Date());
        user= userService.saveOrUpdate(user, LoginInfo.SAVE_TYPE_IDCARDNO);
        return user;
    }
}

+ 1 - 0
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/UserService.java

@ -195,6 +195,7 @@ public class UserService extends BaseJpaService<User, UserDao> {
     * @return
     * @throws ManageException
     */
    @Transactional
    public User saveOrUpdate(User user, String userCode) throws ManageException {
        User loginUser = userDao.findByLoginCode(userCode);
        if (user.getId() == null) {//保存

+ 6 - 0
wlyy-parent-pom/pom.xml

@ -97,6 +97,7 @@
        <version.fastdfs>1.25</version.fastdfs>
        <version.poi>3.17</version.poi>
        <version.jxl>2.6.10</version.jxl>
        <version.okhttp>3.4.1</version.okhttp>
        <!-- Version end -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -298,6 +299,11 @@
                <artifactId>jxl</artifactId>
                <version>${version.jxl}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${version.okhttp}</version>
            </dependency>
            <!--   poi xml导入导出工具 end -->
            <!-- Zipkin 日志追踪 -->