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

Commit 765c3245 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev-social' into dev_member_voucher_social

# Conflicts:
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinPerformancesController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinPerformancesAdminServiceImpl.java
#	liquidnet-bus-config/liquidnet-config/application-dev.yml
#	liquidnet-bus-config/liquidnet-config/application-test.yml
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-dev.yml
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-test.yml
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinPerformanceStatus.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinPerformancesMapper.xml
#	liquidnet-bus-feign/liquidnet-api-feign-kylin/src/main/java/com/liquidnet/service/feign/kylin/api/FeignKylinForChimeClient.java
#	liquidnet-bus-feign/liquidnet-api-feign-kylin/src/main/java/com/liquidnet/service/feign/kylin/config/SecuringRequestInterceptor.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinPerformancesServiceImpl.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
parents b895564a b12c8daf
......@@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamTagParentVo", description = "父级标签库")
@ApiModel(value = "AdamTagParentVo", description = "标签库")
public class AdamTagParentVo implements Serializable, Cloneable {
private static final long serialVersionUID = -7965840594354555093L;
@ApiModelProperty(position = 11, value = "标签Key")
......@@ -14,7 +14,7 @@ public class AdamTagParentVo implements Serializable, Cloneable {
@ApiModelProperty(position = 12, value = "标签名称")
private String desc;
@ApiModelProperty(position = 13, value = "子标签列表")
private List<AdamTagVo> tagVos;
private List<AdamTagParentVo> tagVos;
private static final AdamTagParentVo obj = new AdamTagParentVo();
......@@ -22,9 +22,8 @@ public class AdamTagParentVo implements Serializable, Cloneable {
try {
return (AdamTagParentVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return new AdamTagParentVo();
}
return new AdamTagParentVo();
}
public String getVal() {
......@@ -45,11 +44,11 @@ public class AdamTagParentVo implements Serializable, Cloneable {
return this;
}
public List<AdamTagVo> getTagVos() {
public List<AdamTagParentVo> getTagVos() {
return tagVos;
}
public AdamTagParentVo setTagVos(List<AdamTagVo> tagVos) {
public AdamTagParentVo setTagVos(List<AdamTagParentVo> tagVos) {
this.tagVos = tagVos;
return this;
}
......
......@@ -54,7 +54,7 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
@ApiModelProperty(position = 25, value = "注销时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime closedAt;
@ApiModelProperty(position = 26, value = "完善信息进度[0-未完善,1-已完善]")
@ApiModelProperty(position = 26, value = "完善信息进度[0-未完善,1-已完善,11-已完善且注册IM]")
private Integer isComplete;
@ApiModelProperty(position = 27, value = "")
private String rongCloudToken;
......
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.base.ResponseDto;
/**
* <p>
......@@ -12,7 +14,7 @@ import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
*/
public interface IAdamUserInfoService {
void edit(AdamUserInfoVo userInfoVo);
ResponseDto<AdamUserInfoVo> edit(AdamUserInfoParam parameter);
String editMobile(String uid, String mobile);
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-api</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-chime-api</artifactId>
<dependencies>
<!-- <dependency>-->
<!-- <groupId>com.liquidnet</groupId>-->
<!-- <artifactId>liquidnet-service-chime-do</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
</dependencies>
</project>
package com.liquidnet.service.chime.constant;
import com.liquidnet.commons.lang.util.IDGenerator;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeConstant
* @Package com.liquidnet.service.chime.constant
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/9 10:59
*/
public class ChimeConstant {
public static String USER_ID_PREFIX = "CHE";
public static String getNewUserId(){
return USER_ID_PREFIX + IDGenerator.nextTimeId();
}
}
package com.liquidnet.service.chime.dto;
import lombok.Data;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeJoinUserCountDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/12 15:49
*/
@Data
public class ChimeJoinUserCountDto{
private String performancesId;
private Integer count;
private List<String> avatarImgList;
private static final ChimeJoinUserCountDto obj = new ChimeJoinUserCountDto();
public static ChimeJoinUserCountDto getNew() {
try {
return (ChimeJoinUserCountDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeJoinUserCountDto();
}
}
}
package com.liquidnet.service.chime.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserInfoDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 15:17
*/
@Data
public class ChimeUserInfoDto {
private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 0, value = "用户ID[64]")
private String userId;
@ApiModelProperty(position = 1, value = "用户社交密码")
private String passWord;
@ApiModelProperty(position = 2, value = "性别")
private String sex;
@ApiModelProperty(position = 2, value = "用户昵称")
private String userName;
@ApiModelProperty(position = 3, value = "用户手机号")
private String userMobile;
@ApiModelProperty(position = 4, value = "头像")
private String avatar;
@ApiModelProperty(position = 4, value = "封面")
private String userCover;
@ApiModelProperty(position = 6, value = "生日")
private String birthday;
@ApiModelProperty(position = 7, value = "签名")
private String signature;
@ApiModelProperty(position = 8, value = "常住地/区域")
private String area;
@ApiModelProperty(position = 9, value = "在场ID")
private String joinPerformanceId;
@ApiModelProperty(position = 10, value = "用户标签")
private List<ChimeUserTagDto> userTags;
private static final ChimeUserInfoDto obj = new ChimeUserInfoDto();
public static ChimeUserInfoDto getNew() {
try {
return (ChimeUserInfoDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserInfoDto();
}
}
}
package com.liquidnet.service.chime.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserListQueryReqDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/9 12:05
*/
@Data
public class ChimeUserListQueryReqDto {
@ApiModelProperty(position = 0, value = "演出ID", example = "")
private String performanceId;
@ApiModelProperty(position = 1, value = "性别", example = "")
private String sex;
@ApiModelProperty(value = "兴趣标签", example = "")
private String tags;
@ApiModelProperty(value = "每页记录数", example = "20")
@NotNull(message = "每页记录数不能为空")
private Integer pageSize;
@ApiModelProperty(value = "当前页", example = "0")
@NotNull(message = "当前页不能为空")
private Integer pageNum;
@ApiModelProperty(value = "排序字段", hidden = true)
private String orderItem;
@ApiModelProperty(value = "排序方式", hidden = true)
private String orderSc;
private static final ChimeUserListQueryReqDto obj = new ChimeUserListQueryReqDto();
public static ChimeUserListQueryReqDto getNew() {
try {
return (ChimeUserListQueryReqDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserListQueryReqDto();
}
}
}
package com.liquidnet.service.chime.dto;
import com.liquidnet.commons.lang.util.JsonUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserRegisterReqDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 16:11
*/
@Data
public class ChimeUserRegisterReqDto {
@ApiModelProperty(position = 0, value = "用户id", example = "")
private String userId;
private String nickName;
private String sex;
private String tags;
private String performanceId;
@Override
public String toString(){
return JsonUtils.toJson(this);
}
private static final ChimeUserRegisterReqDto obj = new ChimeUserRegisterReqDto();
public static ChimeUserRegisterReqDto getNew() {
try {
return (ChimeUserRegisterReqDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserRegisterReqDto();
}
}
}
package com.liquidnet.service.chime.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.JsonUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserRegisterRespDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 16:11
*/
@Data
public class ChimeUserRegisterRespDto {
private String uuid;
private String type;
@ApiModelProperty(value = "创建时间")
// @JsonDeserialize(using = LocalDateTimeDeserializer.class)
// @JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
private LocalDateTime created; //1630929604985
@ApiModelProperty(value = "修改时间")
// @JsonDeserialize(using = LocalDateTimeDeserializer.class)
// @JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
private LocalDateTime modified;
private String username;
private Boolean activated;
private String nickname;
@Override
public String toString(){
return JsonUtils.toJson(this);
}
private static final ChimeUserRegisterRespDto obj = new ChimeUserRegisterRespDto();
public static ChimeUserRegisterRespDto getNew() {
try {
return (ChimeUserRegisterRespDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserRegisterRespDto();
}
}
public static void main(String[] args) {
String ss = "{\"uuid\":\"3f6a2b20-1085-11ec-9941-bd3851758eda\",\"type\":\"user\",\"created\":1631092502233,\"modified\":1631092502233,\"username\":\"anjiabin5\",\"activated\":true,\"nickname\":\"anjiabin5-nickname\"}";
// ChimeUserRegisterRespDto respDto = JsonUtils.fromJson(ss,ChimeUserRegisterRespDto.class);
ChimeUserRegisterRespDto respDto = JSONObject.parseObject(ss,ChimeUserRegisterRespDto.class);
System.out.println("ChimeUserRegisterRespDto==="+respDto.toString());
}
}
package com.liquidnet.service.chime.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserTagsMappingVo
* @Package com.liquidnet.service.chime.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/3 16:50
*/
@ApiModel(value = "ChimeUserTagDto", description = "社交用户标签")
@Data
public class ChimeUserTagDto {
private static final long serialVersionUID = 5325511589667456214L;
@ApiModelProperty(position = 0, value = "用户ID[64]")
@JsonIgnore
private String userId;
@ApiModelProperty(position = 1, value = "标签code")
private String tagCode;
@ApiModelProperty(position = 2, value = "标签描述")
private String tagDesc;
private static final ChimeUserTagDto obj = new ChimeUserTagDto();
public static ChimeUserTagDto getNew() {
try {
return (ChimeUserTagDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserTagDto();
}
}
}
package com.liquidnet.service.chime.dto;
import com.liquidnet.commons.lang.util.JsonUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserRegisterReqDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 16:11
*/
@Data
public class ChimeUserUpdateReqDto {
@ApiModelProperty(position = 0, value = "用户id", example = "")
private String userId;
private String nickName;
private String sex;
private String tags;
@Override
public String toString(){
return JsonUtils.toJson(this);
}
private static final ChimeUserUpdateReqDto obj = new ChimeUserUpdateReqDto();
public static ChimeUserUpdateReqDto getNew() {
try {
return (ChimeUserUpdateReqDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserUpdateReqDto();
}
}
}
package com.liquidnet.service.chime.dto;
import java.io.Serializable;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: NewPageResult
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/13 10:49
*/
public class NewPageResult<T> implements Serializable, Cloneable {
private static final long serialVersionUID = 8141034447809038759L;
/**
* 当前页数
*/
private int currentPage = 1;
/**
* 每页记录数
*/
private int pageSize = 10;
/**
* 总页数
*/
private int pages;
/**
* 总记录数
*/
private long total;
private boolean isOnline;
/**
* 分页数据
*/
private List<T> list;
public NewPageResult() {
}
public int getPages() {
return pages;
}
// public NewPageResult<T> setTotalPages(int totalPages) {
// this.totalPages = totalPages;
// return this;
// }
public long getTotal() {
return total;
}
public NewPageResult<T> setTotal(long total, int pageSize) {
this.total = total;
if (total == -1L) {
this.pages = 1;
} else {
if (pageSize > 0) {
this.pages = (int) (total / pageSize + (total % pageSize == 0L ? 0 : 1));
} else {
this.pages = 0;
}
}
return this;
}
public List<T> getList() {
return list;
}
public NewPageResult<T> setList(List<T> list) {
this.list = list;
return this;
}
@Override
public NewPageResult<T> clone() {
try {
return (NewPageResult<T>) super.clone();
} catch (CloneNotSupportedException e) {
return new NewPageResult<>();
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public int getCurrentPage() {
return currentPage;
}
public NewPageResult<T> setCurrentPage(int currentPage) {
this.currentPage = currentPage;
return this;
}
public int getPageSize() {
return pageSize;
}
public NewPageResult<T> setPageSize(int pageSize) {
this.pageSize = pageSize;
return this;
}
public boolean isFirst()
{
return (this.currentPage == 1) || (this.total == 0);
}
public boolean isLast() {
return (this.total == 0) || (this.currentPage >= this.pages);
}
public boolean isHasNext()
{
return this.currentPage < this.pages;
}
public boolean isHasPrev() {
return this.currentPage > 1;
}
public Integer getNextPage()
{
if (this.currentPage >= this.pages) {
return Integer.valueOf(this.pages);
}
return Integer.valueOf(this.currentPage + 1);
}
public Integer getPrevPage() {
if (this.currentPage <= 1) {
return Integer.valueOf(1);
}
return Integer.valueOf(this.currentPage - 1);
}
public void setPages(int pages) {
this.pages = pages;
}
public void setTotal(long total) {
this.total = total;
}
public boolean getIsOnline() {
return isOnline;
}
public void setIsOnline(boolean online) {
isOnline = online;
}
}
package com.liquidnet.service.chime.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/3 18:26
*/
@Data
public class PerformanceDto {
@ApiModelProperty(value = "演出id")
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "演出海报")
private String imgPoster;
@ApiModelProperty(value = "演出开始时间")
private String timeStart;
@ApiModelProperty(value = "演出结束时间")
private String timeEnd;
@ApiModelProperty(value = "演出地点")
private String cityName;
@ApiModelProperty(value = "场地名称")
private String fieldName;
@ApiModelProperty(value = "在场人数")
private Integer joinUserCount;
@ApiModelProperty(value = "小头像")
private List<String> avatarImgList;
private static final PerformanceDto obj = new PerformanceDto();
public static PerformanceDto getNew() {
try {
return (PerformanceDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceDto();
}
}
}
package com.liquidnet.service.chime.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserListQueryReqDto
* @Package com.liquidnet.service.chime.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/9 12:05
*/
@Data
public class PerformanceQueryReqDto {
@ApiModelProperty(position = 0,value = "演出ID", example = "")
private String performanceId;
@ApiModelProperty(position = 1,value = "排序类型 1创建时间倒序 2创建时间正序 3演出时间倒序 4演出时间正序", example = "0")
@NotNull(message = "排序类型不能为空")
private Integer orderType;
@ApiModelProperty(value = "每页记录数", example = "20")
@NotNull(message = "每页记录数不能为空")
private Integer pageSize;
@ApiModelProperty(value = "当前页", example = "0")
@NotNull(message = "当前页不能为空")
private Integer pageNum;
@ApiModelProperty(value = "排序字段", hidden = true)
private String orderItem;
@ApiModelProperty(value = "排序方式", hidden = true)
private String orderSc;
public void setOrderType(Integer orderType) {
this.orderType = orderType;
switch (orderType) {
case 1: {
orderItem = "created_at";
orderSc = "desc";
break;
}
case 2: {
orderItem = "created_at";
orderSc = "asc";
break;
}
case 3: {
orderItem = "time_start";
orderSc = "desc";
break;
}
case 4: {
orderItem = "time_start";
orderSc = "asc";
break;
}
}
}
private static final PerformanceQueryReqDto obj = new PerformanceQueryReqDto();
public static PerformanceQueryReqDto getNew() {
try {
return (PerformanceQueryReqDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new PerformanceQueryReqDto();
}
}
}
package com.liquidnet.service.chime.service;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto;
import com.liquidnet.service.chime.dto.NewPageResult;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IChimePerformanceService
* @Package com.liquidnet.service.chime.service
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/9 12:03
*/
public interface IChimePerformanceService {
NewPageResult<ChimeUserInfoDto> getUserListByCon(ChimeUserListQueryReqDto reqDto);
}
package com.liquidnet.service.chime.service;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserRegisterReqDto;
import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IChimeUserService
* @Package com.liquidnet.service.chime.service
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 16:14
*/
public interface IChimeUserService {
/**
* 社交用户注册
* @param reqDto
* @return
*/
JSONObject register(ChimeUserRegisterReqDto reqDto);
ChimeUserInfoDto createChimeUserInfo(ChimeUserRegisterReqDto reqDto);
boolean updateUserInfo(ChimeUserUpdateReqDto reqDto);
boolean updateUserTags(ChimeUserUpdateReqDto reqDto);
ChimeUserInfoDto getUserByUserId(String userId);
boolean switchPerformanceId(String performanceId);
}
package com.liquidnet.service.chime.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserTagsMappingVo
* @Package com.liquidnet.service.chime.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/3 16:50
*/
@ApiModel(value = "ChimeUserInfoVo", description = "社交用户信息")
@Data
public class ChimeUserInfoVo {
private String mid;
private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 0, value = "用户ID[64]")
private String userId;
@ApiModelProperty(position = 1, value = "性别")
private String sex;
@ApiModelProperty(position = 2, value = "用户昵称")
private String userName;
@ApiModelProperty(position = 3, value = "用户手机号")
private String userMobile;
@ApiModelProperty(position = 4, value = "头像")
private String avatar;
@ApiModelProperty(position = 5, value = "生日")
private String birthday;
@ApiModelProperty(position = 6, value = "签名")
private String signature;
@ApiModelProperty(position = 7, value = "常住地/区域")
private String area;
@ApiModelProperty(position = 8, value = "在场ID")
private String joinPerformanceId;
@ApiModelProperty(position = 9,value = "用户标签")
private List<ChimeUserTagsMappingVo> userTagsVoList;
private static final ChimeUserInfoVo obj = new ChimeUserInfoVo();
public static ChimeUserInfoVo getNew() {
try {
return (ChimeUserInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserInfoVo();
}
}
}
package com.liquidnet.service.chime.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserTagsMappingVo
* @Package com.liquidnet.service.chime.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/3 16:50
*/
@ApiModel(value = "ChimeUserTagsMappingVo", description = "社交用户标签映射表")
@Data
public class ChimeUserTagsMappingVo {
private static final long serialVersionUID = 5325511589667456214L;
@ApiModelProperty(position = 0, value = "用户ID[64]")
private String userId;
@ApiModelProperty(position = 1, value = "标签code")
private String tagCode;
@ApiModelProperty(position = 2, value = "标签描述")
private String tagDesc;
private static final ChimeUserTagsMappingVo obj = new ChimeUserTagsMappingVo();
public static ChimeUserTagsMappingVo getNew() {
try {
return (ChimeUserTagsMappingVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserTagsMappingVo();
}
}
}
......@@ -17,6 +17,7 @@
<module>liquidnet-service-adam-api</module>
<module>liquidnet-service-kylin-api</module>
<module>liquidnet-service-dragon-api</module>
<module>liquidnet-service-chime-api</module>
<module>liquidnet-service-candy-api</module>
</modules>
<dependencies>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -601,9 +601,9 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
@Override
public String changeTransferConfig(String performancesId,
Integer isCanTransfer,
String transferStartTime,
String transferEndTime) {
Integer isCanTransfer,
String transferStartTime,
String transferEndTime) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsCanRefund().equals(1) && isCanTransfer.equals(1)){
return "修改失败,演出已开启退款";
......@@ -630,12 +630,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
@Override
public String changeRefundConfig(String performancesId,
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime,
Integer isRefundPoundage,
Integer isRefundVoucher,
Integer isRefundExpress) {
Integer isCanRefund,
String refundOpenTime,
String refundCloseTime,
Integer isRefundPoundage,
Integer isRefundVoucher,
Integer isRefundExpress) {
KylinPerformanceStatus kylinPerformanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if(kylinPerformanceStatusData.getIsTransfer().equals(1) && isCanRefund.equals(1)){
return "修改失败,演出已开启转赠";
......
package com.liquidnet.commons.lang.util;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.commons.lang.util.spring.RestTemplateConfig;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
......@@ -64,6 +65,91 @@ public class HttpUtil {
return request(url, params, headers, HttpMethod.POST);
}
public static String postJson(String url,String jsonStr) {
MultiValueMap<String, String> headers = new LinkedMultiValueMap();
headers.add("Content-Type", "application/json;charset=UTF-8");
headers.add("Accept", "application/json;charset=UTF-8");
if (url == null || url.trim().isEmpty()) {
return null;
}
// header
HttpHeaders httpHeaders = new HttpHeaders();
if (headers != null) {
httpHeaders.addAll(headers);
}
HttpEntity<Object> httpEntity = new HttpEntity(jsonStr, httpHeaders);
// 提交方式:表单、json
Object respObj = restTemplate.postForEntity(url,httpEntity,Object.class).getBody();;
return JsonUtils.toJson(respObj);
}
public static String postJson(String url,String jsonStr,MultiValueMap<String, String> headers) {
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
commonHeader.add("Content-Type", "application/json;charset=UTF-8");
commonHeader.add("Accept", "application/json;charset=UTF-8");
if (url == null || url.trim().isEmpty()) {
return null;
}
// header
HttpHeaders httpHeaders = new HttpHeaders();
if (commonHeader != null) {
httpHeaders.addAll(commonHeader);
}
if (headers != null) {
httpHeaders.addAll(headers);
}
HttpEntity<Object> httpEntity = new HttpEntity(jsonStr, httpHeaders);
// 提交方式:表单、json
// ResponseEntity<String> response = restTemplate.exchange(url, method, httpEntity, String.class);
Object respObj = restTemplate.postForEntity(url,httpEntity,Object.class).getBody();;
return JsonUtils.toJson(respObj);
}
/**
* josn post提交
* @param url
* @param jsonParam
* @return
*/
public static JSONObject httpPost(String url, JSONObject jsonParam) {
JSONObject rsResultObj = null;
String result = null;
try {
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
commonHeader.add("Content-Type", "application/json;charset=UTF-8");
commonHeader.add("Accept", "application/json;charset=UTF-8");
if (url == null || url.trim().isEmpty()) {
return null;
}
// header
HttpHeaders httpHeaders = new HttpHeaders();
if (commonHeader != null) {
httpHeaders.addAll(commonHeader);
}
HttpEntity<String> httpEntity = new HttpEntity(jsonParam, httpHeaders);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
if (response.getStatusCodeValue() == 200) {
result = response.getBody();
}
} catch (Exception e) {
System.out.println("posturl:" + url + ", err=" + e.getMessage());
}
if(result!=null){
rsResultObj = JSONObject.parseObject(result);
}
return rsResultObj;
}
/**
* post请求
*
......
......@@ -5,7 +5,16 @@ import java.util.List;
public class PagedResult<T> implements Serializable, Cloneable {
private static final long serialVersionUID = 8141034447809038759L;
/**
/**
* 当前页数
*/
private int currentPage = 1;
/**
* 每页记录数
*/
private int pageSize = 10;
/**
* 总页数
*/
private int pages;
......@@ -65,4 +74,58 @@ public class PagedResult<T> implements Serializable, Cloneable {
return new PagedResult<>();
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public int getCurrentPage() {
return currentPage;
}
public PagedResult<T> setCurrentPage(int currentPage) {
this.currentPage = currentPage;
return this;
}
public int getPageSize() {
return pageSize;
}
public PagedResult<T> setPageSize(int pageSize) {
this.pageSize = pageSize;
return this;
}
public boolean isFirst()
{
return (this.currentPage == 1) || (this.total == 0);
}
public boolean isLast() {
return (this.total == 0) || (this.currentPage >= this.pages);
}
public boolean isHasNext()
{
return this.currentPage < this.pages;
}
public boolean isHasPrev() {
return this.currentPage > 1;
}
public Integer getNextPage()
{
if (this.currentPage >= this.pages) {
return Integer.valueOf(this.pages);
}
return Integer.valueOf(this.currentPage + 1);
}
public Integer getPrevPage() {
if (this.currentPage <= 1) {
return Integer.valueOf(1);
}
return Integer.valueOf(this.currentPage - 1);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-common-third</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-common-third-easemob</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.easemob.im</groupId>
<artifactId>im-sdk-core</artifactId>
<version>0.3.0</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>4.1.59.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>2020.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
\ No newline at end of file
package com.liquidnet.common.third.easemob.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: EasemobConfig
* @Package com.liquidnet.common.third.easemob.config
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 10:42
*/
@Configuration
public class EasemobConfig {
@Value("${liquidnet.easemob.api-url}")
private String REQUEST_HOST;
@Value("${liquidnet.easemob.org-name}")
private String ORG_NAME;
@Value("${liquidnet.easemob.app-name}")
private String APP_NAME;
@Value("${liquidnet.easemob.client-id}")
private String CLIENT_ID;
@Value("${liquidnet.easemob.client-secret}")
private String CLIENT_SECRET;
// private String APPKEY = easemobConfig.ORG_NAME+"#"+this.APP_NAME;
public String getPreUrl() {
return REQUEST_HOST + "/" + ORG_NAME + "/" + APP_NAME;
}
public String getClientId() {
return this.CLIENT_ID;
}
public String getClientSecret() {
return this.CLIENT_SECRET;
}
}
package com.liquidnet.common.third.easemob.constant;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: EasemobConstant
* @Package com.liquidnet.common.third.easemob.constant
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 10:43
*/
public class EasemobConstant {
//获取api访问token 默认60天
public static String GET_TOKEN_URL = "/token";
//api访问过期时间
public static String API_ACCESS_TOKEN_REDIS_KEY = "chime:easemob:API_ACCESS_KEY";
//单位 秒 默认30天
public static long API_ACCESS_TOKEN_EXPIRES_TIME_SECOND = 2592000;
//注册单个用户
public static String CREATE_USER_URL = "/users";
}
package com.liquidnet.common.third.easemob.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: CreateUserRespDto
* @Package com.liquidnet.common.third.easemob.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 14:31
*/
@Data
public class CreateUserRespDto {
@JsonProperty("uuid")
private String uuid;
@JsonProperty("type")
private String type;
@JsonProperty("created")
private LocalDateTime created;
@JsonProperty("modified")
private LocalDateTime modified;
@JsonProperty("username")
private String username;
@JsonProperty("activated")
private boolean activated;
@Override
public String toString() {
return "UserResource{" +
"username='" + username + '\'' +
", uuid='" + uuid + '\'' +
", type='" + type + '\'' +
", created='" + created + '\'' +
", modified='" + modified + '\'' +
", activated=" + activated +
'}';
}
}
package com.liquidnet.common.third.easemob.util;
import com.alibaba.fastjson.JSONObject;
import com.easemob.im.server.api.token.allocate.TokenResponse;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.third.easemob.config.EasemobConfig;
import com.liquidnet.common.third.easemob.constant.EasemobConstant;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: EasemobUtil
* @Package com.liquidnet.common.third.easemob.util
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/6 16:08
*/
@Slf4j
@Component
public class EasemobUtil{
@Autowired
private EasemobConfig easemobConfig;
@Autowired
private RedisUtil redisUtil;
private String getAccessToken(){
//构造请求参数
// LinkedMultiValueMap<String, String> reqParam = CollectionUtil.linkedMultiValueMapStringString();
// reqParam.add("grant_type", "client_credentials");
// reqParam.add("client_id",CLIENT_ID);
// reqParam.add("client_secret", CLIENT_SECRET);
Object redisValue = redisUtil.get(EasemobConstant.API_ACCESS_TOKEN_REDIS_KEY);
if(StringUtil.isNotNull(redisValue)&&StringUtil.isNotBlank(redisValue.toString())){
log.info("getAccessToken cache token : {} ",redisValue);
return redisValue.toString();
}
JSONObject json = new JSONObject();
json.put("grant_type", "client_credentials");
json.put("client_id", easemobConfig.getClientId());
json.put("client_secret", easemobConfig.getClientSecret());
String requestUrl = easemobConfig.getPreUrl() + EasemobConstant.GET_TOKEN_URL;
log.info("getAccessToken--->>> request url : {} body : {} ",requestUrl, json.toString());
String response = HttpUtil.postJson(requestUrl,json.toString());
log.info("getAccessToken--->>> response : {} ",response);
TokenResponse tokenResponse = JsonUtils.fromJson(response,TokenResponse.class);
log.info("getAccessToken--->>> response access_token : {} ",tokenResponse.asToken().getValue());
log.info("getAccessToken--->>> token isValid json : {} ",tokenResponse.asToken().isValid());
//设置缓存
String token = tokenResponse.asToken().getValue();
redisUtil.set(EasemobConstant.API_ACCESS_TOKEN_REDIS_KEY,token,EasemobConstant.API_ACCESS_TOKEN_EXPIRES_TIME_SECOND);
return token;
//result
// {application=c785eced-c603-41c3-afe8-13ee3378540c, access_token=YWMt_rE7Rg8DEeyy6gf--JvBcwAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7utOj1gBPGgANws4VZcHltyc-SPep4q09E0mqitzKe5IA6Npu-MqLBg, expires_in=5184000}
//YWMtofR7bg8FEeyuuledizf-EgAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7ut5fhQBPGgA4h21-XSZ9vq_q69wQlp3racC2cpUtlNHJfma547Ygkg
}
public void createUser(String userName,String password){
this.createUser(userName,password,null);
}
public String createUser(String userName, String password, String nickName){
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
commonHeader.add("Authorization", "Bearer "+this.getAccessToken());
JSONObject json = new JSONObject();
json.put("username", userName);
json.put("password", password);
if(StringUtil.isNotEmpty(nickName)){
json.put("nickname", nickName);
}
String requestUrl = easemobConfig.getPreUrl() + EasemobConstant.CREATE_USER_URL;
log.info("createUsers--->>> request url : {} body : {} ",requestUrl, json.toString());
String response = null;
// ObjectNode objectNode = JsonUtils.OM().createObjectNode();
try {
response = HttpUtil.postJson(requestUrl,json.toString(),commonHeader);
}
catch(HttpClientErrorException e){
if(e.getRawStatusCode() == 400){
JSONObject jsonObject = JsonUtils.fromJson(e.getResponseBodyAsString(), new TypeReference<JSONObject>() {});
log.info("createUser error : {}",jsonObject.get("error"));
log.info("createUser error_description : {}",jsonObject.get("error_description"));
return jsonObject.toJSONString();
}
}catch (Exception e) {
e.printStackTrace();
log.error("createUser error : {}",e);
}
log.info("createUsers--->>> response : {} ",response);
ObjectNode jsonObject = JsonUtils.fromJson(response,ObjectNode.class);
ArrayNode arrayNode = (ArrayNode)jsonObject.get("entities");
response = arrayNode.get(0).toString();
return response;
//result
// {application=c785eced-c603-41c3-afe8-13ee3378540c, access_token=YWMt_rE7Rg8DEeyy6gf--JvBcwAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7utOj1gBPGgANws4VZcHltyc-SPep4q09E0mqitzKe5IA6Npu-MqLBg, expires_in=5184000}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-common-third</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-common-third-shumei</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.liquidnet.common.third.shumei.biz;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.common.third.shumei.config.ShumeiConfig;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ShumeiBiz
* @Package com.liquidnet.common.third.shumei.biz
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 18:49
*/
@Component
public class ShumeiBiz{
@Autowired
private ShumeiConfig shumeiConfig;
/**
*
* @param text
* @param userId
* @return
*/
public JSONObject checkText(String userId,String text){
HashMap<String, Object> payload = new HashMap<String, Object>();
payload.put("accessKey", shumeiConfig.getAccessKey());
payload.put("appId", "default");
payload.put("eventId", "nickname");
payload.put("type", "ALL");
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("text", text);
data.put("tokenId", userId);
payload.put("data", data);
JSONObject json = JSONObject.parseObject(JsonUtils.toJson(payload));
JSONObject result = HttpUtil.httpPost(shumeiConfig.getTextUrl(), json);
return result;
}
public JSONObject checkImage(String userId,String imageUrl){
HashMap<String, Object> payload = new HashMap<String, Object>();
payload.put("accessKey", shumeiConfig.getAccessKey());
payload.put("appId", "default");
payload.put("eventId", "article");
payload.put("type", "POLITICS_PORN_AD_BAN_VIOLENCE");
//请求的数据内容,最长10MB
HashMap<String, Object> data = new HashMap<String, Object>();
// data.put("img", Utils.readFileToBase64("../files/demo.png"));
data.put("img", imageUrl);
data.put("tokenId", userId);
payload.put("data", data);
JSONObject json = JSONObject.parseObject(JsonUtils.toJson(payload));
JSONObject result = HttpUtil.httpPost(shumeiConfig.getImageUrl(), json);
return result;
}
}
package com.liquidnet.common.third.shumei.config;
import org.springframework.stereotype.Component;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: 数美验证
* @class: ShumeiConfig
* @Package com.liquidnet.common.third.shumei
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 18:48
*/
@Component
public class ShumeiConfig {
private static final String TEXT_URL = "http://api-text-bj.fengkongcloud.com/text/v4";
private static final String IMAGE_URL = "http://api-img-bj.fengkongcloud.com/image/v4";
private static final String ACCESS_KEY = "YOtWhwTAchS5MRGL9hOf";
public String getAccessKey(){
return ACCESS_KEY;
}
public String getTextUrl(){
return TEXT_URL;
}
public String getImageUrl() {
return IMAGE_URL;
}
}
package com.liquidnet.common.third.shumei.constant;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ShumeiConstant
* @Package com.liquidnet.common.third.shumei.constant
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 10:40
*/
public class ShumeiConstant {
public enum ResponseCodeEnum{
SUCCESS("1100","成功"),
QPS_ULTRALIMIT ("1901","QPS 超限"),
PARAM_ILLEGAL ("1902","参数不合法"),
SERVER_FAIL("1903","服务失败"),
IMAGE_DOWNLOAD_FAIL("1911","图片下载失败"),
BALANCE_NOT_ENOUGH("9100","余额不足"),
NO_PERMISSION("9101","无权限操作");
private String code;
private String message;
ResponseCodeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public String getMessage(){ return message;};
}
public enum RiskLevelEnum{
PASS("PASS","正常"),
REVIEW ("REVIEW","可疑"),
REJECT ("REJECT","违规");
private String code;
private String message;
RiskLevelEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public String getMessage(){ return message;};
}
}
package com.liquidnet.common.third.shumei.util;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.common.third.shumei.biz.ShumeiBiz;
import com.liquidnet.common.third.shumei.constant.ShumeiConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: 数美工具类
* @class: ShumeiUtil
* @Package com.liquidnet.common.third.shumei.util
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 17:46
*/
@Slf4j
@Component
public class ShumeiUtil {
@Autowired
private ShumeiBiz shumeiBiz;
public boolean checkText(String userId,String text){
log.info("ShumeiUtil.checkText userId:{} text:{}",userId,text);
try {
JSONObject result = shumeiBiz.checkText(userId,text);
log.info("checkText result :{} ",result);
if (result != null) {
log.info("checkText result code:{} ",result.get("code"));
if (result.get("code").toString().equals(ShumeiConstant.ResponseCodeEnum.SUCCESS.getCode())) {
String riskLevel = result.get("riskLevel").toString();
log.info("checkText result riskLevel:{} ",riskLevel);
if(riskLevel.equalsIgnoreCase(ShumeiConstant.RiskLevelEnum.PASS.getCode())){
return true;
}
}
}else{
log.error("checkText result is null:{} ",result);
}
} catch (Exception e) {
log.error("ShumeiUtil.checkText error userId:{} text:{}",userId,text);
log.error("ShumeiUtil.checkText error msg:{}",e.getMessage());
return false;
}
return false;
}
public boolean checkImage(String userId,String imageUrl){
log.info("ShumeiUtil.checkImage userId:{} imageUrl:{}",userId,imageUrl);
try {
JSONObject result = shumeiBiz.checkImage(userId,imageUrl);
log.info("checkImage result :{} ",result);
if (result != null) {
log.info("checkImage result code:{} ",result.get("code"));
if (result.get("code").toString().equals(ShumeiConstant.ResponseCodeEnum.SUCCESS.getCode())) {
String riskLevel = result.get("riskLevel").toString();
String requestId = result.get("requestId").toString();
String riskDescription = result.get("riskDescription").toString();
log.info("checkImage result riskLevel:{} ",riskLevel);
log.info("checkImage result requestId:{} ",requestId);
log.info("checkImage result riskDescription:{} ",riskDescription);
if(riskLevel.equalsIgnoreCase(ShumeiConstant.RiskLevelEnum.PASS.getCode())){
return true;
}
}else{
log.info("checkImage result code:{} message:{} ",result.get("code").toString(),result.get("message").toString());
}
}else{
log.error("checkImage result is null:{} ",result);
}
} catch (Exception e) {
log.error("ShumeiUtil.checkImage error userId:{} text:{}",userId,imageUrl);
log.error("ShumeiUtil.checkImage error msg:{}",e.getMessage());
return false;
}
return false;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-common</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-common-third</artifactId>
<packaging>pom</packaging>
<modules>
<module>liquidnet-common-third-easemob</module>
<module>liquidnet-common-third-shumei</module>
</modules>
</project>
......@@ -44,6 +44,7 @@
<module>liquidnet-common-service-base</module>
<module>liquidnet-common-feign</module>
<module>liquidnet-common-sms</module>
<module>liquidnet-common-third</module>
<!-- <module>liquidnet-common-mybatis</module>-->
</modules>
<dependencies>
......
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户业务服务账号表
* </p>
*
* @author liquidnet
* @since 2021-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamUserBusiAcct implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
private String uid;
/**
* 业务服务平台
*/
private String busi;
/**
* 业务服务ID
*/
private String uuid;
/**
* 业务服务模块
*/
private String work;
/**
* 业务服务密码
*/
private String ppwd;
/**
* 1-NORMAL,2-INVALID
*/
private Integer state;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String comment;
}
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamUserBusiAcct;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户业务服务账号表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-09-17
*/
public interface AdamUserBusiAcctMapper extends BaseMapper<AdamUserBusiAcct> {
}
<?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.adam.mapper.AdamUserBusiAcctMapper">
</mapper>
......@@ -505,7 +505,7 @@
group by kotr.performance_id,kot.user_id
) t
) AS ut ON ut.performance_id = kp.performances_id
order by kt.type desc,kt.use_start asc
order by kt.type desc,kt.use_start asc
</select>
<select id="getPerformanceSponsorList" resultMap="performanceSponsorDaoResult">
select distinct kp.sponsor_id, kp.sponsor, kp.sponsor_type
......@@ -553,14 +553,14 @@
<select id="countExpressNumber"
resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
SELECT
COUNT(*) total_number
COUNT(*) total_number
FROM
kylin_performance_relations AS pr
LEFT JOIN kylin_order_ticket_relations AS otr ON pr.performance_id = otr.performance_id
LEFT JOIN kylin_order_tickets AS ot ON ot.order_tickets_id = otr.order_id
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = otr.order_id
kylin_performance_relations AS pr
LEFT JOIN kylin_order_ticket_relations AS otr ON pr.performance_id = otr.performance_id
LEFT JOIN kylin_order_tickets AS ot ON ot.order_tickets_id = otr.order_id
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = otr.order_id
WHERE pr.performance_id = #{performancesId}
AND ots.status NOT IN (0, 2, 5)
AND ot.get_ticket_type = 'express'
AND ots.status NOT IN (0, 2, 5)
AND ot.get_ticket_type = 'express'
</select>
</mapper>
......@@ -415,6 +415,22 @@ create unique index uidx_adam_member_rights_id on adam_member_rights (mrights_id
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
# 用户业务服务账号表
drop table if exists adam_user_busi_acct;
create table adam_user_busi_acct
(
mid bigint unsigned auto_increment primary key,
uid varchar(64) not null,
busi varchar(20) comment '业务服务平台',
uuid varchar(64) comment '业务服务ID',
work varchar(64) comment '业务服务模块',
ppwd varchar(64) comment '业务服务密码',
state tinyint comment '1-NORMAL,2-INVALID',
created_at datetime not null,
updated_at datetime,
comment text
) engine = InnoDB comment '用户业务服务账号表';
create index idx_adam_user_busi_acct_uid on adam_user_busi_acct (uid);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......@@ -43,6 +43,12 @@
<!-- <artifactId>liquidnet-service-kylin-api</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-easemob</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
......
......@@ -121,27 +121,29 @@ public class AdamUserController {
// existParentVo.setTagVos(existTagVos);
// tagMeVoList.add(existParentVo);
// }
String currentUid = CurrentUtil.getCurrentUid();
AdamUserInfoVo editVo = adamRdmService.getUserInfoVoByUid(currentUid);
// editVo.setAvatar(parameter.getAvatar());
// editVo.setBackground(parameter.getBackground());
// editVo.setNickname(parameter.getNickname());
editVo.setAvatar(StringUtils.isEmpty(editVo.getAvatar()) ? AdamConst.DEF_URL_AVATAR : editVo.getAvatar());
editVo.setBackground(StringUtils.isEmpty(editVo.getBackground()) ? AdamConst.DEF_URL_BACKGROUND : editVo.getBackground());
editVo.setNickname(editVo.getNickname());
editVo.setSex(sex);
editVo.setBirthday(parameter.getBirthday());
editVo.setArea(parameter.getArea());
// editVo.setSignature(parameter.getSignature());
editVo.setSignature(editVo.getSignature());
// editVo.setTagMe(tagMeVoList);
editVo.setUpdatedAt(LocalDateTime.now());
editVo.setIsComplete(1);
adamUserInfoService.edit(editVo);
// editVo.setMobile(SensitizeUtil.custom(editVo.getMobile(), 3, 4));
return ResponseDto.success(editVo.desensitize(reviewUserInfo));
// String currentUid = CurrentUtil.getCurrentUid();
//
// AdamUserInfoVo editVo = adamRdmService.getUserInfoVoByUid(currentUid);
//// editVo.setAvatar(parameter.getAvatar());
//// editVo.setBackground(parameter.getBackground());
//// editVo.setNickname(parameter.getNickname());
// editVo.setAvatar(StringUtils.isEmpty(editVo.getAvatar()) ? AdamConst.DEF_URL_AVATAR : editVo.getAvatar());
// editVo.setBackground(StringUtils.isEmpty(editVo.getBackground()) ? AdamConst.DEF_URL_BACKGROUND : editVo.getBackground());
// editVo.setNickname(editVo.getNickname());
// editVo.setSex(sex);
// editVo.setBirthday(parameter.getBirthday());
// editVo.setArea(parameter.getArea());
//// editVo.setSignature(parameter.getSignature());
// editVo.setSignature(editVo.getSignature());
//// editVo.setTagMe(tagMeVoList);
// editVo.setUpdatedAt(LocalDateTime.now());
// editVo.setIsComplete(1);
//
// adamUserInfoService.edit(editVo);
//// editVo.setMobile(SensitizeUtil.custom(editVo.getMobile(), 3, 4));
// return ResponseDto.success(editVo.desensitize(reviewUserInfo));
parameter.setSex(sex);
return adamUserInfoService.edit(parameter);
}
@ApiOperationSupport(order = 2)
......@@ -152,16 +154,16 @@ public class AdamUserController {
if (CollectionUtils.isEmpty(tagsForMusic)) {
tagsForMusic = ObjectUtil.getAdamTagParentVoArrayList();
tagsForMusic.add(AdamTagParentVo.getNew().setVal("MMS01").setDesc("民歌").setTagVos(Arrays.asList(
AdamTagVo.getNew().setVal("MMS0101").setDesc("A"),
AdamTagVo.getNew().setVal("MMS0102").setDesc("B")
AdamTagParentVo.getNew().setVal("MMS0101").setDesc("A"),
AdamTagParentVo.getNew().setVal("MMS0102").setDesc("B")
)));
tagsForMusic.add(AdamTagParentVo.getNew().setVal("MMS02").setDesc("house").setTagVos(Arrays.asList(
AdamTagVo.getNew().setVal("MMS0201").setDesc("C"),
AdamTagVo.getNew().setVal("MMS0202").setDesc("D")
AdamTagParentVo.getNew().setVal("MMS0201").setDesc("C"),
AdamTagParentVo.getNew().setVal("MMS0202").setDesc("D")
)));
tagsForMusic.add(AdamTagParentVo.getNew().setVal("MMS03").setDesc("R&B").setTagVos(Arrays.asList(
AdamTagVo.getNew().setVal("MMS0301").setDesc("E"),
AdamTagVo.getNew().setVal("MMS0302").setDesc("F")
AdamTagParentVo.getNew().setVal("MMS0301").setDesc("E"),
AdamTagParentVo.getNew().setVal("MMS0302").setDesc("F")
)));
adamRdmService.setTagsForMusic(tagsForMusic);
......
package com.liquidnet.service.adam.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.third.easemob.util.EasemobUtil;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.adam.constant.AdamConst;
import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.AdamTagParentVo;
import com.liquidnet.service.adam.dto.vo.AdamTagVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
......@@ -40,14 +52,93 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
RedisUtil redisUtil;
@Autowired
JwtValidator jwtValidator;
@Autowired
private EasemobUtil easemobUtil;
@Value("${liquidnet.reviewer.user-info}")
private Boolean reviewUserInfo;
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamUserInfoVo userInfoVo) {
public ResponseDto<AdamUserInfoVo> edit(AdamUserInfoParam parameter) {
String currentUid = CurrentUtil.getCurrentUid();
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid);
List<AdamTagParentVo> tagMe = parameter.getTagMe();
String ppwd = "138CEF91A62088BD3EF329FA3A6176CB18A",
uuid = null, type = null, created = null, modified = null;
boolean syncChimeFlg = false;// 标识是否需要同步`service-chime`
if (!CollectionUtil.isEmpty(tagMe)) {// 标签不为空则注册或更新IM
String nickname = parameter.getNickname();
boolean syncIMNicknameFlg = null != nickname && !nickname.equals(userInfoVo.getNickname());
Integer voIsComplete = userInfoVo.getIsComplete();
int isComplete = voIsComplete == 0 ? 1 : voIsComplete;
if (isComplete == 1) {// 注册IM
JSONObject jsonObject = null;
try {
// 138cef91a62088bd3ef329fa3a6176cb18a > 138CEF91A62088BD3EF329FA3A6176CB18A > IM@zhengzai
String result = easemobUtil.createUser(userInfoVo.getUid(), ppwd, userInfoVo.getNickname());
jsonObject = JSONObject.parseObject(result);
} catch (Exception e) {
log.error("###编辑资料:注册IM异常[uid:{},mobile:{}]", userInfoVo.getUid(), userInfoVo.getMobile());
}
if (null == jsonObject) {
return ResponseDto.failure(ErrorMapping.get("10014"));
}
if (StringUtil.isNotNull(jsonObject.get("error"))) {
return ResponseDto.failure(ErrorMapping.get("10014"));
}
if (jsonObject.getBooleanValue("activated")) {
isComplete = 11;
type = jsonObject.getString("type");
uuid = jsonObject.getString("uuid");
created = jsonObject.getString(created);
modified = jsonObject.getString("modified");
}
} else if (syncIMNicknameFlg && isComplete == 11) {// 同步IM信息
// TODO: 2021/9/17 暂未接入
}
userInfoVo.setIsComplete(isComplete);
syncChimeFlg = true;
} else {
tagMe = userInfoVo.getTagMe();
}
AdamTagVo sex = parameter.getSex();
syncChimeFlg = syncChimeFlg || !userInfoVo.getSex().getVal().equals(sex.getVal());
if (syncChimeFlg) {// 同步`service-chime`
}
// userInfoVo.setAvatar(parameter.getAvatar());
// userInfoVo.setBackground(parameter.getBackground());
// userInfoVo.setNickname(parameter.getNickname());
userInfoVo.setAvatar(StringUtils.isEmpty(userInfoVo.getAvatar()) ? AdamConst.DEF_URL_AVATAR : userInfoVo.getAvatar());
userInfoVo.setBackground(StringUtils.isEmpty(userInfoVo.getBackground()) ? AdamConst.DEF_URL_BACKGROUND : userInfoVo.getBackground());
userInfoVo.setNickname(userInfoVo.getNickname());
userInfoVo.setSex(sex);
userInfoVo.setBirthday(parameter.getBirthday());
userInfoVo.setArea(parameter.getArea());
// userInfoVo.setSignature(parameter.getSignature());
userInfoVo.setSignature(userInfoVo.getSignature());
userInfoVo.setTagMe(tagMe);
userInfoVo.setUpdatedAt(LocalDateTime.now());
// userInfoVo.setIsComplete(1);
long s = System.currentTimeMillis();
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> updateUserObjs = CollectionUtil.linkedListObjectArr(),
updateUserInfoObjs = CollectionUtil.linkedListObjectArr();
......@@ -58,13 +149,13 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
toMqSqls.add(SqlMapping.get("adam_user_info.edit"));
updateUserInfoObjs.add(new Object[]{
userInfoVo.getNickname(),
JsonUtils.toJson(userInfoVo.getSex()),
JsonUtils.toJson(sex),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
JsonUtils.toJson(userInfoVo.getTagMe()),
JsonUtils.toJson(tagMe),
userInfoVo.getUid()}
);
log.debug("#SQL.GET耗时:{}ms", System.currentTimeMillis() - s);
......@@ -74,6 +165,8 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
SqlMapping.gets(toMqSqls, updateUserObjs, updateUserInfoObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
return ResponseDto.success(userInfoVo.desensitize(reviewUserInfo));
}
@Override
......
......@@ -17,7 +17,7 @@
10011=性别标签无效
10012=音乐风格标签无效
10013=账号与密码不匹配
10014=
10014=编辑无效
10015=入场人ID不能为空
10016=收货地址ID不能为空
10017=入场人不存在,请核实
......
use prod_ln_scene;
#创建集合
db.createCollection("ChimeUserInfoVo");
#创建索引
db.ChimeUserInfoVo.createIndex({userId:"hashed"});
db.ChimeUserInfoVo.createIndex({sex:"hashed"});
db.ChimeUserInfoVo.createIndex({joinPerformanceId:"hashed"});
#创建分片
sh.enableSharding("dev_ln_scene");
sh.shardCollection("dev_ln_scene.ChimeUserInfoVo",{"userId":"hashed"});
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-service-chime</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-chime-impl</artifactId>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redisson</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-chime-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-easemob</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-shumei</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 调用其他服务-->
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-adam</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-kylin</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-dragon</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-platform</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
import java.util.Arrays;
@Slf4j
@EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
public class ServiceChimeApplication implements CommandLineRunner {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(ServiceChimeApplication.class, args);
}
@Override
public void run(String... strings) {
try {
log.info("\n----------------------------------------------------------\n\t" +
"Application '{}' is running! Access URLs:\n\t" +
"Local: \t\thttp://127.0.0.1:{}\n\t" +
"External: \thttp://{}:{}{}/doc.html\n\t" +
"Profile(s): \t{}\n----------------------------------------------------------",
environment.getProperty("spring.application.name"),
environment.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
environment.getProperty("server.port"),
environment.getProperty("server.servlet.context-path"),
Arrays.toString(environment.getActiveProfiles()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.liquidnet.service.chime.biz;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.chime.dto.ChimeJoinUserCountDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.dto.PerformanceDto;
import com.liquidnet.service.chime.utils.DataUtils;
import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo;
import com.liquidnet.service.feign.kylin.api.FeignKylinForChimeClient;
import com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserBiz
* @Package com.liquidnet.service.chime.biz
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/11 16:16
*/
@Slf4j
@Component
public class ChimeUserBiz {
@Autowired
private DataUtils dataUtils;
@Autowired
private FeignKylinForChimeClient feignKylinForChimeClient;
/**
* Json转换list
* @param tags
* @return
*/
public List<ChimeUserTagsMappingVo> buildUserTagVoList(String userId,String tags){
List<ChimeUserTagsMappingVo> userTagList = new ArrayList<>();
if(StringUtil.isNotEmpty(tags)){
ObjectMapper mapper = new ObjectMapper();
try {
userTagList = mapper.readValue(tags, new TypeReference<List<ChimeUserTagsMappingVo>>() {});
} catch (JsonProcessingException e) {
e.printStackTrace();
log.error("createChimeUserInfo msg:{}",e.getMessage());
log.error("createChimeUserInfo error : ",e);
return null;
}
}
//设置用户id
userTagList.stream().forEach(vo -> vo.setUserId(userId));
return userTagList;
}
/**
* Json转换list
* @param tags
* @return
*/
public List<ChimeUserTagDto> buildUserTagDtoList(String userId, String tags){
List<ChimeUserTagsMappingVo> userTagVoList = new ArrayList<>();
List<ChimeUserTagDto> userTagDtoList = new ArrayList<>();
if(StringUtil.isNotEmpty(tags)){
ObjectMapper mapper = new ObjectMapper();
try {
userTagVoList = mapper.readValue(tags, new TypeReference<List<ChimeUserTagsMappingVo>>() {});
} catch (JsonProcessingException e) {
e.printStackTrace();
log.error("createChimeUserInfo msg:{}",e.getMessage());
log.error("createChimeUserInfo error : ",e);
return null;
}
}
//设置用户id
userTagVoList.parallelStream().forEach(vo -> {
ChimeUserTagDto userTagDto = ChimeUserTagDto.getNew();
vo.setUserId(userId);
BeanUtil.copy(vo,userTagDto);
userTagDtoList.add(userTagDto);
});
return userTagDtoList;
}
/**
* 演出voList转换为DtoList
* @param performanceVoList
* @return
*/
public List<PerformanceDto> buildPerformanceDtoList(List<KylinPerformanceVo> performanceVoList){
List<PerformanceDto> performanceDtoList = new ArrayList<>();
//获取在场用户加入人数和指定头像列表
if(StringUtil.isEmpty(performanceVoList)){
return null;
}
List<String> performancesIdList = performanceVoList.stream().map(KylinPerformanceVo::getPerformancesId).collect(Collectors.toList());
//获取在场用户人数统计
List<ChimeJoinUserCountDto> joinUserCountDtoList = dataUtils.getJoinUserCountList(performancesIdList);
for(KylinPerformanceVo performanceVo:performanceVoList){
PerformanceDto dto = PerformanceDto.getNew();
dto.setPerformancesId(performanceVo.getPerformancesId());
dto.setTitle(performanceVo.getTitle());
dto.setImgPoster(performanceVo.getImgPoster());
dto.setTimeStart(performanceVo.getTimeStart());
dto.setTimeEnd(performanceVo.getTimeEnd());
dto.setCityName(performanceVo.getCityName());
dto.setFieldName(performanceVo.getFieldName());
//初始化
dto.setJoinUserCount(0);
if(StringUtil.isNotEmpty(joinUserCountDtoList)){
joinUserCountDtoList.stream().forEach(joinUserCountDto -> {
if(joinUserCountDto.getPerformancesId().equalsIgnoreCase(performanceVo.getPerformancesId())){
dto.setJoinUserCount(joinUserCountDto.getCount());
dto.setAvatarImgList(joinUserCountDto.getAvatarImgList());
}
});
}
// else{
// dto.setJoinUserCount(123);
// List<String> imgList = new ArrayList<>();
// imgList.add("https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png");
// imgList.add("https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png");
// imgList.add("https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png");
// imgList.add("https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png");
// imgList.add("https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png");
// dto.setAvatarImgList(imgList);
// }
performanceDtoList.add(dto);
}
return performanceDtoList;
}
/**
* 根据演出id判断是否在场
* @param performanceId
* @return
*/
public boolean userIsOnline(String performanceId){
boolean isOnline = false;
if(StringUtil.isNotNull(performanceId)){
if(performanceId.equalsIgnoreCase("-1")){
isOnline = true;
}else{
//获取演出状态信息
ResponseDto<KylinPerformanceVo> responseDto = feignKylinForChimeClient.getDetail(performanceId);
if(responseDto.isSuccess()&&StringUtil.isNotNull(responseDto.getData())){
KylinPerformanceVo kylinPerformanceVo = responseDto.getData();
if(kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS6.getIndex()
||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS8.getIndex()
||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS9.getIndex()){
isOnline = true;
}
}
//根据演出状态判断是否全部清退当前演出在场人数
if(!isOnline){
//把所有当前演出在场人清退,重置为云在场
dataUtils.updateUserIsOnline(performanceId);
}
}
}
return isOnline;
}
}
package com.liquidnet.service.chime.config;
import com.liquidnet.common.web.config.WebMvcConfig;
import com.liquidnet.common.web.filter.GlobalAuthorityInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@Configuration
public class OrderWebMvcConfig extends WebMvcConfig {
@Autowired
GlobalAuthorityInterceptor globalAuthorityInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(globalAuthorityInterceptor).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
//package com.liquidnet.service.chime.config;
//
//import feign.RequestInterceptor;
//import feign.RequestTemplate;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//import javax.servlet.http.HttpServletRequest;
//import java.util.Enumeration;
//
///**
// * @author AnJiabin <anjiabin@zhengzai.tv>
// * @version V1.0
// * @Description: 解决feign调用传递header问题
// * @class: SecuringRequestInterceptor
// * @Package com.liquidnet.service.chime.config
// * @Copyright: LightNet @ Copyright (c) 2021
// * @date 2021/9/11 19:22
// */
//@Component
//public class SecuringRequestInterceptor implements RequestInterceptor {
// @Override
// public void apply(RequestTemplate requestTemplate) {
// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
// .getRequestAttributes();
// HttpServletRequest request = attributes.getRequest();
// Enumeration<String> headerNames = request.getHeaderNames();
// if (headerNames != null) {
// while (headerNames.hasMoreElements()) {
// String name = headerNames.nextElement();
// String values = request.getHeader(name);
// requestTemplate.header(name, values);
// }
// }
// }
//}
\ No newline at end of file
package com.liquidnet.service.chime.controller;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.chime.biz.ChimeUserBiz;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto;
import com.liquidnet.service.chime.dto.NewPageResult;
import com.liquidnet.service.chime.dto.PerformanceDto;
import com.liquidnet.service.chime.service.IChimePerformanceService;
import com.liquidnet.service.chime.service.IChimeUserService;
import com.liquidnet.service.feign.kylin.api.FeignKylinForChimeClient;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: 演出相关
* @class: ChimePerformanceController
* @Package com.liquidnet.service.chime.controller
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/6 11:43
*/
@Api(tags = "在场-演出相关")
@RestController
@RequestMapping("performance")
@Validated
public class ChimePerformanceController {
@Autowired
private IChimePerformanceService chimePerformanceService;
@Autowired
private IChimeUserService chimeUserService;
@Autowired
private FeignKylinForChimeClient feignKylinForChimeClient;
@Autowired
private ChimeUserBiz chimeUserBiz;
@GetMapping("myPerformanceList")
@ApiOperation("已购票的演出")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "userId", value = "用户id", required = true),
@ApiImplicitParam(type = "query", dataType = "int", name = "page", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "int", name = "size", value = "每页数量"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间timeStart"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<List<PerformanceDto>> myPerformanceList(
@RequestParam(defaultValue = "") String userId,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size,
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
// List<PerformanceDto> performanceDtoList = new ArrayList<>();
// for(int i=0;i<10;i++){
// PerformanceDto dto = PerformanceDto.getNew();
// dto.setPerformancesId(IDGenerator.get32UUID());
// dto.setTitle("已购票演出00"+(i+1));
// dto.setImgPoster("https://img.zhengzai.tv/other/2021/08/04/865b8c442e7c4fb6a9f3d9b17a8e5b80.jpg");
// dto.setTimeStart("2021-09-08 12:00:00");
// dto.setTimeEnd("2021-10-08 12:00:00");
// dto.setCityName("北京");
// dto.setJoinUserCount(123+(i*2));
// performanceDtoList.add(dto);
// }
ResponseDto<List<KylinPerformanceVo>> responseDto = feignKylinForChimeClient.myPerformancesList();
List<PerformanceDto> performanceDtoList = null;
if(StringUtil.isNotNull(responseDto.getData())){
List<KylinPerformanceVo> kylinPerformanceVoList = responseDto.getData();
performanceDtoList = chimeUserBiz.buildPerformanceDtoList(kylinPerformanceVoList);
}
return ResponseDto.success(performanceDtoList);
}
@GetMapping("localPerformanceList")
@ApiOperation("本地最近演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "cityName", value = "城市名称", required = true),
@ApiImplicitParam(type = "query", dataType = "int", name = "days", value = "时间范围 几天 今天1 三天3。。。"),
@ApiImplicitParam(type = "query", dataType = "int", name = "type", value = "演出类型 101音乐节 102小型演出(livehouse演出) 103巡演 演出类型只有这几个了"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isDiscount", value = "是否会员优惠 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isAdvance", value = "是否优先 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isExclusive", value = "是否会员专属 0 1"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间timeStart"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<HashMap<String, Object>> localPerformanceList(
@RequestParam(defaultValue = "") String cityName,
@RequestParam(defaultValue = "0") int days,
@RequestParam(defaultValue = "0") int type,
@RequestParam(defaultValue = "") Integer isDiscount,
@RequestParam(defaultValue = "") Integer isAdvance,
@RequestParam(defaultValue = "") Integer isExclusive,
// 排序
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
ResponseDto<HashMap<String, Object>> responseDto = feignKylinForChimeClient.localList(cityName, days,type,isDiscount, isAdvance, isExclusive, orderBy, sort);
if(StringUtil.isNotNull(responseDto.getData())){
String jsonStr = JSON.toJSONString(responseDto.getData().get("list"));
List<KylinPerformanceVo> kylinPerformanceVoList = JsonUtils.fromJson(jsonStr, new TypeReference<List<KylinPerformanceVo>>() {});
List<PerformanceDto> performanceDtoList = chimeUserBiz.buildPerformanceDtoList(kylinPerformanceVoList);;
responseDto.getData().put("list",performanceDtoList);
}
return responseDto;
}
@GetMapping("getUserListByCon")
@ApiOperation("查询用户列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "performanceId", value = "演出id", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "sex", value = "性别"),
@ApiImplicitParam(type = "query", dataType = "int", name = "pageNum", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "int", name = "pageSize", value = "每页数量"),
@ApiImplicitParam(type = "query", dataType = "String", name = "tags", value = "兴趣标签"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间timeStart"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<NewPageResult<ChimeUserInfoDto>> getUserListByCon(
@RequestParam(defaultValue = "") String performanceId,
@RequestParam(defaultValue = "") String sex,
@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "") String tags,
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
ChimeUserListQueryReqDto reqDto = ChimeUserListQueryReqDto.getNew();
reqDto.setPerformanceId(performanceId);
reqDto.setPageNum(pageNum);
reqDto.setPageSize(pageSize);
reqDto.setOrderItem(orderBy);
reqDto.setOrderSc(sort);
reqDto.setSex(sex);
reqDto.setTags(tags);
// PageInfo<ChimeUserInfoDto> pageInfo = chimePerformanceService.getUserListByCon(reqDto);
NewPageResult<ChimeUserInfoDto> pageInfo = chimePerformanceService.getUserListByCon(reqDto);
//切换场次
chimeUserService.switchPerformanceId(performanceId);
//根据演出id判断当前用户是否在场
boolean isOnline = chimeUserBiz.userIsOnline(performanceId);
pageInfo.setIsOnline(isOnline);
return ResponseDto.success(pageInfo);
}
}
package com.liquidnet.service.chime.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserRegisterReqDto;
import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto;
import com.liquidnet.service.chime.service.IChimeUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: 社交用户控制类
* @class: ChimeUserController
* @Package com.liquidnet.service.chime.controller
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 15:43
*/
@Api(tags = "在场-用户相关")
@RestController
@RequestMapping("user")
@Validated
@Slf4j
public class ChimeUserController {
@Autowired
private IChimeUserService chimeUserService;
@ApiOperationSupport(order = 5)
@ApiOperation(value = "社交用户注册")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "userId", value = "用户id"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "nickname", value = "昵称"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "sex", value = "性别"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "tags", value = "兴趣标签[{\"tagCode\":\"tag1\",\"tagDesc\":\"tag描述\"},{\"tagCode\":\"tag2\",\"tagDesc\":\"tag描述2\"}]"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "performanceId", value = "演出id")
})
@PostMapping(value = {"register"})
public ResponseDto<String> register(@RequestParam @Validated String userId
, @RequestParam @Validated String nickname
, @RequestParam @Validated String sex
, @RequestParam @Validated String tags
, @RequestParam @Validated String performanceId
) {
ChimeUserRegisterReqDto reqDto = ChimeUserRegisterReqDto.getNew();
reqDto.setUserId(userId);
reqDto.setNickName(nickname);
reqDto.setSex(sex);
reqDto.setTags(tags);
if(StringUtil.isNotEmpty(performanceId)){
reqDto.setPerformanceId(performanceId);
}else{
//云在场
reqDto.setPerformanceId("-1");
}
ChimeUserInfoDto chimeUserInfoDto = chimeUserService.createChimeUserInfo(reqDto);
if(StringUtil.isNull(chimeUserInfoDto)){
return ResponseDto.failure("chime创建社交用户失败!");
}
return ResponseDto.success("创建成功!");
}
@ApiOperationSupport(order = 5)
@ApiOperation(value = "用户信息修改同步")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "userId", value = "用户id"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "nickname", value = "昵称"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "sex", value = "性别"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "tags", value = "兴趣标签(多个用逗号隔开)")
})
@PostMapping(value = {"updateUserTags"})
public ResponseDto<Boolean> updateUserTags(@RequestParam @Validated String userId
, @RequestParam @Validated String nickname
, @RequestParam @Validated String sex
, @RequestParam @Validated String tags
) {
ChimeUserUpdateReqDto reqDto = ChimeUserUpdateReqDto.getNew();
reqDto.setUserId(userId);
reqDto.setNickName(nickname);
reqDto.setSex(sex);
reqDto.setTags(tags);
//更新用户信息
Boolean rs = chimeUserService.updateUserInfo(reqDto);
return ResponseDto.success(rs);
}
// @GetMapping("getUserByUserId")
// @ApiOperation("查询单个用户信息")
// @ApiImplicitParams({
// @ApiImplicitParam(type = "query", dataType = "String", name = "userId", value = "用户ID", required = true)
// })
// public ResponseDto<ChimeUserInfoDto> getUserByUserId(
// @RequestParam(defaultValue = "") String userId
// ) {
// ChimeUserInfoDto userInfoDto = chimeUserService.getUserByUserId(userId);
// return ResponseDto.success(userInfoDto);
// }
}
package com.liquidnet.service.chime.service.impl;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.dto.NewPageResult;
import com.liquidnet.service.chime.service.IChimePerformanceService;
import com.liquidnet.service.chime.utils.ObjectUtil;
import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimePerformanceServiceImpl
* @Package com.liquidnet.service.chime.service.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/9 12:04
*/
@Slf4j
@Service
public class ChimePerformanceServiceImpl implements IChimePerformanceService {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 用户关联查询
* @param reqDto
* @return
*/
@Override
public NewPageResult<ChimeUserInfoDto> getUserListByCon(ChimeUserListQueryReqDto reqDto) {
NewPageResult<ChimeUserInfoDto> pagedResult = ObjectUtil.getChimeUserInfoDtoPagedResult();
try {
int pageNum = reqDto.getPageNum() - 1;
int pageSize = reqDto.getPageSize();
//初始化分页
pagedResult.setPageSize(pageSize).setCurrentPage(pageNum+1);
//获取总数
Criteria criteria = Criteria.where("joinPerformanceId").is(reqDto.getPerformanceId());
if(StringUtil.isNotEmpty(reqDto.getTags())){
criteria = criteria.and("userTagsVoList.tagCode").in(Arrays.asList(reqDto.getTags().split(",")));
}
if(StringUtil.isNotEmpty(reqDto.getSex())){
criteria = criteria.and("sex").is(reqDto.getSex());
}
Pageable pageableCount = PageRequest.of(0, 1000); // get 5 profiles on a page
Query queryCount = Query.query(criteria);
queryCount.fields().include("1");
queryCount.with(pageableCount);
// 排序
// 查询总数
long startTime = System.currentTimeMillis();
int count = (int) mongoTemplate.count(queryCount, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName());
long endTime = System.currentTimeMillis();
log.info("查询标签数据 count:{} 耗时:{}ms",count,endTime-startTime);
// 每页五个
Pageable pageable = PageRequest.of(pageNum, pageSize); // get 5 profiles on a page
Query query = Query.query(criteria);
query.with(pageable);
startTime = System.currentTimeMillis();
List<ChimeUserInfoVo> chimeUserInfoVoList = mongoTemplate.find(query, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName());
endTime = System.currentTimeMillis();
log.info("查询标签数据 分页数据 耗时:{}ms",endTime-startTime);
//处理Vo
List<ChimeUserInfoDto> dtoList = new ArrayList<>();
startTime = System.currentTimeMillis();
for (ChimeUserInfoVo item : chimeUserInfoVoList) {
ChimeUserInfoDto dto = ChimeUserInfoDto.getNew();
BeanUtil.copy(item,dto);
dto.setPassWord("123456");
//获取标签转换
List<ChimeUserTagsMappingVo> userTagsMappingVoList = item.getUserTagsVoList();
List<ChimeUserTagDto> userTagDtoList = ObjectUtil.getChimeUserTagDtoList();
userTagsMappingVoList.stream().forEach(chimeUserTagsMappingVo -> {
ChimeUserTagDto userTagDto = ChimeUserTagDto.getNew();
BeanUtil.copy(chimeUserTagsMappingVo,userTagDto);
userTagDtoList.add(userTagDto);
});
dto.setUserTags(userTagDtoList);
dtoList.add(dto);
}
endTime = System.currentTimeMillis();
log.info("dto转换vo 耗时:{}ms",endTime-startTime);
pagedResult.setList(dtoList).setTotal(count, pageSize);
} catch (Exception e) {
e.printStackTrace();
}
return pagedResult;
}
}
package com.liquidnet.service.chime.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.third.easemob.util.EasemobUtil;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.chime.biz.ChimeUserBiz;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserRegisterReqDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto;
import com.liquidnet.service.chime.service.IChimeUserService;
import com.liquidnet.service.chime.utils.DataUtils;
import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserServiceImpl
* @Package com.liquidnet.service.chime.service.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 16:17
*/
@Slf4j
@Service
public class ChimeUserServiceImpl implements IChimeUserService {
@Autowired
private EasemobUtil easemobUtil;
@Autowired
private DataUtils dataUtils;
@Autowired
private RedisUtil redisUtil;
@Autowired
private ChimeUserBiz chimeUserBiz;
@Override
public JSONObject register(ChimeUserRegisterReqDto reqDto) {
String result = easemobUtil.createUser(reqDto.getUserId(),"123456",reqDto.getNickName());
log.info("chime easemobUtil.createUser result:{}",result);
JSONObject jsonObject = JSONObject.parseObject(result);
return jsonObject;
}
@Override
public ChimeUserInfoDto createChimeUserInfo(ChimeUserRegisterReqDto reqDto) {
try {
String rk = AdamRedisConst.INFO_USER.concat(reqDto.getUserId());
AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk);
ChimeUserInfoDto chimeUserInfoDto = ChimeUserInfoDto.getNew();
chimeUserInfoDto.setUserId(reqDto.getUserId());
chimeUserInfoDto.setSex(reqDto.getSex());
chimeUserInfoDto.setUserName(vo.getUid());
chimeUserInfoDto.setUserMobile(vo.getMobile());
chimeUserInfoDto.setAvatar(vo.getAvatar());
chimeUserInfoDto.setJoinPerformanceId(reqDto.getPerformanceId());
chimeUserInfoDto.setBirthday(vo.getBirthday());
chimeUserInfoDto.setSignature(vo.getSignature());
chimeUserInfoDto.setArea(vo.getArea());
List<ChimeUserTagDto> userTagList = chimeUserBiz.buildUserTagDtoList(reqDto.getUserId(), reqDto.getTags());
chimeUserInfoDto.setUserTags(userTagList);
//插入mongo
dataUtils.createChimeUser(chimeUserInfoDto);
return chimeUserInfoDto;
} catch (Exception e) {
log.error("创建社交用户异常 e:{}",e.getMessage());
}
return null;
}
@Override
public boolean updateUserInfo(ChimeUserUpdateReqDto reqDto) {
try {
String rk = AdamRedisConst.INFO_USER.concat(reqDto.getUserId());
AdamUserInfoVo vo = (AdamUserInfoVo) redisUtil.get(rk);
//插入userTagMapping
ChimeUserInfoVo chimeUserInfoVo = ChimeUserInfoVo.getNew();
BeanUtil.copy(reqDto,chimeUserInfoVo);
chimeUserInfoVo.setUserName(vo.getUid());
chimeUserInfoVo.setUserMobile(vo.getMobile());
chimeUserInfoVo.setAvatar(vo.getAvatar());
List<ChimeUserTagsMappingVo> userTagList = chimeUserBiz.buildUserTagVoList(reqDto.getUserId(),reqDto.getTags());
chimeUserInfoVo.setUserTagsVoList(userTagList);
dataUtils.updateChimeUser(chimeUserInfoVo);
} catch (Exception e) {
e.printStackTrace();
log.error("updateUserInfo error msg:{}",e.getMessage());
log.error("updateUserInfo error info:{}",e);
return false;
}
return true;
}
@Override
public boolean updateUserTags(ChimeUserUpdateReqDto reqDto) {
//插入userTagMapping
List<ChimeUserTagsMappingVo> userTagList = chimeUserBiz.buildUserTagVoList(reqDto.getUserId(),reqDto.getTags());
return dataUtils.updateUserTagMapping(reqDto.getUserId(),userTagList);
}
@Override
public ChimeUserInfoDto getUserByUserId(String userId) {
ChimeUserInfoVo chimeUserInfoVo = dataUtils.getUserByUserId(userId);
if(StringUtil.isNotNull(chimeUserInfoVo)){
ChimeUserInfoDto chimeUserInfoDto = ChimeUserInfoDto.getNew();
BeanUtil.copy(chimeUserInfoVo,chimeUserInfoDto);
chimeUserInfoDto.setPassWord("123456");
//获取标签
chimeUserInfoDto.setUserTags(dataUtils.getUserTagList(userId));
return chimeUserInfoDto;
}
return null;
}
@Override
public boolean switchPerformanceId(String performanceId) {
String userId = CurrentUtil.getCurrentUid();
//获取社交用户
ChimeUserInfoVo chimeUserInfoVo = dataUtils.getUserByUserId(userId);
if(StringUtil.isNotNull(chimeUserInfoVo)){
//判断演出id是否需要切换
if(!chimeUserInfoVo.getJoinPerformanceId().equalsIgnoreCase(performanceId)){
chimeUserInfoVo.setJoinPerformanceId(performanceId);
dataUtils.updateChimeUser(chimeUserInfoVo);
}
}
return true;
}
}
package com.liquidnet.service.chime.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.chime.constant.ChimeConstant;
import com.liquidnet.service.chime.dto.ChimeJoinUserCountDto;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Slf4j
@Component
public class DataUtils {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private RedisUtil redisUtil;
/**
* 注册社交用户
* @param chimeUserInfoDto
*/
public void createChimeUser(ChimeUserInfoDto chimeUserInfoDto){
ChimeUserInfoVo chimeUserInfoVo = ChimeUserInfoVo.getNew();
BeanUtil.copy(chimeUserInfoDto,chimeUserInfoVo);
chimeUserInfoVo.setMid(ChimeConstant.getNewUserId());
mongoTemplate.save(chimeUserInfoVo,ChimeUserInfoVo.class.getSimpleName());
}
/**
* 注册社交用户
*/
public void createBatchChimeUser(List<ChimeUserInfoVo> chimeUserInfoVoList){
mongoTemplate.insert(chimeUserInfoVoList,ChimeUserInfoVo.class.getSimpleName());
}
/**
* 修改社交用户
* @param chimeUserInfoVo
*/
public void updateChimeUser(ChimeUserInfoVo chimeUserInfoVo) {
Query query = Query.query(Criteria.where("userId").is(chimeUserInfoVo.getUserId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(chimeUserInfoVo)));
UpdateResult result = mongoTemplate.updateFirst(query,update,ChimeUserInfoVo.class.getSimpleName());
log.info("updateChimeUser result:{}",result.toString());
}
/**
* 创建用户标签
* @param chimeUserTagsMappingVoList
*/
public void createUserTagMapping(List<ChimeUserTagsMappingVo> chimeUserTagsMappingVoList){
mongoTemplate.insert(chimeUserTagsMappingVoList,ChimeUserTagsMappingVo.class.getSimpleName());
}
/**
* 修改用户标签
* @param userId
* @param chimeUserTagsMappingVoList
* @return
*/
public boolean updateUserTagMapping(String userId,List<ChimeUserTagsMappingVo> chimeUserTagsMappingVoList){
Query query = Query.query(Criteria.where("userId").is(userId));
// 根据条件删除(可删除多条)
mongoTemplate.remove(query,ChimeUserTagsMappingVo.class.getSimpleName());
Collection rsList = mongoTemplate.insert(chimeUserTagsMappingVoList,ChimeUserTagsMappingVo.class.getSimpleName());
return rsList.size()>0;
}
/**
* 获取单个用户信息
* @param userId
* @return
*/
public ChimeUserInfoVo getUserByUserId(String userId){
Query query = Query.query(Criteria.where("userId").is(userId));
ChimeUserInfoVo chimeUserInfoVo = mongoTemplate.findOne(query,ChimeUserInfoVo.class,ChimeUserInfoVo.class.getSimpleName());
return chimeUserInfoVo;
}
/**
* 获取用户标签
* @param userId
* @return
*/
public List<ChimeUserTagDto> getUserTagList(String userId){
Query query= Query.query(Criteria.where("userId").is(userId));
return mongoTemplate.find(query, ChimeUserTagDto.class,ChimeUserTagsMappingVo.class.getSimpleName());
}
/**
* 根据演出idList获取在场人数和默认头像图片(最多获取5个url)
* @param performanceIdList
* @return
*/
public List<ChimeJoinUserCountDto> getJoinUserCountList(List<String> performanceIdList){
Aggregation agg = Aggregation.newAggregation(
// 挑选所需的字段,类似select *,*所代表的字段内容
Aggregation.project("joinPerformanceId","avatar"),
// sql where 语句筛选符合条件的记录
Aggregation.match(Criteria.where("joinPerformanceId").in(performanceIdList)),
// 分组条件,设置分组字段
Aggregation.group("joinPerformanceId")
.first("joinPerformanceId").as("joinPerformanceId")
.addToSet("avatar").as("avatarArray")
.count().as("totalCount"),
// 排序(根据某字段排序 倒序)
// Aggregation.sort(Sort.Direction.DESC,"startDate"),
// 重新挑选字段
Aggregation.project("joinPerformanceId","totalCount","avatarArray")
);
AggregationResults<Document> results = mongoTemplate.aggregate(agg, ChimeUserInfoVo.class.getSimpleName(), Document.class);
List<Document> mappedResultsList= results.getMappedResults();
//拼装返回结果
List<ChimeJoinUserCountDto> joinUserCountDtoList = new ArrayList<>();
mappedResultsList.stream().forEach(document -> {
ChimeJoinUserCountDto dto = ChimeJoinUserCountDto.getNew();
dto.setPerformancesId(document.getString("joinPerformanceId"));
dto.setCount(document.getInteger("totalCount"));
List<String> ppl2 = document.getList("avatarArray",String.class);
dto.setAvatarImgList(ppl2);
joinUserCountDtoList.add(dto);
});
log.debug("排序后的code列表2:[{}]",results);
return joinUserCountDtoList;
}
/**
* 根据演出id更新在场演出id
* @param performanceId
* @return
*/
public boolean updateUserIsOnline(String performanceId){
Query query = Query.query(Criteria.where("joinPerformanceId").is(performanceId));
Update update = Update.update("joinPerformanceId","-1");
UpdateResult updateResult = mongoTemplate.updateMulti(query,update,ChimeUserInfoVo.class,ChimeUserInfoVo.class.getSimpleName());
return updateResult.getModifiedCount()>0;
}
}
package com.liquidnet.service.chime.utils;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.dto.NewPageResult;
import java.util.ArrayList;
public class ObjectUtil {
private static final NewPageResult<ChimeUserInfoDto> chimeUserInfoDtoPagedResult = new NewPageResult<>();
private static final ArrayList<ChimeUserTagDto> chimeUserTagDtoList = new ArrayList<>();
public static NewPageResult<ChimeUserInfoDto> getChimeUserInfoDtoPagedResult() {
return chimeUserInfoDtoPagedResult.clone();
}
public static ArrayList<ChimeUserTagDto> getChimeUserTagDtoList() {
return (ArrayList<ChimeUserTagDto>)chimeUserTagDtoList.clone();
}
}
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: dev
security:
username: user
password: user123
eureka:
host: 127.0.0.1:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-chime
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: prod
security:
username: user
password: user123
eureka:
host: 172.17.207.189:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-chime
\ No newline at end of file
#eurekaServer配置
eureka:
client:
register-with-eureka: false
fetch-registry: true
serviceUrl:
defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
#configServer配置
spring:
cloud:
config:
# uri: http://39.105.38.151:7002/support-config
# uri: http://39.106.122.201:7002/support-config
# uri: http://127.0.0.1:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
discovery:
enabled: true
service-id: liquidnet-support-config
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: test
security:
username: user
password: user123
eureka:
host: 172.17.207.177:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-chime
package com.liquidnet.service.chime.test;
import com.liquidnet.common.third.easemob.util.EasemobUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestEasemob
* @Package com.liquidnet.service.chime.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/7 11:35
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestEasemob {
@Autowired
private EasemobUtil easemobUtil;
// @Value("${liquidnet.easemob.api-url}")
// private static String REQUEST_HOST = "https://a1.easemob.com";
// @Value("${liquidnet.easemob.org-name}")
// private static String ORG_NAME = "1106210901175651";
// @Value("${liquidnet.easemob.app-name}")
// private static String APP_NAME = "demo";
// @Value("${liquidnet.easemob.client-id}")
// private static String CLIENT_ID = "YXA6x4Xs7cYDQcOv6BPuM3hUDA";
// @Value("${liquidnet.easemob.client-secret}")
// private static String CLIENT_SECRET = "YXA6olr2qaW65xlkFixS81kiWnplrW4";
@Test
public void createUser(){
easemobUtil.createUser("anjiabin11","anjiabin11");
// EasemobUtil.createUsers();
}
}
package com.liquidnet.service.chime.test;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestRedis
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/29 13:36
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestRedis {
@Autowired
private RedisUtil redisUtil;
@Test
public void getPayCodeList() {
}
}
package com.liquidnet.service.chime.test;
import com.liquidnet.common.third.shumei.util.ShumeiUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestShumei
* @Package com.liquidnet.service.chime.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/8 13:43
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestShumei {
@Autowired
private ShumeiUtil shumeiUtil;
@Test
public void checkText(){
// System.out.println(shumeiUtil.checkText("user123","甜梅号的小茉莉"));
// System.out.println(shumeiUtil.checkText("user123","158****8858"));
System.out.println(shumeiUtil.checkText("user123","投毒"));
}
@Test
public void checkImage(){
//暴力血腥
// String imageUrl = "https://image11.m1905.cn/uploadfile/s2010/0603/20100603015651967.jpg";
//涉黄
// String imageUrl = "https://img2.baidu.com/it/u=276463273,2526848266&fm=26&fmt=auto&gp=0.jpg";
// shumeiUtil.checkImage("user123",imageUrl);
// String imageUrl = "https://pic.zhengzai.tv/201504/99/ED/1430210597_92262BF907AF914B95A0FC33C3F33BF6.jpg";
// shumeiUtil.checkImage("user123",imageUrl);
// String imageUrl = "https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eoJpPNmEbdMy2icLxUmVOXn8nowU17d2ziaQqT1O5npf8D2UWz2HVhSpFZichkrAzVdFMicQ4100J7TmA/132";
String imageUrl = "https://thirdqq.qlogo.cn/g?b=oidb&k=1wgQpJ7GaNZhTw8L9M8VSQ&s=100&t=1562575762";
shumeiUtil.checkImage("user123",imageUrl);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-service</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-chime</artifactId>
<packaging>pom</packaging>
<modules>
<module>liquidnet-service-chime-impl</module>
</modules>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-web</artifactId>
</dependency>
</dependencies>
</project>
package com.liquidnet.service;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestRedisConnection
* @Package com.liquidnet.service
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/8/31 11:17
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestRedisConnection {
@Autowired
private RedisUtil redisUtil;
@Test
public void getPayCodeList(){
// List<Object> payCodeList = this.getPrefixKeyValue("dragon:pay:code:*");
// for(Object payCode:payCodeList){
// System.out.println("object=== "+ JsonUtils.toJson(payCode));
// }
//设置新的redis
// for(int i=0 ;i<1000;i++){
// System.out.println("第"+i+"个 "+redisUtil.get("dragon:pay:test:Pay"+i));
// }
String ss = "[\n" +
" \"com.liquidnet.service.dragon.dto.DragonOrdersDto\",\n" +
" {\n" +
" \"mid\": null,\n" +
" \"orderId\": \"20210810193315226361725\",\n" +
" \"status\": 0,\n" +
" \"code\": \"PAY20210810193315191566757\",\n" +
" \"type\": \"TICKET\",\n" +
" \"price\": [\n" +
" \"java.math.BigDecimal\",\n" +
" 0.1\n" +
" ],\n" +
" \"name\": \"正在现场\",\n" +
" \"detail\": \"正在现场\",\n" +
" \"orderCode\": \"ORDER0001\",\n" +
" \"clientIp\": \"127.0.0.1\",\n" +
" \"notifyUrl\": \"devdragon.zhengzai.tv\",\n" +
" \"notifyStatus\": 0,\n" +
" \"paymentType\": \"WAPALIPAY\",\n" +
" \"paymentId\": null,\n" +
" \"paymentAt\": \"2021-08-10T19:33:15.226\",\n" +
" \"finishedAt\": null,\n" +
" \"createdAt\": \"2021-08-10T19:33:15.226\",\n" +
" \"updatedAt\": null,\n" +
" \"deletedAt\": null\n" +
" }\n" +
"]";
int thredNum = 2000;
ExecutorService exec = Executors.newFixedThreadPool(thredNum);
for (int i = 0; i < thredNum; i++) {
final int k = i;
log.info("==================" + k);
// System.out.println("第"+i+"个 "+redisUtil.get("dragon:pay:test:Pay"+i));
exec.execute(() -> {
for(int j=0 ;j<1000;j++){
System.out.println("第"+j+"个 set");
redisUtil.set("dragon:pay:test:Pay"+k+j,ss);
}
});
try { Thread.sleep(100L); } catch (InterruptedException ignored) {}
}
exec.shutdown();
// List<String> keys = getPrefixKeys("dragon:pay:code:*");
// log.info("总共迁移数据条数==="+keys.size());
// DragonOrdersDto dragonOrdersDto = DragonOrdersDto.getNew();
// for(String key:keys){
// Object obj = redisUtil.getRedisTemplateByDb(0).opsForValue().get(key);
// if(obj!=null){
// dragonOrdersDto = (DragonOrdersDto) obj;
// }
// redisUtil.set(key,dragonOrdersDto);
// }
}
}
package com.liquidnet.service.kylin;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestDataUtil
* @Package com.liquidnet.service.kylin
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/12 14:37
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestDataUtil {
@Autowired
private DataUtils dataUtils;
@Test
public void myPerformancesList(){
List<KylinPerformanceVo> kylinPerformanceVoList = dataUtils.myPerformancesList("270788673588551684937456");
for(KylinPerformanceVo vo:kylinPerformanceVoList){
log.info("performanceid:{} ",vo.getPerformancesId());
log.info("title:{}",vo.getTitle());
}
}
}
......@@ -38,6 +38,7 @@
<module>liquidnet-service-executor-all</module>
<module>liquidnet-service-consumer-all</module>
<module>liquidnet-service-sweet</module>
<module>liquidnet-service-chime</module>
<module>liquidnet-service-candy</module>
<!-- <module>liquidnet-service-example</module>-->
<!-- <module>liquidnet-service-sequence</module>-->
......
spring:
application:
name: liquidnet-support-eureka
profiles:
active: dev-server1
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment