메뉴배너 관련 수정

This commit is contained in:
2025-06-27 09:29:58 +09:00
parent f979d4fa34
commit cfe9a7160d
7 changed files with 82 additions and 57 deletions

View File

@@ -14,6 +14,7 @@ public interface MenuMapper {
MenuBanner getBannerDetail(Long id); MenuBanner getBannerDetail(Long id);
List<Message> getMessage(Long id); List<Message> getMessage(Long id);
List<MenuBanner> getScheduleBannerList(); List<MenuBanner> getScheduleBannerList();
int getMaxOrderId();
void insertBanner(MenuRequest mailRequest); void insertBanner(MenuRequest mailRequest);
void insertMessage(Map map); void insertMessage(Map map);

View File

@@ -29,6 +29,8 @@ public class MenuBanner {
private LocalDateTime endDt; private LocalDateTime endDt;
@JsonProperty("is_link") @JsonProperty("is_link")
private boolean isLink; private boolean isLink;
@JsonProperty("order_id")
private Integer orderId;
@JsonProperty("create_by") @JsonProperty("create_by")
private String createBy; private String createBy;

View File

@@ -25,6 +25,8 @@ public class MenuRequest {
private boolean isLink; private boolean isLink;
@JsonProperty("link_list") @JsonProperty("link_list")
private List<Message> linkList; private List<Message> linkList;
@JsonProperty("order_id")
private Integer orderId;
@JsonProperty("create_by") @JsonProperty("create_by")
private Long createBy; private Long createBy;

View File

@@ -149,6 +149,9 @@ public class MenuService {
public MenuResponse postBanner(MenuRequest menuRequest){ public MenuResponse postBanner(MenuRequest menuRequest){
menuRequest.setCreateBy(CommonUtils.getAdmin().getId()); menuRequest.setCreateBy(CommonUtils.getAdmin().getId());
int maxOrderId = menuMapper.getMaxOrderId();
menuRequest.setOrderId(maxOrderId+1);
menuMapper.insertBanner(menuRequest); menuMapper.insertBanner(menuRequest);
long banner_id = menuRequest.getId(); long banner_id = menuRequest.getId();
@@ -163,7 +166,8 @@ public class MenuService {
File file = fileUtils.loadFileObject(temp_file); File file = fileUtils.loadFileObject(temp_file);
String fileUri = ""; String fileUri = "";
try{ try{
fileUri = s3Service.uploadFile(file, CommonConstants.S3_MENU_BANNER_DIRECTORY + banner_id, contentType); String directory = String.format("%s/%s-%d", CommonConstants.S3_MENU_BANNER_DIRECTORY, CommonConstants.S3_MENU_BANNER_DIRECTORY, banner_id);
fileUri = s3Service.uploadFile(file, directory, contentType);
}catch (S3Exception e) { }catch (S3Exception e) {
log.error("S3 오류: {}", e.getMessage()); log.error("S3 오류: {}", e.getMessage());
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.ERROR_FILE_S3_UPLOAD.getMessage()); throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.ERROR_FILE_S3_UPLOAD.getMessage());

View File

@@ -5,7 +5,7 @@ public class CommonConstants {
public static final String FALSE = "False"; public static final String FALSE = "False";
public static final String NONE = "None"; public static final String NONE = "None";
public static final String SCHEDULE = "Schedule"; public static final String SCHEDULE = "Schedule";
public static final int BATTLE_SERVER_WAIT_TIME = 600; // (seconds) 이벤트 홍보시간이 300초인데 여유있게 처리하게 하기위해 600으로 준다. public static final int BATTLE_SERVER_WAIT_TIME = 300; // (seconds) 이벤트 홍보시간이 300초인데 여유있게 처리하게 하기위해 600으로 준다.
public static final int BATTLE_INSTANCE_ID = 1017007; public static final int BATTLE_INSTANCE_ID = 1017007;
public static final String CALIUM_ITEM_CODE = "19010003"; public static final String CALIUM_ITEM_CODE = "19010003";
public static final String CALIVERSE_CODE = "CALIVERSE"; public static final String CALIVERSE_CODE = "CALIVERSE";
@@ -16,7 +16,7 @@ public class CommonConstants {
public static final String LAND_EVENT = "event"; public static final String LAND_EVENT = "event";
public static final String SYSTEM_MAIL_LAND_TRANS_KEY = "LandTrans"; public static final String SYSTEM_MAIL_LAND_TRANS_KEY = "LandTrans";
public static final int DYNAMODB_PAGING_SIZE = 30; public static final int DYNAMODB_PAGING_SIZE = 30;
public static final String S3_MENU_BANNER_DIRECTORY = "banner-"; public static final String S3_MENU_BANNER_DIRECTORY = "menuBanner";
public static final String GUID = "GUID"; public static final String GUID = "GUID";
public static final String NICKNAME = "NICKNAME"; public static final String NICKNAME = "NICKNAME";
public static final String EMAIL = "EMAIL"; public static final String EMAIL = "EMAIL";

View File

@@ -1,15 +0,0 @@
package com.caliverse.admin.global.common.constants;
public class MetadataConstants {
public static final String JSON_LIST_TEXT_STRING = "TextStringMetaDataList";
public static final String JSON_LIST_ITEM = "ItemMetaDataList";
public static final String JSON_LIST_CLOTH_TYPE = "ClothEquipTypeDataList";
public static final String JSON_LIST_TOOL = "ToolMetaDataList";
public static final String JSON_LIST_BAN_WORD = "BanWordMetaDataList";
public static final String JSON_LIST_QUEST = "QuestMetaDataList";
public static final String JSON_LIST_BUILDING = "BuildingMetaDataList";
public static final String JSON_LIST_LAND = "LandMetaDataList";
public static final String JSON_LIST_BATTLE_CONFIG = "BattleFFAConfigMetaDataList";
public static final String JSON_LIST_BATTLE_REWARD = "BattleFFARewardMetaDataList";
public static final String JSON_LIST_SYSTEM_META = "SystemMailMetaDataList";
}

View File

@@ -8,6 +8,7 @@
<result property="status" column="status"/> <result property="status" column="status"/>
<result property="startDt" column="start_dt"/> <result property="startDt" column="start_dt"/>
<result property="endDt" column="end_dt"/> <result property="endDt" column="end_dt"/>
<result property="orderId" column="order_id"/>
<result property="createBy" column="create_by"/> <result property="createBy" column="create_by"/>
<result property="createDt" column="create_dt"/> <result property="createDt" column="create_dt"/>
<result property="updateBy" column="update_by"/> <result property="updateBy" column="update_by"/>
@@ -21,19 +22,25 @@
<!--리스트 조회--> <!--리스트 조회-->
<select id="getBannerList" resultMap="MenuResultMap" parameterType="map"> <select id="getBannerList" resultMap="MenuResultMap" parameterType="map">
SELECT (@row_number:=@row_number + 1) AS row_num , c.* SELECT * FROM (
SELECT (@row_number:=@row_number + 1) AS row_num, c.*
FROM ( FROM (
SELECT SELECT
a.id a.id,
, a.title a.title,
, a.is_link a.is_link,
, a.status CASE
, a.start_dt WHEN NOW() &lt; a.start_dt THEN 'WAIT'
, a.end_dt WHEN NOW() &gt;= a.start_dt AND NOW() &lt;= a.end_dt THEN 'RUNNING'
, (SELECT email FROM admin WHERE id = a.create_by ) AS create_by WHEN NOW() &gt; a.end_dt THEN 'FINISH'
, a.create_dt END AS status,
, (SELECT email FROM admin WHERE id = a.update_by ) AS update_by a.start_dt,
, a.update_dt a.end_dt,
a.order_id,
(SELECT email FROM admin WHERE id = a.create_by) AS create_by,
a.create_dt,
(SELECT email FROM admin WHERE id = a.update_by) AS update_by,
a.update_dt
FROM menu_banner a FROM menu_banner a
WHERE 1 = 1 WHERE 1 = 1
AND a.deleted = 0 AND a.deleted = 0
@@ -44,8 +51,12 @@
<if test="status != null and status != ''"> <if test="status != null and status != ''">
<choose> <choose>
<when test="status != 'ALL' "> <when test="status != 'ALL'">
AND a.status = #{status} AND CASE
WHEN NOW() &lt; a.start_dt THEN 'WAIT'
WHEN NOW() &gt;= a.start_dt AND NOW() &lt;= a.end_dt THEN 'RUNNING'
WHEN NOW() &gt; a.end_dt THEN 'FINISH'
END = #{status}
</when> </when>
</choose> </choose>
</if> </if>
@@ -54,10 +65,18 @@
AND a.start_dt &gt;= #{startDate, jdbcType=TIMESTAMP} AND a.start_dt &gt;= #{startDate, jdbcType=TIMESTAMP}
AND a.end_dt &lt;= #{endDate, jdbcType=TIMESTAMP} AND a.end_dt &lt;= #{endDate, jdbcType=TIMESTAMP}
</if> </if>
) c,
ORDER BY a.create_dt (SELECT @row_number:=0) AS t
)c ORDER BY
, (SELECT @row_number:=0) AS t CASE
WHEN c.status = 'RUNNING' THEN 0
WHEN c.status = 'WAIT' THEN 1
WHEN c.status = 'FINISH' THEN 2
ELSE 3
END,
c.order_id,
c.create_dt
) result
<if test="orderby != null and orderby != ''"> <if test="orderby != null and orderby != ''">
ORDER BY row_num ${orderby} ORDER BY row_num ${orderby}
</if> </if>
@@ -77,7 +96,12 @@
, a.is_link , a.is_link
, a.start_dt , a.start_dt
, a.end_dt , a.end_dt
, a.status , CASE
WHEN NOW() &lt; a.start_dt THEN 'WAIT'
WHEN NOW() &gt;= a.start_dt AND NOW() &lt;= a.end_dt THEN 'RUNNING'
WHEN NOW() &gt; a.end_dt THEN 'FINISH'
END AS status
, a.order_id
, (SELECT email FROM admin WHERE id = a.create_by ) AS create_by , (SELECT email FROM admin WHERE id = a.create_by ) AS create_by
, a.create_dt , a.create_dt
, (SELECT email FROM admin WHERE id = a.update_by ) AS update_by , (SELECT email FROM admin WHERE id = a.update_by ) AS update_by
@@ -88,16 +112,22 @@
</select> </select>
<select id="getMessage" parameterType="java.lang.Long" resultMap="MessageResultMap" > <select id="getMessage" parameterType="java.lang.Long" resultMap="MessageResultMap" >
SELECT SELECT *
*
FROM message FROM message
WHERE target_id = #{id} WHERE target_id = #{id}
AND type = 'BANNER' AND type = 'BANNER'
</select> </select>
<select id="getMaxOrderId" resultType="java.lang.Integer">
SELECT COALESCE(MAX(order_id), 0)
FROM menu_banner
WHERE deleted = 0
AND NOW() &lt;= end_dt
</select>
<insert id="insertBanner" parameterType="com.caliverse.admin.domain.request.MenuRequest" useGeneratedKeys="true" keyProperty="id"> <insert id="insertBanner" parameterType="com.caliverse.admin.domain.request.MenuRequest" useGeneratedKeys="true" keyProperty="id">
INSERT INTO menu_banner (title, is_link, start_dt, end_dt) INSERT INTO menu_banner (title, is_link, start_dt, end_dt, order_id)
VALUES (#{title}, #{isLink}, #{startDt}, #{endDt}) VALUES (#{title}, #{isLink}, #{startDt}, #{endDt}, #{orderId})
</insert> </insert>
<insert id="insertMessage" parameterType="map"> <insert id="insertMessage" parameterType="map">
@@ -112,6 +142,7 @@
, send_type =#{sendType} , send_type =#{sendType}
, mail_type = #{mailType} , mail_type = #{mailType}
, send_dt = #{sendDt} , send_dt = #{sendDt}
, order_id = #{orderId}
, update_by = #{updateBy} , update_by = #{updateBy}
, update_dt = NOW() , update_dt = NOW()
WHERE id = #{id} WHERE id = #{id}