diff --git a/bonus-common/bonus-common-redis/pom.xml b/bonus-common/bonus-common-redis/pom.xml index 8fd4cea..4f57eb0 100644 --- a/bonus-common/bonus-common-redis/pom.xml +++ b/bonus-common/bonus-common-redis/pom.xml @@ -28,7 +28,11 @@ com.bonus bonus-common-core - + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + diff --git a/bonus-common/bonus-common-redis/src/main/java/com/bonus/common/redis/configure/RedisConfig.java b/bonus-common/bonus-common-redis/src/main/java/com/bonus/common/redis/configure/RedisConfig.java index 702567c..729b02f 100644 --- a/bonus-common/bonus-common-redis/src/main/java/com/bonus/common/redis/configure/RedisConfig.java +++ b/bonus-common/bonus-common-redis/src/main/java/com/bonus/common/redis/configure/RedisConfig.java @@ -1,15 +1,28 @@ package com.bonus.common.redis.configure; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.support.NullValue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import java.io.IOException; + /** * redis配置 * @@ -20,6 +33,8 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; @AutoConfigureBefore(RedisAutoConfiguration.class) public class RedisConfig extends CachingConfigurerSupport { + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + @Bean @SuppressWarnings(value = { "unchecked", "rawtypes" }) public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) @@ -28,6 +43,7 @@ public class RedisConfig extends CachingConfigurerSupport template.setConnectionFactory(connectionFactory); FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class); +// RedisSerializer serializer = new GenericJackson2JsonRedisSerializer(OBJECT_MAPPER); // 使用StringRedisSerializer来序列化和反序列化redis的key值 template.setKeySerializer(new StringRedisSerializer()); @@ -40,4 +56,17 @@ public class RedisConfig extends CachingConfigurerSupport template.afterPropertiesSet(); return template; } + +// static { +// OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); +// OBJECT_MAPPER.registerModule(new JavaTimeModule()); +// OBJECT_MAPPER.registerModule((new SimpleModule()).addSerializer(new StdSerializer(NullValue.class) { +// public void serialize(NullValue value, JsonGenerator gen, SerializerProvider provider) throws IOException { +// gen.writeStartObject(); +// gen.writeStringField("@class", NullValue.class.getName()); +// gen.writeEndObject(); +// } +// })); +// OBJECT_MAPPER.activateDefaultTyping(OBJECT_MAPPER.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); +// } } diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java index 18b2dd0..55f2a41 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysRoleServiceImpl.java @@ -27,6 +27,7 @@ import com.bonus.system.api.domain.SysUser; import com.bonus.system.domain.SysRoleDept; import com.bonus.system.domain.SysRoleMenu; import com.bonus.system.service.ISysRoleService; +import org.springframework.util.CollectionUtils; /** * 角色 业务层处理 @@ -80,14 +81,7 @@ public class SysRoleServiceImpl implements ISysRoleService role.setRoleKey(str); } role.setCompanyId(SecurityUtils.getLoginUser().getSysUser().getCompanyId()); - List roles = roleMapper.selectRoleList(role); - for (SysRole r : roles) { - List areaIds = roleMapper.getAreaIdsByRoleId(r.getRoleId()); - List roleCanteenList = roleMapper.getDataIdsByRoleId(r.getRoleId()); - r.setAreaIds(areaIds.toArray(new String[areaIds.size()])); - r.setRoleCanteenList(roleCanteenList); - } - return roles; + return roleMapper.selectRoleList(role); } /** @@ -168,7 +162,12 @@ public class SysRoleServiceImpl implements ISysRoleService @Override public SysRole selectRoleById(Long roleId) { - return roleMapper.selectRoleById(roleId); + SysRole role = roleMapper.selectRoleById(roleId); + List areaIds = roleMapper.getAreaIdsByRoleId(role.getRoleId()); + List roleCanteenList = roleMapper.getDataIdsByRoleId(role.getRoleId()); + role.setAreaIds(areaIds.toArray(new String[areaIds.size()])); + role.setRoleCanteenList(roleCanteenList); + return role; } /** @@ -407,12 +406,13 @@ public class SysRoleServiceImpl implements ISysRoleService int rows = 1; // 新增角色与区域(数据权限)管理 List list = new ArrayList(); - for (String areaId : role.getAreaIds()) - { - SysRoleArea rd = new SysRoleArea(); - rd.setRoleId(role.getRoleId()); - rd.setAreaId(areaId); - list.add(rd); + if (role.getAreaIds() != null && role.getAreaIds().length > 0) { + for (String areaId : role.getAreaIds()) { + SysRoleArea rd = new SysRoleArea(); + rd.setRoleId(role.getRoleId()); + rd.setAreaId(areaId); + list.add(rd); + } } if (list.size() > 0) { @@ -431,13 +431,14 @@ public class SysRoleServiceImpl implements ISysRoleService int rows = 1; // 新增角色与食堂档口(数据权限)管理 List list = new ArrayList(); - for (RoleCanteenVo roleCanteen : role.getRoleCanteenList()) - { - RoleCanteenVo rd = new RoleCanteenVo(); - rd.setRoleId(role.getRoleId()); - rd.setDataId(roleCanteen.getDataId()); - rd.setType(roleCanteen.getType()); - list.add(rd); + if (!CollectionUtils.isEmpty(role.getRoleCanteenList())) { + for (RoleCanteenVo roleCanteen : role.getRoleCanteenList()) { + RoleCanteenVo rd = new RoleCanteenVo(); + rd.setRoleId(role.getRoleId()); + rd.setDataId(roleCanteen.getDataId()); + rd.setType(roleCanteen.getType()); + list.add(rd); + } } if (list.size() > 0) { diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml index 17957dd..6f3b7dc 100644 --- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -60,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - order by r.role_sort + order by r.role_sort, r.role_id