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

Commit 90e7e870 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/master' into new_member

parents 57cd0c52 dc6ca852
......@@ -25,6 +25,9 @@ public interface IKylinOrderTicketsService {
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList();
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderListMongo(Integer page,Integer size);
//订单详情
OrderDetailsVo orderDetails(String orderId);
......
......@@ -14,5 +14,5 @@ public interface DamaiService {
Boolean sycTicket(long timeId, KylinTickets ticketsData);
//订单
Boolean sycOrder(long timeId, String ticketsId, long ticketsmId);
Boolean sycOrder(long timeId, String ticketsId, long ticketsmId,long ticketIdMemberKey);
}
......@@ -204,13 +204,28 @@ public class KylinDamaiServiceImpl extends ServiceImpl<KylinRoadShowsMapper, Kyl
obj1.setPerformId(timemId);
obj1.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj1.setSystemId(taobaoTicketUtils.getSystemId());
// obj1.setRemark("0");
req.setPushItemParam(obj1);
log.info("[同步票种] 票种名称 = " + ticketsData.getTitle() + " 大麦票种id =" + ticketIdKey + " 票种价格 = " + ticketsData.getPrice());
AlibabaDamaiMevOpenPushitemResponse rsp = client.execute(req);
if (rsp.getResult().getSuccess()) {
return sycOrder(timemId, ticketsData.getTicketsId(), ticketIdKey);
// return true;
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;
}
......@@ -221,7 +236,7 @@ public class KylinDamaiServiceImpl extends ServiceImpl<KylinRoadShowsMapper, Kyl
}
@Override
public Boolean sycOrder(long timemId, String ticketsId, long ticketsmId) {
public Boolean sycOrder(long timemId, String ticketsId, long ticketsmId,long ticketIdMemberKey) {
try {
TaobaoClient client = taobaoTicketUtils.initTaobaoClient();
AlibabaDamaiMevOpenBatchpushticketRequest req = new AlibabaDamaiMevOpenBatchpushticketRequest();
......@@ -260,7 +275,14 @@ public class KylinDamaiServiceImpl extends ServiceImpl<KylinRoadShowsMapper, Kyl
obj3.setCertificateType(item.getEnterType().longValue());//证件内容 入场人证件type
obj3.setPayTime(DateUtils.parseDate(item.getTimePay()));//支付时间
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);//票类型 快递 电子
......
......@@ -7,6 +7,7 @@ import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.StringUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.TaobaoTicketUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
......@@ -15,6 +16,7 @@ import com.liquidnet.service.kylin.dto.param.RefundCallbackParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
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.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
......@@ -91,6 +93,9 @@ public class KylinRefundsStatusServiceImpl {
@Autowired
private MongoVoUtils mongoVoUtils;
@Autowired
private TaobaoTicketUtils taobaoTicketUtils;
public Boolean orderTicketRefunding(
RefundApplyParam refundApplyParam, KylinOrderTickets orderInfo, String orderTicketsId,
BigDecimal RefundPriceExpress,
......@@ -457,6 +462,13 @@ public class KylinRefundsStatusServiceImpl {
dataUtils.delOrderRefundVoByOrderId(strings1);
continue;
}else{
//TODO 秀龙 大麦退款
for (KylinOrderRefunds item : refundList) {
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
taobaoTicketUtils.refundDamaiOrder(orderData,vo);
}
}
} catch (Exception e) {
log.info("退款请求pay失败e" + e.getMessage());
......
package com.liquidnet.client.admin.zhengzai.kylin.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";
......@@ -55,4 +65,52 @@ public class TaobaoTicketUtils {
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"));
}
withdrawDamaiOrder(ticketTimesKey, orderTicketEntitiesKey);
}
return true;
}
return true;
}catch (Exception e){
log.info("REFUND DAMAI ERROR = {}",e);
return false;
}
}
}
......@@ -73,6 +73,13 @@ public class KylinOrderTicketsController {
return ResponseDto.success(orderTicketsService.orderList());
}
@GetMapping("list/unLimit")
@ApiOperation("订单列表Mongo")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<List<KylinOrderListVo>>> orderListMongo(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size) {
return ResponseDto.success(orderTicketsService.orderListMongo(page, size));
}
@GetMapping("details")
@ApiOperation("订单详情")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
......@@ -11,6 +11,7 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.KylinFieldsVo;
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.KylinOrderRefundEntitiesVo;
......@@ -30,6 +31,9 @@ import org.apache.commons.lang.StringUtils;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
......@@ -113,6 +117,80 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
}
@Override
public PageInfo<List<KylinOrderListVo>> orderListMongo(Integer page, Integer size) {
PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid();
// if (size == null || size == 0) {
size = 40;
// }
if (page == null || page == 1 || page == 0) {
page = 1;
}
try {
List<KylinOrderListVo> voList;
long count;
if (page == 1) {
voList = dataUtils.getOrderList(uid);
count = voList.size();
} else {
HashMap<String, Object> info = CollectionUtil.mapStringObject();
// 排序 分页
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
//条件
Query query = Query.query(Criteria.where("userId").is(uid));
// 查询总数
count = mongoTemplate.count(query, KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
query.with(pageable);
voList = mongoTemplate.find(query, KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
info.put("total", count);
info.put("data", voList);
}
for (int i = 0; i < voList.size(); i++) {
KylinOrderListVo item = voList.get(i);
item.setStatus(item.getStatus());
Integer orderExpressStatus = dataUtils.getOrderExpressInfo(item.getOrderTicketsId());
item.setExpressStatus(orderExpressStatus);
if (item.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
try {
item.setRestTime(DateUtil.intervalSeconds(
DateUtil.parse(item.getOverdueAt(), "yyyy-MM-dd HH:mm:ss"),
DateUtil.parse(DateUtil.getNowTime(), "yyyy-MM-dd HH:mm:ss")
));
if (item.getRestTime() <= 0L) {
item.setRestTime(0L);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
item.setRestTime(0L);
}
if (i >= 40) {
break;
}
}
KylinOrderTicketVo orderTicketVo = dataUtils.getTransferOrder(uid);
if (orderTicketVo != null) {
voList.add(0, KylinOrderListVo.getNew().copy(orderTicketVo));
}
mPageInfo = new PageInfo(voList);
mPageInfo.setTotal(count);
log.info(UserPathDto.setData("订单列表", "", voList));
return mPageInfo;
} catch (Exception e) {
e.printStackTrace();
return mPageInfo;
}
}
@Override
public OrderDetailsVo orderDetails(String orderId) {
try {
......@@ -365,7 +443,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
for (int i = 0; i < kylinOrderTicketEntitiesVoList.size(); i++) {
KylinOrderTicketEntitiesVo data = kylinOrderTicketEntitiesVoList.get(i);
String orderTicketEntitiesId = data.getOrderTicketEntitiesId();
if(data.getEnterName().trim().length()>0){
if (data.getEnterName().trim().length() > 0) {
return ResponseDto.failure("订单已实名不可更改");
}
AdamEntersVo adamEntersData = adamEnters.get(i);
......
......@@ -175,13 +175,17 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
performancesInfo = checkAppStatusInfo(performancesInfo);
performancesInfo.setMessage(KylinPerformanceStatusEnum.getName(performancesInfo.getAppStatus()));
} catch (Exception e) {
log.debug(" ERROR PERFORMANCE DETAILS PERFORMANCE_ID : " + performancesId);
log.error(" ERROR PERFORMANCE DETAILS PERFORMANCE_ID : " + performancesId);
}
// 处理距离
if (longitudeFrom != CommonConst.DFT_DOUBLE_VAL) {
try {
String diffDistance = DistanceUtil.getDistance(longitudeFrom, latitudeFrom, Double.parseDouble(performancesInfo.getLongitude()), Double.parseDouble(performancesInfo.getLatitude()));
performancesInfo.setDiffDistance(diffDistance);
} catch (Exception e) {
log.error("演出详情 经纬度处理距离异常 e:{}", e);
}
}
log.info(UserPathDto.setData("演出详情", "performancesId=" + performancesId + " latitudeFrom=" + latitudeFrom + " longitudeFrom=" + longitudeFrom, performancesInfo));
......
......@@ -2,6 +2,8 @@ package com.liquidnet.service.order.utils;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse;
import org.springframework.stereotype.Service;
@Service
......@@ -28,4 +30,21 @@ public class TaobaoTicketUtils {
public Long getSystemId(){
return SYSTEM_ID;
}
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;
}
}
}
package com.liquidnet.service.sweet.config;
import com.liquidnet.service.sweet.handler.SubscribeHandler;
import com.liquidnet.service.sweet.handler.UnsubscribeHandler;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker;
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
......@@ -48,9 +53,18 @@ public class WechatMpConfigure {
private WxMpService wxMpZhengzaiService;
private WxMpService wxMpModernskyService;
private WxMpMessageRouter wxMpZhengzaiMessageRouter;
private WxMpMessageRouter wxMpModernskyMessageRouter;
private WxMessageInMemoryDuplicateChecker wxMessageInMemoryDuplicateChecker;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private SubscribeHandler subscribeHandler;
@Autowired
private UnsubscribeHandler unsubscribeHandler;
@PostConstruct
public void init() {
wxMpZhengzaiService = new WxMpServiceImpl() {
......@@ -77,6 +91,11 @@ public class WechatMpConfigure {
this.setWxMpConfigStorage(wxMpDefaultConfig);
}
};
wxMpZhengzaiMessageRouter = new WxMpMessageRouter(wxMpZhengzaiService);
wxMpModernskyMessageRouter = new WxMpMessageRouter(wxMpModernskyService);
wxMessageInMemoryDuplicateChecker = new WxMessageInMemoryDuplicateChecker();
}
public WxMpService getWxMpService(Integer pnum) {
......@@ -88,4 +107,34 @@ public class WechatMpConfigure {
}
return null;
}
public WxMpMessageRouter getWxMpMessageRouter(Integer pnum) {
switch (pnum) {
case 1:
return wxMpZhengzaiMessageRouter;
case 2:
return wxMpModernskyMessageRouter;
}
return null;
}
public WxMpMessageRouter messageRouter(Integer type) {
WxMpMessageRouter router = getWxMpMessageRouter(type);
// 消息去重
router.setMessageDuplicateChecker(wxMessageInMemoryDuplicateChecker);
// 关注事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.SUBSCRIBE)
.handler(subscribeHandler)
.end();
// 取消关注事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.UNSUBSCRIBE)
.handler(unsubscribeHandler)
.end();
return router;
}
}
......@@ -50,6 +50,7 @@ public class SweetWechatActionCallbackController {
@ApiOperation("用户动作微信回调")
public String record(
@RequestBody String requestBody,
// @RequestParam() String requestBody,
@RequestParam("type") Integer type,
@RequestParam("signature") String signature,
@RequestParam("timestamp") String timestamp,
......
package com.liquidnet.service.sweet.service.impl;
import com.liquidnet.service.sweet.config.WechatMpConfigure;
import com.liquidnet.service.sweet.handler.SubscribeHandler;
import com.liquidnet.service.sweet.handler.UnsubscribeHandler;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker;
import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
......@@ -25,34 +20,9 @@ import org.springframework.stereotype.Service;
@Slf4j
public class SweetWechatCallbackServiceImpl {
@Autowired
private SubscribeHandler subscribeHandler;
@Autowired
private UnsubscribeHandler unsubscribeHandler;
@Autowired
WechatMpConfigure wechatMpConfigure;
public WxMpMessageRouter messageRouter(WxMpService wxMpService) {
WxMpMessageRouter router = new WxMpMessageRouter(wxMpService);
// 消息去重
router.setMessageDuplicateChecker(new WxMessageInMemoryDuplicateChecker());
// 关注事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.SUBSCRIBE)
.handler(subscribeHandler)
.end();
// 取消关注事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.UNSUBSCRIBE)
.handler(unsubscribeHandler)
.end();
return router;
}
public String record(String requestBody, Integer type, String timestamp, String nonce, String encType, String msgSignature) {
if (null == type || type <= 0) {
type = 1;
......@@ -63,7 +33,7 @@ public class SweetWechatCallbackServiceImpl {
// 明文传输的消息
WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(requestBody);
log.info("\n消息内容为:\n[{}] ", inMessage.toString());
WxMpXmlOutMessage outMessage = messageRouter(wxMpService).route(inMessage);
WxMpXmlOutMessage outMessage = wechatMpConfigure.messageRouter(type).route(inMessage);
if (outMessage == null) {
// 假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试
return "";
......@@ -74,7 +44,7 @@ public class SweetWechatCallbackServiceImpl {
WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml(requestBody, wxMpService.getWxMpConfigStorage(),
timestamp, nonce, msgSignature);
log.info("\n消息解密后内容为:\n[{}] ", inMessage.toString());
WxMpXmlOutMessage outMessage = messageRouter(wxMpService).route(inMessage);
WxMpXmlOutMessage outMessage = wechatMpConfigure.messageRouter(type).route(inMessage);
if (outMessage == null) {
return "";
}
......
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