diff --git a/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteController.java b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteController.java new file mode 100644 index 00000000..9813d463 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteController.java @@ -0,0 +1,34 @@ +package com.interplug.qcast.biz.storeFavorite; + +import com.interplug.qcast.biz.storeFavorite.dto.StoreFavoriteRequest; +import com.interplug.qcast.biz.user.dto.UserResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequestMapping("/api/store-favorite") +@RequiredArgsConstructor +@Tag(name = "StoreFavorite", description = "Store Favorite 관련 API") +public class StoreFavoriteController { + private final StoreFavoriteService storeFavService; + + @Operation(description = "Store Favorite 정보를 등록/수정 한다.(동기화)") + @PutMapping("/store-favorite-save") + @ResponseStatus(HttpStatus.OK) + public UserResponse setStoreFavoriteSave(@RequestBody StoreFavoriteRequest req) { + UserResponse userResponse = new UserResponse(); + + int resultCnt = storeFavService.setStoreFavoriteSave(req); + + if (resultCnt > 0) userResponse.setCode("200"); + else userResponse.setCode("500"); + + return userResponse; + } + +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteMapper.java b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteMapper.java new file mode 100644 index 00000000..2b7e1593 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteMapper.java @@ -0,0 +1,10 @@ +package com.interplug.qcast.biz.storeFavorite; + +import com.interplug.qcast.biz.storeFavorite.dto.StoreFavoriteRequest; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface StoreFavoriteMapper { + + int setStoreFavoriteSave(StoreFavoriteRequest req); +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteService.java b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteService.java new file mode 100644 index 00000000..0b9b39b1 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/storeFavorite/StoreFavoriteService.java @@ -0,0 +1,17 @@ +package com.interplug.qcast.biz.storeFavorite; + +import com.interplug.qcast.biz.storeFavorite.dto.StoreFavoriteRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class StoreFavoriteService { + private final StoreFavoriteMapper storeFavoriteMapper; + + public int setStoreFavoriteSave(StoreFavoriteRequest req) { + return storeFavoriteMapper.setStoreFavoriteSave(req); + } + + +} diff --git a/src/main/java/com/interplug/qcast/biz/storeFavorite/dto/StoreFavoriteRequest.java b/src/main/java/com/interplug/qcast/biz/storeFavorite/dto/StoreFavoriteRequest.java new file mode 100644 index 00000000..885b4237 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/storeFavorite/dto/StoreFavoriteRequest.java @@ -0,0 +1,16 @@ +package com.interplug.qcast.biz.storeFavorite.dto; + +import lombok.Data; + +@Data +public class StoreFavoriteRequest { + private String userId; + private String saleStoreId; + private String dispOrder; + private String delFlg; + private String registDatetime; + private String lastEditDatetime; +} + + + diff --git a/src/main/java/com/interplug/qcast/biz/user/UserController.java b/src/main/java/com/interplug/qcast/biz/user/UserController.java index 301307bd..df4f8010 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserController.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserController.java @@ -47,4 +47,18 @@ public class UserController { return userResponse; } + + @Operation(description = "판매점 Sap 정보를 등록/수정 한다.(동기화)") + @PutMapping("/store-sap-info-save") + @ResponseStatus(HttpStatus.OK) + public UserResponse setStoreSapCdSave(@RequestBody StoreRequest storeReq) { + UserResponse userResponse = new UserResponse(); + + int resultCnt = userService.setStoreSapCdSave(storeReq); + + if (resultCnt > 0) userResponse.setCode("200"); + else userResponse.setCode("500"); + + return userResponse; + } } diff --git a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java index 6d331899..abfcba5e 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserMapper.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserMapper.java @@ -13,6 +13,4 @@ public interface UserMapper { int setUserSave(UserRequest userReqList); - int deleteUser(UserRequest userReqList); - } \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/user/UserService.java b/src/main/java/com/interplug/qcast/biz/user/UserService.java index 2423ca62..e28559b2 100644 --- a/src/main/java/com/interplug/qcast/biz/user/UserService.java +++ b/src/main/java/com/interplug/qcast/biz/user/UserService.java @@ -13,23 +13,23 @@ public class UserService { private final UserMapper userMapper; public int setStoreSave(StoreRequest storeReq) { + int resultCnt = userMapper.setStoreSave(storeReq); userMapper.setStoreSapCdSave(storeReq); - return userMapper.setStoreSave(storeReq); + return resultCnt; } public int setUserSave(List userReqList) { int resultCnt = 0; if (!userReqList.isEmpty()) { for (UserRequest userReq : userReqList) { - if ("1".equals(userReq.getDelFlg())) { // 삭제 - resultCnt += userMapper.deleteUser(userReq); - } else { - resultCnt += userMapper.setUserSave(userReq); - } - + resultCnt += userMapper.setUserSave(userReq); } } return resultCnt; } + public int setStoreSapCdSave(StoreRequest storeReq) { + return userMapper.setStoreSapCdSave(storeReq); + } + } diff --git a/src/main/resources/mappers/storeFavorite/storeFavoriteMapper.xml b/src/main/resources/mappers/storeFavorite/storeFavoriteMapper.xml new file mode 100644 index 00000000..9d4bf28a --- /dev/null +++ b/src/main/resources/mappers/storeFavorite/storeFavoriteMapper.xml @@ -0,0 +1,34 @@ + + + + + + /* sqlid : com.interplug.qcast.storeFavorite.setStoreFavoriteSave */ + MERGE M_SALES_STORE_FAV AS A + USING + ( SELECT #{userId} AS USER_ID, #{saleStoreId} AS SALE_STORE_ID ) AS D + ON (A.USER_ID = D.USER_ID AND A.SALE_STORE_ID = D.SALE_STORE_ID + ) + WHEN MATCHED THEN + UPDATE SET + DEL_FLG = #{delFlg} + , DISP_ORDER = #{dispOrder} + , LAST_EDIT_DATETIME = #{lastEditDatetime} + WHEN NOT MATCHED THEN + INSERT ( + USER_ID + , SALE_STORE_ID + , DISP_ORDER + , DEL_FLG + , REGIST_DATETIME + , LAST_EDIT_DATETIME + ) VALUES ( + #{userId} + , #{saleStoreId} + , #{dispOrder} + , #{delFlg} + , #{registDatetime} + , #{lastEditDatetime} + ); + + diff --git a/src/main/resources/mappers/user/userMapper.xml b/src/main/resources/mappers/user/userMapper.xml index 732a0011..c07e355f 100644 --- a/src/main/resources/mappers/user/userMapper.xml +++ b/src/main/resources/mappers/user/userMapper.xml @@ -6,20 +6,55 @@ /* sqlid : com.interplug.qcast.user.setStoreSapCdSave */ - MERGE M_SALES_STORE_ID_FOR_SAP AS A - USING - ( SELECT #{saleStoreId} AS SALE_STORE_ID ) AS D - ON (A.SALE_STORE_ID = D.SALE_STORE_ID) + WITH SALES_STORE_CTE AS ( + SELECT + SALE_STORE_ID + , SALE_STORE_NAME + , SALE_STORE_LEVEL + , FIRST_AGENT_ID + , PARENT_SALE_AGENT_ID + , DEL_FLG + FROM M_SALES_STORE WITH(NOLOCK) + WHERE SALE_STORE_ID = #{saleStoreId} + AND APPROVE_FLG = '2' + UNION ALL + SELECT + A.SALE_STORE_ID + , A.SALE_STORE_NAME + , A.SALE_STORE_LEVEL + , A.FIRST_AGENT_ID + , A.PARENT_SALE_AGENT_ID + , A.DEL_FLG + FROM M_SALES_STORE A WITH(NOLOCK) + INNER JOIN SALES_STORE_CTE B + ON A.PARENT_SALE_AGENT_ID = B.SALE_STORE_ID + WHERE A.APPROVE_FLG = '2' + ) + MERGE INTO M_SALES_STORE_ID_FOR_SAP AS A + USING ( + SELECT + CASE WHEN SALE_STORE_LEVEL = '1' THEN 'Y' ELSE 'N' END AS FIRST_AGENT_YN + , SALE_STORE_ID + , SALE_STORE_NAME + , SALE_STORE_LEVEL + , FIRST_AGENT_ID + , PARENT_SALE_AGENT_ID + , DEL_FLG + FROM SALES_STORE_CTE + ) AS D + ON A.SALE_STORE_ID = D.SALE_STORE_ID + WHEN MATCHED AND D.DEL_FLG = '1' THEN + DELETE WHEN MATCHED THEN UPDATE SET SAP_SALES_STORE_CD = #{sapSalesStoreCd} WHEN NOT MATCHED THEN INSERT ( - SALE_STORE_ID - , SAP_SALES_STORE_CD + SALE_STORE_ID + , SAP_SALES_STORE_CD ) VALUES ( - #{saleStoreId} - , #{sapSalesStoreCd} + #{saleStoreId} + , #{sapSalesStoreCd} ); @@ -138,8 +173,11 @@ /* sqlid : com.interplug.qcast.user.setUserSave */ MERGE M_USER AS A USING - ( SELECT #{userId} AS USER_ID ) AS D + ( SELECT #{userId} AS USER_ID + , #{delFlg} AS DEL_FLG ) AS D ON (A.USER_ID = D.USER_ID) + WHEN MATCHED AND D.DEL_FLG = '1' THEN + DELETE WHEN MATCHED THEN UPDATE SET SALE_STORE_ID = #{saleStoreId} @@ -192,9 +230,4 @@ ); - - /* sqlid : com.interplug.qcast.user.deleteUser */ - DELETE FROM M_USER - WHERE USER_ID = #{userId} - \ No newline at end of file