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

Commit 51f1f38b authored by wangyifan's avatar wangyifan

1. 修复修改艺人图片不展示问题 2. 艺人关联演出列表

parent 4575268b
...@@ -69,6 +69,12 @@ public class ArtistVo { ...@@ -69,6 +69,12 @@ public class ArtistVo {
@ApiModelProperty("演出开始时间") @ApiModelProperty("演出开始时间")
private String timeStart; private String timeStart;
@ApiModelProperty("场次ID")
private String timesId;
@ApiModelProperty("场次名称")
private String timeTitle;
} }
@Data @Data
......
package com.liquidnet.service.kylin.service.admin; package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.KylinArtistDao;
import com.liquidnet.service.kylin.dto.param.ArtistParam;
import com.liquidnet.service.kylin.dto.param.ArtistSearchParam;
import com.liquidnet.service.kylin.dto.vo.ArtistVo;
import com.liquidnet.service.kylin.entity.KylinArtist; import com.liquidnet.service.kylin.entity.KylinArtist;
import java.util.List;
/** /**
* <p> * <p>
* 艺人管理 服务类 * 艺人管理 服务类
...@@ -13,4 +20,16 @@ import com.liquidnet.service.kylin.entity.KylinArtist; ...@@ -13,4 +20,16 @@ import com.liquidnet.service.kylin.entity.KylinArtist;
*/ */
public interface IKylinArtistService extends IService<KylinArtist> { public interface IKylinArtistService extends IService<KylinArtist> {
Boolean create(ArtistParam param);
Boolean update(ArtistParam param);
ArtistVo detail(String artistId);
PageInfo<KylinArtistDao> artistList(ArtistSearchParam param);
Boolean delete(List<String> artistIds);
Boolean checkArtistNameExists(String artistName, String artistId);
} }
...@@ -6,11 +6,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController; ...@@ -6,11 +6,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult; import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinArtistServiceImpl;
import com.liquidnet.service.kylin.dao.KylinArtistDao; import com.liquidnet.service.kylin.dao.KylinArtistDao;
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.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;
...@@ -40,7 +40,7 @@ public class KylinArtistController extends BaseController { ...@@ -40,7 +40,7 @@ public class KylinArtistController extends BaseController {
private String platformUrl; private String platformUrl;
@Autowired @Autowired
private KylinArtistServiceImpl kylinArtistService; private IKylinArtistService kylinArtistService;
@GetMapping("/create") @GetMapping("/create")
@RequiresPermissions("kylin:artist:create") @RequiresPermissions("kylin:artist:create")
......
...@@ -204,11 +204,12 @@ ...@@ -204,11 +204,12 @@
"buckType": 1 "buckType": 1
}, },
autoReplace: true, autoReplace: true,
dropZoneTitle: "请上传艺人头像(1:1比例)", dropZoneTitle: "请上传艺人头像(1:1比例,仅限1张)",
maxFileCount: 1, maxFileCount: 1,
maxFileSize: 5120, maxFileSize: 5120,
allowedFileExtensions: ['jpg', 'png', 'jpeg'], allowedFileExtensions: ['jpg', 'png', 'jpeg'],
msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件' msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件',
msgFilesTooMany: '只能上传1张头像图片!'
}); });
$("#fileinput-avatar").on("fileuploaded", function (event, data, previewId, index) { $("#fileinput-avatar").on("fileuploaded", function (event, data, previewId, index) {
...@@ -225,11 +226,25 @@ ...@@ -225,11 +226,25 @@
"pathName": "artist/album", "pathName": "artist/album",
"buckType": 1 "buckType": 1
}, },
dropZoneTitle: "请上传艺人相册图片", uploadAsync: true, // 异步上传,每次上传一个文件
maxFileCount: 20, dropZoneTitle: "请上传艺人相册图片(最多20张)",
maxFileCount: 20, // 最多20张
maxFileSize: 5120, maxFileSize: 5120,
allowedFileExtensions: ['jpg', 'png', 'jpeg'], allowedFileExtensions: ['jpg', 'png', 'jpeg'],
msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件' msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件',
msgFilesTooMany: '选择的文件数量({n})超过了允许的最大数量{m},相册最多只能上传20张图片!',
showRemove: true,
showUpload: false,
validateInitialCount: true,
maxTotalFileCount: 20
}).on('filebatchselected', function(event, files) {
// 检查选择的文件数量
var currentCount = $("#fileinput-album").fileinput('getFilesCount');
console.log("当前文件总数:", currentCount);
if (currentCount > 20) {
$.modal.alertWarning("相册最多只能上传20张图片!");
return false;
}
}); });
$("#fileinput-album").on("fileuploaded", function (event, data, previewId, index) { $("#fileinput-album").on("fileuploaded", function (event, data, previewId, index) {
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
<label class="col-sm-2 control-label">艺人相册:</label> <label class="col-sm-2 control-label">艺人相册:</label>
<div class="col-sm-10"> <div class="col-sm-10">
<div class="file-loading"> <div class="file-loading">
<input id="fileinput-album" type="file" name="files" multiple data-browse-on-zone-click="true"> <input id="fileinput-album" type="file" name="file" multiple data-browse-on-zone-click="true">
</div> </div>
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 支持上传jpg、png格式图片,单次最多上传20张,每张最大支持5M</span> <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 支持上传jpg、png格式图片,单次最多上传20张,每张最大支持5M</span>
</div> </div>
...@@ -69,10 +69,37 @@ ...@@ -69,10 +69,37 @@
<th:block th:include="include :: summernote-js"/> <th:block th:include="include :: summernote-js"/>
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "kylin/artist"; var prefix = ctx + "kylin/artist";
var platformUrl = "[[${platformUrl}]]"; var platformUrl = /*[[${platformUrl}]]*/ "";
var artistData = [[${ArtistVo}]];
// 使用安全的方式获取数据,避免JavaScript语法错误
var artistData = {
artistId: /*[[${ArtistVo?.artistId}]]*/ "",
artistName: /*[[${ArtistVo?.artistName}]]*/ "",
artistType: /*[[${ArtistVo?.artistType}]]*/ 0,
avatarUrl: /*[[${ArtistVo?.avatarUrl}]]*/ "",
introduction: /*[[${ArtistVo?.introduction}]]*/ "",
albumImages: /*[[${ArtistVo?.albumImages}]]*/ []
};
var albumImagesList = []; var albumImagesList = [];
var originalArtistName = artistData.artistName; var originalArtistName = "";
console.log("原始艺人数据:", artistData);
// 安全地获取艺人数据
if (artistData) {
originalArtistName = artistData.artistName || "";
// 初始化相册图片列表
if (artistData.albumImages && Array.isArray(artistData.albumImages) && artistData.albumImages.length > 0) {
albumImagesList = artistData.albumImages.slice(); // 复制数组
console.log("初始化相册图片列表:", albumImagesList);
} else {
console.log("没有相册图片数据");
}
} else {
console.error("艺人数据为空");
}
function submitHandler() { function submitHandler() {
var artistName = $('#artistName').val().trim(); var artistName = $('#artistName').val().trim();
...@@ -138,7 +165,36 @@ ...@@ -138,7 +165,36 @@
return false; return false;
} }
var albumImagesJson = JSON.stringify(albumImagesList); // 重新构建最终的相册列表
// 方案:遍历当前显示的所有预览图,提取图片URL
var finalAlbumList = [];
// 获取所有预览框
var previews = $("#fileinput-album").parent().find('.file-preview-frame');
previews.each(function() {
var $preview = $(this);
// 检查是否是初始预览(有data-fileindex属性)
if ($preview.attr('data-fileindex') !== undefined) {
var fileIndex = parseInt($preview.attr('data-fileindex'));
if (fileIndex >= 0 && fileIndex < albumImagesList.length) {
finalAlbumList.push(albumImagesList[fileIndex]);
}
} else {
// 新上传的图片,从img标签获取src
var imgSrc = $preview.find('img').attr('src');
if (imgSrc && imgSrc.indexOf('https://img.zhengzai.tv/') === 0) {
finalAlbumList.push(imgSrc);
}
}
});
// 如果上面的方法没有获取到,使用albumImagesList作为备份
if (finalAlbumList.length === 0 && albumImagesList.length > 0) {
finalAlbumList = albumImagesList.slice();
}
console.log("最终相册列表:", finalAlbumList);
var albumImagesJson = JSON.stringify(finalAlbumList);
if ($.validate.form()) { if ($.validate.form()) {
var data = $('#form-artist-edit').serializeArray(); var data = $('#form-artist-edit').serializeArray();
...@@ -149,6 +205,10 @@ ...@@ -149,6 +205,10 @@
} }
$(function () { $(function () {
console.log("页面加载完成");
console.log("艺人数据:", artistData);
console.log("相册图片列表:", albumImagesList);
// 初始化字数统计 // 初始化字数统计
var nameLength = $('#artistName').val().length; var nameLength = $('#artistName').val().length;
$('#nameCount').text(nameLength); $('#nameCount').text(nameLength);
...@@ -189,26 +249,12 @@ ...@@ -189,26 +249,12 @@
}); });
// 设置富文本内容 // 设置富文本内容
if (artistData.introduction) { if (artistData && artistData.introduction) {
$('#introduction').summernote('code', artistData.introduction); $('#introduction').summernote('code', artistData.introduction);
} }
// 初始化相册图片列表
if (artistData.albumImages && artistData.albumImages.length > 0) {
albumImagesList = artistData.albumImages;
}
// 初始化头像上传 // 初始化头像上传
var avatarInitialPreview = []; console.log("头像URL:", artistData ? artistData.avatarUrl : "无数据");
var avatarInitialPreviewConfig = [];
if (artistData.avatarUrl) {
avatarInitialPreview.push(artistData.avatarUrl);
avatarInitialPreviewConfig.push({
caption: "当前头像",
url: "#",
key: 1
});
}
$("#fileinput-avatar").fileinput({ $("#fileinput-avatar").fileinput({
'theme': 'explorer-fas', 'theme': 'explorer-fas',
...@@ -218,35 +264,57 @@ ...@@ -218,35 +264,57 @@
"buckType": 1 "buckType": 1
}, },
autoReplace: true, autoReplace: true,
initialPreview: avatarInitialPreview, overwriteInitial: false,
initialPreviewAsData: true, initialPreviewAsData: true,
initialPreviewConfig: avatarInitialPreviewConfig, initialPreview: (artistData && artistData.avatarUrl) ? [artistData.avatarUrl] : [],
dropZoneTitle: "请上传艺人头像(1:1比例)", initialPreviewConfig: (artistData && artistData.avatarUrl) ? [{
caption: "当前头像",
size: 0,
width: "120px",
key: 1,
extra: {url: artistData.avatarUrl}
}] : [],
dropZoneTitle: "请上传艺人头像(1:1比例,仅限1张)",
maxFileCount: 1, maxFileCount: 1,
maxFileSize: 5120, maxFileSize: 5120,
allowedFileExtensions: ['jpg', 'png', 'jpeg'], allowedFileExtensions: ['jpg', 'png', 'jpeg'],
msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件' msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件',
msgFilesTooMany: '只能上传1张头像图片!',
deleteUrl: "#", // 设置一个假的删除URL,启用删除按钮
previewSettings: {
image: {width: "auto", height: "160px"}
}
}).on('fileloaded', function(event, file, previewId, index, reader) {
console.log("头像加载成功:", previewId);
}).on('fileerror', function(event, data, msg) {
console.error("头像加载错误:", msg);
}); });
$("#fileinput-avatar").on("fileuploaded", function (event, data, previewId, index) { $("#fileinput-avatar").on("fileuploaded", function (event, data, previewId, index) {
var imgPath = data.response.data.ossPath; var imgPath = data.response.data.ossPath;
var fullUrl = "https://img.zhengzai.tv/" + imgPath; var fullUrl = "https://img.zhengzai.tv/" + imgPath;
$("#avatarUrl").val(fullUrl); $("#avatarUrl").val(fullUrl);
console.log("头像上传成功:", fullUrl);
}); });
// 初始化相册上传 // 监听头像删除事件
var albumInitialPreview = []; $("#fileinput-avatar").on("filedeleted", function(event, key) {
var albumInitialPreviewConfig = []; console.log("删除头像");
if (albumImagesList.length > 0) { $("#avatarUrl").val("");
albumImagesList.forEach(function(img, index) {
albumInitialPreview.push(img);
albumInitialPreviewConfig.push({
caption: "相册图片" + (index + 1),
url: "#",
key: index + 1
}); });
// 监听头像清空事件
$("#fileinput-avatar").on("filecleared", function(event) {
console.log("清空头像");
$("#avatarUrl").val("");
}); });
}
// 初始化相册上传
console.log("相册图片列表:", albumImagesList);
// 计算还可以上传多少张图片
var remainingCount = 20 - (albumImagesList ? albumImagesList.length : 0);
console.log("还可以上传:", remainingCount, "张图片");
$("#fileinput-album").fileinput({ $("#fileinput-album").fileinput({
'theme': 'explorer-fas', 'theme': 'explorer-fas',
...@@ -255,27 +323,71 @@ ...@@ -255,27 +323,71 @@
"pathName": "artist/album", "pathName": "artist/album",
"buckType": 1 "buckType": 1
}, },
initialPreview: albumInitialPreview, uploadAsync: true, // 异步上传,每次上传一个文件
overwriteInitial: false,
initialPreviewAsData: true, initialPreviewAsData: true,
initialPreviewConfig: albumInitialPreviewConfig, initialPreview: (albumImagesList && albumImagesList.length > 0) ? albumImagesList : [],
dropZoneTitle: "请上传艺人相册图片", initialPreviewConfig: (albumImagesList && albumImagesList.length > 0) ?
maxFileCount: 20, albumImagesList.map(function(url, index) {
return {
caption: "相册图片" + (index + 1),
size: 0,
width: "120px",
key: index,
extra: {url: url} // 保存URL用于后续处理
};
}) : [],
dropZoneTitle: "请上传艺人相册图片(最多20张)",
maxFileCount: 20, // 总共最多20张
maxFileSize: 5120, maxFileSize: 5120,
allowedFileExtensions: ['jpg', 'png', 'jpeg'], allowedFileExtensions: ['jpg', 'png', 'jpeg'],
msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件' msgSizeTooLarge: '文件 "{name}" ({size} KB) 超过了允许大小 {maxSize} KB,最大支持上传5M文件',
msgFilesTooMany: '选择的文件数量({n})超过了允许的最大数量{m},相册最多只能上传20张图片!',
showRemove: true,
showUpload: false,
deleteUrl: "#", // 设置一个假的删除URL,启用删除按钮
previewSettings: {
image: {width: "auto", height: "160px"}
},
validateInitialCount: true, // 验证初始文件数量
maxTotalFileCount: 20 // 包括初始文件在内的最大文件总数
}).on('fileloaded', function(event, file, previewId, index, reader) {
console.log("文件加载成功:", previewId);
}).on('fileerror', function(event, data, msg) {
console.error("文件加载错误:", msg);
}).on('filebatchselected', function(event, files) {
// 检查选择的文件数量
var currentCount = $("#fileinput-album").fileinput('getFilesCount');
console.log("当前文件总数:", currentCount);
if (currentCount > 20) {
$.modal.alertWarning("相册最多只能上传20张图片!");
return false;
}
}); });
$("#fileinput-album").on("fileuploaded", function (event, data, previewId, index) { $("#fileinput-album").on("fileuploaded", function (event, data, previewId, index) {
var imgPath = data.response.data.ossPath; var imgPath = data.response.data.ossPath;
var fullUrl = "https://img.zhengzai.tv/" + imgPath; var fullUrl = "https://img.zhengzai.tv/" + imgPath;
albumImagesList.push(fullUrl); albumImagesList.push(fullUrl);
console.log("上传后相册列表:", albumImagesList);
}); });
$("#fileinput-album").on("fileremoved", function(event, id, index) { // 监听初始预览图片的删除事件
if (index < albumImagesList.length) { $("#fileinput-album").on("filedeleted", function(event, key) {
albumImagesList.splice(index, 1); console.log("删除图片,key:", key);
// key 对应 initialPreviewConfig 中的 key
if (key >= 0 && key < albumImagesList.length) {
albumImagesList.splice(key, 1);
console.log("删除后相册列表:", albumImagesList);
} }
}); });
// 监听文件清除事件
$("#fileinput-album").on("filecleared", function(event) {
console.log("清空所有文件");
albumImagesList = [];
console.log("清空后相册列表:", albumImagesList);
});
}); });
</script> </script>
</body> </body>
......
...@@ -8,6 +8,7 @@ import com.liquidnet.commons.lang.util.BeanUtil; ...@@ -8,6 +8,7 @@ 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;
import com.liquidnet.service.kylin.dao.KylinArtistDao; import com.liquidnet.service.kylin.dao.KylinArtistDao;
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;
...@@ -162,8 +163,24 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin ...@@ -162,8 +163,24 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
artistVo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(data.getUpdatedAt())); artistVo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(data.getUpdatedAt()));
} }
// TODO 设置关联演出 // 设置关联演出
artistVo.setPerformanceVoList(Collections.EMPTY_LIST); List<KylinArtistPerformanceDao> performanceList = artistPerformanceMapper.selectPerformanceDaoByArtistId(artistId);
if (performanceList != null && !performanceList.isEmpty()) {
List<ArtistVo.PerformanceVo> performanceVoList = performanceList.stream()
.map(performance -> {
ArtistVo.PerformanceVo vo = new ArtistVo.PerformanceVo();
vo.setPerformanceId(performance.getPerformanceId());
vo.setTitle(performance.getTitle());
vo.setTimeStart(performance.getTimeStart());
vo.setTimesId(performance.getTimesId());
vo.setTimeTitle(performance.getTimeTitle());
return vo;
})
.collect(Collectors.toList());
artistVo.setPerformanceVoList(performanceVoList);
} else {
artistVo.setPerformanceVoList(Collections.emptyList());
}
} else { } else {
log.error("[detail] query artist is null, artistId: {}", artistId); log.error("[detail] query artist is null, artistId: {}", artistId);
......
...@@ -61,7 +61,7 @@ public class KylinArtistDao implements Serializable { ...@@ -61,7 +61,7 @@ public class KylinArtistDao implements Serializable {
private Integer productCount; private Integer productCount;
/** /**
* 创建时间 * 创建时间(艺人入驻时间)
*/ */
private LocalDateTime createdAt; private LocalDateTime createdAt;
} }
...@@ -11,31 +11,11 @@ public class KylinArtistPerformanceDao implements Serializable { ...@@ -11,31 +11,11 @@ public class KylinArtistPerformanceDao implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 艺人ID
*/
private String artistId;
/**
* 艺人名称
*/
private String artistName;
/**
* 艺人头像
*/
private String artistUrl;
/** /**
* 演出ID * 演出ID
*/ */
private String performanceId; private String performanceId;
/**
* 艺人在演出排序 越大越靠前
*/
private Integer sort;
/** /**
* 演出标题 * 演出标题
*/ */
...@@ -46,4 +26,14 @@ public class KylinArtistPerformanceDao implements Serializable { ...@@ -46,4 +26,14 @@ public class KylinArtistPerformanceDao implements Serializable {
*/ */
private String timeStart; private String timeStart;
/**
* 演出场次ID
*/
private String timesId;
/**
* 演出场次标题
*/
private String timeTitle;
} }
...@@ -27,6 +27,11 @@ public class KylinArtistPerformance implements Serializable{ ...@@ -27,6 +27,11 @@ public class KylinArtistPerformance implements Serializable{
*/ */
private String performancesId; private String performancesId;
/**
* 场次ID
*/
private String timesId;
/** /**
* 该艺人在本演出中的排序权重,越大越靠前 * 该艺人在本演出中的排序权重,越大越靠前
*/ */
......
...@@ -15,6 +15,6 @@ public interface KylinArtistPerformanceMapper extends BaseMapper<KylinArtistPerf ...@@ -15,6 +15,6 @@ public interface KylinArtistPerformanceMapper extends BaseMapper<KylinArtistPerf
* @param artistId 艺人ID * @param artistId 艺人ID
* @return 演出信息列表 * @return 演出信息列表
*/ */
List<KylinArtistPerformanceDao> selectPerformancesByArtistId(@Param("artistId") String artistId); List<KylinArtistPerformanceDao> selectPerformanceDaoByArtistId(@Param("artistId") String artistId);
} }
...@@ -17,7 +17,9 @@ ...@@ -17,7 +17,9 @@
END as artist_type_name, END as artist_type_name,
a.avatar_url, a.avatar_url,
a.introduction, a.introduction,
a.created_at a.created_at,
(SELECT COUNT(1) FROM kylin_artist_performance ap WHERE ap.artist_id = a.artist_id) as performance_count,
0 as product_count
FROM kylin_artist a FROM kylin_artist a
<where> <where>
a.status = 1 a.status = 1
......
...@@ -2,8 +2,26 @@ ...@@ -2,8 +2,26 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper"> <mapper namespace="com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper">
<select id="selectPerformancesByArtistId" parameterType="java.lang.String" resultType="com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao"> <select id="selectPerformanceDaoByArtistId" parameterType="java.lang.String" resultType="com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao">
SELECT
p.performances_id as performanceId,
p.title,
DATE_FORMAT(p.time_start, '%Y-%m-%d %H:%i:%s') as timeStart,
t.ticket_times_id as timesId,
t.title as timeTitle
FROM kylin_artist_performance ap
INNER JOIN kylin_performances p ON ap.performances_id = p.performances_id
INNER JOIN kylin_ticket_times t ON ap.times_id = t.ticket_times_id
WHERE ap.artist_id = #{artistId}
ORDER BY ap.sort DESC, p.time_start DESC
</select>
<!-- 根据艺人ID获取关联演出数量 -->
<select id="countPerformancesByArtistId" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM kylin_artist_performance
WHERE artist_id = #{artistId}
AND status = 1
</select> </select>
</mapper> </mapper>
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