Commit 10561abf 10561abf37d707350efe4a302a762b13290bfb29 by xianghan

1.优化

1 parent 3b8ac7e5
...@@ -23,6 +23,9 @@ import java.time.LocalDateTime; ...@@ -23,6 +23,9 @@ import java.time.LocalDateTime;
23 @Table(name="m_coupon_history") 23 @Table(name="m_coupon_history")
24 public class CouponHistory implements Serializable { 24 public class CouponHistory implements Serializable {
25 25
26 @Transient
27 private String memberCode;
28
26 /** 主键 */ 29 /** 主键 */
27 @Id 30 @Id
28 @GeneratedValue(strategy = GenerationType.IDENTITY) 31 @GeneratedValue(strategy = GenerationType.IDENTITY)
......
...@@ -23,6 +23,9 @@ import java.sql.Timestamp; ...@@ -23,6 +23,9 @@ import java.sql.Timestamp;
23 @Table(name="uc_exp_detail") 23 @Table(name="uc_exp_detail")
24 public class ExpDetail implements Serializable { 24 public class ExpDetail implements Serializable {
25 25
26 @Transient
27 private String memberCode;
28
26 /** 主键 */ 29 /** 主键 */
27 @Id 30 @Id
28 @GeneratedValue(strategy = GenerationType.IDENTITY) 31 @GeneratedValue(strategy = GenerationType.IDENTITY)
......
...@@ -72,4 +72,10 @@ public interface MemberService { ...@@ -72,4 +72,10 @@ public interface MemberService {
72 * @param member 会员 72 * @param member 会员
73 */ 73 */
74 MemberDTO checkMember(Member member); 74 MemberDTO checkMember(Member member);
75
76 /**
77 *
78 * @param resources
79 */
80 MemberDTO doUpdateMemberExpAndLevel(Member resources);
75 } 81 }
......
...@@ -105,6 +105,12 @@ public class MemberServiceImpl implements MemberService { ...@@ -105,6 +105,12 @@ public class MemberServiceImpl implements MemberService {
105 } 105 }
106 106
107 @Override 107 @Override
108 public MemberDTO doUpdateMemberExpAndLevel(Member resources) {
109 MemberDTO memberDTO = this.update(resources);
110 return memberDTO;
111 }
112
113 @Override
108 @Transactional(rollbackFor = Exception.class) 114 @Transactional(rollbackFor = Exception.class)
109 public MemberDTO create(Member resources) { 115 public MemberDTO create(Member resources) {
110 116
......
1 package com.topdraw.business.process.service; 1 package com.topdraw.business.process.service;
2 2
3 import com.topdraw.business.process.domian.TempCoupon;
4
5 import java.util.List;
6
7 /** 3 /**
8 * @description 权益操作接口 4 * @description 权益操作接口
9 * @author XiangHan 5 * @author XiangHan
...@@ -12,15 +8,4 @@ import java.util.List; ...@@ -12,15 +8,4 @@ import java.util.List;
12 8
13 public interface CouponOperationService { 9 public interface CouponOperationService {
14 10
15 /**
16 * 基于已完成的任务发放优惠券
17 * @param tempCouponList
18 */
19 void grantCouponThroughTempCoupon(List<TempCoupon> tempCouponList);
20
21 /**
22 * 系统手动发放优惠券
23 * @param tempCouponList
24 */
25 void grantCouponByManual(List<TempCoupon> tempCouponList);
26 } 11 }
......
...@@ -11,20 +11,5 @@ import java.util.List; ...@@ -11,20 +11,5 @@ import java.util.List;
11 */ 11 */
12 public interface ExpOperationService { 12 public interface ExpOperationService {
13 13
14 /**
15 * 任务完成后自动发放成长值
16 * @param tempExpList
17 */
18 void grantPointsThroughTempExp(List<TempExp> tempExpList);
19
20 /**
21 * 系统手动发放优惠券
22 * @param memberId
23 * @param userId
24 * @param tempExpList
25 */
26 void grantExpByManual(Long memberId, Long userId, List<TempExp> tempExpList);
27
28 void grantExpByManual(List<TempExp> tempExpList);
29 14
30 } 15 }
......
...@@ -11,38 +11,4 @@ import java.util.List; ...@@ -11,38 +11,4 @@ import java.util.List;
11 */ 11 */
12 public interface PointsOperationService { 12 public interface PointsOperationService {
13 13
14 /**
15 * 手动发放积分
16 * @param memberId 会员id
17 * @param tempPoints 积分详情
18 */
19 void grantPointsByManual(Long memberId , TempPoints tempPoints);
20
21 /**
22 *
23 * @param tempPoints
24 */
25 void grantPointsByManualByTempPoints(TempPoints tempPoints);
26
27
28 /**
29 * 积分扣减
30 * @param tempPoints 积分对象
31 */
32 boolean customPoints(TempPoints tempPoints);
33
34
35 /**
36 * 积分发放,基于已获得的权益
37 * @param tempPointsList 已获得的权益
38 */
39 void grantPointsThroughTempRightsList(List<TempPoints> tempPointsList);
40
41
42 /**
43 * 清理过期并计算可用总积分
44 * @param memberId
45 * @return
46 */
47 Long cleanInvalidPointsAndCalculateCurrentPoints(Long memberId);
48 } 14 }
......
1 package com.topdraw.business.process.service;
2
3 import com.topdraw.business.module.rights.history.domain.RightsHistory;
4 import com.topdraw.business.process.domian.RightType;
5
6 import java.util.List;
7 import java.util.Map;
8
9 /**
10 * @description 权益操作接口
11 * @author XiangHan
12 * @date 2021.10.22
13 */
14 public interface RightsOperationService {
15
16 /**
17 * 系统手动发放权益
18 * @param rightsHistories
19 */
20 void grantRightsByManual(List<RightsHistory> rightsHistories);
21
22 /**
23 * 任务完成自动发放权益
24 * @param tempRightsMap
25 */
26 void grantRights(Map<RightType, Object> tempRightsMap);
27 }
...@@ -6,193 +6,33 @@ import com.topdraw.business.module.coupon.service.CouponService; ...@@ -6,193 +6,33 @@ import com.topdraw.business.module.coupon.service.CouponService;
6 import com.topdraw.business.module.member.domain.Member; 6 import com.topdraw.business.module.member.domain.Member;
7 import com.topdraw.business.module.member.service.MemberService; 7 import com.topdraw.business.module.member.service.MemberService;
8 import com.topdraw.business.module.member.service.dto.MemberDTO; 8 import com.topdraw.business.module.member.service.dto.MemberDTO;
9 import com.topdraw.business.process.domian.TempCoupon;
10 import com.topdraw.business.process.service.CouponOperationService; 9 import com.topdraw.business.process.service.CouponOperationService;
11 import com.topdraw.business.process.service.RightsOperationService;
12 import com.topdraw.business.process.service.member.MemberOperationService; 10 import com.topdraw.business.process.service.member.MemberOperationService;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15 import org.springframework.beans.BeanUtils;
16 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
17 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
18 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
19 13
20 import java.time.LocalDateTime;
21 import java.util.List;
22 import java.util.Objects;
23
24
25 @Service 14 @Service
26 public class CouponOperationServiceImpl implements CouponOperationService { 15 public class CouponOperationServiceImpl implements CouponOperationService {
27 16
28 private static final Logger LOG = LoggerFactory.getLogger(CouponOperationServiceImpl.class);
29
30 @Autowired
31 CouponService couponService;
32 @Autowired
33 CouponHistoryService couponHistoryService;
34 @Autowired
35 MemberOperationService memberOperationService;
36 @Autowired 17 @Autowired
37 RightsOperationService rightsOperationService; 18 private CouponHistoryService couponHistoryService;
38 @Autowired 19 @Autowired
39 MemberService memberService; 20 private MemberOperationService memberOperationService;
40 @Autowired 21 @Autowired
41 ThreadPoolTaskExecutor threadPoolTaskExecutor; 22 private MemberService memberService;
42
43 // 过期阀值(默认一个月)
44 private static final Integer EXPIRE_FACTOR_DAY = 30;
45
46 @Override
47 public void grantCouponThroughTempCoupon(List<TempCoupon> tempCouponList) {
48 // 优惠券领取、使用历史记录表
49 for (TempCoupon tempCoupon : tempCouponList) {
50 this.refresh(tempCoupon);
51 }
52 }
53
54 /**
55 * 手动发放优惠券
56 * @param tempCouponList
57 */
58 @Override
59 public void grantCouponByManual(List<TempCoupon> tempCouponList) {
60 // 优惠券领取、使用历史记录表
61 for (TempCoupon tempCoupon : tempCouponList) {
62 this.refresh(tempCoupon);
63 }
64 }
65
66
67 /**
68 * 优惠券领取历史记录表
69 *
70 * @param tempCoupon 领取的优惠券
71 */
72 private void refresh(TempCoupon tempCoupon) {
73 // 1.更新会员优惠券数量
74 this.refreshMemberCoupon(tempCoupon);
75 // 2.保存优惠券领取、使用历史记录表
76 this.doInsertCouponHistory(tempCoupon);
77 }
78
79
80 /**
81 * 更新会员优惠券信息
82 * @param tempCoupon 账号id
83 */
84 private void refreshMemberCoupon(TempCoupon tempCoupon) {
85 // Long userId = tempCoupon.getUserId();
86 Long memberId = tempCoupon.getMemberId();
87 Integer rightsAmount = tempCoupon.getRightsAmount();
88 try {
89 // 1.历史总优惠券数量
90 Long historyCouponCount = this.getTotalHistoryCoupon(memberId);
91 // 1.当前总优惠券数量
92 Long totalCouponCount = this.getTotalCoupon(historyCouponCount,rightsAmount);
93 // 2.获取已过期的优惠券数量
94 Long expireCouponCount = this.getTotalExpireCoupon(memberId);
95 // 3.即将过期的优惠券数量
96 Long expireSoonCouponCount = this.getTotalExpireSoonCoupon(memberId,EXPIRE_FACTOR_DAY);
97 // 4.当前优惠券数量 = 总优惠券-已过期的优惠券
98 Long currentCoupon = this.getCurrentCoupon(totalCouponCount,expireCouponCount);
99 // 5.更新用户信息(优惠券数量、即将过期的优惠券数量)
100 this.doUpdateMemberInfo(memberId,currentCoupon,expireSoonCouponCount);
101 } catch (Exception e) {
102 e.printStackTrace();
103 throw e;
104 }
105 }
106
107 private Long getTotalCoupon(Long historyCouponCount, Integer rightsAmount) {
108 return (Objects.nonNull(historyCouponCount) ? historyCouponCount: 0L) + (Objects.nonNull(rightsAmount) ? rightsAmount: 0L);
109 }
110
111
112 /**
113 * 更新当前用户优惠券信息
114 * @param memberId
115 * @param currentCoupon
116 * @param expireSoonCouponCount
117 */
118 private void doUpdateMemberInfo(Long memberId, Long currentCoupon, Long expireSoonCouponCount) {
119 MemberDTO memberDTO = this.findMemberByMemberId(memberId);
120 23
121 Member member = new Member(); 24 public void asyncMemberCoupon(Member member) {
122 BeanUtils.copyProperties(memberDTO,member); 25 String memberCode = member.getCode();
123 26 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
124 member.setCouponAmount(currentCoupon); 27 member.setId(memberDTO.getId());
125 member.setDueCouponAmount(expireSoonCouponCount);
126 member.setUpdateTime(LocalDateTime.now());
127 this.memberOperationService.doUpdateMember(member); 28 this.memberOperationService.doUpdateMember(member);
128 } 29 }
129 30
130 private MemberDTO findMemberByMemberId(Long memberId) { 31 public void asyncCouponHistory(CouponHistory couponHistory) {
131 MemberDTO memberDTO = this.memberService.findById(memberId); 32 String memberCode = couponHistory.getMemberCode();
132 return memberDTO; 33 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
133 } 34 couponHistory.setUserId(memberDTO.getId());
134
135 35
136
137 /**
138 * 当前优惠券数量 = 总优惠券-已过期的优惠券
139 * @param totalCouponCount 总数
140 * @param expireCouponCount 已过期总数
141 * @return
142 */
143 private Long getCurrentCoupon(Long totalCouponCount, Long expireCouponCount) {
144 return (Objects.nonNull(totalCouponCount)?totalCouponCount:0L)-(Objects.nonNull(expireCouponCount)?expireCouponCount:0L);
145 }
146
147
148 /**
149 * 即将过期的优惠券数量
150 * @param expireFactor
151 * @return
152 */
153 private Long getTotalExpireSoonCoupon(Long userId, Integer expireFactor) {
154 LocalDateTime expireTime = LocalDateTime.now().plusDays(expireFactor);
155 return this.couponHistoryService.countByUserIdAndExpireTimeBetween(userId,LocalDateTime.now(),expireTime);
156 }
157
158
159 /**
160 * 获取已过期的优惠券数量
161 * @param userId
162 * @return
163 */
164 private Long getTotalExpireCoupon(Long userId) {
165 return this.couponHistoryService.countByUserIdAndExpireTimeBefore(userId,LocalDateTime.now());
166 }
167
168
169 /**
170 * 获取用户领取的总优惠券
171 * @param userId
172 * @return
173 */
174 private Long getTotalHistoryCoupon(Long userId) {
175 return this.couponHistoryService.countByUserId(userId);
176 }
177
178
179 /**
180 * 优惠券领取、使用历史记录表
181 * @param tempCoupon 优惠券
182 */
183 private void doInsertCouponHistory(TempCoupon tempCoupon) {
184 CouponHistory couponHistory = new CouponHistory();
185 BeanUtils.copyProperties(tempCoupon,couponHistory);
186 couponHistory.setId(null);
187 couponHistory.setCouponId(tempCoupon.getId());
188 couponHistory.setUserId(tempCoupon.getMemberId());
189 couponHistory.setCouponCode(tempCoupon.getCode());
190 couponHistory.setUserNickname(tempCoupon.getUserNickname());
191 couponHistory.setOrderDetailId(tempCoupon.getOrderId());
192 couponHistory.setReceiveTime(LocalDateTime.now());
193 couponHistory.setUseStatus(Objects.nonNull(couponHistory.getUseStatus()) ? couponHistory.getUseStatus():0);
194 this.couponHistoryService.create(couponHistory); 36 this.couponHistoryService.create(couponHistory);
195 } 37 }
196
197
198 } 38 }
......
...@@ -4,25 +4,13 @@ import com.topdraw.business.module.exp.detail.domain.ExpDetail; ...@@ -4,25 +4,13 @@ import com.topdraw.business.module.exp.detail.domain.ExpDetail;
4 import com.topdraw.business.module.exp.detail.service.ExpDetailService; 4 import com.topdraw.business.module.exp.detail.service.ExpDetailService;
5 import com.topdraw.business.module.member.domain.Member; 5 import com.topdraw.business.module.member.domain.Member;
6 import com.topdraw.business.module.member.level.service.MemberLevelService; 6 import com.topdraw.business.module.member.level.service.MemberLevelService;
7 import com.topdraw.business.module.member.level.service.dto.MemberLevelDTO;
8 import com.topdraw.business.module.member.service.MemberService; 7 import com.topdraw.business.module.member.service.MemberService;
9 import com.topdraw.business.module.member.service.dto.MemberDTO; 8 import com.topdraw.business.module.member.service.dto.MemberDTO;
10 import com.topdraw.business.process.domian.TempExp;
11 import com.topdraw.business.process.service.ExpOperationService; 9 import com.topdraw.business.process.service.ExpOperationService;
12 import com.topdraw.business.process.service.member.MemberOperationService; 10 import com.topdraw.business.process.service.member.MemberOperationService;
13 import com.topdraw.util.IdWorker;
14 import com.topdraw.utils.StringUtils;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17 import org.springframework.beans.BeanUtils;
18 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 12 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
20 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
21 import org.springframework.util.CollectionUtils;
22
23 import java.time.LocalDateTime;
24 import java.util.List;
25 import java.util.Objects;
26 14
27 /** 15 /**
28 * 16 *
...@@ -30,180 +18,30 @@ import java.util.Objects; ...@@ -30,180 +18,30 @@ import java.util.Objects;
30 @Service 18 @Service
31 public class ExpOperationServiceImpl implements ExpOperationService { 19 public class ExpOperationServiceImpl implements ExpOperationService {
32 20
33 private static final Logger LOG = LoggerFactory.getLogger(ExpOperationServiceImpl.class);
34
35 @Autowired 21 @Autowired
36 ExpDetailService expDetailService; 22 private ExpDetailService expDetailService;
37 @Autowired 23 @Autowired
38 MemberOperationService memberOperationService; 24 private MemberOperationService memberOperationService;
39 @Autowired 25 @Autowired
40 MemberLevelService memberLevelService; 26 private MemberLevelService memberLevelService;
41 @Autowired 27 @Autowired
42 MemberService memberService; 28 private MemberService memberService;
43 @Autowired 29 @Autowired
44 ThreadPoolTaskExecutor threadPoolTaskExecutor; 30 ThreadPoolTaskExecutor threadPoolTaskExecutor;
45 31
46 @Override 32 public void asyncMemberExpAndLevel(Member member) {
47 public void grantPointsThroughTempExp(List<TempExp> tempExpList) { 33 String code = member.getCode();
48 34 MemberDTO memberDTO = this.memberService.findByCode(code);
49 for (TempExp tempExp : tempExpList) { 35 member.setId(memberDTO.getId());
50 this.refresh(tempExp);
51 }
52
53 }
54
55 @Override
56 public void grantExpByManual(Long memberId, Long userId, List<TempExp> tempExpList) {
57 for (TempExp tempExp : tempExpList) {
58 this.refresh(tempExp);
59 }
60 }
61 36
62 @Override 37 this.memberService.doUpdateMemberExpAndLevel(member);
63 public void grantExpByManual(List<TempExp> tempExpList) {
64 for (TempExp tempExp : tempExpList) {
65 this.refresh(tempExp);
66 } 38 }
67 }
68
69
70 /**
71 *
72 * @param tempExp
73 */
74 private void refresh(TempExp tempExp) {
75 String memberCode = tempExp.getMemberCode();
76 MemberDTO memberDTO = this.memberService.findByCode(memberCode);
77 Long id = memberDTO.getId();
78 tempExp.setId(id);
79 try {
80 // 原始积分
81 long originExp = this.getExpByMemberId(tempExp);
82 // 总积分
83 long totalExp = this.calculateTotalExp(originExp, tempExp);
84 // 1.添加成长值记录
85 // this.threadPoolTaskExecutor.execute(() -> this.doInsertExpDetail(tempExp, originExp, totalExp));
86 // 2.更新成长值与等级
87 this.refreshMemberExpAndLevel(tempExp,totalExp);
88 39
89 this.doInsertExpDetail(tempExp, originExp, totalExp); 40 public void asyncExpDetail(ExpDetail expDetail) {
41 String code = expDetail.getMemberCode();
42 MemberDTO memberDTO = this.memberService.findByCode(code);
43 expDetail.setMemberId(memberDTO.getId());
90 44
91 } catch (Exception e) {
92 e.printStackTrace();
93 throw e;
94 }
95 }
96
97 private long calculateTotalExp(long originalExp, TempExp tempExp) {
98 Long rewardExp = tempExp.getRewardExp();
99 return rewardExp + originalExp;
100 }
101
102 private long getExpByMemberId(TempExp tempExp) {
103 Long memberId = tempExp.getMemberId();
104 MemberDTO memberDTO = this.memberOperationService.findById(memberId);
105 if (Objects.nonNull(memberDTO)) {
106 Long exp = memberDTO.getExp();
107 return Objects.isNull(exp) ? 0L : exp;
108 }
109 return 0L;
110 }
111
112
113 /**
114 * 更新成长值与等级
115 *
116 * @param tempExp 成长值列表
117 */
118 private void refreshMemberExpAndLevel(TempExp tempExp, long totalExp) {
119
120 Long memberId = tempExp.getMemberId();
121 // 1.获取当前成长值
122 MemberDTO memberDTO = this.getMemberInfoByMemberId(memberId);
123 // 2.获取下一级需要的成长值
124 MemberLevelDTO memberLevelDTO = this.getNextLevelExp(memberDTO.getLevel() + 1, 1);
125 // 4.成长值比较,判断是否升级
126 Integer level = this.compareExp(totalExp, memberLevelDTO,memberDTO);
127 // 5.更新用户信息
128 this.updateMemberInfo(level, totalExp, memberId);
129 }
130
131 /**
132 *
133 * @param level
134 * @param totalExp 总积分
135 * @param memberId 会员id
136 */
137 private void updateMemberInfo(Integer level,Long totalExp,Long memberId) {
138 MemberDTO memberDTO = this.findMemberByMemberId(memberId);
139
140 Member member = new Member();
141 BeanUtils.copyProperties(memberDTO,member);
142
143 member.setExp(totalExp);
144 member.setLevel(level);
145 member.setUpdateTime(LocalDateTime.now());
146 this.memberOperationService.doUpdateMember(member);
147 }
148
149 private MemberDTO findMemberByMemberId(Long memberId) {
150 MemberDTO memberDTO = this.memberService.findById(memberId);
151 return memberDTO;
152 }
153
154 private Integer compareExp(long newExp, MemberLevelDTO memberLevelDTO, MemberDTO memberDTO) {
155 if (Objects.nonNull(memberLevelDTO)) {
156 Long nextLevelExp = memberLevelDTO.getExpValue();
157 if (Objects.nonNull(nextLevelExp) && nextLevelExp > 0)
158 if(newExp - nextLevelExp >= 0){
159 return memberLevelDTO.getLevel();
160 }
161 }
162 return memberDTO.getLevel();
163 }
164
165 private MemberLevelDTO getNextLevelExp(Integer i, Integer status) {
166 List<MemberLevelDTO> memberLevelDTOList = this.memberLevelService.findLevelAndStatus(i,status);
167 if (!CollectionUtils.isEmpty(memberLevelDTOList)) {
168 return memberLevelDTOList.get(0);
169 }
170 return null;
171 }
172
173
174 /**
175 * 获取当前会员的成长值
176 * @param memberId 会员id
177 * @return Long 当前会员成长值
178 */
179 private MemberDTO getMemberInfoByMemberId(Long memberId) {
180 MemberDTO memberDTO = this.memberOperationService.findById(memberId);
181 return memberDTO;
182 }
183
184 /**
185 * 添加成长值记录
186 *
187 * @param tempExp 成长值列表
188 */
189 private void doInsertExpDetail(TempExp tempExp, long originalExp, long totalExp) {
190 // 获得的积分
191 Long rewardExp = tempExp.getRewardExp();
192
193 ExpDetail expDetail = new ExpDetail();
194 BeanUtils.copyProperties(tempExp,expDetail);
195
196 expDetail.setCode(String.valueOf(IdWorker.generator()));
197 // 原始积分
198 expDetail.setOriginalExp(originalExp);
199 // 总积分
200 expDetail.setResultExp(totalExp);
201 // 获得的积分
202 expDetail.setExp(rewardExp);
203 if (StringUtils.isEmpty(expDetail.getDescription())) {
204 expDetail.setDescription("#");
205 }
206 this.expDetailService.create(expDetail); 45 this.expDetailService.create(expDetail);
207 } 46 }
208
209 } 47 }
......
...@@ -138,7 +138,8 @@ public class RabbitMqConfig { ...@@ -138,7 +138,8 @@ public class RabbitMqConfig {
138 138
139 public static final String UC_DIRECT_MANAGEMENT = "uc.direct.management"; 139 public static final String UC_DIRECT_MANAGEMENT = "uc.direct.management";
140 // uc-service-management 2 uc-consumer-iptv 140 // uc-service-management 2 uc-consumer-iptv
141 public static final String ENGINE_TO_SERVICE_DIRECT = "uc.engine.service.direct"; 141 // public static final String ENGINE_TO_SERVICE_DIRECT = "uc.engine.service.direct";
142 public static final String ENGINE_TO_SERVICE_DIRECT = "uc.engine.service.direct.local";
142 143
143 @Bean 144 @Bean
144 public Queue managementDirect() { 145 public Queue managementDirect() {
...@@ -184,18 +185,18 @@ public class RabbitMqConfig { ...@@ -184,18 +185,18 @@ public class RabbitMqConfig {
184 185
185 186
186 /**************************************************数据基座*************************************************************/ 187 /**************************************************数据基座*************************************************************/
187 public static final String UC_EVENTBUS = "uc.eventbus"; 188 public static final String UC_EVENTBUS_EXCHANGE = "uc.eventbus.local";
188 public static final String UC_EVENTBUS_KEY = "uc.eventbus.*.topic"; 189 public static final String UC_EVENTBUS_KEY = "uc.eventbus.*.topic";
189 public static final String UC_EVENTBUS_TOPIC = "uc.eventbus"; 190 public static final String UC_EVENTBUS_QUEUE = "uc.eventbus.local";
190 191
191 @Bean 192 @Bean
192 public Queue eventBusQueue() { 193 public Queue eventBusQueue() {
193 return new Queue(UC_EVENTBUS_TOPIC); 194 return new Queue(UC_EVENTBUS_QUEUE);
194 } 195 }
195 196
196 @Bean 197 @Bean
197 TopicExchange eventBusExchange() { 198 TopicExchange eventBusExchange() {
198 return ExchangeBuilder.topicExchange(UC_EVENTBUS) 199 return ExchangeBuilder.topicExchange(UC_EVENTBUS_EXCHANGE)
199 .durable(true).build(); 200 .durable(true).build();
200 } 201 }
201 202
......
...@@ -2,34 +2,35 @@ package com.topdraw.mq.consumer; ...@@ -2,34 +2,35 @@ package com.topdraw.mq.consumer;
2 2
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
4 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
5 import com.fasterxml.jackson.annotation.JsonFormat; 5 import com.topdraw.business.module.member.service.MemberService;
6 import com.topdraw.business.module.member.service.dto.MemberDTO; 6 import com.topdraw.business.module.member.service.dto.MemberDTO;
7 import com.topdraw.business.module.user.iptv.service.UserTvService; 7 import com.topdraw.business.module.user.iptv.service.UserTvService;
8 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO; 8 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
9 import com.topdraw.config.RabbitMqConfig; 9 import com.topdraw.config.RabbitMqConfig;
10 import com.topdraw.exception.BadRequestException;
11 import com.topdraw.exception.EntityNotFoundException;
10 import com.topdraw.mq.domain.DataSyncMsg; 12 import com.topdraw.mq.domain.DataSyncMsg;
11 import com.topdraw.resttemplate.RestTemplateClient; 13 import com.topdraw.resttemplate.RestTemplateClient;
12 import com.topdraw.util.JSONUtil; 14 import com.topdraw.util.JSONUtil;
13 import lombok.Data; 15 import lombok.Data;
14 import lombok.extern.slf4j.Slf4j; 16 import lombok.extern.slf4j.Slf4j;
15 import org.apache.commons.lang3.StringUtils; 17 import org.apache.commons.lang3.StringUtils;
16 import org.springframework.amqp.core.ExchangeTypes;
17 import org.springframework.amqp.rabbit.annotation.*; 18 import org.springframework.amqp.rabbit.annotation.*;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.stereotype.Component; 20 import org.springframework.stereotype.Component;
20 import org.springframework.util.Assert;
21 21
22 import java.sql.Timestamp;
23 import java.util.Objects; 22 import java.util.Objects;
24 23
25 @Component 24 @Component
26 @Slf4j 25 @Slf4j
27 public class UcEventBusIptv2IptvConsumer { 26 public class UcEventBusIptv2ManagementUcEngine {
28 27
29 @Autowired 28 @Autowired
30 RestTemplateClient restTemplateClient; 29 private RestTemplateClient restTemplateClient;
31 @Autowired 30 @Autowired
32 private UserTvService userTvService; 31 private UserTvService userTvService;
32 @Autowired
33 private MemberService memberService;
33 34
34 /** 35 /**
35 * 事件 36 * 事件
...@@ -39,7 +40,7 @@ public class UcEventBusIptv2IptvConsumer { ...@@ -39,7 +40,7 @@ public class UcEventBusIptv2IptvConsumer {
39 * @date 2021/9/7 11:26 上午 40 * @date 2021/9/7 11:26 上午
40 */ 41 */
41 @RabbitHandler 42 @RabbitHandler
42 @RabbitListener(queues = RabbitMqConfig.UC_EVENTBUS_TOPIC, 43 @RabbitListener(queues = RabbitMqConfig.UC_EVENTBUS_QUEUE,
43 containerFactory = "managementRabbitListenerContainerFactory") 44 containerFactory = "managementRabbitListenerContainerFactory")
44 public void ucEventConsumer(String content) { 45 public void ucEventConsumer(String content) {
45 log.info(" receive dataSync msg , content is : {} ", content); 46 log.info(" receive dataSync msg , content is : {} ", content);
...@@ -53,18 +54,6 @@ public class UcEventBusIptv2IptvConsumer { ...@@ -53,18 +54,6 @@ public class UcEventBusIptv2IptvConsumer {
53 * @param content 54 * @param content
54 * @return 55 * @return
55 */ 56 */
56 /*{
57 "evt": "play”, // 表示播放
58 "deviceType": 1, // 1代表大屏
59 "time": "2022-04-01 00:10:09”,
60 "msgData": {
61 "platformAccount": "itv094430@“, // 大屏用户账号
62 "playDuration": 60, // 播放时长,单位分钟
63 "mediaId": 3433, // 节目id,此次是累计计算,可不传
64 "mediaCode": "media_123”, // 节目标识,同上
65 "mediaName": "白宫陷落” // 节目名称,同上
66 }
67 }*/
68 private DataSyncMsg parseContent(String content) { 57 private DataSyncMsg parseContent(String content) {
69 58
70 CommonMsg commonMsg = JSONUtil.parseMsg2Object(content, CommonMsg.class); 59 CommonMsg commonMsg = JSONUtil.parseMsg2Object(content, CommonMsg.class);
...@@ -91,22 +80,35 @@ public class UcEventBusIptv2IptvConsumer { ...@@ -91,22 +80,35 @@ public class UcEventBusIptv2IptvConsumer {
91 DataSyncMsg.MsgData msgData1 = new DataSyncMsg.MsgData(); 80 DataSyncMsg.MsgData msgData1 = new DataSyncMsg.MsgData();
92 81
93 if (StringUtils.isNotBlank(platformAccount)) { 82 if (StringUtils.isNotBlank(platformAccount)) {
94 MemberDTO memberDTO = this.userTvService.findMemberByPlatformAccount(platformAccount); 83 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
95 Long memberId = memberDTO.getId(); 84 String priorityMemberCode = userTvDTO.getPriorityMemberCode();
96 String memberCode = memberDTO.getCode(); 85 String memberCode = "";
86 if (StringUtils.isNotBlank(priorityMemberCode)) {
87 memberCode = priorityMemberCode;
88 } else {
89 memberCode = this.memberService.findById(userTvDTO.getMemberId()).getCode();
90 }
91
92 if (StringUtils.isBlank(memberCode))
93 throw new EntityNotFoundException(MemberDTO.class, "memberCode", "memberCode is null");
94
97 msgData1.setMemberCode(memberCode); 95 msgData1.setMemberCode(memberCode);
98 } 96 }
99 97
100 msgData1.setEvent(8); 98 msgData1.setEvent(8);
101 msgData1.setDeviceType(deviceType); 99 msgData1.setDeviceType(deviceType);
102 msgData1.setMediaId(mediaId); 100 msgData1.setMediaId(mediaId);
103 JSONObject jsonObject = new JSONObject(); 101
104 jsonObject.put("mediaId", mediaId); 102 JSONObject param = new JSONObject();
105 jsonObject.put("mediaName", mediaName); 103 param.put("playDuration", playDuration);
106 jsonObject.put("playDuration", playDuration); 104 msgData1.setParam(JSON.toJSONString(param));
107 jsonObject.put("mediaCode", mediaCode); 105 JSONObject description = new JSONObject();
108 jsonObject.put("time", time); 106 description.put("mediaId", mediaId);
109 msgData1.setDescription(JSON.toJSONString(jsonObject)); 107 description.put("mediaName", mediaName);
108 description.put("playDuration", playDuration);
109 description.put("mediaCode", mediaCode);
110 description.put("time", time);
111 msgData1.setDescription(JSON.toJSONString(description));
110 112
111 dataSyncMsg.setMsg(msgData1); 113 dataSyncMsg.setMsg(msgData1);
112 return dataSyncMsg; 114 return dataSyncMsg;
......