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

Commit b12c8daf authored by 张国柄's avatar 张国柄

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

parents 322f8e89 d38367bd
......@@ -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);
}
......@@ -14,7 +14,5 @@ import com.liquidnet.service.chime.dto.NewPageResult;
* @date 2021/9/9 12:03
*/
public interface IChimePerformanceService {
// PageInfo<ChimeUserInfoDto> getUserListByCon(ChimeUserListQueryReqDto reqDto);
NewPageResult<ChimeUserInfoDto> getUserListByCon(ChimeUserListQueryReqDto reqDto);
}
......@@ -4,6 +4,8 @@ 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
......@@ -36,6 +38,8 @@ public class ChimeUserInfoVo {
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() {
......
......@@ -49,6 +49,11 @@ liquidnet:
port: 27017
user: admin
pwd: S&y$6d*JwJ
chime:
host: s-2ze04ffc16a54af4-pub.mongodb.rds.aliyuncs.com:3717
port: 3717
user: admin
pwd: S&y$6d*JwJ
service:
adam:
url-pay:
......
......@@ -49,6 +49,11 @@ liquidnet:
port: 27017
user: admin
pwd: S&y$6d*JwJ
chime:
host: s-2ze04ffc16a54af4-pub.mongodb.rds.aliyuncs.com:3717
port: 3717
user: admin
pwd: S&y$6d*JwJ
service:
adam:
url-pay:
......@@ -61,6 +66,7 @@ liquidnet:
pay: http://testdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://testdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://testkylin.zhengzai.tv/kylin/order/syncOrder
url: http://testkylin.zhengzai.tv/kylin
candy:
url: http://testcandy.zhengzai.tv/candy
order:
......@@ -134,6 +140,12 @@ liquidnet:
android:
appkey: 5c6cf6cbb465f592e4000bae
appMasterSecret: dmsho74wlpd1hp7vrwp9bjehzwo29pza
easemob:
api-url: https://a1.easemob.com
org-name: 1106210901175651
app-name: demo
client-id: YXA6x4Xs7cYDQcOv6BPuM3hUDA
client-secret: YXA6olr2qaW65xlkFixS81kiWnplrW4
#application-test-end
......@@ -109,7 +109,7 @@ spring:
transportMode: "NIO"
data:
mongodb:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
uri: mongodb://${liquidnet.mongodb.chime.user}:${liquidnet.mongodb.chime.pwd}@${liquidnet.mongodb.chime.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database}
# -----------------------------------------------------------
......
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>
package com.liquidnet.service.chime.config;
package com.liquidnet.service.feign.kylin.config;
import feign.RequestInterceptor;
import feign.RequestTemplate;
......
......@@ -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("KylinCheckUserVo");
db.createCollection("ChimeUserTagsMappingVo");
db.createCollection("ChimeUserInfoVo");
#创建索引
db.KylinCheckUserPerformanceVo.createIndex({checkUserId:"hashed"});
db.KylinCheckUserVo.createIndex({merchantId:"hashed"});
db.KylinCheckUserVo.createIndex({mobile:"hashed"});
db.KylinOrderRefundEntitiesVo.createIndex({orderRefundsId:"hashed"});
db.KylinOrderRefundEntitiesVo.createIndex({orderTicketEntitiesId:"hashed"});
db.KylinOrderRefundPicVo.createIndex({orderRefundsId:"hashed"});
db.KylinOrderRefundsVo.createIndex({orderRefundsId:"hashed"});
db.KylinOrderRefundsVo.createIndex({orderTicketsId:"hashed"});
db.KylinOrderTicketEntitiesVo.createIndex({orderTicketEntitiesId:"hashed"});
db.KylinOrderTicketEntitiesVo.createIndex({orderId:"hashed"});
db.KylinOrderTicketVo.createIndex({orderTicketsId:"hashed"});
db.KylinOrderTicketVo.createIndex({orderCode:"hashed"});
db.KylinOrderTicketVo.createIndex({userId:"hashed"});
db.KylinPerformanceVo.createIndex({performancesId:"hashed"});
db.KylinPerformanceMisVo.createIndex({performancesId:"hashed"});
db.KylinTicketPartnerVo.createIndex({ticketsId:"hashed"});
db.KylinTicketPartnerVo.createIndex({timesId:"hashed"});
db.KylinTicketTimesPartnerVo.createIndex({performancesId:"hashed"});
db.KylinTicketTimesPartnerVo.createIndex({ticketTimesId:"hashed"});
db.PerformanceMemberAuditParam.createIndex({performancesId:"hashed"});
db.AdminUpushVo.createIndex({upushId:"hashed"});
db.ChimeUserInfoVo.createIndex({userId:"hashed"});
db.ChimeUserInfoVo.createIndex({sex:"hashed"});
db.ChimeUserInfoVo.createIndex({joinPerformanceId:"hashed"});
#创建分片
sh.enableSharding("prod_ln_scene");
sh.shardCollection("prod_ln_scene.KylinCheckUserPerformanceVo",{"checkUserId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinCheckUserVo",{"checkUserId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinOrderRefundEntitiesVo",{"orderRefundsEntitiesId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinOrderRefundPicVo",{"refundPicId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinOrderRefundsVo",{"orderRefundsId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinOrderTicketEntitiesVo",{"orderTicketEntitiesId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinOrderTicketVo",{"orderTicketsId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinPerformanceVo",{"performancesId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinRoadShowVo",{"roadShowsId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinPerformanceMisVo",{"performancesId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinTicketPartnerVo",{"ticketsId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinTicketTimesPartnerVo",{"ticketTimesId":"hashed"});
sh.shardCollection("prod_ln_scene.PerformanceMemberAuditParam",{"performancesId":"hashed"});
sh.shardCollection("prod_ln_scene.AdminUpushVo",{"upushId":"hashed"});
sh.enableSharding("dev_ln_scene");
sh.shardCollection("dev_ln_scene.ChimeUserInfoVo",{"userId":"hashed"});
......@@ -3,9 +3,11 @@ 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;
......@@ -60,6 +62,35 @@ public class ChimeUserBiz {
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
......@@ -93,16 +124,17 @@ public class ChimeUserBiz {
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);
}
// 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;
......
package com.liquidnet.service.chime.controller;
import com.alibaba.fastjson.JSONObject;
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.ChimeUserRegisterRespDto;
import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto;
import com.liquidnet.service.chime.service.IChimeUserService;
import io.swagger.annotations.Api;
......@@ -16,7 +14,10 @@ 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.*;
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>
......@@ -46,7 +47,7 @@ public class ChimeUserController {
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "performanceId", value = "演出id")
})
@PostMapping(value = {"register"})
public ResponseDto<ChimeUserRegisterRespDto> register(@RequestParam @Validated String userId
public ResponseDto<String> register(@RequestParam @Validated String userId
, @RequestParam @Validated String nickname
, @RequestParam @Validated String sex
, @RequestParam @Validated String tags
......@@ -63,18 +64,11 @@ public class ChimeUserController {
//云在场
reqDto.setPerformanceId("-1");
}
//获取等前登陆用户 CurrentUtil.getCurrentUid()
JSONObject jsonObject = chimeUserService.register(reqDto);
if(StringUtil.isNotNull(jsonObject.get("error"))){
return ResponseDto.failure(jsonObject.get("error").toString());
ChimeUserInfoDto chimeUserInfoDto = chimeUserService.createChimeUserInfo(reqDto);
if(StringUtil.isNull(chimeUserInfoDto)){
return ResponseDto.failure("chime创建社交用户失败!");
}
ChimeUserRegisterRespDto respDto = ChimeUserRegisterRespDto.getNew();
respDto = JSONObject.parseObject(jsonObject.toJSONString(),ChimeUserRegisterRespDto.class);
if(respDto.getActivated()){
chimeUserService.createChimeUserInfo(reqDto);
}
return ResponseDto.success(respDto);
return ResponseDto.success("创建成功!");
}
@ApiOperationSupport(order = 5)
......@@ -97,21 +91,19 @@ public class ChimeUserController {
reqDto.setSex(sex);
reqDto.setTags(tags);
//更新用户信息
chimeUserService.updateUserInfo(reqDto);
//更新标签
boolean rs = chimeUserService.updateUserTags(reqDto);
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);
}
// @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);
// }
}
......@@ -2,7 +2,6 @@ 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.base.PagedResult;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto;
......@@ -15,9 +14,7 @@ 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.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.*;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
......@@ -37,10 +34,9 @@ import java.util.List;
*/
@Slf4j
@Service
public class ChimePerformanceServiceImpl implements IChimePerformanceService{
public class ChimePerformanceServiceImpl implements IChimePerformanceService {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 用户关联查询
* @param reqDto
......@@ -54,96 +50,66 @@ public class ChimePerformanceServiceImpl implements IChimePerformanceService{
int pageSize = reqDto.getPageSize();
//初始化分页
pagedResult.setPageSize(pageSize).setCurrentPage(pageNum+1);
//获取总数
// 排序 分页
Pageable pageable = PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.DESC, "userId"));
//关联表
LookupOperation lookupToLots = LookupOperation.newLookup().
from("ChimeUserTagsMappingVo").//关联表名 lots
localField("userId").//关联字段
foreignField("userId").//主表关联字段对应的次表字段
as("userTag");//查询结果集合名
//条件
Criteria criteria = Criteria.where("joinPerformanceId").is(reqDto.getPerformanceId());
if(StringUtil.isNotEmpty(reqDto.getTags())){
criteria = criteria.and("userTag.tagCode").in(Arrays.asList(reqDto.getTags().split(",")));
criteria = criteria.and("userTagsVoList.tagCode").in(Arrays.asList(reqDto.getTags().split(",")));
}
if(StringUtil.isNotEmpty(reqDto.getSex())){
criteria = criteria.and("sex").is(reqDto.getSex());
}
AggregationOperation matchToLots = Aggregation.match(criteria);
ProjectionOperation project = Aggregation.project("mid","userId","sex","avatar","joinPerformanceId");
// if (!reqDto.getPerformanceId().isEmpty()) {
// criteria.and("title").regex(".*?\\" + reqDto.getTitle());
// }
project.andInclude("_id");
//获取总数
Aggregation newAggregation = Aggregation.newAggregation(lookupToLots,matchToLots,project);
List<ChimeUserInfoVo> tempChimeUserInfoVoList = mongoTemplate.aggregate(newAggregation,ChimeUserInfoVo.class.getSimpleName(),ChimeUserInfoVo.class).getMappedResults();
long count = tempChimeUserInfoVoList.size();
Pageable pageableCount = PageRequest.of(0, 1000); // get 5 profiles on a page
Query queryCount = Query.query(criteria);
queryCount.fields().include("1");
queryCount.with(pageableCount);
// 排序
//查询分页数据
SkipOperation skipOperation = Aggregation.skip(pageNum*pageSize);
LimitOperation limitOperation = Aggregation.limit(pageSize);
Aggregation aggregation = Aggregation.newAggregation(lookupToLots,matchToLots,project,skipOperation,limitOperation);
// 查询总数
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);
List<ChimeUserInfoVo> chimeUserInfoVoList = mongoTemplate.aggregate(aggregation,ChimeUserInfoVo.class.getSimpleName(),ChimeUserInfoVo.class).getMappedResults();
//处理Vo
List<ChimeUserInfoDto> dtoList = new ArrayList<>();
startTime = System.currentTimeMillis();
for (ChimeUserInfoVo item : chimeUserInfoVoList) {
ChimeUserInfoDto voData = ChimeUserInfoDto.getNew();
BeanUtil.copy(item,voData);
voData.setPassWord("123456");
//获取标签
Query query= Query.query(Criteria.where("userId").is(item.getUserId())).with(Sort.by(Sort.Order.asc("tagCode")));
List<ChimeUserTagDto> tagVoList = mongoTemplate.find(query, ChimeUserTagDto.class,ChimeUserTagsMappingVo.class.getSimpleName());
voData.setUserTags(tagVoList);
dtoList.add(voData);
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;
}
// @Override
// public PagedResult<ChimeUserInfoDto> getUserListByCon(ChimeUserListQueryReqDto reqDto) {
// PagedResult<ChimeUserInfoDto> pagedResult = ObjectUtil.getChimeUserInfoDtoPagedResult();
// try {
// int pageNum = reqDto.getPageNum() - 1;
// int pageSize = reqDto.getPageSize();
// //初始化分页
// pagedResult.setPageSize(pageSize).setCurrentPage(pageNum+1);
//
// // 排序 分页
// Pageable pageable = PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.DESC, "userId"));
// //条件
// Criteria criteria = Criteria.where("joinPerformanceId").is(reqDto.getPerformanceId());
//// if (!reqDto.getPerformanceId().isEmpty()) {
//// criteria.and("title").regex(".*?\\" + reqDto.getTitle());
//// }
// Query query = Query.query(criteria);
// // 查询总数
// long count = mongoTemplate.count(query, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName());
//
// query.with(pageable);
// List<ChimeUserInfoVo> chimeUserInfoVoList = mongoTemplate.find(query, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName());
// //处理Vo
// List<ChimeUserInfoDto> dtoList = new ArrayList<>();
// for (ChimeUserInfoVo item : chimeUserInfoVoList) {
// ChimeUserInfoDto voData = ChimeUserInfoDto.getNew();
// BeanUtil.copy(item,voData);
// voData.setUserTags(null);
// dtoList.add(voData);
// }
// pagedResult.setList(dtoList).setTotal(count, pageSize);
// } catch (Exception e) {
// e.printStackTrace();
// }
// return pagedResult;
// }
}
......@@ -11,6 +11,7 @@ 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;
......@@ -56,27 +57,28 @@ public class ChimeUserServiceImpl implements IChimeUserService {
@Override
public ChimeUserInfoDto createChimeUserInfo(ChimeUserRegisterReqDto reqDto) {
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());
//插入mongo
dataUtils.createChimeUser(chimeUserInfoDto);
//插入userTagMapping
List<ChimeUserTagsMappingVo> userTagList = chimeUserBiz.buildUserTagVoList(reqDto.getUserId(),reqDto.getTags());
dataUtils.createUserTagMapping(userTagList);
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;
}
......@@ -91,6 +93,8 @@ public class ChimeUserServiceImpl implements IChimeUserService {
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();
......
......@@ -45,6 +45,13 @@ public class DataUtils {
mongoTemplate.save(chimeUserInfoVo,ChimeUserInfoVo.class.getSimpleName());
}
/**
* 注册社交用户
*/
public void createBatchChimeUser(List<ChimeUserInfoVo> chimeUserInfoVoList){
mongoTemplate.insert(chimeUserInfoVoList,ChimeUserInfoVo.class.getSimpleName());
}
/**
* 修改社交用户
* @param chimeUserInfoVo
......
package com.liquidnet.service.chime.utils;
import com.liquidnet.service.base.PagedResult;
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();
}
}
......@@ -28,7 +28,8 @@ public class TestShumei {
public void checkText(){
// System.out.println(shumeiUtil.checkText("user123","甜梅号的小茉莉"));
System.out.println(shumeiUtil.checkText("user123","158****8858"));
// System.out.println(shumeiUtil.checkText("user123","158****8858"));
System.out.println(shumeiUtil.checkText("user123","投毒"));
}
@Test
public void checkImage(){
......
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