shjung 2 tahun lalu
induk
melakukan
e1095e7092

+ 13 - 5
src/main/java/com/its/op/controller/its/facility/TbUserMsgController.java

@@ -2,6 +2,7 @@ package com.its.op.controller.its.facility;
 
 import com.its.op.dto.its.oper.TbUserMsgDto;
 import com.its.op.dto.its.oper.TbUserMsgToDto;
+import com.its.op.entity.its.oper.TbUserMsgToKey;
 import com.its.op.service.its.oper.TbUserMsgService;
 import com.its.op.service.its.oper.TbUserMsgToService;
 import io.swagger.annotations.Api;
@@ -36,11 +37,11 @@ public class TbUserMsgController {
         return this.service.findById(msgNmbr);
     }
 
-    @ApiOperation(value = "사용자 메시지 정보변경(TB_USER_MSG)", response = TbUserMsgDto.class)
-    @PutMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
-    public TbUserMsgDto updateById(@PathVariable("msgNmbr") final Long msgNmbr, @RequestBody @Valid final TbUserMsgDto.TbUserMsgUpdReq req) {
-        return this.service.updateById(msgNmbr, req);
-    }
+//    @ApiOperation(value = "사용자 메시지 정보변경(TB_USER_MSG)", response = TbUserMsgDto.class)
+//    @PutMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbUserMsgDto updateById(@PathVariable("msgNmbr") final Long msgNmbr, @RequestBody @Valid final TbUserMsgDto.TbUserMsgUpdReq req) {
+//        return this.service.updateById(msgNmbr, req);
+//    }
 
     @ApiOperation(value = "사용자 메시지 정보변경/생성-개별(TB_USER_MSG)", response = TbUserMsgDto.class)
     @PostMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
@@ -85,6 +86,13 @@ public class TbUserMsgController {
         return this.toService.findAllListTo(msgNmbr);
     }
 
+    @ApiOperation(value = "사용자 메시지 대상-개별(TB_USER_MSG_TO)", response = TbUserMsgDto.class)
+    @DeleteMapping(value = "/{msgNmbr}/{userId}", produces = {"application/json; charset=utf8"})
+    public TbUserMsgToDto deleteDataByIdTo(@PathVariable("msgNmbr") final Long msgNmbr, @PathVariable("msgNmbr") final String userId) {
+        TbUserMsgToKey msgKey = new TbUserMsgToKey(msgNmbr, userId);
+        return this.toService.deleteById(msgKey);
+    }
+
     /**
      * 사용자 메시지 확인
      * @param msgNmbr

+ 0 - 72
src/main/java/com/its/op/controller/its/facility/TbUserMsgToController.java

@@ -1,72 +0,0 @@
-package com.its.op.controller.its.facility;
-
-import com.its.op.dto.its.oper.TbUserMsgToDto;
-import com.its.op.entity.its.oper.TbUserMsgToKey;
-import com.its.op.service.its.oper.TbUserMsgToService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-@Api(tags = "사용자 메시지 대상")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/tb_user_msg_to")
-public class TbUserMsgToController {
-
-    private final TbUserMsgToService service;
-
-    @ApiOperation(value = "사용자 메시지 대상 전체조회(TB_USER_MSG_TO)", response = TbUserMsgToDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<TbUserMsgToDto> findAll() {
-        return this.service.findAll();
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 전체조회(TB_USER_MSG_TO)", response = TbUserMsgToDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
-    public List<TbUserMsgToDto> findAllList() {
-        return this.service.findAllList();
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 개별조회(TB_USER_MSG_TO)", response = TbUserMsgToDto.class)
-    @GetMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
-    public TbUserMsgToDto findById(@PathVariable("msgNmbr") final TbUserMsgToKey msgNmbr) {
-        return this.service.findById(msgNmbr);
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 정보변경(TB_USER_MSG_TO)", response = TbUserMsgToDto.class)
-    @PutMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
-    public TbUserMsgToDto updateById(@PathVariable("msgNmbr") final TbUserMsgToKey msgNmbr, @RequestBody @Valid final TbUserMsgToDto.TbUserMsgToUpdReq req) {
-        return this.service.updateById(msgNmbr, req);
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 정보변경/생성-목록(TB_USER_MSG_TO)", response = TbUserMsgToDto.class, responseContainer = "ArrayList")
-    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<TbUserMsgToDto> mergeInfoList(@RequestBody @Valid final List<TbUserMsgToDto.TbUserMsgToUpdReq> listReq) {
-        return this.service.mergeInfoList(listReq);
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 정보변경/생성-개별(TB_USER_MSG_TO)", response = TbUserMsgToDto.class)
-    @PostMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
-    public TbUserMsgToDto mergeInfo(@PathVariable("msgNmbr") final TbUserMsgToKey msgNmbr, @RequestBody @Valid final TbUserMsgToDto.TbUserMsgToUpdReq req) {
-        return this.service.mergeInfo(req);
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 정보삭제-개별(TB_USER_MSG_TO)", response = TbUserMsgToDto.class)
-    @DeleteMapping(value = "/{msgNmbr}", produces = {"application/json; charset=utf8"})
-    public TbUserMsgToDto deleteDataById(@PathVariable("msgNmbr") final TbUserMsgToKey msgNmbr) {
-        return this.service.deleteById(msgNmbr);
-    }
-
-    @ApiOperation(value = "사용자 메시지 대상 정보삭제-목록(TB_USER_MSG_TO)", response = TbUserMsgToDto.class, responseContainer = "ArrayList")
-    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<TbUserMsgToDto> deleteDataByIds(@RequestBody @Valid final List<TbUserMsgToKey> ids) {
-        return this.service.deleteByIds(ids);
-    }
-
-}

+ 4 - 0
src/main/java/com/its/op/dao/repository/its/oper/TbUserMsgToRepository.java

@@ -4,6 +4,7 @@ import com.its.op.entity.its.oper.TbUserMsgTo;
 import com.its.op.entity.its.oper.TbUserMsgToKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
@@ -22,4 +23,7 @@ public interface TbUserMsgToRepository extends JpaRepository<TbUserMsgTo, TbUser
     @Query("select p from TbUserMsgTo p where p.msgNmbr = :msgNmbr")
     List<TbUserMsgTo> findAllListTo(@Param("msgNmbr") Long msgNmbr);
 
+    @Modifying
+    @Query("delete from TbUserMsgTo p where p.msgNmbr = :msgNmbr")
+    void deleteDataById(@Param("msgNmbr") Long msgNmbr);
 }

+ 10 - 1
src/main/java/com/its/op/dto/its/oper/TbUserMsgDto.java

@@ -9,6 +9,7 @@ import lombok.*;
 import javax.validation.constraints.PositiveOrZero;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 사용자 메시지 DTO Class
@@ -101,10 +102,14 @@ public class TbUserMsgDto implements Serializable {
         @ApiModelProperty("작성 사용자ID(사원번호), Nullable = N, VARCHAR2(20)")  // N VARCHAR2(20)
         @JsonProperty("user_id")
         @Size(min=1, max=20)
+
         private String userId;
+        @ApiModelProperty("사용자 메시지 대상 정보 목록")
+       @JsonProperty("users")
+        private List<TbUserMsgToDto.TbUserMsgToUpdReq> users;
 
         @Builder
-        public TbUserMsgUpdReq(Long msg_nmbr, String reg_dt, String msg_cd, String msg_titl, String msg_ctx, String str_dt, String end_dt, String user_id) {
+        public TbUserMsgUpdReq(Long msg_nmbr, String reg_dt, String msg_cd, String msg_titl, String msg_ctx, String str_dt, String end_dt, String user_id, List<TbUserMsgToDto.TbUserMsgToUpdReq> users) {
             this.msgNmbr = msg_nmbr;
             this.regDt = reg_dt;
             this.msgCd = msg_cd;
@@ -113,6 +118,10 @@ public class TbUserMsgDto implements Serializable {
             this.strDt = str_dt;
             this.endDt = end_dt;
             this.userId = user_id;
+            // FOR KISA Secure Coding pass
+            //this.ifscs = ifscs;
+            List<TbUserMsgToDto.TbUserMsgToUpdReq> temp = users;
+            this.users = temp;
         }
 
         public TbUserMsg toEntity() {

+ 15 - 13
src/main/java/com/its/op/service/its/oper/TbUserMsgService.java

@@ -2,6 +2,7 @@ package com.its.op.service.its.oper;
 
 import com.its.op.dao.repository.its.oper.TbUserMsgRepository;
 import com.its.op.dto.its.oper.TbUserMsgDto;
+import com.its.op.dto.its.oper.TbUserMsgToDto;
 import com.its.op.entity.its.oper.TbUserMsg;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -19,6 +20,7 @@ import java.util.Optional;
 public class TbUserMsgService {
 
     private final TbUserMsgRepository repo;
+    private final TbUserMsgToService toService;
 
     // 데이터 1건 조회, 없으면 exception
     private TbUserMsg requireOne(Long msgNmbr) throws NoSuchElementException {
@@ -115,31 +117,31 @@ public class TbUserMsgService {
     // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
     @Transactional
     public TbUserMsgDto mergeInfo(TbUserMsgDto.TbUserMsgUpdReq req) {
+
         TbUserMsg obj = req.toEntity();
         this.repo.save(obj);
+
+        // 메시지 대상 정보 삭제
+        this.toService.deleteDataById(req.getMsgNmbr());
+
+        // 메시지 대상 정보 저장
+        for (TbUserMsgToDto.TbUserMsgToUpdReq user : req.getUsers()) {
+            TbUserMsgToDto dto = this.toService.mergeInfo(user);
+        }
+
         return obj.toDto();
     }
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
     @Transactional
     public TbUserMsgDto deleteById(Long msgNmbr) {
+        // 메시지 대상 정보 삭제
+        this.toService.deleteDataById(msgNmbr);
+
         TbUserMsg entity = requireOne(msgNmbr);
         this.repo.deleteById(msgNmbr);
         return entity.toDto();
     }
 
-    // 정보 삭제-목록, 존재하는 데이터 만 삭제
-    @Transactional
-    public List<TbUserMsgDto> deleteByIds(List<Long> ids) {
-        List<TbUserMsgDto> result = new ArrayList<>();
-        for (Long id : ids) {
-            Optional<TbUserMsg> obj = this.repo.findById(id);
-            if (obj.isPresent()) {
-                this.repo.deleteById(id);
-                result.add(obj.get().toDto());
-            }
-        }
-        return result;
-    }
 
 }

+ 10 - 3
src/main/java/com/its/op/service/its/oper/TbUserMsgToService.java

@@ -62,6 +62,13 @@ public class TbUserMsgToService {
         return entity.toDto();
     }
 
+    /**
+     * 메시지 삭제
+     * @param msgNmbr
+     */
+    public void deleteDataById(Long msgNmbr) {
+        this.repo.deleteDataById(msgNmbr);
+    }
 
 
 
@@ -129,9 +136,9 @@ public class TbUserMsgToService {
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
     @Transactional
-    public TbUserMsgToDto deleteById(TbUserMsgToKey msgNmbr) {
-        TbUserMsgTo entity = requireOne(msgNmbr);
-        this.repo.deleteById(msgNmbr);
+    public TbUserMsgToDto deleteById(TbUserMsgToKey msgKey) {
+        TbUserMsgTo entity = requireOne(msgKey);
+        this.repo.deleteById(msgKey);
         return entity.toDto();
     }