refactor-java naming rule 적용
parent
9805d39de7
commit
80c88f6897
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IEc0100Service {
|
||||
List<Map<String, Object>> findEc0100List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findEc0100(String keyField);
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IEc0200Service {
|
||||
List<Map<String, Object>> findEc0200List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findEc0200();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IEc0300Service {
|
||||
List<Map<String, Object>> findEc0300List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findEc0300();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IEc0400Service {
|
||||
List<Map<String, Object>> findEc0400List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findEc0400();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IEc0500Service {
|
||||
List<Map<String, Object>> findEc0500List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findEc0500();
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.ec.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.ec.mapper.Ec0100Mapper;
|
||||
import kr.xit.fims.biz.ec.service.Ec0100Service;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class Ec0100ServiceImpl implements Ec0100Service {
|
||||
private final Ec0100Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findEc0100List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectEc0100List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findEc0100(String keyField) {
|
||||
return mapper.selectEc0100();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.ec.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.ec.mapper.Ec0200Mapper;
|
||||
import kr.xit.fims.biz.ec.service.Ec0200Service;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class Ec0200ServiceImpl implements Ec0200Service {
|
||||
private final Ec0200Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findEc0200List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectEc0200List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findEc0200() {
|
||||
return mapper.selectEc0200();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.ec.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.ec.mapper.Ec0300Mapper;
|
||||
import kr.xit.fims.biz.ec.service.Ec0300Service;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class Ec0300ServiceImpl implements Ec0300Service {
|
||||
private final Ec0300Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findEc0300List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectEc0300List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findEc0300() {
|
||||
return mapper.selectEc0300();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.ec.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.ec.mapper.Ec0400Mapper;
|
||||
import kr.xit.fims.biz.ec.service.Ec0400Service;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class Ec0400ServiceImpl implements Ec0400Service {
|
||||
private final Ec0400Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findEc0400List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectEc0400List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findEc0400() {
|
||||
return mapper.selectEc0400();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.ec.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.ec.mapper.Ec0500Mapper;
|
||||
import kr.xit.fims.biz.ec.service.Ec0500Service;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class Ec0500ServiceImpl implements Ec0500Service {
|
||||
private final Ec0500Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findEc0500List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectEc0500List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findEc0500() {
|
||||
return mapper.selectEc0500();
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package kr.xit.fims.biz.ens.adm.service;
|
||||
package kr.xit.fims.biz.ens.adm.mapper;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package kr.xit.fims.biz.ens.adm.service;
|
||||
package kr.xit.fims.biz.ens.adm.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IRt0100Service {
|
||||
List<Map<String, Object>> findRt0100List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findRt0100();
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
|
||||
import kr.xit.fims.biz.rt.model.Rt0200SearchVO;
|
||||
import kr.xit.fims.biz.rt.model.Rt0200VO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IRt0200Service {
|
||||
public List<Map<String,Object>> findRt0200List(final Map<String, Object> paraMap, final RowBounds rowBounds);
|
||||
public List<Map<String,Object>> findRt0200List(final Rt0200SearchVO vo, final RowBounds rowBounds);
|
||||
|
||||
Rt0200VO findRt0200(final String regltId);
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IRt0300Service {
|
||||
List<Map<String, Object>> findRt0300List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findRt0300();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IRt0400Service {
|
||||
List<Map<String, Object>> findRt0400List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findRt0400();
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface IRt0500Service {
|
||||
List<Map<String, Object>> findRt0500List(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findRt0500();
|
||||
}
|
@ -1,17 +1,51 @@
|
||||
package kr.xit.fims.biz.rt.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.IRt0200Mapper;
|
||||
import kr.xit.fims.biz.rt.model.Rt0200SearchVO;
|
||||
import kr.xit.fims.biz.rt.model.Rt0200VO;
|
||||
import kr.xit.fims.biz.rt.service.IRt0200Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0200Service implements IRt0200Service {
|
||||
|
||||
private final IRt0200Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String,Object>> findRt0200List(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectRt0200List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String,Object>> findRt0200List(final Rt0200SearchVO vo, final RowBounds rowBounds) {
|
||||
return mapper.selectRt0200List(vo, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rt0200VO findRt0200(final String regltId) {
|
||||
return mapper.selectRt0200(regltId);
|
||||
}
|
||||
|
||||
public void addProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
public void modifyProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
public void removeProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface Rt0200Service {
|
||||
public List<Map<String,Object>> findRt0200List(final Map<String, Object> paraMap, final RowBounds rowBounds);
|
||||
public List<Map<String,Object>> findRt0200List(final Rt0200SearchVO vo, final RowBounds rowBounds);
|
||||
|
||||
Rt0200VO findRt0200(final String regltId);
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.rt.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.Rt0100Mapper;
|
||||
import kr.xit.fims.biz.rt.service.Rt0100Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0100ServiceImpl implements Rt0100Service {
|
||||
private final Rt0100Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findRt0100List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectRt0100List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findRt0100() {
|
||||
return mapper.selectRt0100();
|
||||
}
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package kr.xit.fims.biz.rt.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.Rt0200Mapper;
|
||||
import kr.xit.fims.biz.rt.model.Rt0200SearchVO;
|
||||
import kr.xit.fims.biz.rt.model.Rt0200VO;
|
||||
import kr.xit.fims.biz.rt.service.Rt0200Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0200ServiceImpl implements Rt0200Service {
|
||||
|
||||
private final Rt0200Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String,Object>> findRt0200List(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectRt0200List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String,Object>> findRt0200List(final Rt0200SearchVO vo, final RowBounds rowBounds) {
|
||||
return mapper.selectRt0200List(vo, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rt0200VO findRt0200(final String regltId) {
|
||||
return mapper.selectRt0200(regltId);
|
||||
}
|
||||
|
||||
public void addProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
public void modifyProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
public void removeProc(final Rt0200VO vo) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.rt.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.Rt0300Mapper;
|
||||
import kr.xit.fims.biz.rt.service.Rt0300Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0300ServiceImpl implements Rt0300Service {
|
||||
private final Rt0300Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findRt0300List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectRt0300List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findRt0300() {
|
||||
return mapper.selectRt0300();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.rt.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.Rt0400Mapper;
|
||||
import kr.xit.fims.biz.rt.service.Rt0400Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0400ServiceImpl implements Rt0400Service {
|
||||
private final Rt0400Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findRt0400List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectRt0400List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findRt0400() {
|
||||
return mapper.selectRt0400();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.rt.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.fims.biz.rt.mapper.Rt0500Mapper;
|
||||
import kr.xit.fims.biz.rt.service.Rt0500Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class Rt0500ServiceImpl implements Rt0500Service {
|
||||
private final Rt0500Mapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findRt0500List(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectRt0500List(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findRt0500() {
|
||||
return mapper.selectRt0500();
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package kr.xit.fims.biz.sample.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
public interface ISampleService {
|
||||
List<Map<String, Object>> findSampleList(Map<String, Object> paraMap, RowBounds pagingInfo);
|
||||
Map<String, Object> findSample();
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package kr.xit.fims.biz.sample.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import kr.xit.fims.biz.sample.mapper.SampleMapper;
|
||||
import kr.xit.fims.biz.sample.service.SampleService;
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class SampleServiceImpl implements SampleService {
|
||||
private final SampleMapper mapper;
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> findSampleList(Map<String, Object> paraMap, RowBounds rowBounds) {
|
||||
return mapper.selectSampleList(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findSample() {
|
||||
return mapper.selectSample();
|
||||
}
|
||||
}
|
@ -1,65 +1,135 @@
|
||||
package kr.xit.framework.biz.cache.service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import kr.xit.framework.biz.mng.bbs.model.XitBasicBbsMngSearchVO;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.cache.mapper.ICacheBbsMapper;
|
||||
import kr.xit.framework.biz.cache.service.ICacheService;
|
||||
import kr.xit.framework.biz.cache.mapper.ICacheCodeMapper;
|
||||
import kr.xit.framework.biz.cache.mapper.ICacheMenuMapper;
|
||||
import kr.xit.framework.biz.mng.bbs.model.XitBasicBbsMngVO;
|
||||
import kr.xit.framework.support.mybatis.MybatisUtils;
|
||||
|
||||
@Service
|
||||
public class CacheService implements ICacheService {
|
||||
@Resource
|
||||
private ICacheCodeMapper codeMapper;
|
||||
@Resource
|
||||
private ICacheMenuMapper menuMapper;
|
||||
@Resource
|
||||
private ICacheBbsMapper bbsMapper;
|
||||
|
||||
@Value("#{prop['Globals.Xit.RollingNotiBbsId']}")
|
||||
private String notiBbsId;
|
||||
|
||||
@Value("#{prop['Globals.Xit.Bbs.parntsSntncNo']}")
|
||||
private String parntsSntncNo;
|
||||
|
||||
@Value("#{prop['Globals.Xit.Bbs.useAt']}")
|
||||
private String useAt;
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// Common code
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Cacheable(cacheNames="codeCache", key = "#codeId")
|
||||
@Override
|
||||
public List<Map<String, Object>> findCodes(final String codeId) {
|
||||
return codeMapper.selectCodes(codeId);
|
||||
}
|
||||
|
||||
@Cacheable(cacheNames="codeComboCache", key = "#codeId + #type")
|
||||
@Override
|
||||
public List<Map<String, Object>> findComboCodes(final String codeId, final String type) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("codeId", codeId);
|
||||
map.put("type", type);
|
||||
return codeMapper.selectComboCodes(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="codeCache", allEntries = true)
|
||||
public void evictAllCodeCache() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="codeCache", key = "#codeId")
|
||||
public void evictCodeCache(final String codeId) {
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// Menu
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Cacheable(cacheNames="menuCache", key = "#uniqId")
|
||||
@Override
|
||||
public List<Map<String, String>> findMenuListByUser(final String uniqId) {
|
||||
return menuMapper.selectMenuListByUser(uniqId);
|
||||
}
|
||||
|
||||
@Cacheable(cacheNames="menuCache", key = "#authorCode")
|
||||
@Override
|
||||
public List<Map<String, String>> findMenuListByAuthorCode(final String authorCode) {
|
||||
return menuMapper.selectMenuListByAuthorCode(authorCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="menuCache", allEntries = true)
|
||||
public void evictAllMenuCache() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="menuCache", key = "#key")
|
||||
public void evictMenuCache(final String key) {
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// BBS
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Override
|
||||
@Cacheable(cacheNames="latestBbsCache")
|
||||
public List<Map<String, Object>> findLatestBbsList() {
|
||||
Map<String, Object> paraMap = new HashMap<>();
|
||||
paraMap.put("bbsId", this.notiBbsId);
|
||||
paraMap.put("parntsSntncNo", this.parntsSntncNo);
|
||||
paraMap.put("useAt", this.useAt);
|
||||
paraMap.put("page", 1);
|
||||
paraMap.put("perPage", 10);
|
||||
return bbsMapper.selectLatestBbsList(paraMap, MybatisUtils.getPagingInfo(paraMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(cacheNames="baseBbsCache", key = "#paraMap")
|
||||
public List<XitBasicBbsMngVO> findBaseBbsList(final Map<String, Object> paraMap) {
|
||||
return bbsMapper.selectBaseBbsList(paraMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="latestBbsCache", allEntries = true)
|
||||
public void evictLatestBbsList() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="baseBbsCache", allEntries = true)
|
||||
public void evictBaseBbsList(){
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public interface CacheService {
|
||||
|
||||
/**
|
||||
* 코드 그룹 아이디로 모든 코드 목록을 Map 타입으로 조회한다.
|
||||
* @param codeId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, Object>> findCodes(final String codeId);
|
||||
|
||||
/**
|
||||
* 코드 그룹 아이디로 모든 코드 목록을 Map 타입으로 조회한다.
|
||||
* @param codeId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, Object>> findComboCodes(final String codeId, final String type);
|
||||
|
||||
/**
|
||||
* 코드 캐시 Evict
|
||||
*/
|
||||
void evictAllCodeCache();
|
||||
|
||||
/**
|
||||
* 코드 캐시 Evict
|
||||
*/
|
||||
void evictCodeCache(final String codeId);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 사용자별 메뉴 조회
|
||||
* @param uniqId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, String>> findMenuListByUser(final String uniqId);
|
||||
/**
|
||||
* 궘한별 메뉴 조회
|
||||
* @param authorCode
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, String>> findMenuListByAuthorCode(final String authorCode);
|
||||
/**
|
||||
* 메뉴 캐시 Evict
|
||||
*/
|
||||
void evictAllMenuCache();
|
||||
|
||||
/**
|
||||
* 메뉴 캐시 Evict
|
||||
*/
|
||||
void evictMenuCache(final String userId);
|
||||
|
||||
|
||||
|
||||
List<Map<String, Object>> findLatestBbsList();
|
||||
List<XitBasicBbsMngVO> findBaseBbsList(final Map<String, Object> paraMap);
|
||||
void evictLatestBbsList();
|
||||
void evictBaseBbsList();
|
||||
}
|
||||
|
@ -0,0 +1,64 @@
|
||||
package kr.xit.framework.biz.cache.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import kr.xit.framework.biz.mng.bbs.model.XitBasicBbsMngVO;
|
||||
|
||||
public interface ICacheService {
|
||||
|
||||
/**
|
||||
* 코드 그룹 아이디로 모든 코드 목록을 Map 타입으로 조회한다.
|
||||
* @param codeId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, Object>> findCodes(final String codeId);
|
||||
|
||||
/**
|
||||
* 코드 그룹 아이디로 모든 코드 목록을 Map 타입으로 조회한다.
|
||||
* @param codeId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, Object>> findComboCodes(final String codeId, final String type);
|
||||
|
||||
/**
|
||||
* 코드 캐시 Evict
|
||||
*/
|
||||
void evictAllCodeCache();
|
||||
|
||||
/**
|
||||
* 코드 캐시 Evict
|
||||
*/
|
||||
void evictCodeCache(final String codeId);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 사용자별 메뉴 조회
|
||||
* @param uniqId
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, String>> findMenuListByUser(final String uniqId);
|
||||
/**
|
||||
* 궘한별 메뉴 조회
|
||||
* @param authorCode
|
||||
* @return List<T>
|
||||
*/
|
||||
List<Map<String, String>> findMenuListByAuthorCode(final String authorCode);
|
||||
/**
|
||||
* 메뉴 캐시 Evict
|
||||
*/
|
||||
void evictAllMenuCache();
|
||||
|
||||
/**
|
||||
* 메뉴 캐시 Evict
|
||||
*/
|
||||
void evictMenuCache(final String userId);
|
||||
|
||||
|
||||
|
||||
List<Map<String, Object>> findLatestBbsList();
|
||||
List<XitBasicBbsMngVO> findBaseBbsList(final Map<String, Object> paraMap);
|
||||
void evictLatestBbsList();
|
||||
void evictBaseBbsList();
|
||||
}
|
@ -1,139 +0,0 @@
|
||||
package kr.xit.framework.biz.cache.service.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.cache.mapper.CacheBbsMapper;
|
||||
import kr.xit.framework.biz.cache.service.CacheService;
|
||||
import kr.xit.framework.biz.cache.mapper.CacheCodeMapper;
|
||||
import kr.xit.framework.biz.cache.mapper.CacheMenuMapper;
|
||||
import kr.xit.framework.biz.mng.bbs.model.XitBasicBbsMngSearchVO;
|
||||
import kr.xit.framework.biz.mng.bbs.model.XitBasicBbsMngVO;
|
||||
import kr.xit.framework.support.mybatis.MybatisUtils;
|
||||
import kr.xit.framework.support.util.JBeanRegistry;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@Service
|
||||
public class CacheServiceImpl implements CacheService {
|
||||
@Resource
|
||||
private CacheCodeMapper codeMapper;
|
||||
@Resource
|
||||
private CacheMenuMapper menuMapper;
|
||||
@Resource
|
||||
private CacheBbsMapper bbsMapper;
|
||||
|
||||
@Value("#{prop['Globals.Xit.RollingNotiBbsId']}")
|
||||
private String notiBbsId;
|
||||
|
||||
@Value("#{prop['Globals.Xit.Bbs.parntsSntncNo']}")
|
||||
private String parntsSntncNo;
|
||||
|
||||
@Value("#{prop['Globals.Xit.Bbs.useAt']}")
|
||||
private String useAt;
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// Common code
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Cacheable(cacheNames="codeCache", key = "#codeId")
|
||||
@Override
|
||||
public List<Map<String, Object>> findCodes(final String codeId) {
|
||||
return codeMapper.selectCodes(codeId);
|
||||
}
|
||||
|
||||
@Cacheable(cacheNames="codeComboCache", key = "#codeId + #type")
|
||||
@Override
|
||||
public List<Map<String, Object>> findComboCodes(final String codeId, final String type) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("codeId", codeId);
|
||||
map.put("type", type);
|
||||
return codeMapper.selectComboCodes(map);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="codeCache", allEntries = true)
|
||||
public void evictAllCodeCache() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="codeCache", key = "#codeId")
|
||||
public void evictCodeCache(final String codeId) {
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// Menu
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Cacheable(cacheNames="menuCache", key = "#uniqId")
|
||||
@Override
|
||||
public List<Map<String, String>> findMenuListByUser(final String uniqId) {
|
||||
return menuMapper.selectMenuListByUser(uniqId);
|
||||
}
|
||||
|
||||
@Cacheable(cacheNames="menuCache", key = "#authorCode")
|
||||
@Override
|
||||
public List<Map<String, String>> findMenuListByAuthorCode(final String authorCode) {
|
||||
return menuMapper.selectMenuListByAuthorCode(authorCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="menuCache", allEntries = true)
|
||||
public void evictAllMenuCache() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="menuCache", key = "#key")
|
||||
public void evictMenuCache(final String key) {
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
// BBS
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Override
|
||||
@Cacheable(cacheNames="latestBbsCache")
|
||||
public List<Map<String, Object>> findLatestBbsList() {
|
||||
Map<String, Object> paraMap = new HashMap<>();
|
||||
paraMap.put("bbsId", this.notiBbsId);
|
||||
paraMap.put("parntsSntncNo", this.parntsSntncNo);
|
||||
paraMap.put("useAt", this.useAt);
|
||||
paraMap.put("page", 1);
|
||||
paraMap.put("perPage", 10);
|
||||
return bbsMapper.selectLatestBbsList(paraMap, MybatisUtils.getPagingInfo(paraMap));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable(cacheNames="baseBbsCache", key = "#paraMap")
|
||||
public List<XitBasicBbsMngVO> findBaseBbsList(final Map<String, Object> paraMap) {
|
||||
return bbsMapper.selectBaseBbsList(paraMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="latestBbsCache", allEntries = true)
|
||||
public void evictLatestBbsList() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames="baseBbsCache", allEntries = true)
|
||||
public void evictBaseBbsList(){
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,26 +1,252 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleSclsrtRescueVO;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.IAuthAuthorMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.IAuthHierarchyMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthHierarchyMngVO;
|
||||
import kr.xit.framework.biz.mng.auth.service.IAuthHierarchyMgtService;
|
||||
import kr.xit.framework.core.utils.XitCmmnUtil;
|
||||
import kr.xit.framework.support.exception.BizRuntimeException;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 권한계층관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 11. 2. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface AuthHierarchyMgtService {
|
||||
|
||||
List<XitAuthHierarchyMngVO> findAuthHierarchies(final Map<String, Object> paraMap, final RowBounds pagingInfo);
|
||||
XitAuthHierarchyMngVO findAuthHierarchyInfo(final XitAuthHierarchyMngVO vo);
|
||||
|
||||
void saveAuthHierarchy(final XitAuthHierarchyMngVO vo);
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class AuthHierarchyMgtService implements IAuthHierarchyMgtService {
|
||||
|
||||
private final IAuthHierarchyMgtMapper mapper;
|
||||
|
||||
private final IAuthAuthorMgtMapper authAuthorMgtMapper;
|
||||
|
||||
@Override
|
||||
public List<XitAuthHierarchyMngVO> findAuthHierarchies(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
List<XitAuthHierarchyMngVO> voList = mapper.selectAuthHierarchies(paraMap, rowBounds);
|
||||
//권한구조 설정
|
||||
|
||||
if(XitCmmnUtil.notEmpty(voList)) {
|
||||
for(XitAuthHierarchyMngVO vo : voList) {
|
||||
String strAuthorRescueCode = this.getStrAuthHierarchy(vo.getAuthorCode());
|
||||
vo.setAuthorRescueCode(strAuthorRescueCode);
|
||||
vo.setAuthorRescueCodeNm(this.convertKorNm(strAuthorRescueCode));
|
||||
}
|
||||
}
|
||||
return voList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitAuthHierarchyMngVO findAuthHierarchyInfo(final XitAuthHierarchyMngVO vo) {
|
||||
XitAuthHierarchyMngVO result = new XitAuthHierarchyMngVO();
|
||||
|
||||
List<XitRoleSclsrtRescueVO> listRoleSclsrtRescueVO = authAuthorMgtMapper.selectRoleSclsrtRescues(new XitRoleSclsrtRescueVO());
|
||||
if(XitCmmnUtil.isEmpty(listRoleSclsrtRescueVO))
|
||||
return result;
|
||||
|
||||
|
||||
String topButtonAuthorCode = this.getStrAuthHierarchy(listRoleSclsrtRescueVO.get(0).getChldrnRole());
|
||||
topButtonAuthorCode = topButtonAuthorCode.split(">")[0].trim();
|
||||
String strAuthorRescueCode = this.getStrAuthHierarchy(topButtonAuthorCode);
|
||||
result.setAuthorRescueCode(strAuthorRescueCode);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public void saveAuthHierarchy(final XitAuthHierarchyMngVO vo) {
|
||||
if(XitCmmnUtil.isEmpty(vo.getAuthorCode()))
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "권한코드는 필수조건 입니다.");
|
||||
|
||||
String[] arrAuthorCodeGrp = vo.getAuthorCode().split(","); //권한코드 묶음 목록
|
||||
|
||||
/**
|
||||
* 유효성 확인
|
||||
* -최상위 부모는 반드시 한개 이어야 한다.
|
||||
* -최하위 자녀(최고관리자)는 반드시 한개 이어야 한다.
|
||||
*/
|
||||
if(arrAuthorCodeGrp[0].split(";").length>1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"최상위 부모는 한개만 설정 가능 합니다.");
|
||||
// 최하위 자녀 갯수 확인
|
||||
if(arrAuthorCodeGrp[arrAuthorCodeGrp.length-1].split(";").length>1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"최하위 자녀는 한개만 설정 가능 합니다.");
|
||||
// 다중상속 구간 갯수 확인
|
||||
int cnt = 0;
|
||||
for(String authorCodeGrp : arrAuthorCodeGrp) {
|
||||
if(authorCodeGrp.split(";").length > 1)
|
||||
cnt++;
|
||||
}
|
||||
if(cnt > 1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"다중상속은 하나의 구간만 설정 가능 합니다.");
|
||||
|
||||
//권한계층구조 일괄 제거
|
||||
authAuthorMgtMapper.deleteRoleSclsrtRescue(new XitRoleSclsrtRescueVO());
|
||||
//권한계층 데이터 등록
|
||||
for(int i=0; i<arrAuthorCodeGrp.length; i++) {
|
||||
//마지막 권한이면 stop
|
||||
if(i==arrAuthorCodeGrp.length-1)
|
||||
break;
|
||||
|
||||
|
||||
String[] arrParntsRole = arrAuthorCodeGrp[i].split(";");
|
||||
String[] arrChldrnRole = arrAuthorCodeGrp[i+1].split(";");
|
||||
for(int j=0; j<arrParntsRole.length; j++) {
|
||||
String parntsRole = arrParntsRole[j];
|
||||
for(int k=0; k<arrChldrnRole.length; k++) {
|
||||
String chldrnRole = arrChldrnRole[k];
|
||||
XitRoleSclsrtRescueVO roleSclsrtRescueVO = new XitRoleSclsrtRescueVO();
|
||||
roleSclsrtRescueVO.setParntsRole(parntsRole);
|
||||
roleSclsrtRescueVO.setChldrnRole(chldrnRole);
|
||||
authAuthorMgtMapper.insertRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 권한의 권한계층 구조를 문자열로 반환 한다.</pre>
|
||||
* @param authorCode
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 11. 2.
|
||||
*/
|
||||
private String getStrAuthHierarchy(final String authorCode) {
|
||||
LinkedHashMap<String, String> mParnts = new LinkedHashMap<String, String>();
|
||||
LinkedHashMap<String, String> mChldrn = new LinkedHashMap<String, String>();
|
||||
|
||||
|
||||
List<XitRoleSclsrtRescueVO> list = authAuthorMgtMapper.selectRoleSclsrtRescues(new XitRoleSclsrtRescueVO());
|
||||
this.getAuthHierarchy(list, authorCode, false, mParnts);
|
||||
this.getAuthHierarchy(list, authorCode, true, mChldrn);
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
Iterator<String> it = mParnts.keySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
sb.append(mParnts.get(it.next())).append(" > ");
|
||||
}
|
||||
sb.append(authorCode).append(" > ");
|
||||
it = mChldrn.keySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
sb.append(mChldrn.get(it.next())).append(" > ");
|
||||
}
|
||||
|
||||
String result = sb.toString().trim();
|
||||
return result.substring(0, result.length()-2);
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 권한코드의 권한구조상의 상/하위 권한을 resultMap(LinkedHashMap)에 담아 반환 한다.</pre>
|
||||
* @param list 역할계층구조 목록 데이터
|
||||
* @param authorCode 권한코드
|
||||
* @param isChldrnSearch 상위권한 탐색 여부(true: 상위권한 탐색, false: 하위권한 탐색)
|
||||
* @param resultMap 응답객체
|
||||
* @return void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 11. 2.
|
||||
*/
|
||||
private void getAuthHierarchy(final List<XitRoleSclsrtRescueVO> list, final String authorCode, final boolean isChldrnSearch, final LinkedHashMap<String, String> resultMap) {
|
||||
|
||||
for (XitRoleSclsrtRescueVO item : list) {
|
||||
|
||||
if(isChldrnSearch) {
|
||||
// 권한코드가 일치하지 않으면 skip
|
||||
if (!item.getParntsRole().equals(authorCode))
|
||||
continue;
|
||||
|
||||
//권한코드 Set
|
||||
if(resultMap.containsKey(authorCode)) {
|
||||
//동일한 값이면 담지 않음
|
||||
if(resultMap.get(authorCode).equals(item.getChldrnRole()))
|
||||
continue;
|
||||
|
||||
resultMap.put(authorCode, resultMap.get(authorCode)+", "+item.getChldrnRole());
|
||||
}else {
|
||||
//동일한 값이 있으면 담지 않음
|
||||
Iterator<String> it = resultMap.values().iterator();
|
||||
boolean isExists = false;
|
||||
LOOP:
|
||||
while(it.hasNext()) {
|
||||
String[] values = it.next().split(",");
|
||||
for(int j=0; j<values.length; j++) {
|
||||
String value = values[j].trim();
|
||||
if(value.equals(item.getChldrnRole())) {
|
||||
isExists = true;
|
||||
break LOOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isExists)
|
||||
resultMap.put(authorCode, item.getChldrnRole());
|
||||
|
||||
}
|
||||
|
||||
//재탐색
|
||||
this.getAuthHierarchy(list, item.getChldrnRole(), isChldrnSearch, resultMap);
|
||||
}else {
|
||||
|
||||
// 권한코드가 일치하지 않으면 skip
|
||||
if (!item.getChldrnRole().equals(authorCode))
|
||||
continue;
|
||||
|
||||
//재탐색
|
||||
this.getAuthHierarchy(list, item.getParntsRole(), isChldrnSearch, resultMap);
|
||||
|
||||
//권한코드 Set
|
||||
if(resultMap.containsKey(authorCode)) {
|
||||
//동일한 값이면 담지 않음
|
||||
if(resultMap.get(authorCode).equals(item.getParntsRole()))
|
||||
continue;
|
||||
|
||||
resultMap.put(authorCode, resultMap.get(authorCode)+", "+item.getParntsRole());
|
||||
}else {
|
||||
//동일한 값이 있으면 담지 않음
|
||||
if(!resultMap.containsValue(item.getParntsRole())) {
|
||||
resultMap.put(authorCode, item.getParntsRole());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String convertKorNm(final String strAuthorRescueCode) {
|
||||
//권한코드 Map 생성
|
||||
List<XitAuthorInfoVO> listAuthorInfoVO = authAuthorMgtMapper.selectAuthorInfos(null);
|
||||
Map<String, String> mAuthorInfo = new HashMap<String, String>();
|
||||
for(XitAuthorInfoVO item : listAuthorInfoVO) {
|
||||
mAuthorInfo.put(item.getAuthorCode(), item.getAuthorNm());
|
||||
}
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String[] items = strAuthorRescueCode.split(">");
|
||||
for(int i=0; i<items.length; i++) {
|
||||
String item = items[i];
|
||||
|
||||
if(i>0)
|
||||
sb.append(" > ");
|
||||
|
||||
String[] arrAuthorCode = item.split(",");
|
||||
for(int j=0; j<arrAuthorCode.length; j++) {
|
||||
String authorCode = arrAuthorCode[j].trim();
|
||||
|
||||
|
||||
if(j==0)
|
||||
sb.append(mAuthorInfo.get(authorCode));
|
||||
else
|
||||
sb.append(", ").append(mAuthorInfo.get(authorCode));
|
||||
}
|
||||
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,42 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleInfoVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 권한관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IAuthAuthorMgtService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 권한관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitAuthRegMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
List<XitAuthorInfoVO> findAuthAuthors(final Map<String,Object> paraMap, final RowBounds rowBounds);
|
||||
List<XitAuthorInfoVO> findAuthAuthors(final Map<String,Object> paraMap);
|
||||
|
||||
XitAuthorInfoVO findAuthAuthor(final String authorCode);
|
||||
void addAuthAuthor(final XitAuthorInfoVO vo);
|
||||
void modifyAuthAuthor(final XitAuthorInfoVO vo);
|
||||
void removeAuthAuthor(final String authorCode);
|
||||
|
||||
|
||||
List<XitRoleInfoVO> findAuthRoleGrantList(final Map<String, Object> paraMap);
|
||||
void saveAuthRoleGrantList(final Map<String, Object> paraMap);
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthUsrMngVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 사용자별권한관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IAuthByUserMgtService {
|
||||
|
||||
List<XitAuthUsrMngVO> findAuthUsers(final Map<String,Object> paraMap, final RowBounds rowBounds);
|
||||
void saveAuthUserList(final List<Map<String, Object>> paraList);
|
||||
void removeAuthUserList(final List<Map<String, Object>> paraList);
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorGroupInfoVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 사용자그룹관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IAuthGrpMgtService {
|
||||
|
||||
List<XitAuthorGroupInfoVO> findAuthGrps(final Map<String,Object> paraMap, final RowBounds rowBounds);
|
||||
XitAuthorGroupInfoVO findAuthGrp(final String groupId);
|
||||
void addAuthGrp(final XitAuthorGroupInfoVO vo);
|
||||
void modifyAuthGrp(final XitAuthorGroupInfoVO vo);
|
||||
void removeAuthGrp(final String authorCode);
|
||||
|
||||
void isCheckUserForCanChange(final String uniqId, final String trgetAuthorCode);
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthHierarchyMngVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 권한계층관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 11. 2. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IAuthHierarchyMgtService {
|
||||
|
||||
List<XitAuthHierarchyMngVO> findAuthHierarchies(final Map<String, Object> paraMap, final RowBounds pagingInfo);
|
||||
XitAuthHierarchyMngVO findAuthHierarchyInfo(final XitAuthHierarchyMngVO vo);
|
||||
|
||||
void saveAuthHierarchy(final XitAuthHierarchyMngVO vo);
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package kr.xit.framework.biz.mng.auth.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleInfoVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 롤관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IAuthRoleMgtService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 롤관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitAuthRuleMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
List<XitRoleInfoVO> findAuthRoles(final Map<String,Object> paraMap, final RowBounds rowBounds);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 롤관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitAuthRuleMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
XitRoleInfoVO findAuthRole(final String roleCode);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 롤관리 등록</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
void addAuthRole(final XitRoleInfoVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 롤관리 수정</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
void modifyAuthRole(final XitRoleInfoVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 롤관리 삭제</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
void removeAuthRole(final String roleCode);
|
||||
|
||||
}
|
@ -1,112 +0,0 @@
|
||||
package kr.xit.framework.biz.mng.auth.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleSclsrtRescueVO;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthAuthorMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthAuthorMgtService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AuthAuthorMgtServiceImpl implements AuthAuthorMgtService {
|
||||
private final AuthAuthorMgtMapper mapper;
|
||||
|
||||
/** 부모 권한코드 */
|
||||
private static final String PARNTS_AUTHOR = "ROLE_USER";
|
||||
/** 자녀 권한코드 */
|
||||
private static final String CHLDRN_AUTHOR = "ROLE_ADMIN";
|
||||
|
||||
|
||||
@Override
|
||||
public List<XitAuthorInfoVO> findAuthAuthors(final Map<String,Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectAuthorInfos(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XitAuthorInfoVO> findAuthAuthors(final Map<String, Object> paraMap) {
|
||||
return mapper.selectAuthorInfos(paraMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitAuthorInfoVO findAuthAuthor(final String authorCode) {
|
||||
return mapper.selectAuthorInfo(authorCode);
|
||||
}
|
||||
|
||||
/* =====================================================
|
||||
* 2020.05.21 박민규
|
||||
* 신규권한 등록프로세스 주석 및 수정
|
||||
* -사유: egovFrame의 권한계층은 부모~자녀 순으로 "익명사용자->사용자->관리자"로 기본제공 되며
|
||||
* 부모권한에 부여된 ROLE을 자녀가 상속받는 개념이다.
|
||||
* 다만 기본제공되는 권한계층을 사용 시 카페의 "관리자>매니저>정회원>준회원>비회원"과 같은 권한계층 관리에 적합하기에
|
||||
* 업체별(또는 부서별)로 권한그룹을 별도 관리 해야하는 경우에 적합하지 않다.
|
||||
* -작업내용: 기본제공되는 "익명사용자->사용자->관리자" 관리구조에서 사용자와 관리자 그룹 사이에 신규권한그룹을 삽입하여
|
||||
* "익명사용자->사용자->신규권한1/신규권한2/...->관리자"로 권한계층을 구성하여
|
||||
* n개의 신규그룹은 "사용자"에게서 기본적인 ROLE을 상속받고
|
||||
* n개의 신규그룹의 ROLE을 "관리자"가 상속받도록 한다.
|
||||
* AS-IS: "익명사용자->사용자->관리자"의 권한계층에 삽입되지 않아 상위권한(PARENT)의 ROLE을 승계받지 못 함.
|
||||
* TO-BE: "익명사용자->사용자->신규권한1/신규권한2/...->관리자"순의 상하관계를 가지게 되므로 신규권한그룹도 상위권한(PARENT)의 ROLE을 승계 받음.
|
||||
===================================================== */
|
||||
|
||||
@Override
|
||||
public void addAuthAuthor(final XitAuthorInfoVO vo){
|
||||
//권한정보 Insert
|
||||
mapper.insertAuthorInfo(vo);
|
||||
|
||||
//계층구조생성
|
||||
XitRoleSclsrtRescueVO roleSclsrtRescueVO = new XitRoleSclsrtRescueVO();
|
||||
//부모관계 생성
|
||||
roleSclsrtRescueVO.setParntsRole(PARNTS_AUTHOR);
|
||||
roleSclsrtRescueVO.setChldrnRole(vo.getAuthorCode());
|
||||
mapper.insertRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
//자녀관계 생성
|
||||
roleSclsrtRescueVO.setParntsRole(vo.getAuthorCode());
|
||||
roleSclsrtRescueVO.setChldrnRole(CHLDRN_AUTHOR);
|
||||
mapper.insertRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyAuthAuthor(final XitAuthorInfoVO vo){
|
||||
mapper.updateAuthorInfo(vo);
|
||||
}
|
||||
public void removeAuthAuthor(final String authorCode){
|
||||
//계층구조 삭제
|
||||
XitRoleSclsrtRescueVO roleSclsrtRescueVO = new XitRoleSclsrtRescueVO();
|
||||
roleSclsrtRescueVO.setParntsRole(PARNTS_AUTHOR);
|
||||
roleSclsrtRescueVO.setChldrnRole(authorCode);
|
||||
mapper.deleteRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
//자녀관계 제거
|
||||
roleSclsrtRescueVO.setParntsRole(authorCode);
|
||||
roleSclsrtRescueVO.setChldrnRole(CHLDRN_AUTHOR);
|
||||
mapper.deleteRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
|
||||
mapper.deleteAuthorInfo(authorCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<XitRoleInfoVO> findAuthRoleGrantList(final Map<String, Object> paraMap) {
|
||||
return mapper.selectAuthRoleGrantList(paraMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveAuthRoleGrantList(final Map<String, Object> paraMap) {
|
||||
List<Map<String,Object>> mapList = (List<Map<String, Object>>)paraMap.get("grantData");
|
||||
|
||||
mapList.forEach(map -> {
|
||||
map.put("authorCode", paraMap.get("authorCode"));
|
||||
if(Objects.equals(map.get("regYn"), "N"))
|
||||
mapper.deleteRoleGrant(map);
|
||||
else
|
||||
mapper.saveRoleGrant(map);
|
||||
});
|
||||
}
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package kr.xit.framework.biz.mng.auth.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.mng.user.model.XitUserScrtySetupVO;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthByUserMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthUsrMngVO;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthGrpMgtService;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthByUserMgtService;
|
||||
import kr.xit.framework.biz.mng.user.mapper.UserMgtMapper;
|
||||
import kr.xit.framework.biz.mng.user.service.UserMgtService;
|
||||
import kr.xit.framework.core.utils.XitCmmnUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class AuthByUserMgtServiceImpl implements AuthByUserMgtService {
|
||||
|
||||
private final AuthByUserMgtMapper mapper;
|
||||
|
||||
private final UserMgtMapper userMapper;
|
||||
|
||||
private final AuthGrpMgtService authGrpMgtService;
|
||||
private final UserMgtService userMgtService;
|
||||
|
||||
@Override
|
||||
public List<XitAuthUsrMngVO> findAuthUsers(final Map<String,Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectAuthUsers(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveAuthUserList(List<Map<String, Object>> paraList) {
|
||||
String sessionUniqId = XitCmmnUtil.getUserInfo().getUniqId();
|
||||
paraList.forEach(map -> {
|
||||
//유효성확인
|
||||
authGrpMgtService.isCheckUserForCanChange(sessionUniqId, String.valueOf(map.get("authorCode")));
|
||||
|
||||
XitUserScrtySetupVO vo = new XitUserScrtySetupVO();
|
||||
vo.setScrtySetupTrgetId(String.valueOf(map.get("uniqId")));
|
||||
vo.setMberTyCode(String.valueOf(map.get("mberTyCode")));
|
||||
vo.setAuthorCode(String.valueOf(map.get("authorCode")));
|
||||
|
||||
if(Objects.equals("N", map.get("regYn"))){
|
||||
userMapper.insertUserScrtySetup(vo);
|
||||
}else{
|
||||
userMapper.updateUserScrtySetup(vo);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAuthUserList(List<Map<String, Object>> paraList) {
|
||||
|
||||
//삭제 시 사용자의 권한을 소속 그룹의 권한 또는 Defualt 권한으로 설정
|
||||
paraList.forEach(map -> {
|
||||
XitUserScrtySetupVO vo = new XitUserScrtySetupVO();
|
||||
vo.setScrtySetupTrgetId(String.valueOf(map.get("uniqId")));
|
||||
vo.setMberTyCode(String.valueOf(map.get("mberTyCode")));
|
||||
vo.setAuthorCode(userMgtService.getDefaultAuthorCode(String.valueOf(map.get("groupId"))));
|
||||
userMapper.updateUserScrtySetup(vo);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -1,149 +0,0 @@
|
||||
package kr.xit.framework.biz.mng.auth.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.exception.FdlException;
|
||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthAuthorMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthGrpMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorGroupInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleSclsrtRescueVO;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthGrpMgtService;
|
||||
import kr.xit.framework.biz.mng.user.mapper.UserMgtMapper;
|
||||
import kr.xit.framework.biz.mng.user.model.XitUserScrtySetupVO;
|
||||
import kr.xit.framework.core.utils.XitCmmnUtil;
|
||||
import kr.xit.framework.support.exception.BizRuntimeException;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AuthGrpMgtServiceImpl implements AuthGrpMgtService {
|
||||
|
||||
private final AuthGrpMgtMapper mapper;
|
||||
private final AuthAuthorMgtMapper authAuthorMgtMapper;
|
||||
private final UserMgtMapper userMgtMapper;
|
||||
|
||||
@Qualifier("groupIdGnrService")
|
||||
private final EgovIdGnrService groupIdGnrService;
|
||||
|
||||
@Override
|
||||
public List<XitAuthorGroupInfoVO> findAuthGrps(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectAuthorGroupInfos(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitAuthorGroupInfoVO findAuthGrp(final String groupId) {
|
||||
return mapper.selectAuthorGroupInfo(groupId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAuthGrp(final XitAuthorGroupInfoVO vo) {
|
||||
// 유효성 확인
|
||||
this.isCheckUserForCanChange(XitCmmnUtil.getUserInfo().getUniqId(), vo.getAuthorCode());
|
||||
|
||||
try {
|
||||
vo.setGroupId(groupIdGnrService.getNextStringId());
|
||||
} catch (FdlException e) {
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
||||
}
|
||||
mapper.insertAuthorGroupInfo(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyAuthGrp(final XitAuthorGroupInfoVO vo) {
|
||||
// 유효성 확인
|
||||
this.isCheckUserForCanChange(XitCmmnUtil.getUserInfo().getUniqId(), vo.getAuthorCode());
|
||||
|
||||
mapper.updateAuthorGroupInfo(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAuthGrp(final String groupId) {
|
||||
mapper.deleteAuthorGroupInfo(groupId);
|
||||
}
|
||||
|
||||
public void isCheckUserForCanChange(final String uniqId, final String trgetAuthorCode) {
|
||||
//사용자보안설정 조회
|
||||
XitUserScrtySetupVO userScrtySetupVO = new XitUserScrtySetupVO();
|
||||
userScrtySetupVO.setScrtySetupTrgetId(uniqId);
|
||||
List<XitUserScrtySetupVO> listUserScrtySetupVO = userMgtMapper.selectUserScrtySetups(userScrtySetupVO);
|
||||
String userAuthorCode = XitCmmnUtil.isEmpty(listUserScrtySetupVO)?null:listUserScrtySetupVO.get(0).getAuthorCode();
|
||||
|
||||
if(!this.isCheckUserAuthorCodeForCanChange(userAuthorCode, trgetAuthorCode))
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "자신의 권한보다 상위 권한을 설정 할 수 없습니다.");;
|
||||
}
|
||||
|
||||
|
||||
private boolean isCheckUserAuthorCodeForCanChange(final String userAuthorCode, final String trgetAuthorCode) {
|
||||
//역할(권한)계층구조 데이터 목록 조회
|
||||
List<XitRoleSclsrtRescueVO> listRoleSclsrtRescueVO = authAuthorMgtMapper.selectRoleSclsrtRescues(null);
|
||||
//역할(권한)계층구조를 사용하지 않고 있는 경우 true 반환
|
||||
if(XitCmmnUtil.isEmpty(listRoleSclsrtRescueVO)) {
|
||||
log.debug("Do not use a RoleSclsrtRescue Data !!");
|
||||
return true;
|
||||
}else {
|
||||
//사용자의 권한 정보가 없을 때(비정상적인 루트로 등록한 사용자 계정으로 판단)
|
||||
if(XitCmmnUtil.isEmpty(userAuthorCode)) {
|
||||
log.debug("This user is have not UserScrtySetup Data !!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
boolean isExists = false;
|
||||
//사용자 권한과 매칭되는 역할(권한)계층정보 유무 확인
|
||||
for(XitRoleSclsrtRescueVO item : listRoleSclsrtRescueVO) {
|
||||
if(item.getParntsRole().equals(userAuthorCode)) {
|
||||
isExists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//사용자 권한이 최상위 권한이면 true 반환
|
||||
if(!isExists)
|
||||
for(XitRoleSclsrtRescueVO item : listRoleSclsrtRescueVO) {
|
||||
if(item.getChldrnRole().equals(userAuthorCode)) {
|
||||
log.debug("This user is Top-Level Author !!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//사용자의 역할(권한)정보가 없으면 false 반환
|
||||
if(!isExists) {
|
||||
log.debug("This user is have not RoleSclsrtRescue Data !!");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상위권한 여부 확인
|
||||
*
|
||||
*/
|
||||
return this.isHighAuthor(listRoleSclsrtRescueVO, userAuthorCode, trgetAuthorCode)?false:true;
|
||||
}
|
||||
|
||||
private boolean isHighAuthor(final List<XitRoleSclsrtRescueVO> list, final String authorCode, final String highAuthorCode) {
|
||||
boolean result = false;
|
||||
|
||||
for (XitRoleSclsrtRescueVO item : list) {
|
||||
// 상위 권한으로 확인 되었으면 stop
|
||||
if (result)
|
||||
break;
|
||||
// 권한코드가 일치하지 않으면 skip
|
||||
if (!item.getParntsRole().equals(authorCode))
|
||||
continue;
|
||||
|
||||
if (item.getChldrnRole().equals(highAuthorCode)) { // 상위 권한과 일치하면
|
||||
result = true;
|
||||
} else { // 상위 권한과 일치하지 않으면 재호출
|
||||
result = this.isHighAuthor(list, item.getChldrnRole(), highAuthorCode);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,252 +0,0 @@
|
||||
package kr.xit.framework.biz.mng.auth.service.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthorInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleSclsrtRescueVO;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthAuthorMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthHierarchyMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitAuthHierarchyMngVO;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthHierarchyMgtService;
|
||||
import kr.xit.framework.core.utils.XitCmmnUtil;
|
||||
import kr.xit.framework.support.exception.BizRuntimeException;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class AuthHierarchyMgtServiceImpl implements AuthHierarchyMgtService {
|
||||
|
||||
private final AuthHierarchyMgtMapper mapper;
|
||||
|
||||
private final AuthAuthorMgtMapper authAuthorMgtMapper;
|
||||
|
||||
@Override
|
||||
public List<XitAuthHierarchyMngVO> findAuthHierarchies(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
||||
List<XitAuthHierarchyMngVO> voList = mapper.selectAuthHierarchies(paraMap, rowBounds);
|
||||
//권한구조 설정
|
||||
|
||||
if(XitCmmnUtil.notEmpty(voList)) {
|
||||
for(XitAuthHierarchyMngVO vo : voList) {
|
||||
String strAuthorRescueCode = this.getStrAuthHierarchy(vo.getAuthorCode());
|
||||
vo.setAuthorRescueCode(strAuthorRescueCode);
|
||||
vo.setAuthorRescueCodeNm(this.convertKorNm(strAuthorRescueCode));
|
||||
}
|
||||
}
|
||||
return voList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitAuthHierarchyMngVO findAuthHierarchyInfo(final XitAuthHierarchyMngVO vo) {
|
||||
XitAuthHierarchyMngVO result = new XitAuthHierarchyMngVO();
|
||||
|
||||
List<XitRoleSclsrtRescueVO> listRoleSclsrtRescueVO = authAuthorMgtMapper.selectRoleSclsrtRescues(new XitRoleSclsrtRescueVO());
|
||||
if(XitCmmnUtil.isEmpty(listRoleSclsrtRescueVO))
|
||||
return result;
|
||||
|
||||
|
||||
String topButtonAuthorCode = this.getStrAuthHierarchy(listRoleSclsrtRescueVO.get(0).getChldrnRole());
|
||||
topButtonAuthorCode = topButtonAuthorCode.split(">")[0].trim();
|
||||
String strAuthorRescueCode = this.getStrAuthHierarchy(topButtonAuthorCode);
|
||||
result.setAuthorRescueCode(strAuthorRescueCode);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public void saveAuthHierarchy(final XitAuthHierarchyMngVO vo) {
|
||||
if(XitCmmnUtil.isEmpty(vo.getAuthorCode()))
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "권한코드는 필수조건 입니다.");
|
||||
|
||||
String[] arrAuthorCodeGrp = vo.getAuthorCode().split(","); //권한코드 묶음 목록
|
||||
|
||||
/**
|
||||
* 유효성 확인
|
||||
* -최상위 부모는 반드시 한개 이어야 한다.
|
||||
* -최하위 자녀(최고관리자)는 반드시 한개 이어야 한다.
|
||||
*/
|
||||
if(arrAuthorCodeGrp[0].split(";").length>1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"최상위 부모는 한개만 설정 가능 합니다.");
|
||||
// 최하위 자녀 갯수 확인
|
||||
if(arrAuthorCodeGrp[arrAuthorCodeGrp.length-1].split(";").length>1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"최하위 자녀는 한개만 설정 가능 합니다.");
|
||||
// 다중상속 구간 갯수 확인
|
||||
int cnt = 0;
|
||||
for(String authorCodeGrp : arrAuthorCodeGrp) {
|
||||
if(authorCodeGrp.split(";").length > 1)
|
||||
cnt++;
|
||||
}
|
||||
if(cnt > 1)
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG,"다중상속은 하나의 구간만 설정 가능 합니다.");
|
||||
|
||||
//권한계층구조 일괄 제거
|
||||
authAuthorMgtMapper.deleteRoleSclsrtRescue(new XitRoleSclsrtRescueVO());
|
||||
//권한계층 데이터 등록
|
||||
for(int i=0; i<arrAuthorCodeGrp.length; i++) {
|
||||
//마지막 권한이면 stop
|
||||
if(i==arrAuthorCodeGrp.length-1)
|
||||
break;
|
||||
|
||||
|
||||
String[] arrParntsRole = arrAuthorCodeGrp[i].split(";");
|
||||
String[] arrChldrnRole = arrAuthorCodeGrp[i+1].split(";");
|
||||
for(int j=0; j<arrParntsRole.length; j++) {
|
||||
String parntsRole = arrParntsRole[j];
|
||||
for(int k=0; k<arrChldrnRole.length; k++) {
|
||||
String chldrnRole = arrChldrnRole[k];
|
||||
XitRoleSclsrtRescueVO roleSclsrtRescueVO = new XitRoleSclsrtRescueVO();
|
||||
roleSclsrtRescueVO.setParntsRole(parntsRole);
|
||||
roleSclsrtRescueVO.setChldrnRole(chldrnRole);
|
||||
authAuthorMgtMapper.insertRoleSclsrtRescue(roleSclsrtRescueVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 권한의 권한계층 구조를 문자열로 반환 한다.</pre>
|
||||
* @param authorCode
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 11. 2.
|
||||
*/
|
||||
private String getStrAuthHierarchy(final String authorCode) {
|
||||
LinkedHashMap<String, String> mParnts = new LinkedHashMap<String, String>();
|
||||
LinkedHashMap<String, String> mChldrn = new LinkedHashMap<String, String>();
|
||||
|
||||
|
||||
List<XitRoleSclsrtRescueVO> list = authAuthorMgtMapper.selectRoleSclsrtRescues(new XitRoleSclsrtRescueVO());
|
||||
this.getAuthHierarchy(list, authorCode, false, mParnts);
|
||||
this.getAuthHierarchy(list, authorCode, true, mChldrn);
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
Iterator<String> it = mParnts.keySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
sb.append(mParnts.get(it.next())).append(" > ");
|
||||
}
|
||||
sb.append(authorCode).append(" > ");
|
||||
it = mChldrn.keySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
sb.append(mChldrn.get(it.next())).append(" > ");
|
||||
}
|
||||
|
||||
String result = sb.toString().trim();
|
||||
return result.substring(0, result.length()-2);
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 권한코드의 권한구조상의 상/하위 권한을 resultMap(LinkedHashMap)에 담아 반환 한다.</pre>
|
||||
* @param list 역할계층구조 목록 데이터
|
||||
* @param authorCode 권한코드
|
||||
* @param isChldrnSearch 상위권한 탐색 여부(true: 상위권한 탐색, false: 하위권한 탐색)
|
||||
* @param resultMap 응답객체
|
||||
* @return void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 11. 2.
|
||||
*/
|
||||
private void getAuthHierarchy(final List<XitRoleSclsrtRescueVO> list, final String authorCode, final boolean isChldrnSearch, final LinkedHashMap<String, String> resultMap) {
|
||||
|
||||
for (XitRoleSclsrtRescueVO item : list) {
|
||||
|
||||
if(isChldrnSearch) {
|
||||
// 권한코드가 일치하지 않으면 skip
|
||||
if (!item.getParntsRole().equals(authorCode))
|
||||
continue;
|
||||
|
||||
//권한코드 Set
|
||||
if(resultMap.containsKey(authorCode)) {
|
||||
//동일한 값이면 담지 않음
|
||||
if(resultMap.get(authorCode).equals(item.getChldrnRole()))
|
||||
continue;
|
||||
|
||||
resultMap.put(authorCode, resultMap.get(authorCode)+", "+item.getChldrnRole());
|
||||
}else {
|
||||
//동일한 값이 있으면 담지 않음
|
||||
Iterator<String> it = resultMap.values().iterator();
|
||||
boolean isExists = false;
|
||||
LOOP:
|
||||
while(it.hasNext()) {
|
||||
String[] values = it.next().split(",");
|
||||
for(int j=0; j<values.length; j++) {
|
||||
String value = values[j].trim();
|
||||
if(value.equals(item.getChldrnRole())) {
|
||||
isExists = true;
|
||||
break LOOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isExists)
|
||||
resultMap.put(authorCode, item.getChldrnRole());
|
||||
|
||||
}
|
||||
|
||||
//재탐색
|
||||
this.getAuthHierarchy(list, item.getChldrnRole(), isChldrnSearch, resultMap);
|
||||
}else {
|
||||
|
||||
// 권한코드가 일치하지 않으면 skip
|
||||
if (!item.getChldrnRole().equals(authorCode))
|
||||
continue;
|
||||
|
||||
//재탐색
|
||||
this.getAuthHierarchy(list, item.getParntsRole(), isChldrnSearch, resultMap);
|
||||
|
||||
//권한코드 Set
|
||||
if(resultMap.containsKey(authorCode)) {
|
||||
//동일한 값이면 담지 않음
|
||||
if(resultMap.get(authorCode).equals(item.getParntsRole()))
|
||||
continue;
|
||||
|
||||
resultMap.put(authorCode, resultMap.get(authorCode)+", "+item.getParntsRole());
|
||||
}else {
|
||||
//동일한 값이 있으면 담지 않음
|
||||
if(!resultMap.containsValue(item.getParntsRole())) {
|
||||
resultMap.put(authorCode, item.getParntsRole());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String convertKorNm(final String strAuthorRescueCode) {
|
||||
//권한코드 Map 생성
|
||||
List<XitAuthorInfoVO> listAuthorInfoVO = authAuthorMgtMapper.selectAuthorInfos(null);
|
||||
Map<String, String> mAuthorInfo = new HashMap<String, String>();
|
||||
for(XitAuthorInfoVO item : listAuthorInfoVO) {
|
||||
mAuthorInfo.put(item.getAuthorCode(), item.getAuthorNm());
|
||||
}
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String[] items = strAuthorRescueCode.split(">");
|
||||
for(int i=0; i<items.length; i++) {
|
||||
String item = items[i];
|
||||
|
||||
if(i>0)
|
||||
sb.append(" > ");
|
||||
|
||||
String[] arrAuthorCode = item.split(",");
|
||||
for(int j=0; j<arrAuthorCode.length; j++) {
|
||||
String authorCode = arrAuthorCode[j].trim();
|
||||
|
||||
|
||||
if(j==0)
|
||||
sb.append(mAuthorInfo.get(authorCode));
|
||||
else
|
||||
sb.append(", ").append(mAuthorInfo.get(authorCode));
|
||||
}
|
||||
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package kr.xit.framework.biz.mng.auth.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.ibatis.session.RowBounds;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.exception.FdlException;
|
||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import kr.xit.framework.biz.mng.auth.mapper.AuthRoleMgtMapper;
|
||||
import kr.xit.framework.biz.mng.auth.model.XitRoleInfoVO;
|
||||
import kr.xit.framework.biz.mng.auth.service.AuthRoleMgtService;
|
||||
import kr.xit.framework.support.exception.BizRuntimeException;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class AuthRoleMgtServiceImpl implements AuthRoleMgtService {
|
||||
|
||||
private final AuthRoleMgtMapper mapper;
|
||||
@Qualifier("groupIdGnrService")
|
||||
private final EgovIdGnrService groupIdGnrService;
|
||||
|
||||
@Override
|
||||
public List<XitRoleInfoVO> findAuthRoles(final Map<String,Object> paraMap, final RowBounds rowBounds) {
|
||||
return mapper.selectAuthRoles(paraMap, rowBounds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitRoleInfoVO findAuthRole(final String roleCode) {
|
||||
return mapper.selectAuthRole(roleCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAuthRole(final XitRoleInfoVO vo) {
|
||||
String roleTyp = vo.getRoleTy();
|
||||
if("method".equals(roleTyp)) roleTyp = "mtd";
|
||||
else if("pointcut".equals(roleTyp)) roleTyp = "pct";
|
||||
else roleTyp = "web";
|
||||
try {
|
||||
vo.setRoleCode(roleTyp.concat("-").concat(groupIdGnrService.getNextStringId()));
|
||||
} catch (FdlException e) {
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
||||
}
|
||||
mapper.insertAuthRole(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyAuthRole(final XitRoleInfoVO vo) {
|
||||
mapper.updateAuthRole(vo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAuthRole(final String roleCode) {
|
||||
mapper.deleteAuthRole(roleCode);
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package kr.xit.framework.biz.mng.code.mapper;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngSearchVO;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 분류코드관리 Mapper
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:07
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Mapper
|
||||
public interface ICodeClassificationMgtMapper {
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitClCodeMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitClCodeMngVO> findList(XitClCodeMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public int findListTotCnt(XitClCodeMngSearchVO searchVO) throws SQLException;
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitClCodeMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public XitClCodeMngVO findView(XitClCodeMngVO vo) throws SQLException;
|
||||
}
|
@ -0,0 +1,140 @@
|
||||
package kr.xit.framework.biz.mng.code.service;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
|
||||
import kr.xit.framework.biz.cmm.model.XitCmmnClCodeVO;
|
||||
import kr.xit.framework.biz.cmm.service.XitFrameCrudService;
|
||||
import kr.xit.framework.biz.mng.code.mapper.ICodeClassificationMgtMapper;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngSearchVO;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngVO;
|
||||
import kr.xit.framework.core.message.XitMessageSource;
|
||||
|
||||
@Service
|
||||
public class CodeClassificationMgtService implements ICodeClassificationMgtService {
|
||||
|
||||
@Resource
|
||||
private ICodeClassificationMgtMapper mapper;
|
||||
@Resource
|
||||
private XitFrameCrudService xitFrameCrudService;
|
||||
@Resource(name="groupIdGnrService")
|
||||
private EgovIdGnrService idgenService;
|
||||
@Resource
|
||||
private XitMessageSource xitMessageSource;
|
||||
|
||||
@Override
|
||||
public List<XitClCodeMngVO> findList(XitClCodeMngSearchVO searchVO) {
|
||||
List<XitClCodeMngVO> result = null;
|
||||
try {
|
||||
result = mapper.findList(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("분류코드관리 목록 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int findListTotCnt(XitClCodeMngSearchVO searchVO) {
|
||||
int result = 0;
|
||||
try {
|
||||
result = mapper.findListTotCnt(searchVO);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("분류코드관리 목록 총건수 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XitClCodeMngVO findView(XitClCodeMngVO vo) {
|
||||
XitClCodeMngVO result = null;
|
||||
try {
|
||||
result = mapper.findView(vo);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("분류코드관리 상세정보 조회 FAIL::", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProc(XitClCodeMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitCmmnClCodeVO cmmnClCodeVO = convertToCrudVO(vo);
|
||||
cmmnClCodeVO.setFrst_register_id(vo.getFrstRegisterId());
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.addXitCmmnClCode(cmmnClCodeVO);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyProc(XitClCodeMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitCmmnClCodeVO cmmnClCodeVO = convertToCrudVO(vo);
|
||||
cmmnClCodeVO.setLast_updusr_id(vo.getLastUpdusrId());
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.modifyXitCmmnClCode(cmmnClCodeVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeProc(XitClCodeMngVO vo) {
|
||||
/**
|
||||
* 필수값 설정
|
||||
*/
|
||||
XitCmmnClCodeVO cmmnClCodeVO = new XitCmmnClCodeVO();
|
||||
cmmnClCodeVO.setCl_code(vo.getClCode());
|
||||
cmmnClCodeVO.setLast_updusr_id(vo.getLastUpdusrId());
|
||||
cmmnClCodeVO.setUse_at("N");
|
||||
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
xitFrameCrudService.modifyXitCmmnClCode(cmmnClCodeVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removesProc(String ids, String userId) {
|
||||
/**
|
||||
* 처리
|
||||
*/
|
||||
String [] clCodes = ids.split(";");
|
||||
for(int i=0; i<clCodes.length;i++) {
|
||||
XitClCodeMngVO vo = new XitClCodeMngVO();
|
||||
vo.setClCode(clCodes[i]);
|
||||
vo.setLastUpdusrId(userId);
|
||||
this.removeProc(vo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 메소드 설명: 메뉴VO를 CRUD Service의 VO로 변환 한다.
|
||||
* </pre>
|
||||
*
|
||||
* @return XitCmmnClCodeVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
private XitCmmnClCodeVO convertToCrudVO(XitClCodeMngVO vo) {
|
||||
XitCmmnClCodeVO crudVO = new XitCmmnClCodeVO();
|
||||
crudVO.setCl_code (vo.getClCode()); //분류 코드
|
||||
crudVO.setCl_code_nm (vo.getClCodeNm()); //분류 코드 명
|
||||
crudVO.setCl_code_dc (vo.getClCodeDc()); //분류 코드 설명
|
||||
crudVO.setUse_at (vo.getUseAt()); //사용 여부
|
||||
|
||||
return crudVO;
|
||||
}
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package kr.xit.framework.biz.mng.code.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngSearchVO;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 분류코드관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:38:56
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface ICodeClassificationMgtService {
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 목록 조회</pre>
|
||||
* @param searchVO
|
||||
* @return List<XitClCodeMngVO> 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public List<XitClCodeMngVO> findList(XitClCodeMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 목록 총건수 조회</pre>
|
||||
* @param searchVO
|
||||
* @return int 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public int findListTotCnt(XitClCodeMngSearchVO searchVO);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 상세정보 조회</pre>
|
||||
* @param vo
|
||||
* @return XitClCodeMngVO 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public XitClCodeMngVO findView(XitClCodeMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 등록</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public void addProc(XitClCodeMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 수정</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public void modifyProc(XitClCodeMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 삭제</pre>
|
||||
* @param vo void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public void removeProc(XitClCodeMngVO vo);
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 다건 삭제</pre>
|
||||
* @param ids void 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
public void removesProc(String ids, String userId);
|
||||
}
|
@ -0,0 +1,343 @@
|
||||
package kr.xit.framework.biz.mng.code.web;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.bind.support.SessionStatus;
|
||||
|
||||
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
|
||||
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import kr.xit.framework.biz.cmm.model.XitLoginVO;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngSearchVO;
|
||||
import kr.xit.framework.biz.mng.code.model.XitClCodeMngVO;
|
||||
import kr.xit.framework.biz.mng.code.service.ICodeClassificationMgtService;
|
||||
import kr.xit.framework.core.constants.FrameworkConstants;
|
||||
import kr.xit.framework.core.constants.FrameworkConstants.TILES_TYPE;
|
||||
import kr.xit.framework.core.message.XitMessageSource;
|
||||
import kr.xit.framework.core.utils.XitCmmnUtil;
|
||||
import kr.xit.framework.core.validation.XitBeanValidator;
|
||||
import kr.xit.framework.support.util.AjaxUtils;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 분류코드관리 Controller
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 4. 16. 오전 9:39:52
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/framework/biz/mng/code")
|
||||
public class CodeClassificationMgtController {
|
||||
|
||||
@Resource
|
||||
private ICodeClassificationMgtService service;
|
||||
@Autowired
|
||||
private XitBeanValidator beanValidator;
|
||||
@Resource(name = "xitMessageSource")
|
||||
XitMessageSource xitMessageSource;
|
||||
|
||||
@RequestMapping(value = "/mngCodeClassificationMgtForm")
|
||||
public void mngCodeClassificationMgtForm() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드 관리 페이지 조회</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 김동규
|
||||
* @date: 2020. 7. 31.
|
||||
*/
|
||||
@RequestMapping(value = "ClCodeMng_list.ajax", method={RequestMethod.GET, RequestMethod.POST})
|
||||
@ResponseBody
|
||||
public Map<String, Object> ClCodeMng_listAjax(@ModelAttribute("searchVO") XitClCodeMngSearchVO searchVO, ModelMap model) {
|
||||
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(searchVO.getPage()>-1?searchVO.getPage():searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getPerPage()>-1?searchVO.getPerPage():searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize(searchVO.getPageSize());
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
try {
|
||||
/**
|
||||
* 조회
|
||||
*/
|
||||
int totCnt = service.findListTotCnt(searchVO);
|
||||
paginationInfo.setTotalRecordCount(totCnt);
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
/* ***************************
|
||||
* tui Grid Response Set
|
||||
*************************** */
|
||||
resultMap.put("result", true); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("success.common.select")); //[tui Grid] result message
|
||||
Map<String, Object> data = new HashMap<String, Object>();
|
||||
data.put("contents", service.findList(searchVO)); //[tui Grid] data-contents
|
||||
Map<String, Integer> pagination = new HashMap<String, Integer>();
|
||||
pagination.put("page", searchVO.getPage());
|
||||
pagination.put("totalCount", totCnt);
|
||||
data.put("pagination", pagination); //[tui Grid] data-paging
|
||||
resultMap.put("data", data); //[tui Grid] data
|
||||
/* ***************************
|
||||
* //tui Grid Response Set
|
||||
*************************** */
|
||||
} catch (Exception e) {
|
||||
/**
|
||||
* 반환값 설정
|
||||
*/
|
||||
//tui Grid Response Set
|
||||
resultMap.put("result", false); //[tui Grid] result
|
||||
resultMap.put("message", xitMessageSource.getMessage("fail.common.select")); //[tui Grid] result message
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 페이지로 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param tilesDef 타일즈 적용 Type(none: tiles 미적용)
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
@RequestMapping(value = "ClCodeMng_{cmd}", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String ClCodeMng_page(@PathVariable String cmd
|
||||
, @RequestParam(value="tilesDef", required=false, defaultValue="") String tilesDef
|
||||
, @ModelAttribute("cmmnClCode") XitClCodeMngVO vo
|
||||
, @ModelAttribute XitClCodeMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "input": //등록 페이지
|
||||
break;
|
||||
case "edit": //수정 페이지
|
||||
case "view": //상세 페이지
|
||||
model.addAttribute("cmmnClCode", service.findView(vo));
|
||||
model.addAttribute("message", xitMessageSource.getMessage("success.common.select"));
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
if(!"".equals(tilesDef))
|
||||
tilesDef = "."+tilesDef;
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/code/XitClCodeMng_"+cmd+tilesDef;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 요청 팝업 페이지 이동 한다.</pre>
|
||||
* @param page
|
||||
* @param model
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
@RequestMapping(value = "ClCodeMng_{cmd}_popup", method={RequestMethod.GET, RequestMethod.POST})
|
||||
public String ClCodeMng_page_popup(@PathVariable String cmd
|
||||
, @ModelAttribute("cmmnClCode") XitClCodeMngVO vo
|
||||
, @ModelAttribute XitClCodeMngSearchVO searchVO
|
||||
, ModelMap model) {
|
||||
switch (cmd) {
|
||||
case "": //
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
return FrameworkConstants.FRAMEWORK_JSP_BASE_PATH +"mng/code/XitClCodeMng_"+cmd+"_popup"+TILES_TYPE.POPUP.getVal();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <pre>메소드 설명: 분류코드관리 CUD 처리</pre>
|
||||
* @return String 요청처리 후 응답객체
|
||||
* @author: 박민규
|
||||
* @throws IOException
|
||||
* @throws ServletException
|
||||
* @date: 2020. 4. 16.
|
||||
*/
|
||||
@RequestMapping(value = "ClCodeMng_{cmd}_proc", method=RequestMethod.POST)
|
||||
public void ClCodeMng_cmd_proc(@PathVariable String cmd
|
||||
,@ModelAttribute("vo") XitClCodeMngVO vo
|
||||
,@ModelAttribute("searchVO") XitClCodeMngSearchVO searchVO
|
||||
,@RequestParam(value="clCodes", required=false, defaultValue="") String clCodes
|
||||
,BindingResult bindingResult
|
||||
,SessionStatus status
|
||||
,Model model
|
||||
,HttpServletRequest request
|
||||
,HttpServletResponse response
|
||||
) throws ServletException, IOException {
|
||||
|
||||
/**
|
||||
* 처리 분기
|
||||
*/
|
||||
XitLoginVO loginVO = (XitLoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_list";
|
||||
String message = null;
|
||||
switch (cmd) {
|
||||
case "insert": //등록
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("cmmnClCode", vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_input";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setFrstRegisterId(loginVO.getUniqId());
|
||||
service.addProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.insert");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_input";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.insert");
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_input";
|
||||
}
|
||||
break;
|
||||
|
||||
// case "inserts": //다건 등록
|
||||
// break;
|
||||
|
||||
case "update": //수정
|
||||
//유효성 확인
|
||||
//2020.11.24. 주석처리
|
||||
beanValidator.validate(vo, bindingResult);
|
||||
// beanValidator.validate("cmmnClCode", vo, bindingResult);
|
||||
if (bindingResult.hasErrors()) {
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_edit";
|
||||
break;
|
||||
}
|
||||
//처리
|
||||
try {
|
||||
vo.setLastUpdusrId(loginVO.getUniqId());
|
||||
service.modifyProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.update");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "delete": //삭제
|
||||
//처리
|
||||
try {
|
||||
vo.setLastUpdusrId(loginVO.getUniqId());
|
||||
service.removeProc(vo);
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
break;
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_edit";
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
sLocationUrl = "forward:/framework/biz/mng/code/ClCodeMng_edit";
|
||||
}
|
||||
break;
|
||||
|
||||
case "deletes": //다건 삭제
|
||||
//처리
|
||||
try {
|
||||
service.removesProc(clCodes, loginVO.getUniqId());
|
||||
status.setComplete();
|
||||
message = xitMessageSource.getMessage("success.common.delete");
|
||||
} catch (RuntimeException e) {
|
||||
message = e.getMessage();
|
||||
} catch (Exception e) {
|
||||
message = xitMessageSource.getMessage("fail.common.delete");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
new RuntimeException("유효하지 않은 요청 입니다.");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 응답 설정
|
||||
*/
|
||||
/* ============================
|
||||
* 2020.09.10 박민규
|
||||
* 서버 호출 방식에 관계 없이 응답처리가 가능하도록 개선
|
||||
* -기존 호출방식도 유지하며 ajax로 서버호출 시 json 으로 응답처리가 가능하도록 개선
|
||||
* [AS-IS] 반환타입 String, return url에 "forward"구문으로 처리
|
||||
* [TO-BE] 반환타입 void, DispatchServlet으로 forward 처리, ajax 호출인 경우 json응답처리 서비스로 forward
|
||||
============================ */
|
||||
//2020.09.10 주석처리
|
||||
// model.addAttribute("message", message);
|
||||
// return sLocationUrl;
|
||||
model.addAttribute("message", message);
|
||||
if(AjaxUtils.isAjaxRequest(request)){ //ajax 요청시
|
||||
//반환 데이터 설정
|
||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||
resultMap.put("message", message);
|
||||
XitCmmnUtil.forwardForAjaxRequest(request, response, resultMap);
|
||||
}else { //submit 요청 시
|
||||
XitCmmnUtil.forwardForSubmitRequest(request, response, sLocationUrl, model.asMap());
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package kr.xit.framework.biz.mng.menu.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import kr.xit.framework.biz.mng.menu.model.MenuCreateMngVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @업무그룹명: 메뉴생성관리 Service
|
||||
* @설명:
|
||||
* @최초작성일: 2020. 3. 26. 오전 10:07:11
|
||||
* @최초작성자: 박민규
|
||||
* @author (주)엑스아이티 개발팀
|
||||
* @since 2002. 2. 2.
|
||||
* @version 1.0 Copyright(c) XIT All rights reserved.
|
||||
*/
|
||||
public interface IMenuByRoleMgtService {
|
||||
|
||||
<T> List<MenuCreateMngVO> findRoleInfos(T t);
|
||||
<T> List<MenuCreateMngVO> findMenuInfoByRoleList(T t);
|
||||
void saveMenuByRoleList(Map<String, Object> paraMap);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue