Files
operationSystem-back/src/main/java/com/caliverse/admin/domain/service/GroupService.java
2025-08-06 14:39:05 +09:00

176 lines
6.6 KiB
Java

package com.caliverse.admin.domain.service;
import com.caliverse.admin.domain.dao.admin.GroupMapper;
import com.caliverse.admin.domain.entity.*;
import com.caliverse.admin.domain.entity.log.LogAction;
import com.caliverse.admin.domain.request.GroupRequest;
import com.caliverse.admin.domain.response.GroupResponse;
import com.caliverse.admin.global.common.annotation.BusinessProcess;
import com.caliverse.admin.global.common.annotation.RequestLog;
import com.caliverse.admin.global.common.code.CommonCode;
import com.caliverse.admin.global.common.code.ErrorCode;
import com.caliverse.admin.global.common.code.SuccessCode;
import com.caliverse.admin.global.common.exception.RestApiException;
import com.caliverse.admin.global.common.utils.CommonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Slf4j
@Service
@RequiredArgsConstructor
public class GroupService {
private final GroupMapper groupMapper;
// 관리자 권한 리스트 조회
public GroupResponse getAllGroups(){
Map map = new HashMap();
List<Groups> getGroupList = groupMapper.getGroupList(map);
return GroupResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.resultData(GroupResponse.ResultData.builder().groupList(getGroupList).build())
.build();
}
/**
* param: orderby
* param: page
* return GroupResponse.list
*/
// 권한 설정 화면 리스트 조회
@RequestLog
public GroupResponse getGroupList(Map requestMap){
//페이징 처리
requestMap = CommonUtils.pageSetting(requestMap);
List<Groups> groupList = groupMapper.getGroupList(requestMap);
int allCnt = groupMapper.getAllCnt();
return GroupResponse.builder()
.resultData(GroupResponse.ResultData.builder()
.groupList(groupList)
.total(allCnt)
.totalAll(allCnt)
.pageNo(requestMap.get("page_no")!=null?
Integer.valueOf(requestMap.get("page_no").toString()):1)
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
// 권한 설정 상세 조회
@RequestLog
public GroupResponse getGroupDetail(String groupId){
Long lid = Long.valueOf(groupId);
List<Authority> authorityList = groupMapper.getGroupAuth(lid);
return GroupResponse.builder()
.resultData(GroupResponse.ResultData.builder()
.authorityList(authorityList)
.groupId(lid)
.groupNm(groupMapper.getGroupInfo(lid).get("name"))
.build())
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.build();
}
//권한 그룹 등록
@BusinessProcess(action = LogAction.GROUP)
@Transactional(transactionManager = "transactionManager")
@RequestLog
public GroupResponse postAdminGroup(GroupRequest groupRequest){
List<Integer> authList = Arrays.asList(1, 5, 6, 9, 10, 11, 13, 14, 15, 16, 19, 22, 24, 26, 32, 36, 41,46, 49); //그룹 초기 권한
Map<String, Object> map = new HashMap<>();
groupRequest.setCreateBy(CommonUtils.getAdmin().getId());
int groupName = groupMapper.findGroupName(groupRequest.getGroupNm());
if(groupName == 0){
groupMapper.postGroup(groupRequest);
map.put("groupId", groupRequest.getId());
authList.forEach(val->{
map.put("authId",val);
groupMapper.insertGroupAuth(map);
});
}else{
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DUPLICATED_GROUPNAME.getMessage());
}
log.info("postAdminGroup group id: {}", groupRequest.getId());
return GroupResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.resultData(GroupResponse.ResultData.builder().message(SuccessCode.SAVE.getMessage()).build())
.build();
}
//그룹 권한 수정
@BusinessProcess(action = LogAction.GROUP)
@Transactional(transactionManager = "transactionManager")
@RequestLog
public GroupResponse updateAdminGroup(String groupId,GroupRequest groupRequest){
Map<String , Object> map = new HashMap<>();
//로그 남기 before 그룹 설정
List<Authority> beforeAuth = groupMapper.getGroupAuth(Long.valueOf(groupId));
log.info("updateAdminGroup before::{}",beforeAuth);
// group_auth 테이블 삭제 By groupId
groupMapper.deleteGroupAuth(groupId);
groupRequest.getGroupList().forEach(
item-> {
map.put("authId", item.getAuthId());
map.put("groupId", groupId);
groupMapper.insertGroupAuth(map);
}
);
//로그 남기 before 그룹 설정
List<Authority> afterAuth = groupMapper.getGroupAuth(Long.valueOf(groupId));
log.info("updateAdminGroup groupId: {}", groupId);
return GroupResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.resultData(GroupResponse.ResultData.builder().message(SuccessCode.UPDATE.getMessage()).build())
.build();
}
//그룹 삭제
@BusinessProcess(action = LogAction.GROUP)
@Transactional(transactionManager = "transactionManager")
@RequestLog
public GroupResponse deleteAdminGroup(GroupRequest groupRequest){
Map<String, Object> map = new HashMap();
groupRequest.getGroupList().forEach(
item-> {
Map<String, String> groupInfo = groupMapper.getGroupInfo(item.getGroupId());
groupMapper.deleteGroup(item.getGroupId());
}
);
log.info("deleteAdminGroup group: {}", map);
return GroupResponse.builder()
.status(CommonCode.SUCCESS.getHttpStatus())
.result(CommonCode.SUCCESS.getResult())
.resultData(GroupResponse.ResultData.builder().message(SuccessCode.DELETE.getMessage()).build())
.build();
}
}