浏览代码

@IPU_REQ_2022@添加组织下人员信息管理、查询;添加http注册flow、model;添加flow保存到nacos配置中心;添加从nacos自动更新flow配置。

weihf 3 年之前
父节点
当前提交
fad94b418d
共有 25 个文件被更改,包括 714 次插入58 次删除
  1. 5 1
      qb-auth-server/pom.xml
  2. 20 1
      qb-auth-server/src/main/java/com/ipu/logicflow/server/LogicflowServerStart.java
  3. 31 5
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicController.java
  4. 33 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicQueryController.java
  5. 38 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowLogicListener.java
  6. 27 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowModelListener.java
  7. 4 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/LogicService.java
  8. 7 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/QueryService.java
  9. 99 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/impl/LogicServiceImpl.java
  10. 22 0
      qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/impl/QueryServiceImpl.java
  11. 66 39
      qb-auth-server/src/main/java/com/ipu/logicflow/server/util/LogicFlowConfig.java
  12. 4 1
      qb-auth-server/src/main/resources/dev/application.yml
  13. 3 3
      qb-auth-server/src/main/resources/dev/ipu-mybatis-config.xml
  14. 21 2
      qb-auth-server/src/main/resources/flow/org/model/sec_org_user_rel.xml
  15. 29 0
      qb-auth-server/src/main/resources/flow/org/org_user_rel_delete_by_cond.xml
  16. 27 0
      qb-auth-server/src/main/resources/flow/org/org_user_rel_insert.xml
  17. 27 0
      qb-auth-server/src/main/resources/flow/org/org_user_rel_select.xml
  18. 29 0
      qb-auth-server/src/main/resources/flow/org/org_user_rel_select_by_cond.xml
  19. 0 0
      qb-auth-server/src/main/resources/flow/org/user_role_delete.xml
  20. 0 0
      qb-auth-server/src/main/resources/flow/org/user_role_insert.xml
  21. 0 0
      qb-auth-server/src/main/resources/flow/org/user_role_select.xml
  22. 1 1
      qb-auth-server/src/main/resources/flow/user/model/sec_user.xml
  23. 1 0
      qb-auth-server/src/main/resources/ipu-spring-mvc.xml
  24. 124 0
      qb-auth-server/src/test/java/com/ipu/logicflow/server/OrgUserRelTest.java
  25. 96 5
      qb-auth-server/src/test/java/com/ipu/logicflow/server/UserTest.java

+ 5 - 1
qb-auth-server/pom.xml

@ -75,13 +75,17 @@
75 75
        <dependency>
76 76
            <groupId>com.ai.ipu.server</groupId>
77 77
            <artifactId>ipu-restful</artifactId>
78
            <version>${ipu-rest}</version>
79 78
        </dependency>
80 79
        <dependency>
81 80
            <groupId>com.ipu.flow</groupId>
82 81
            <artifactId>ipu-logicflow</artifactId>
83 82
            <version>${nuosi-logicflow}</version>
84 83
        </dependency>
84
        <!--nacos -->
85
        <dependency>
86
            <groupId>com.ai.ipu</groupId>
87
            <artifactId>ipu-spring-nacos</artifactId>
88
        </dependency>
85 89
86 90
        <!--<dependency>
87 91
            <groupId>io.github.reynolds2019</groupId>

+ 20 - 1
qb-auth-server/src/main/java/com/ipu/logicflow/server/LogicflowServerStart.java

@ -1,7 +1,12 @@
1 1
package com.ipu.logicflow.server;
2 2
3
3 4
import com.ai.ipu.basic.util.IpuBaseException;
5
import com.ai.ipu.nacos.INacosService;
4 6
import com.ai.ipu.restful.boot.IpuRestApplication;
7
import com.ai.ipu.restful.spring.SpringBeanUtil;
8
import com.ipu.logicflow.server.biz.logic.listener.FlowLogicListener;
9
import com.ipu.logicflow.server.biz.logic.listener.FlowModelListener;
5 10
import com.ipu.logicflow.server.util.LogicFlowConfig;
6 11
7 12
/**
@ -12,7 +17,7 @@ import com.ipu.logicflow.server.util.LogicFlowConfig;
12 17
 * @version v1.0.0
13 18
 */
14 19
public class LogicflowServerStart {
15
20
	
16 21
    public static void main(String[] args) {
17 22
        // 初始化加载服务配置
18 23
        LogicFlowConfig.init();
@ -20,6 +25,9 @@ public class LogicflowServerStart {
20 25
        registerExceptionCode();
21 26
        // 启动服务
22 27
        IpuRestApplication.start(args);
28
        //注册nacos监听
29
        registerNacosListener();
30
23 31
    }
24 32
25 33
    private static void registerExceptionCode(){
@ -27,4 +35,15 @@ public class LogicflowServerStart {
27 35
        String exceptionMessagesConfig = "exception_messages";
28 36
        IpuBaseException.registerCode(exceptionMessagesConfig);
29 37
    }
38
    
39
    private static void registerNacosListener(){
40
    	try {
41
    		INacosService service = SpringBeanUtil.getBean(INacosService.class);
42
			service.addListener(LogicFlowConfig.FLOW_LOGIC,"DEFAULT_GROUP",new FlowLogicListener());
43
			service.addListener(LogicFlowConfig.FLOW_MODEL,"DEFAULT_GROUP",new FlowModelListener());
44
		} catch (Exception e) {
45
			// TODO Auto-generated catch block
46
			e.printStackTrace();
47
		}
48
    }
30 49
}

+ 31 - 5
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicController.java

@ -1,11 +1,12 @@
1 1
package com.ipu.logicflow.server.biz.logic.control;
2 2
3
import com.ai.ipu.basic.log.ILogger;
4
import com.ai.ipu.basic.log.IpuLoggerFactory;
3 5
import com.ai.ipu.data.JMap;
4 6
import com.ai.ipu.data.impl.JsonMap;
5 7
import com.alibaba.fastjson.JSONObject;
6 8
import com.ipu.logicflow.server.biz.logic.service.LogicService;
7
import org.slf4j.Logger;
8
import org.slf4j.LoggerFactory;
9
9 10
import org.springframework.beans.factory.annotation.Autowired;
10 11
import org.springframework.stereotype.Controller;
11 12
import org.springframework.web.bind.annotation.PathVariable;
@ -21,20 +22,45 @@ import org.springframework.web.bind.annotation.ResponseBody;
21 22
 * @version v1.0.0
22 23
 */
23 24
@Controller
25
@RequestMapping("/logic")
24 26
public class LogicController {
25
    private static final Logger log = LoggerFactory.getLogger(LogicController.class);
27
    private static final ILogger LOG = IpuLoggerFactory.createLogger(LogicController.class);
26 28
27 29
    @Autowired
28 30
    private LogicService logicService;
29 31
30 32
    @ResponseBody
31
    @RequestMapping("/logic/{logicId}")
32
    public Object logic(@PathVariable("logicId") String logicId, @RequestBody JSONObject input) throws Exception {
33
    @RequestMapping("/executeLogic/{logicId}")
34
    public Object executeLogic(@PathVariable("logicId") String logicId, @RequestBody JSONObject input) throws Exception {
33 35
        System.out.println("logicId="+logicId);
34 36
        System.out.println("input="+input);
35 37
        JMap param = new JsonMap(input.toJSONString());
36 38
        Object result = logicService.execute(logicId, param);
37 39
        return result;
38 40
    }
41
    
42
    @ResponseBody
43
    @RequestMapping("/registerFlow")
44
    public Object registerFlow(@RequestBody String flowXml) throws Exception {
45
        System.out.println("input="+flowXml);    
46
        Object result = logicService.registerFlow(flowXml);
47
        return result;
48
    }
49
    
50
    @ResponseBody
51
    @RequestMapping("/registerModel")
52
    public Object registerModel(@RequestBody String modelXml) throws Exception {
53
        System.out.println("input="+modelXml);
54
        Object result = logicService.registerModel(modelXml);
55
        return result;
56
    }
57
    
58
    @ResponseBody
59
    @RequestMapping("/saveFlowToConfigCenter/{flowName}")
60
    public Object saveFlowToConfigCenter(@PathVariable("flowName") String flowName,@RequestBody String flowXml) throws Exception {
61
        System.out.println("input="+flowXml);    
62
        logicService.saveFlowToConfigCenter(flowName, flowXml);
63
        return "ok";
64
    }
39 65
40 66
}

+ 33 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/control/LogicQueryController.java

@ -0,0 +1,33 @@
1
package com.ipu.logicflow.server.biz.logic.control;
2
3
import org.springframework.beans.factory.annotation.Autowired;
4
import org.springframework.stereotype.Controller;
5
import org.springframework.web.bind.annotation.RequestBody;
6
import org.springframework.web.bind.annotation.RequestMapping;
7
import org.springframework.web.bind.annotation.ResponseBody;
8
9
import com.ipu.logicflow.server.biz.logic.service.QueryService;
10
11
@Controller
12
@RequestMapping("/query")
13
public class LogicQueryController {
14
15
	@Autowired
16
    private QueryService queryService;
17
	
18
	@ResponseBody
19
    @RequestMapping("/getFlow")
20
    public Object getFlow(@RequestBody String flowName) throws Exception {
21
        System.out.println("input="+flowName);    
22
        Object result = queryService.getFlowMap(flowName);
23
        return result;
24
    }
25
	
26
	@ResponseBody
27
    @RequestMapping("/getModel")
28
    public Object getModel(@RequestBody String ModelName) throws Exception {
29
        System.out.println("input="+ModelName);    
30
        Object result = queryService.getModelMap(ModelName);
31
        return result;
32
    }
33
}

+ 38 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowLogicListener.java

@ -0,0 +1,38 @@
1
package com.ipu.logicflow.server.biz.logic.listener;
2
3
4
import com.ai.ipu.basic.log.ILogger;
5
import com.ai.ipu.basic.log.IpuLoggerFactory;
6
import com.ai.ipu.basic.string.StringUtil;
7
import com.ai.ipu.restful.spring.SpringBeanUtil;
8
import com.alibaba.nacos.api.config.listener.AbstractListener;
9
import com.ipu.logicflow.server.biz.logic.service.LogicService;
10
import com.ipu.logicflow.server.util.LogicFlowConfig;
11
12
public class FlowLogicListener extends AbstractListener {
13
	private static final ILogger LOG = IpuLoggerFactory.createLogger(FlowLogicListener.class);
14
	
15
	@Override
16
	public void receiveConfigInfo(String configInfo) {
17
		try {
18
			LOG.debug(">>>>>>>>>>>>>>>>>>>new config from nacos:" + configInfo);
19
			if (!StringUtil.isEmpty(configInfo)) {
20
				String[] configs = configInfo.split("\n");
21
				int i=0;
22
				for (;i<configs.length;i++) {
23
					String[] config = configs[i].split("==");
24
					if (!LogicFlowConfig.getFlowPathMap().containsKey(config[0]))
25
					{
26
						LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
27
						logicService.registerFlow(config[1]);
28
						LOG.debug("添加Flow配置成功:" + config[1]);
29
					}
30
				}	
31
			}
32
		} catch (Exception e) {
33
			e.printStackTrace();
34
			LOG.error("receiveConfigInfo error:", e);
35
		}
36
	}
37
38
}

+ 27 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/listener/FlowModelListener.java

@ -0,0 +1,27 @@
1
package com.ipu.logicflow.server.biz.logic.listener;
2
3
4
5
import com.ai.ipu.basic.log.ILogger;
6
import com.ai.ipu.basic.log.IpuLoggerFactory;
7
import com.ai.ipu.restful.spring.SpringBeanUtil;
8
import com.alibaba.nacos.api.config.listener.AbstractListener;
9
import com.ipu.logicflow.server.biz.logic.service.LogicService;
10
11
public class FlowModelListener extends AbstractListener {
12
	private static final ILogger LOG = IpuLoggerFactory.createLogger(FlowModelListener.class);
13
	
14
	@Override
15
	public void receiveConfigInfo(String configInfo) {
16
		try {
17
			LOG.debug(">>>>>>>>>>>>>>>>>>>new config from nacos:" + configInfo);
18
			LogicService logicService = SpringBeanUtil.getBean(LogicService.class);
19
			logicService.registerModel(configInfo);
20
			LOG.debug("添加Model配置成功");
21
22
		} catch (Exception e) {
23
			LOG.error("receiveConfigInfo error:", e);
24
		}
25
	}
26
27
}

+ 4 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/LogicService.java

@ -12,4 +12,8 @@ import com.ai.ipu.data.JMap;
12 12
public interface LogicService {
13 13
14 14
    public Object execute(String logicName, JMap param) throws Exception;
15
    public String registerFlow(String flowXml) throws Exception;
16
    public String registerModel(String modelXml) throws Exception;
17
    public void saveFlowToConfigCenter(String flowName, String flowXml) throws Exception;
18
    public void saveModelToConfigCenter(String modelName, String modelXml) throws Exception;
15 19
}

+ 7 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/QueryService.java

@ -0,0 +1,7 @@
1
package com.ipu.logicflow.server.biz.logic.service;
2
3
4
public interface QueryService {
5
	public Object getFlowMap(String logicName) throws Exception;
6
	public Object getModelMap(String logicName) throws Exception;
7
}

+ 99 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/impl/LogicServiceImpl.java

@ -1,8 +1,22 @@
1 1
package com.ipu.logicflow.server.biz.logic.service.impl;
2 2
3
import com.ai.ipu.basic.log.ILogger;
4
import com.ai.ipu.basic.log.IpuLoggerFactory;
3 5
import com.ai.ipu.data.JMap;
6
import com.ai.ipu.nacos.INacosService;
7
import com.github.pagehelper.util.StringUtil;
4 8
import com.nuosi.flow.logic.LogicFlowEngine;
9
import com.nuosi.flow.logic.LogicFlowManager;
10
import com.nuosi.flow.logic.model.LogicFlow;
11
import com.nuosi.flow.logic.model.domain.DomainModel;
5 12
import com.ipu.logicflow.server.biz.logic.service.LogicService;
13
import com.ipu.logicflow.server.util.LogicFlowConfig;
14
15
import java.io.ByteArrayInputStream;
16
import java.io.InputStream;
17
import java.nio.charset.StandardCharsets;
18
19
import org.springframework.beans.factory.annotation.Autowired;
6 20
import org.springframework.stereotype.Service;
7 21
8 22
/**
@ -15,9 +29,94 @@ import org.springframework.stereotype.Service;
15 29
16 30
@Service
17 31
public class LogicServiceImpl implements LogicService {
32
	private static final ILogger LOG = IpuLoggerFactory.createLogger(LogicServiceImpl.class);
33
	
34
	@Autowired
35
	private INacosService service;
36
	
18 37
    @Override
19 38
    public Object execute(String logicName, JMap param) throws Exception {
20 39
        Object result = LogicFlowEngine.execute(logicName, param);
21 40
        return result;
22 41
    }
42
43
	@Override
44
	public String registerFlow(String flowXml) throws Exception {
45
		InputStream xml = null;
46
		String flowName = null;
47
		try {
48
			xml = new ByteArrayInputStream(flowXml.getBytes(StandardCharsets.UTF_8.name()));
49
			//先注册到核心流程引擎
50
			Object result = LogicFlowManager.registerLogicFlow(xml);
51
			if (result!=null)
52
			{
53
				//注册成功后再将配置缓存到本地
54
				flowName = ((LogicFlow)result).getId();
55
				LogicFlowConfig.addFlowPathMap(flowName, flowXml);
56
			}
57
			else
58
				flowName = null;
59
		}finally {
60
			if (xml != null)
61
			{
62
				try {
63
					xml.close();
64
				}catch (Exception e) {
65
					LOG.error(e.toString());
66
				}
67
				    
68
			}
69
		}
70
		return flowName;
71
	}
72
73
	@Override
74
	public String registerModel(String modelXml) throws Exception {
75
		InputStream xml = null;
76
		String modelName = null;
77
		try {
78
			xml = new ByteArrayInputStream(modelXml.getBytes(StandardCharsets.UTF_8.name()));
79
			//先注册到核心流程引擎
80
			Object result = LogicFlowManager.registerDomainModel(xml);
81
			if (result!=null)
82
			{
83
				//注册成功后再将配置缓存到本地
84
				modelName = ((DomainModel)result).getId();
85
				LogicFlowConfig.addModelPathMap(modelName, modelXml);
86
			}
87
			else
88
				modelName = null;
89
		}finally {
90
			if (xml != null)
91
			{
92
				try {
93
					xml.close();
94
				}catch (Exception e) {
95
					LOG.error(e.toString());
96
				}
97
				    
98
			}
99
		}
100
		return modelName;
101
	}
102
103
	@Override
104
	public void saveFlowToConfigCenter(String flowName, String flowXml) throws Exception {
105
		String strConfigInfo = service.pullFromServer(LogicFlowConfig.FLOW_LOGIC, null, 0);
106
		StringBuffer newConfigInfo = new StringBuffer();
107
		if (!StringUtil.isEmpty(strConfigInfo))
108
		    newConfigInfo.append(strConfigInfo).append("\n");
109
		newConfigInfo.append(flowName).append("==").append(LogicFlowConfig.replaceBlank(flowXml));
110
		service.pushConfigToServer(LogicFlowConfig.FLOW_LOGIC, "DEFAULT_GROUP", newConfigInfo.toString());
111
	}
112
113
	@Override
114
	public void saveModelToConfigCenter(String modelName, String modelXml) throws Exception {
115
		String strConfigInfo = service.pullFromServer(LogicFlowConfig.FLOW_LOGIC, null, 0);
116
		StringBuffer newConfigInfo = new StringBuffer();
117
		if (!StringUtil.isEmpty(strConfigInfo))
118
		    newConfigInfo.append(strConfigInfo).append("\n");
119
		newConfigInfo.append(modelName).append("==").append(LogicFlowConfig.replaceBlank(modelXml));
120
		service.pushConfigToServer(LogicFlowConfig.FLOW_LOGIC, "DEFAULT_GROUP", newConfigInfo.toString());
121
	}
23 122
}

+ 22 - 0
qb-auth-server/src/main/java/com/ipu/logicflow/server/biz/logic/service/impl/QueryServiceImpl.java

@ -0,0 +1,22 @@
1
package com.ipu.logicflow.server.biz.logic.service.impl;
2
3
import org.jsoup.helper.StringUtil;
4
import org.springframework.stereotype.Service;
5
6
import com.ipu.logicflow.server.biz.logic.service.QueryService;
7
import com.ipu.logicflow.server.util.LogicFlowConfig;
8
9
@Service
10
public class QueryServiceImpl implements QueryService {
11
12
	@Override
13
	public Object getFlowMap(String logicName) throws Exception {
14
		return StringUtil.isBlank(logicName)?LogicFlowConfig.getFlowPathMap():LogicFlowConfig.getFlowPathMap().get(logicName);
15
	}
16
17
	@Override
18
	public Object getModelMap(String logicName) throws Exception {
19
		return StringUtil.isBlank(logicName)?LogicFlowConfig.getModelPathMap():LogicFlowConfig.getModelPathMap().get(logicName);
20
	}
21
22
}

+ 66 - 39
qb-auth-server/src/main/java/com/ipu/logicflow/server/util/LogicFlowConfig.java

@ -5,50 +5,77 @@ import com.nuosi.flow.util.LogicFlowUtil;
5 5
import java.util.HashMap;
6 6
import java.util.Iterator;
7 7
import java.util.Map;
8
import java.util.regex.Matcher;
9
import java.util.regex.Pattern;
8 10
9 11
/**
10
 * <p>desc: LogicFlow配置类 </p>
11
 * <p>date: 2021/12/30 23:58 </p>
12
 * <p>
13
 * desc: LogicFlow配置类
14
 * </p>
15
 * <p>
16
 * date: 2021/12/30 23:58
17
 * </p>
12 18
 *
13 19
 * @author nuosi fsofs@163.com
14 20
 * @version v1.0.0
15 21
 */
16 22
public class LogicFlowConfig {
17
    private static Map<String, String> modelPathMap = new HashMap<String, String>();
18
    private static Map<String, String> flowPathMap = new HashMap<String, String>();
19
20
    public static void init(){
21
        initModel();
22
        initFlow();
23
    }
24
25
    public static void initModel(){
26
        modelPathMap.put("sec_user", "flow/user/model/sec_user.xml");
27
        modelPathMap.put("sec_organize", "flow/org/model/sec_organize.xml");
28
        Iterator<String> it = modelPathMap.values().iterator();
29
        while(it.hasNext()){
30
            LogicFlowUtil.loadLogicModel(it.next());
31
32
        }
33
    }
34
35
    public static void initFlow(){
36
        flowPathMap.put("user_insert", "flow/user/user_insert.xml");
37
        flowPathMap.put("user_select", "flow/user/user_select.xml");
38
        flowPathMap.put("user_select_by_name", "flow/user/user_select_by_name.xml");
39
        flowPathMap.put("organize_select", "flow/org/organize_select.xml");
40
41
        Iterator<String> it = flowPathMap.values().iterator();
42
        while(it.hasNext()){
43
            LogicFlowUtil.loadLogicFlow(it.next());
44
        }
45
    }
46
47
    public static Map<String, String> getModelPathMap() {
48
        return modelPathMap;
49
    }
50
51
    public static Map<String, String> getFlowPathMap() {
52
        return flowPathMap;
53
    }
23
	public static final String FLOW_LOGIC = "flowLogic.xml";
24
	public static final String FLOW_MODEL = "flowModel.xml";
25
26
	private static Map<String, String> modelPathMap = new HashMap<String, String>();
27
	private static Map<String, String> flowPathMap = new HashMap<String, String>();
28
29
	public static void init() {
30
		initModel();
31
		initFlow();
32
	}
33
34
	public static void initModel() {
35
		modelPathMap.put("sec_user", "flow/user/model/sec_user.xml");
36
		modelPathMap.put("sec_organize", "flow/org/model/sec_organize.xml");
37
		Iterator<String> it = modelPathMap.values().iterator();
38
		while (it.hasNext()) {
39
			LogicFlowUtil.loadLogicModel(it.next());
40
41
		}
42
	}
43
44
	public static void initFlow() {
45
		flowPathMap.put("user_insert", "flow/user/user_insert.xml");
46
		flowPathMap.put("user_select", "flow/user/user_select.xml");
47
		flowPathMap.put("user_select_by_name", "flow/user/user_select_by_name.xml");
48
		flowPathMap.put("organize_select", "flow/org/organize_select.xml");
49
50
		Iterator<String> it = flowPathMap.values().iterator();
51
		while (it.hasNext()) {
52
			LogicFlowUtil.loadLogicFlow(it.next());
53
		}
54
	}
55
56
	public static Map<String, String> getModelPathMap() {
57
		return (Map<String, String>) ((HashMap<String, String>) modelPathMap).clone();
58
	}
59
60
	public static Map<String, String> getFlowPathMap() {
61
		return (Map<String, String>) ((HashMap<String, String>) flowPathMap).clone();
62
	}
63
64
	public static void addModelPathMap(String modelName, String modelXml) {
65
		modelPathMap.put(modelName, modelXml);
66
	}
67
68
	public static void addFlowPathMap(String flowName, String flowXml) {
69
		flowPathMap.put(flowName, flowXml);
70
	}
71
72
	public static String replaceBlank(String str) {
73
		String dest = "";
74
		if (str != null) {
75
			Pattern p = Pattern.compile("\\\r|\n");
76
			Matcher m = p.matcher(str);
77
			dest = m.replaceAll("");
78
		}
79
		return dest;
80
	}
54 81
}

+ 4 - 1
qb-auth-server/src/main/resources/dev/application.yml

@ -41,4 +41,7 @@ logging:
41 41
  file: /data/logs/boot.log
42 42
define:
43 43
  session:
44
    timeout: 1800
44
    timeout: 1800
45
nacos:
46
  config:
47
    server-addr: 47.105.160.21:8849

+ 3 - 3
qb-auth-server/src/main/resources/dev/ipu-mybatis-config.xml

@ -17,9 +17,9 @@
17 17
		<environment id="auth">
18 18
			<transactionManager type="jdbc" />
19 19
			<dataSource type="com.ai.ipu.database.datasource.DruidDataSourceFactory">
20
				<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3307/auth" />
21
				<property name="username" value="root" />
22
				<property name="password" value="rootroot" />
20
				<property name="jdbcUrl" value="jdbc:mysql://82.157.108.247:3306/test?useSSL=false&amp;characterEncoding=utf8" />
21
				<property name="username" value="ipu" />
22
				<property name="password" value="ipumysql" />
23 23
				<!-- 配置获取连接的等待超时时间 -->
24 24
				<property name="maxWait" value="5000" />
25 25
			</dataSource>

+ 21 - 2
qb-auth-server/src/main/resources/flow/org/model/sec_org_user_rel.xml

@ -1,8 +1,8 @@
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<model id="sec_org_user_rel" name="用户组织信息模型">
3
    <attr id="role_user_rel_id" type="int" name="角色关联用户标识"/>
3
    <attr id="org_user_rel_id" type="int" name="角色关联用户标识"/>
4 4
    <attr id="user_id" type="int" name="用户标识"/>
5
    <attr id="role_id" type="int" name="角色标识"/>
5
    <attr id="organize_id" type="int" name="角色标识"/>
6 6
    <attr id="valid_date" type="datetime" name="生效日期"/>
7 7
    <attr id="expire_date" type="datetime" name="失效日期"/>
8 8
    <attr id="data_status" type="string" name="数据状态"/>
@ -53,4 +53,23 @@
53 53
            <param value="uppercase" type="string"/>
54 54
        </function>
55 55
    </behavior>
56
    
57
    <behavior id="selectOrgUserRelByUserId" name="根据组织下用户信息列表">
58
        <sql conn="auth">
59
            <![CDATA[
60
            select ORG_USER_REL_ID, ORGANIZE_ID, USER_ID, VALID_DATE, EXPIRE_DATE, DATA_STATUS, CREATE_DATE, CREATE_OP_ID, CREATE_ORG_ID, DONE_CODE, DONE_DATE, OP_ID, ORG_ID, MGMT_DISTRICT, MGMT_COUNTY, REGION_ID, TENANT_CODE
61
            from sec_org_user_rel
62
            WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
63
        ]]>
64
        </sql>
65
    </behavior>
66
    
67
    <behavior id="deleteOrgUserRelByUserId" name="根据组织下用户信息列表">
68
        <sql conn="auth">
69
            <![CDATA[
70
            delete from sec_org_user_rel
71
            WHERE USER_ID = #{user_id} and ORGANIZE_ID = #{organize_id} ;
72
        ]]>
73
        </sql>
74
    </behavior>
56 75
</model>

+ 29 - 0
qb-auth-server/src/main/resources/flow/org/org_user_rel_delete_by_cond.xml

@ -0,0 +1,29 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_delete"
3
            name="删除组织下人员信息"
4
            desc="删除组织下人员信息">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_org_user_rel"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="deletetOrgUserRel">
11
        <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
12
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
13
    </start>
14
15
    <action id="deletetOrgUserRel" name="删除组织下人员信息" next="end">
16
        <input>
17
            <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
18
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
19
        </input>
20
        <behavior model="sec_org_user_rel" id="deleteOrgUserRelByUserId"/>
21
        <output>
22
            <var key="result"/>
23
        </output>
24
    </action>
25
26
    <end id="end" name="结束节点">
27
        <var key="result"/>
28
    </end>
29
</logic-flow>

+ 27 - 0
qb-auth-server/src/main/resources/flow/org/org_user_rel_insert.xml

@ -0,0 +1,27 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_insert"
3
            name="新增组织下人员信息"
4
            desc="新增组织下人员信息">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_org_user_rel"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="insertOrgUserRel">
11
        <var key="org_user_rel" model="sec_org_user_rel" attrExists="false"/>
12
    </start>
13
14
    <action id="insertOrgUserRel" name="新增组织下人员信息" next="end">
15
        <input>
16
            <var key="org_user_rel"/>
17
        </input>
18
        <behavior model="sec_org_user_rel" id="insertOrgUserRel"/>
19
        <output>
20
            <var key="insert_num"/>
21
        </output>
22
    </action>
23
24
    <end id="end" name="结束节点">
25
        <var key="insert_num"/>
26
    </end>
27
</logic-flow>

+ 27 - 0
qb-auth-server/src/main/resources/flow/org/org_user_rel_select.xml

@ -0,0 +1,27 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_select"
3
            name="查询组织下人员信息"
4
            desc="查询组织下人员信息">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_org_user_rel"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="selectOrgUserRel">
11
        <var key="org_user_rel" model="sec_org_user_rel" attrExists="false"/>
12
    </start>
13
14
    <action id="selectOrgUserRel" name="查询组织下人员信息" next="end">
15
        <input>
16
            <var key="org_user_rel"/>
17
        </input>
18
        <behavior model="sec_org_user_rel" id="selectOrgUserRel"/>
19
        <output>
20
            <var key="org_user_rel"/>
21
        </output>
22
    </action>
23
24
    <end id="end" name="结束节点">
25
        <var key="org_user_rel"/>
26
    </end>
27
</logic-flow>

+ 29 - 0
qb-auth-server/src/main/resources/flow/org/org_user_rel_select_by_cond.xml

@ -0,0 +1,29 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<logic-flow id="org_user_rel_select_by_cond"
3
            name="查询组织下人员信息"
4
            desc="查询组织下人员信息">
5
    <declare>
6
        <!-- 引入model定义 -->
7
        <import model="sec_org_user_rel"/>
8
    </declare>
9
10
    <start id="start" name="开始节点" next="selectOrgUserRel">
11
        <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
12
        <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
13
    </start>
14
15
    <action id="selectOrgUserRel" name="查询用户" next="end">
16
        <input>
17
            <var key="user_id" model="sec_org_user_rel" attr="user_id"/>
18
            <var key="organize_id" model="sec_org_user_rel" attr="organize_id"/>
19
        </input>
20
        <behavior model="sec_org_user_rel" id="selectOrgUserRelByUserId"/>
21
        <output>
22
            <var key="org_user_rel_list"/>
23
        </output>
24
    </action>
25
26
    <end id="end" name="结束节点">
27
        <var key="org_user_rel_list"/>
28
    </end>
29
</logic-flow>

+ 0 - 0
qb-auth-server/src/main/resources/flow/org/user_role_delete.xml


+ 0 - 0
qb-auth-server/src/main/resources/flow/org/user_role_insert.xml


+ 0 - 0
qb-auth-server/src/main/resources/flow/org/user_role_select.xml


+ 1 - 1
qb-auth-server/src/main/resources/flow/user/model/sec_user.xml

@ -6,7 +6,7 @@
6 6
    <attr id="user_account" type="string" name="用户账号"/>
7 7
    <attr id="gender" type="string" name="性别"/>
8 8
    <attr id="avatar_name" type="string" name="用户头像"/>
9
    <attr id="avatar_path" type="string" name="用户头像路径"/>
9
    <attr id="avatar_path" type="string" name="用户头像路径" exists="false"/>
10 10
    <attr id="email" type="string" name="电子邮箱"/>
11 11
    <attr id="link_phone" type="string" name="电话号码">
12 12
        <validateString equal="11"/>

+ 1 - 0
qb-auth-server/src/main/resources/ipu-spring-mvc.xml

@ -12,4 +12,5 @@
12 12
13 13
    <context:component-scan base-package="com.ipu.logicflow.server" />
14 14
    <context:component-scan base-package="com.ai.ipu.portal" />
15
    <context:component-scan base-package="com.ai.ipu.nacos" />
15 16
</beans>

+ 124 - 0
qb-auth-server/src/test/java/com/ipu/logicflow/server/OrgUserRelTest.java

@ -0,0 +1,124 @@
1
package com.ipu.logicflow.server;
2
3
import com.ai.ipu.data.JMap;
4
import com.ai.ipu.data.impl.JsonMap;
5
import com.alibaba.fastjson.JSONObject;
6
import com.nuosi.flow.logic.LogicFlowEngine;
7
import com.nuosi.flow.logic.inject.initial.InitialMethod;
8
import com.nuosi.flow.util.LogicFlowUtil;
9
import org.junit.Assert;
10
import org.junit.Before;
11
import org.junit.Test;
12
13
import java.io.IOException;
14
15
/**
16
 * <p>desc: 用户组织信息管理逻辑的测试 </p>
17
 * <p>date: 2022/3/30 13:44 </p>
18
 *
19
 * @author weihf@asiainfo.com
20
 * @version v1.0.0
21
 */
22
public class OrgUserRelTest {
23
24
    @Test
25
    public void testInsertOrgUserRel(){
26
        JMap result = null;
27
        try {
28
            JMap param = new JsonMap();
29
            param.put("org_user_rel", new JSONObject(createOrgUserRel()));
30
            result = LogicFlowEngine.execute("org_user_rel_insert", param);
31
            System.out.println("执行结果:" + result);
32
            Assert.assertEquals("新增组织下人员信息失败!", result.getInt("insert_num"), 1);
33
        } catch (Exception e) {
34
            System.out.println("错误信息:" + e.getMessage());
35
            Assert.assertTrue(false);
36
        }
37
    }
38
    
39
    @Test
40
    public void testSelectOrgUserRel() {
41
        JMap param = new JsonMap();
42
        JSONObject org_user_rel = new JSONObject();
43
        org_user_rel.put("ORG_USER_REL_ID", "1");
44
        param.put("org_user_rel", org_user_rel);
45
        try{
46
            JMap result = LogicFlowEngine.execute("org_user_rel_select", param);
47
            System.out.println("执行结果:" + result);
48
            Assert.assertTrue(true);
49
        }catch (Exception e){
50
            e.printStackTrace();
51
            System.out.println("错误信息:" + e.getMessage());
52
            Assert.assertTrue(false);
53
        }
54
    }
55
    
56
    @Test
57
    public void testSelectOrgUserRelByUserId() {
58
        JMap param = new JsonMap();
59
        param.put("organize_id", 33);
60
        param.put("user_id", 308075);
61
62
        try{
63
            JMap result = LogicFlowEngine.execute("org_user_rel_select_by_cond", param);
64
            System.out.println("执行结果:" + result);
65
            Assert.assertTrue(true);
66
        }catch (Exception e){
67
            e.printStackTrace();
68
            System.out.println("错误信息:" + e.getMessage());
69
            Assert.assertTrue(false);
70
        }
71
    }
72
73
    @Test
74
    public void testDeleteOrgUserRelByUserId(){
75
    	JMap param = new JsonMap();
76
        param.put("organize_id", 33);
77
        param.put("user_id", 308075);
78
        JMap result = null;
79
        try {
80
            
81
            result = LogicFlowEngine.execute("org_user_rel_delete", param);
82
            System.out.println("执行结果:" + result);
83
            Assert.assertTrue(true);
84
        } catch (Exception e) {
85
            System.out.println("错误信息:" + e.getMessage());
86
            Assert.assertTrue(false);
87
        }
88
    }
89
    @Before
90
    public void before() throws IOException {
91
        String[] models = {
92
                "flow/org/model/sec_org_user_rel.xml",
93
                "flow/user/model/sec_user.xml",
94
                "flow/org/model/sec_organize.xml"
95
        };
96
        LogicFlowUtil.loadLogicModels(models);
97
98
        String[] flows = {
99
                "flow/org/org_user_rel_insert.xml",
100
                "flow/org/org_user_rel_delete_by_cond.xml",
101
                "flow/org/org_user_rel_select.xml",
102
                "flow/org/org_user_rel_select_by_cond.xml",
103
                "flow/user/user_select_by_id.xml",
104
                "flow/org/organize_select.xml"
105
        };
106
107
        LogicFlowUtil.loadLogicFlows(flows);
108
    }
109
110
    private JMap createOrgUserRel() throws Exception {
111
        //String org_user_rel_id = String.valueOf(System.currentTimeMillis()).substring(7);
112
        JMap menuParam = new JsonMap();
113
        //[ORG_USER_REL_ID]字段为自增字段
114
        //menuParam.put("ORG_USER_REL_ID", org_user_rel_id);
115
        menuParam.put("ORGANIZE_ID", "33");
116
        menuParam.put("USER_ID", "308075");
117
        menuParam.put("DATA_STATUS", "1");      
118
        menuParam.put("CREATE_DATE", new InitialMethod().getDatetime());
119
        menuParam.put("CREATE_OP_ID", "1");
120
        menuParam.put("DONE_DATE", new InitialMethod().getDatetime());
121
        menuParam.put("OP_ID", "1");
122
        return menuParam;
123
    }
124
}

+ 96 - 5
qb-auth-server/src/test/java/com/ipu/logicflow/server/UserTest.java

@ -41,7 +41,7 @@ public class UserTest {
41 41
    public void testSelectUser() {
42 42
        JMap param = new JsonMap();
43 43
        JSONObject user = new JSONObject();
44
        user.put("user_id", "331843");
44
        user.put("user_id", "308075");
45 45
        param.put("user", user);
46 46
        try{
47 47
            JMap result = LogicFlowEngine.execute("user_select", param);
@ -57,7 +57,7 @@ public class UserTest {
57 57
    @Test
58 58
    public void testSelectUserById() {
59 59
        JMap param = new JsonMap();
60
        param.put("user_id", "331843");
60
        param.put("user_id", "308075");
61 61
        try{
62 62
            JMap result = LogicFlowEngine.execute("user_select_by_id", param);
63 63
            System.out.println("执行结果:" + result);
@ -85,7 +85,7 @@ public class UserTest {
85 85
86 86
    @Test
87 87
    public void testDisableUser(){
88
        String user_id = "331843";
88
        String user_id = "308075";
89 89
        JSONObject user_cond = new JSONObject();
90 90
        user_cond.put("user_id", user_id);
91 91
@ -116,7 +116,7 @@ public class UserTest {
116 116
117 117
    @Test
118 118
    public void testDisableUserWithAggregate(){
119
        String user_id = "331843";
119
        String user_id = "308075";
120 120
        JMap param = new JsonMap();
121 121
        param.put("user_id", user_id);
122 122
        try{
@ -144,7 +144,7 @@ public class UserTest {
144 144
145 145
    @Test
146 146
    public void testEnableUser(){
147
        String user_id = "331843";
147
        String user_id = "308075";
148 148
        JSONObject user_cond = new JSONObject();
149 149
        user_cond.put("user_id", user_id);
150 150
@ -172,6 +172,97 @@ public class UserTest {
172 172
            Assert.assertTrue(false);
173 173
        }
174 174
    }
175
    
176
    @Test
177
    public void testUpdateUser(){
178
        String user_id = "308075";
179
        JSONObject user_cond = new JSONObject();
180
        user_cond.put("user_id", user_id);
181
182
        JSONObject user = new JSONObject();       		
183
        user.put("NICK_NAME", "嘉信立恒管理员");
184
        user.put("USER_ACCOUNT", "admin");
185
        user.put("GENDER", "1");
186
        user.put("AVATAR_NAME", "head.jpg");
187
        user.put("SURNAME", "刘恒");
188
        user.put("EMAIL", "tls@163.com");
189
        user.put("SEC_LEVEL", "2");
190
        user.put("LINK_PHONE", "18935548888");
191
        user.put("PASSWORD", "qawsx");       
192
        user.put("done_date", new InitialMethod().getDatetime());
193
        user.put("op_id", "1");
194
195
        JMap param = new JsonMap();
196
        param.put("user_cond", user_cond);
197
        param.put("user", user);
198
        try{
199
            JMap result = LogicFlowEngine.execute("user_update", param);
200
            System.out.println("执行结果:" + result);
201
            Assert.assertTrue(true);
202
203
        }catch (Exception e){
204
            e.printStackTrace();
205
            System.out.println("错误信息:" + e.getMessage());
206
            Assert.assertTrue(false);
207
        }
208
    }
209
210
    @Test
211
    public void testDeleteUser(){
212
        String user_id = "308075";
213
        JSONObject user_cond = new JSONObject();
214
        user_cond.put("user_id", user_id);
215
216
        JSONObject user = new JSONObject();
217
        user.put("DATA_STATUS", "0");
218
        user.put("done_date", new InitialMethod().getDatetime());
219
        user.put("op_id", "1");
220
221
        JMap param = new JsonMap();
222
        param.put("user_cond", user_cond);
223
        param.put("user", user);
224
        try{
225
            JMap result = LogicFlowEngine.execute("user_update", param);
226
            System.out.println("执行结果:" + result);
227
            Assert.assertTrue(true);
228
229
            // 还原数据
230
            user.put("DATA_STATUS", "1");
231
            user.put("op_id", user_id);
232
            param.put("user", user);
233
            LogicFlowEngine.execute("user_update", param);
234
        }catch (Exception e){
235
            e.printStackTrace();
236
            System.out.println("错误信息:" + e.getMessage());
237
            Assert.assertTrue(false);
238
        }
239
    }
240
    
241
    @Test
242
    public void testResetUserPasswd(){
243
        String user_id = "308075";
244
        JSONObject user_cond = new JSONObject();
245
        user_cond.put("user_id", user_id);
246
247
        JSONObject user = new JSONObject();       		
248
        user.put("PASSWORD", "qwertyu");       
249
        user.put("done_date", new InitialMethod().getDatetime());
250
        user.put("op_id", "1");
251
252
        JMap param = new JsonMap();
253
        param.put("user_cond", user_cond);
254
        param.put("user", user);
255
        try{
256
            JMap result = LogicFlowEngine.execute("user_update", param);
257
            System.out.println("执行结果:" + result);
258
            Assert.assertTrue(true);
259
260
        }catch (Exception e){
261
            e.printStackTrace();
262
            System.out.println("错误信息:" + e.getMessage());
263
            Assert.assertTrue(false);
264
        }
265
    }
175 266
176 267
    @Before
177 268
    public void before() throws IOException {