记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
cf4aa441
Commit
cf4aa441
authored
Jul 01, 2026
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'refs/heads/jxl-yirenhebing' into test-ecs
parents
483408e7
2508891b
Changes
39
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1374 additions
and
312 deletions
+1374
-312
kylin_artist_product.sql
docs/kylin_artist_product.sql
+16
-0
zhengzai-V1.5-20260304.sql
docu/zhengzai-V1.5-20260304.sql
+1
-0
KylinRedisConst.java
...com/liquidnet/service/kylin/constant/KylinRedisConst.java
+4
-0
ArtistProductSaveParam.java
...idnet/service/kylin/dto/param/ArtistProductSaveParam.java
+18
-0
ArtistGoodsOptionVo.java
...m/liquidnet/service/kylin/dto/vo/ArtistGoodsOptionVo.java
+36
-0
ArtistVo.java
...ain/java/com/liquidnet/service/kylin/dto/vo/ArtistVo.java
+21
-4
KylinArtistDetailFrontVo.java
...ervice/kylin/dto/vo/returns/KylinArtistDetailFrontVo.java
+34
-0
KylinArtistPerformanceFrontVo.java
...e/kylin/dto/vo/returns/KylinArtistPerformanceFrontVo.java
+30
-0
KylinArtistProductFrontVo.java
...rvice/kylin/dto/vo/returns/KylinArtistProductFrontVo.java
+28
-0
IKylinArtistFrontService.java
...idnet/service/kylin/service/IKylinArtistFrontService.java
+21
-0
IKylinArtistService.java
...dnet/service/kylin/service/admin/IKylinArtistService.java
+7
-0
ISweetArtistsService.java
...liquidnet/service/sweet/service/ISweetArtistsService.java
+1
-12
KylinArtistController.java
.../web/controller/zhengzai/kylin/KylinArtistController.java
+65
-0
artists.html
...in/resources/templates/zhengzai/kylin/artist/artists.html
+16
-0
detail.html
...ain/resources/templates/zhengzai/kylin/artist/detail.html
+0
-48
products.html
...n/resources/templates/zhengzai/kylin/artist/products.html
+189
-0
artistLineup.html
...s/templates/zhengzai/kylin/performances/artistLineup.html
+40
-17
KylinArtistPerformanceServiceImpl.java
...kylin/service/impl/KylinArtistPerformanceServiceImpl.java
+8
-3
KylinArtistServiceImpl.java
...n/zhengzai/kylin/service/impl/KylinArtistServiceImpl.java
+187
-13
DataUtils.java
...iquidnet/client/admin/zhengzai/kylin/utils/DataUtils.java
+35
-0
SweetArtistCacheUtils.java
...ent/admin/zhengzai/kylin/utils/SweetArtistCacheUtils.java
+86
-0
RedisKeyExpireConst.java
.../liquidnet/service/base/constant/RedisKeyExpireConst.java
+3
-0
liquidnet-service-kylin.yml
...t-bus-config/liquidnet-config/liquidnet-service-kylin.yml
+2
-0
KylinArtist.java
.../java/com/liquidnet/service/kylin/entity/KylinArtist.java
+5
-0
KylinArtistProduct.java
...om/liquidnet/service/kylin/entity/KylinArtistProduct.java
+46
-0
KylinArtistProductMapper.java
...uidnet/service/kylin/mapper/KylinArtistProductMapper.java
+13
-0
KylinArtistMapper.xml
.../com.liquidnet.service.kylin.mapper/KylinArtistMapper.xml
+1
-1
KylinArtistProductMapper.xml
...quidnet.service.kylin.mapper/KylinArtistProductMapper.xml
+18
-0
SweetManualArtistsFiveMapper.xml
...net.service.sweet.mapper/SweetManualArtistsFiveMapper.xml
+9
-9
SweetManualArtistsMapper.xml
...quidnet.service.sweet.mapper/SweetManualArtistsMapper.xml
+15
-15
SweetManualArtistsMdskMapper.xml
...net.service.sweet.mapper/SweetManualArtistsMdskMapper.xml
+9
-9
SweetManualArtistsTfcMapper.xml
...dnet.service.sweet.mapper/SweetManualArtistsTfcMapper.xml
+9
-9
KylinArtistController.java
...idnet/service/kylin/controller/KylinArtistController.java
+60
-0
KylinArtistFrontServiceImpl.java
...rvice/kylin/service/impl/KylinArtistFrontServiceImpl.java
+250
-0
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+19
-0
pom.xml
liquidnet-bus-service/liquidnet-service-sweet/pom.xml
+6
-0
SweetArtistsController.java
...dnet/service/sweet/controller/SweetArtistsController.java
+1
-46
SweetArtistsServiceImpl.java
...t/service/sweet/service/impl/SweetArtistsServiceImpl.java
+47
-124
RedisDataUtils.java
...ava/com/liquidnet/service/sweet/utils/RedisDataUtils.java
+18
-2
No files found.
docs/kylin_artist_product.sql
0 → 100644
View file @
cf4aa441
-- 艺人关联商品表
CREATE
TABLE
IF
NOT
EXISTS
`kylin_artist_product`
(
`mid`
bigint
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键'
,
`relation_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'关联记录ID'
,
`artist_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人ID'
,
`spu_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'商品SPU ID'
,
`sort`
int
DEFAULT
0
COMMENT
'排序权重,越大越靠前'
,
`status`
tinyint
DEFAULT
1
COMMENT
'1启用 0禁用'
,
`created_at`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`updated_at`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
PRIMARY
KEY
(
`mid`
),
UNIQUE
KEY
`uk_relation_id`
(
`relation_id`
),
UNIQUE
KEY
`uk_artist_spu`
(
`artist_id`
,
`spu_id`
),
KEY
`idx_artist_id`
(
`artist_id`
),
KEY
`idx_spu_id`
(
`spu_id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_unicode_ci
COMMENT
=
'艺人关联商品'
;
docu/zhengzai-V1.5-20260304.sql
View file @
cf4aa441
...
@@ -6,6 +6,7 @@ CREATE TABLE `kylin_artist` (
...
@@ -6,6 +6,7 @@ CREATE TABLE `kylin_artist` (
`mid`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键ID'
,
`mid`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
COMMENT
'主键ID'
,
`artist_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人ID'
,
`artist_id`
varchar
(
64
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人ID'
,
`artist_name`
varchar
(
50
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人名称'
,
`artist_name`
varchar
(
50
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人名称'
,
`pinyin`
varchar
(
200
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'姓名拼音'
,
`artist_type`
tinyint
(
4
)
NOT
NULL
COMMENT
'艺人类型 1音乐人 2艺术家 3厂牌 4品牌方'
,
`artist_type`
tinyint
(
4
)
NOT
NULL
COMMENT
'艺人类型 1音乐人 2艺术家 3厂牌 4品牌方'
,
`avatar_url`
varchar
(
500
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人头像'
,
`avatar_url`
varchar
(
500
)
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人头像'
,
`introduction`
text
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人简介'
,
`introduction`
text
CHARACTER
SET
utf8mb4
COLLATE
utf8mb4_unicode_ci
NOT
NULL
COMMENT
'艺人简介'
,
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
View file @
cf4aa441
...
@@ -6,6 +6,10 @@ public class KylinRedisConst {
...
@@ -6,6 +6,10 @@ public class KylinRedisConst {
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_ARTISTS
=
"kylin:performances:artists:id:"
;
public
static
final
String
ARTIST_DETAIL
=
"kylin:artist:detail:id:"
;
public
static
final
String
ARTIST_ALBUM
=
"kylin:artist:album:id:"
;
public
static
final
String
ARTIST_PERFORMANCES
=
"kylin:artist:performances:id:"
;
public
static
final
String
ARTIST_PRODUCTS
=
"kylin:artist:products: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"
;
...
...
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/ArtistProductSaveParam.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
@Data
@ApiModel
(
"艺人关联商品保存参数"
)
public
class
ArtistProductSaveParam
{
@ApiModelProperty
(
"艺人ID"
)
private
String
artistId
;
@ApiModelProperty
(
"商品SPU ID列表"
)
private
List
<
String
>
spuIds
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/ArtistGoodsOptionVo.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* 艺人关联商品搜索选项
*/
@Data
@ApiModel
(
"艺人关联商品搜索选项"
)
public
class
ArtistGoodsOptionVo
{
@ApiModelProperty
(
"商品SPU ID"
)
private
String
spuId
;
@ApiModelProperty
(
"商品编码"
)
private
String
spuNo
;
@ApiModelProperty
(
"商品名称"
)
private
String
name
;
@ApiModelProperty
(
"封面图"
)
private
String
coverPic
;
@ApiModelProperty
(
"售价"
)
private
BigDecimal
sellPrice
;
@ApiModelProperty
(
"上架状态文案"
)
private
String
shelfStatusLabel
;
@ApiModelProperty
(
"是否可选择"
)
private
Boolean
selectable
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/ArtistVo.java
View file @
cf4aa441
...
@@ -40,9 +40,6 @@ public class ArtistVo {
...
@@ -40,9 +40,6 @@ public class ArtistVo {
@ApiModelProperty
(
value
=
"关联演出"
)
@ApiModelProperty
(
value
=
"关联演出"
)
private
List
<
PerformanceVo
>
performanceVoList
;
private
List
<
PerformanceVo
>
performanceVoList
;
@ApiModelProperty
(
value
=
"关联商品"
)
private
List
<
ProductVo
>
productVoList
;
@ApiModelProperty
(
value
=
"排序权重"
)
@ApiModelProperty
(
value
=
"排序权重"
)
private
Integer
sort
;
private
Integer
sort
;
...
@@ -79,7 +76,27 @@ public class ArtistVo {
...
@@ -79,7 +76,27 @@ public class ArtistVo {
@Data
@Data
@ApiModel
(
"商品VO"
)
@ApiModel
(
"商品VO"
)
private
static
class
ProductVo
{
public
static
class
ProductVo
{
@ApiModelProperty
(
"商品SPU ID"
)
private
String
spuId
;
@ApiModelProperty
(
"商品编码"
)
private
String
productCode
;
@ApiModelProperty
(
"商品名称"
)
private
String
productName
;
@ApiModelProperty
(
"商品头图"
)
private
String
imageUrl
;
@ApiModelProperty
(
"商品分类"
)
private
String
category
;
@ApiModelProperty
(
"商品售价"
)
private
String
price
;
@ApiModelProperty
(
"上架状态 1已上架 0未上架"
)
private
Integer
status
;
}
}
}
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/KylinArtistDetailFrontVo.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
returns
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
@Data
@ApiModel
(
"C端艺人详情"
)
public
class
KylinArtistDetailFrontVo
implements
Serializable
{
@ApiModelProperty
(
"艺人ID"
)
private
String
artistId
;
@ApiModelProperty
(
"艺人名称"
)
private
String
artistName
;
@ApiModelProperty
(
"艺人类型 1音乐人 2艺术家 3厂牌 4品牌方"
)
private
Integer
artistType
;
@ApiModelProperty
(
"艺人类型名称"
)
private
String
artistTypeName
;
@ApiModelProperty
(
"艺人头像"
)
private
String
avatarUrl
;
@ApiModelProperty
(
"艺人简介"
)
private
String
introduction
;
@ApiModelProperty
(
"艺人相册"
)
private
List
<
String
>
albumImages
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/KylinArtistPerformanceFrontVo.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
returns
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@ApiModel
(
"C端艺人关联演出"
)
public
class
KylinArtistPerformanceFrontVo
implements
Serializable
{
@ApiModelProperty
(
"演出ID"
)
private
String
performanceId
;
@ApiModelProperty
(
"演出名称"
)
private
String
title
;
@ApiModelProperty
(
"封面"
)
private
String
coverPic
;
@ApiModelProperty
(
"演出开始时间"
)
private
String
timeStart
;
@ApiModelProperty
(
"状态 6购买 8售罄 9未开始"
)
private
Integer
appStatus
;
@ApiModelProperty
(
"状态文案"
)
private
String
statusName
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/KylinArtistProductFrontVo.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
returns
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
@Data
@ApiModel
(
"C端艺人关联商品"
)
public
class
KylinArtistProductFrontVo
implements
Serializable
{
@ApiModelProperty
(
"商品SPU ID"
)
private
String
spuId
;
@ApiModelProperty
(
"商品名称"
)
private
String
name
;
@ApiModelProperty
(
"封面图"
)
private
String
coverPic
;
@ApiModelProperty
(
"售价"
)
private
BigDecimal
sellPrice
;
@ApiModelProperty
(
"排序"
)
private
Integer
sort
;
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinArtistFrontService.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
service
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistDetailFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistPerformanceFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistProductFrontVo
;
import
java.util.List
;
/**
* C端艺人详情
*/
public
interface
IKylinArtistFrontService
{
KylinArtistDetailFrontVo
getArtistDetail
(
String
artistId
);
List
<
String
>
getArtistAlbum
(
String
artistId
);
List
<
KylinArtistPerformanceFrontVo
>
getArtistPerformances
(
String
artistId
);
List
<
KylinArtistProductFrontVo
>
getArtistProducts
(
String
artistId
);
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/admin/IKylinArtistService.java
View file @
cf4aa441
...
@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
...
@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
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.ArtistGoodsOptionVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
...
@@ -32,4 +33,10 @@ public interface IKylinArtistService extends IService<KylinArtist> {
...
@@ -32,4 +33,10 @@ public interface IKylinArtistService extends IService<KylinArtist> {
Boolean
checkArtistNameExists
(
String
artistName
,
String
artistId
);
Boolean
checkArtistNameExists
(
String
artistName
,
String
artistId
);
List
<
ArtistGoodsOptionVo
>
searchGoods
(
String
keyword
,
String
artistId
,
List
<
String
>
excludeSpuIds
);
List
<
ArtistVo
.
ProductVo
>
listArtistProducts
(
String
artistId
);
Boolean
saveArtistProducts
(
String
artistId
,
List
<
String
>
spuIds
);
}
}
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/service/ISweetArtistsService.java
View file @
cf4aa441
...
@@ -4,16 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -4,16 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.entity.SweetArtists
;
import
com.liquidnet.service.sweet.entity.SweetArtists
;
import
com.liquidnet.service.sweet.entity.SweetArtistsList
;
import
com.liquidnet.service.sweet.entity.SweetArtistsUrl
;
import
com.liquidnet.service.sweet.param.SweetArtistsListParam
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 艺人表 服务类
* 艺人表 服务类
(读 kylin_artist,写已迁移至 admin)
* </p>
* </p>
*
*
* @author liquidnet
* @author liquidnet
...
@@ -23,12 +18,6 @@ public interface ISweetArtistsService extends IService<SweetArtists> {
...
@@ -23,12 +18,6 @@ public interface ISweetArtistsService extends IService<SweetArtists> {
ResponseDto
<
PageInfo
<
SweetArtists
>>
getList
(
int
page
,
int
size
,
String
name
);
ResponseDto
<
PageInfo
<
SweetArtists
>>
getList
(
int
page
,
int
size
,
String
name
);
ResponseDto
<
Boolean
>
add
(
SweetArtistsListParam
sweetArtistsList
);
ResponseDto
<
SweetArtistsVo
>
detail
(
String
artistsId
);
ResponseDto
<
SweetArtistsVo
>
detail
(
String
artistsId
);
ResponseDto
<
Boolean
>
change
(
String
artistsId
,
SweetArtistsListParam
sweetArtistsList
);
ResponseDto
<
SweetArtists
>
del
(
String
artistsId
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinArtistController.java
View file @
cf4aa441
...
@@ -11,7 +11,9 @@ import com.liquidnet.service.kylin.dao.KylinArtistDao;
...
@@ -11,7 +11,9 @@ import com.liquidnet.service.kylin.dao.KylinArtistDao;
import
com.liquidnet.service.kylin.dao.KylinArtistOperationLogDao
;
import
com.liquidnet.service.kylin.dao.KylinArtistOperationLogDao
;
import
com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao
;
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.ArtistProductSaveParam
;
import
com.liquidnet.service.kylin.dto.param.ArtistSearchParam
;
import
com.liquidnet.service.kylin.dto.param.ArtistSearchParam
;
import
com.liquidnet.service.kylin.dto.vo.ArtistGoodsOptionVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
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.IKylinArtistPerformanceService
;
...
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Controller;
...
@@ -24,6 +26,7 @@ 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
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -305,4 +308,66 @@ public class KylinArtistController extends BaseController {
...
@@ -305,4 +308,66 @@ public class KylinArtistController extends BaseController {
}
}
}
}
/**
* 关联商品页面
*/
@RequiresPermissions
(
"kylin:artist:update"
)
@GetMapping
(
"/products/{artistId}"
)
public
String
productsPage
(
@PathVariable
(
"artistId"
)
String
artistId
,
ModelMap
mmap
)
{
ArtistVo
artistVo
=
kylinArtistService
.
detail
(
artistId
);
mmap
.
put
(
"artistId"
,
artistId
);
mmap
.
put
(
"artistName"
,
artistVo
!=
null
?
artistVo
.
getArtistName
()
:
""
);
return
prefix
+
"/products"
;
}
/**
* 查询艺人已关联商品
*/
@RequiresPermissions
(
"kylin:artist:update"
)
@GetMapping
(
"/products/list"
)
@ResponseBody
public
AjaxResult
productsList
(
@RequestParam
String
artistId
)
{
return
AjaxResult
.
success
(
kylinArtistService
.
listArtistProducts
(
artistId
));
}
/**
* 保存艺人关联商品
*/
@Log
(
title
=
"保存艺人关联商品"
,
businessType
=
BusinessType
.
UPDATE
)
@RequiresPermissions
(
"kylin:artist:update"
)
@PostMapping
(
"/products/save"
)
@ResponseBody
public
AjaxResult
productsSave
(
@RequestBody
ArtistProductSaveParam
param
)
{
try
{
Boolean
result
=
kylinArtistService
.
saveArtistProducts
(
param
.
getArtistId
(),
param
.
getSpuIds
());
if
(
result
)
{
return
success
(
"保存成功"
);
}
return
error
(
"艺人不存在"
);
}
catch
(
IllegalArgumentException
e
)
{
return
error
(
e
.
getMessage
());
}
}
/**
* 搜索可选商品(按名称)
*/
@GetMapping
(
"/searchGoods"
)
@ResponseBody
public
AjaxResult
searchGoods
(
@RequestParam
(
value
=
"keyword"
,
required
=
false
)
String
keyword
,
@RequestParam
(
value
=
"artistId"
,
required
=
false
)
String
artistId
,
@RequestParam
(
value
=
"excludeSpuIds"
,
required
=
false
)
String
excludeSpuIds
)
{
List
<
String
>
excludeList
=
new
ArrayList
<>();
if
(
excludeSpuIds
!=
null
&&
!
excludeSpuIds
.
isEmpty
())
{
for
(
String
spuId
:
excludeSpuIds
.
split
(
","
))
{
if
(
spuId
!=
null
&&
!
spuId
.
trim
().
isEmpty
())
{
excludeList
.
add
(
spuId
.
trim
());
}
}
}
List
<
ArtistGoodsOptionVo
>
list
=
kylinArtistService
.
searchGoods
(
keyword
,
artistId
,
excludeList
);
return
AjaxResult
.
success
(
list
);
}
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/artist/artists.html
View file @
cf4aa441
...
@@ -127,6 +127,7 @@
...
@@ -127,6 +127,7 @@
var
actions
=
[];
var
actions
=
[];
actions
.
push
(
'<a class="btn btn-info btn-xs '
+
detailFlag
+
'" href="javascript:void(0)" onclick="$.operate.detail(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-eye"></i>详情</a> '
);
actions
.
push
(
'<a class="btn btn-info btn-xs '
+
detailFlag
+
'" href="javascript:void(0)" onclick="$.operate.detail(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-eye"></i>详情</a> '
);
actions
.
push
(
'<a class="btn btn-success btn-xs '
+
updateFlag
+
'" href="javascript:void(0)" onclick="$.operate.edit(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-edit"></i>编辑</a> '
);
actions
.
push
(
'<a class="btn btn-success btn-xs '
+
updateFlag
+
'" href="javascript:void(0)" onclick="$.operate.edit(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-edit"></i>编辑</a> '
);
actions
.
push
(
'<a class="btn btn-primary btn-xs '
+
updateFlag
+
'" href="javascript:void(0)" onclick="openProductModal(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-shopping-bag"></i>关联商品</a> '
);
actions
.
push
(
'<a class="btn btn-warning btn-xs '
+
detailFlag
+
'" href="javascript:void(0)" onclick="showOperationLog(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-history"></i>操作日志</a> '
);
actions
.
push
(
'<a class="btn btn-warning btn-xs '
+
detailFlag
+
'" href="javascript:void(0)" onclick="showOperationLog(
\'
'
+
row
.
artistId
+
'
\'
)"><i class="fa fa-history"></i>操作日志</a> '
);
return
actions
.
join
(
''
);
return
actions
.
join
(
''
);
}
}
...
@@ -171,6 +172,21 @@
...
@@ -171,6 +172,21 @@
var
url
=
prefix
+
'/operationLog/'
+
artistId
;
var
url
=
prefix
+
'/operationLog/'
+
artistId
;
$
.
modal
.
openTab
(
"艺人操作记录"
,
url
);
$
.
modal
.
openTab
(
"艺人操作记录"
,
url
);
}
}
function
openProductModal
(
artistId
)
{
var
url
=
prefix
+
'/products/'
+
artistId
;
$
.
modal
.
openOptions
({
title
:
'关联商品'
,
url
:
url
,
width
:
'900'
,
height
:
'600'
,
btn
:
[
'保存'
,
'关闭'
],
yes
:
function
(
index
,
layero
)
{
var
iframeWin
=
layero
.
find
(
'iframe'
)[
0
];
iframeWin
.
contentWindow
.
submitHandler
(
index
,
layero
);
}
});
}
</script>
</script>
</body>
</body>
</html>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/artist/detail.html
View file @
cf4aa441
...
@@ -282,54 +282,6 @@
...
@@ -282,54 +282,6 @@
暂无演出信息
暂无演出信息
</div>
</div>
</div>
</div>
<!-- 关联商品信息 -->
<div>
<div
class=
"section-title"
>
艺人关联商品信息
<span
th:if=
"*{productVoList != null}"
style=
"font-size: 14px; color: #666; margin-left: 10px;"
>
(共
<span
th:text=
"*{productVoList.size()}"
>
2
</span>
条)
</span>
</div>
<div
class=
"table-container"
th:if=
"*{productVoList != null and !productVoList.isEmpty()}"
>
<table
class=
"custom-table"
>
<thead>
<tr>
<th
width=
"15%"
>
商品编码
</th>
<th
width=
"20%"
>
商品名称
</th>
<th
width=
"15%"
>
商品头图
</th>
<th
width=
"15%"
>
商品分类
</th>
<th
width=
"15%"
>
商品售价
</th>
<th
width=
"15%"
>
上架状态
</th>
</tr>
</thead>
<tbody>
<tr
th:each=
"product : ${ArtistVo.productVoList}"
>
<td
th:text=
"${product.productCode} ?: '--'"
>
goods001
</td>
<td
th:text=
"${product.productName} ?: '--'"
>
摩登天空T恤
</td>
<td>
<div
class=
"product-image"
th:if=
"${product.imageUrl}"
>
<img
th:src=
"${product.imageUrl}"
alt=
"商品图片"
>
</div>
<span
th:unless=
"${product.imageUrl}"
>
--
</span>
</td>
<td
th:text=
"${product.category} ?: '--'"
>
服饰
</td>
<td
th:text=
"${product.price} ?: '--'"
>
99.00元
</td>
<td>
<span
th:if=
"${product.status == 1}"
class=
"status-badge status-on"
>
已上架
</span>
<span
th:if=
"${product.status == 0}"
class=
"status-badge status-off"
>
未上架
</span>
<span
th:if=
"${product.status != 1 and product.status != 0}"
th:text=
"${product.status}"
>
--
</span>
</td>
</tr>
</tbody>
</table>
</div>
<div
th:if=
"*{productVoList == null or productVoList.isEmpty()}"
class=
"empty-data"
>
暂无关联商品信息
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/artist/products.html
0 → 100644
View file @
cf4aa441
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<th:block
th:include=
"include :: header('关联商品')"
/>
<link
rel=
"stylesheet"
th:href=
"@{/ajax/libs/select2/select2.min.css}"
/>
<style>
body
{
background
:
#fff
;
}
.page-wrap
{
padding
:
16px
;
}
.section-title
{
font-weight
:
bold
;
margin
:
16px
0
8px
;
}
.img-thumb
{
width
:
40px
;
height
:
40px
;
object-fit
:
cover
;
border-radius
:
4px
;
}
.select2-container
{
min-width
:
380px
;
}
.add-row
{
margin-bottom
:
16px
;
display
:
flex
;
align-items
:
center
;
gap
:
10px
;
}
</style>
</head>
<body
class=
"white-bg"
>
<div
class=
"page-wrap"
>
<div
class=
"section-title"
>
艺人:
<span
th:text=
"${artistName}"
>
--
</span>
<span
style=
"font-size:12px;color:#999;margin-left:8px;"
th:text=
"'ID: ' + ${artistId}"
></span>
</div>
<div
class=
"add-row"
>
<select
id=
"goodsSelect"
style=
"width:400px;"
>
<option
value=
""
>
默认最近20条,输入名称搜索全部匹配
</option>
</select>
<span
style=
"color:#999;font-size:12px;"
>
选中商品后自动添加到列表
</span>
</div>
<div
class=
"section-title"
>
已关联商品
</div>
<div
class=
"table-responsive"
>
<table
class=
"table table-bordered"
>
<thead>
<tr>
<th>
商品SPU ID
</th>
<th>
头图
</th>
<th>
商品名称
</th>
<th>
状态
</th>
<th>
操作
</th>
</tr>
</thead>
<tbody
id=
"linkedProductsBody"
>
<tr
id=
"linkedProductsEmptyRow"
>
<td
colspan=
"5"
style=
"text-align:center;color:#999;"
>
暂无关联商品
</td>
</tr>
</tbody>
</table>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<script
th:src=
"@{/ajax/libs/select2/select2.min.js}"
></script>
<script
th:inline=
"javascript"
>
var
artistId
=
/*[[${artistId}]]*/
''
;
var
prefix
=
ctx
+
'kylin/artist'
;
var
linkedProducts
=
[];
$
(
function
()
{
initSelect2
();
loadLinkedProducts
();
});
function
initSelect2
()
{
$
(
'#goodsSelect'
).
select2
({
allowClear
:
true
,
placeholder
:
'默认最近20条,输入名称搜索全部匹配'
,
minimumInputLength
:
0
,
ajax
:
{
url
:
prefix
+
'/searchGoods'
,
dataType
:
'json'
,
delay
:
300
,
data
:
function
(
params
)
{
return
{
keyword
:
params
.
term
||
''
,
artistId
:
artistId
,
excludeSpuIds
:
linkedProducts
.
map
(
function
(
item
)
{
return
item
.
spuId
;
}).
join
(
','
)
};
},
processResults
:
function
(
resp
)
{
var
list
=
(
resp
&&
resp
.
data
)
?
resp
.
data
:
[];
return
{
results
:
list
.
map
(
function
(
item
)
{
var
text
=
item
.
name
||
item
.
spuId
;
if
(
item
.
spuNo
)
{
text
+=
' ('
+
item
.
spuNo
+
')'
;
}
return
{
id
:
item
.
spuId
,
text
:
text
,
disabled
:
item
.
selectable
===
false
,
_raw
:
item
};
})};
}
}
}).
on
(
'select2:select'
,
function
(
e
)
{
var
raw
=
e
.
params
.
data
.
_raw
;
if
(
raw
&&
raw
.
selectable
===
false
)
{
$
.
modal
.
alertWarning
(
'该商品不可关联'
);
$
(
this
).
val
(
null
).
trigger
(
'change'
);
return
;
}
if
(
raw
)
{
addLinkedProduct
(
raw
);
}
$
(
this
).
val
(
null
).
trigger
(
'change'
);
});
}
function
loadLinkedProducts
()
{
$
.
get
(
prefix
+
'/products/list'
,
{
artistId
:
artistId
},
function
(
resp
)
{
if
(
resp
.
code
===
0
&&
resp
.
data
)
{
linkedProducts
=
resp
.
data
.
map
(
function
(
item
)
{
return
{
spuId
:
item
.
spuId
,
name
:
item
.
productName
,
coverPic
:
item
.
imageUrl
,
shelfStatusLabel
:
item
.
status
===
1
?
'已上架'
:
'未上架'
};
});
renderLinkedProducts
();
}
});
}
function
renderLinkedProducts
()
{
var
$body
=
$
(
'#linkedProductsBody'
);
$body
.
empty
();
if
(
!
linkedProducts
.
length
)
{
$body
.
append
(
'<tr><td colspan="5" style="text-align:center;color:#999;">暂无关联商品</td></tr>'
);
return
;
}
linkedProducts
.
forEach
(
function
(
item
,
index
)
{
$body
.
append
(
'<tr>'
+
'<td>'
+
(
item
.
spuId
||
'--'
)
+
'</td>'
+
'<td>'
+
(
item
.
coverPic
?
'<img class="img-thumb" src="'
+
item
.
coverPic
+
'">'
:
'--'
)
+
'</td>'
+
'<td>'
+
(
item
.
name
||
'--'
)
+
'</td>'
+
'<td>'
+
(
item
.
shelfStatusLabel
||
'--'
)
+
'</td>'
+
'<td><button type="button" class="btn btn-danger btn-xs" onclick="removeLinkedProduct('
+
index
+
')">移除</button></td>'
+
'</tr>'
);
});
}
function
addLinkedProduct
(
raw
)
{
if
(
!
raw
||
!
raw
.
spuId
)
{
return
;
}
if
(
linkedProducts
.
some
(
function
(
item
)
{
return
item
.
spuId
===
raw
.
spuId
;
}))
{
$
.
modal
.
alertWarning
(
'该商品已在列表中'
);
return
;
}
linkedProducts
.
push
({
spuId
:
raw
.
spuId
,
name
:
raw
.
name
,
coverPic
:
raw
.
coverPic
,
shelfStatusLabel
:
raw
.
shelfStatusLabel
});
renderLinkedProducts
();
}
function
removeLinkedProduct
(
index
)
{
linkedProducts
.
splice
(
index
,
1
);
renderLinkedProducts
();
}
function
submitHandler
(
index
,
layero
)
{
var
spuIds
=
linkedProducts
.
map
(
function
(
item
)
{
return
item
.
spuId
;
});
$
.
ajax
({
url
:
prefix
+
'/products/save'
,
type
:
'post'
,
contentType
:
'application/json'
,
data
:
JSON
.
stringify
({
artistId
:
artistId
,
spuIds
:
spuIds
}),
success
:
function
(
resp
)
{
if
(
resp
.
code
===
0
)
{
if
(
parent
&&
parent
.
$
&&
parent
.
$
.
modal
)
{
parent
.
$
.
modal
.
msgSuccess
(
'保存成功'
);
if
(
parent
.
$
.
table
)
{
parent
.
$
.
table
.
refresh
();
}
}
else
{
$
.
modal
.
msgSuccess
(
'保存成功'
);
}
if
(
typeof
index
!==
'undefined'
)
{
parent
.
layer
.
close
(
index
);
}
else
{
$
.
modal
.
close
();
}
}
else
{
$
.
modal
.
alertError
(
resp
.
msg
||
'保存失败'
);
}
}
});
}
</script>
</body>
</html>
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/performances/artistLineup.html
View file @
cf4aa441
...
@@ -699,8 +699,10 @@
...
@@ -699,8 +699,10 @@
$
(
'#selected-artists-container'
).
html
(
''
);
$
(
'#selected-artists-container'
).
html
(
''
);
// 打开弹窗
// 打开弹窗
$
(
'#associateArtistModal'
).
modal
(
'show'
);
$
(
'#associateArtistModal'
).
modal
(
'show'
);
// 加载初始艺人列表(含已关联状态)
// 已绑定艺人从 getSessionArtists 初始化(含逻辑删除但仍关联的);可选列表走 getAllArtists
loadAllArtistsForModal
(
timesId
,
true
);
initSelectedArtistsFromSession
(
timesId
,
function
()
{
loadAllArtistsForModal
(
timesId
);
});
}
}
// 防抖
// 防抖
...
@@ -715,15 +717,45 @@
...
@@ -715,15 +717,45 @@
const
debouncedSearch
=
debounce
(
function
()
{
const
debouncedSearch
=
debounce
(
function
()
{
const
timesId
=
$
(
'#associateArtistModal'
).
data
(
'timesId'
);
const
timesId
=
$
(
'#associateArtistModal'
).
data
(
'timesId'
);
loadAllArtistsForModal
(
timesId
,
false
);
loadAllArtistsForModal
(
timesId
);
},
300
);
},
300
);
/** 从本场次已绑定阵容初始化已选艺人(不按 status 过滤) */
function
initSelectedArtistsFromSession
(
timesId
,
callback
)
{
$
.
ajax
({
url
:
ctx
+
"kylin/artist/getSessionArtists"
,
type
:
"GET"
,
data
:
{
performancesId
:
performancesId
,
timesId
:
timesId
},
success
:
function
(
response
)
{
if
(
response
.
code
===
0
)
{
selectedArtists
=
(
response
.
data
||
[])
.
map
(
function
(
a
)
{
return
{
artistId
:
a
.
artistId
,
artistName
:
a
.
artistName
,
avatarUrl
:
a
.
avatarUrl
,
sort
:
a
.
sort
||
0
};
})
.
sort
(
function
(
a
,
b
)
{
return
b
.
sort
-
a
.
sort
;
});
updateSelectedArtistsView
();
}
if
(
callback
)
callback
();
},
error
:
function
()
{
if
(
callback
)
callback
();
}
});
}
/**
/**
* 从后端加载
艺人列表
* 从后端加载
可选艺人列表(仅 status=1)
* @param {string} timesId
* @param {string} timesId
* @param {boolean} isInitialLoad 是否首次加载(用于初始化已选艺人)
*/
*/
function
loadAllArtistsForModal
(
timesId
,
isInitialLoad
)
{
function
loadAllArtistsForModal
(
timesId
)
{
const
keyword
=
$
(
'#artist-search-input'
).
val
().
trim
();
const
keyword
=
$
(
'#artist-search-input'
).
val
().
trim
();
// 显示加载中
// 显示加载中
...
@@ -742,7 +774,7 @@
...
@@ -742,7 +774,7 @@
success
:
function
(
response
)
{
success
:
function
(
response
)
{
if
(
response
.
code
===
0
)
{
if
(
response
.
code
===
0
)
{
currentModalArtists
=
response
.
data
||
[];
currentModalArtists
=
response
.
data
||
[];
renderArtistsInModal
(
currentModalArtists
,
isInitialLoad
);
renderArtistsInModal
(
currentModalArtists
);
}
else
{
}
else
{
$
(
'#modal-artist-list'
).
html
(
$
(
'#modal-artist-list'
).
html
(
'<div class="modal-empty">加载艺人列表失败,请重试</div>'
'<div class="modal-empty">加载艺人列表失败,请重试</div>'
...
@@ -760,9 +792,8 @@
...
@@ -760,9 +792,8 @@
/**
/**
* 渲染搜索结果列表
* 渲染搜索结果列表
* @param {Array} artists
* @param {Array} artists
* @param {boolean} isInitialLoad
*/
*/
function
renderArtistsInModal
(
artists
,
isInitialLoad
)
{
function
renderArtistsInModal
(
artists
)
{
const
listContainer
=
$
(
'#modal-artist-list'
);
const
listContainer
=
$
(
'#modal-artist-list'
);
if
(
!
artists
||
artists
.
length
===
0
)
{
if
(
!
artists
||
artists
.
length
===
0
)
{
...
@@ -771,14 +802,6 @@
...
@@ -771,14 +802,6 @@
return
;
return
;
}
}
// 首次加载时,从后端的 associated 字段初始化已选列表,并按 sort 降序排列(sort 越大越靠前)
if
(
isInitialLoad
)
{
selectedArtists
=
artists
.
filter
(
a
=>
a
.
associated
)
.
map
(
a
=>
({
artistId
:
a
.
artistId
,
artistName
:
a
.
artistName
,
avatarUrl
:
a
.
avatarUrl
,
sort
:
a
.
sort
||
0
}))
.
sort
((
a
,
b
)
=>
b
.
sort
-
a
.
sort
);
}
let
html
=
''
;
let
html
=
''
;
artists
.
forEach
(
function
(
artist
)
{
artists
.
forEach
(
function
(
artist
)
{
const
isSelected
=
selectedArtists
.
some
(
a
=>
a
.
artistId
===
artist
.
artistId
);
const
isSelected
=
selectedArtists
.
some
(
a
=>
a
.
artistId
===
artist
.
artistId
);
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinArtistPerformanceServiceImpl.java
View file @
cf4aa441
...
@@ -14,10 +14,10 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -14,10 +14,10 @@ import lombok.extern.slf4j.Slf4j;
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.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.HashSet
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService
;
import
com.liquidnet.service.kylin.service.admin.IKylinArtistOperationLogService
;
...
@@ -79,6 +79,7 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
...
@@ -79,6 +79,7 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
// 删除缓存演出阵容
// 删除缓存演出阵容
dataUtils
.
delPerformanceArtists
(
performanceId
);
dataUtils
.
delPerformanceArtists
(
performanceId
);
dataUtils
.
delArtistPerformancesCache
(
artistId
);
int
result
=
artistPerformanceMapper
.
deleteById
(
mid
);
int
result
=
artistPerformanceMapper
.
deleteById
(
mid
);
// 记录删除后的关联数量
// 记录删除后的关联数量
...
@@ -95,8 +96,9 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
...
@@ -95,8 +96,9 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
@Override
@Override
public
List
<
KylinArtistAssociationStatusDto
>
getAllArtists
(
String
performancesId
,
String
timesId
,
String
keyword
)
{
public
List
<
KylinArtistAssociationStatusDto
>
getAllArtists
(
String
performancesId
,
String
timesId
,
String
keyword
)
{
// 1.
获取所有艺人
// 1.
可选艺人:仅启用中(已逻辑删除的不出现在选艺人列表;已绑定展示走 getSessionArtists)
List
<
KylinArtist
>
allArtists
=
artistMapper
.
selectList
(
new
QueryWrapper
<
KylinArtist
>()
List
<
KylinArtist
>
allArtists
=
artistMapper
.
selectList
(
new
QueryWrapper
<
KylinArtist
>()
.
eq
(
"status"
,
1
)
.
like
(
keyword
!=
null
&&
!
keyword
.
isEmpty
(),
"artist_name"
,
keyword
)
.
like
(
keyword
!=
null
&&
!
keyword
.
isEmpty
(),
"artist_name"
,
keyword
)
.
orderByDesc
(
"created_at"
));
.
orderByDesc
(
"created_at"
));
...
@@ -108,7 +110,7 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
...
@@ -108,7 +110,7 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
.
collect
(
Collectors
.
toMap
(
.
collect
(
Collectors
.
toMap
(
KylinArtistPerformanceDao:
:
getArtistId
,
KylinArtistPerformanceDao:
:
getArtistId
,
KylinArtistPerformanceDao:
:
getSort
,
KylinArtistPerformanceDao:
:
getSort
,
(
existing
,
replacement
)
->
existing
// 重复 key 保留已有值
(
existing
,
replacement
)
->
existing
));
));
// 3. 组装返回结果
// 3. 组装返回结果
...
@@ -190,6 +192,9 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
...
@@ -190,6 +192,9 @@ public class KylinArtistPerformanceServiceImpl extends ServiceImpl<KylinArtistPe
// 删除缓存演出阵容
// 删除缓存演出阵容
dataUtils
.
delPerformanceArtists
(
performancesId
);
dataUtils
.
delPerformanceArtists
(
performancesId
);
for
(
String
artistId
:
affectedArtistIds
)
{
dataUtils
.
delArtistPerformancesCache
(
artistId
);
}
return
true
;
return
true
;
}
}
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinArtistServiceImpl.java
View file @
cf4aa441
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
service
.
impl
;
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
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.client.admin.zhengzai.kylin.utils.DataUtils
;
import
com.liquidnet.client.admin.zhengzai.kylin.utils.SweetArtistCacheUtils
;
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
;
...
@@ -12,9 +15,14 @@ import com.liquidnet.service.kylin.dao.KylinArtistDao;
...
@@ -12,9 +15,14 @@ import com.liquidnet.service.kylin.dao.KylinArtistDao;
import
com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao
;
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.ArtistGoodsOptionVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
import
com.liquidnet.service.kylin.dto.vo.ArtistVo
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
import
com.liquidnet.service.goblin.entity.GoblinGoods
;
import
com.liquidnet.service.goblin.mapper.GoblinGoodsMapper
;
import
com.liquidnet.service.kylin.entity.KylinArtistAlbum
;
import
com.liquidnet.service.kylin.entity.KylinArtistAlbum
;
import
com.liquidnet.service.kylin.entity.KylinArtistProduct
;
import
com.liquidnet.service.kylin.mapper.KylinArtistProductMapper
;
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
;
...
@@ -27,8 +35,12 @@ import org.springframework.stereotype.Service;
...
@@ -27,8 +35,12 @@ 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.HashSet
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -50,6 +62,9 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -50,6 +62,9 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
@Autowired
@Autowired
private
KylinArtistAlbumMapper
artistAlbumMapper
;
private
KylinArtistAlbumMapper
artistAlbumMapper
;
@Autowired
private
KylinArtistProductMapper
artistProductMapper
;
@Autowired
@Autowired
private
KylinArtistPerformanceMapper
artistPerformanceMapper
;
private
KylinArtistPerformanceMapper
artistPerformanceMapper
;
...
@@ -59,6 +74,12 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -59,6 +74,12 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
@Autowired
@Autowired
private
DataUtils
dataUtils
;
private
DataUtils
dataUtils
;
@Autowired
private
SweetArtistCacheUtils
sweetArtistCacheUtils
;
@Autowired
private
GoblinGoodsMapper
goblinGoodsMapper
;
/**
/**
* 创建艺人
* 创建艺人
*/
*/
...
@@ -147,6 +168,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -147,6 +168,8 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
dataUtils
.
delPerformanceArtists
(
p
);
dataUtils
.
delPerformanceArtists
(
p
);
}
}
}
}
sweetArtistCacheUtils
.
invalidateByArtistId
(
artistId
);
dataUtils
.
delArtistDetailAndAlbumCache
(
artistId
);
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"修改艺人失败"
,
e
);
log
.
error
(
"修改艺人失败"
,
e
);
...
@@ -272,28 +295,16 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -272,28 +295,16 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
new
UpdateWrapper
<
KylinArtist
>().
in
(
"artist_id"
,
artistIds
)
new
UpdateWrapper
<
KylinArtist
>().
in
(
"artist_id"
,
artistIds
)
);
);
//
删除相册图片并记录日志
//
逻辑删除艺人,保留相册/商品/演出关联等历史数据;关联与展示内容未变,缓存自然过期即可
for
(
String
artistId
:
artistIds
)
{
for
(
String
artistId
:
artistIds
)
{
// 获取艺人信息用于日志
KylinArtist
artist
=
artistMapper
.
selectOne
(
KylinArtist
artist
=
artistMapper
.
selectOne
(
new
UpdateWrapper
<
KylinArtist
>().
eq
(
"artist_id"
,
artistId
)
new
UpdateWrapper
<
KylinArtist
>().
eq
(
"artist_id"
,
artistId
)
);
);
artistAlbumMapper
.
deleteByArtistId
(
artistId
);
// 记录删除日志
String
logContent
=
"删除艺人:"
+
(
artist
!=
null
?
artist
.
getArtistName
()
+
"(ID:"
+
artistId
+
")"
:
artistId
);
String
logContent
=
"删除艺人:"
+
(
artist
!=
null
?
artist
.
getArtistName
()
+
"(ID:"
+
artistId
+
")"
:
artistId
);
operationLogService
.
recordLog
(
artistId
,
3
,
logContent
);
operationLogService
.
recordLog
(
artistId
,
3
,
logContent
);
}
}
// 根据艺人ID查询所有关联的演出
List
<
String
>
performanceIdList
=
artistPerformanceMapper
.
selectPerformanceIdsByArtistIds
(
artistIds
);
if
(!
performanceIdList
.
isEmpty
())
{
for
(
String
p
:
performanceIdList
)
{
dataUtils
.
delPerformanceArtists
(
p
);
}
}
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"删除艺人失败"
,
e
);
log
.
error
(
"删除艺人失败"
,
e
);
...
@@ -301,6 +312,126 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -301,6 +312,126 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
}
}
}
}
@Override
public
List
<
ArtistVo
.
ProductVo
>
listArtistProducts
(
String
artistId
)
{
KylinArtist
artist
=
artistMapper
.
selectOne
(
new
UpdateWrapper
<
KylinArtist
>().
eq
(
"artist_id"
,
artistId
).
eq
(
"status"
,
1
)
);
if
(
artist
==
null
)
{
return
Collections
.
emptyList
();
}
List
<
KylinArtistProduct
>
productRelations
=
artistProductMapper
.
selectByArtistId
(
artistId
);
if
(
productRelations
==
null
||
productRelations
.
isEmpty
())
{
return
Collections
.
emptyList
();
}
List
<
ArtistVo
.
ProductVo
>
productVoList
=
new
ArrayList
<>();
for
(
KylinArtistProduct
relation
:
productRelations
)
{
ArtistVo
.
ProductVo
productVo
=
buildProductVo
(
relation
.
getSpuId
());
if
(
productVo
!=
null
)
{
productVoList
.
add
(
productVo
);
}
}
return
productVoList
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Boolean
saveArtistProducts
(
String
artistId
,
List
<
String
>
spuIds
)
{
KylinArtist
artist
=
artistMapper
.
selectOne
(
new
UpdateWrapper
<
KylinArtist
>().
eq
(
"artist_id"
,
artistId
).
eq
(
"status"
,
1
)
);
if
(
artist
==
null
)
{
return
false
;
}
LinkedHashSet
<
String
>
uniqueSpuIds
=
new
LinkedHashSet
<>();
if
(
spuIds
!=
null
)
{
for
(
String
spuId
:
spuIds
)
{
if
(
spuId
!=
null
&&
!
spuId
.
trim
().
isEmpty
())
{
uniqueSpuIds
.
add
(
spuId
.
trim
());
}
}
}
artistProductMapper
.
deleteByArtistId
(
artistId
);
if
(!
uniqueSpuIds
.
isEmpty
())
{
saveProductRelations
(
artistId
,
new
ArrayList
<>(
uniqueSpuIds
));
}
operationLogService
.
recordLog
(
artistId
,
2
,
"更新了艺人关联商品"
);
dataUtils
.
delArtistProductsCache
(
artistId
);
return
true
;
}
@Override
public
List
<
ArtistGoodsOptionVo
>
searchGoods
(
String
keyword
,
String
artistId
,
List
<
String
>
excludeSpuIds
)
{
Set
<
String
>
excludeSet
=
buildExcludeSpuIds
(
artistId
,
excludeSpuIds
);
boolean
hasKeyword
=
keyword
!=
null
&&
!
keyword
.
trim
().
isEmpty
();
LambdaQueryWrapper
<
GoblinGoods
>
query
=
Wrappers
.
lambdaQuery
(
GoblinGoods
.
class
)
.
ne
(
GoblinGoods:
:
getDelFlg
,
"1"
)
.
orderByDesc
(
GoblinGoods:
:
getMid
);
if
(!
excludeSet
.
isEmpty
())
{
query
.
notIn
(
GoblinGoods:
:
getSpuId
,
excludeSet
);
}
if
(
hasKeyword
)
{
query
.
like
(
GoblinGoods:
:
getName
,
keyword
.
trim
());
}
else
{
query
.
last
(
"LIMIT 20"
);
}
List
<
GoblinGoods
>
goodsList
=
goblinGoodsMapper
.
selectList
(
query
);
List
<
ArtistGoodsOptionVo
>
result
=
new
ArrayList
<>();
for
(
GoblinGoods
goods
:
goodsList
)
{
result
.
add
(
buildGoodsOption
(
goods
));
}
return
result
;
}
private
Set
<
String
>
buildExcludeSpuIds
(
String
artistId
,
List
<
String
>
excludeSpuIds
)
{
Set
<
String
>
excludeSet
=
new
HashSet
<>();
if
(
artistId
!=
null
&&
!
artistId
.
isEmpty
())
{
List
<
KylinArtistProduct
>
relations
=
artistProductMapper
.
selectByArtistId
(
artistId
);
if
(
relations
!=
null
)
{
for
(
KylinArtistProduct
relation
:
relations
)
{
if
(
relation
.
getSpuId
()
!=
null
&&
!
relation
.
getSpuId
().
isEmpty
())
{
excludeSet
.
add
(
relation
.
getSpuId
());
}
}
}
}
if
(
excludeSpuIds
!=
null
)
{
for
(
String
spuId
:
excludeSpuIds
)
{
if
(
spuId
!=
null
&&
!
spuId
.
trim
().
isEmpty
())
{
excludeSet
.
add
(
spuId
.
trim
());
}
}
}
return
excludeSet
;
}
private
ArtistGoodsOptionVo
buildGoodsOption
(
GoblinGoods
goods
)
{
ArtistGoodsOptionVo
vo
=
new
ArtistGoodsOptionVo
();
vo
.
setSpuId
(
goods
.
getSpuId
());
vo
.
setSpuNo
(
goods
.
getSpuNo
());
vo
.
setName
(
goods
.
getName
());
vo
.
setCoverPic
(
goods
.
getCoverPic
());
vo
.
setShelfStatusLabel
(
resolveShelfStatusLabel
(
goods
.
getShelvesStatus
(),
goods
.
getDelFlg
()));
vo
.
setSelectable
(!
"1"
.
equals
(
goods
.
getDelFlg
()));
return
vo
;
}
private
String
resolveShelfStatusLabel
(
String
shelvesStatus
,
String
delFlg
)
{
if
(!
"0"
.
equals
(
delFlg
))
{
return
"已删除"
;
}
if
(
"3"
.
equals
(
shelvesStatus
))
{
return
"已上架"
;
}
if
(
"0"
.
equals
(
shelvesStatus
))
{
return
"待上架"
;
}
if
(
"1"
.
equals
(
shelvesStatus
))
{
return
"未上架"
;
}
return
"不可售"
;
}
/**
/**
* 检查艺人名称是否存在
* 检查艺人名称是否存在
*/
*/
...
@@ -337,6 +468,49 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
...
@@ -337,6 +468,49 @@ public class KylinArtistServiceImpl extends ServiceImpl<KylinArtistMapper, Kylin
}
}
}
}
private
void
saveProductRelations
(
String
artistId
,
List
<
String
>
spuIds
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
int
sort
=
spuIds
.
size
();
for
(
String
spuId
:
spuIds
)
{
if
(
spuId
==
null
||
spuId
.
trim
().
isEmpty
())
{
continue
;
}
KylinArtistProduct
product
=
KylinArtistProduct
.
getNew
();
product
.
setRelationId
(
IDGenerator
.
nextSnowId
());
product
.
setArtistId
(
artistId
);
product
.
setSpuId
(
spuId
.
trim
());
product
.
setSort
(
sort
--);
product
.
setStatus
(
1
);
product
.
setCreatedAt
(
now
);
product
.
setUpdatedAt
(
now
);
artistProductMapper
.
insert
(
product
);
}
}
private
ArtistVo
.
ProductVo
buildProductVo
(
String
spuId
)
{
GoblinGoods
goods
=
goblinGoodsMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
GoblinGoods
.
class
)
.
eq
(
GoblinGoods:
:
getSpuId
,
spuId
)
.
ne
(
GoblinGoods:
:
getDelFlg
,
"1"
)
);
if
(
goods
==
null
)
{
ArtistVo
.
ProductVo
vo
=
new
ArtistVo
.
ProductVo
();
vo
.
setSpuId
(
spuId
);
vo
.
setProductCode
(
spuId
);
vo
.
setProductName
(
"商品不存在"
);
vo
.
setStatus
(
0
);
return
vo
;
}
ArtistVo
.
ProductVo
vo
=
new
ArtistVo
.
ProductVo
();
vo
.
setSpuId
(
goods
.
getSpuId
());
vo
.
setProductCode
(
goods
.
getSpuNo
()
!=
null
?
goods
.
getSpuNo
()
:
goods
.
getSpuId
());
vo
.
setProductName
(
goods
.
getName
());
vo
.
setImageUrl
(
goods
.
getCoverPic
());
vo
.
setCategory
(
"--"
);
vo
.
setStatus
(
"3"
.
equals
(
goods
.
getShelvesStatus
())
?
1
:
0
);
return
vo
;
}
/**
/**
* 构建新增操作的日志内容
* 构建新增操作的日志内容
*/
*/
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/DataUtils.java
View file @
cf4aa441
...
@@ -631,4 +631,39 @@ public class DataUtils {
...
@@ -631,4 +631,39 @@ public class DataUtils {
final
String
redisKey
=
KylinRedisConst
.
PERFORMANCES_ARTISTS
+
performancesId
;
final
String
redisKey
=
KylinRedisConst
.
PERFORMANCES_ARTISTS
+
performancesId
;
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
redisKey
);
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
redisKey
);
}
}
/**
* 删除艺人 C 端缓存(详情/相册/演出/商品)
*/
public
void
delArtistCache
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_DETAIL
+
artistId
);
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_ALBUM
+
artistId
);
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_PERFORMANCES
+
artistId
);
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_PRODUCTS
+
artistId
);
}
public
void
delArtistDetailAndAlbumCache
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_DETAIL
+
artistId
);
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_ALBUM
+
artistId
);
}
public
void
delArtistPerformancesCache
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_PERFORMANCES
+
artistId
);
}
public
void
delArtistProductsCache
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
redisDataSourceUtil
.
getRedisKylinUtil
().
del
(
KylinRedisConst
.
ARTIST_PRODUCTS
+
artistId
);
}
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/SweetArtistCacheUtils.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
kylin
.
utils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.liquidnet.common.cache.redis.util.RedisDataSourceUtil
;
import
com.liquidnet.service.sweet.constant.SweetConstant
;
import
com.liquidnet.service.sweet.entity.SweetManualArtists
;
import
com.liquidnet.service.sweet.entity.SweetManualArtistsFive
;
import
com.liquidnet.service.sweet.entity.SweetManualArtistsMdsk
;
import
com.liquidnet.service.sweet.entity.SweetManualArtistsTfc
;
import
com.liquidnet.service.sweet.mapper.SweetManualArtistsFiveMapper
;
import
com.liquidnet.service.sweet.mapper.SweetManualArtistsMapper
;
import
com.liquidnet.service.sweet.mapper.SweetManualArtistsMdskMapper
;
import
com.liquidnet.service.sweet.mapper.SweetManualArtistsTfcMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* admin 修改 kylin 艺人后,失效 sweet 小程序相关 Redis 缓存
*/
@Slf4j
@Component
public
class
SweetArtistCacheUtils
{
@Autowired
private
RedisDataSourceUtil
redisDataSourceUtil
;
@Autowired
private
SweetManualArtistsMapper
sweetManualArtistsMapper
;
@Autowired
private
SweetManualArtistsMdskMapper
sweetManualArtistsMdskMapper
;
@Autowired
private
SweetManualArtistsTfcMapper
sweetManualArtistsTfcMapper
;
@Autowired
private
SweetManualArtistsFiveMapper
sweetManualArtistsFiveMapper
;
public
void
invalidateByArtistId
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
try
{
redisDataSourceUtil
.
getRedisSweetUtil
().
del
(
SweetConstant
.
REDIS_KEY_SWEET_ARTISTS_DETAILS
.
concat
(
artistId
));
invalidateManualTimeList
(
sweetManualArtistsMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetManualArtists
.
class
).
eq
(
SweetManualArtists:
:
getArtistsId
,
artistId
)
).
stream
().
map
(
SweetManualArtists:
:
getManualId
).
collect
(
Collectors
.
toSet
()),
SweetConstant
.
REDIS_KEY_SWEET_MANUAL_TIME_LIST
);
invalidateManualTimeList
(
sweetManualArtistsMdskMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetManualArtistsMdsk
.
class
).
eq
(
SweetManualArtistsMdsk:
:
getArtistsId
,
artistId
)
).
stream
().
map
(
SweetManualArtistsMdsk:
:
getManualId
).
collect
(
Collectors
.
toSet
()),
SweetConstant
.
REDIS_KEY_SWEET_MDSK_MANUAL_TIME_LIST
);
invalidateManualTimeList
(
sweetManualArtistsTfcMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetManualArtistsTfc
.
class
).
eq
(
SweetManualArtistsTfc:
:
getArtistsId
,
artistId
)
).
stream
().
map
(
SweetManualArtistsTfc:
:
getManualId
).
collect
(
Collectors
.
toSet
()),
SweetConstant
.
REDIS_KEY_SWEET_TFC_MANUAL_TIME_LIST
);
invalidateManualTimeList
(
sweetManualArtistsFiveMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetManualArtistsFive
.
class
).
eq
(
SweetManualArtistsFive:
:
getArtistsId
,
artistId
)
).
stream
().
map
(
SweetManualArtistsFive:
:
getManualId
).
collect
(
Collectors
.
toSet
()),
SweetConstant
.
REDIS_KEY_SWEET_FIVE_MANUAL_TIME_LIST
);
}
catch
(
Exception
e
)
{
log
.
error
(
"invalidate sweet artist cache failed, artistId={}"
,
artistId
,
e
);
}
}
private
void
invalidateManualTimeList
(
Set
<
String
>
manualIds
,
String
keyPrefix
)
{
if
(
manualIds
==
null
||
manualIds
.
isEmpty
())
{
return
;
}
for
(
String
manualId
:
new
HashSet
<>(
manualIds
))
{
if
(
manualId
!=
null
&&
!
manualId
.
isEmpty
())
{
redisDataSourceUtil
.
getRedisSweetUtil
().
del
(
keyPrefix
.
concat
(
manualId
));
}
}
}
}
liquidnet-bus-common/liquidnet-common-service-base/src/main/java/com/liquidnet/service/base/constant/RedisKeyExpireConst.java
View file @
cf4aa441
...
@@ -57,6 +57,9 @@ public class RedisKeyExpireConst {
...
@@ -57,6 +57,9 @@ public class RedisKeyExpireConst {
// 演出关联阵容缓存过期时间
// 演出关联阵容缓存过期时间
public
static
final
long
PERFORMANCES_ARTISTS_EXPIRE
=
30
*
24
*
60
*
60
;
public
static
final
long
PERFORMANCES_ARTISTS_EXPIRE
=
30
*
24
*
60
*
60
;
// C端艺人详情相关缓存过期时间
public
static
final
long
ARTIST_FRONT_CACHE_EXPIRE
=
30
*
24
*
60
*
60
;
/**
/**
* 演出关联收钱吧商品缓存过期时间 (30天)
* 演出关联收钱吧商品缓存过期时间 (30天)
*/
*/
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-kylin.yml
View file @
cf4aa441
...
@@ -161,6 +161,8 @@ global-auth:
...
@@ -161,6 +161,8 @@ global-auth:
-
${liquidnet.info.context}/health
-
${liquidnet.info.context}/health
# 演出阵容
# 演出阵容
-
${liquidnet.info.context}/performance/artists/**
-
${liquidnet.info.context}/performance/artists/**
# 艺人详情 C 端(无需登录)
-
${liquidnet.info.context}/artist/**
oncheck-url-pattern
:
oncheck-url-pattern
:
-
${liquidnet.info.context}/order/details
-
${liquidnet.info.context}/order/details
-
${liquidnet.info.context}/order/transfer*
-
${liquidnet.info.context}/order/transfer*
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinArtist.java
View file @
cf4aa441
...
@@ -36,6 +36,11 @@ public class KylinArtist implements Serializable, Cloneable {
...
@@ -36,6 +36,11 @@ public class KylinArtist implements Serializable, Cloneable {
*/
*/
private
String
artistName
;
private
String
artistName
;
/**
* 姓名拼音
*/
private
String
pinyin
;
/**
/**
* 艺人类型 1音乐人 2艺术家 3厂牌 4品牌方
* 艺人类型 1音乐人 2艺术家 3厂牌 4品牌方
*/
*/
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinArtistProduct.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* 艺人关联商品
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
KylinArtistProduct
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"mid"
,
type
=
IdType
.
AUTO
)
private
Long
mid
;
private
String
relationId
;
private
String
artistId
;
private
String
spuId
;
private
Integer
sort
;
private
Integer
status
;
private
LocalDateTime
createdAt
;
private
LocalDateTime
updatedAt
;
private
static
final
KylinArtistProduct
obj
=
new
KylinArtistProduct
();
public
static
KylinArtistProduct
getNew
()
{
try
{
return
(
KylinArtistProduct
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
KylinArtistProduct
();
}
}
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/mapper/KylinArtistProductMapper.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.liquidnet.service.kylin.entity.KylinArtistProduct
;
import
java.util.List
;
public
interface
KylinArtistProductMapper
extends
BaseMapper
<
KylinArtistProduct
>
{
List
<
KylinArtistProduct
>
selectByArtistId
(
String
artistId
);
int
deleteByArtistId
(
String
artistId
);
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinArtistMapper.xml
View file @
cf4aa441
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
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,
(SELECT COUNT(1) FROM kylin_artist_performance ap WHERE ap.artist_id = a.artist_id) as performance_count,
0
as product_count
(SELECT COUNT(1) FROM kylin_artist_product ap2 WHERE ap2.artist_id = a.artist_id AND ap2.status = 1)
as product_count
FROM kylin_artist a
FROM kylin_artist a
<where>
<where>
a.status = 1
a.status = 1
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinArtistProductMapper.xml
0 → 100644
View file @
cf4aa441
<?xml version="1.0" encoding="UTF-8"?>
<!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.KylinArtistProductMapper"
>
<select
id=
"selectByArtistId"
parameterType=
"java.lang.String"
resultType=
"com.liquidnet.service.kylin.entity.KylinArtistProduct"
>
SELECT mid, relation_id, artist_id, spu_id, sort, status, created_at, updated_at
FROM kylin_artist_product
WHERE artist_id = #{artistId} AND status = 1
ORDER BY sort DESC, mid DESC
</select>
<delete
id=
"deleteByArtistId"
parameterType=
"java.lang.String"
>
DELETE FROM kylin_artist_product
WHERE artist_id = #{artistId}
</delete>
</mapper>
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetManualArtistsFiveMapper.xml
View file @
cf4aa441
...
@@ -23,11 +23,11 @@
...
@@ -23,11 +23,11 @@
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.pinyin,
sa.pinyin,
sa.describes,
sa.
introduction as
describes,
sa.pic_url,
sa.
avatar_url as
pic_url,
ss.stage_id,
ss.stage_id,
ss.title,
ss.title,
performance_start,
performance_start,
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_Five as sma
from sweet_manual_artists_Five as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
<where>
<where>
sma.status = 1 and manual_id = #{manualId}
sma.status = 1 and manual_id = #{manualId}
...
@@ -45,8 +45,8 @@
...
@@ -45,8 +45,8 @@
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
ss.title,
ss.title,
ss.stage_id,
ss.stage_id,
performance_start,
performance_start,
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_Five as sma
from sweet_manual_artists_Five as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_relation_id = #{manualRelationId}
where manual_relation_id = #{manualRelationId}
</select>
</select>
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
select ss.title
select ss.title
from sweet_manual_artists_Five as sma
from sweet_manual_artists_Five as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
where sma.status = 1
and manual_id = #{manualId}
and manual_id = #{manualId}
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetManualArtistsMapper.xml
View file @
cf4aa441
...
@@ -23,11 +23,11 @@
...
@@ -23,11 +23,11 @@
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.pinyin,
sa.pinyin,
sa.describes,
sa.
introduction as
describes,
sa.pic_url,
sa.
avatar_url as
pic_url,
ss.stage_id,
ss.stage_id,
ss.title,
ss.title,
performance_start,
performance_start,
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists as sma
from sweet_manual_artists as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
<where>
<where>
sma.status = 1 and manual_id = #{manualId}
sma.status = 1 and manual_id = #{manualId}
...
@@ -45,8 +45,8 @@
...
@@ -45,8 +45,8 @@
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
ss.title,
ss.title,
ss.stage_id,
ss.stage_id,
performance_start,
performance_start,
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists as sma
from sweet_manual_artists as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_relation_id = #{manualRelationId}
where manual_relation_id = #{manualRelationId}
</select>
</select>
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
select ss.title
select ss.title
from sweet_manual_artists as sma
from sweet_manual_artists as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
where sma.status = 1
and manual_id = #{manualId}
and manual_id = #{manualId}
...
@@ -74,7 +74,7 @@
...
@@ -74,7 +74,7 @@
select ss.title, ss.stage_id
select ss.title, ss.stage_id
from sweet_manual_artists as sma
from sweet_manual_artists as sma
join sweet_manual as sm on sm.manual_id = sma.manual_id
join sweet_manual as sm on sm.manual_id = sma.manual_id
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
where sma.status = 1
and sm.performance_id = #{performanceId}
and sm.performance_id = #{performanceId}
...
@@ -82,11 +82,11 @@
...
@@ -82,11 +82,11 @@
</select>
</select>
<select
id=
"getManualListAr"
resultType=
"com.liquidnet.service.sweet.dto.SweetManualArtistListArDto"
>
<select
id=
"getManualListAr"
resultType=
"com.liquidnet.service.sweet.dto.SweetManualArtistListArDto"
>
select manual_relation_id,
select manual_relation_id,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.pinyin,
sa.pinyin,
sa.describes,
sa.
introduction as
describes,
sa.pic_url,
sa.
avatar_url as
pic_url,
ss.stage_id,
ss.stage_id,
ss.title,
ss.title,
performance_start,
performance_start,
...
@@ -95,7 +95,7 @@
...
@@ -95,7 +95,7 @@
signature_end
signature_end
from sweet_manual_artists as sma
from sweet_manual_artists as sma
join sweet_manual as sm on sm.manual_id = sma.manual_id
join sweet_manual as sm on sm.manual_id = sma.manual_id
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
<where>
<where>
sma.status = 1 and sm.performance_id = #{performanceId}
sma.status = 1 and sm.performance_id = #{performanceId}
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetManualArtistsMdskMapper.xml
View file @
cf4aa441
...
@@ -23,11 +23,11 @@
...
@@ -23,11 +23,11 @@
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.pinyin,
sa.pinyin,
sa.describes,
sa.
introduction as
describes,
sa.pic_url,
sa.
avatar_url as
pic_url,
ss.stage_id,
ss.stage_id,
ss.title,
ss.title,
performance_start,
performance_start,
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_mdsk as sma
from sweet_manual_artists_mdsk as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
<where>
<where>
sma.status = 1 and manual_id = #{manualId}
sma.status = 1 and manual_id = #{manualId}
...
@@ -45,8 +45,8 @@
...
@@ -45,8 +45,8 @@
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
ss.title,
ss.title,
ss.stage_id,
ss.stage_id,
performance_start,
performance_start,
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_mdsk as sma
from sweet_manual_artists_mdsk as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_relation_id = #{manualRelationId}
where manual_relation_id = #{manualRelationId}
</select>
</select>
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
select ss.title
select ss.title
from sweet_manual_artists_mdsk as sma
from sweet_manual_artists_mdsk as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
where sma.status = 1
and manual_id = #{manualId}
and manual_id = #{manualId}
...
...
liquidnet-bus-do/liquidnet-service-sweet-do/src/main/resources/com.liquidnet.service.sweet.mapper/SweetManualArtistsTfcMapper.xml
View file @
cf4aa441
...
@@ -23,11 +23,11 @@
...
@@ -23,11 +23,11 @@
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualList"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.pinyin,
sa.pinyin,
sa.describes,
sa.
introduction as
describes,
sa.pic_url,
sa.
avatar_url as
pic_url,
ss.stage_id,
ss.stage_id,
ss.title,
ss.title,
performance_start,
performance_start,
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_tfc as sma
from sweet_manual_artists_tfc as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
<where>
<where>
sma.status = 1 and manual_id = #{manualId}
sma.status = 1 and manual_id = #{manualId}
...
@@ -45,8 +45,8 @@
...
@@ -45,8 +45,8 @@
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
<select
id=
"getManualDetails"
parameterType=
"java.util.Map"
resultMap=
"getManualListResult"
>
select manual_relation_id,
select manual_relation_id,
sa.`
name`
,
sa.`
artist_name` as name
,
sa.`artist
s_id`
,
sa.`artist
_id` as artists_id
,
ss.title,
ss.title,
ss.stage_id,
ss.stage_id,
performance_start,
performance_start,
...
@@ -54,7 +54,7 @@
...
@@ -54,7 +54,7 @@
signature_start,
signature_start,
signature_end
signature_end
from sweet_manual_artists_tfc as sma
from sweet_manual_artists_tfc as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where manual_relation_id = #{manualRelationId}
where manual_relation_id = #{manualRelationId}
</select>
</select>
...
@@ -62,7 +62,7 @@
...
@@ -62,7 +62,7 @@
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
<select
id=
"getStageNameList"
parameterType=
"java.util.Map"
resultMap=
"getStageNameListResult"
>
select ss.title
select ss.title
from sweet_manual_artists_tfc as sma
from sweet_manual_artists_tfc as sma
left join
sweet_artists as sa on sa.artists
_id = sma.artists_id
left join
kylin_artist as sa on sa.artist
_id = sma.artists_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
left join sweet_stage as ss on ss.stage_id = sma.stage_id
where sma.status = 1
where sma.status = 1
and manual_id = #{manualId}
and manual_id = #{manualId}
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinArtistController.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistDetailFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistPerformanceFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistProductFrontVo
;
import
com.liquidnet.service.kylin.service.IKylinArtistFrontService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@Api
(
tags
=
"前端-艺人"
)
@RestController
@RequestMapping
(
"artist"
)
@Slf4j
public
class
KylinArtistController
{
@Autowired
private
IKylinArtistFrontService
kylinArtistFrontService
;
@GetMapping
(
"detail/{artistId}"
)
@ApiOperation
(
"艺人详情(简介)"
)
@ApiImplicitParam
(
type
=
"path"
,
dataType
=
"String"
,
name
=
"artistId"
,
value
=
"艺人ID"
,
required
=
true
)
public
ResponseDto
<
KylinArtistDetailFrontVo
>
detail
(
@PathVariable
String
artistId
)
{
KylinArtistDetailFrontVo
vo
=
kylinArtistFrontService
.
getArtistDetail
(
artistId
);
if
(
vo
==
null
)
{
return
ResponseDto
.
failure
(
"艺人不存在"
);
}
return
ResponseDto
.
success
(
vo
);
}
@GetMapping
(
"{artistId}/album"
)
@ApiOperation
(
"艺人相册"
)
@ApiImplicitParam
(
type
=
"path"
,
dataType
=
"String"
,
name
=
"artistId"
,
value
=
"艺人ID"
,
required
=
true
)
public
ResponseDto
<
List
<
String
>>
album
(
@PathVariable
String
artistId
)
{
return
ResponseDto
.
success
(
kylinArtistFrontService
.
getArtistAlbum
(
artistId
));
}
@GetMapping
(
"{artistId}/performances"
)
@ApiOperation
(
"艺人关联演出(未开售/已开售,不含已结束)"
)
@ApiImplicitParam
(
type
=
"path"
,
dataType
=
"String"
,
name
=
"artistId"
,
value
=
"艺人ID"
,
required
=
true
)
public
ResponseDto
<
List
<
KylinArtistPerformanceFrontVo
>>
performances
(
@PathVariable
String
artistId
)
{
return
ResponseDto
.
success
(
kylinArtistFrontService
.
getArtistPerformances
(
artistId
));
}
@GetMapping
(
"{artistId}/products"
)
@ApiOperation
(
"艺人关联商品"
)
@ApiImplicitParam
(
type
=
"path"
,
dataType
=
"String"
,
name
=
"artistId"
,
value
=
"艺人ID"
,
required
=
true
)
public
ResponseDto
<
List
<
KylinArtistProductFrontVo
>>
products
(
@PathVariable
String
artistId
)
{
return
ResponseDto
.
success
(
kylinArtistFrontService
.
getArtistProducts
(
artistId
));
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinArtistFrontServiceImpl.java
0 → 100644
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.dao.KylinArtistPerformanceDao
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistDetailFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistPerformanceFrontVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinArtistProductFrontVo
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
import
com.liquidnet.service.kylin.entity.KylinArtistAlbum
;
import
com.liquidnet.service.kylin.entity.KylinArtistProduct
;
import
com.liquidnet.service.kylin.mapper.KylinArtistAlbumMapper
;
import
com.liquidnet.service.kylin.mapper.KylinArtistMapper
;
import
com.liquidnet.service.kylin.mapper.KylinArtistPerformanceMapper
;
import
com.liquidnet.service.kylin.mapper.KylinArtistProductMapper
;
import
com.liquidnet.service.kylin.service.IKylinArtistFrontService
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.GoblinRedisUtils
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.math.BigDecimal
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
KylinArtistFrontServiceImpl
implements
IKylinArtistFrontService
{
@Autowired
private
KylinArtistMapper
kylinArtistMapper
;
@Autowired
private
KylinArtistAlbumMapper
kylinArtistAlbumMapper
;
@Autowired
private
KylinArtistPerformanceMapper
kylinArtistPerformanceMapper
;
@Autowired
private
KylinArtistProductMapper
kylinArtistProductMapper
;
@Autowired
private
DataUtils
dataUtils
;
@Autowired
private
GoblinRedisUtils
goblinRedisUtils
;
@Autowired
private
KylinPerformancesServiceImpl
kylinPerformancesService
;
@Override
public
KylinArtistDetailFrontVo
getArtistDetail
(
String
artistId
)
{
String
cacheKey
=
KylinRedisConst
.
ARTIST_DETAIL
+
artistId
;
KylinArtistDetailFrontVo
cached
=
dataUtils
.
getArtistFrontCache
(
cacheKey
);
if
(
cached
!=
null
)
{
return
cached
;
}
KylinArtist
artist
=
loadArtistForFront
(
artistId
);
if
(
artist
==
null
)
{
return
null
;
}
KylinArtistDetailFrontVo
vo
=
new
KylinArtistDetailFrontVo
();
vo
.
setArtistId
(
artist
.
getArtistId
());
vo
.
setArtistName
(
artist
.
getArtistName
());
vo
.
setArtistType
(
artist
.
getArtistType
());
vo
.
setArtistTypeName
(
resolveArtistTypeName
(
artist
.
getArtistType
()));
vo
.
setAvatarUrl
(
artist
.
getAvatarUrl
());
vo
.
setIntroduction
(
artist
.
getIntroduction
());
dataUtils
.
setArtistFrontCache
(
cacheKey
,
vo
);
return
vo
;
}
@Override
public
List
<
String
>
getArtistAlbum
(
String
artistId
)
{
String
cacheKey
=
KylinRedisConst
.
ARTIST_ALBUM
+
artistId
;
List
<
String
>
cached
=
dataUtils
.
getArtistFrontCache
(
cacheKey
);
if
(
cached
!=
null
)
{
return
cached
;
}
List
<
KylinArtistAlbum
>
albumList
=
kylinArtistAlbumMapper
.
selectByArtistId
(
artistId
);
List
<
String
>
imageUrls
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
albumList
))
{
imageUrls
=
albumList
.
stream
().
map
(
KylinArtistAlbum:
:
getImageUrl
).
collect
(
Collectors
.
toList
());
}
dataUtils
.
setArtistFrontCache
(
cacheKey
,
imageUrls
);
return
imageUrls
;
}
@Override
public
List
<
KylinArtistPerformanceFrontVo
>
getArtistPerformances
(
String
artistId
)
{
String
cacheKey
=
KylinRedisConst
.
ARTIST_PERFORMANCES
+
artistId
;
List
<
KylinArtistPerformanceDao
>
baseList
=
dataUtils
.
getArtistFrontCache
(
cacheKey
);
if
(
baseList
==
null
)
{
baseList
=
loadPerformanceBaseList
(
artistId
);
dataUtils
.
setArtistFrontCache
(
cacheKey
,
baseList
);
}
return
buildPerformanceFrontList
(
baseList
);
}
@Override
public
List
<
KylinArtistProductFrontVo
>
getArtistProducts
(
String
artistId
)
{
String
cacheKey
=
KylinRedisConst
.
ARTIST_PRODUCTS
+
artistId
;
List
<
KylinArtistProduct
>
baseList
=
dataUtils
.
getArtistFrontCache
(
cacheKey
);
if
(
baseList
==
null
)
{
baseList
=
loadProductRelationBaseList
(
artistId
);
dataUtils
.
setArtistFrontCache
(
cacheKey
,
baseList
);
}
return
buildProductFrontList
(
baseList
);
}
private
List
<
KylinArtistProduct
>
loadProductRelationBaseList
(
String
artistId
)
{
List
<
KylinArtistProduct
>
relations
=
kylinArtistProductMapper
.
selectByArtistId
(
artistId
);
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
return
new
ArrayList
<>();
}
return
relations
;
}
private
List
<
KylinArtistPerformanceDao
>
loadPerformanceBaseList
(
String
artistId
)
{
List
<
KylinArtistPerformanceDao
>
performanceList
=
kylinArtistPerformanceMapper
.
selectPerformanceDaoByArtistId
(
artistId
);
if
(
CollectionUtils
.
isEmpty
(
performanceList
))
{
return
new
ArrayList
<>();
}
Map
<
String
,
KylinArtistPerformanceDao
>
dedup
=
new
LinkedHashMap
<>();
for
(
KylinArtistPerformanceDao
item
:
performanceList
)
{
dedup
.
putIfAbsent
(
item
.
getPerformanceId
(),
item
);
}
return
new
ArrayList
<>(
dedup
.
values
());
}
private
List
<
KylinArtistPerformanceFrontVo
>
buildPerformanceFrontList
(
List
<
KylinArtistPerformanceDao
>
baseList
)
{
List
<
KylinArtistPerformanceFrontVo
>
result
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
baseList
))
{
return
result
;
}
for
(
KylinArtistPerformanceDao
item
:
baseList
)
{
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
item
.
getPerformanceId
());
if
(
performanceVo
==
null
)
{
continue
;
}
performanceVo
=
kylinPerformancesService
.
checkAppStatusInfo
(
performanceVo
);
Integer
appStatus
=
performanceVo
.
getAppStatus
();
if
(
appStatus
==
null
||
appStatus
==
10
||
appStatus
==
7
||
appStatus
==
3
||
appStatus
==
11
)
{
continue
;
}
if
(
appStatus
!=
6
&&
appStatus
!=
9
&&
appStatus
!=
8
)
{
continue
;
}
KylinArtistPerformanceFrontVo
vo
=
new
KylinArtistPerformanceFrontVo
();
vo
.
setPerformanceId
(
item
.
getPerformanceId
());
vo
.
setTitle
(
item
.
getTitle
());
vo
.
setCoverPic
(
performanceVo
.
getImgPoster
());
vo
.
setTimeStart
(
item
.
getTimeStart
());
vo
.
setAppStatus
(
appStatus
==
8
?
6
:
appStatus
);
vo
.
setStatusName
(
KylinPerformanceStatusEnum
.
getName
(
appStatus
));
result
.
add
(
vo
);
}
return
result
;
}
private
List
<
KylinArtistProductFrontVo
>
buildProductFrontList
(
List
<
KylinArtistProduct
>
relations
)
{
List
<
KylinArtistProductFrontVo
>
result
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
return
result
;
}
for
(
KylinArtistProduct
relation
:
relations
)
{
GoblinGoodsInfoVo
goods
=
goblinRedisUtils
.
getGoodsInfoVo
(
relation
.
getSpuId
());
if
(
goods
==
null
||
!
"0"
.
equals
(
goods
.
getDelFlg
())
||
!
"3"
.
equals
(
goods
.
getShelvesStatus
()))
{
continue
;
}
KylinArtistProductFrontVo
vo
=
new
KylinArtistProductFrontVo
();
vo
.
setSpuId
(
goods
.
getSpuId
());
vo
.
setName
(
goods
.
getName
());
vo
.
setCoverPic
(
goods
.
getCoverPic
());
vo
.
setSellPrice
(
resolveGoodsSellPrice
(
goods
));
vo
.
setSort
(
relation
.
getSort
());
result
.
add
(
vo
);
}
return
result
;
}
/**
* SPU sellPrice 常为空,与 goblin 前台一致:SKU 最低价 → priceGe → priceLe
*/
private
BigDecimal
resolveGoodsSellPrice
(
GoblinGoodsInfoVo
goodsInfoVo
)
{
if
(
goodsInfoVo
==
null
)
{
return
null
;
}
if
(
goodsInfoVo
.
getSellPrice
()
!=
null
)
{
return
goodsInfoVo
.
getSellPrice
();
}
BigDecimal
minSkuPrice
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getSkuIdList
()))
{
for
(
String
skuId
:
goodsInfoVo
.
getSkuIdList
())
{
GoblinGoodsSkuInfoVo
skuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
skuId
);
if
(
skuInfoVo
==
null
)
{
continue
;
}
BigDecimal
skuShowPrice
=
skuInfoVo
.
getSellPrice
()
!=
null
?
skuInfoVo
.
getSellPrice
()
:
skuInfoVo
.
getPrice
();
if
(
skuShowPrice
==
null
)
{
continue
;
}
if
(
minSkuPrice
==
null
||
skuShowPrice
.
compareTo
(
minSkuPrice
)
<
0
)
{
minSkuPrice
=
skuShowPrice
;
}
}
}
if
(
minSkuPrice
!=
null
)
{
return
minSkuPrice
;
}
if
(
goodsInfoVo
.
getPriceGe
()
!=
null
)
{
return
goodsInfoVo
.
getPriceGe
();
}
return
goodsInfoVo
.
getPriceLe
();
}
/**
* 简介详情用:按 artist_id 查 kylin_artist(不按 status 过滤)
*/
private
KylinArtist
loadArtistForFront
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
null
;
}
return
kylinArtistMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
KylinArtist
.
class
).
eq
(
KylinArtist:
:
getArtistId
,
artistId
)
);
}
private
String
resolveArtistTypeName
(
Integer
artistType
)
{
if
(
artistType
==
null
)
{
return
"未知"
;
}
switch
(
artistType
)
{
case
1
:
return
"音乐人"
;
case
2
:
return
"艺术家"
;
case
3
:
return
"厂牌"
;
case
4
:
return
"品牌方"
;
default
:
return
"未知"
;
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
cf4aa441
...
@@ -1782,4 +1782,23 @@ public class DataUtils {
...
@@ -1782,4 +1782,23 @@ public class DataUtils {
final
String
redisKey
=
KylinRedisConst
.
PERFORMANCES_ARTISTS
+
performancesId
;
final
String
redisKey
=
KylinRedisConst
.
PERFORMANCES_ARTISTS
+
performancesId
;
redisUtil
.
set
(
redisKey
,
artistLineupVos
,
RedisKeyExpireConst
.
PERFORMANCES_ARTISTS_EXPIRE
);
redisUtil
.
set
(
redisKey
,
artistLineupVos
,
RedisKeyExpireConst
.
PERFORMANCES_ARTISTS_EXPIRE
);
}
}
public
void
delArtistCache
(
String
artistId
)
{
if
(
artistId
==
null
||
artistId
.
isEmpty
())
{
return
;
}
redisUtil
.
del
(
KylinRedisConst
.
ARTIST_DETAIL
+
artistId
);
redisUtil
.
del
(
KylinRedisConst
.
ARTIST_ALBUM
+
artistId
);
redisUtil
.
del
(
KylinRedisConst
.
ARTIST_PERFORMANCES
+
artistId
);
redisUtil
.
del
(
KylinRedisConst
.
ARTIST_PRODUCTS
+
artistId
);
}
@SuppressWarnings
(
"unchecked"
)
public
<
T
>
T
getArtistFrontCache
(
String
redisKey
)
{
return
(
T
)
redisUtil
.
get
(
redisKey
);
}
public
void
setArtistFrontCache
(
String
redisKey
,
Object
value
)
{
redisUtil
.
set
(
redisKey
,
value
,
RedisKeyExpireConst
.
ARTIST_FRONT_CACHE_EXPIRE
);
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/pom.xml
View file @
cf4aa441
...
@@ -85,6 +85,12 @@
...
@@ -85,6 +85,12 @@
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
<scope>
compile
</scope>
</dependency>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-kylin-do
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-mongodb
</artifactId>
<artifactId>
spring-data-mongodb
</artifactId>
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetArtistsController.java
View file @
cf4aa441
...
@@ -4,12 +4,7 @@ package com.liquidnet.service.sweet.controller;
...
@@ -4,12 +4,7 @@ package com.liquidnet.service.sweet.controller;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.entity.SweetArtists
;
import
com.liquidnet.service.sweet.entity.SweetArtists
;
import
com.liquidnet.service.sweet.entity.SweetArtistsList
;
import
com.liquidnet.service.sweet.entity.SweetArtistsUrl
;
import
com.liquidnet.service.sweet.entity.SweetStage
;
import
com.liquidnet.service.sweet.param.SweetArtistsListParam
;
import
com.liquidnet.service.sweet.service.ISweetArtistsService
;
import
com.liquidnet.service.sweet.service.ISweetArtistsService
;
import
com.liquidnet.service.sweet.service.ISweetStageService
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
...
@@ -18,11 +13,9 @@ import io.swagger.annotations.ApiOperation;
...
@@ -18,11 +13,9 @@ 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>
* 艺人表 前端控制器
* 艺人表 前端控制器
(读 kylin_artist,写已迁移至 admin /kylin/artist)
* </p>
* </p>
*
*
* @author liquidnet
* @author liquidnet
...
@@ -49,20 +42,6 @@ public class SweetArtistsController {
...
@@ -49,20 +42,6 @@ public class SweetArtistsController {
return
sweetArtistsService
.
getList
(
page
,
size
,
name
);
return
sweetArtistsService
.
getList
(
page
,
size
,
name
);
}
}
@PostMapping
(
"add"
)
@ApiOperation
(
"添加艺人"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"picUrl"
,
value
=
"封面图片"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"name"
,
value
=
"艺人姓名"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"pinyin"
,
value
=
"姓名拼音"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"describes"
,
value
=
"艺人简介"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String[]"
,
name
=
"picArray"
,
value
=
"图片数组"
,
required
=
false
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String[]"
,
name
=
"videoArray"
,
value
=
"视频数组"
,
required
=
false
)
})
public
ResponseDto
<
Boolean
>
add
(
SweetArtistsListParam
sweetArtistsList
)
{
return
sweetArtistsService
.
add
(
sweetArtistsList
);
}
@GetMapping
(
"detail"
)
@GetMapping
(
"detail"
)
@ApiOperation
(
"艺人详情"
)
@ApiOperation
(
"艺人详情"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
@@ -71,28 +50,4 @@ public class SweetArtistsController {
...
@@ -71,28 +50,4 @@ public class SweetArtistsController {
public
ResponseDto
<
SweetArtistsVo
>
detail
(
@RequestParam
()
String
artistsId
)
{
public
ResponseDto
<
SweetArtistsVo
>
detail
(
@RequestParam
()
String
artistsId
)
{
return
sweetArtistsService
.
detail
(
artistsId
);
return
sweetArtistsService
.
detail
(
artistsId
);
}
}
@PostMapping
(
"change"
)
@ApiOperation
(
"修改艺人"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"picUrl"
,
value
=
"封面图片"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"artistsId"
,
value
=
"艺人Id"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"name"
,
value
=
"艺人姓名"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"pinyin"
,
value
=
"姓名拼音"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"describes"
,
value
=
"艺人简介"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String[]"
,
name
=
"picArray"
,
value
=
"图片数组"
,
required
=
false
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String[]"
,
name
=
"videoArray"
,
value
=
"视频数组"
,
required
=
false
)
})
public
ResponseDto
<
Boolean
>
change
(
@RequestParam
()
String
artistsId
,
SweetArtistsListParam
sweetArtistsList
)
{
return
sweetArtistsService
.
change
(
artistsId
,
sweetArtistsList
);
}
@GetMapping
(
"del"
)
@ApiOperation
(
"删除艺人"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"artistsId"
,
value
=
"艺人Id"
,
required
=
true
),
})
public
ResponseDto
<
SweetArtists
>
del
(
@RequestParam
()
String
artistsId
)
{
return
sweetArtistsService
.
del
(
artistsId
);
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetArtistsServiceImpl.java
View file @
cf4aa441
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.commons.lang.util.BeanUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.
sweet.dto.SweetManualArtistList2Dto
;
import
com.liquidnet.service.
kylin.entity.KylinArtist
;
import
com.liquidnet.service.
sweet.dto.SweetManualArtistListDto
;
import
com.liquidnet.service.
kylin.mapper.KylinArtistMapper
;
import
com.liquidnet.service.sweet.
dto.SweetManualArtistStageListDto
;
import
com.liquidnet.service.sweet.
entity.SweetArtists
;
import
com.liquidnet.service.sweet.entity.
*
;
import
com.liquidnet.service.sweet.entity.
SweetArtistsUrl
;
import
com.liquidnet.service.sweet.mapper.SweetArtistsMapper
;
import
com.liquidnet.service.sweet.mapper.SweetArtistsMapper
;
import
com.liquidnet.service.sweet.mapper.SweetArtistsUrlMapper
;
import
com.liquidnet.service.sweet.mapper.SweetArtistsUrlMapper
;
import
com.liquidnet.service.sweet.mapper.SweetManualArtistsMapper
;
import
com.liquidnet.service.sweet.mapper.SweetStageMapper
;
import
com.liquidnet.service.sweet.param.SweetArtistsListParam
;
import
com.liquidnet.service.sweet.service.ISweetArtistsService
;
import
com.liquidnet.service.sweet.service.ISweetArtistsService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
import
com.liquidnet.service.sweet.vo.SweetArtistsVo
;
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
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* <p>
* <p>
* 艺人表 服务实现类
* 艺人表 服务实现类
(读 kylin_artist,写已迁移至 admin)
* </p>
* </p>
*
*
* @author liquidnet
* @author liquidnet
...
@@ -43,142 +34,74 @@ import java.util.List;
...
@@ -43,142 +34,74 @@ import java.util.List;
public
class
SweetArtistsServiceImpl
extends
ServiceImpl
<
SweetArtistsMapper
,
SweetArtists
>
implements
ISweetArtistsService
{
public
class
SweetArtistsServiceImpl
extends
ServiceImpl
<
SweetArtistsMapper
,
SweetArtists
>
implements
ISweetArtistsService
{
@Autowired
@Autowired
private
SweetArtistsMapper
sweetArtistsMapper
;
private
KylinArtistMapper
kylinArtistMapper
;
@Autowired
private
SweetManualArtistsMapper
sweetManualArtistsMapper
;
@Autowired
private
RedisDataUtils
redisDataUtils
;
@Autowired
@Autowired
private
SweetArtistsUrlMapper
sweetArtistsUrlMapper
;
private
SweetArtistsUrlMapper
sweetArtistsUrlMapper
;
@Override
@Override
public
ResponseDto
<
PageInfo
<
SweetArtists
>>
getList
(
int
page
,
int
size
,
String
name
)
{
public
ResponseDto
<
PageInfo
<
SweetArtists
>>
getList
(
int
page
,
int
size
,
String
name
)
{
PageInfo
<
SweetArtists
>
pageInfo
=
null
;
PageInfo
<
SweetArtists
>
pageInfo
=
null
;
try
{
try
{
List
<
SweetArtists
>
data
;
PageHelper
.
startPage
(
page
,
size
);
PageHelper
.
startPage
(
page
,
size
);
if
(
name
!=
null
)
{
List
<
KylinArtist
>
kylinList
;
data
=
sweetArtistsMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetArtists
.
class
).
like
(
SweetArtists:
:
getName
,
name
));
if
(
name
!=
null
&&
!
name
.
isEmpty
())
{
kylinList
=
kylinArtistMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
KylinArtist
.
class
)
.
like
(
KylinArtist:
:
getArtistName
,
name
)
.
eq
(
KylinArtist:
:
getStatus
,
1
)
.
orderByDesc
(
KylinArtist:
:
getSort
)
.
orderByDesc
(
KylinArtist:
:
getCreatedAt
)
);
}
else
{
}
else
{
data
=
sweetArtistsMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetArtists
.
class
));
kylinList
=
kylinArtistMapper
.
selectList
(
}
Wrappers
.
lambdaQuery
(
KylinArtist
.
class
)
.
eq
(
KylinArtist:
:
getStatus
,
1
)
.
orderByDesc
(
KylinArtist:
:
getSort
)
.
orderByDesc
(
KylinArtist:
:
getCreatedAt
)
);
}
List
<
SweetArtists
>
data
=
kylinList
.
stream
().
map
(
this
::
toSweetArtists
).
collect
(
Collectors
.
toList
());
pageInfo
=
new
PageInfo
(
data
);
pageInfo
=
new
PageInfo
(
data
);
return
ResponseDto
.
success
(
pageInfo
);
return
ResponseDto
.
success
(
pageInfo
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"getList error"
,
e
);
return
ResponseDto
.
success
(
pageInfo
);
return
ResponseDto
.
success
(
pageInfo
);
}
}
}
}
@Override
@Transactional
public
ResponseDto
<
Boolean
>
add
(
SweetArtistsListParam
sweetArtistsList
)
{
try
{
String
mid
=
IDGenerator
.
nextSnowId
();
LocalDateTime
time
=
LocalDateTime
.
now
();
SweetArtistsUrl
sweetArtistsUrl
=
SweetArtistsUrl
.
getNew
();
SweetArtists
sweetArtists
=
SweetArtists
.
getNew
();
sweetArtists
.
setArtistsId
(
mid
);
sweetArtists
.
setName
(
sweetArtistsList
.
getName
());
sweetArtists
.
setPinyin
(
sweetArtistsList
.
getPinyin
());
sweetArtists
.
setDescribes
(
sweetArtistsList
.
getDescribes
());
sweetArtists
.
setPicUrl
(
sweetArtistsList
.
getPicUrl
());
sweetArtists
.
setCreatedAt
(
time
);
sweetArtists
.
setUpdatdAt
(
time
);
sweetArtistsMapper
.
insert
(
sweetArtists
);
sweetArtistsUrl
.
setArtistsId
(
mid
);
sweetArtistsUrl
.
setCreatedAt
(
time
);
if
(
sweetArtistsList
.
getPicArray
()
!=
null
)
{
for
(
String
img
:
sweetArtistsList
.
getPicArray
())
{
sweetArtistsUrl
.
setUrl
(
img
);
sweetArtistsUrl
.
setType
(
"1"
);
sweetArtistsUrlMapper
.
insert
(
sweetArtistsUrl
);
}
}
if
(
sweetArtistsList
.
getVideoArray
()
!=
null
)
{
for
(
String
video
:
sweetArtistsList
.
getVideoArray
())
{
sweetArtistsUrl
.
setUrl
(
video
);
sweetArtistsUrl
.
setType
(
"2"
);
sweetArtistsUrlMapper
.
insert
(
sweetArtistsUrl
);
}
}
return
ResponseDto
.
success
();
}
catch
(
Exception
e
)
{
return
ResponseDto
.
failure
();
}
}
@Override
@Override
public
ResponseDto
<
SweetArtistsVo
>
detail
(
String
artistsId
)
{
public
ResponseDto
<
SweetArtistsVo
>
detail
(
String
artistsId
)
{
try
{
try
{
SweetArtistsVo
vo
=
SweetArtistsVo
.
getNew
();
SweetArtistsVo
vo
=
SweetArtistsVo
.
getNew
();
SweetArtists
sweetArtists
=
sweetArtistsMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
SweetArtists
.
class
).
eq
(
SweetArtists:
:
getArtistsId
,
artistsId
));
KylinArtist
kylinArtist
=
kylinArtistMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
KylinArtist
.
class
)
BeanUtils
.
copyProperties
(
sweetArtists
,
vo
);
.
eq
(
KylinArtist:
:
getArtistId
,
artistsId
)
List
<
SweetArtistsUrl
>
sweetArtistsUrl
=
sweetArtistsUrlMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetArtistsUrl
.
class
).
eq
(
SweetArtistsUrl:
:
getArtistsId
,
artistsId
));
);
if
(
kylinArtist
==
null
)
{
return
ResponseDto
.
failure
();
}
BeanUtils
.
copyProperties
(
toSweetArtists
(
kylinArtist
),
vo
);
List
<
SweetArtistsUrl
>
sweetArtistsUrl
=
sweetArtistsUrlMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetArtistsUrl
.
class
).
eq
(
SweetArtistsUrl:
:
getArtistsId
,
artistsId
)
);
vo
.
setSweetArtistsUrl
(
sweetArtistsUrl
);
vo
.
setSweetArtistsUrl
(
sweetArtistsUrl
);
return
ResponseDto
.
success
(
vo
);
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"
==
"
,
e
);
log
.
error
(
"
detail error
"
,
e
);
return
ResponseDto
.
failure
();
return
ResponseDto
.
failure
();
}
}
}
}
@Override
private
SweetArtists
toSweetArtists
(
KylinArtist
kylinArtist
)
{
@Transactional
public
ResponseDto
<
Boolean
>
change
(
String
artistsId
,
SweetArtistsListParam
sweetArtistsList
)
{
try
{
LocalDateTime
time
=
LocalDateTime
.
now
();
SweetArtists
sweetArtists
=
SweetArtists
.
getNew
();
SweetArtists
sweetArtists
=
SweetArtists
.
getNew
();
sweetArtists
.
setName
(
sweetArtistsList
.
getName
());
sweetArtists
.
setArtistsId
(
kylinArtist
.
getArtistId
());
sweetArtists
.
setPinyin
(
sweetArtistsList
.
getPinyin
());
sweetArtists
.
setName
(
kylinArtist
.
getArtistName
());
sweetArtists
.
setPicUrl
(
sweetArtistsList
.
getPicUrl
());
sweetArtists
.
setPinyin
(
kylinArtist
.
getPinyin
());
sweetArtists
.
setDescribes
(
sweetArtistsList
.
getDescribes
());
sweetArtists
.
setDescribes
(
kylinArtist
.
getIntroduction
());
sweetArtists
.
setUpdatdAt
(
time
);
sweetArtists
.
setPicUrl
(
kylinArtist
.
getAvatarUrl
());
SweetArtistsUrl
sweetArtistsUrl
=
SweetArtistsUrl
.
getNew
();
sweetArtists
.
setStatus
(
kylinArtist
.
getStatus
());
sweetArtistsUrl
.
setCreatedAt
(
time
);
sweetArtists
.
setCreatedAt
(
kylinArtist
.
getCreatedAt
());
sweetArtistsMapper
.
update
(
sweetArtists
,
Wrappers
.
lambdaUpdate
(
SweetArtists
.
class
).
eq
(
SweetArtists:
:
getArtistsId
,
artistsId
));
sweetArtists
.
setUpdatdAt
(
kylinArtist
.
getUpdatedAt
());
//更新关联表
return
sweetArtists
;
sweetArtistsUrlMapper
.
delete
(
Wrappers
.
lambdaQuery
(
SweetArtistsUrl
.
class
).
eq
(
SweetArtistsUrl:
:
getArtistsId
,
artistsId
));
sweetArtistsUrl
.
setArtistsId
(
artistsId
);
sweetArtistsUrl
.
setCreatedAt
(
time
);
for
(
String
img
:
sweetArtistsList
.
getPicArray
())
{
sweetArtistsUrl
.
setUrl
(
img
);
sweetArtistsUrl
.
setType
(
"1"
);
sweetArtistsUrlMapper
.
insert
(
sweetArtistsUrl
);
}
String
[]
videoArray
=
sweetArtistsList
.
getVideoArray
();
if
(
null
!=
videoArray
&&
videoArray
.
length
>
0
)
{
for
(
String
video
:
sweetArtistsList
.
getVideoArray
())
{
sweetArtistsUrl
.
setUrl
(
video
);
sweetArtistsUrl
.
setType
(
"2"
);
sweetArtistsUrlMapper
.
insert
(
sweetArtistsUrl
);
}
}
List
<
SweetManualArtists
>
data
=
sweetManualArtistsMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
SweetManualArtists
.
class
).
eq
(
SweetManualArtists:
:
getArtistsId
,
artistsId
));
for
(
SweetManualArtists
item
:
data
)
{
redisDataUtils
.
deleteTimeListRedisData
(
item
.
getManualId
());
}
return
ResponseDto
.
success
();
}
catch
(
Exception
e
)
{
log
.
error
(
"sweetArtistsChangeExc"
,
e
);
log
.
error
(
"sweetArtistsChangeE [e:{}]"
,
e
);
return
ResponseDto
.
failure
();
}
}
}
@Override
@Transactional
public
ResponseDto
<
SweetArtists
>
del
(
String
artistsId
)
{
try
{
sweetArtistsMapper
.
delete
(
Wrappers
.
lambdaQuery
(
SweetArtists
.
class
).
eq
(
SweetArtists:
:
getArtistsId
,
artistsId
));
sweetArtistsUrlMapper
.
delete
(
Wrappers
.
lambdaQuery
(
SweetArtistsUrl
.
class
).
eq
(
SweetArtistsUrl:
:
getArtistsId
,
artistsId
));
return
ResponseDto
.
success
();
}
catch
(
Exception
e
)
{
return
ResponseDto
.
failure
();
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/RedisDataUtils.java
View file @
cf4aa441
...
@@ -15,6 +15,8 @@ import com.liquidnet.service.base.constant.MQConst;
...
@@ -15,6 +15,8 @@ import com.liquidnet.service.base.constant.MQConst;
import
com.liquidnet.service.base.constant.RedisKeyExpireConst
;
import
com.liquidnet.service.base.constant.RedisKeyExpireConst
;
import
com.liquidnet.service.feign.slime.api.FeignSlimeApiClient
;
import
com.liquidnet.service.feign.slime.api.FeignSlimeApiClient
;
import
com.liquidnet.service.slime.dto.vo.SlimeFieldsDetailsVo
;
import
com.liquidnet.service.slime.dto.vo.SlimeFieldsDetailsVo
;
import
com.liquidnet.service.kylin.entity.KylinArtist
;
import
com.liquidnet.service.kylin.mapper.KylinArtistMapper
;
import
com.liquidnet.service.sweet.constant.SweetConstant
;
import
com.liquidnet.service.sweet.constant.SweetConstant
;
import
com.liquidnet.service.sweet.dto.*
;
import
com.liquidnet.service.sweet.dto.*
;
import
com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam
;
import
com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam
;
...
@@ -58,7 +60,7 @@ public class RedisDataUtils {
...
@@ -58,7 +60,7 @@ public class RedisDataUtils {
@Autowired
@Autowired
private
SweetManualShopMapper
sweetManualShopMapper
;
private
SweetManualShopMapper
sweetManualShopMapper
;
@Autowired
@Autowired
private
SweetArtistsMapper
sweetArtists
Mapper
;
private
KylinArtistMapper
kylinArtist
Mapper
;
@Autowired
@Autowired
private
SweetIntegralActivityDrawMapper
sweetIntegralActivityDrawMapper
;
private
SweetIntegralActivityDrawMapper
sweetIntegralActivityDrawMapper
;
@Autowired
@Autowired
...
@@ -405,7 +407,21 @@ public class RedisDataUtils {
...
@@ -405,7 +407,21 @@ public class RedisDataUtils {
// 艺人详情
// 艺人详情
public
SweetArtists
setArtistsDetails
(
String
artistsId
)
{
public
SweetArtists
setArtistsDetails
(
String
artistsId
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_ARTISTS_DETAILS
.
concat
(
artistsId
);
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_ARTISTS_DETAILS
.
concat
(
artistsId
);
SweetArtists
sweetArtists
=
sweetArtistsMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
SweetArtists
.
class
).
eq
(
SweetArtists:
:
getArtistsId
,
artistsId
).
eq
(
SweetArtists:
:
getStatus
,
1
));
KylinArtist
kylinArtist
=
kylinArtistMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
KylinArtist
.
class
).
eq
(
KylinArtist:
:
getArtistId
,
artistsId
)
);
SweetArtists
sweetArtists
=
null
;
if
(
kylinArtist
!=
null
)
{
sweetArtists
=
SweetArtists
.
getNew
();
sweetArtists
.
setArtistsId
(
kylinArtist
.
getArtistId
());
sweetArtists
.
setName
(
kylinArtist
.
getArtistName
());
sweetArtists
.
setPinyin
(
kylinArtist
.
getPinyin
());
sweetArtists
.
setDescribes
(
kylinArtist
.
getIntroduction
());
sweetArtists
.
setPicUrl
(
kylinArtist
.
getAvatarUrl
());
sweetArtists
.
setStatus
(
kylinArtist
.
getStatus
());
sweetArtists
.
setCreatedAt
(
kylinArtist
.
getCreatedAt
());
sweetArtists
.
setUpdatdAt
(
kylinArtist
.
getUpdatedAt
());
}
redisUtil
.
set
(
redisKey
,
sweetArtists
);
redisUtil
.
set
(
redisKey
,
sweetArtists
);
return
sweetArtists
;
return
sweetArtists
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment