Commit 5a9b3954486be78f5918ce3424f795e4e75c52e0
Exists in
master
Merge branch 'master' of https://git.healthbaby.com.cn/jiangjiazhi/center.git
Showing 7 changed files
- center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java
- center.manager/src/main/java/com/lyms/cm/entity/sys/SysUsers.java
- center.manager/src/test/java/center/manager/test/user/WorkTest.java
- core.sdk/src/main/java/com/lyms/context/AppContext.java
- core.sdk/src/main/java/com/lyms/synch/LinkedWork.java
- core.sdk/src/main/java/com/lyms/synch/SyncnCenter.java
- core.sdk/src/main/java/com/lyms/synch/queue/SyncnQueue.java
center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java
View file @
5a9b395
| ... | ... | @@ -21,6 +21,10 @@ |
| 21 | 21 | public String push(HttpServletRequest request) throws ClassNotFoundException, IOException { |
| 22 | 22 | SyncnModel model = conver(request); |
| 23 | 23 | SysUsers user = (SysUsers) model.getData(); |
| 24 | + System.out.println(user.getRoles().getName()); | |
| 25 | + // model | |
| 26 | + // service | |
| 27 | + | |
| 24 | 28 | System.out.println(user.getName() + " " + model.getMethod()); |
| 25 | 29 | return "OK"; |
| 26 | 30 | } |
center.manager/src/main/java/com/lyms/cm/entity/sys/SysUsers.java
View file @
5a9b395
| 1 | 1 | package com.lyms.cm.entity.sys; |
| 2 | 2 | |
| 3 | -import com.baomidou.mybatisplus.annotations.TableId; | |
| 4 | -import com.baomidou.mybatisplus.annotations.TableField; | |
| 5 | -import com.baomidou.mybatisplus.annotations.TableName; | |
| 6 | 3 | import java.io.Serializable; |
| 7 | 4 | import java.util.Date; |
| 8 | 5 | |
| 6 | +import com.baomidou.mybatisplus.annotations.TableField; | |
| 7 | +import com.baomidou.mybatisplus.annotations.TableId; | |
| 8 | +import com.baomidou.mybatisplus.annotations.TableName; | |
| 9 | + | |
| 9 | 10 | /** |
| 10 | 11 | * <p> |
| 11 | 12 | * 用户表 |
| 12 | 13 | |
| 13 | 14 | |
| 14 | 15 | |
| 15 | 16 | |
| 16 | 17 | |
| 17 | 18 | |
| 18 | 19 | |
| 19 | 20 | |
| 20 | 21 | |
| 21 | 22 | |
| 22 | 23 | |
| 23 | 24 | |
| 24 | 25 | |
| 25 | 26 | |
| 26 | 27 | |
| 27 | 28 | |
| 28 | 29 | |
| 29 | 30 | |
| 30 | 31 | |
| 31 | 32 | |
| 32 | 33 | |
| 33 | 34 | |
| 34 | 35 | |
| 35 | 36 | |
| 36 | 37 | |
| ... | ... | @@ -17,129 +18,133 @@ |
| 17 | 18 | @TableName("SYS_USERS") |
| 18 | 19 | public class SysUsers implements Serializable { |
| 19 | 20 | |
| 20 | - private static final long serialVersionUID = 1L; | |
| 21 | + private static final long serialVersionUID = 1L; | |
| 21 | 22 | |
| 22 | 23 | /** |
| 23 | 24 | * |
| 24 | 25 | */ |
| 25 | - @TableId(value="ID") | |
| 26 | + @TableId(value = "ID") | |
| 26 | 27 | private String id; |
| 27 | 28 | /** |
| 28 | 29 | * 0:管理员,1:用户 |
| 29 | 30 | */ |
| 30 | - @TableField(value="TYPE") | |
| 31 | + @TableField(value = "TYPE") | |
| 31 | 32 | private Integer type; |
| 32 | 33 | /** |
| 33 | 34 | * 名称 |
| 34 | 35 | */ |
| 35 | - @TableField(value="NAME") | |
| 36 | + @TableField(value = "NAME") | |
| 36 | 37 | private String name; |
| 37 | 38 | /** |
| 38 | 39 | * 帐号 |
| 39 | 40 | */ |
| 40 | - @TableField(value="ACCOUNT") | |
| 41 | + @TableField(value = "ACCOUNT") | |
| 41 | 42 | private String account; |
| 42 | 43 | /** |
| 43 | 44 | * 机构id |
| 44 | 45 | */ |
| 45 | - @TableField(value="ORG_ID") | |
| 46 | + @TableField(value = "ORG_ID") | |
| 46 | 47 | private String orgId; |
| 47 | 48 | /** |
| 48 | 49 | * 部门id |
| 49 | 50 | */ |
| 50 | - @TableField(value="DEPT_ID") | |
| 51 | + @TableField(value = "DEPT_ID") | |
| 51 | 52 | private String deptId; |
| 52 | 53 | /** |
| 53 | 54 | * 名字 |
| 54 | 55 | */ |
| 55 | - @TableField(value="PWD") | |
| 56 | + @TableField(value = "PWD") | |
| 56 | 57 | private String pwd; |
| 57 | 58 | /** |
| 58 | 59 | * 手机号 |
| 59 | 60 | */ |
| 60 | - @TableField(value="PHONE") | |
| 61 | + @TableField(value = "PHONE") | |
| 61 | 62 | private String phone; |
| 62 | 63 | /** |
| 63 | 64 | * 备注 |
| 64 | 65 | */ |
| 65 | - @TableField(value="REMARKS") | |
| 66 | + @TableField(value = "REMARKS") | |
| 66 | 67 | private String remarks; |
| 67 | 68 | /** |
| 68 | 69 | * 最后登录时间 |
| 69 | 70 | */ |
| 70 | - @TableField(value="LAST_LOGIN_TIME") | |
| 71 | + @TableField(value = "LAST_LOGIN_TIME") | |
| 71 | 72 | private Date lastLoginTime; |
| 72 | 73 | /** |
| 73 | 74 | * 导入数据的源id |
| 74 | 75 | */ |
| 75 | - @TableField(value="FOREIGN_ID") | |
| 76 | + @TableField(value = "FOREIGN_ID") | |
| 76 | 77 | private String foreignId; |
| 77 | 78 | /** |
| 78 | 79 | * 医院的帐号 |
| 79 | 80 | */ |
| 80 | - @TableField(value="OTHER_ACCOUNT") | |
| 81 | + @TableField(value = "OTHER_ACCOUNT") | |
| 81 | 82 | private String otherAccount; |
| 82 | 83 | /** |
| 83 | 84 | * |
| 84 | 85 | */ |
| 85 | - @TableField(value="EMPLOYEE_ID") | |
| 86 | + @TableField(value = "EMPLOYEE_ID") | |
| 86 | 87 | private String employeeId; |
| 87 | 88 | /** |
| 88 | 89 | * |
| 89 | 90 | */ |
| 90 | - @TableField(value="EXPIR_TIME") | |
| 91 | + @TableField(value = "EXPIR_TIME") | |
| 91 | 92 | private Date expirTime; |
| 92 | 93 | /** |
| 93 | 94 | * |
| 94 | 95 | */ |
| 95 | - @TableField(value="LEVEL") | |
| 96 | + @TableField(value = "LEVEL") | |
| 96 | 97 | private Integer level; |
| 97 | 98 | /** |
| 98 | 99 | * |
| 99 | 100 | */ |
| 100 | - @TableField(value="AVATAR") | |
| 101 | + @TableField(value = "AVATAR") | |
| 101 | 102 | private String avatar; |
| 102 | 103 | /** |
| 103 | 104 | * |
| 104 | 105 | */ |
| 105 | - @TableField(value="WORK_TIME") | |
| 106 | + @TableField(value = "WORK_TIME") | |
| 106 | 107 | private String workTime; |
| 107 | 108 | /** |
| 108 | 109 | * |
| 109 | 110 | */ |
| 110 | - @TableField(value="GOOD_AT") | |
| 111 | + @TableField(value = "GOOD_AT") | |
| 111 | 112 | private String goodAt; |
| 112 | 113 | /** |
| 113 | 114 | * |
| 114 | 115 | */ |
| 115 | - @TableField(value="CREATE_ID") | |
| 116 | + @TableField(value = "CREATE_ID") | |
| 116 | 117 | private String createId; |
| 117 | 118 | /** |
| 118 | 119 | * |
| 119 | 120 | */ |
| 120 | - @TableField(value="CREATE_TIME") | |
| 121 | + @TableField(value = "CREATE_TIME") | |
| 121 | 122 | private Date createTime; |
| 122 | 123 | /** |
| 123 | 124 | * |
| 124 | 125 | */ |
| 125 | - @TableField(value="MODIFY_ID") | |
| 126 | + @TableField(value = "MODIFY_ID") | |
| 126 | 127 | private String modifyId; |
| 127 | 128 | /** |
| 128 | 129 | * |
| 129 | 130 | */ |
| 130 | - @TableField(value="MODIFY_TIME") | |
| 131 | + @TableField(value = "MODIFY_TIME") | |
| 131 | 132 | private Date modifyTime; |
| 132 | 133 | /** |
| 133 | 134 | * |
| 134 | 135 | */ |
| 135 | - @TableField(value="IFDEL") | |
| 136 | + @TableField(value = "IFDEL") | |
| 136 | 137 | private Integer ifdel; |
| 137 | 138 | /** |
| 138 | 139 | * |
| 139 | 140 | */ |
| 140 | - @TableField(value="ENABLE") | |
| 141 | + @TableField(value = "ENABLE") | |
| 141 | 142 | private Integer enable; |
| 142 | 143 | |
| 144 | + /** | |
| 145 | + * 测试 | |
| 146 | + */ | |
| 147 | + private SysRoles roles; | |
| 143 | 148 | |
| 144 | 149 | public String getId() { |
| 145 | 150 | return id; |
| ... | ... | @@ -331,6 +336,14 @@ |
| 331 | 336 | |
| 332 | 337 | public void setEnable(Integer enable) { |
| 333 | 338 | this.enable = enable; |
| 339 | + } | |
| 340 | + | |
| 341 | + public SysRoles getRoles() { | |
| 342 | + return roles; | |
| 343 | + } | |
| 344 | + | |
| 345 | + public void setRoles(SysRoles roles) { | |
| 346 | + this.roles = roles; | |
| 334 | 347 | } |
| 335 | 348 | |
| 336 | 349 | } |
center.manager/src/test/java/center/manager/test/user/WorkTest.java
View file @
5a9b395
| ... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 | import org.junit.Test; |
| 4 | 4 | import org.springframework.beans.factory.annotation.Autowired; |
| 5 | 5 | |
| 6 | +import com.lyms.cm.entity.sys.SysRoles; | |
| 6 | 7 | import com.lyms.cm.entity.sys.SysUsers; |
| 7 | 8 | import com.lyms.synch.CenterCallback; |
| 8 | 9 | import com.lyms.synch.SyncnCenter; |
| 9 | 10 | |
| ... | ... | @@ -25,10 +26,10 @@ |
| 25 | 26 | public SyncnCenter center; |
| 26 | 27 | |
| 27 | 28 | @Test |
| 28 | - public void workTest() { | |
| 29 | + public void workTest() throws InterruptedException { | |
| 29 | 30 | SyncnModel model = new SyncnModel(); |
| 30 | 31 | model.setId(StrUtils.uuid()); |
| 31 | - model.setModel("user"); | |
| 32 | + model.setModel("user2"); | |
| 32 | 33 | model.setMethod("post"); |
| 33 | 34 | model.setType(ModelType.ADD.name()); |
| 34 | 35 | // 推送数据远程地址 |
| 35 | 36 | |
| 36 | 37 | |
| 37 | 38 | |
| 38 | 39 | |
| 39 | 40 | |
| 40 | 41 | |
| 41 | 42 | |
| 42 | 43 | |
| 43 | 44 | |
| ... | ... | @@ -41,36 +42,63 @@ |
| 41 | 42 | user.setName("乱码测试"); |
| 42 | 43 | model.setData(user); |
| 43 | 44 | |
| 44 | - // 添加任务信息,临时任务信息 | |
| 45 | + SysRoles roles = new SysRoles(); | |
| 46 | + roles.setName("roles"); | |
| 47 | + user.setRoles(roles); | |
| 48 | + | |
| 45 | 49 | center.buildWork().push(model, new CenterCallback() { |
| 50 | + | |
| 46 | 51 | @Override |
| 47 | 52 | public void callBack(Object object) { |
| 48 | 53 | System.out.println("push callBack : " + object); |
| 54 | + tmp(); | |
| 49 | 55 | } |
| 50 | 56 | }); |
| 51 | 57 | |
| 52 | - // 获取临时任务信息 | |
| 53 | - // 包含ack 回调方法 | |
| 58 | + } | |
| 59 | + | |
| 60 | + @Test | |
| 61 | + public void tmp() { | |
| 54 | 62 | Work work = center.buildWork(); |
| 55 | 63 | try { |
| 56 | - | |
| 57 | 64 | work.pullTmp(new CenterCallback() { |
| 58 | 65 | @Override |
| 59 | 66 | public void callBack(Object object) { |
| 60 | - // 处理实际业务 | |
| 67 | + System.out.println("pull callBack : " + object); | |
| 61 | 68 | SyncnModel model = (SyncnModel) object; |
| 62 | - String result = HttpUtils.REMOTE.post(model); | |
| 63 | - System.out.println(result); | |
| 69 | + HttpUtils.REMOTE.post(model); | |
| 64 | 70 | } |
| 65 | 71 | }); |
| 66 | 72 | } catch (Exception e) { |
| 67 | 73 | e.printStackTrace(); |
| 68 | - // 业务逻辑错误,反压数据,将会输重写写入队列 | |
| 74 | + // 异常数据反压 | |
| 69 | 75 | work.backPressure(); |
| 70 | 76 | } |
| 71 | - // .ackGet(null); | |
| 72 | - // System.out.println("callBack: " + get); | |
| 77 | + } | |
| 73 | 78 | |
| 79 | + @Test | |
| 80 | + public void fix() throws InterruptedException { | |
| 81 | + // 获取固定任务队列任务 | |
| 82 | + // 包含ack 回调方法 | |
| 83 | + while (true) { | |
| 84 | + Work work2 = center.buildWork(); | |
| 85 | + try { | |
| 86 | + | |
| 87 | + work2.pullFix(new CenterCallback() { | |
| 88 | + @Override | |
| 89 | + public void callBack(Object object) { | |
| 90 | + // remote | |
| 91 | + // 处理实际业务 | |
| 92 | + SyncnModel model = (SyncnModel) object; | |
| 93 | + // String result = HttpUtils.REMOTE.post(model); | |
| 94 | + System.out.println(model.getModel()); | |
| 95 | + } | |
| 96 | + });// .ackGet(params);// .ackGet(null) | |
| 97 | + } catch (Exception e) { | |
| 98 | + e.printStackTrace(); | |
| 99 | + } | |
| 100 | + Thread.sleep(3000); | |
| 101 | + } | |
| 74 | 102 | } |
| 75 | 103 | |
| 76 | 104 | public static void main(String[] args) { |
core.sdk/src/main/java/com/lyms/context/AppContext.java
View file @
5a9b395
| ... | ... | @@ -8,11 +8,11 @@ |
| 8 | 8 | import org.springframework.stereotype.Component; |
| 9 | 9 | import org.springframework.web.context.ServletContextAware; |
| 10 | 10 | |
| 11 | -/** | |
| 12 | - * <li>ClassName:AppContext <br/> | |
| 11 | +/** | |
| 12 | + * <li>ClassName:AppContext <br/> | |
| 13 | 13 | * <li>@Description: TODO(类描述) |
| 14 | - * <li>@Date: 2016年11月29日 <br/> | |
| 15 | - * <li>@author 方承 | |
| 14 | + * <li>@Date: 2016年11月29日 <br/> | |
| 15 | + * <li>@author 方承 | |
| 16 | 16 | */ |
| 17 | 17 | @Component |
| 18 | 18 | public class AppContext implements ServletContextAware { |
| 19 | 19 | |
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | |
| ... | ... | @@ -21,27 +21,26 @@ |
| 21 | 21 | * (系统配置信息)- 在 StartupListener 类中加载 |
| 22 | 22 | */ |
| 23 | 23 | public Map<String, String> config; |
| 24 | - | |
| 24 | + | |
| 25 | 25 | /** |
| 26 | 26 | * 容器全局变量 |
| 27 | 27 | */ |
| 28 | 28 | private ServletContext servletContext; |
| 29 | - | |
| 30 | - | |
| 29 | + | |
| 31 | 30 | public Map<String, String> getConfig() { |
| 32 | 31 | return config; |
| 33 | 32 | } |
| 34 | 33 | |
| 35 | 34 | public void setConfig(Map<String, String> config) { |
| 36 | 35 | this.config = config; |
| 37 | - //同步更新容器全局变量 | |
| 36 | + // 同步更新容器全局变量 | |
| 38 | 37 | Iterator<Map.Entry<String, String>> iter = config.entrySet().iterator(); |
| 39 | - while (iter.hasNext()){ | |
| 38 | + while (iter.hasNext()) { | |
| 40 | 39 | Map.Entry<String, String> e = iter.next(); |
| 41 | 40 | servletContext.setAttribute(e.getKey(), e.getValue()); |
| 42 | 41 | } |
| 43 | 42 | } |
| 44 | - | |
| 43 | + | |
| 45 | 44 | @Override |
| 46 | 45 | public void setServletContext(ServletContext servletContext) { |
| 47 | 46 | this.servletContext = servletContext; |
| ... | ... | @@ -50,7 +49,6 @@ |
| 50 | 49 | public ServletContext getServletContext() { |
| 51 | 50 | return servletContext; |
| 52 | 51 | } |
| 53 | - | |
| 54 | 52 | |
| 55 | 53 | } |
core.sdk/src/main/java/com/lyms/synch/LinkedWork.java
View file @
5a9b395
core.sdk/src/main/java/com/lyms/synch/SyncnCenter.java
View file @
5a9b395
| ... | ... | @@ -10,6 +10,7 @@ |
| 10 | 10 | import com.lyms.synch.entity.SyncnModel; |
| 11 | 11 | import com.lyms.synch.queue.SyncnQueue; |
| 12 | 12 | import com.lyms.util.HttpUtils; |
| 13 | +import com.lyms.util.StrUtils; | |
| 13 | 14 | |
| 14 | 15 | /** |
| 15 | 16 | * <li>@ClassName: SyncnCenter |
| ... | ... | @@ -130,6 +131,29 @@ |
| 130 | 131 | } |
| 131 | 132 | } |
| 132 | 133 | }); |
| 134 | + } | |
| 135 | + | |
| 136 | + /** | |
| 137 | + * <li>@Description:回调方法,调用远端接口 | |
| 138 | + * <p> | |
| 139 | + * 跟 {@link #ackGet(Map)} {@link #ackPost(Map)} 的区别是,后两者需要自己设定callback | |
| 140 | + * 地址跟参数,可以指定任意地址 | |
| 141 | + * <li>@return | |
| 142 | + * <li>创建人:maliang | |
| 143 | + * <li>创建时间:2017年3月14日 | |
| 144 | + * <li>修改人: | |
| 145 | + * <li>修改时间: | |
| 146 | + */ | |
| 147 | + public String ack(Object object) { | |
| 148 | + if (model != null && StringUtils.isNotBlank(model.getRemote())) { | |
| 149 | + model.setId(StrUtils.uuid()); | |
| 150 | + model.setMethod("POST"); | |
| 151 | + model.setTs(System.currentTimeMillis()); | |
| 152 | + model.setData(object); | |
| 153 | + model.setType(ModelType.ACK.name()); | |
| 154 | + return HttpUtils.REMOTE.post(model); | |
| 155 | + } | |
| 156 | + return null; | |
| 133 | 157 | } |
| 134 | 158 | |
| 135 | 159 | /** |
core.sdk/src/main/java/com/lyms/synch/queue/SyncnQueue.java
View file @
5a9b395
| ... | ... | @@ -74,7 +74,7 @@ |
| 74 | 74 | * <li>修改时间: |
| 75 | 75 | */ |
| 76 | 76 | private Boolean pushFixationWork(SyncnModel model) { |
| 77 | - Long tag = template.opsForList().rightPush(FIXATION_WORK, model); | |
| 77 | + Long tag = template.opsForList().leftPush(FIXATION_WORK, model); | |
| 78 | 78 | return tag >= 1; |
| 79 | 79 | } |
| 80 | 80 | |
| ... | ... | @@ -82,8 +82,8 @@ |
| 82 | 82 | // 添加锁 |
| 83 | 83 | try { |
| 84 | 84 | if (Fix_Lock.acquireLock(LOCK_FIXATION_NAME, WAIT_LOCK_TIME)) { |
| 85 | - SyncnModel obj = (SyncnModel) template.opsForList().leftPop(FIXATION_WORK); | |
| 86 | - this.pushFixationWork(obj); | |
| 85 | + SyncnModel obj = (SyncnModel) template.opsForList().rightPopAndLeftPush(FIXATION_WORK, FIXATION_WORK); | |
| 86 | + // this.pushFixationWork(obj); | |
| 87 | 87 | return obj; |
| 88 | 88 | } |
| 89 | 89 | } catch (Exception e) { |
| ... | ... | @@ -112,7 +112,7 @@ |
| 112 | 112 | * <li>修改时间: |
| 113 | 113 | */ |
| 114 | 114 | private boolean pushTempWork(SyncnModel model) { |
| 115 | - Long tag = template.opsForList().rightPush(TMP_WORK, model); | |
| 115 | + Long tag = template.opsForList().leftPush(TMP_WORK, model); | |
| 116 | 116 | return tag >= 1; |
| 117 | 117 | } |
| 118 | 118 | |
| ... | ... | @@ -128,7 +128,7 @@ |
| 128 | 128 | |
| 129 | 129 | try { |
| 130 | 130 | if (Tmp_Lock.acquireLock(LOCK_TMP_NAME, WAIT_LOCK_TIME)) { |
| 131 | - Serializable object = template.opsForList().leftPop(TMP_WORK); | |
| 131 | + Serializable object = template.opsForList().rightPop(TMP_WORK); | |
| 132 | 132 | return object != null ? (SyncnModel) object : null; |
| 133 | 133 | } |
| 134 | 134 | } catch (Exception e) { |