Commit 95065426 950654268405dcb732c92f7cc8383bc0ecea5bed by xianghan

1.添加消费成长报告mq

1 parent fd7258cd
1 package com.topdraw.business.module.user.iptv.growreport.domain;
2
3 import cn.hutool.core.bean.BeanUtil;
4 import cn.hutool.core.bean.copier.CopyOptions;
5 import lombok.Data;
6 import lombok.experimental.Accessors;
7 import org.springframework.data.annotation.CreatedDate;
8 import org.springframework.data.annotation.LastModifiedDate;
9 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
10
11 import javax.persistence.*;
12 import java.io.Serializable;
13 import java.sql.Timestamp;
14
15 /**
16 * @author XiangHan
17 * @date 2022-07-07
18 */
19 @Entity
20 @Data
21 @EntityListeners(AuditingEntityListener.class)
22 @Accessors(chain = true)
23 @Table(name="uc_growth_report")
24 public class GrowthReport implements Serializable {
25
26 @Id
27 @Column(name = "id")
28 private Long id;
29
30 // 用户id
31 @Column(name = "user_id")
32 private Long userId;
33
34 // 会员id
35 @Column(name = "member_id")
36 private Long memberId;
37
38 // 会员code
39 @Column(name = "member_code")
40 private String memberCode;
41
42 // 大屏账号
43 @Column(name = "platform_account")
44 private String platformAccount;
45
46 // 开始日期
47 @Column(name = "start_date")
48 private String startDate;
49
50 // 结束时间
51 @Column(name = "end_date")
52 private String endDate;
53
54 // 栏目播放时长数据
55 @Column(name = "data")
56 private String data;
57
58 // 创建时间
59 @CreatedDate
60 @Column(name = "create_time")
61 private Timestamp createTime;
62
63 // 修改时间
64 @LastModifiedDate
65 @Column(name = "update_time")
66 private Timestamp updateTime;
67
68 public void copy(GrowthReport source){
69 BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
70 }
71 }
1 package com.topdraw.business.module.user.iptv.growreport.repository;
2
3 import com.topdraw.business.module.user.iptv.growreport.domain.GrowthReport;
4 import org.springframework.data.jpa.repository.JpaRepository;
5 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
6 import org.springframework.data.jpa.repository.Modifying;
7 import org.springframework.data.jpa.repository.Query;
8
9 import java.util.Optional;
10
11 /**
12 * @author XiangHan
13 * @date 2022-07-07
14 */
15 public interface GrowthReportRepository extends JpaRepository<GrowthReport, Long>, JpaSpecificationExecutor<GrowthReport> {
16
17 Optional<GrowthReport> findByPlatformAccountAndStartDateAndEndDate(String platformAccount, String startDate, String endDate);
18
19 @Modifying
20 @Query(value = "UPDATE `uc_growth_report` SET `data` = ?2, `update_time` = now() WHERE `id` =?1", nativeQuery = true)
21 Integer updateGrowthReportData(Long id, String data);
22 }
1 package com.topdraw.business.module.user.iptv.growreport.service;
2
3 import com.topdraw.business.module.user.iptv.growreport.domain.GrowthReport;
4 import com.topdraw.business.module.user.iptv.growreport.service.dto.GrowthReportDTO;
5
6 /**
7 * @author XiangHan
8 * @date 2022-07-07
9 */
10 public interface GrowthReportService {
11
12 /**
13 * 根据ID查询
14 * @param id ID
15 * @return GrowthReportDTO
16 */
17 GrowthReportDTO findById(Long id);
18
19 void create(GrowthReport resources);
20
21 void update(GrowthReport resources);
22
23 void delete(Long id);
24
25 GrowthReportDTO findByPlatformAccountAndStartDateAndEndDate(String platformAccount, String weekFirstDay, String weekLastDay);
26
27 Integer updateGrowthReportData(Long id, String data);
28 }
1 package com.topdraw.business.module.user.iptv.growreport.service.dto;
2
3 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
4 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
5 import lombok.Data;
6
7 import java.io.Serializable;
8 import java.sql.Timestamp;
9
10
11 /**
12 * @author XiangHan
13 * @date 2022-07-07
14 */
15 @Data
16 public class GrowthReportDTO implements Serializable {
17
18 // 处理精度丢失问题
19 @JsonSerialize(using= ToStringSerializer.class)
20 private Long id;
21
22 // 用户id
23 private Long userId;
24
25 // 会员id
26 private Long memberId;
27
28 // 会员code
29 private String memberCode;
30
31 // 大屏账号
32 private String platformAccount;
33
34 // 开始日期
35 private String startDate;
36
37 // 结束时间
38 private String endDate;
39
40 // 栏目播放时长数据
41 private String data;
42
43 // 创建时间
44 private Timestamp createTime;
45
46 // 修改时间
47 private Timestamp updateTime;
48 }
1 package com.topdraw.business.module.user.iptv.growreport.service.impl;
2
3 import cn.hutool.core.lang.Snowflake;
4 import cn.hutool.core.util.IdUtil;
5 import com.topdraw.business.module.user.iptv.growreport.domain.GrowthReport;
6 import com.topdraw.business.module.user.iptv.growreport.repository.GrowthReportRepository;
7 import com.topdraw.business.module.user.iptv.growreport.service.GrowthReportService;
8 import com.topdraw.business.module.user.iptv.growreport.service.dto.GrowthReportDTO;
9 import com.topdraw.business.module.user.iptv.growreport.service.mapper.GrowthReportMapper;
10 import com.topdraw.utils.ValidationUtil;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.dao.EmptyResultDataAccessException;
13 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Propagation;
15 import org.springframework.transaction.annotation.Transactional;
16 import org.springframework.util.Assert;
17
18 /**
19 * @author XiangHan
20 * @date 2022-07-07
21 */
22 @Service
23 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
24 public class GrowthReportServiceImpl implements GrowthReportService {
25
26 @Autowired
27 private GrowthReportRepository growthReportRepository;
28
29 @Autowired
30 private GrowthReportMapper growthReportMapper;
31
32 @Override
33 public GrowthReportDTO findById(Long id) {
34 GrowthReport growthReport = this.growthReportRepository.findById(id).orElseGet(GrowthReport::new);
35 ValidationUtil.isNull(growthReport.getId(),"GrowthReport","id",id);
36 return this.growthReportMapper.toDto(growthReport);
37 }
38
39 @Override
40 @Transactional(rollbackFor = Exception.class)
41 public void create(GrowthReport resources) {
42 Snowflake snowflake = IdUtil.createSnowflake(1, 1);
43 resources.setId(snowflake.nextId());
44 this.growthReportRepository.save(resources);
45 }
46
47 @Override
48 @Transactional(rollbackFor = Exception.class)
49 public void update(GrowthReport resources) {
50 GrowthReport growthReport = this.growthReportRepository.findById(resources.getId()).orElseGet(GrowthReport::new);
51 ValidationUtil.isNull( growthReport.getId(),"GrowthReport","id",resources.getId());
52 growthReport.copy(resources);
53 this.growthReportRepository.save(growthReport);
54 }
55
56 @Override
57 @Transactional(rollbackFor = Exception.class)
58 public void delete(Long id) {
59 Assert.notNull(id, "The given id must not be null!");
60 GrowthReport growthReport = this.growthReportRepository.findById(id).orElseThrow(
61 () -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", GrowthReport.class, id), 1));
62 this.growthReportRepository.delete(growthReport);
63 }
64
65 @Override
66 public GrowthReportDTO findByPlatformAccountAndStartDateAndEndDate(String platformAccount, String weekFirstDay, String weekLastDay) {
67 GrowthReport growthReport = this.growthReportRepository.findByPlatformAccountAndStartDateAndEndDate(platformAccount, weekFirstDay, weekLastDay).orElseGet(GrowthReport::new);
68 return this.growthReportMapper.toDto(growthReport);
69 }
70
71 @Override
72 @Transactional(rollbackFor = Exception.class)
73 public Integer updateGrowthReportData(Long id, String data) {
74 return this.growthReportRepository.updateGrowthReportData(id, data);
75 }
76
77
78 }
1 package com.topdraw.business.module.user.iptv.growreport.service.mapper;
2
3 import com.topdraw.base.BaseMapper;
4 import com.topdraw.business.module.user.iptv.growreport.domain.GrowthReport;
5 import com.topdraw.business.module.user.iptv.growreport.service.dto.GrowthReportDTO;
6 import org.mapstruct.Mapper;
7 import org.mapstruct.ReportingPolicy;
8
9 /**
10 * @author XiangHan
11 * @date 2022-07-07
12 */
13 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
14 public interface GrowthReportMapper extends BaseMapper<GrowthReportDTO, GrowthReport> {
15
16 }
...@@ -8,6 +8,9 @@ import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; ...@@ -8,6 +8,9 @@ import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
8 import com.topdraw.business.module.member.service.MemberService; 8 import com.topdraw.business.module.member.service.MemberService;
9 import com.topdraw.business.module.member.service.dto.MemberDTO; 9 import com.topdraw.business.module.member.service.dto.MemberDTO;
10 import com.topdraw.business.module.user.iptv.domain.UserTv; 10 import com.topdraw.business.module.user.iptv.domain.UserTv;
11 import com.topdraw.business.module.user.iptv.growreport.domain.GrowthReport;
12 import com.topdraw.business.module.user.iptv.growreport.service.GrowthReportService;
13 import com.topdraw.business.module.user.iptv.growreport.service.dto.GrowthReportDTO;
11 import com.topdraw.business.module.user.iptv.service.UserTvService; 14 import com.topdraw.business.module.user.iptv.service.UserTvService;
12 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO; 15 import com.topdraw.business.module.user.iptv.service.dto.UserTvDTO;
13 import com.topdraw.business.module.user.weixin.domain.UserWeixin; 16 import com.topdraw.business.module.user.weixin.domain.UserWeixin;
...@@ -18,6 +21,7 @@ import com.topdraw.business.process.service.dto.MemberAndUserTvDTO; ...@@ -18,6 +21,7 @@ import com.topdraw.business.process.service.dto.MemberAndUserTvDTO;
18 import com.topdraw.business.process.service.dto.MemberAndWeixinUserDTO; 21 import com.topdraw.business.process.service.dto.MemberAndWeixinUserDTO;
19 import com.topdraw.exception.EntityNotFoundException; 22 import com.topdraw.exception.EntityNotFoundException;
20 import com.topdraw.exception.GlobeExceptionMsg; 23 import com.topdraw.exception.GlobeExceptionMsg;
24 import com.topdraw.util.TimestampUtil;
21 import lombok.extern.slf4j.Slf4j; 25 import lombok.extern.slf4j.Slf4j;
22 import org.apache.commons.lang3.StringUtils; 26 import org.apache.commons.lang3.StringUtils;
23 import org.springframework.beans.BeanUtils; 27 import org.springframework.beans.BeanUtils;
...@@ -42,25 +46,40 @@ public class UserOperationServiceImpl implements UserOperationService { ...@@ -42,25 +46,40 @@ public class UserOperationServiceImpl implements UserOperationService {
42 private UserWeixinService userWeixinService; 46 private UserWeixinService userWeixinService;
43 @Autowired 47 @Autowired
44 private MemberProfileService memberProfileService; 48 private MemberProfileService memberProfileService;
49 @Autowired
50 private GrowthReportService growthReportService;
51
52
53 public void asyncsaveGrowthReport(GrowthReport growthReport) {
54 String platformAccount = growthReport.getPlatformAccount();
55 UserTvDTO userTvDTO = this.userTvService.findByPlatformAccount(platformAccount);
56 if (Objects.isNull(userTvDTO.getId())){
57 log.error("保存成长报告失败,大屏信息不存在[asyncsaveGrowthReport#]");
58 return;
59 }
60
61 String weekFirstDay = com.topdraw.util.DateUtil.getWeekFirstDay();
62 String weekLastDay = com.topdraw.util.DateUtil.getWeekLastDay();
63 GrowthReportDTO growthReportDTO = this.growthReportService.findByPlatformAccountAndStartDateAndEndDate(platformAccount, weekFirstDay, weekLastDay);
64
65 if (Objects.isNull(growthReportDTO.getId())) {
45 66
67 Long id = userTvDTO.getId();
68 Long memberId = userTvDTO.getMemberId();
69 growthReport.setUserId(id);
70 growthReport.setMemberId(memberId);
71 growthReport.setStartDate(weekFirstDay);
72 growthReport.setEndDate(weekLastDay);
46 73
47 /* {"entityBody":"{\"memberDTO\":{\"birthday\":\"1900-01-01\",\"blackStatus\":0,\"code\":\"1540299597507502080\"," + 74 this.growthReportService.create(growthReport);
48 "\"couponAmount\":0,\"createTime\":1656071016149,\"dueCouponAmount\":0,\"duePoints\":0,\"exp\":0,\"gender\":-1," +
49 "\"id\":62515,\"level\":1,\"points\":0,\"status\":1," +
50 "\"type\":2,\"updateTime\":1656071016149,\"vip\":0}," +
51 "" +
52 "\"userWeixinDTO\":{\"accessToken\":\"\",\"appid\":\"wx0f7db04bbc5aa004\"," +
53 "\"city\":\"\",\"country\":\"\",\"createBy\":\"system\"," +
54 "\"createTime\":1656071016625,\"description\":\"\"," +
55 "\"headimgurl\":\"\",\"id\":127987," +
56 "\"memberCode\":\"1540299597507502080\"," +
57 "\"memberId\":62515,\"nickname\":\"\"," +
58 "\"openid\":\"oJ4Pl4rRiLHLfPx2Zey0YUC-89T0\"," +
59 "\"privilege\":\"\",\"province\":\"\"," +
60 "\"refreshToken\":\"\",\"sex\":-1,\"sourceDesc\":\"\",\"sourceEntity\":\"\"," +
61 "\"sourceId\":\"\",\"sourceType\":\"\",\"sourceUser\":0,\"status\":0,\"syncStatus\":0," +
62 "\"unionid\":\"oqDha5lxMuXYMGgT6gyLIFL7VumM\",\"updateBy\":\"system\",\"updateTime\":1656071016625}}*/
63 75
76 } else {
77
78 this.growthReportService.updateGrowthReportData(growthReportDTO.getId(), growthReport.getData());
79
80 }
81
82 }
64 83
65 @Transactional(propagation = Propagation.SUPPORTS, rollbackFor = Exception.class) 84 @Transactional(propagation = Propagation.SUPPORTS, rollbackFor = Exception.class)
66 public void asyncMemberAndUserWeixin4Iptv(MemberAndWeixinUserDTO memberAndWeixinUserDTO) { 85 public void asyncMemberAndUserWeixin4Iptv(MemberAndWeixinUserDTO memberAndWeixinUserDTO) {
......
...@@ -16,6 +16,26 @@ public class RabbitMqCustomConfig { ...@@ -16,6 +16,26 @@ public class RabbitMqCustomConfig {
16 private List<Map<String, String>> list; 16 private List<Map<String, String>> list;
17 17
18 /** 18 /**
19 * growthReport
20 * @return
21 */
22 public Map<String, String> ucgGrowthReportInfo() {
23
24 if (CollectionUtils.isNotEmpty(list)) {
25
26 for (Map<String, String> map : list) {
27 String type = map.get("source");
28 if (type.equalsIgnoreCase("growthReport")) {
29 return map;
30 }
31 }
32
33 }
34
35 return null;
36 }
37
38 /**
19 * viewRecord 39 * viewRecord
20 * @return 40 * @return
21 */ 41 */
......
...@@ -160,6 +160,53 @@ public class RabbitMqSourceConfig { ...@@ -160,6 +160,53 @@ public class RabbitMqSourceConfig {
160 160
161 /**************************************************uc-getaway 2 uc-consumer*************************************************************/ 161 /**************************************************uc-getaway 2 uc-consumer*************************************************************/
162 162
163
164
165 @Value("#{rabbitMqCustomConfig.ucgGrowthReportInfo()}")
166 private Map<String, String> ucgGrowthReportInfo;
167
168 public static final String GROWTH_REPORT_EXCHANGE = "growthReport.exchange";
169 public static final String GROWTH_REPORT_QUEUE = "growthReport.queue";
170
171 public String getGrowthReportQueue(){
172 if (Objects.nonNull(ucgGrowthReportInfo)) {
173 if (MapUtils.isNotEmpty(ucgGrowthReportInfo)) {
174 String queue = ucgGrowthReportInfo.get("queue");
175 return queue;
176 }
177 }
178
179 return GROWTH_REPORT_QUEUE;
180 }
181
182 public String getGrowthReportSource(){
183 if (Objects.nonNull(ucgGrowthReportInfo)) {
184 if (MapUtils.isNotEmpty(ucgGrowthReportInfo)) {
185 String source = ucgGrowthReportInfo.get("active");
186 if (StringUtils.isNotBlank(source)) {
187 return this.chargeSource(source);
188 } else {
189 return SERVICE_;
190 }
191 }
192 }
193
194 return SERVICE_;
195 }
196
197 public String getGrowthReportStartUp(){
198 if (Objects.nonNull(ucgGrowthReportInfo)) {
199 if (MapUtils.isNotEmpty(ucgGrowthReportInfo)) {
200 String source = ucgGrowthReportInfo.get("active");
201 if (StringUtils.isNotBlank(source)) {
202 return "true";
203 }
204 }
205 }
206
207 return "false";
208 }
209
163 public static final String EVENT_EXCHANGE = "event.exchange"; 210 public static final String EVENT_EXCHANGE = "event.exchange";
164 public static final String EVENT_QUEUE = "event.queue"; 211 public static final String EVENT_QUEUE = "event.queue";
165 212
......
...@@ -78,6 +78,47 @@ public class UcGatewayIptv2IptvConsumer { ...@@ -78,6 +78,47 @@ public class UcGatewayIptv2IptvConsumer {
78 } 78 }
79 79
80 80
81
82 /**
83 * @description 删除全部收藏记录
84 * @param content 消息内容
85 */
86 @RabbitHandler
87 @RabbitListener(queues = "#{rabbitMqSourceConfig.getGrowthReportQueue()}",
88 containerFactory = "#{rabbitMqSourceConfig.getGrowthReportSource()}",
89 autoStartup = "#{rabbitMqSourceConfig.getGrowthReportStartUp()}",
90 ackMode = "AUTO")
91 public void dealGrowthReport(Channel channel, Message message, String content) throws IOException {
92 log.info("receive dealGrowthReport add message, content {}", content);
93
94 try {
95
96 JSONObject jsonObject = JSON.parseObject(content, JSONObject.class);
97 if (Objects.nonNull(content)) {
98 Object msgData = jsonObject.get("msgData");
99 JSONObject response = this.restTemplateClient.saveGrowthReport(JSON.toJSONString(msgData));
100 if (Objects.isNull(response)) {
101 log.error("同步大屏成长报告失败,uce接口响应超时");
102 }
103 }
104
105 } catch (Exception e) {
106 log.error("同步大屏成长报告失败,cause ==>> {}", e.getMessage());
107
108 if (MapUtils.isNotEmpty(error)) {
109 String errorStart = this.error.get("start");
110
111 if (errorStart.equalsIgnoreCase("true")) {
112 String fileName = this.error.get("fileName")+"_"+ LocalDate.now() +".log";
113 String filePath = this.error.get("filePath");
114 String filePath1 = filePath+fileName;
115 FileUtil.writeStringToFile2(filePath1, content, e.getMessage());
116 }
117
118 }
119 }
120 }
121
81 /** 122 /**
82 * @description 添加收藏记录 123 * @description 添加收藏记录
83 * @param content 消息内容 124 * @param content 消息内容
...@@ -348,4 +389,10 @@ public class UcGatewayIptv2IptvConsumer { ...@@ -348,4 +389,10 @@ public class UcGatewayIptv2IptvConsumer {
348 } 389 }
349 } 390 }
350 } 391 }
392
393
394
395
396
397
351 } 398 }
......
...@@ -6,12 +6,14 @@ import com.topdraw.config.ResponseStatus; ...@@ -6,12 +6,14 @@ import com.topdraw.config.ResponseStatus;
6 import com.topdraw.mq.consumer.UcEventBusIptv2ManagementUcEngine; 6 import com.topdraw.mq.consumer.UcEventBusIptv2ManagementUcEngine;
7 import com.topdraw.mq.domain.DataSyncMsg; 7 import com.topdraw.mq.domain.DataSyncMsg;
8 import com.topdraw.mq.domain.SubscribeBean; 8 import com.topdraw.mq.domain.SubscribeBean;
9 import com.topdraw.util.Base64Util;
9 import lombok.extern.slf4j.Slf4j; 10 import lombok.extern.slf4j.Slf4j;
10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.core.env.Environment; 12 import org.springframework.core.env.Environment;
12 import org.springframework.http.ResponseEntity; 13 import org.springframework.http.ResponseEntity;
13 import org.springframework.http.client.SimpleClientHttpRequestFactory; 14 import org.springframework.http.client.SimpleClientHttpRequestFactory;
14 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
16 import org.springframework.util.Base64Utils;
15 import org.springframework.web.client.RestTemplate; 17 import org.springframework.web.client.RestTemplate;
16 18
17 import javax.annotation.PostConstruct; 19 import javax.annotation.PostConstruct;
...@@ -153,6 +155,23 @@ public class RestTemplateClient { ...@@ -153,6 +155,23 @@ public class RestTemplateClient {
153 return null; 155 return null;
154 } 156 }
155 157
158 public JSONObject saveGrowthReport(String content) {
159 try {
160 String url = BASE_URL + "/uce/userOperation/saveGrowthReport";
161 String encode = Base64Utils.encodeToString(content.getBytes());
162 log.info("request url is ==>> {} || param is ==>> {} ", url, encode);
163 ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, encode, String.class);
164 log.info("response ==>> {}", responseEntity);
165
166 return getParseResponseResult(responseEntity);
167
168 } catch (Exception e) {
169 log.error("删除所有观影记录(ApiUti.deleteAllCollection)信息时出现异常,cause ==>> {}", e.getMessage());
170 }
171
172 return null;
173 }
174
156 public JSONObject dealViewRecord(String content) { 175 public JSONObject dealViewRecord(String content) {
157 try { 176 try {
158 String url = BASE_URL + "/uce/userOperation/addCollection"; 177 String url = BASE_URL + "/uce/userOperation/addCollection";
......
...@@ -2,6 +2,7 @@ package com.topdraw.util; ...@@ -2,6 +2,7 @@ package com.topdraw.util;
2 2
3 import java.text.ParseException; 3 import java.text.ParseException;
4 import java.text.SimpleDateFormat; 4 import java.text.SimpleDateFormat;
5 import java.util.Calendar;
5 import java.util.Date; 6 import java.util.Date;
6 7
7 public class DateUtil { 8 public class DateUtil {
...@@ -27,4 +28,28 @@ public class DateUtil { ...@@ -27,4 +28,28 @@ public class DateUtil {
27 28
28 return null; 29 return null;
29 } 30 }
31
32 public static String getWeekFirstDay() {
33 SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
34
35 Calendar calendar1=Calendar.getInstance();
36
37 calendar1.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
38
39 System.out.println("本周日: "+sdf.format(calendar1.getTime()));
40
41 return sdf.format(calendar1.getTime());
42 }
43
44 public static String getWeekLastDay() {
45 SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
46
47 Calendar calendar1=Calendar.getInstance();
48 calendar1.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
49
50 System.out.println("本周六: "+sdf.format(calendar1.getTime()));
51
52 return sdf.format(calendar1.getTime());
53 }
54
30 } 55 }
......
...@@ -99,6 +99,12 @@ mutil-mq: ...@@ -99,6 +99,12 @@ mutil-mq:
99 service: 99 service:
100 mq: 100 mq:
101 list: 101 list:
102 - source: growthReport
103 exchange: growthReport.exchange
104 queue: growthReport.queue
105 exchange-type: direct
106 routing-key:
107 active: service
102 - source: event 108 - source: event
103 exchange: event.exchange 109 exchange: event.exchange
104 queue: event.queue 110 queue: event.queue
......