Commit bf02e4aa by 周晓航

Merge branch 'feature/20210510/v2.0.30-记录每天下单门店-周晓航'

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/controller/OrderController.java
parents acb3e909 58b28046
......@@ -84,6 +84,11 @@ public class RedisKeyConstant {
/**
* 记录当日下单的门店
*/
public final static String KGD_NO_ORDER_STORE_DATE = "obs:no:order:store:date:";
/**
* cocoNotMadeGoods:商户号:门店号:yyyy-MM-dd
*
* @param partnerId
......
......@@ -17,6 +17,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.monitorcenter.tools.HealthUtil;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.MCCafeOrderService;
......@@ -57,6 +58,8 @@ public class OrderController {
private MallOrderServiceImpl mallOrderService;
@Autowired
private MCCafeOrderService mcCafeOrderService;
@Autowired
private OrderReportJobHandler orderReportJobHandler;
/**
* 创建订单之前校验前面排队的订单数
......@@ -481,4 +484,16 @@ public class OrderController {
/**
* TLS定时器 每天凌晨 上报昨天 门店支付记录 到 门店服务去
*/
@ApiAnnotation(logMessage = "sendYesterDayStoreMsg")
@GetMapping("/sendYesterDayStoreMsg")
public BaseResponse sendYesterDayStoreMsg() {
orderReportJobHandler.sendYesterDayStoreMsg();
return ResponseUtil.success();
}
}
package cn.freemud.entities.dto.openplatform;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/5/10 下午5:50
* @description :
*/
@Data
@Builder
public class PushOrderStoreDto {
private String pushDate;
private List<ReportStoreIdsRequestVo> partnerList;
}
package cn.freemud.entities.dto.openplatform;
import lombok.Builder;
import lombok.Data;
import java.util.List;
import java.util.Set;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/5/10 下午5:02
* @description :
*/
@Data
@Builder
public class ReportStoreIdsRequestVo {
String partnerId;
Set<String> storeCodeList;
}
package cn.freemud.handler;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.dto.openplatform.PushOrderStoreDto;
import cn.freemud.entities.dto.openplatform.ReportStoreIdsRequestVo;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.thirdparty.StoreBackstageClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundHashOperations;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/5/10 下午4:18
* @description : 【ID1027442】 下单门店记录并每天推送门店
* 第二天凌晨4点 报上 上一天的门店支付情况
* 使用 TLS 接口形式 定时访问
*/
@Component
public class OrderReportJobHandler {
private static final String pattern_yyyy_MM_dd = "yyyy-MM-dd";
//private static final String pattern_yyyyMMdd = "yyyyMMdd";
@Autowired
private RedisCache redisCache;
@Autowired
private StoreBackstageClient storeBackstageClient;
public void sendYesterDayStoreMsg() {
String date = getYesterdayString(pattern_yyyy_MM_dd);
BoundHashOperations<String, String, Set<String>> boundHashOperations = redisCache.getRedisTemplate().boundHashOps(RedisKeyConstant.KGD_NO_ORDER_STORE_DATE + date);
Map<String, Set<String>> entries = boundHashOperations.entries();
LogUtil.info("下单门店记录推送 entries", entries, null);
if (!CollectionUtils.isEmpty(entries)) {
// 推送门店 服务
List<ReportStoreIdsRequestVo> requestDto = new ArrayList<>(entries.size());
entries.forEach((partnerId, storeIds) -> {
ReportStoreIdsRequestVo build = ReportStoreIdsRequestVo.builder().partnerId(partnerId).storeCodeList(storeIds).build();
requestDto.add(build);
});
try {
// 发送服务
PushOrderStoreDto pushOrderStoreDto = PushOrderStoreDto.builder().pushDate(getYesterdayString(pattern_yyyy_MM_dd))
.partnerList(requestDto)
.build();
BaseResponse baseResponse = storeBackstageClient.pushOrderStore(pushOrderStoreDto);
LogUtil.info("上报门店支付情况", JSON.toJSONString(pushOrderStoreDto), JSON.toJSONString(baseResponse));
// fisherman 数据推送之后的 redis 缓存数据 是否清理 暂时没需求
} catch (Exception e) {
LogUtil.error("上报门店支付情况 error", null, JSON.toJSONString(e));
}
}
}
/**
* 需要获取 昨天的 yyyy-MM-dd
*
* @return
*/
private String getYesterdayString(String pattern) {
Calendar start = Calendar.getInstance();
// 取昨天时间
start.add(5, -1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);//注意月份是MM
return simpleDateFormat.format(start.getTime());
}
}
package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.openplatform.PushOrderStoreDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/5/10 下午5:45
* @description :
*/
@FeignClient(name = "STORE-BACKSTAGE")
@RequestMapping(consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public interface StoreBackstageClient {
@PostMapping("/orderStore/pushOrderStore")
BaseResponse pushOrderStore(@RequestBody PushOrderStoreDto request);
}
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