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

Commit 0e2230c0 authored by wangyifan's avatar wangyifan

演出阵容代码优化;修改演出阵容删除缓存

parent 7cbf19f4
...@@ -5,6 +5,7 @@ public class KylinRedisConst { ...@@ -5,6 +5,7 @@ public class KylinRedisConst {
public static final String PERFORMANCES = "kylin:performances:id:"; public static final String PERFORMANCES = "kylin:performances:id:";
public static final String PERFORMANCES_INVOICE_REMINDER = "kylin:performances:invoice_reminder:id:"; public static final String PERFORMANCES_INVOICE_REMINDER = "kylin:performances:invoice_reminder:id:";
public static final String PERFORMANCES_NOTICE_REMIND_STATUS = "kylin:performances:noticeRemindStatus:id:"; public static final String PERFORMANCES_NOTICE_REMIND_STATUS = "kylin:performances:noticeRemindStatus:id:";
public static final String PERFORMANCES_ARTISTS = "kylin:performances:artists:id:";
public static final String PERFORMANCES_TRUE_NAME = "kylin:performances_true_name:id:"; public static final String PERFORMANCES_TRUE_NAME = "kylin:performances_true_name:id:";
public static final String PERFORMANCES_LIST_CITY = "kylin:performances:city:"; public static final String PERFORMANCES_LIST_CITY = "kylin:performances:city:";
public static final String PERFORMANCES_LIST_SYSTEM_RECOMMEND = "kylin:performances:systemRecommend"; public static final String PERFORMANCES_LIST_SYSTEM_RECOMMEND = "kylin:performances:systemRecommend";
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("演出场次艺人阵容Vo")
public class KylinPerformanceArtistLineupVo implements Serializable {
@ApiModelProperty(value = "场次ID")
private String ticketTimesId;
@ApiModelProperty(value = "场次标题")
private String timeTitle;
@ApiModelProperty(value = "艺人列表")
private List<KylinPerformanceTimeArtist> artists;
@Data
@ApiModel("演出场次艺人")
public static class KylinPerformanceTimeArtist {
@ApiModelProperty(value = "艺人ID")
private String artistId;
@ApiModelProperty(value = "艺人名称")
private String artistName;
@ApiModelProperty(value = "艺人头像")
private String avatarUrl;
@ApiModelProperty(value = "演出ID")
private String performanceId;
@ApiModelProperty(value = "演出标题")
private String title;
@ApiModelProperty(value = "艺人排序 越大越靠前")
private Integer sort;
// 👇 静态转换方法:从 Dao 转为 Vo
public static KylinPerformanceTimeArtist from(KylinArtistPerformanceDao dao) {
if (dao == null) {
return null;
}
KylinPerformanceTimeArtist artist = new KylinPerformanceTimeArtist();
artist.setArtistId(dao.getArtistId());
artist.setArtistName(dao.getArtistName());
artist.setAvatarUrl(dao.getAvatarUrl());
artist.setPerformanceId(dao.getPerformanceId());
artist.setTitle(dao.getTitle());
artist.setSort(dao.getSort());
return artist;
}
}
}
...@@ -4,6 +4,7 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.KylinCandyItemParam; import com.liquidnet.service.kylin.dto.param.KylinCandyItemParam;
import com.liquidnet.service.kylin.dto.param.KylinPerformanceSubscribeParam; import com.liquidnet.service.kylin.dto.param.KylinPerformanceSubscribeParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinPerformanceArtistLineupVo;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
...@@ -35,22 +36,24 @@ public interface IKylinPerformancesService { ...@@ -35,22 +36,24 @@ public interface IKylinPerformancesService {
/** /**
* 演出预约 * 演出预约
* @author zjp *
* @param param * @param param
* @author zjp
* @return: com.liquidnet.service.base.ResponseDto<java.lang.String> * @return: com.liquidnet.service.base.ResponseDto<java.lang.String>
* @date 2024/3/12 14:39 * @date 2024/3/12 14:39
*/ */
ResponseDto<String> performanceSubscribe(HttpServletRequest request,KylinPerformanceSubscribeParam param); ResponseDto<String> performanceSubscribe(HttpServletRequest request, KylinPerformanceSubscribeParam param);
/** /**
* 是否演出预约 * 是否演出预约
* @author zjp *
* @param performancesId * @param performancesId
* @param ticketTimesId * @param ticketTimesId
* @author zjp
* @return: com.liquidnet.service.base.ResponseDto<java.lang.Integer> * @return: com.liquidnet.service.base.ResponseDto<java.lang.Integer>
* @date 2024/3/6 14:45 * @date 2024/3/6 14:45
*/ */
ResponseDto<Integer> performanceIsSubscribe(String performancesId,String ticketTimesId,String ticketsId); ResponseDto<Integer> performanceIsSubscribe(String performancesId, String ticketTimesId, String ticketsId);
/* /*
...@@ -60,5 +63,12 @@ public interface IKylinPerformancesService { ...@@ -60,5 +63,12 @@ public interface IKylinPerformancesService {
* @param: * @param:
* @return: * @return:
**/ **/
void deleteIsSubscribe(String performancesId,String ticketTimesId,String ticketsId); void deleteIsSubscribe(String performancesId, String ticketTimesId, String ticketsId);
/**
* 根据演出ID获取演出阵容
* @param performancesId
* @return
*/
List<KylinPerformanceArtistLineupVo> performanceArtists(String performancesId);
} }
package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.kylin.dao.KylinArtistAssociationStatusDto;
import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao;
import com.liquidnet.service.kylin.entity.KylinArtistPerformance;
import java.util.List;
import java.util.Map;
public interface IKylinArtistPerformanceService extends IService<KylinArtistPerformance> {
/**
* 获取指定场次的艺人阵容
* @param performancesId
* @param timesId
* @return
*/
List<KylinArtistPerformanceDao> getSessionArtists(String performancesId, String timesId);
/**
* 更新演出艺人排序
*
* @param performanceId
* @param orderData
* @return
*/
boolean updateArtistOrder(String performanceId, List<Map<String, Object>> orderData);
/**
* 删除演出艺人关联
*
* @param mid
* @param performanceId
* @return
*/
int deletePerformanceArtist(Long mid, String performanceId);
/**
* 获取所有艺人
* @param performancesId
* @param timesId
* @param keyword
* @return
*/
List<KylinArtistAssociationStatusDto> getAllArtists(String performancesId, String timesId, String keyword);
/**
* 修改艺人关联
* @param performancesId
* @param timesId
* @param artistOrders
* @return
*/
boolean updateArtistAssociations(String performancesId, String timesId, List<Map<String, Object>> artistOrders);
}
package com.liquidnet.client.admin.web.controller.zhengzai.kylin; package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.annotation.Log; import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
...@@ -14,10 +13,9 @@ import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao; ...@@ -14,10 +13,9 @@ import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao;
import com.liquidnet.service.kylin.dto.param.ArtistParam; import com.liquidnet.service.kylin.dto.param.ArtistParam;
import com.liquidnet.service.kylin.dto.param.ArtistSearchParam; import com.liquidnet.service.kylin.dto.param.ArtistSearchParam;
import com.liquidnet.service.kylin.dto.vo.ArtistVo; import com.liquidnet.service.kylin.dto.vo.ArtistVo;
import com.liquidnet.service.kylin.entity.KylinArtistPerformance;
import com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper;
import com.liquidnet.service.kylin.service.admin.IKylinArtistService;
import com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService; import com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService;
import com.liquidnet.service.kylin.service.admin.IKylinArtistPerformanceService;
import com.liquidnet.service.kylin.service.admin.IKylinArtistService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -26,10 +24,8 @@ import org.springframework.stereotype.Controller; ...@@ -26,10 +24,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.liquidnet.service.kylin.entity.KylinArtist; import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -56,7 +52,8 @@ public class KylinArtistController extends BaseController { ...@@ -56,7 +52,8 @@ public class KylinArtistController extends BaseController {
private IKylinArtistOperationLogService operationLogService; private IKylinArtistOperationLogService operationLogService;
@Autowired @Autowired
private KylinArtistPerformanceMapper artistPerformanceMapper; private IKylinArtistPerformanceService artistPerformanceService;
@GetMapping("/create") @GetMapping("/create")
@RequiresPermissions("kylin:artist:create") @RequiresPermissions("kylin:artist:create")
...@@ -64,6 +61,7 @@ public class KylinArtistController extends BaseController { ...@@ -64,6 +61,7 @@ public class KylinArtistController extends BaseController {
mmap.put("platformUrl", platformUrl); mmap.put("platformUrl", platformUrl);
return prefix + "/create"; return prefix + "/create";
} }
@GetMapping("/update/{artistId}") @GetMapping("/update/{artistId}")
@RequiresPermissions("kylin:artist:update") @RequiresPermissions("kylin:artist:update")
public String update(@PathVariable("artistId") String artistId, ModelMap mmap) { public String update(@PathVariable("artistId") String artistId, ModelMap mmap) {
...@@ -221,12 +219,7 @@ public class KylinArtistController extends BaseController { ...@@ -221,12 +219,7 @@ public class KylinArtistController extends BaseController {
if (performancesId == null || timesId == null) { if (performancesId == null || timesId == null) {
return error("参数不能为空"); return error("参数不能为空");
} }
List<KylinArtistPerformanceDao> artists = artistPerformanceService.getSessionArtists(performancesId, timesId);
// 查询该场次的艺人
List<KylinArtistPerformanceDao> artists = artistPerformanceMapper.selectArtistsByPerformanceAndTimes(
performancesId, timesId
);
return AjaxResult.success(artists); return AjaxResult.success(artists);
} catch (Exception e) { } catch (Exception e) {
return error("获取艺人阵容失败: " + e.getMessage()); return error("获取艺人阵容失败: " + e.getMessage());
...@@ -248,19 +241,7 @@ public class KylinArtistController extends BaseController { ...@@ -248,19 +241,7 @@ public class KylinArtistController extends BaseController {
if (orderData == null || orderData.isEmpty()) { if (orderData == null || orderData.isEmpty()) {
return error("排序数据不能为空"); return error("排序数据不能为空");
} }
boolean updateResult = artistPerformanceService.updateArtistOrder(performancesId, orderData);
// 更新每个艺人的排序
for (Map<String, Object> item : orderData) {
Long mid = Long.valueOf(item.get("mid").toString());
Integer sort = Integer.valueOf(item.get("sort").toString());
KylinArtistPerformance entity = artistPerformanceMapper.selectById(mid);
if (entity != null) {
entity.setSort(sort);
artistPerformanceMapper.updateById(entity);
}
}
return success("排序更新成功"); return success("排序更新成功");
} catch (Exception e) { } catch (Exception e) {
return error("更新排序失败: " + e.getMessage()); return error("更新排序失败: " + e.getMessage());
...@@ -278,8 +259,7 @@ public class KylinArtistController extends BaseController { ...@@ -278,8 +259,7 @@ public class KylinArtistController extends BaseController {
if (mid == null) { if (mid == null) {
return error("参数错误"); return error("参数错误");
} }
int result = artistPerformanceService.deletePerformanceArtist(mid, performancesId);
int result = artistPerformanceMapper.deleteById(mid);
if (result > 0) { if (result > 0) {
return success("删除成功"); return success("删除成功");
} else { } else {
...@@ -291,41 +271,13 @@ public class KylinArtistController extends BaseController { ...@@ -291,41 +271,13 @@ public class KylinArtistController extends BaseController {
} }
/** /**
* 获取所有艺人以供关联 * 获取所有艺人
*/ */
@GetMapping("/getAllArtists") @GetMapping("/getAllArtists")
@ResponseBody @ResponseBody
public AjaxResult getAllArtists(String performancesId, String timesId, String keyword) { public AjaxResult getAllArtists(String performancesId, String timesId, String keyword) {
try { try {
// 1. 获取所有艺人 List<KylinArtistAssociationStatusDto> resultList = artistPerformanceService.getAllArtists(performancesId, timesId, keyword);
List<KylinArtist> allArtists = kylinArtistService.list(new QueryWrapper<KylinArtist>()
.like(keyword != null && !keyword.isEmpty(), "artist_name", keyword)
.orderByDesc("created_at"));
// 2. 获取当前场次已关联的艺人,用 Map 保留各自的 sort 值
List<KylinArtistPerformanceDao> associatedArtists =
artistPerformanceMapper.selectArtistsByPerformanceAndTimes(performancesId, timesId);
// key: artistId value: 演出关联表中的 sort(越大越靠前)
Map<String, Integer> associatedSortMap = associatedArtists.stream()
.collect(Collectors.toMap(
KylinArtistPerformanceDao::getArtistId,
KylinArtistPerformanceDao::getSort,
(existing, replacement) -> existing // 重复 key 保留已有值
));
// 3. 组装返回结果
List<KylinArtistAssociationStatusDto> resultList = allArtists.stream().map(artist -> {
KylinArtistAssociationStatusDto dto = new KylinArtistAssociationStatusDto();
dto.setArtistId(artist.getArtistId());
dto.setArtistName(artist.getArtistName());
dto.setAvatarUrl(artist.getAvatarUrl());
boolean associated = associatedSortMap.containsKey(artist.getArtistId());
dto.setAssociated(associated);
// sort 取演出关联表的值;未关联的艺人 sort 置 0
dto.setSort(associated ? associatedSortMap.get(artist.getArtistId()) : 0);
return dto;
}).collect(Collectors.toList());
return AjaxResult.success(resultList); return AjaxResult.success(resultList);
} catch (Exception e) { } catch (Exception e) {
return error("获取艺人列表失败: " + e.getMessage()); return error("获取艺人列表失败: " + e.getMessage());
...@@ -334,6 +286,7 @@ public class KylinArtistController extends BaseController { ...@@ -334,6 +286,7 @@ public class KylinArtistController extends BaseController {
/** /**
* 修改艺人关联 * 修改艺人关联
*
* @param payload * @param payload
* @return * @return
*/ */
...@@ -344,28 +297,7 @@ public class KylinArtistController extends BaseController { ...@@ -344,28 +297,7 @@ public class KylinArtistController extends BaseController {
String performancesId = (String) payload.get("performancesId"); String performancesId = (String) payload.get("performancesId");
String timesId = (String) payload.get("timesId"); String timesId = (String) payload.get("timesId");
List<Map<String, Object>> artistOrders = (List<Map<String, Object>>) payload.get("artistOrders"); List<Map<String, Object>> artistOrders = (List<Map<String, Object>>) payload.get("artistOrders");
boolean result = artistPerformanceService.updateArtistAssociations(performancesId, timesId, artistOrders);
// 1. 删除当前场次所有已关联的艺人
artistPerformanceMapper.delete(new QueryWrapper<KylinArtistPerformance>()
.eq("performances_id", performancesId)
.eq("times_id", timesId));
// 2. 按前端传入的顺序重新关联,sort 越大越靠前
if (artistOrders != null && !artistOrders.isEmpty()) {
for (Map<String, Object> item : artistOrders) {
String artistId = (String) item.get("artistId");
Integer sort = item.get("sort") != null
? Integer.valueOf(item.get("sort").toString()) : 0;
KylinArtistPerformance newAssociation = new KylinArtistPerformance();
newAssociation.setPerformancesId(performancesId);
newAssociation.setTimesId(timesId);
newAssociation.setArtistId(artistId);
newAssociation.setSort(sort);
artistPerformanceMapper.insert(newAssociation);
}
}
return success("关联更新成功"); return success("关联更新成功");
} catch (Exception e) { } catch (Exception e) {
logger.error("error", e); logger.error("error", e);
......
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.dao.KylinArtistAssociationStatusDto;
import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao;
import com.liquidnet.service.kylin.entity.KylinArtist;
import com.liquidnet.service.kylin.entity.KylinArtistPerformance;
import com.liquidnet.service.kylin.mapper.KylinArtistMapper;
import com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper;
import com.liquidnet.service.kylin.service.admin.IKylinArtistPerformanceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Service
public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPerformanceMapper, KylinArtistPerformance> implements IKylinArtistPerformanceService {
@Autowired
private KylinArtistPerformanceMapper artistPerformanceMapper;
@Autowired
private KylinArtistMapper artistMapper;
@Autowired
private DataUtils dataUtils;
@Override
public List<KylinArtistPerformanceDao> getSessionArtists(String performancesId, String timesId) {
// 查询该场次的艺人
return artistPerformanceMapper.selectArtistsByPerformanceAndTimes(
performancesId, timesId
);
}
@Override
public boolean updateArtistOrder(String performanceId, List<Map<String, Object>> orderData) {
// 更新每个艺人的排序
for (Map<String, Object> item : orderData) {
Long mid = Long.valueOf(item.get("mid").toString());
Integer sort = Integer.valueOf(item.get("sort").toString());
log.info("[updateArtistOrder] mid: {}, sort: {}", mid, sort);
KylinArtistPerformance entity = artistPerformanceMapper.selectById(mid);
if (entity != null) {
entity.setSort(sort);
artistPerformanceMapper.updateById(entity);
}
}
// 删除缓存演出阵容
dataUtils.delPerformanceArtists(performanceId);
return true;
}
@Override
public int deletePerformanceArtist(Long mid, String performanceId) {
// 删除缓存演出阵容
dataUtils.delPerformanceArtists(performanceId);
return artistPerformanceMapper.deleteById(mid);
}
@Override
public List<KylinArtistAssociationStatusDto> getAllArtists(String performancesId, String timesId, String keyword) {
// 1. 获取所有艺人
List<KylinArtist> allArtists = artistMapper.selectList(new QueryWrapper<KylinArtist>()
.like(keyword != null && !keyword.isEmpty(), "artist_name", keyword)
.orderByDesc("created_at"));
// 2. 获取当前场次已关联的艺人,用 Map 保留各自的 sort 值
List<KylinArtistPerformanceDao> associatedArtists =
artistPerformanceMapper.selectArtistsByPerformanceAndTimes(performancesId, timesId);
// key: artistId value: 演出关联表中的 sort(越大越靠前)
Map<String, Integer> associatedSortMap = associatedArtists.stream()
.collect(Collectors.toMap(
KylinArtistPerformanceDao::getArtistId,
KylinArtistPerformanceDao::getSort,
(existing, replacement) -> existing // 重复 key 保留已有值
));
// 3. 组装返回结果
List<KylinArtistAssociationStatusDto> resultList = allArtists.stream().map(artist -> {
KylinArtistAssociationStatusDto dto = new KylinArtistAssociationStatusDto();
dto.setArtistId(artist.getArtistId());
dto.setArtistName(artist.getArtistName());
dto.setAvatarUrl(artist.getAvatarUrl());
boolean associated = associatedSortMap.containsKey(artist.getArtistId());
dto.setAssociated(associated);
// sort 取演出关联表的值;未关联的艺人 sort 置 0
dto.setSort(associated ? associatedSortMap.get(artist.getArtistId()) : 0);
return dto;
}).collect(Collectors.toList());
return resultList;
}
@Override
public boolean updateArtistAssociations(String performancesId, String timesId, List<Map<String, Object>> artistOrders) {
// 1. 删除当前场次所有已关联的艺人
artistPerformanceMapper.delete(new QueryWrapper<KylinArtistPerformance>()
.eq("performances_id", performancesId)
.eq("times_id", timesId));
// 2. 按前端传入的顺序重新关联,sort 越大越靠前
if (artistOrders != null && !artistOrders.isEmpty()) {
for (Map<String, Object> item : artistOrders) {
String artistId = (String) item.get("artistId");
Integer sort = item.get("sort") != null
? Integer.parseInt(item.get("sort").toString()) : 0;
KylinArtistPerformance newAssociation = new KylinArtistPerformance();
newAssociation.setPerformancesId(performancesId);
newAssociation.setTimesId(timesId);
newAssociation.setArtistId(artistId);
newAssociation.setSort(sort);
artistPerformanceMapper.insert(newAssociation);
}
}
// 删除缓存演出阵容
dataUtils.delPerformanceArtists(performancesId);
return true;
}
}
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.commons.lang.util.BeanUtil; import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
...@@ -17,8 +18,8 @@ import com.liquidnet.service.kylin.entity.KylinArtistAlbum; ...@@ -17,8 +18,8 @@ import com.liquidnet.service.kylin.entity.KylinArtistAlbum;
import com.liquidnet.service.kylin.mapper.KylinArtistAlbumMapper; import com.liquidnet.service.kylin.mapper.KylinArtistAlbumMapper;
import com.liquidnet.service.kylin.mapper.KylinArtistMapper; import com.liquidnet.service.kylin.mapper.KylinArtistMapper;
import com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper; import com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper;
import com.liquidnet.service.kylin.service.admin.IKylinArtistService;
import com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService; import com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService;
import com.liquidnet.service.kylin.service.admin.IKylinArtistService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -26,7 +27,6 @@ import org.springframework.stereotype.Service; ...@@ -26,7 +27,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -56,6 +56,9 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -56,6 +56,9 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
@Autowired @Autowired
private IKylinArtistOperationLogService operationLogService; private IKylinArtistOperationLogService operationLogService;
@Autowired
private DataUtils dataUtils;
/** /**
* 创建艺人 * 创建艺人
*/ */
...@@ -137,6 +140,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -137,6 +140,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
operationLogService.recordLog(artistId, 2, logContent); operationLogService.recordLog(artistId, 2, logContent);
} }
// TODO 根据艺人ID查询所有关联的演出,然后删除缓存中对应的演出阵容
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("修改艺人失败", e); log.error("修改艺人失败", e);
...@@ -160,11 +165,21 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -160,11 +165,21 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
if (data.getArtistType() != null) { if (data.getArtistType() != null) {
String typeName = ""; String typeName = "";
switch (data.getArtistType()) { switch (data.getArtistType()) {
case 1: typeName = "音乐人"; break; case 1:
case 2: typeName = "艺术家"; break; typeName = "音乐人";
case 3: typeName = "厂牌"; break; break;
case 4: typeName = "品牌方"; break; case 2:
default: typeName = "未知"; break; typeName = "艺术家";
break;
case 3:
typeName = "厂牌";
break;
case 4:
typeName = "品牌方";
break;
default:
typeName = "未知";
break;
} }
artistVo.setArtistTypeName(typeName); artistVo.setArtistTypeName(typeName);
} }
...@@ -266,6 +281,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -266,6 +281,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
operationLogService.recordLog(artistId, 3, logContent); operationLogService.recordLog(artistId, 3, logContent);
} }
// TODO 根据艺人ID查询所有关联的演出
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("删除艺人失败", e); log.error("删除艺人失败", e);
...@@ -317,10 +334,10 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -317,10 +334,10 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
content.append("新增艺人: [").append(param.getArtistName()).append("];"); content.append("新增艺人: [").append(param.getArtistName()).append("];");
content.append("类型: [").append(getArtistTypeName(param.getArtistType())).append("];"); content.append("类型: [").append(getArtistTypeName(param.getArtistType())).append("];");
if (param.getIntroduction() != null && !param.getIntroduction().isEmpty()) { // if (param.getIntroduction() != null && !param.getIntroduction().isEmpty()) {
String intro = param.getIntroduction(); // String intro = param.getIntroduction();
content.append("介绍: ").append(intro.length() > 50 ? intro.substring(0, 50) + "..." : intro); // content.append("介绍: ").append(intro.length() > 50 ? intro.substring(0, 50) + "..." : intro);
} // }
return content.toString(); return content.toString();
} }
......
...@@ -621,4 +621,14 @@ public class DataUtils { ...@@ -621,4 +621,14 @@ public class DataUtils {
public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() { public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone(); return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
} }
/**
* 删除演出阵容 缓存
* @param performancesId
*/
public void delPerformanceArtists(String performancesId) {
final String redisKey = KylinRedisConst.PERFORMANCES_ARTISTS + performancesId;
redisDataSourceUtil.getRedisKylinUtil().del(redisKey);
}
} }
...@@ -53,4 +53,7 @@ public class RedisKeyExpireConst { ...@@ -53,4 +53,7 @@ public class RedisKeyExpireConst {
public static final long GOBLIN_BRACELET_USER_EXPIRE = 30 * 24 * 60 * 60; public static final long GOBLIN_BRACELET_USER_EXPIRE = 30 * 24 * 60 * 60;
// GOBLIN_BRACELET_RELATED_ORDER 过期30天 // GOBLIN_BRACELET_RELATED_ORDER 过期30天
public static final long GOBLIN_BRACELET_RELATED_ORDER_EXPIRE = 30 * 24 * 60 * 60; public static final long GOBLIN_BRACELET_RELATED_ORDER_EXPIRE = 30 * 24 * 60 * 60;
// 演出关联阵容缓存过期时间
public static final long PERFORMANCES_ARTISTS_EXPIRE = 30 * 24 * 60 * 60;
} }
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
</select> </select>
<!-- 根据艺人ID获取关联演出数量 --> <!-- 根据艺人ID获取关联演出数量 -->
<select id="countPerformancesByArtistId" parameterType="java.lang.String" resultType="java.lang.Integer"> <!-- <select id="countPerformancesByArtistId" parameterType="java.lang.String" resultType="java.lang.Integer">-->
SELECT COUNT(1) <!-- SELECT COUNT(1)-->
FROM kylin_artist_performance <!-- FROM kylin_artist_performance-->
WHERE artist_id = #{artistId} <!-- WHERE artist_id = #{artistId}-->
AND status = 1 <!-- AND status = 1-->
</select> <!-- </select>-->
<!-- 根据演出ID和场次ID查询艺人阵容 --> <!-- 根据演出ID和场次ID查询艺人阵容 -->
<select id="selectArtistsByPerformanceAndTimes" resultType="com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao"> <select id="selectArtistsByPerformanceAndTimes" resultType="com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao">
......
...@@ -7,11 +7,11 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -7,11 +7,11 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.KylinCandyParam; import com.liquidnet.service.kylin.dto.param.KylinCandyParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinPerformanceArtistLineupVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo; import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo;
import com.liquidnet.service.kylin.service.IKylinLackRegistersService; import com.liquidnet.service.kylin.service.IKylinLackRegistersService;
import com.liquidnet.service.kylin.service.IKylinPerformancesService; import com.liquidnet.service.kylin.service.IKylinPerformancesService;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl; import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
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;
...@@ -228,6 +228,20 @@ public class KylinPerformancesController { ...@@ -228,6 +228,20 @@ public class KylinPerformancesController {
} }
} }
@GetMapping("artists/{performancesId}")
@ApiOperation("演出艺人阵容及场次详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "path", dataType = "String", name = "performancesId", value = "演出id", required = true)
})
public ResponseDto<List<KylinPerformanceArtistLineupVo>> performanceArtists(@PathVariable("performancesId") String performancesId) {
List<KylinPerformanceArtistLineupVo> result = kylinPerformancesService.performanceArtists(performancesId);
if (result != null) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure(ErrorMapping.get("20700"));
}
}
@GetMapping("payDetail") @GetMapping("payDetail")
@ApiOperation("支付前详情") @ApiOperation("支付前详情")
@ApiImplicitParams({ @ApiImplicitParams({
......
...@@ -14,6 +14,7 @@ import com.liquidnet.service.goblin.dto.vo.*; ...@@ -14,6 +14,7 @@ import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.constant.LuckyBagStatusEnum; import com.liquidnet.service.kylin.constant.LuckyBagStatusEnum;
import com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao;
import com.liquidnet.service.kylin.dao.KylinTicketActive; import com.liquidnet.service.kylin.dao.KylinTicketActive;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo; import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeUpushVo; import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeUpushVo;
...@@ -23,12 +24,15 @@ import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage; ...@@ -23,12 +24,15 @@ import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundageAll; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundageAll;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinPerformanceArtistLineupVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper;
import com.liquidnet.service.kylin.mapper.KylinLuckyBagActivityMapper; import com.liquidnet.service.kylin.mapper.KylinLuckyBagActivityMapper;
import com.liquidnet.service.kylin.mapper.KylinLuckyBagMapper; import com.liquidnet.service.kylin.mapper.KylinLuckyBagMapper;
import com.liquidnet.service.kylin.mapper.KylinRewardUserMapper; import com.liquidnet.service.kylin.mapper.KylinRewardUserMapper;
...@@ -67,6 +71,8 @@ public class DataUtils { ...@@ -67,6 +71,8 @@ public class DataUtils {
private KylinLuckyBagMapper kylinLuckyBagMapper; private KylinLuckyBagMapper kylinLuckyBagMapper;
@Autowired @Autowired
private KylinRewardUserMapper kylinRewardUserMapper; private KylinRewardUserMapper kylinRewardUserMapper;
@Autowired
private KylinArtistPerformanceMapper artistPerformanceMapper;
/** /**
...@@ -1723,4 +1729,49 @@ public class DataUtils { ...@@ -1723,4 +1729,49 @@ public class DataUtils {
return (int) obj; return (int) obj;
} }
} }
/**
* 根据演出ID获取演出阵容
* @param performancesId
* @return
*/
public List<KylinPerformanceArtistLineupVo> getPerformanceArtists(String performancesId) {
final String redisKey = KylinRedisConst.PERFORMANCES_ARTISTS + performancesId;
Object obj = redisUtil.get(redisKey);
if (null == obj) {
KylinPerformanceVo performancesInfo = getPerformanceVo(performancesId);
if (null == performancesInfo) {
return Collections.emptyList();
}
List<KylinPerformanceArtistLineupVo> resultList = new ArrayList<>();
List<KylinTicketTimesVo> ticketTimeList = performancesInfo.getTicketTimeList();
if (!CollectionUtils.isEmpty(ticketTimeList)) {
for (KylinTicketTimesVo timesVo : ticketTimeList) {
// 获取当前场次关联的艺人,按sort降序
List<KylinArtistPerformanceDao> artists = artistPerformanceMapper.selectArtistsByPerformanceAndTimes(performancesId, timesVo.getTicketTimesId());
KylinPerformanceArtistLineupVo lineupVo = new KylinPerformanceArtistLineupVo();
lineupVo.setTicketTimesId(timesVo.getTicketTimesId());
lineupVo.setTimeTitle(timesVo.getTitle());
lineupVo.setArtists(artists == null ? new ArrayList<>() :
artists.stream()
.map(KylinPerformanceArtistLineupVo.KylinPerformanceTimeArtist::from)
.filter(Objects::nonNull)
.collect(Collectors.toList()));
resultList.add(lineupVo);
}
}
setPerformanceArtists(performancesId, resultList);
return resultList;
}else {
return (List<KylinPerformanceArtistLineupVo>)obj;
}
}
public void setPerformanceArtists(String performancesId, List<KylinPerformanceArtistLineupVo> artistLineupVos){
final String redisKey = KylinRedisConst.PERFORMANCES_ARTISTS + performancesId;
redisUtil.set(redisKey, artistLineupVos, RedisKeyExpireConst.PERFORMANCES_ARTISTS_EXPIRE);
}
} }
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