记得上下班打卡 | git大法好,push需谨慎

Commit 8dd2fcaf authored by 姜秀龙's avatar 姜秀龙

迁移老推送大麦到 plarform

parent 46a09ccb
...@@ -10,10 +10,8 @@ import org.springframework.web.bind.annotation.PutMapping; ...@@ -10,10 +10,8 @@ import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@Component @Component
@FeignClient(name = "liquidnet-service-platform", @FeignClient(name = "liquidnet-service-platform", contextId = "FeignPlatformTaskClient", path = "", url = "${liquidnet.service.platform.url}",
contextId = "FeignPlatformTaskClient", path = "", // url = "",
url = "${liquidnet.service.platform.url}",
// url = "",
fallback = FallbackFactory.Default.class) fallback = FallbackFactory.Default.class)
public interface FeignPlatformTaskClient { public interface FeignPlatformTaskClient {
...@@ -34,6 +32,7 @@ public interface FeignPlatformTaskClient { ...@@ -34,6 +32,7 @@ public interface FeignPlatformTaskClient {
/** /**
* 定时开票提醒 * 定时开票提醒
*
* @author zjp * @author zjp
* @return: com.liquidnet.service.base.ResponseDto<java.lang.Boolean> * @return: com.liquidnet.service.base.ResponseDto<java.lang.Boolean>
* @date 2024/3/21 18:03 * @date 2024/3/21 18:03
...@@ -43,11 +42,18 @@ public interface FeignPlatformTaskClient { ...@@ -43,11 +42,18 @@ public interface FeignPlatformTaskClient {
/* /*
* @description: 自动处理退款失败 * @description: 自动处理退款失败
*
* @author: zjp * @author: zjp
*
* @date: 2025/4/27 14:28 * @date: 2025/4/27 14:28
*
* @param: [] * @param: []
*
* @return: com.liquidnet.service.base.ResponseDto<java.lang.Boolean> * @return: com.liquidnet.service.base.ResponseDto<java.lang.Boolean>
**/ **/
@GetMapping("platform/refund/failRefund") @GetMapping("platform/refund/failRefund")
ResponseDto<Boolean> failRefund(); ResponseDto<Boolean> failRefund();
@PostMapping("platform/damai/sync")
ResponseDto<Boolean> syncDamai(@RequestParam("performancesId") String performancesId);
} }
...@@ -11,8 +11,10 @@ import org.springframework.stereotype.Component; ...@@ -11,8 +11,10 @@ import org.springframework.stereotype.Component;
* XxlJob开发示例(Bean模式) * XxlJob开发示例(Bean模式)
* <p> * <p>
* 开发步骤: * 开发步骤:
* 1、在Spring Bean实例中,开发Job方法,方式格式要求为 "public ReturnT<String> execute(String param)" * 1、在Spring Bean实例中,开发Job方法,方式格式要求为 "public ReturnT<String> execute(String
* 2、为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 * param)"
* 2、为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法",
* destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
* 3、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志; * 3、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*/ */
@Component @Component
...@@ -56,7 +58,8 @@ public class KylinTaskHandler { ...@@ -56,7 +58,8 @@ public class KylinTaskHandler {
@XxlJob(value = "sev-platform:checkTransferOrderHandler") @XxlJob(value = "sev-platform:checkTransferOrderHandler")
public void checkTransferOrderHandler() { public void checkTransferOrderHandler() {
try { try {
XxlJobHelper.handleSuccess("结果:" + feignPlatformTaskClient.checkTransferOrder(Integer.parseInt(XxlJobHelper.getJobParam())).getData()); XxlJobHelper.handleSuccess("结果:" + feignPlatformTaskClient
.checkTransferOrder(Integer.parseInt(XxlJobHelper.getJobParam())).getData());
} catch (Exception e) { } catch (Exception e) {
XxlJobHelper.log(e); XxlJobHelper.log(e);
XxlJobHelper.handleFail(); XxlJobHelper.handleFail();
...@@ -85,6 +88,7 @@ public class KylinTaskHandler { ...@@ -85,6 +88,7 @@ public class KylinTaskHandler {
/** /**
* 开票提醒定时推送 * 开票提醒定时推送
*
* @author zjp * @author zjp
* @param null * @param null
* @return: null * @return: null
...@@ -102,6 +106,7 @@ public class KylinTaskHandler { ...@@ -102,6 +106,7 @@ public class KylinTaskHandler {
/** /**
* 退款失败自动处理 * 退款失败自动处理
*
* @author zjp * @author zjp
* @param null * @param null
* @return: null * @return: null
...@@ -116,4 +121,19 @@ public class KylinTaskHandler { ...@@ -116,4 +121,19 @@ public class KylinTaskHandler {
XxlJobHelper.handleFail(); XxlJobHelper.handleFail();
} }
} }
@XxlJob(value = "sev-platform:syncDamai")
public void syncDamaiHandler() {
try {
String param = XxlJobHelper.getJobParam();
if (param == null || param.isEmpty()) {
XxlJobHelper.handleFail("performancesId is required");
return;
}
XxlJobHelper.handleSuccess("结果:" + feignPlatformTaskClient.syncDamai(param).getData());
} catch (Exception e) {
XxlJobHelper.log(e);
XxlJobHelper.handleFail();
}
}
} }
...@@ -139,6 +139,20 @@ ...@@ -139,6 +139,20 @@
<artifactId>liquident-common-erp</artifactId> <artifactId>liquident-common-erp</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-kylin-do</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>taobao-sdk-id</groupId>
<artifactId>taobao-sdk</artifactId>
<version>1.0.0</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${project.basedir}/lib/taobao-sdk-java-auto_1600401599540-20210607.jar</systemPath>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.liquidnet.service.platform.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.service.other.DamaiService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/platform/damai")
public class PlatformDamaiController {
@Autowired
private DamaiService damaiService;
@ApiOperation("同步大麦")
@PostMapping(value = "/sync")
public ResponseDto<Boolean> syncDamai(@RequestParam("performancesId") String performancesId) {
boolean result = damaiService.sycPerformance(performancesId);
return ResponseDto.success(result);
}
}
package com.liquidnet.service.platform.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.dao.OrderPushDamaiDto;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.other.DamaiService;
import com.liquidnet.service.platform.utils.TaobaoTicketUtils;
import com.liquidnet.service.slime.dto.vo.SlimeFieldsVo;
import com.taobao.api.TaobaoClient;
import com.taobao.api.internal.util.StringUtils;
import com.taobao.api.request.*;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam;
import com.taobao.api.request.AlibabaDamaiMevOpenPushitemRequest.PushTicketItemPushOpenParam;
import com.taobao.api.request.AlibabaDamaiMevOpenPushperformRequest.ThirdPerformPushOpenParam;
import com.taobao.api.request.AlibabaDamaiMevOpenPushprojectRequest.ThirdProjectPushOpenParam;
import com.taobao.api.response.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 巡演 服务实现类 (Platform Clone)
* </p>
*/
@Service
@Slf4j
public class PlatformDamaiServiceImpl extends ServiceImpl<KylinRoadShowsMapper, KylinRoadShows>
implements DamaiService {
@Autowired
private TaobaoTicketUtils taobaoTicketUtils;
@Autowired
private KylinOrderTicketsMapper orderTicketsMapper;
@Autowired
private KylinPerformancesMapper performancesMapper;
@Autowired
private KylinPerformanceRelationsMapper performanceRelationsMapper;
@Autowired
private KylinTicketTimesMapper ticketTimesMapper;
@Autowired
private KylinTicketTimeRelationMapper ticketTimeRelationMapper;
@Autowired
private KylinTicketsMapper ticketsMapper;
@Autowired
private KylinTicketRelationsMapper ticketRelationsMapper;
@Autowired
private KylinTicketStatusMapper ticketStatusMapper;
@Autowired
private MongoTemplate mongoTemplate;
private ArrayList<Long> empty = new ArrayList<>();
int orderCountAll = 0;
@Override
public Boolean sycPerformance(String performanceId) {
try {
empty.clear();
orderCountAll = 0;
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenPushprojectRequest req = new AlibabaDamaiMevOpenPushprojectRequest();
ThirdProjectPushOpenParam obj1 = new ThirdProjectPushOpenParam();
KylinPerformances performanceData = performancesMapper
.selectOne(new UpdateWrapper<KylinPerformances>().eq("performances_id", performanceId));
KylinPerformanceRelations performanceRelationData = performanceRelationsMapper
.selectOne(new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performanceId));
obj1.setPicUrl(performanceData.getImgPoster());
long performanceKey = IDGenerator.getDamaiCode(performanceData.getPerformancesId());
obj1.setProjectId(performanceKey);
obj1.setProjectName(performanceData.getTitle());
if (performanceData.getCityId().equals(6977)) {
obj1.setCityId(110100L);
} else if (performanceData.getCityId().equals(3833)) {
obj1.setCityId(520100L);
} else {// 520100
SlimeFieldsVo fieldsVo = getFieldsVoByFieldId(performanceRelationData.getFieldId());
String cityId = fieldsVo != null ? fieldsVo.getCityId() : "110100"; // Default or handle null
if (fieldsVo == null) {
log.warn("Field not found for fieldId: {}", performanceRelationData.getFieldId());
}
obj1.setCityId(Long.parseLong(cityId));
}
obj1.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj1.setSystemId(taobaoTicketUtils.getSystemId());
Long venueId = sycField(performanceId, performanceRelationData.getFieldId());
if (venueId != 0) {
obj1.setVenueId(venueId);
}
req.setPushProjectParam(obj1);
log.info("[同步演出] 演出名称 = " + performanceData.getTitle() + " 大麦演出id =" + performanceKey);
AlibabaDamaiMevOpenPushprojectResponse rsp = client.execute(req);
log.info("[BODY = {}]", rsp.getBody());
if (rsp.getResult().getSuccess()) {
List<KylinTicketTimeRelation> timeRelation = ticketTimeRelationMapper
.selectList(new UpdateWrapper<KylinTicketTimeRelation>().eq("performance_id", performanceId));
for (int i = 0; i < timeRelation.size(); i++) {
KylinTicketTimes timeData = ticketTimesMapper.selectOne(new UpdateWrapper<KylinTicketTimes>()
.eq("ticket_times_id", timeRelation.get(i).getTimesId()));
boolean result = sycTimes(performanceKey, timeData, venueId);
if (!result) {
return false;
}
}
log.info("[ 同步大麦-完成 ]");
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
// Local implementation of DataUtils.getFieldsVoByFieldId logic
private SlimeFieldsVo getFieldsVoByFieldId(String fieldId) {
return mongoTemplate.findOne(Query.query(Criteria.where("fieldId").is(fieldId)), SlimeFieldsVo.class,
SlimeFieldsVo.class.getSimpleName());
}
public Long sycField(String performanceId, String fieldId) {
try {
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenPushvenueRequest req = new AlibabaDamaiMevOpenPushvenueRequest();
AlibabaDamaiMevOpenPushvenueRequest.ThirdVenuePushOpenParam obj1 = new AlibabaDamaiMevOpenPushvenueRequest.ThirdVenuePushOpenParam();
obj1.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj1.setSystemId(taobaoTicketUtils.getSystemId());
SlimeFieldsVo fieldsVo = getFieldsVoByFieldId(fieldId);
if (fieldsVo == null) {
return 0L;
}
obj1.setVenueId(Long.parseLong(fieldsVo.getFieldId()));
obj1.setVenueName(fieldsVo.getName());
obj1.setVenueAddress(fieldsVo.getAddress());
req.setPushVenueParam(obj1);
AlibabaDamaiMevOpenPushvenueResponse rsp = client.execute(req);
log.info("[同步场地] 场地名称 = " + obj1.getVenueName() + " 大麦场地id =" + obj1.getVenueId());
log.info("[BODY = {}]", rsp.getBody());
if (!rsp.getResult().getSuccess()) {
return 0L;
}
return obj1.getVenueId();
} catch (Exception e) {
e.printStackTrace();
return 0L;
}
}
@Override
public Boolean sycTimes(long performancesmId, KylinTicketTimes timesData, Long venueId) {
try {
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenPushperformRequest req = new AlibabaDamaiMevOpenPushperformRequest();
ThirdPerformPushOpenParam obj1 = new ThirdPerformPushOpenParam();
long ticketTimesKey = IDGenerator.getDamaiCode(timesData.getTicketTimesId());
obj1.setPerformId(ticketTimesKey);
obj1.setPerformName(timesData.getTitle());
obj1.setProjectId(performancesmId);
obj1.setVenueId(venueId);
obj1.setStartTime(StringUtils
.parseDateTime(timesData.getUseStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
obj1.setEndTime(StringUtils.parseDateTime(timesData.getUseEnd().plusDays(1).minusSeconds(1L)
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
obj1.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj1.setSystemId(taobaoTicketUtils.getSystemId());
req.setPushPerformParam(obj1);
log.info("[同步场次] 场次名称 = " + timesData.getTitle() + " 大麦场次id =" + ticketTimesKey);
AlibabaDamaiMevOpenPushperformResponse rsp = client.execute(req);
if (rsp.getResult().getSuccess()) {
List<KylinTicketRelations> ticketRelation = ticketRelationsMapper.selectList(
new UpdateWrapper<KylinTicketRelations>().eq("times_id", timesData.getTicketTimesId()));
for (int i = 0; i < ticketRelation.size(); i++) {
if (null != ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>()
.eq("ticket_id", ticketRelation.get(i).getTicketId()).eq("sync_damai", 1))) {
KylinTickets ticketData = ticketsMapper.selectOne(new UpdateWrapper<KylinTickets>()
.eq("tickets_id", ticketRelation.get(i).getTicketId()));
boolean result = sycTicket(ticketTimesKey, ticketData);
if (!result) {
return false;
}
}
}
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public Boolean sycTicket(long timemId, KylinTickets ticketsData) {
try {
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenPushitemRequest req = new AlibabaDamaiMevOpenPushitemRequest();
PushTicketItemPushOpenParam obj1 = new PushTicketItemPushOpenParam();
long ticketIdKey = IDGenerator.getDamaiCode(ticketsData.getTicketsId());
obj1.setItemId(ticketIdKey);
obj1.setItemName(ticketsData.getTitle());
obj1.setItemPrice(ticketsData.getPrice().longValue() * 100);
obj1.setPerformId(timemId);
obj1.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj1.setSystemId(taobaoTicketUtils.getSystemId());
req.setPushItemParam(obj1);
log.info("[同步票种] 票种名称 = " + ticketsData.getTitle() + " 大麦票种id =" + ticketIdKey + " 票种价格 = "
+ ticketsData.getPrice());
AlibabaDamaiMevOpenPushitemResponse rsp = client.execute(req);
if (rsp.getResult().getSuccess()) {
TaobaoClient client2 = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenPushitemRequest req2 = new AlibabaDamaiMevOpenPushitemRequest();
PushTicketItemPushOpenParam obj12 = new PushTicketItemPushOpenParam();
long ticketIdKey2 = Long.valueOf(ticketIdKey + "".concat("010"));
obj12.setItemId(ticketIdKey2);
obj12.setItemName(ticketsData.getTitle() + "-登登登VIP");
obj12.setItemPrice(ticketsData.getPrice().longValue() * 100);
obj12.setPerformId(timemId);
obj12.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj12.setSystemId(taobaoTicketUtils.getSystemId());
req2.setPushItemParam(obj12);
log.info("[同步票种] 票种名称 = " + ticketsData.getTitle() + "-登登登VIP 大麦票种id =" + ticketIdKey + " 票种价格 = "
+ ticketsData.getPrice());
AlibabaDamaiMevOpenPushitemResponse rsp2 = client2.execute(req2);
if (rsp2.getResult().getSuccess()) {
return sycOrder(timemId, ticketsData.getTicketsId(), ticketIdKey, ticketIdKey2);
} else {
return false;
}
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public Boolean sycOrder(long timemId, String ticketsId, long ticketsmId, long ticketIdMemberKey) {
try {
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenBatchpushticketRequest req = new AlibabaDamaiMevOpenBatchpushticketRequest();
List<OrderPushDamaiDto> data = orderTicketsMapper.pushDamaiDetailsList(ticketsId);
log.info("[同步订单] 票种张数 = " + data.size() + " 票种id =" + ticketsId);
int forSize = 100;
int orderCount = 0;
int forCount = data.size() % forSize == 0 ? data.size() / forSize : (data.size() / forSize) + 1;
for (int i = 0; i < forCount; i++) {
List<ThirdTicketPushOpenParam> list2 = new ArrayList<>();
for (int y = 0; y < forSize; y++) {
if ((i * forSize + y) == data.size()) {
break;
}
OrderPushDamaiDto item = data.get(i * forSize + y);
ThirdTicketPushOpenParam obj3 = new ThirdTicketPushOpenParam();
long orderTicketEntitiesKey;
if (item.getIsMember() == 1) {
orderTicketEntitiesKey = Long.valueOf(
IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("010"));
} else {
orderTicketEntitiesKey = Long.valueOf(
IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("020"));
}
long orderIdKey = IDGenerator.getDamaiCode(item.getOrderTicketsId());
if (item.getIsPayment() == 3 || item.getIsPayment() == 2) {
taobaoTicketUtils.withdrawDamaiOrder(timemId, orderTicketEntitiesKey);
} else if (item.getTransferStatus() == 2 || item.getTransferStatus() == 6) {
taobaoTicketUtils.withdrawDamaiOrder(timemId, orderTicketEntitiesKey);
} else {
if (item.getEnterType() == 0 && !item.getEnterName().equals("")) {
log.info("[入场人错误数据] 入场人id = " + item.getOrderTicketEntitiesId() + " 入场人 name = "
+ item.getEnterName());
}
if (empty.contains(orderTicketEntitiesKey)) {
log.info("[ ORDER COPY ] orderId = " + orderTicketEntitiesKey);
orderTicketEntitiesKey = Long.parseLong(orderTicketEntitiesKey + "1");
}
empty.add(orderTicketEntitiesKey);
orderCount += 1;
orderCountAll += 1;
list2.add(obj3);
obj3.setUserName(item.getEnterName());// 用户名 入场人姓名
obj3.setCertificateNo(item.getEnterIdCode());// 证件号 入场人身份证
obj3.setOrderUserMobile(item.getEnterMobile());// 用户手机号 入场人手机号
obj3.setCertificateType(item.getEnterType().longValue());// 证件内容 入场人证件type
try {
obj3.setPayTime(
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(item.getTimePay()));// 支付时间
} catch (java.text.ParseException e) {
log.error("Parse pay time error", e);
}
obj3.setPerformId(timemId);// 场次id
if (item.getIsMember() == 1) {
obj3.setExt("登登登VIP");
obj3.setTicketItemId(ticketIdMemberKey);
} else {
obj3.setExt("登登登VIP");
obj3.setTicketItemId(ticketsmId);
}
obj3.setQrCode(
"http://m.zhengzai.tv?c=" + IDGenerator.ticketQrCode(item.getOrderTicketEntitiesId()));
obj3.setVoucherId(orderTicketEntitiesKey);// 票单号 入场人id
obj3.setOrderId(orderIdKey);// 订单id orderId
obj3.setMediumType(item.getGetTicketType().equals("express") ? 1L : 2L);// 票类型 快递 电子
obj3.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj3.setSystemId(taobaoTicketUtils.getSystemId());
obj3.setSeatType(1L);
obj3.setTicketType(1L);// 票类型
}
}
req.setThirdTicketSetOpenParamList(list2);
if (list2.size() == 0) {
return true;
} else {
AlibabaDamaiMevOpenBatchpushticketResponse rsp = client.execute(req);
if (!rsp.getResult().getSuccess()) {
return false;
}
}
}
log.info("[ ORDER COUNT ] orderCount = " + orderCount);
log.info("[ ORDER COUNT ALL ] orderCount = " + orderCountAll);
return true;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.liquidnet.service.platform.utils;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class TaobaoTicketUtils {
private String URL = "http://gw.api.taobao.com/router/rest";
private String APPKEY = "27542597";
private String SECRET = "900025efc616fd2446344bb8fa21d039";
private String SUPPLIER_SECRET = "444d0752439f921a75eaf5951a8bc03c";
private Long SYSTEM_ID = 15669L;
// private String url = "http://gw.api.tbsandbox.com/router/rest";
// private String appkey = "4272";
// private String secret = "0ebbcccfee18d7ad1aebc5b135ffa906";
private TaobaoClient client = null;
public TaobaoClient initTaobaoClient() {
if (client == null) {
client = new DefaultTaobaoClient(URL, APPKEY, SECRET);
}
return client;
}
public String getSupplierSecret() {
return SUPPLIER_SECRET;
}
public Long getSystemId() {
return SYSTEM_ID;
}
/**
* @param timesId 场次的id
* @param orderEntitiesId 入场人的id
* @return
*/
public boolean withdrawDamaiOrder(long timesId, long orderEntitiesId) {
try {
TaobaoClient client = initTaobaoClient();
AlibabaDamaiMevOpenWithdrawticketRequest req = new AlibabaDamaiMevOpenWithdrawticketRequest();
AlibabaDamaiMevOpenWithdrawticketRequest.TicketIdOpenParam obj1 = new AlibabaDamaiMevOpenWithdrawticketRequest.TicketIdOpenParam();
obj1.setPerformId(timesId);// 场次id
obj1.setVoucherId(orderEntitiesId);// 票单号 入场人id
obj1.setSupplierSecret(SUPPLIER_SECRET);
obj1.setSystemId(SYSTEM_ID);
req.setTicketIdOpenParam(obj1);
AlibabaDamaiMevOpenWithdrawticketResponse rsp = client.execute(req);
return rsp.getResult().getSuccess();
} catch (Exception e) {
return false;
}
}
public boolean refundDamaiOrder(KylinOrderTicketVo orderData, KylinPerformanceVo vo) {
try {
int isSysDamai = 0;
for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderData.getTicketId())) {
isSysDamai = ticketItem.getSysDamai();
break;
}
}
}
if (isSysDamai == 1) {
List<KylinOrderTicketEntitiesVo> listData = orderData.getEntitiesVoList();
for (int i = 0; i < listData.size(); i++) {
KylinOrderTicketEntitiesVo item = listData.get(i);
long ticketTimesKey;
if (item.getTicketId().length() > 13) {
ticketTimesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getTimeId()));
} else {
ticketTimesKey = Long.parseLong(item.getTimeId());
}
long orderTicketEntitiesKey;
// if (item.getOrderTicketEntitiesId().length() > 13) {
// orderTicketEntitiesKey =
// Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()));
// } else {
// orderTicketEntitiesKey = Long.valueOf(item.getOrderTicketEntitiesId());//票单号
// 入场人id
// }
if (orderData.getIsMember() == 1) {
orderTicketEntitiesKey = Long.valueOf(
IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("010"));
} else {
orderTicketEntitiesKey = Long.valueOf(
IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("020"));
}
if (item.getIsPayment() == 2) {
withdrawDamaiOrder(ticketTimesKey, orderTicketEntitiesKey);
}
}
return true;
}
return true;
} catch (Exception e) {
log.info("REFUND DAMAI ERROR = {}", e);
return false;
}
}
}
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