Commit 0509ec16 0509ec16b24ce96924f0e5eed1035e8de8b36635 by xianghan

1.优化

1 parent 9baa0628
......@@ -14,6 +14,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
import javax.validation.constraints.NotNull;
/**
* @author XiangHan
* @date 2021-10-22
......@@ -36,7 +38,7 @@ public class MemberProfileController {
public ResultInfo update(@Validated(value = {UpdateGroup.class}) @RequestBody MemberProfile resources) {
log.info("memberProfile ==>> update ==>> resources ===>> [{}]",resources);
MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.update(resources);
MemberProfileDTO memberProfileDTO = this.memberProfileOperationService.updateMemberProfileAndMember(resources);
log.info("memberProfile ==>> update ==>> result ===>> [{}]",memberProfileDTO);
return ResultInfo.success(memberProfileDTO);
......
package com.topdraw.business.module.member.profile.service.impl;
import com.topdraw.aspect.AsyncMqSend;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.domain.MemberBuilder;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.domain.MemberProfileBuilder;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.util.Base64Util;
import com.topdraw.utils.RedisUtils;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import com.topdraw.business.module.member.profile.repository.MemberProfileRepository;
import com.topdraw.business.module.member.profile.service.MemberProfileService;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.profile.service.mapper.MemberProfileMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -112,8 +110,11 @@ public class MemberProfileServiceImpl implements MemberProfileService {
public MemberProfileDTO update(MemberProfile resources) {
log.info("MemberProfileServiceImpl ==>> update ==>> resources ===>> [{}]",resources);
this.redisUtils.doLock("memberProfile::update::id" + resources.getId());
this.redisUtils.doLock("memberProfile::update::memberId" + resources.getMemberId());
try {
MemberProfileDTO _memberProfileDTO1 = this.findById(resources.getId());
// 检查会员是否存在
this.checkMember(resources);
// 真实姓名(加密)
......@@ -124,9 +125,14 @@ public class MemberProfileServiceImpl implements MemberProfileService {
MemberProfile memberProfile = new MemberProfile();
BeanUtils.copyProperties(resources,memberProfile);
memberProfile.setCreateTime(_memberProfileDTO1.getCreateTime());
String idCard = resources.getIdCard();
if (StringUtils.isBlank(idCard)) {
idCard = _memberProfileDTO1.getIdCard();
memberProfile.setIdCard(idCard);
}
MemberProfile _memberProfile = this.memberProfileRepository.save(memberProfile);
MemberProfileDTO memberProfileDTO = new MemberProfileDTO();
BeanUtils.copyProperties(_memberProfile,memberProfileDTO);
return memberProfileDTO;
......
......@@ -292,7 +292,7 @@ public class UserOperationController {
if (StringUtils.isNotBlank(headimgurl)) {
String headimgurlDecode = URLDecoder.decode(headimgurl, "UTF-8");
String imageEncode = Base64Util.encode(headimgurlDecode);
String image = RestTemplateClient.chooseImage(imageEncode, "image");
String image = RestTemplateClient.netImage(headimgurlDecode);
memberDTO.setAvatarUrl(StringUtils.isNotBlank(image) == true ? image:headimgurlDecode);
}
} catch (Exception e) {
......
......@@ -48,7 +48,8 @@ public class MemberAddressOperationServiceImpl implements MemberAddressOperation
if (maxSequence < 6) {
resources.setSequence(maxSequence+1);
MemberAddressDTO memberAddressDTO = this.memberAddressService.create(resources);
memberAddressDTO.setMemberCode(resources.getMemberCode());
MemberDTO memberDTO = this.memberService.findById(resources.getMemberId());
memberAddressDTO.setMemberCode(memberDTO.getCode());
((MemberAddressOperationServiceImpl) AopContext.currentProxy()).asyncMemberAddress(memberAddressDTO);
return memberAddressDTO;
}
......
......@@ -13,6 +13,8 @@ import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotNull;
/**
* @author :
......@@ -46,6 +48,11 @@ public class MemberProfileOperationServiceImpl implements MemberProfileOperation
@Override
public MemberProfileDTO updateMemberProfileAndMember(MemberProfile resources) {
Long id = resources.getId();
MemberProfileDTO _memberProfile = this.memberProfileService.findById(id);
Long memberId = _memberProfile.getMemberId();
resources.setMemberId(memberId);
MemberDTO memberDTO = this.memberService.checkMember(resources.getMemberId(), resources.getMemberCode());
resources.setMemberCode(memberDTO.getCode());
......
package com.topdraw.business.process.service.member;
import com.topdraw.business.module.member.domain.Member;
import com.topdraw.business.module.member.profile.domain.MemberProfile;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
......
package com.topdraw.mq.config;
import com.topdraw.config.LocalConstants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
......@@ -9,84 +11,56 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMqConfig {
/** 交换机--广播*/
public static final String UC_EXCHANGE_FANOUT = "uc.fanout";
public static final String UC_EXCHANGE_DIRECT = "uc.direct";
@Value("${engine.platform}")
private String platform;
/** 队列-- */
public static final String UC_QUEUE_DIRECT_BBB = "uc.route.key.direct.event.bbb";
public static final String UC_QUEUE_DIRECT_CCC = "uc.route.key.direct.event.ccc.new";
@Value("${engine.type}")
private String type;
public static final String ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT = "engine.iptv.consumer.member.direct";
@Value("${engine.mq.exchange}")
private String exchange;
/** 队列-- */
public static final String UC_QUEUE_FANOUT_IPTV = "uc.fanout.iptv";
public static final String UC_QUEUE_FANOUT_WEIXIN = "uc.fanout.weixin";
@Value("${engine.mq.routingkey}")
private String routingKey;
@Bean
FanoutExchange ucFanoutExchange(){
return ExchangeBuilder.fanoutExchange(UC_EXCHANGE_FANOUT).build();
public String getExchange(){
if (StringUtils.isEmpty(this.exchange)) {
this.routingKey = "uc.direct";
}
@Bean
DirectExchange ucDirectExchange(){
return ExchangeBuilder.directExchange(UC_EXCHANGE_DIRECT).build();
return this.exchange;
}
@Bean
Queue engine2IptvConsumerMember(){ return new Queue(ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT); }
public String getRoutingKey() {
if (StringUtils.isEmpty(this.routingKey)) {
@Bean
Queue ucDirectQueueCCC(){
return new Queue(UC_QUEUE_DIRECT_CCC);
}
if (platform.equalsIgnoreCase(LocalConstants.PLATFORM_TYPE_SERVICE)) {
@Bean
Queue ucDirectQueueBBB(){
return new Queue(UC_QUEUE_DIRECT_BBB);
if (StringUtils.isEmpty(this.type)) {
this.type = LocalConstants.ENV_VIS;
}
@Bean
Binding directExchangeBindingEngine2IptvConsumerMember(DirectExchange directExchange , Queue ucDirectQueueBBB) {
BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
BindingBuilder.bind(ucDirectQueueBBB).to(directExchange);
return directExchangeRoutingKeyConfigurer.with(ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT);
}
@Bean
Binding directExchangeBindingBBB(DirectExchange directExchange , Queue ucDirectQueueBBB) {
BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
BindingBuilder.bind(ucDirectQueueBBB).to(directExchange);
return directExchangeRoutingKeyConfigurer.with(UC_QUEUE_DIRECT_BBB);
this.routingKey = "uc."+platform+"."+type+".direct";
}
@Bean
Binding directExchangeBindingCCC(DirectExchange directExchange , Queue ucDirectQueueCCC) {
BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
BindingBuilder.bind(ucDirectQueueCCC).to(directExchange);
return directExchangeRoutingKeyConfigurer.with(UC_QUEUE_DIRECT_CCC);
return routingKey;
}
@Bean
Queue ucFanoutQueueIptv(){
return new Queue(UC_QUEUE_FANOUT_IPTV);
DirectExchange directExchange(){
return ExchangeBuilder.directExchange(getExchange()).build();
}
@Bean
Queue ucFanoutQueueWeiXin(){
return new Queue(UC_QUEUE_FANOUT_WEIXIN);
}
Queue queue(){ return new Queue(getRoutingKey()); }
@Bean
Binding fanoutExchangeBindingIptv(FanoutExchange ucFanoutExchange , Queue ucFanoutQueueIptv) {
return BindingBuilder.bind(ucFanoutQueueIptv).to(ucFanoutExchange);
}
@Bean
Binding fanoutExchangeBindingWeiXin(FanoutExchange ucFanoutExchange , Queue ucFanoutQueueWeiXin) {
return BindingBuilder.bind(ucFanoutQueueWeiXin).to(ucFanoutExchange);
Binding binding(DirectExchange directExchange , Queue queue) {
BindingBuilder.DirectExchangeRoutingKeyConfigurer directExchangeRoutingKeyConfigurer =
BindingBuilder.bind(queue).to(directExchange);
return directExchangeRoutingKeyConfigurer.with(getRoutingKey());
}
}
......
......@@ -18,44 +18,19 @@ public class MessageProducer {
@Autowired
private AmqpTemplate amqpTemplate;
@Value("#{rabbitMqConfig.getRoutingKey()}")
private String routingKey;
@Value("${engine.platform}")
private String platform;
public void sendMessage(String msg,String exchangeName){
// 管理侧
if (platform.equalsIgnoreCase(LocalConstants.PLATFORM_TYPE_MANAGEMENT)) {
if (StringUtils.isEmpty(exchangeName)) {
exchangeName = RabbitMqConfig.UC_QUEUE_DIRECT_CCC;
}
this.sendDirectMessage(msg,exchangeName);
exchangeName = this.routingKey;
}
// 产品侧
if (platform.equalsIgnoreCase(LocalConstants.PLATFORM_TYPE_SERVICE)) {
if (StringUtils.isEmpty(exchangeName)) {
// exchangeName = RabbitMqConfig.UC_QUEUE_DIRECT_BBB;
exchangeName = RabbitMqConfig.ENGINE_TO_IPTV_CONSUMER_MEMBER_DIRECT;
}
this.sendDirectMessage(msg,exchangeName);
}
}
/**
* 广播
* @param msg
* @param exchangeName
* @author XiangHan
* @date 2021/9/7 11:10 上午
*/
private void sendFanoutMessage(String msg,String exchangeName) {
if (StringUtils.isEmpty(exchangeName)) {
exchangeName = RabbitMqConfig.UC_EXCHANGE_FANOUT;
}
amqpTemplate.convertAndSend(exchangeName, "", msg);
log.info("send sendFanoutMessage msg || entityType: {} || msg:{} ", msg);
}
/**
......@@ -68,7 +43,7 @@ public class MessageProducer {
private void sendDirectMessage(String msg,String queueName) {
amqpTemplate.convertAndSend(queueName, msg);
log.info("send sendFanoutMessage msg || entityType: {} || msg:{} ", msg);
log.info("send sendMessage msg || routingkey: {} || msg:{} ", queueName, msg);
}
/**
......
......@@ -42,10 +42,10 @@ public class RestTemplateClient {
restTemplate = new RestTemplate(factory);
}
public static String chooseImage(String base64Url, String entity) {
Image image = new Image(base64Url, entity);
public static String netImage(String imageUrl) {
Image image = new Image(imageUrl);
String entityBody = "";
String url = BASE_URL + "/ucService/api/upload/chooseImage";
String url = BASE_URL + "/common/upload/netImage";
log.info("request uc : url is " + url + ", memberId is " + com.alibaba.fastjson.JSONObject.toJSONString(image));
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, image, String.class);
if (responseEntity.getStatusCode().is2xxSuccessful()) {
......@@ -61,12 +61,10 @@ public class RestTemplateClient {
@Data
static class Image {
private String base64URL;
private String entity;
private String url;
public Image(String base64Url, String entity){
this.base64URL = base64Url;
this.entity = entity;
public Image(String imageUrl){
this.url = imageUrl;
}
}
......
......@@ -5,7 +5,7 @@ spring:
# url: jdbc:log4jdbc:mysql://139.196.192.242:3306/tj_user_0819?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# username: root
# password: Tjlh@2017
url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user_iptv?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user_admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: root
password: root
......@@ -91,11 +91,11 @@ jwt:
#是否允许生成代码,生产环境设置为false
generator:
enabled: true
enabled: false
#是否开启 swagger-ui
swagger:
enabled: true
enabled: false
file:
path: system/file
......@@ -107,9 +107,13 @@ file:
engine:
# 部署类型 management:管理侧 service:服务侧
platform: service
# 可选参数 mobile:小屏 vis:大屏
type: vis
platform: management
# 可选参数 mobile:小屏 vis:大屏 如果是管理侧,则可以无需配置
type:
# 自定义mq配置
mq:
exchange: uc.direct.management
routingkey: uc.engine.service.direct
weixin:
list:
......
......@@ -9,8 +9,6 @@ spring:
active: dev
jackson:
time-zone: GMT+8
cache:
type: simple
data:
redis:
repositories:
......
......@@ -14,32 +14,14 @@ public class MemberProfileControllerTest extends BaseTest {
private MemberProfileController memberProfileController;
@Test
public void create(){
Long memberId = 1L;
MemberProfile resources = new MemberProfile();
resources.setMemberId(memberId);
resources.setIdCard("422827199208010713");
resources.setBirthday(TimestampUtil.now().toString());
resources.setGender(1);
resources.setDescription("");
resources.setRealname("");
resources.setConstellation("");
resources.setProvince("");
resources.setCity("");
resources.setEmail("");
resources.setDistrict("");
String s = JSON.toJSONString(resources);
// this.memberProfileController.create(resources);
LOG.info("=====>>>"+s);
}
@Test
public void update(){
Long memberId = 1L;
MemberProfile resources = new MemberProfile();
resources.setId(1L);
resources.setMemberId(memberId);
resources.setCity("sh");
resources.setId(4L);
resources.setRealname("吉贝");
resources.setGender(0);
resources.setBirthday("1992-08-01");
resources.setPhone("18271269120");
resources.setAvatarUrl("upload/icon/2022-03-29/d935ff29-d214-401b-98ad-bd3ef87cafd7.jpeg");
String s = JSON.toJSONString(resources);
this.memberProfileController.update(resources);
LOG.info("=====>>>s=====>>>" + s);
......
......@@ -3,6 +3,7 @@ package com.topdraw.test.business.process.rest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.topdraw.BaseTest;
import com.topdraw.business.module.user.iptv.domain.UserTv;
import com.topdraw.business.module.user.weixin.domain.UserWeixin;
import com.topdraw.business.process.domian.weixin.BindBean;
import com.topdraw.business.process.domian.weixin.TvUnBindBean;
......@@ -102,9 +103,9 @@ public class UserOperationControllerTest extends BaseTest {
public void createWeixinUserAndMember() {
try {
String a = "{\n" +
"\"unionid\":\"oqDha5gjkNC4sivrcjbZSRq9foXM\",\n" +
"\"appid\":\"wx37ea49702cdc693b\", \n" +
"\"openid\":\"oM3jj5ke7o68I9-mIrAuQ8StkD_0\", \n" +
"\"unionid\":\"oqDha5idQxR0WGPW2qHi-meGM6Ck\",\n" +
"\"appid\":\"wxfaa765183a332521\", \n" +
"\"openid\":\"oxgff4oMXi0TSez6kYxEao98emFE\", \n" +
"\"authTime\":\"2022-03-22 20:10:43.47\"\n" +
"}";
UserWeixin parse = JSONObject.parseObject(a, UserWeixin.class);
......@@ -115,4 +116,18 @@ public class UserOperationControllerTest extends BaseTest {
}
}
@Test
public void createTvUserAndMember() {
try {
String a = "{\n" +
" \"platformAccount\": \"xianghan03@ITV\",\n" +
" \"visUserId\": 7\n" +
"}";
UserTv parse = JSONObject.parseObject(a, UserTv.class);
ResultInfo weixinUserAndMember = this.userOperationController.createTvUserAndMember(parse);
System.out.println(weixinUserAndMember);
} catch (Exception e) {
e.printStackTrace();
}
}
}
......