|
@@ -0,0 +1,128 @@
|
|
|
+package cn.efunbox.audio.impl.hag;
|
|
|
+
|
|
|
+import cn.efunbox.audio.entity.hag.HagOrder;
|
|
|
+import cn.efunbox.audio.repository.hag.HagOrderRepository;
|
|
|
+import cn.efunbox.audio.service.hag.HagOrderService;
|
|
|
+import cn.efunbox.audio.vo.hag.HagSkillReq;
|
|
|
+import cn.efunbox.audio.vo.hag.HagSkillResp;
|
|
|
+import cn.efunbox.audio.vo.hag.OrderSyncResult;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * HagOrderServiceImpl
|
|
|
+ * Created by xusq on 2019/12/25.
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class HagOrderServiceImpl implements HagOrderService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private HagOrderRepository hagOrderRepository;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public HagSkillResp save(HagSkillReq skillReq) {
|
|
|
+ log.info("HAG sync order param : {}", JSON.toJSONString(skillReq));
|
|
|
+ HagSkillReq.Endpoint endpoint = skillReq.getEndpoint();
|
|
|
+ if (Objects.isNull(endpoint)) {
|
|
|
+ return fillFailResp("400","参数错误");
|
|
|
+ }
|
|
|
+
|
|
|
+ HagSkillReq.Endpoint.Device device = endpoint.getDevice();
|
|
|
+ if (Objects.isNull(device)) {
|
|
|
+ return fillFailResp("400","device信息为空");
|
|
|
+ }
|
|
|
+ String deviceId = device.getDeviceId();
|
|
|
+ if (StringUtils.isBlank(deviceId)) {
|
|
|
+ return fillFailResp("400","deviceId为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ HagSkillReq.HagInquire inquire = skillReq.getInquire();
|
|
|
+ if (Objects.isNull(inquire) || Objects.isNull(inquire.getOrderRight())) {
|
|
|
+ return fillFailResp("400","订单参数信息为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ HagSkillReq.HagInquire.OrderRight orderRight = inquire.getOrderRight();
|
|
|
+ List<HagSkillReq.HagInquire.OrderRight.ResourceRight> resourceRights = orderRight.getResourceRights();
|
|
|
+ if (CollectionUtils.isEmpty(resourceRights)) {
|
|
|
+ return fillFailResp("400","订单媒资数据为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ String hagOrderId = orderRight.getOrderId();
|
|
|
+
|
|
|
+ HagOrder hagOrder = hagOrderRepository.findByOrderId(hagOrderId);
|
|
|
+ if (Objects.nonNull(hagOrder)) {
|
|
|
+ return fillSuccessResp(hagOrder.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ hagOrder = convertOrderObj(orderRight,resourceRights,deviceId);
|
|
|
+ if (Objects.isNull(hagOrder)) {
|
|
|
+ return fillFailResp("500","订单同步失败");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return fillSuccessResp(hagOrder.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ private HagOrder convertOrderObj(HagSkillReq.HagInquire.OrderRight orderRight, List<HagSkillReq.HagInquire.OrderRight.ResourceRight> resourceRights, String deviceId) {
|
|
|
+
|
|
|
+ HagOrder hagOrder = new HagOrder();
|
|
|
+ hagOrder.setSkuId(orderRight.getSkuId());
|
|
|
+ hagOrder.setDeviceId(deviceId);
|
|
|
+ hagOrder.setOrderId(orderRight.getOrderId());
|
|
|
+ hagOrder.setAmount(orderRight.getAmount());
|
|
|
+ hagOrder.setBoughtTime(orderRight.getBoughtTime());
|
|
|
+ hagOrder.setCurrency(orderRight.getCurrency());
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ resourceRights.forEach(resourceRight -> sb.append(resourceRight.getResourceId()).append(","));
|
|
|
+ hagOrder.setContentId(sb.toString());
|
|
|
+
|
|
|
+ hagOrder = hagOrderRepository.save(hagOrder);
|
|
|
+
|
|
|
+ return hagOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ private HagSkillResp fillSuccessResp(String orderId) {
|
|
|
+ HagSkillResp hagSkillResp = new HagSkillResp();
|
|
|
+ hagSkillResp.setVersion("1.0.0");
|
|
|
+ HagSkillResp.Reply<OrderSyncResult> reply = new HagSkillResp.Reply();
|
|
|
+ reply.setIsEndSession(Boolean.TRUE);
|
|
|
+ HagSkillResp.Reply.Command command = new HagSkillResp.Reply.Command();
|
|
|
+ command.setNamespace("Charge");
|
|
|
+ command.setName("SyncOrderRightCommandBody");
|
|
|
+ OrderSyncResult orderSyncResult = new OrderSyncResult();
|
|
|
+ orderSyncResult.setResultCode("SUCCESS");
|
|
|
+ orderSyncResult.setCpOrderId(orderId);
|
|
|
+ command.setBody(orderSyncResult);
|
|
|
+ reply.setCommands(Arrays.asList(command));
|
|
|
+ hagSkillResp.setReply(reply);
|
|
|
+ return hagSkillResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ private HagSkillResp fillFailResp(String errorCode,String errorMessage) {
|
|
|
+ HagSkillResp hagSkillResp = new HagSkillResp();
|
|
|
+ hagSkillResp.setErrorCode(errorCode);
|
|
|
+ hagSkillResp.setErrorMessage(errorMessage);
|
|
|
+ hagSkillResp.setVersion("1.0.0");
|
|
|
+ HagSkillResp.Reply<OrderSyncResult> reply = new HagSkillResp.Reply();
|
|
|
+ reply.setIsEndSession(Boolean.TRUE);
|
|
|
+ HagSkillResp.Reply.Command command = new HagSkillResp.Reply.Command();
|
|
|
+ command.setNamespace("Charge");
|
|
|
+ command.setName("SyncOrderRightCommandBody");
|
|
|
+ OrderSyncResult orderSyncResult = new OrderSyncResult();
|
|
|
+ orderSyncResult.setResultCode("FAIL");
|
|
|
+ orderSyncResult.setCpOrderId("");
|
|
|
+ command.setBody(orderSyncResult);
|
|
|
+ reply.setCommands(Arrays.asList(command));
|
|
|
+ hagSkillResp.setReply(reply);
|
|
|
+ return hagSkillResp;
|
|
|
+ }
|
|
|
+}
|