记得上下班打卡 | git大法好,push需谨慎

Commit 9e0f2734 authored by stonepy's avatar stonepy

可选的功能添加地图等配置

parent 2c0b39a8
package com.liquidnet.service.sweet.constant;
import com.liquidnet.service.sweet.vo.SweetManualSortOptionVo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 草莓音乐节手册 Tab 显示模块
*/
public enum SweetManualPosition {
ARTIST("artist", "艺人"),
SITE_MAP("siteMap", "现场地图"),
HOW_TO_REACH("howToReach", "交通出行"),
OFFICIAL_SUPPORT("officialSupport", "官方支持"),
AUDIENCE_NOTICE("audienceNotice", "观众须知"),
STRATEGY("strategy", "观演攻略"),
CUSTOMER_SERVICE("customerService", "客服"),
FOOD_GUIDE("foodGuide", "餐饮攻略"),
ALBUM("album", "相册"),
LOST_FOUND("lostFound", "失物招领"),
MAP_GEOJSON("mapGeojson", "互动地图");
private final String key;
private final String label;
SweetManualPosition(String key, String label) {
this.key = key;
this.label = label;
}
public String getKey() {
return key;
}
public String getLabel() {
return label;
}
public static boolean isValid(String key) {
if (key == null) {
return false;
}
for (SweetManualPosition position : values()) {
if (position.key.equals(key)) {
return true;
}
}
return false;
}
public static String getLabel(String key) {
for (SweetManualPosition position : values()) {
if (position.key.equals(key)) {
return position.label;
}
}
return key;
}
public static List<SweetManualSortOptionVo> allOptions() {
return Arrays.stream(values())
.map(item -> new SweetManualSortOptionVo(item.key, item.label))
.collect(Collectors.toList());
}
public static List<String> parsePositions(String showPosition) {
if (showPosition == null || showPosition.trim().isEmpty()) {
return new ArrayList<>();
}
return Arrays.stream(showPosition.split(","))
.map(String::trim)
.filter(item -> !item.isEmpty())
.collect(Collectors.toList());
}
public static String normalizeContent(String content) {
List<String> invalidKeys = new ArrayList<>();
List<String> positions = parsePositions(content).stream()
.filter(key -> {
if (isValid(key)) {
return true;
}
invalidKeys.add(key);
return false;
})
.collect(Collectors.toList());
if (!invalidKeys.isEmpty()) {
throw new IllegalArgumentException("无效的模块标识: " + String.join(",", invalidKeys));
}
return String.join(",", positions);
}
}
...@@ -3,6 +3,10 @@ package com.liquidnet.service.sweet.service; ...@@ -3,6 +3,10 @@ package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetManualSort; import com.liquidnet.service.sweet.entity.SweetManualSort;
import com.liquidnet.service.sweet.vo.SweetManualSortOptionVo;
import com.liquidnet.service.sweet.vo.SweetManualSortVo;
import java.util.List;
/** /**
* <p> * <p>
...@@ -14,8 +18,10 @@ import com.liquidnet.service.sweet.entity.SweetManualSort; ...@@ -14,8 +18,10 @@ import com.liquidnet.service.sweet.entity.SweetManualSort;
*/ */
public interface ISweetManualSortService extends IService<SweetManualSort> { public interface ISweetManualSortService extends IService<SweetManualSort> {
ResponseDto<SweetManualSort> get(String manualId); ResponseDto<SweetManualSortVo> get(String manualId);
ResponseDto<Boolean> add(String manualId, String content);
ResponseDto<Boolean> add(String manualId,String content); ResponseDto<List<SweetManualSortOptionVo>> options();
} }
package com.liquidnet.service.sweet.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("手册显示模块选项")
public class SweetManualSortOptionVo implements Serializable {
@ApiModelProperty("模块标识")
private String key;
@ApiModelProperty("模块名称")
private String label;
}
package com.liquidnet.service.sweet.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel("手册显示模块配置")
public class SweetManualSortVo implements Serializable {
@ApiModelProperty("主键")
private Long mid;
@ApiModelProperty("电子手册id")
private String manualId;
@ApiModelProperty("已选模块,逗号分隔")
private String showPosition;
@ApiModelProperty("已选模块列表(按顺序)")
private List<String> positions;
@ApiModelProperty("可选模块列表")
private List<SweetManualSortOptionVo> options;
@ApiModelProperty("创建时间")
private LocalDateTime createdAt;
@ApiModelProperty("更新时间")
private LocalDateTime updatedAt;
}
...@@ -2,8 +2,9 @@ package com.liquidnet.service.sweet.controller; ...@@ -2,8 +2,9 @@ package com.liquidnet.service.sweet.controller;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetManualSort;
import com.liquidnet.service.sweet.service.ISweetManualSortService; import com.liquidnet.service.sweet.service.ISweetManualSortService;
import com.liquidnet.service.sweet.vo.SweetManualSortOptionVo;
import com.liquidnet.service.sweet.vo.SweetManualSortVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -11,6 +12,8 @@ import io.swagger.annotations.ApiOperation; ...@@ -11,6 +12,8 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* <p> * <p>
* 电子宣传手册显示内容表 前端控制器 * 电子宣传手册显示内容表 前端控制器
...@@ -29,22 +32,30 @@ public class SweetManualSortController { ...@@ -29,22 +32,30 @@ public class SweetManualSortController {
@PostMapping("add") @PostMapping("add")
@ApiOperation("操作 电子手册tag") @ApiOperation("保存电子手册显示模块")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "content", value = "内容 例子(POSITION_1,POSITION_2)", required = true) @ApiImplicitParam(type = "query", dataType = "String", name = "content",
value = "模块标识,逗号分隔。可选: artist,siteMap,howToReach,officialSupport,audienceNotice,strategy,customerService,foodGuide,album,lostFound,mapGeojson",
required = true)
}) })
public ResponseDto<Boolean> changeStatus(@RequestParam() String manualId, public ResponseDto<Boolean> save(@RequestParam String manualId,
@RequestParam() String content) { @RequestParam String content) {
return sweetManualSortService.add(manualId, content); return sweetManualSortService.add(manualId, content);
} }
@GetMapping("get") @GetMapping("get")
@ApiOperation("获取 电子手册tag") @ApiOperation("获取电子手册显示模块")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true) @ApiImplicitParam(type = "query", dataType = "String", name = "manualId", value = "电子手册id", required = true)
}) })
public ResponseDto<SweetManualSort> changeStatus(@RequestParam() String manualId) { public ResponseDto<SweetManualSortVo> get(@RequestParam String manualId) {
return sweetManualSortService.get(manualId); return sweetManualSortService.get(manualId);
} }
@GetMapping("options")
@ApiOperation("获取可选显示模块列表")
public ResponseDto<List<SweetManualSortOptionVo>> options() {
return sweetManualSortService.options();
}
} }
package com.liquidnet.service.sweet.service.impl; package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.entity.SweetManual; import com.liquidnet.service.sweet.constant.SweetManualPosition;
import com.liquidnet.service.sweet.entity.SweetManualSort; import com.liquidnet.service.sweet.entity.SweetManualSort;
import com.liquidnet.service.sweet.mapper.SweetManualSortMapper; import com.liquidnet.service.sweet.mapper.SweetManualSortMapper;
import com.liquidnet.service.sweet.service.ISweetManualSortService; import com.liquidnet.service.sweet.service.ISweetManualSortService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetManualSortOptionVo;
import com.liquidnet.service.sweet.vo.SweetManualSortVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* <p> * <p>
...@@ -30,9 +33,11 @@ public class SweetManualSortServiceImpl extends ServiceImpl<SweetManualSortMappe ...@@ -30,9 +33,11 @@ public class SweetManualSortServiceImpl extends ServiceImpl<SweetManualSortMappe
private RedisDataUtils redisDataUtils; private RedisDataUtils redisDataUtils;
@Override @Override
public ResponseDto<SweetManualSort> get(String manualId) { public ResponseDto<SweetManualSortVo> get(String manualId) {
try { try {
return ResponseDto.success(sweetManualSortMapper.selectOne(Wrappers.lambdaQuery(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId))); SweetManualSort sort = sweetManualSortMapper.selectOne(
Wrappers.lambdaQuery(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId));
return ResponseDto.success(toVo(sort, manualId));
} catch (Exception e) { } catch (Exception e) {
return ResponseDto.failure(); return ResponseDto.failure();
} }
...@@ -41,24 +46,50 @@ public class SweetManualSortServiceImpl extends ServiceImpl<SweetManualSortMappe ...@@ -41,24 +46,50 @@ public class SweetManualSortServiceImpl extends ServiceImpl<SweetManualSortMappe
@Override @Override
public ResponseDto<Boolean> add(String manualId, String content) { public ResponseDto<Boolean> add(String manualId, String content) {
try { try {
int count = sweetManualSortMapper.selectCount(Wrappers.lambdaUpdate(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId)); String normalizedContent = SweetManualPosition.normalizeContent(content);
int count = sweetManualSortMapper.selectCount(
Wrappers.lambdaUpdate(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId));
if (count > 0) { if (count > 0) {
SweetManualSort sweetManualSort = SweetManualSort.getNew(); SweetManualSort sweetManualSort = SweetManualSort.getNew();
sweetManualSort.setManualId(manualId); sweetManualSort.setManualId(manualId);
sweetManualSort.setShowPosition(content); sweetManualSort.setShowPosition(normalizedContent);
sweetManualSort.setUpdatedAt(LocalDateTime.now()); sweetManualSort.setUpdatedAt(LocalDateTime.now());
sweetManualSortMapper.update(sweetManualSort, Wrappers.lambdaUpdate(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId)); sweetManualSortMapper.update(sweetManualSort,
Wrappers.lambdaUpdate(SweetManualSort.class).eq(SweetManualSort::getManualId, manualId));
} else { } else {
SweetManualSort sweetManualSort = SweetManualSort.getNew(); SweetManualSort sweetManualSort = SweetManualSort.getNew();
sweetManualSort.setManualId(manualId); sweetManualSort.setManualId(manualId);
sweetManualSort.setShowPosition(content); sweetManualSort.setShowPosition(normalizedContent);
sweetManualSort.setCreatedAt(LocalDateTime.now()); sweetManualSort.setCreatedAt(LocalDateTime.now());
sweetManualSortMapper.insert(sweetManualSort); sweetManualSortMapper.insert(sweetManualSort);
} }
redisDataUtils.deleteSortRedisData(manualId); redisDataUtils.deleteSortRedisData(manualId);
} catch (IllegalArgumentException e) {
return ResponseDto.failure(e.getMessage());
} catch (Exception e) { } catch (Exception e) {
return ResponseDto.failure(); return ResponseDto.failure();
} }
return ResponseDto.success(); return ResponseDto.success();
} }
@Override
public ResponseDto<List<SweetManualSortOptionVo>> options() {
return ResponseDto.success(SweetManualPosition.allOptions());
}
private SweetManualSortVo toVo(SweetManualSort sort, String manualId) {
SweetManualSortVo vo = new SweetManualSortVo();
vo.setManualId(manualId);
vo.setOptions(SweetManualPosition.allOptions());
if (sort == null) {
vo.setPositions(SweetManualPosition.parsePositions(null));
return vo;
}
vo.setMid(sort.getMid());
vo.setShowPosition(sort.getShowPosition());
vo.setPositions(SweetManualPosition.parsePositions(sort.getShowPosition()));
vo.setCreatedAt(sort.getCreatedAt());
vo.setUpdatedAt(sort.getUpdatedAt());
return vo;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment