From 37d76adf129d41f65342874886c43db450ecb0ef Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 12 Mar 2021 17:16:55 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev
---
screen-api/src/main/java/com/moral/api/mapper/MenuMapper.java | 4
screen-api/src/main/resources/mapper/GroupMapper.xml | 33 +++-
screen-api/src/main/resources/mapper/MenuMapper.xml | 20 ++
screen-api/src/main/resources/mapper/UserMapper.xml | 52 ++----
screen-api/src/main/resources/mapper/OrganizationMapper.xml | 45 +++--
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java | 135 ++++++++++++++--
screen-api/src/main/java/com/moral/api/controller/WebController.java | 24 +-
screen-api/src/main/resources/application-dev.yml | 20 +-
screen-common/src/main/java/com/moral/util/WebUtils.java | 44 +++++
screen-api/src/main/java/com/moral/api/service/UserService.java | 2
screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java | 71 ++++++++
screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java | 4
screen-api/src/main/java/com/moral/api/mapper/UserMapper.java | 2
screen-api/src/main/java/com/moral/api/entity/User.java | 7
screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java | 5
15 files changed, 344 insertions(+), 124 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java b/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
index b63690d..db90547 100644
--- a/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
+++ b/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
@@ -1,12 +1,21 @@
package com.moral.api.config.redis;
+import java.time.Duration;
+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.RedisPassword;
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
+import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
+import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -16,9 +25,9 @@
@Configuration
public class RedisConfig {
- @Bean(name="redisTemplate")
+ @Bean(name = "redisTemplate")
@ConditionalOnMissingBean(StringRedisTemplate.class) //������������������ ���������������������RedisTemplate ������������ ������������������
- public RedisTemplate<String,Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ public RedisTemplate<String, Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
@@ -39,4 +48,62 @@
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
+
+ @Bean(name = "tokenRedisTemplate")
+ public RedisTemplate<String, Object> getTokenRedisTemplate(
+ @Value("${spring.tokenRedis.host}") String hostName,
+ @Value("${spring.tokenRedis.password}") String password,
+ @Value("${spring.tokenRedis.port}") int port,
+ @Value("${spring.tokenRedis.database}") int database,
+ @Value("${spring.tokenRedis.pool.max-active}") int maxActive,
+ @Value("${spring.tokenRedis.pool.max-idle}") int maxIdle,
+ @Value("${spring.tokenRedis.pool.min-idle}") int minIdle,
+ @Value("${spring.tokenRedis.pool.max-wait}") long maxWait,
+ @Value("${spring.tokenRedis.timeout}") long timeout
+ ) {
+ RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
+ configuration.setHostName(hostName);
+ configuration.setPort(port);
+ configuration.setDatabase(database);
+ RedisPassword redisPassword = RedisPassword.of(password);
+ configuration.setPassword(redisPassword);
+
+ GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
+ genericObjectPoolConfig.setMaxTotal(maxActive);
+ genericObjectPoolConfig.setMinIdle(minIdle);
+ genericObjectPoolConfig.setMaxIdle(maxIdle);
+ genericObjectPoolConfig.setMaxWaitMillis(maxWait);
+
+ LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder builder = LettucePoolingClientConfiguration.builder();
+ builder.poolConfig(genericObjectPoolConfig);
+ builder.commandTimeout(Duration.ofSeconds(timeout));
+ LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(configuration, builder.build());
+ connectionFactory.afterPropertiesSet();
+
+ return createRedisTemplate(connectionFactory);
+ }
+
+ public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+
+ Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+ jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // key������String������������������
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ // hash���key���������String������������������
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ // valuevalue������jackson���������������
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+ // hash���value������jackson���������������
+ redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
}
diff --git a/screen-api/src/main/java/com/moral/api/controller/WebController.java b/screen-api/src/main/java/com/moral/api/controller/WebController.java
index 2d7943b..225d1a5 100644
--- a/screen-api/src/main/java/com/moral/api/controller/WebController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/WebController.java
@@ -23,6 +23,7 @@
import com.moral.api.service.UserService;
import com.moral.constant.ResultMessage;
import com.moral.redis.RedisUtil;
+import com.moral.util.WebUtils;
@Slf4j
@Api(tags = {"������"})
@@ -36,27 +37,22 @@
@Autowired
private GroupService groupService;
- /**
- * @param account ������
- * @param password ������
- * @Auther jinpengyong
- * @Description web������
- */
@ApiOperation(value = "������", notes = "������")
@ApiImplicitParams({
- @ApiImplicitParam(name = "account", value = "������", required = true, paramType = "path", dataType = "String"),
- @ApiImplicitParam(name = "password", value = "������", required = true, paramType = "path", dataType = "String")
+ @ApiImplicitParam(name = "account", value = "������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "password", value = "������", required = true, paramType = "query", dataType = "String")
})
- @RequestMapping(value = "login/{account}/{password}", method = RequestMethod.GET)
- public ResultMessage login(@PathVariable("account") String account, @PathVariable("password") String password) {
- if (account == null || password == null) {
- return ResultMessage.fail("���������������������������");
+ @RequestMapping(value = "login", method = RequestMethod.POST)
+ public ResultMessage login(HttpServletRequest request) {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
+ return ResultMessage.fail("������������������������������������");
}
- Map<String, Object> map = userService.login(account, password);
+ Map<String, Object> map = userService.login(parameters);
if (map.get("token") == null) {
return ResultMessage.fail(map.get("msg").toString());
}
- return ResultMessage.ok(map.get("token"));
+ return ResultMessage.ok(map);
}
@ApiOperation(value = "������", notes = "������")
diff --git a/screen-api/src/main/java/com/moral/api/entity/User.java b/screen-api/src/main/java/com/moral/api/entity/User.java
index 4df8c9f..e0d33e1 100644
--- a/screen-api/src/main/java/com/moral/api/entity/User.java
+++ b/screen-api/src/main/java/com/moral/api/entity/User.java
@@ -95,13 +95,6 @@
private String isDelete;
- @TableField(exist = false)
- private Set<Group> groups;
-
- @TableField(exist = false)
- private Set<Menu> menus;
-
-
@Override
protected Serializable pkVal() {
return this.id;
diff --git a/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java b/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java
index e63cef6..12dc29d 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/GroupMapper.java
@@ -1,5 +1,8 @@
package com.moral.api.mapper;
+import java.util.List;
+import java.util.Map;
+
import com.moral.api.entity.Group;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -13,4 +16,6 @@
*/
public interface GroupMapper extends BaseMapper<Group> {
+ List<Map<String, Object>> selectUserGroup(int userId);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/MenuMapper.java b/screen-api/src/main/java/com/moral/api/mapper/MenuMapper.java
index 2fafa8f..82bee80 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/MenuMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/MenuMapper.java
@@ -1,5 +1,7 @@
package com.moral.api.mapper;
+import java.util.List;
+
import com.moral.api.entity.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -13,4 +15,6 @@
*/
public interface MenuMapper extends BaseMapper<Menu> {
+ List<Menu> selectUserMenu(int userId);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java b/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
index 673d26f..bf0bfe6 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
@@ -1,5 +1,7 @@
package com.moral.api.mapper;
+import java.util.Map;
+
import com.moral.api.entity.Organization;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -13,4 +15,6 @@
*/
public interface OrganizationMapper extends BaseMapper<Organization> {
+ Map<String, Object> selectOrganizationById(int id);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
index db186d8..aedcc6a 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
@@ -17,7 +17,5 @@
*/
public interface UserMapper extends BaseMapper<User> {
- Set<Group> selectUserGroup(int userId);
- Set<Menu> selectUserMenu(int userId);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java
index 242936d..a514410 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -17,7 +17,7 @@
*/
public interface UserService extends IService<User> {
- Map<String, Object> login(String account, String password);
+ Map<String, Object> login(Map<String,Object> parameters);
Map<String, Object> addUser(User user, Integer currentUserId);
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index 2b73e59..5c14a2f 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -1,26 +1,29 @@
package com.moral.api.service.impl;
-import io.swagger.models.auth.In;
-
import java.util.ArrayList;
-import java.util.Date;
+import java.util.Comparator;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.moral.api.entity.Group;
import com.moral.api.entity.Menu;
import com.moral.api.entity.User;
+import com.moral.api.mapper.GroupMapper;
+import com.moral.api.mapper.MenuMapper;
+import com.moral.api.mapper.OrganizationMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.moral.redis.RedisUtil;
+import com.moral.util.AESUtils;
+import com.moral.util.MD5Utils;
+import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
@@ -37,32 +40,120 @@
@Autowired
private UserMapper userMapper;
+ @Autowired
+ private GroupMapper groupMapper;
+
+ @Autowired
+ private MenuMapper menuMapper;
+
+ @Autowired
+ private OrganizationMapper organizationMapper;
+
+ @Value("${AES.KEY}")
+ private String AESKey;
+
@Override
- public Map<String, Object> login(String account, String password) {
- Map<String, Object> resultMap = new HashMap<>();
+ public Map<String, Object> login(Map<String, Object> parameters) {
+ Map<String, Object> resultMap = new LinkedHashMap<>();
+ //������������
+ String account = parameters.get("account").toString();
+ String password = parameters.get("password").toString();
+ //������
+ account = AESUtils.decrypt(account, AESKey);
+ password = AESUtils.decrypt(password, AESKey);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("account", account).eq("password", password).eq("is_Delete", "0");
+ //������������
+ queryWrapper.eq("account", account);
User user = userMapper.selectOne(queryWrapper);
String msg;
- String token = null;
if (user == null) {
- msg = "������������������������";
- } else if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) {
- msg = "���������������������";
+ msg = "������������������";
} else {
- msg = "������������";
- token = user.getId() + "-" + UUID.randomUUID().toString().replaceAll("-", "");
- Set<Group> groups = userMapper.selectUserGroup(user.getId());
- Set<Menu> menus = userMapper.selectUserMenu(user.getId());
- user.setGroups(groups);
- user.setMenus(menus);
- RedisUtil.set(token, user, 1296000);
+ if (!MD5Utils.saltMD5Verify(password, user.getPassword())) {//������������
+ msg = "������������";
+ } else if ("1".equals(user.getIsDelete())) {
+ msg = "������������������";
+ } else if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) {
+ msg = "���������������������";
+ } else {
+ int userId = user.getId();
+ //������������������
+ Map<String, Object> orgMap = organizationMapper.selectOrganizationById(user.getOrganizationId());
+ String locationCode = orgMap.get(orgMap.get("location_level").toString()).toString();
+ //������������������
+ Map<String, Object> userInfo = new LinkedHashMap<>();
+ userInfo.put("userId", userId);
+ userInfo.put("account", user.getAccount());
+ userInfo.put("userName", user.getUserName());
+ userInfo.put("organizationId", user.getOrganizationId());
+ userInfo.put("locationCode", locationCode);
+ List<Map<String, Object>> groups = groupMapper.selectUserGroup(userId);
+ userInfo.put("groups", groups);
+ userInfo.putAll(getMenus(userId));
+ //������token������������redis
+ String token = TokenUtils.getToken(user.getId().toString(), userInfo);
+ resultMap.put("token", token);
+ resultMap.putAll(userInfo);
+ return resultMap;
+ }
}
- resultMap.put("token", token);
resultMap.put("msg", msg);
return resultMap;
}
+ //������userId������������������������
+ private Map<String, Object> getMenus(int userId) {
+ List<Menu> allMenus = menuMapper.selectUserMenu(userId);
+ Map<String, Object> resultMap = new LinkedHashMap<>();
+ //���������������
+ List<Menu> oneMenu = allMenus.stream()
+ .filter(o -> o.getParentId().equals(0))
+ .sorted(Comparator.comparing(Menu::getOrder))
+ .collect(Collectors.toList());
+
+ List<Map<String, Object>> newList = new ArrayList<>();
+ //������������������
+ oneMenu.forEach(o -> {
+ Map<String, Object> menuMap = new LinkedHashMap<>();
+ menuMap.put("id", o.getId());
+ menuMap.put("name", o.getName());
+ menuMap.put("url", o.getUrl());
+ menuMap.put("icon", o.getIcon());
+ menuMap.put("menus", getMenusByRecursion(o, allMenus));
+ newList.add(menuMap);
+ });
+ resultMap.put("menus", newList);
+ return resultMap;
+ }
+
+ //������������������������������������
+ private List<Map<String, Object>> getMenusByRecursion(Menu menu, List<Menu> menus) {
+ List<List<Map<String, Object>>> resultList = new ArrayList();
+ Menu newMenu = new Menu();
+ newMenu.setParentId(menu.getId());
+
+ //������������������������������
+ List<Menu> nextLevelMenus = menus.stream()
+ .filter(o -> o.getParentId().equals(menu.getId()))
+ .collect(Collectors.toList());
+ List<Map<String, Object>> list = new ArrayList<>();
+ if (nextLevelMenus.size() > 0) {
+ //���������������������������������������������������
+ nextLevelMenus.forEach(o -> {
+ Map<String, Object> menuMap = new LinkedHashMap<>();
+ menuMap.put("id", o.getId());
+ menuMap.put("name", o.getName());
+ menuMap.put("url", o.getUrl());
+ menuMap.put("icon", o.getIcon());
+ //���������������
+ menuMap.put("menus", getMenusByRecursion(o, menus));
+ list.add(menuMap);
+ });
+ resultList.add(list);
+ }
+ return list;
+ }
+
@Override
public Map<String, Object> addUser(User user, Integer userId) {
Map<String, Object> resultMap = new HashMap<>();
diff --git a/screen-api/src/main/resources/application-dev.yml b/screen-api/src/main/resources/application-dev.yml
index 082c9dc..b0a5c75 100644
--- a/screen-api/src/main/resources/application-dev.yml
+++ b/screen-api/src/main/resources/application-dev.yml
@@ -2,13 +2,13 @@
port: 8081
tomcat:
uri-encoding: UTF-8
- #���������������
+ #���������������
min-spare-threads: 500
- #���������������
+ #���������������
max-threads: 2500
- #���������������
+ #���������������
max-connections: 6500
- #������������������������
+ #������������������������
accept-count: 1000
spring:
profiles:
@@ -17,10 +17,10 @@
name: screen-api
redis:
#cluster:
- #nodes: 47.112.126.78:7001,47.112.126.78:7002,47.112.126.132:7003,47.112.126.132:7004,47.112.132.193:7005,47.112.132.193:7006
+ #nodes: 47.112.126.78:7001,47.112.126.78:7002,47.112.126.132:7003,47.112.126.132:7004,47.112.132.193:7005,47.112.132.193:7006
#password: test
#timeout: 500
- host: 39.97.177.149
+ host: 39.97.177.149
port: 6379
password: chenkaiyu111
timeout: 30000
@@ -41,7 +41,7 @@
port: 6379
password: chenkaiyu111
timeout: 30000
- database: 14
+ database: 15
pool:
max-active: 256
max-wait: 30000
@@ -77,9 +77,9 @@
field-strategy: NOT_EMPTY
db-type: MYSQL
configuration:
- map-underscore-to-camel-case: true
- call-setters-on-nulls: true
- log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ map-underscore-to-camel-case: true
+ call-setters-on-nulls: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
kafka:
listener:
diff --git a/screen-api/src/main/resources/mapper/GroupMapper.xml b/screen-api/src/main/resources/mapper/GroupMapper.xml
index dc67822..356729c 100644
--- a/screen-api/src/main/resources/mapper/GroupMapper.xml
+++ b/screen-api/src/main/resources/mapper/GroupMapper.xml
@@ -2,14 +2,29 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.GroupMapper">
- <!-- ������������������������ -->
- <resultMap id="BaseResultMap" type="com.moral.api.entity.Group">
- <id column="id" property="id" />
- <result column="group_name" property="groupName" />
- <result column="organization_id" property="organizationId" />
- <result column="create_time" property="createTime" />
- <result column="update_time" property="updateTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.Group">
+ <id column="id" property="id"/>
+ <result column="group_name" property="groupName"/>
+ <result column="organization_id" property="organizationId"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ </resultMap>
+ <resultMap id="GroupResultMap" type="java.util.LinkedHashMap">
+ <id column="id" property="id"/>
+ <result column="group_name" property="groupName"/>
+ <result column="organization_id" property="organizationId"/>
+ </resultMap>
+
+ <select id="selectUserGroup" resultMap="GroupResultMap">
+ SELECT g.id,g.group_name
+ FROM `group` g,`user_group` ug
+ WHERE ug.user_id = #{userId}
+ AND ug.group_id = g.id
+ AND g.is_delete = 0
+ AND ug.is_delete = 0
+ ORDER BY g.id
+ </select>
</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/MenuMapper.xml b/screen-api/src/main/resources/mapper/MenuMapper.xml
index 93e8258..8ae2d80 100644
--- a/screen-api/src/main/resources/mapper/MenuMapper.xml
+++ b/screen-api/src/main/resources/mapper/MenuMapper.xml
@@ -15,4 +15,24 @@
<result column="is_delete" property="isDelete"/>
</resultMap>
+ <resultMap id="MenuResultMap" type="com.moral.api.entity.Menu">
+ <id column="id" property="id"/>
+ <result column="name" property="name"/>
+ <result column="url" property="url"/>
+ <result column="icon" property="icon"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="order" property="order" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <select id="selectUserMenu" resultMap="MenuResultMap">
+ SELECT DISTINCT m.id,m.name,m.url,m.icon,m.parent_id,m.order
+ FROM `user_group` ug,`group_menu` gm,`menu` m
+ WHERE ug.user_id = #{userId}
+ AND ug.group_id = gm.group_id
+ AND gm.menu_id = m.id
+ AND ug.is_delete = 0
+ AND gm.is_delete = 0
+ AND m.is_delete = 0
+ ORDER by m.`order`
+ </select>
</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/OrganizationMapper.xml b/screen-api/src/main/resources/mapper/OrganizationMapper.xml
index de7e2ec..9f4ec9b 100644
--- a/screen-api/src/main/resources/mapper/OrganizationMapper.xml
+++ b/screen-api/src/main/resources/mapper/OrganizationMapper.xml
@@ -2,26 +2,29 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.OrganizationMapper">
- <!-- ������������������������ -->
- <resultMap id="BaseResultMap" type="com.moral.api.entity.Organization">
- <id column="id" property="id" />
- <result column="parent_id" property="parentId" />
- <result column="admin_user_id" property="adminUserId" />
- <result column="name" property="name" />
- <result column="province_code" property="provinceCode" />
- <result column="city_code" property="cityCode" />
- <result column="area_code" property="areaCode" />
- <result column="town_code" property="townCode" />
- <result column="village_code" property="villageCode" />
- <result column="location_level" property="locationLevel" />
- <result column="address" property="address" />
- <result column="phone" property="phone" />
- <result column="email" property="email" />
- <result column="wechat" property="wechat" />
- <result column="create_time" property="createTime" />
- <result column="update_time" property="updateTime" />
- <result column="expire_time" property="expireTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.Organization">
+ <id column="id" property="id"/>
+ <result column="parent_id" property="parentId"/>
+ <result column="admin_user_id" property="adminUserId"/>
+ <result column="name" property="name"/>
+ <result column="province_code" property="provinceCode"/>
+ <result column="city_code" property="cityCode"/>
+ <result column="area_code" property="areaCode"/>
+ <result column="town_code" property="townCode"/>
+ <result column="village_code" property="villageCode"/>
+ <result column="location_level" property="locationLevel"/>
+ <result column="address" property="address"/>
+ <result column="phone" property="phone"/>
+ <result column="email" property="email"/>
+ <result column="wechat" property="wechat"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="expire_time" property="expireTime"/>
+ <result column="is_delete" property="isDelete"/>
+ </resultMap>
+ <select id="selectOrganizationById" resultType="java.util.Map">
+ SELECT * FROM organization WHERE id= #{orgId}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/UserMapper.xml b/screen-api/src/main/resources/mapper/UserMapper.xml
index 14cd3a9..58ed1f3 100644
--- a/screen-api/src/main/resources/mapper/UserMapper.xml
+++ b/screen-api/src/main/resources/mapper/UserMapper.xml
@@ -2,41 +2,21 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.UserMapper">
- <!-- ������������������������ -->
- <resultMap id="BaseResultMap" type="com.moral.api.entity.User">
- <id column="id" property="id" />
- <result column="is_admin" property="isAdmin" />
- <result column="account" property="account" />
- <result column="password" property="password" />
- <result column="user_name" property="userName" />
- <result column="organization_id" property="organizationId" />
- <result column="email" property="email" />
- <result column="mobile" property="mobile" />
- <result column="wechat" property="wechat" />
- <result column="create_time" property="createTime" />
- <result column="update_time" property="updateTime" />
- <result column="expire_time" property="expireTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.User">
+ <id column="id" property="id"/>
+ <result column="is_admin" property="isAdmin"/>
+ <result column="account" property="account"/>
+ <result column="password" property="password"/>
+ <result column="user_name" property="userName"/>
+ <result column="organization_id" property="organizationId"/>
+ <result column="email" property="email"/>
+ <result column="mobile" property="mobile"/>
+ <result column="wechat" property="wechat"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="expire_time" property="expireTime"/>
+ <result column="is_delete" property="isDelete"/>
+ </resultMap>
- <select id="selectUserGroup" resultType="com.moral.api.entity.Group">
- SELECT g.*
- FROM `group` g,`user_group` ug
- WHERE ug.user_id = #{userId}
- AND ug.group_id = g.id
- AND g.is_delete = 0
- AND ug.is_delete = 0
- </select>
-
- <select id="selectUserMenu" resultType="com.moral.api.entity.Menu">
- SELECT DISTINCT m.*
- FROM `user_group` ug,`group_menu` gm,`menu` m
- WHERE ug.user_id = #{userId}
- and ug.group_id = gm.group_id
- and gm.menu_id = m.id
- and ug.is_delete = 0
- and gm.is_delete = 0
- and m.is_delete = 0
- ORDER by m.`order`
- </select>
</mapper>
\ No newline at end of file
diff --git a/screen-common/src/main/java/com/moral/util/WebUtils.java b/screen-common/src/main/java/com/moral/util/WebUtils.java
new file mode 100644
index 0000000..474781e
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/util/WebUtils.java
@@ -0,0 +1,44 @@
+package com.moral.util;
+
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.ServletRequest;
+
+import org.springframework.util.Assert;
+import org.springframework.util.ObjectUtils;
+
+public class WebUtils extends org.springframework.web.util.WebUtils {
+ public static Map<String, Object> getParametersStartingWith(ServletRequest request, String prefix) {
+ Assert.notNull(request, "Request must not be null");
+ Enumeration<String> paramNames = request.getParameterNames();
+ Map<String, Object> params = new TreeMap<String, Object>();
+ if (prefix == null) {
+ prefix = "";
+ }
+ while (paramNames != null && paramNames.hasMoreElements()) {
+ String paramName = paramNames.nextElement();
+ if ("".equals(prefix) || paramName.startsWith(prefix)) {
+ String unprefixed = paramName.substring(prefix.length());
+ String[] values = request.getParameterValues(paramName);
+ if (values == null || values.length == 0 ) {
+ // Do nothing, no values found at all.
+ }
+ else if (values.length > 1) {
+ params.put(unprefixed, values);
+ }
+ else {
+ if (!ObjectUtils.isEmpty(values[0]) && !"null".equalsIgnoreCase(values[0])) {
+ if ("sorter".equals(unprefixed)) {
+ params.put(unprefixed, values[0].replace("end", ""));
+ } else {
+ params.put(unprefixed, values[0]);
+ }
+ }
+ }
+ }
+ }
+ return params;
+ }
+}
\ No newline at end of file
--
Gitblit v1.8.0