Commit db5948cf by ping.wu

Merge branches 'feature/20200703_停车场缴费记录_wuping' and 'master' of…

Merge branches 'feature/20200703_停车场缴费记录_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group
parents a2256347 aa92e476
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.parking.QueryParkingOrderVo;
import cn.freemud.service.ParkingOrderService;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ParkingOrderController
* @Package cn.freemud.controller
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 15:14
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class ParkingOrderController {
@Autowired
private ParkingOrderService parkingOrderService;
/**
* 查询停车订单列表
*/
@ApiAnnotation(logMessage = "queryParkingOrders")
@PostMapping("/queryParkingOrders")
public BaseResponse queryParkingOrders(@Validated @LogParams @RequestBody QueryParkingOrderVo requestVo) {
return parkingOrderService.queryOrders(requestVo);
}
/**
* 获取停车订单详情
*/
@ApiAnnotation(logMessage = "queryParkingOrderById")
@PostMapping("/queryParkingOrderById")
public BaseResponse queryParkingOrderById(@Validated @LogParams @RequestBody QueryParkingOrderVo requestVo) {
return parkingOrderService.queryOrderById(requestVo);
}
}
package cn.freemud.entities.vo.parking;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ParkingOrderResponseVo
* @Package cn.freemud.entities.vo.parking
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 16:00
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class ParkingOrderResponseVo {
/**
* 订单编号
*/
private String orderCode;
private String parkingAreaId;
private String parkingAreaName;
private String carNumber;
private String parkingTime;
private String inTime;
private String outTime;
/**
* 原金额
*/
private Integer originalAmount;
private Integer actualPayAmount;
private Integer discountAmount;
/**
* 创建时间 时间戳
*/
private String gmtCreate;
/**
* 更新时间 时间戳
*/
private String gmtPay;
private String payChannel;
/**
* 支付方式:订单支付渠道类型 1:微信 2:储值卡 3:支付宝
*/
private String payChannelType;
}
package cn.freemud.entities.vo.parking;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryParkingOrderVo
* @Package cn.freemud.entities.vo.parking
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 15:26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class QueryParkingOrderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
/**
* 商户ID
*/
private String partnerId;
/**
* 订单ID
*/
private String orderCode;
/**
* 每页显示几条数据
*/
private Integer pageSize;
/**
* 第几页
*/
private Integer pageNumber;
}
package cn.freemud.entities.vo.parking;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryParkingOrdersResponseVo
* @Package cn.freemud.entities.vo.parking
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 16:26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class QueryParkingOrdersResponseVo {
private Integer count;
private List<ParkingOrderResponseVo> dates;
}
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.parking.QueryParkingOrderVo;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ParkingOrderService
* @Package cn.freemud.service
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 15:33
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public interface ParkingOrderService {
BaseResponse queryOrders(QueryParkingOrderVo requestVo);
BaseResponse queryOrderById(QueryParkingOrderVo requestVo);
}
package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.vo.parking.ParkingOrderResponseVo;
import cn.freemud.entities.vo.parking.QueryParkingOrderVo;
import cn.freemud.entities.vo.parking.QueryParkingOrdersResponseVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.ParkingOrderService;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryOrderResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ParkingOrderServiceImpl
* @Package cn.freemud.service.impl
* @Description:
* @author: ping1.wu
* @date: 2020/7/3 15:37
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
@Slf4j
public class ParkingOrderServiceImpl implements ParkingOrderService {
@Autowired
private OrderDownLoadSdkService orderDownLoadSdkService;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Override
public BaseResponse queryOrders(QueryParkingOrderVo requestVo) {
QueryParkingOrdersResponseVo responseVo = new QueryParkingOrdersResponseVo();
String trackingNo = LogTreadLocal.getTrackingNo();
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(requestVo.getSessionId());
if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
OrderConditionsReq request = new OrderConditionsReq();
request.setUserId(userInfo.getMemberId());
request.setPartnerId(userInfo.getPartnerId());
request.setPageSize(requestVo.getPageSize());
request.setPageNum(requestVo.getPageNumber());
Date date = new Date();
request.setStartTimestamp(DateUtil.addMonths(date, -3).getTime()/1000);
request.setEndTimestamp(date.getTime()/1000);
request.setOrderClients(Arrays.asList(OrderClientType.PARKING.getIndex()));
request.setPayStatuses(Arrays.asList(2,3,4));
BaseDownLoadResponse<List<OrderInfoReqs>> listBaseDownLoadResponse = orderDownLoadSdkService.queryOrderByConditions(request, trackingNo);
if(listBaseDownLoadResponse == null && !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(listBaseDownLoadResponse.getCode())){
return ResponseUtil.success();
}
List<ParkingOrderResponseVo> dates = new ArrayList<>();
for (OrderInfoReqs orderInfo : listBaseDownLoadResponse.getResult()){
dates.add(convent2QueryOrdersDto(orderInfo));
}
responseVo.setDates(dates);
responseVo.setCount(listBaseDownLoadResponse.getTotalNum());
return ResponseUtil.success(responseVo);
}
@Override
public BaseResponse queryOrderById(QueryParkingOrderVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo();
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(requestVo.getSessionId());
if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
QueryByCodeResponse queryByCodeResponse = orderDownLoadSdkService.queryOrderByCode(userInfo.getPartnerId(), requestVo.getOrderCode(), trackingNo);
if (null == queryByCodeResponse || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(queryByCodeResponse.getCode())) {
return ResponseUtil.success();
}
ParkingOrderResponseVo responseVo = convent2QueryOrdersDto(queryByCodeResponse.getResult());
return ResponseUtil.success(responseVo);
}
private ParkingOrderResponseVo convent2QueryOrdersDto(OrderInfoReqs orderInfoReqs){
if(orderInfoReqs == null || orderInfoReqs.getOrderCode() == null){
return null;
}
ParkingOrderResponseVo respVo = new ParkingOrderResponseVo();
respVo.setOrderCode(orderInfoReqs.getOrderCode());
if(StringUtils.isNotBlank(orderInfoReqs.getExtInfo()) && orderInfoReqs.getPayTime() != null){
OrderExtInfoDto extInfoDto = JSONObject.parseObject(orderInfoReqs.getExtInfo(), OrderExtInfoDto.class);
respVo.setParkingAreaId(extInfoDto.getParkingAreaId());
respVo.setParkingAreaName(extInfoDto.getParkingAreaName());
respVo.setCarNumber(extInfoDto.getCarNumber());
Long diffMinute = (Long.parseLong(orderInfoReqs.getPayTime()) - Long.parseLong(extInfoDto.getInTime()))/1000/60;
respVo.setParkingTime(diffMinute.toString());
respVo.setInTime(DateUtil.convert2Str(new Date(Long.parseLong(extInfoDto.getInTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
respVo.setOutTime(DateUtil.convert2Str(new Date(Long.parseLong(orderInfoReqs.getPayTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
Long discountAmount = 0L;
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderSettlementDetailList())) {
for (OrderSettlementResp orderSettlementResp : orderInfoReqs.getOrderSettlementDetailList()) {
discountAmount += orderSettlementResp.getShopDiscountAmount();
}
}
respVo.setDiscountAmount(discountAmount.intValue());
respVo.setActualPayAmount(orderInfoReqs.getActualPayAmount().intValue());
respVo.setGmtCreate(DateUtil.convert2Str(new Date(Long.parseLong(orderInfoReqs.getCreateTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
respVo.setGmtPay(DateUtil.convert2Str(orderInfoReqs.getPayTime() == null ? null : new Date(Long.parseLong(orderInfoReqs.getPayTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
respVo.setOriginalAmount(orderInfoReqs.getOriginalAmount().intValue());
respVo.setPayChannel(orderInfoReqs.getPayChannel());
respVo.setPayChannelType(orderInfoReqs.getPayChannelType());
return respVo;
}
}
...@@ -125,6 +125,8 @@ public class OrderExtInfoDto { ...@@ -125,6 +125,8 @@ public class OrderExtInfoDto {
* 停车场ID * 停车场ID
*/ */
private String parkingAreaId; private String parkingAreaId;
private String parkingAreaName;
/** /**
* 车牌号 * 车牌号
*/ */
......
...@@ -268,4 +268,7 @@ public class OrderInfoReqs { ...@@ -268,4 +268,7 @@ public class OrderInfoReqs {
*/ */
private String downstreamThirdOrderCode; private String downstreamThirdOrderCode;
//支付渠道类型
private String payChannelType;
} }
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