From e442e98a198d67994e6dce01fd88e163291fd40c Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Fri, 12 Mar 2021 09:52:39 +0800 Subject: [PATCH] api登陆更新 --- 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