|
@@ -0,0 +1,117 @@
|
|
|
+package com.zswl.cloud.springBtach.server.core.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.github.microservice.auth.client.content.ResultContent;
|
|
|
+import com.github.microservice.auth.client.content.ResultState;
|
|
|
+import com.github.microservice.auth.security.helper.AuthHelper;
|
|
|
+import com.zhongshu.payment.client.model.order.v2.CreatOrderResultModel;
|
|
|
+import com.zhongshu.payment.client.model.order.v2.CreateOrder2Model;
|
|
|
+import com.zhongshu.payment.client.model.order.v2.GoodsResultModel;
|
|
|
+import com.zhongshu.payment.client.model.order.v2.UpdateGoodsModel;
|
|
|
+import com.zhongshu.payment.client.service.v2.OrderService2;
|
|
|
+import com.zhongshu.payment.client.type.JobFlowMap;
|
|
|
+import com.zhongshu.payment.client.type.OrderType;
|
|
|
+import com.zhongshu.payment.client.type.TransferOwner;
|
|
|
+import com.zhongshu.payment.client.type.TransferType;
|
|
|
+import com.zswl.cloud.shop.client.service.ShopService;
|
|
|
+import com.zswl.cloud.shop.client.vo.life.AccountDetailVo;
|
|
|
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderDelitResponse;
|
|
|
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderRequest;
|
|
|
+import com.zswl.cloud.springBatch.client.service.QiuXiangService;
|
|
|
+import com.zswl.cloud.springBtach.server.core.api.qiuxiang.QiuXiangApi;
|
|
|
+import lombok.extern.log4j.Log4j2;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+@Service
|
|
|
+@Log4j2
|
|
|
+public class QiuXiangServiceImpl implements QiuXiangService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ OrderService2 orderService2;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ QiuXiangApi qiuXiangApi;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ AuthHelper authHelper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ ShopService shopService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultContent<JSONObject> placeOrder(OrderRequest orderRequest) {
|
|
|
+ JSONObject entries = qiuXiangApi.placeOrder(orderRequest);
|
|
|
+
|
|
|
+
|
|
|
+ String orderId = (String) entries.get("orderId");
|
|
|
+
|
|
|
+ JSONObject orderExtend = qiuXiangApi.orderDelit(orderId);
|
|
|
+ OrderDelitResponse orderDelitResponse = entries.toBean(OrderDelitResponse.class);
|
|
|
+ com.zswl.cloud.shop.client.ret.ResultContent<AccountDetailVo> shopSetting = shopService.shopSetting("秋香");
|
|
|
+ if (!shopSetting.getState().equals(com.zswl.cloud.shop.client.ret.ResultState.Success)) {
|
|
|
+ return ResultContent.build(ResultState.Fail, "秋香信息未配置");
|
|
|
+ }
|
|
|
+ AccountDetailVo content = shopSetting.getContent();
|
|
|
+ CreateOrder2Model createOrder2Model = new CreateOrder2Model();
|
|
|
+ createOrder2Model.setUserId(authHelper.getCurrentUser().getUserId());
|
|
|
+ createOrder2Model.setShopId(content.getAccountId());
|
|
|
+ createOrder2Model.setShopInfo(JSONUtil.parseObj(content));
|
|
|
+ createOrder2Model.setTotalAmount(BigDecimal.ZERO);
|
|
|
+ createOrder2Model.setDiscountAmount(BigDecimal.ZERO);
|
|
|
+ createOrder2Model.setPayAmount(BigDecimal.ZERO);
|
|
|
+ createOrder2Model.setAccesserUserId(content.getAuthAccount());
|
|
|
+ CreateOrder2Model.Goods goods = new CreateOrder2Model.Goods();
|
|
|
+ goods.setGoodsId(authHelper.getUserToken());
|
|
|
+ goods.setJobFlowMap(JobFlowMap.QiuXiang);
|
|
|
+ JSONObject goodsInfo = JSONUtil.parseObj(orderRequest);
|
|
|
+ goodsInfo.set("channelOrderId", orderId);
|
|
|
+ goods.setGoodsInfo(goodsInfo);
|
|
|
+ goods.setExtend(orderExtend.toString());
|
|
|
+ goods.setPayAmount(BigDecimal.ZERO);
|
|
|
+ goods.setTransferType(TransferType.FIXED);
|
|
|
+ CreateOrder2Model.Owner owner = new CreateOrder2Model.Owner();
|
|
|
+ owner.setOwner(TransferOwner.PLATFORM);
|
|
|
+ owner.setValue(BigDecimal.ZERO);
|
|
|
+ goods.setTransferRrule(List.of(owner));
|
|
|
+
|
|
|
+
|
|
|
+ ResultContent<CreatOrderResultModel> creat = orderService2.creat(createOrder2Model);
|
|
|
+ log.info("秋香创建订单结果:{}", creat);
|
|
|
+
|
|
|
+
|
|
|
+ return ResultContent.build(ResultState.Success, entries);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultContent<OrderDelitResponse> orderDelit(String orderId) {
|
|
|
+ ResultContent<GoodsResultModel> goodsResultModelResultContent = orderService2.qrGoods(orderId);
|
|
|
+ GoodsResultModel content = goodsResultModelResultContent.getContent();
|
|
|
+ JSONObject goodsInfo = content.getGoodsInfo();
|
|
|
+ String goodsId = goodsInfo.get("channelOrderId").toString();
|
|
|
+
|
|
|
+ JSONObject entries = qiuXiangApi.orderDelit(goodsId);
|
|
|
+ OrderDelitResponse orderDelitResponse = entries.toBean(OrderDelitResponse.class);
|
|
|
+ UpdateGoodsModel updateGoodsModel = new UpdateGoodsModel();
|
|
|
+ updateGoodsModel.setId(orderId);
|
|
|
+ updateGoodsModel.setExtend(JSONUtil.toJsonStr(orderDelitResponse));
|
|
|
+ int orderStatus = orderDelitResponse.getOrderStatus();
|
|
|
+ if (orderStatus == 2) {
|
|
|
+ updateGoodsModel.setGoodsState(OrderType.USED);
|
|
|
+ } else if (orderStatus == -1) {
|
|
|
+ updateGoodsModel.setGoodsState(OrderType.CLOSE);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ orderService2.updateGoods(updateGoodsModel);
|
|
|
+
|
|
|
+
|
|
|
+ return ResultContent.build(ResultState.Success, orderDelitResponse);
|
|
|
+ }
|
|
|
+}
|