فهرست منبع

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

wangzhinan 7 سال پیش
والد
کامیت
e5523a05de
20فایلهای تغییر یافته به همراه804 افزوده شده و 52 حذف شده
  1. 23 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/wechat/WxOpenidTemp.java
  2. 7 0
      patient-co-manage/wlyy-manage/pom.xml
  3. 27 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/config/FastDFSConfig.java
  4. 44 2
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/healthbank/ActivityController.java
  5. 13 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/healthbank/ActivityService.java
  6. 129 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/fastdfs/FastDFSClientPool.java
  7. 283 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/fastdfs/FastDFSUtil.java
  8. 20 0
      patient-co-manage/wlyy-manage/src/main/resources/config/fdfs_client.conf
  9. 5 5
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_list_js.jsp
  10. 7 1
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_modify.jsp
  11. 35 1
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_modify_js.jsp
  12. 13 13
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SmjkService.java
  13. 2 2
      patient-co-service/wlyy_service/src/main/resources/application.yml
  14. 1 1
      patient-co/patient-co-wlyy/pom.xml
  15. 11 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/wechat/WxOpenidTempDao.java
  16. 14 6
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/bank/TaskService.java
  17. 114 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/weixin/openid/WxOpenidTempService.java
  18. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/health/bank/TaskController.java
  19. 35 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/OpenidController.java
  20. 20 20
      patient-co/patient-co-wlyy/src/main/resources/logback.xml

+ 23 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/wechat/WxOpenidTemp.java

@ -0,0 +1,23 @@
package com.yihu.wlyy.entity.wechat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by Trick on 2018/6/28.
 */
@Entity
@Table(name = "wx_openid_temp")
public class WxOpenidTemp extends IdEntity {
    private String openid;
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
}

+ 7 - 0
patient-co-manage/wlyy-manage/pom.xml

@ -270,6 +270,13 @@
            <artifactId>elasticsearch-sql</artifactId>
            <version>2.4.1.0</version>
        </dependency>
        <!--fastdfs start-->
        <dependency>
            <groupId>org.csource</groupId>
            <artifactId>fastdfs_lib</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--fastdfs end-->
        <!--        <dependency>
                    <groupId>com.yihu</groupId>
                    <artifactId>jave-ffmpegjave</artifactId>

+ 27 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/config/FastDFSConfig.java

@ -0,0 +1,27 @@
package com.yihu.wlyy.config;
import com.yihu.wlyy.util.fastdfs.FastDFSClientPool;
import com.yihu.wlyy.util.fastdfs.FastDFSUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author Sand
 * @version 1.0
 * @created 2018.6.29 16:08
 */
@Configuration
public class FastDFSConfig {
    @Bean
    public FastDFSClientPool fastDFSClientPool(){
        FastDFSClientPool clientPool = FastDFSClientPool.getInstance();
        return clientPool;
    }
    @Bean
    public FastDFSUtil fastDFSUtil(){
        FastDFSUtil util = new FastDFSUtil();
        return util;
    }
}

+ 44 - 2
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/healthbank/ActivityController.java

@ -1,13 +1,25 @@
package com.yihu.wlyy.controller.manager.healthbank;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.wlyy.controller.BaseController;
import com.yihu.wlyy.service.manager.healthbank.ActivityService;
import com.yihu.wlyy.util.fastdfs.FastDFSUtil;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.util.Map;
/**
 * Created by humingfen on 2018/6/19.
@ -16,9 +28,12 @@ import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("admin/activity")
public class ActivityController extends BaseController {
    private Logger logger = LoggerFactory.getLogger(ActivityController.class);
    @Autowired
    private ActivityService activityService;
    @ApiParam
    FastDFSUtil fastDFSUtil;
    @RequestMapping(value = "initial", method = RequestMethod.GET)
    public String initListPage(){
@ -89,7 +104,34 @@ public class ActivityController extends BaseController {
        }
    }
    /*@RequestMapping(value = "delete")
    @RequestMapping(value = "upload", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public String upload(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws Exception {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        String tempPaths = null;
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile mf = entity.getValue();
            InputStream inputStream  = mf.getInputStream();
            String fileName = mf.getOriginalFilename();
            //文件后缀
            String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
            //文件名称
            String newFileName = mf.getOriginalFilename().substring(0,mf.getOriginalFilename().lastIndexOf("."));
            //上传到fastdfs
            ObjectNode imgNode = fastDFSUtil.upload(inputStream, fileExt, newFileName);
            com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(imgNode.toString());
            tempPaths = json.getString("fid");
        }
        JSONObject json = new JSONObject();
        json.put("status", 200);
        json.put("msg", "上传成功");
        // 图片标识对象的HTTP链接
        json.put("urls", tempPaths);
        return json.toString();
    }
    @RequestMapping(value = "delete")
    @ResponseBody
    public String delete(String id) {
        try {
@ -100,5 +142,5 @@ public class ActivityController extends BaseController {
            error(ex);
            return error(-1,"操作失败!");
        }
    }*/
    }
}

+ 13 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/healthbank/ActivityService.java

@ -67,4 +67,17 @@ public class ActivityService {
        }
        return JSONObject.parseObject(response);
    }
    public JSONObject delete(String jsonData) {
        String url = baseUrl + "batchActivity";
        String response = "";
        Map<String,String> params = new HashMap<>();
        params.put("ids",jsonData);
        try {
            response = httpClientUtil.httpPost(url,params);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return JSONObject.parseObject(response);
    }
}

+ 129 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/fastdfs/FastDFSClientPool.java

@ -0,0 +1,129 @@
package com.yihu.wlyy.util.fastdfs;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import java.util.HashMap;
import java.util.Map;
public class FastDFSClientPool {
    private static volatile FastDFSClientPool pool;
    private Map<StorageClient, Boolean> map;
    private int maxPoolSize = 20;
    private int waitTime = 500;
    private int initPoolSize = 5;
    static {
        try {
            String basePath = FastDFSClientPool.class.getResource("/").getPath();
            ClientGlobal.init(FastDFSUtil.class.getResource("/config/fdfs_client.conf").getPath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private FastDFSClientPool() {
        init();
    }
    public static FastDFSClientPool getInstance() {
        if (pool == null) {
            synchronized (FastDFSClientPool.class) {
                if(pool == null) {
                    pool = new FastDFSClientPool();
                }
            }
        }
        System.out.println("FastDFSClientPool:"+pool.toString());
        return pool;
    }
    private void init() {
        try {
            map = new HashMap<StorageClient, Boolean>();
            //不做初始缓存
//            for (int i = 0; i < initPoolSize; i++) {
//                map.put(getNewStorageClient(), true);
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public TrackerServer getTrackerServer(){
        try {
            TrackerClient tracker = new TrackerClient();
            return tracker.getConnection();
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
    private StorageClient getNewStorageClient() {
        try {
            TrackerClient tracker = new TrackerClient();
            TrackerServer trackerServer = tracker.getConnection();
            StorageClient client = new StorageClient(trackerServer, null);
            return client;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public void releaseStorageClient(StorageClient client) {
        if (client == null) {
            return;
        }
        try {
            if(map.containsKey(client)) {
                map.put(client, true);
            } else {
                client =null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public synchronized StorageClient getStorageClient() {
        StorageClient client = null;
        try {
            for (Map.Entry<StorageClient, Boolean> entry : map.entrySet()) {
                if (entry.getValue()) {
                    client = entry.getKey();
                    System.out.println("从缓存中获得fastdfs client");
                    map.put(client, false);
                    break;
                }
            }
            if (client == null) {
                if(map.size()<maxPoolSize) {
                    System.out.println("创建新fastdfs client:");
                    client = getNewStorageClient();
                    map.put(client, false);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return client;
    }
}

+ 283 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/fastdfs/FastDFSUtil.java

@ -0,0 +1,283 @@
package com.yihu.wlyy.util.fastdfs;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.csource.common.MyException;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
/**
 * FastDFS 客户端工具.
 *
 * @author szx
 */
public class FastDFSUtil {
    public final static String GroupField = "groupName";
    public final static String RemoteFileField = "remoteFileName";
    public final static String FileIdField = "fid";
    public final static String FileUrlField = "fileUrl";
//    static TrackerClient tracker;
//    static TrackerServer trackerServer;
//    static StorageServer storageServer;
//    static StorageClient client;
//
//    static {
//        try {
//            XEnvironmentOption environmentOption = ServiceFactory.getService(Services.EnvironmentOption);
//            String basePath = FastDFSUtil.class.getResource("/").getPath();
//            String configFile = basePath + environmentOption.getOption(EnvironmentOptions.FastDFSConfig);
//
//            ClientGlobal.init(configFile);
//
//            tracker = new TrackerClient();
//            trackerServer = tracker.getConnection();
//            storageServer = null;
//            client = new StorageClient(trackerServer, storageServer);
//        } catch (FileNotFoundException e) {
//            LogService.getLogger(FastDFSUtil.class).fatal("FastDFS配置文件打开失败: " + e.getMessage());
//        } catch (IOException e) {
//            LogService.getLogger(FastDFSUtil.class).fatal("FastDFS初始化失败: " + e.getMessage());
//        } catch (MyException e) {
//            LogService.getLogger(FastDFSUtil.class).fatal("FastDFS初始化失败: " + e.getMessage());
//        }
//    }
    final static int BUFFER_SIZE = 4096;
    /**
     * 以输入流的方式上传文件
     * InputStream in = new FileInputStream("C://Desert.jpg");
     * ObjectNode msg = FileUtil.upload(in,"jpg", "沙漠");
     * in.close();
     *
     * @param in                输入流
     * @param fileExtension   文件扩展名,不要带“.”
     * @param description             文件名称(中文)
     * @return 返回值的格式如下:
     * {
     *      "groupName": "healthArchiveGroup",
     *      "remoteFileName": "/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg",
     *      "fid": "group1/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg",
     *      "fileURL": "http://172.19.103.13/healthArchiveGroup/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg"
     * }
     *
     * groupName 及 remoteFileName 可以用于查询在 fastDFS 中文件的信息,如果只是图片显示,可以忽略这两个值。
     * fid 保存了在 fastDFS 上的完整路径,为了避免将来服务器域名发生变更,最好使用本值.服务器的域名另外配置。
     * fileURL 保存了完整的 web 访问路径,为了避免将来服务器域名发生变更,最好不要直接使用本值。
     * 如果需要在下载时,可以显示原始文件名,请在访问file_url时,增加 attname 参数,如:
     *
     * http://host/healthArchiveGroup/M00/00/00/rBFuH1XdIseAUTZZAA1rIuRd3Es062.jpg?attname=a.jpg
     *
     * @throws Exception
     */
    public static ObjectNode upload(InputStream in, String fileExtension,
                                    String description) throws Exception {
        StorageClient client = FastDFSClientPool.getInstance().getStorageClient();
        try {
            NameValuePair[] fileMetaData;
            fileMetaData = new NameValuePair[1];
            fileMetaData[0] = new NameValuePair("description", description == null ? "" : description);
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectNode message = objectMapper.createObjectNode();
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[BUFFER_SIZE]; //buff用于存放循环读取的临时数据
            int rc = 0;
            while ((rc = in.read(buff, 0, BUFFER_SIZE)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            byte[] fileBuffer = swapStream.toByteArray(); //in_b为转换之后的结果
            TrackerServer trackerServer = FastDFSClientPool.getInstance().getTrackerServer();
            String[] results = client.upload_file(fileBuffer, fileExtension, fileMetaData);
            if (results != null) {
                String fileId;
                int ts;
                String token;
                String fileURl;
                InetSocketAddress socketAddress;
                String groupName = results[0];
                String remoteFile = results[1];
                message.put(GroupField, groupName);
                message.put(RemoteFileField, remoteFile);
                fileId = groupName + StorageClient1.SPLIT_GROUP_NAME_AND_FILENAME_SEPERATOR + remoteFile;
                message.put(FileIdField, fileId);
                socketAddress = trackerServer.getInetSocketAddress();
                fileURl = "http://" + socketAddress.getAddress().getHostAddress();
                if (ClientGlobal.g_tracker_http_port != 80) {
                    fileURl += ":" + ClientGlobal.g_tracker_http_port;
                }
                fileURl += "/" + fileId;
                if (ClientGlobal.g_anti_steal_token) {
                    ts = (int) (System.currentTimeMillis() / 1000);
                    token = ProtoCommon.getToken(fileId, ts, ClientGlobal.g_secret_key);
                    fileURl += "?token=" + token + "&ts=" + ts;
                }
                message.put(FileUrlField, fileURl);
                return message;
            } else {
                return null;
            }
        }finally {
            FastDFSClientPool.getInstance().releaseStorageClient(client);
        }
    }
    /**
     * 上传本地文件
     * ObjectNode  a = FileUtil.upload("C://Desert.jpg", "沙漠");
     * System.out.println(a.toString());
     *
     * @param fileName 本地文件的绝对路径,如 C://Desert.jpg
     * @param description    文件备注, 可以为空
     * @return {"groupName":"group1","remoteFileName":"/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg"
     * {
     *      "groupName": "healthArchiveGroup",
     *      "remoteFileName": "/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg",
     *      "fid": "group1/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg",
     *      "fileURL": "http://172.19.103.13/healthArchiveGroup/M00/00/24/rBFuH1XdQC6AP3CDAAzodQCbVVc052.jpg"
     * }
     *
     * groupName 及 remoteFileName 可以用于查询在 fastDFS 中文件的信息,如果只是图片显示,可以忽略这两个值。
     * fid 保存了在 fastDFS 上的完整路径,为了避免将来服务器域名发生变更,最好使用本值.服务器的域名另外配置。
     * fileURL 保存了完整的 web 访问路径,为了避免将来服务器域名发生变更,最好不要直接使用本值。
     * 如果需要在下载时,可以显示原始文件名,请在访问file_url时,增加 attname 参数,如:
     *
     * http://host/healthArchiveGroup/M00/00/00/rBFuH1XdIseAUTZZAA1rIuRd3Es062.jpg?attname=a.jpg
     *
     * @throws Exception
     */
    public static ObjectNode upload(String fileName, String description) throws Exception {
        StorageClient client = FastDFSClientPool.getInstance().getStorageClient();
        try {
            NameValuePair[] meta_list;
            meta_list = new NameValuePair[1];
            meta_list[0] = new NameValuePair("description", description == null ? "" : description);
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectNode message = objectMapper.createObjectNode();
            String fileExtName = "";
            if (fileName.contains(".")) {
                fileExtName = fileName.substring(fileName.lastIndexOf(".") + 1);
            } else {
                throw new RuntimeException("上传失败, 文件缺失扩展名.");
            }
            TrackerServer trackerServer = FastDFSClientPool.getInstance().getTrackerServer();
            String[] results = client.upload_file(fileName, fileExtName, meta_list);
            if (results != null) {
                String fileId;
                int ts;
                String token;
                String fileUrl;
                InetSocketAddress inetSockAddr;
                String groupName = results[0];
                String remoteFileName = results[1];
                message.put(GroupField, groupName);
                message.put(RemoteFileField, remoteFileName);
                fileId = groupName + StorageClient1.SPLIT_GROUP_NAME_AND_FILENAME_SEPERATOR + remoteFileName;
                message.put(FileIdField, fileId);
                inetSockAddr = trackerServer.getInetSocketAddress();
                fileUrl = "http://" + inetSockAddr.getAddress().getHostAddress();
                if (ClientGlobal.g_tracker_http_port != 80) {
                    fileUrl += ":" + ClientGlobal.g_tracker_http_port;
                }
                fileUrl += "/" + fileId;
                if (ClientGlobal.g_anti_steal_token) {
                    ts = (int) (System.currentTimeMillis() / 1000);
                    token = ProtoCommon.getToken(fileId, ts, ClientGlobal.g_secret_key);
                    fileUrl += "?token=" + token + "&ts=" + ts;
                }
                message.put(FileUrlField, fileUrl);
                return message;
            } else {
                return null;
            }
        }finally {
            FastDFSClientPool.getInstance().releaseStorageClient(client);
        }
    }
    /**
     * 下载文件, 返回文件字节数组.
     *
     * @param groupName      在fastdfs上的卷名
     * @param remoteFileName 在fastdfs上的路径
     * @return 文件的字节码
     * @throws Exception
     */
    public static byte[] download(String groupName, String remoteFileName) throws Exception {
        StorageClient client = FastDFSClientPool.getInstance().getStorageClient();
        try {
            byte[] b = client.download_file(groupName, remoteFileName);
            return b;
        }
        finally {
            FastDFSClientPool.getInstance().releaseStorageClient(client);
        }
    }
    /**
     * 下载文件到本地路径上.
     *
     * @param groupName          在 fastDFS 上的卷名
     * @param remoteFileName    在 fastDFS 上的路径
     * @param localPath          本地路径
     *
     * @return 是否下载成功
     */
    public static String download(String groupName, String remoteFileName, String localPath) throws IOException, MyException {
        StorageClient client = FastDFSClientPool.getInstance().getStorageClient();
        try {
            String localFileName = localPath + "\\" + remoteFileName.replaceAll("/", "_");
            client.download_file(groupName, remoteFileName, 0, 0, localFileName);
            return localFileName;
        }finally {
            FastDFSClientPool.getInstance().releaseStorageClient(client);
        }
    }
    /**
     * 删除文件。
     *
     * @param groupName
     * @param remoteFileName
     */
    public static void delete(String groupName, String remoteFileName) throws IOException, MyException {
        StorageClient client = FastDFSClientPool.getInstance().getStorageClient();
        try {
            client.delete_file(groupName, remoteFileName);
        }finally {
            FastDFSClientPool.getInstance().releaseStorageClient(client);
        }
    }
}

+ 20 - 0
patient-co-manage/wlyy-manage/src/main/resources/config/fdfs_client.conf

@ -0,0 +1,20 @@
connect_timeout = 2
network_timeout = 30
charset = ISO8859-1
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
#-------------开发环境---------------#
#tracker_server = 172.19.103.54:22122
#-------------测试环境---------------#
tracker_server = 172.19.103.54:22122
#-------------正式环境---------------#
#外网项目地址
#tracker_server = 192.168.120.172:22122
#网闸
#tracker_server = 59.61.92.90:9055
#内网项目地址
#tracker_server = 10.95.22.139:22122

+ 5 - 5
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_list_js.jsp

@ -112,9 +112,9 @@
                                    <sec:authorize url="/admin/activity/update">
                                    html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "activity:info:edit", row.id) + '">编辑</a>';
                                    </sec:authorize>
                                    <%--<sec:authorize url="/admin/activity/delete">
                                    <sec:authorize url="/admin/activity/delete">
                                    html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "activity:info:del", row.id) + '">删除</a>';
                                    </sec:authorize>--%>
                                    </sec:authorize>
                                    return html;
                                }
                            }
@ -153,7 +153,7 @@
                    $.subscribe('activity:info:view', function (event, id) {
                        var title = '查看信息';
                        self.deviceInfoDialog = $.ligerDialog.open({
                            height: 600,
                            height: 700,
                            width: 560,
                            urlParms: {"id": id, "type": "view"},
                            title: title,
@ -163,7 +163,7 @@
                    $.subscribe('activity:info:edit', function (event, id) {
                        var title = '编辑信息';
                        self.activityInfoDialog = $.ligerDialog.open({
                            height: 600,
                            height: 700,
                            width: 560,
                            urlParms: {"id": id, "type": "edit"},
                            title: title,
@ -174,7 +174,7 @@
                    $.subscribe('activity:info:create', function (event) {
                        var title = '新增活动';
                        self.activityInfoDialog = $.ligerDialog.open({
                            height: 600,
                            height: 700,
                            width: 560,
                            urlParms: {"type": "create"},
                            title: title,

+ 7 - 1
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_modify.jsp

@ -15,7 +15,7 @@
    </style>
</head>
<body>
<div id="div_activity_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" data-role-form>
<div id="div_activity_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" >
    <input type="hidden" id="inp_id" value='${id}' data-attr-scan="id"/>
    <input type="hidden" id="type" value='${type}'/>
    <div class="m-form-group" style="padding:10 0 10 0">
@ -48,6 +48,12 @@
            <input type="text"  id="inp_type" class="f-w240 validate-special-char" data-attr-scan="type"/>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">活动图片</label>
        <div class="l-text-wrapper m-form-control">
            <input type="file"  id="img_upload" class="f-w240 validate-special-char" data-attr-scan="img" accept="image/*" multiple />
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">开始时间</label>
        <div class="l-text-wrapper m-form-control essential">

+ 35 - 1
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/healthbank/activity_modify_js.jsp

@ -20,6 +20,7 @@
            activityInfo = {
                //变量
                $form: $("#div_activity_info_form"),
                $imgUrl: $("#img_upload"),
                init: function () {
                    _this = this;
                    this.$form.attrScan();
@ -69,6 +70,35 @@
                            {text: 'HOSPITAL', id: '4'},
                        ]
                    })//城市类型
                    $("#img_upload").on("change",function () {
                        $("#url").remove();
                        var length = this.files.length;
                        var imgUrl = '';
                        for(var i=0;i<length;i++){
                            var fileObj = document.getElementById('img_upload').files[i];
                            if(fileObj == null){
                                confirmx('请先选择一个文件',"${ctx}")
                            }else {
                                var formData = new FormData();
                                formData.append("file", fileObj);
                                $.ajax({
                                    url:ctx + "/admin/activity/upload",
                                    method: "post",
                                    data:formData,
                                    cache: false,
                                    processData: false,
                                    contentType: false,
                                    success: function (data) {
                                        if(imgUrl != ''){
                                            imgUrl = imgUrl +',';
                                        }
                                        imgUrl = imgUrl + data.urls;
                                        _this.$imgUrl = imgUrl;
                                    },
                                });
                            }
                        }
                    })
                },
                initForm: function () {
@ -99,6 +129,10 @@
                                $("#inp_status").ligerComboBox("selectValue",data.status);
                                $("#inp_isFlag").ligerComboBox("selectValue",data.isFlag);
                                $("#inp_areaType").ligerComboBox("selectValue",data.areaType);
                                if(data.img != null) {
                                    var length = data.img.split(',').length;
                                    $('#img_upload').after('<li id="url">' + length + '张图片</li>');
                                }
                            } else {
                                $.Notice.error(result.msg);
                            }
@ -132,7 +166,7 @@
                    var self = this;
                    $("#btn_save").click(function () {
                        var values = self.$form.Fields.getValues();
                        values.img = self.$imgUrl;
                        values.status = $("#inp_status").ligerComboBox("getValue");
                        values.isFlag = $("#inp_isFlag").ligerComboBox("getValue");
                        values.areaType = $("#inp_areaType").ligerComboBox("getValue");

+ 13 - 13
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SmjkService.java

@ -274,19 +274,19 @@ public class SmjkService {
    {
        Map<String,String> params = new HashMap<>();
        String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<root>\n" +
                "<id_card>"+idcard+"</id_card>\n" +
                "<patient_name>"+patientName+"</patient_name>\n" +
                "<ssid>"+ssid+"</ssid>\n" +
                "<section_type>"+sectionType+"</section_type>\n" +
                "<start_time>"+startTime+"</start_time>\n" +
                "<org_code>"+orgCode+"</org_code>\n" +
                "<dept_code>"+deptCode+"</dept_code>\n" +
                "<dept_name>"+deptName+"</dept_name>\n" +
                "<doctor_code>"+doctorCode+"</doctor_code>\n" +
                "<doctor_name>"+doctorName+"</doctor_name>\n";
                "<root>" +
                "<id_card>"+idcard+"</id_card>" +
                "<patient_name>"+patientName+"</patient_name>" +
                "<ssid>"+ssid+"</ssid>" +
                "<section_type>"+sectionType+"</section_type>" +
                "<start_time>"+startTime+"</start_time>" +
                "<org_code>"+orgCode+"</org_code>" +
                "<dept_code>"+deptCode+"</dept_code>" +
                "<dept_name>"+deptName+"</dept_name>" +
                "<doctor_code>"+doctorCode+"</doctor_code>" +
                "<doctor_name>"+doctorName+"</doctor_name>";
        if(!StringUtil.isEmpty(patientPhone)) {
            xml += "<patient_phone>" + patientPhone + "</patient_phone>\n" +
            xml += "<patient_phone>" + patientPhone + "</patient_phone>" +
                   "</root>";
        }
        else{
@ -300,7 +300,7 @@ public class SmjkService {
        params.put("strCondition",api.encodeParam(key,xml));
        params.put("strCredential",api.encodeParam(key,"<root><org code=\"jtqy\" /><visitor type=\"0\" code=\"jtqy\" key=\"jtqy\" /></root>"));
        params.put("strKey",key.getKey());
        
        String response = postSecondSMJK("urp/WebRegisterByFamily","确认预约接口",params,false);
        return response;

+ 2 - 2
patient-co-service/wlyy_service/src/main/resources/application.yml

@ -231,6 +231,6 @@ es:
    FollowUpContent: wlyy_followup_content
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://59.61.92.90:9065,http://59.61.92.90:9067
  tHost: 59.61.92.90:9066,59.61.92.90:9068
  host:  http://10.95.22.155:9200,http://10.95.22.156:9200
  tHost: 10.95.22.155:9300,10.95.22.156:9300
  clusterName: jkzl

+ 1 - 1
patient-co/patient-co-wlyy/pom.xml

@ -567,7 +567,7 @@
                    <target>1.8</target>
                    <compilerArguments>
                        <verbose/>
                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                        <bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
                <version>3.1</version>

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/wechat/WxOpenidTempDao.java

@ -0,0 +1,11 @@
package com.yihu.wlyy.repository.wechat;
import com.yihu.wlyy.entity.wechat.WxOpenidTemp;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by Trick on 2018/6/28.
 */
public interface WxOpenidTempDao extends PagingAndSortingRepository<WxOpenidTemp, Long>, JpaSpecificationExecutor<WxOpenidTemp> {
}

+ 14 - 6
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/bank/TaskService.java

@ -84,17 +84,25 @@ public class TaskService {
     */
    public JSONObject selectActivity(JSONObject object,Integer page,Integer size){
        String response = null;
        Patient patient = patientDao.findByCode(object.getString("patientId"));
	    if(object.containsKey("patientid")){
		    Patient patient = patientDao.findByCode(object.getString("patientId"));
		    if (patient != null){
			    object.put("patientIdcard",patient.getIdcard());
			    object.put("unionId",patient.getUnionid());
			    object.remove("patientId");
		    }
	    }
        String url =getBaseUrl() + "findActivity";
        Map<String,String> params = new HashMap<>();
        if (patient != null){
            object.put("patientIdcard",patient.getIdcard());
            object.put("unionId",patient.getUnionid());
        }
        object.remove("patientId");
        params.put("activity",object.toJSONString());
        params.put("page",page.toString());
        params.put("size",size.toString());
        
        params.put("activity",object.toJSONString());
        
        try {
            response = httpClientUtil.httpPost(url,params);

+ 114 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/weixin/openid/WxOpenidTempService.java

@ -0,0 +1,114 @@
package com.yihu.wlyy.service.weixin.openid;
import com.yihu.wlyy.entity.wechat.WxOpenidTemp;
import com.yihu.wlyy.repository.wechat.WxOpenidTempDao;
import com.yihu.wlyy.util.HttpUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import springfox.documentation.spring.web.json.Json;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by Trick on 2018/6/28.
 */
@Service
@Transactional
public class WxOpenidTempService {
    private static Logger logger = LoggerFactory.getLogger(WxOpenidTempService.class);
    @Value("${wechat.appId}")
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Autowired
    private HttpUtil HttpUtil;
    @Autowired
    private WxOpenidTempDao wxOpenidTempDao;
    public String loadWeChatOpenIDList(){
        //微信开发者文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140840
        /**
         * 返回成功格式:
         * {"total":2,
               "count":2,
               "data":{
               "openid":["OPENID1","OPENID2"]},
               "next_openid":"NEXT_OPENID"
            }
         */
        /**
         * 返回失败格式:
         *
         * {"errcode":40013,"errmsg":"invalid appid"}
         */
        String openidList_url = "https://api.weixin.qq.com/cgi-bin/user/get";
        String params ="access_token="+getToken()+"&next_openid=";
        String result = HttpUtil.sendGet(openidList_url, params);
        JSONObject json = new JSONObject(result);
        if (json.has("data")) {
            JSONObject jsonObject = json.getJSONObject("data");
            JSONArray array = jsonObject.getJSONArray("openid");
            List<WxOpenidTemp> list = new ArrayList<>();
            for(int i=0;i< array.length();i++){
                WxOpenidTemp wx = new WxOpenidTemp();
                String openid = (String) array.get(i);
                wx.setOpenid(openid);
                list.add(wx);
            }
            wxOpenidTempDao.save(list);
            String nextOpenid = json.getString("next_openid");
            //递归调用获取openid并存储
            if(StringUtils.isNotBlank(nextOpenid)){
                nextOpenIDList(nextOpenid);
            }
        }
        return "1";
    }
    public void nextOpenIDList(String nextOpenid){
        String openidList_url = "https://api.weixin.qq.com/cgi-bin/user/get";
        String params ="access_token="+getToken()+"&next_openid="+nextOpenid;
        String result = HttpUtil.sendGet(openidList_url, params);
        JSONObject json = new JSONObject(result);
        if (json.has("data")) {
            JSONObject jsonObject = json.getJSONObject("data");
            JSONArray array = jsonObject.getJSONArray("openid");
            List<WxOpenidTemp> list = new ArrayList<>();
            for(int i=0;i< array.length();i++){
                WxOpenidTemp wx = new WxOpenidTemp();
                String openid = (String) array.get(i);
                wx.setOpenid(openid);
                list.add(wx);
            }
            wxOpenidTempDao.save(list);
            String next = json.getString("next_openid");
            if(StringUtils.isNotBlank(nextOpenid)){
                nextOpenIDList(next);
            }
        }
    }
    public String  getToken(){
        String token_url = "https://api.weixin.qq.com/cgi-bin/token";
        String params = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String result = HttpUtil.sendGet(token_url, params);
        JSONObject json = new JSONObject(result);
        if (json.has("access_token")) {
            String token = json.get("access_token").toString();
            return token;
        }
        return "";
    }
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/health/bank/TaskController.java

@ -44,7 +44,7 @@ public class TaskController extends BaseController{
                                    @RequestParam(value = "size", required = false)Integer size){
        try {
            JSONObject object = JSONObject.parseObject(task);
            object.put("patientId",getUID());
            object.put("patientId",getRepUID());
            return write(200,"查询成功","data",service.selectActivity(object,page,size));
        }catch (Exception e){
            error(e);

+ 35 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/OpenidController.java

@ -0,0 +1,35 @@
package com.yihu.wlyy.web.wx;
import com.yihu.wlyy.service.weixin.openid.WxOpenidTempService;
import com.yihu.wlyy.web.WeixinBaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Trick on 2018/6/28
 */
@RestController
@RequestMapping(value = "/wx/Openid", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "微信openid相关接口")
public class OpenidController extends WeixinBaseController {
    @Autowired
    private WxOpenidTempService wxOpenidTempService;
    @ApiOperation(value = "微信小程序下载用户openid")
    @RequestMapping(value = "/loadWeChatOpenIDList", method = RequestMethod.POST)
    public String loadWeChatOpenIDList(){
        try {
            return write(200, "请求成功", "data", wxOpenidTempService.loadWeChatOpenIDList());
        }catch (Exception e){
            error(e);
            return error(-1, "失败");
        }
    }
}

+ 20 - 20
patient-co/patient-co-wlyy/src/main/resources/logback.xml

@ -23,20 +23,20 @@
        </encoder>
    </appender>
  <!--  <appender name="business_m" class="com.yihu.base.es.ElasticsearchAppender">
        <hosts>http://172.19.103.68:9200</hosts>
        <index>business</index>
        <type>business</type>
        <clusterName>jkzl</clusterName>
        <rolling>year</rolling>
    </appender>
    <appender name="interface_call_m" class="com.yihu.base.es.ElasticsearchAppender">
        <hosts>http://172.19.103.68:9200</hosts>
        <index>interface</index>
        <type>interface</type>
        <clusterName>jkzl</clusterName>
        <rolling>year</rolling>
    </appender>-->
    <!--  <appender name="business_m" class="com.yihu.base.es.ElasticsearchAppender">
          <hosts>http://172.19.103.68:9200</hosts>
          <index>business</index>
          <type>business</type>
          <clusterName>jkzl</clusterName>
          <rolling>year</rolling>
      </appender>
      <appender name="interface_call_m" class="com.yihu.base.es.ElasticsearchAppender">
          <hosts>http://172.19.103.68:9200</hosts>
          <index>interface</index>
          <type>interface</type>
          <clusterName>jkzl</clusterName>
          <rolling>year</rolling>
      </appender>-->
    <!-- project default level -->
    <logger name="com.yihu.wlyy" level="INFO"/>
@ -44,12 +44,12 @@
    <logger name="jdbc.sqltiming" level="INFO"/>
   <!-- <logger name="com.yihu.wlyy.logs.BusinessLogs" level="INFO" additivity="false">
        <appender-ref ref="business_m"/>
    </logger>
    <logger name="com.yihu.wlyy.logs.InterfaceCallLogs" level="INFO" additivity="false">
        <appender-ref ref="interface_call_m"/>
    </logger>-->
    <!-- <logger name="com.yihu.wlyy.logs.BusinessLogs" level="INFO" additivity="false">
         <appender-ref ref="business_m"/>
     </logger>
     <logger name="com.yihu.wlyy.logs.InterfaceCallLogs" level="INFO" additivity="false">
         <appender-ref ref="interface_call_m"/>
     </logger>-->
    <!--处方支付日志 start-->