From 35d3bb2362c2886427cfccfa2f0709a26bf28b42 Mon Sep 17 00:00:00 2001 From: fangcheng Date: Mon, 13 Mar 2017 16:35:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/cm/entity/sys/SysPermissions.java | 4 +- .../lyms/cm/entity/sys/SysRolePermissionMaps.java | 4 +- .../com/lyms/web/controller/BaseController.java | 44 ++++++++ hospital.web/pom.xml | 5 + .../baomidou/mybatisplus/test/generator/.gitignore | 1 + sync.data/pom.xml | 17 +++ .../controller/CenterCallHospitalController.java | 69 +++++++++++++ .../com/lyms/sync/data/constants/EventType.java | 23 +++++ .../com/lyms/sync/data/constants/ModuleType.java | 24 +++++ .../com/lyms/sync/data/constants/SyncStatus.java | 24 +++++ .../lyms/sync/data/dao/SyncDataBasicMapper.java | 20 ++++ .../com/lyms/sync/data/dao/SyncDataBasicMapper.xml | 20 ++++ .../com/lyms/sync/data/entity/SyncDataBasic.java | 115 +++++++++++++++++++++ .../lyms/sync/data/parse/ParseDataBasicTools.java | 14 +++ .../sync/data/service/SyncDataBasicService.java | 52 ++++++++++ .../service/impl/SyncDataBasicServiceImpl.java | 52 ++++++++++ 16 files changed, 484 insertions(+), 4 deletions(-) create mode 100644 sync.data/pom.xml create mode 100644 sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml create mode 100644 sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java create mode 100644 sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java diff --git a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java index 9b7d737..df59f61 100644 --- a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java +++ b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysPermissions.java @@ -1,9 +1,9 @@ package com.lyms.cm.entity.sys; -import com.baomidou.mybatisplus.annotations.TableId; +import java.io.Serializable; + import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; -import java.io.Serializable; /** *

diff --git a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java index 578bf00..c90e015 100644 --- a/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java +++ b/center.manager/src/main/java/com/lyms/cm/entity/sys/SysRolePermissionMaps.java @@ -1,9 +1,9 @@ package com.lyms.cm.entity.sys; -import com.baomidou.mybatisplus.annotations.TableId; +import java.io.Serializable; + import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; -import java.io.Serializable; /** *

diff --git a/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java b/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java index a8cbba6..3f101fe 100644 --- a/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java +++ b/core.sdk/src/main/java/com/lyms/web/controller/BaseController.java @@ -2,6 +2,8 @@ package com.lyms.web.controller; import java.io.IOException; import java.io.PrintWriter; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -314,5 +316,47 @@ public class BaseController { } return new MobileInfo(appVersion, systemVersion, deviceId, width, height, night != 0); } + + /** + *

  • @Description:获取客户端IP + *
  • @param request + *
  • @return + *
  • 创建人:方承 + *
  • 创建时间:2016年11月26日 + *
  • 修改人: + *
  • 修改时间: + */ + public static final String getHost(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Real-IP"); + } + if (StrUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + if ("127.0.0.1".equals(ip)) { + InetAddress inet = null; + try { // 根据网卡取本机配置的IP + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ip = inet.getHostAddress(); + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ip != null && ip.length() > 15) { + if (ip.indexOf(",") > 0) { + ip = ip.substring(0, ip.indexOf(",")); + } + } + return ip; + } + } diff --git a/hospital.web/pom.xml b/hospital.web/pom.xml index 737e375..be26b8d 100644 --- a/hospital.web/pom.xml +++ b/hospital.web/pom.xml @@ -23,6 +23,11 @@ hospital.mac ${project.parent.version} + + com.lyms + sync.data + ${project.parent.version} + diff --git a/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore b/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore index f5d5a21..1074c7d 100644 --- a/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore +++ b/mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/generator/.gitignore @@ -1 +1,2 @@ /MysqlGenerator.java +/MysqlGeneratorHospital.java diff --git a/sync.data/pom.xml b/sync.data/pom.xml new file mode 100644 index 0000000..911ec55 --- /dev/null +++ b/sync.data/pom.xml @@ -0,0 +1,17 @@ + + 4.0.0 + + com.lyms + hospital.parent + 0.0.1-SNAPSHOT + + sync.data + + + com.lyms + core.sdk + ${project.parent.version} + + + \ No newline at end of file diff --git a/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java b/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java new file mode 100644 index 0000000..191ae61 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/hospital/controller/CenterCallHospitalController.java @@ -0,0 +1,69 @@ +package com.lyms.hospital.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; +import com.lyms.spring.PropertiesUtil; +import com.lyms.sync.data.constants.SyncStatus; +import com.lyms.sync.data.service.SyncDataBasicService; +import com.lyms.web.controller.BaseController; + +@RestController +@RequestMapping(value = "/sync", method = RequestMethod.POST) +public class CenterCallHospitalController extends BaseController { + + private static Logger log = LoggerFactory.getLogger(CenterCallHospitalController.class); + + private static final String ALLOW_IP = PropertiesUtil.getString("sync_allow_ip"); + + @Autowired + private SyncDataBasicService syncDataBasicService; + + @ResponseBody + @RequestMapping(value = "/getNeedSyncData", method = RequestMethod.POST) + public String getNeedSyncData(HttpServletRequest request) { + if (isAllow(request)) { + return getMsg(SyncStatus.SUCCESS,syncDataBasicService.getNeedSyncData()); + }else{ + return getMsg(SyncStatus.NOTALLOW); + } + } + + private boolean isAllow(HttpServletRequest request){ + String ip = getHost(request); + if (ip.equalsIgnoreCase(ALLOW_IP)) { + return true; + } + log.info("不是受理允许的ip【{}】地址请求基础数据同步!", ip); + return false; + } + + /** + *
  • @Description:组装json字符串 + *
  • @param status + *
  • @param dataObj + *
  • @return + *
  • 创建人:方承 + *
  • 创建时间:2017年3月13日 + *
  • 修改人: + *
  • 修改时间: + */ + private String getMsg(SyncStatus status,Object ...dataObj){ + JSONObject json = new JSONObject(); + json.put("state", status); + if(status.equals(SyncStatus.NOTALLOW)){ + json.put("data", "没有被授权的请求,您的所有信息已经保存,如果您再视图访问,本公司将保留追究法律责任的权利!"); + }else{ + json.put("data", JSONObject.toJSONString(dataObj)); + } + return json.toJSONString(); + } + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java b/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java new file mode 100644 index 0000000..cae16c4 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/constants/EventType.java @@ -0,0 +1,23 @@ +package com.lyms.sync.data.constants; + +public enum EventType { + + ADD(1), + DELETE(2), + UPDATE(3); + + private int type; + + private EventType(int type) { + this.setType(type); + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java b/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java new file mode 100644 index 0000000..f8b58ff --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/constants/ModuleType.java @@ -0,0 +1,24 @@ +package com.lyms.sync.data.constants; + +public enum ModuleType { + + USER("user"), + ROLE("role"), + ORGANIZATION("org"), + DEPARTMENT("dep"); + + private String type ; + + private ModuleType(String type) { + this.setType(type); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java b/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java new file mode 100644 index 0000000..baae114 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/constants/SyncStatus.java @@ -0,0 +1,24 @@ +package com.lyms.sync.data.constants; + +public enum SyncStatus { + + SUCCESS("success"), + ERROR("error"), + NOTALLOW("notallow"); + + private String code; + + private SyncStatus(String code) { + this.setCode(code); + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java new file mode 100644 index 0000000..f9f9f37 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.java @@ -0,0 +1,20 @@ +package com.lyms.sync.data.dao; + +import com.lyms.sync.data.entity.SyncDataBasic; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.springframework.stereotype.Repository; +import java.io.Serializable; +/** + *

    + * Mapper接口 + *

    + * + * @author fangcheng + * @since 2017-03-13 + */ +@Repository +public interface SyncDataBasicMapper extends BaseMapper { + + public Integer deleteLogicById(Serializable id); + +} \ No newline at end of file diff --git a/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml new file mode 100644 index 0000000..6fe0b9d --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/dao/SyncDataBasicMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + ID AS id, BID AS bid, MODULE AS module, EVENT AS event, DATA AS data, CREATE_TIME AS createTime, IFSUC AS ifsuc + + diff --git a/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java b/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java new file mode 100644 index 0000000..595cfc0 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/entity/SyncDataBasic.java @@ -0,0 +1,115 @@ +package com.lyms.sync.data.entity; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; +import java.util.Date; + +/** + *

    + * 用户、角色、权限、医院、部门等基础数据同步 + *

    + * + * @author fangcheng + * @since 2017-03-13 + */ +@TableName("SYNC_DATA_BASIC") +public class SyncDataBasic implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @TableId(value="ID") + private String id; + /** + * 数据对象业务主键 + */ + @TableField(value="BID") + private String bid; + /** + * 模块 + */ + @TableField(value="MODULE") + private String module; + /** + * 事件,1a,2d,3u + */ + @TableField(value="EVENT") + private Integer event; + /** + * 数据对象 + */ + @TableField(value="DATA") + private String data; + /** + * 创建时间 + */ + @TableField(value="CREATE_TIME") + private Date createTime; + /** + * 数据上传是否成功 + */ + @TableField(value="IFSUC") + private Integer ifsuc; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBid() { + return bid; + } + + public void setBid(String bid) { + this.bid = bid; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } + + public Integer getEvent() { + return event; + } + + public void setEvent(Integer event) { + this.event = event; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getIfsuc() { + return ifsuc; + } + + public void setIfsuc(Integer ifsuc) { + this.ifsuc = ifsuc; + } + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java b/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java new file mode 100644 index 0000000..a074398 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/parse/ParseDataBasicTools.java @@ -0,0 +1,14 @@ +package com.lyms.sync.data.parse; + +/** + *
  • @ClassName: 解析基础数据的工具类 + *
  • @Description: TODO(类描述) + *
  • @author 方承 + *
  • @date 2017年3月13日 + *
  • + */ +public class ParseDataBasicTools { + + + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java b/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java new file mode 100644 index 0000000..8118e42 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/service/SyncDataBasicService.java @@ -0,0 +1,52 @@ +package com.lyms.sync.data.service; + +import com.lyms.sync.data.constants.EventType; +import com.lyms.sync.data.constants.ModuleType; +import com.lyms.sync.data.entity.SyncDataBasic; +import com.lyms.web.service.BaseService; +import java.io.Serializable; +import java.util.List; + +/** + *

    + * 服务类 + *

    + * + * @author fangcheng + * @since 2017-03-13 + */ +public interface SyncDataBasicService extends BaseService { + + /** + *
  • @Description:逻辑删除,ifDel = 1 为删除,否则为没有删除 + *
  • @param id 删除主键id + *
  • @return 大于0修改成功,否则为失败 + */ + public Integer deleteLogicById(Serializable id); + + /** + *
  • @Description:添加需要同步的数据 + *
  • @param bid 业务主键id + *
  • @param moduleType 模块类型 + *
  • @param eventType 时间类型 + *
  • @param objData 数据对象 + *
  • @return + *
  • 创建人:方承 + *
  • 创建时间:2017年3月13日 + *
  • 修改人: + *
  • 修改时间: + */ + public boolean addSyncData(String bid, ModuleType moduleType, EventType eventType, Object objData); + + + /** + *
  • @Description:获取所有需要同步的数据列表 + *
  • @return + *
  • 创建人:方承 + *
  • 创建时间:2017年3月13日 + *
  • 修改人: + *
  • 修改时间: + */ + public List getNeedSyncData(); + +} diff --git a/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java b/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java new file mode 100644 index 0000000..c1b1886 --- /dev/null +++ b/sync.data/src/main/java/com/lyms/sync/data/service/impl/SyncDataBasicServiceImpl.java @@ -0,0 +1,52 @@ +package com.lyms.sync.data.service.impl; + +import java.io.Serializable; +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.lyms.sync.data.constants.EventType; +import com.lyms.sync.data.constants.ModuleType; +import com.lyms.sync.data.dao.SyncDataBasicMapper; +import com.lyms.sync.data.entity.SyncDataBasic; +import com.lyms.sync.data.service.SyncDataBasicService; +import com.lyms.util.DateTimeUtils; +import com.lyms.util.StrUtils; + +/** + *

    + * 用户、角色、权限、医院、部门等基础数据同步 服务实现类 + *

    + * + * @author fangcheng + * @since 2017-03-13 + */ +@Service +public class SyncDataBasicServiceImpl extends ServiceImpl implements SyncDataBasicService { + + public Integer deleteLogicById(Serializable id){ + return baseMapper.deleteLogicById(id); + } + + @Override + public boolean addSyncData(String bid,ModuleType moduleType, EventType eventType, Object dataObj) { + SyncDataBasic entity = new SyncDataBasic(); + entity.setId(StrUtils.uuid()); + entity.setIfsuc(0); + entity.setCreateTime(DateTimeUtils.getNow()); + + entity.setBid(bid); + entity.setModule(moduleType.getType()); + entity.setEvent(eventType.getType()); + entity.setData(JSONObject.toJSONString(dataObj)); + return insert(entity); + } + + @Override + public List getNeedSyncData() { + return selectList(new EntityWrapper().where("IFSUC", "0")); + } +} -- 1.8.3.1