HagOrderServiceImpl.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package cn.efunbox.audio.impl.hag;
  2. import cn.efunbox.audio.entity.hag.HagOrder;
  3. import cn.efunbox.audio.repository.hag.HagOrderRepository;
  4. import cn.efunbox.audio.service.hag.HagOrderService;
  5. import cn.efunbox.audio.vo.hag.HagSkillReq;
  6. import cn.efunbox.audio.vo.hag.HagSkillResp;
  7. import cn.efunbox.audio.vo.hag.OrderSyncResult;
  8. import com.alibaba.fastjson.JSON;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.util.CollectionUtils;
  14. import java.util.*;
  15. /**
  16. * HagOrderServiceImpl
  17. * Created by xusq on 2019/12/25.
  18. */
  19. @Slf4j
  20. @Service
  21. public class HagOrderServiceImpl implements HagOrderService {
  22. @Autowired
  23. private HagOrderRepository hagOrderRepository;
  24. @Override
  25. public HagSkillResp save(HagSkillReq skillReq) {
  26. log.info("HAG sync order param : {}", JSON.toJSONString(skillReq));
  27. HagSkillReq.Endpoint endpoint = skillReq.getEndpoint();
  28. if (Objects.isNull(endpoint)) {
  29. return fillFailResp("400","参数错误");
  30. }
  31. HagSkillReq.Endpoint.Device device = endpoint.getDevice();
  32. if (Objects.isNull(device)) {
  33. return fillFailResp("400","device信息为空");
  34. }
  35. String deviceId = device.getDeviceId();
  36. if (StringUtils.isBlank(deviceId)) {
  37. return fillFailResp("400","deviceId为空");
  38. }
  39. HagSkillReq.HagInquire inquire = skillReq.getInquire();
  40. if (Objects.isNull(inquire) || Objects.isNull(inquire.getOrderRight())) {
  41. return fillFailResp("400","订单参数信息为空");
  42. }
  43. HagSkillReq.HagInquire.OrderRight orderRight = inquire.getOrderRight();
  44. List<HagSkillReq.HagInquire.OrderRight.ResourceRight> resourceRights = orderRight.getResourceRights();
  45. if (CollectionUtils.isEmpty(resourceRights)) {
  46. return fillFailResp("400","resourceRights为空");
  47. }
  48. String hagOrderId = orderRight.getOrderId();
  49. if (StringUtils.isBlank(hagOrderId)) {
  50. return fillFailResp("400","orderId为空");
  51. }
  52. HagOrder hagOrder = hagOrderRepository.findByOrderId(hagOrderId);
  53. if (Objects.nonNull(hagOrder)) {
  54. return fillSuccessResp(hagOrder.getId());
  55. }
  56. hagOrder = convertOrderObj(orderRight,resourceRights,deviceId);
  57. if (Objects.isNull(hagOrder)) {
  58. return fillFailResp("500","订单同步失败");
  59. }
  60. return fillSuccessResp(hagOrder.getId());
  61. }
  62. private HagOrder convertOrderObj(HagSkillReq.HagInquire.OrderRight orderRight, List<HagSkillReq.HagInquire.OrderRight.ResourceRight> resourceRights, String deviceId) {
  63. HagOrder hagOrder = new HagOrder();
  64. hagOrder.setSkuId(orderRight.getSkuId());
  65. hagOrder.setDeviceId(deviceId);
  66. hagOrder.setOrderId(orderRight.getOrderId());
  67. hagOrder.setAmount(orderRight.getAmount());
  68. hagOrder.setBoughtTime(orderRight.getBoughtTime());
  69. hagOrder.setCurrency(orderRight.getCurrency());
  70. String resourceId = resourceRights.get(0).getResourceId();
  71. hagOrder.setContentId(resourceId);
  72. hagOrder = hagOrderRepository.save(hagOrder);
  73. return hagOrder;
  74. }
  75. private HagSkillResp fillSuccessResp(String orderId) {
  76. HagSkillResp hagSkillResp = new HagSkillResp();
  77. hagSkillResp.setVersion("1.0.0");
  78. HagSkillResp.Reply<Map> reply = new HagSkillResp.Reply();
  79. reply.setIsEndSession(Boolean.TRUE);
  80. HagSkillResp.Reply.Command command = new HagSkillResp.Reply.Command();
  81. command.setNamespace("Charge");
  82. command.setName("SyncOrderRightCommandBody");
  83. OrderSyncResult orderSyncResult = new OrderSyncResult();
  84. orderSyncResult.setResultCode("SUCCESS");
  85. orderSyncResult.setCpOrderId(orderId);
  86. Map<String,OrderSyncResult> syncResultMap = new HashMap<>();
  87. syncResultMap.put("syncResult",orderSyncResult);
  88. command.setBody(syncResultMap);
  89. reply.setCommands(Arrays.asList(command));
  90. hagSkillResp.setReply(reply);
  91. return hagSkillResp;
  92. }
  93. private HagSkillResp fillFailResp(String errorCode,String errorMessage) {
  94. HagSkillResp hagSkillResp = new HagSkillResp();
  95. hagSkillResp.setErrorCode(errorCode);
  96. hagSkillResp.setErrorMessage(errorMessage);
  97. hagSkillResp.setVersion("1.0.0");
  98. HagSkillResp.Reply<OrderSyncResult> reply = new HagSkillResp.Reply();
  99. reply.setIsEndSession(Boolean.TRUE);
  100. HagSkillResp.Reply.Command command = new HagSkillResp.Reply.Command();
  101. command.setNamespace("Charge");
  102. command.setName("SyncOrderRightCommandBody");
  103. OrderSyncResult orderSyncResult = new OrderSyncResult();
  104. orderSyncResult.setResultCode("FAIL");
  105. orderSyncResult.setCpOrderId("");
  106. Map<String,OrderSyncResult> syncResultMap = new HashMap<>();
  107. syncResultMap.put("syncResult",orderSyncResult);
  108. command.setBody(syncResultMap);
  109. reply.setCommands(Arrays.asList(command));
  110. hagSkillResp.setReply(reply);
  111. return hagSkillResp;
  112. }
  113. }