@@ -31,7 +31,7 @@ public class AssObuSupply extends AbstractStringPropertyUUIDEntity { | |||
private Integer payee;// 收款方 1-黔通 2-渠道 | |||
@NotNull | |||
@Column(name = "FEE") | |||
private Integer fee;// 支付金额,无需支付时为0 | |||
private Long fee;// 支付金额,无需支付时为0 | |||
/**新设备信息*/ | |||
@Column(name = "OBU_ID") |
@@ -181,7 +181,10 @@ public enum OperateType { | |||
//增补OBU | |||
OBU_SUPPLY_APPLY("增补OBU申请"), | |||
OBU_SUPPLY_ORDER_PAY("增补OBU订单支付"), | |||
OBU_SUPPLY_ORDER_PAY_APPLY("增补OBU订单支付申请"), | |||
OBU_SUPPLY_ORDER_PAY_QUERY("增补OBU订单支付查询结果"), | |||
OBU_SUPPLY_REVIEW("增补OBU订单审核"), | |||
OBU_SUPPLY_SEND("增补OBU发货"), | |||
; | |||
private final String value; | |||
@@ -30,7 +30,7 @@ public class AssOrderSendRequest extends AbstractSignTypeRequest<AssOrderSendRes | |||
/*** 快递公司*/ | |||
private String courierCompany;//快递公司 | |||
@FixedLength(length = 20) | |||
@NotBlank | |||
// @NotBlank | |||
private String cardId;//卡编号 | |||
@FixedLength(length = 16) | |||
@NotBlank |
@@ -2,9 +2,13 @@ package cn.com.taiji.core.repo.jpa.ass; | |||
import cn.com.taiji.common.repo.jpa.AbstractJpaRepo; | |||
import cn.com.taiji.core.entity.ass.AssObuSupply; | |||
import org.springframework.data.jpa.repository.Query; | |||
import java.util.List; | |||
public interface AssObuSupplyRepo extends AbstractJpaRepo<AssObuSupply, String> { | |||
@Query(" from AssObuSupply where orderNo = ?1") | |||
AssObuSupply findByOrderNo(String orderNo); | |||
} |
@@ -52,7 +52,7 @@ public interface AssOrderinfoRepo extends AbstractJpaRepo<AssOrderinfo, String>{ | |||
@Query(" from AssOrderinfo where customerId = ?1 and vehicleId = ?2 and obuId = ?3 and orderType = ?4 order by updateTime desc") | |||
List<AssOrderinfo> findByCusIdAndObuId(String customerId, String vehicleId, String obuId, AssOrderType orderType); | |||
@Query(" from AssOrderinfo where vehicleId = ?1 and orderStatus = ?2 and orderType in ?3") | |||
List<AssOrderinfo> listByVehicleIdAndStatusAndTypeList(String vehicleId, AssOrderStatus orderStatus ,AssOrderType[] typeList); | |||
@Query(" from AssOrderinfo where vehicleId = ?1 and orderStatus = ?2") | |||
List<AssOrderinfo> listByVehicleIdAndStatus(String vehicleId, AssOrderStatus orderStatus); | |||
} |
@@ -3,10 +3,7 @@ package cn.com.taiji.iaw.api.ass; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.web.ApiResponse; | |||
import cn.com.taiji.iaw.api.MyValidController; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.*; | |||
import cn.com.taiji.iaw.manager.ass.AssObuSupplyManager; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
@@ -32,14 +29,21 @@ public class AssObuSupplyController extends MyValidController { | |||
return ApiResponse.of(manager.apply(dto)); | |||
} | |||
@ApiOperation("增补OBU订单支付申请") | |||
@PostMapping("/orderPayApply") | |||
public ApiResponse<AssObuSupplyOrderPayApplyResponseDTO> orderPayApply(@Valid @RequestBody AssObuSupplyOrderPayApplyRequestDTO dto) throws ManagerException { | |||
return ApiResponse.of(manager.orderPayApply(dto)); | |||
} | |||
@ApiOperation("增补OBU订单支付") | |||
@PostMapping("/orderPay") | |||
public ApiResponse<AssObuSupplyOrderPayResponseDTO> orderPay(@Valid @RequestBody AssObuSupplyOrderPayRequestDTO dto) throws ManagerException { | |||
return ApiResponse.of(manager.orderPay(dto)); | |||
@ApiOperation("增补OBU订单支付查询") | |||
@PostMapping("/orderPayQuery") | |||
public ApiResponse<AssObuSupplyOrderPayQueryResponseDTO> orderPayQuery(@Valid @RequestBody AssObuSupplyOrderPayQueryRequestDTO dto) throws ManagerException { | |||
return ApiResponse.of(manager.orderPayQuery(dto)); | |||
} | |||
} |
@@ -17,7 +17,15 @@ public class AssObuSupplyApplyResponseDTO extends BaseModel { | |||
@ApiModelProperty(value = "订单号") | |||
private String orderNo; | |||
public AssObuSupplyApplyResponseDTO(String orderNo){ | |||
@ApiModelProperty(value = "支付订单编号") | |||
private String orderPayId; | |||
@ApiModelProperty(value = "支付金额") | |||
private Long fee; | |||
public AssObuSupplyApplyResponseDTO(String orderNo, String orderPayId, long fee){ | |||
this.orderNo = orderNo; | |||
this.orderPayId = orderPayId; | |||
this.fee = fee; | |||
} | |||
} |
@@ -0,0 +1,47 @@ | |||
package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.common.valid.ViolationValidator; | |||
import cn.com.taiji.core.dto.AbstractBizRequestDTO; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import org.apache.commons.lang.StringUtils; | |||
import javax.validation.constraints.NotBlank; | |||
@ApiModel(description = "增补OBU订单支付申请请求") | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayApplyRequestDTO extends AbstractBizRequestDTO { | |||
@ApiModelProperty(value = "订单号") | |||
@NotBlank(message = "订单号不能为空") | |||
private String orderNo; | |||
@NotBlank | |||
@ApiModelProperty(value = "支付订单编号") | |||
private String orderPayId; | |||
@ApiModelProperty(value = "微信openId") | |||
private String subOpenId;// 原wxOpenId | |||
@ApiModelProperty("终端ip 示例值:123.12.12.123") | |||
private String spbillCreateIp; | |||
@ApiModelProperty("h5页面类型") | |||
private String h5Type; | |||
@Override | |||
protected void validate(ViolationValidator validator) { | |||
if (SourceType.H5.equals(getOrderSource())){ | |||
validator.validField("spbillCreateIp",StringUtils.isEmpty(spbillCreateIp),"终端ip不能为空"); | |||
validator.validField("h5Type",StringUtils.isEmpty(h5Type),"h5页面类型不能为空"); | |||
} | |||
} | |||
} |
@@ -0,0 +1,53 @@ | |||
package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@ApiModel(description = "增补OBU订单支付响应") | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayApplyResponseDTO extends BaseModel { | |||
@ApiModelProperty(value = "外部订单号") | |||
private String externalOrderNo;// 外部订单号 | |||
//JSAPI支付参数 | |||
@ApiModelProperty(value = "WX-JSAPI签名方式") | |||
private String signType;// 签名方式 | |||
@ApiModelProperty(value = "WX-JSAPI签名") | |||
private String paySign; | |||
//app | |||
@ApiModelProperty(value = "WX-app商户号") | |||
private String partnerId;// 商户号 | |||
@ApiModelProperty(value = "WX-app预支付交易会话ID") | |||
private String prepayId;// 预支付交易会话ID | |||
@ApiModelProperty(value = "WX-app签名") | |||
private String sign;// 签名 | |||
//JSAPI和app共有支付参数 | |||
@ApiModelProperty(value = "WX-app,JSAPI支付渠道应用ID") | |||
private String appId;// 支付渠道应用ID | |||
@ApiModelProperty(value = "WX-app,JSAPI时间戳") | |||
private String timeStamp;// 时间戳 | |||
@ApiModelProperty(value = "WX-app,JSAPI随机字符串") | |||
private String nonceStr;// 随机字符串 | |||
@ApiModelProperty(value = "WX-app,JSAPI订单详情扩展字符串") | |||
private String wxPackage;// 订单详情扩展字符串 | |||
//h5参数 | |||
@ApiModelProperty(value = "WX-H5支付参数") | |||
private String h5Url;// H5参数 | |||
// Native参数 | |||
@ApiModelProperty(value = "WX-Native支付参数") | |||
private String codeUrl;// Native参数 | |||
@ApiModelProperty(value = "ALI-响应表单") | |||
private String form;// 支付宝响应表单 | |||
@ApiModelProperty(value = "ALI-二维码码串") | |||
private String tranPackage;// 支付宝预下单请求生成的二维码码串 | |||
} |
@@ -1,6 +1,8 @@ | |||
package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.common.valid.ViolationValidator; | |||
import cn.com.taiji.core.dto.AbstractBizRequestDTO; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
@@ -14,10 +16,19 @@ import javax.validation.constraints.NotBlank; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayRequestDTO extends AbstractBizRequestDTO { | |||
public class AssObuSupplyOrderPayQueryRequestDTO extends AbstractBizRequestDTO { | |||
@ApiModelProperty(value = "订单号") | |||
@NotBlank(message = "订单号不能为空") | |||
private String orderNo; | |||
@ApiModelProperty(value = "微信用户标识") | |||
private String wxOpenId; | |||
protected void validate(ViolationValidator validator) { | |||
if (SourceType.WECHAT.equals(getOrderSource())){ | |||
validator.validFieldNotBlank("wxOpenId", wxOpenId); | |||
} | |||
} | |||
} |
@@ -12,6 +12,13 @@ import lombok.experimental.Accessors; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayResponseDTO extends BaseModel { | |||
public class AssObuSupplyOrderPayQueryResponseDTO extends BaseModel { | |||
@ApiModelProperty(value = "支付申请状态,1-支付成功,0-未支付") | |||
private Integer payApplyStatus; | |||
public AssObuSupplyOrderPayQueryResponseDTO(Integer payApplyStatus) { | |||
this.payApplyStatus = payApplyStatus; | |||
} | |||
} |
@@ -1,10 +1,7 @@ | |||
package cn.com.taiji.iaw.manager.ass; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.*; | |||
/** | |||
* @Auther: humh | |||
@@ -17,5 +14,7 @@ public interface AssObuSupplyManager { | |||
AssObuSupplyApplyResponseDTO apply(AssObuSupplyApplyRequestDTO dto) throws ManagerException; | |||
AssObuSupplyOrderPayResponseDTO orderPay(AssObuSupplyOrderPayRequestDTO dto) throws ManagerException; | |||
AssObuSupplyOrderPayApplyResponseDTO orderPayApply(AssObuSupplyOrderPayApplyRequestDTO dto) throws ManagerException; | |||
AssObuSupplyOrderPayQueryResponseDTO orderPayQuery(AssObuSupplyOrderPayQueryRequestDTO dto) throws ManagerException; | |||
} |
@@ -13,19 +13,24 @@ import cn.com.taiji.core.entity.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderType; | |||
import cn.com.taiji.core.entity.dict.basic.CardType; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.dict.issue.FeeCategory; | |||
import cn.com.taiji.core.entity.dict.issue.OrderPayType; | |||
import cn.com.taiji.core.entity.dict.issue.OrderType; | |||
import cn.com.taiji.core.entity.dict.issue.ProductAfterType; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.entity.issue.IssueOrderPay; | |||
import cn.com.taiji.core.entity.issue.IssueProduct; | |||
import cn.com.taiji.core.entity.issue.IssueProductPay; | |||
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderPayApplyResponse; | |||
import cn.com.taiji.core.repo.jpa.ass.AssObuSupplyRepo; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkCardInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderPayRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueProductPayRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.*; | |||
import cn.com.taiji.iaw.manager.AbstractIawManager; | |||
import cn.com.taiji.iaw.manager.comm.VehicleInfoManagerImpl; | |||
import cn.com.taiji.iaw.model.MyFinals; | |||
@@ -60,6 +65,12 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
private QtkCustomerInfoRepo customerInfoRepo; | |||
@Autowired | |||
private QtkCardInfoRepo cardInfoRepo; | |||
@Autowired | |||
private IssueProductPayRepo productPayRepo; | |||
@Autowired | |||
private IssueProductRepo productRepo; | |||
@Autowired | |||
private IssueOrderPayRepo issueOrderPayRepo; | |||
@Override | |||
@Transactional(rollbackFor = Exception.class) | |||
@@ -76,23 +87,31 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
} | |||
VehicleInfoQueryDeviceModel model = validVehicleInfo(vehicleInfo, dto); | |||
String orderNo = createOrderNo(MyFinals.QTZL_AGENCY_ID); | |||
AssObuSupply obuSupply = copyProperties(dto, new AssObuSupply()); | |||
obuSupply.setOrderNo(orderNo); | |||
obuSupply.setPayee(1);//todo 先默认1-黔通 从支付配置中获取 | |||
obuSupply.setFee(2000);//todo 默认20 从支付配置中获取 | |||
obuSupplyRepo.save(obuSupply); | |||
//生成售后订单 | |||
createAssOrderinfo(vehicleInfo, orderNo, dto, model); | |||
//生成支付单 todo 还没有支付配置 | |||
//生成支付单 | |||
QtkCardInfo cardInfo = cardInfoRepo.findByCardId(model.getCardId()); | |||
payTools.createPayOrder(orderNo, OrderType.AFTERSALE,2000L, "todo",OrderPayType.REPAIROBU, cardInfo.getAgencyId()); | |||
IssueProductPay productPay = productPayRepo.findByFeeCategoryAndAndFeeTypeAndReleaseId(FeeCategory.AFTER, ProductAfterType.REPAIROBU.name(), cardInfo.getPackageId()); | |||
if (productPay == null){ | |||
throw new ManagerException("未获取到产品费用支付方式"); | |||
} | |||
IssueProduct product = productRepo.findByReleaseId(productPay.getReleaseId()); | |||
IssueOrderPay payOrder = payTools.createPayOrder(orderNo, OrderType.AFTERSALE, product.getRepairObuFee(), productPay.getPayConfigId(), OrderPayType.REPAIROBU, cardInfo.getAgencyId()); | |||
//创建增补OBU信息 | |||
AssObuSupply obuSupply = copyProperties(dto, new AssObuSupply()); | |||
obuSupply.setOrderNo(orderNo); | |||
obuSupply.setPayee(1);//默认 1-黔通 | |||
obuSupply.setFee(payOrder.getFee()); | |||
obuSupplyRepo.save(obuSupply); | |||
//日志 | |||
persistOperateLog(OperateType.OBU_SUPPLY_APPLY, obuSupply.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU申请"); | |||
return new AssObuSupplyApplyResponseDTO(orderNo); | |||
return new AssObuSupplyApplyResponseDTO(orderNo, payOrder.getPayOrderNo(), payOrder.getFee()); | |||
} | |||
@Override | |||
public AssObuSupplyOrderPayResponseDTO orderPay(AssObuSupplyOrderPayRequestDTO dto) throws ManagerException { | |||
@Transactional(rollbackFor = Exception.class) | |||
public AssObuSupplyOrderPayApplyResponseDTO orderPayApply(AssObuSupplyOrderPayApplyRequestDTO dto) throws ManagerException { | |||
AssOrderinfo orderinfo = orderinfoRepo.findByOrderNo(dto.getOrderNo()); | |||
if (orderinfo == null){ | |||
throw new ManagerException("为查询到该订单"); | |||
@@ -101,8 +120,26 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
if (!payTools.queryPay(dto.getOrderNo(), OrderType.AFTERSALE)){ | |||
throw new ManagerException("该订单已支付"); | |||
} | |||
IssueOrderPay orderPay = issueOrderPayRepo.findByPayOrderNo(dto.getOrderPayId()); | |||
OrderPayApplyResponse orderPayApplyResponse = payTools.payApply(dto.getSpbillCreateIp(), dto.getSubOpenId(), dto.getH5Type(), orderPay); | |||
//日志 | |||
persistOperateLog(OperateType.OBU_SUPPLY_ORDER_PAY_APPLY, orderinfo.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU订单支付申请"); | |||
return copyProperties(orderPayApplyResponse, new AssObuSupplyOrderPayApplyResponseDTO()); | |||
} | |||
//更新订单状态 | |||
@Override | |||
@Transactional(rollbackFor = Exception.class) | |||
public AssObuSupplyOrderPayQueryResponseDTO orderPayQuery(AssObuSupplyOrderPayQueryRequestDTO dto) throws ManagerException { | |||
AssOrderinfo orderinfo = orderinfoRepo.findByOrderNo(dto.getOrderNo()); | |||
if (orderinfo == null){ | |||
throw new ManagerException("为查询到该订单"); | |||
} | |||
//支付 | |||
//支付失败 | |||
if (payTools.queryPay(dto.getOrderNo(), OrderType.AFTERSALE)){ | |||
return new AssObuSupplyOrderPayQueryResponseDTO(0); | |||
} | |||
//支付成功 更新订单状态 | |||
LocalDateTime now = LocalDateTime.now(); | |||
if (orderinfo.getArtificialStatus() == 1){ | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_AUDIT); | |||
@@ -115,8 +152,8 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
throw new ManagerException("人工审核状态异常,请联系管理员"); | |||
} | |||
//日志 | |||
persistOperateLog(OperateType.OBU_SUPPLY_ORDER_PAY, orderinfo.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU订单支付"); | |||
return new AssObuSupplyOrderPayResponseDTO(); | |||
persistOperateLog(OperateType.OBU_SUPPLY_ORDER_PAY_QUERY, orderinfo.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU订单支付查询结果"); | |||
return new AssObuSupplyOrderPayQueryResponseDTO(1); | |||
} | |||
private void createAssOrderinfo(QtkVehicleInfo vehicleInfo, String orderNo, AssObuSupplyApplyRequestDTO dto, VehicleInfoQueryDeviceModel model) throws ServiceHandleException { | |||
@@ -132,6 +169,7 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
orderinfo.setCardType(CardType.fromCode(model.getCardType())); | |||
orderinfo.setOrderSource(dto.getOrderSource()); | |||
orderinfo.setAgencyId(MyFinals.QTZL_AGENCY_ID); | |||
orderinfo.setChannelId("5201010600401150002");// 黔通智联售后服务 | |||
orderinfo.setOrderStatus(AssOrderStatus.NORMAL); | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_PAY); | |||
orderinfo.setApplyTime(now); | |||
@@ -181,7 +219,7 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
throw new ManagerException("查询到该车辆有正常状态的OBU,无需增补OBU"); | |||
} | |||
List<AssOrderinfo> assOrderinfos = orderinfoRepo.listByVehicleIdAndStatusAndTypeList(vehicleInfo.getVehicleId(), AssOrderStatus.NORMAL, new AssOrderType[]{AssOrderType.OBU_SUPPLY}); | |||
List<AssOrderinfo> assOrderinfos = orderinfoRepo.listByVehicleIdAndStatus(vehicleInfo.getVehicleId(), AssOrderStatus.NORMAL); | |||
if (!CollectionTools.isEmpty(assOrderinfos)){ | |||
throw new ManagerException("查询到该OBU有在途的订单,不能进行增补OBU"); | |||
} |
@@ -1,7 +1,6 @@ | |||
package cn.com.taiji.iaw.manager.comm; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.common.model.dao.Pagination; | |||
import cn.com.taiji.common.pub.BeanTools; | |||
import cn.com.taiji.core.entity.comm.CommonSatisfaction; | |||
@@ -11,9 +10,7 @@ import cn.com.taiji.core.repo.jpa.comm.SatisfactionRepo; | |||
import cn.com.taiji.core.repo.jpa.user.StaffRepo; | |||
import cn.com.taiji.core.repo.request.operation.SatisfactionPageRequest; | |||
import cn.com.taiji.iaw.dto.comm.*; | |||
import cn.com.taiji.iaw.manager.AbstractCommManager; | |||
import cn.com.taiji.iaw.manager.AbstractIawManager; | |||
import cn.com.taiji.iaw.model.MyFinals; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
@@ -66,7 +63,7 @@ public class SatisfactionManagerImpl extends AbstractIawManager implements Satis | |||
@Transactional(rollbackFor = Exception.class) | |||
public SatisfactionAddResponseDTO add(SatisfactionAddRequestDTO dto) throws ManagerException { | |||
CommonSatisfaction satisfaction = new CommonSatisfaction(); | |||
BeanTools.copyProperties(dto, satisfaction,"id"); | |||
BeanTools.copyProperties(dto, satisfaction); | |||
repo.save(satisfaction); | |||
SatisfactionAddResponseDTO addResponseDTO = new SatisfactionAddResponseDTO(); | |||
addResponseDTO.setId(satisfaction.getId()); |
@@ -95,7 +95,6 @@ public class UserEquityLinkManagerImpl extends AbstractIawManager implements Use | |||
@Override | |||
@Transactional(rollbackFor = Exception.class) | |||
public UserEquityLinkIssueResponseDTO equityIssue(UserEquityLinkIssueRequestDTO dto) throws ManagerException { | |||
IssueOrderinfo orderinfo = orderinfoRepo.findByOrderNo(dto.getOrderNo()); | |||
if (orderinfo == null) { | |||
throw new ManagerException("未查询到发行订单"); |
@@ -53,6 +53,7 @@ public class AssOrderinfoController extends MyValidController { | |||
manager.cancel(req); | |||
return ApiResponse.success(); | |||
} | |||
@ApiOperation("售后订单发货") | |||
@PostMapping("/orderSend") | |||
public ApiResponse<?> orderSend(@Valid @RequestBody OrderDeliverGoodsReqDTO req) throws ManagerException { |
@@ -1,7 +1,10 @@ | |||
package cn.com.taiji.managew.dto.issueOrder; | |||
import cn.com.taiji.common.valid.ViolationValidator; | |||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderType; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.FixedLength; | |||
import cn.com.taiji.managew.tools.StringUtils; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
@@ -9,6 +12,7 @@ import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
/** | |||
* FIXME 待加注解 | |||
@@ -22,6 +26,11 @@ public class OrderDeliverGoodsReqDTO extends AbstractStaffBizRequestDTO { | |||
@ApiModelProperty(value = "订单编号") | |||
@NotBlank | |||
private String orderNo; | |||
@ApiModelProperty(value = "订单类型") | |||
@NotNull | |||
private AssOrderType orderType; | |||
@ApiModelProperty(value = "快递编号") | |||
@NotBlank | |||
private String trackingNumber; | |||
@@ -31,7 +40,7 @@ public class OrderDeliverGoodsReqDTO extends AbstractStaffBizRequestDTO { | |||
private String courierCompany; | |||
@ApiModelProperty(value = "卡编号") | |||
@FixedLength(length = 20) | |||
@NotBlank | |||
// @NotBlank | |||
private String cardId; | |||
@ApiModelProperty(value = "签编号") | |||
@FixedLength(length = 16) | |||
@@ -47,12 +56,18 @@ public class OrderDeliverGoodsReqDTO extends AbstractStaffBizRequestDTO { | |||
@NotBlank | |||
private String region;// 收货所在地区(省、市、区、街道) | |||
@ApiModelProperty(value = "收货详细地址") | |||
@NotBlank | |||
private String address;// 收货详细地址 | |||
@ApiModelProperty(value = "邮政编码") | |||
// @NotBlank | |||
private String postCode; | |||
@Override | |||
protected void validate(ViolationValidator validator) { | |||
if (AssOrderType.OBU_SUPPLY != orderType) { | |||
validator.validField("cardId", StringUtils.isEmpty(cardId),orderType.getDesc() + "类型订单卡号不能为空"); | |||
} | |||
} | |||
} |
@@ -70,6 +70,7 @@ public class AssOrderinfoManagerImpl extends AbstractManagewManager implements A | |||
@Override | |||
public void orderSend(OrderDeliverGoodsReqDTO req) throws ManagerException { | |||
req.validate(); | |||
AssOrderSendRequest request = copyProperties(req,new AssOrderSendRequest()); | |||
String openId = findOpenIdByToken(req.getAccessToken()); | |||
request.setOpenId(openId); |
@@ -15,10 +15,10 @@ import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.ass.customerInfoChange.CustomerInfoChangeAuditManager; | |||
import cn.com.taiji.ias.manager.ass.device.DeviceCancelAuditManager; | |||
import cn.com.taiji.ias.manager.ass.deviceResume.DeviceResumeManager; | |||
import cn.com.taiji.ias.manager.ass.obuSupply.ObuSupplyReviewManager; | |||
import cn.com.taiji.ias.manager.ass.releasePlate.ReleasePlateReviewManager; | |||
import cn.com.taiji.ias.manager.ass.vehicleChange.VehicleChangeReviewManagew; | |||
import cn.com.taiji.ias.model.ServiceLogEvent; | |||
import org.springframework.beans.factory.ObjectProvider; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -42,6 +42,8 @@ public class AssOrderAuditManager extends AbstractAssManager<AssOrderAuditReques | |||
private VehicleChangeReviewManagew vehicleChangeReviewManagew; | |||
@Autowired | |||
private DeviceCancelAuditManager deviceCancelAuditManager; | |||
@Autowired | |||
private ObuSupplyReviewManager obuSupplyReviewManager; | |||
@Override | |||
protected String getDataId(AssOrderAuditRequest req) { | |||
return ""; | |||
@@ -95,7 +97,9 @@ public class AssOrderAuditManager extends AbstractAssManager<AssOrderAuditReques | |||
case CANCEL://设备注销 | |||
deviceCancelAuditManager.serviceHandle(request, order); | |||
break; | |||
//TODO | |||
case OBU_SUPPLY://设备注销 | |||
obuSupplyReviewManager.serviceHandle(request, order, staff); | |||
//TODO | |||
default: | |||
throw GlyServiceError.FORMAT_VALIDATE_ERR.toHandleException("订单类型未定义"); | |||
} | |||
@@ -143,6 +147,9 @@ public class AssOrderAuditManager extends AbstractAssManager<AssOrderAuditReques | |||
case CANCEL: | |||
res.setType(OperateType.DEVICE_CANCEL_APPLY_AUDIT); | |||
break; | |||
case OBU_SUPPLY: | |||
res.setType(OperateType.OBU_SUPPLY_REVIEW); | |||
break; | |||
} | |||
res.setId(order.getId()); | |||
return res; |
@@ -4,6 +4,7 @@ package cn.com.taiji.ias.manager.ass; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderType; | |||
import cn.com.taiji.core.entity.dict.invw.InvDeviceStatus; | |||
import cn.com.taiji.core.entity.dict.issue.OrderType; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
@@ -15,8 +16,10 @@ import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderSendResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoPostRepo; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.ass.obuSupply.ObuSupplySendManage; | |||
import cn.com.taiji.ias.manager.ass.vehicleChange.VehicleChangeSendManagew; | |||
import cn.com.taiji.ias.model.ServiceLogEvent; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.io.IOException; | |||
@@ -42,6 +45,8 @@ public class AssOrderSendManager extends AbstractAssManager<AssOrderSendRequest> | |||
private IssueOrderinfoPostRepo issueOrderinfoPostRepo; | |||
@Autowired | |||
private VehicleChangeSendManagew vehicleChangeSendManagew; | |||
@Autowired | |||
private ObuSupplySendManage obuSupplySendManage; | |||
@Override | |||
protected String getDataId(AssOrderSendRequest req) { | |||
@@ -59,6 +64,12 @@ public class AssOrderSendManager extends AbstractAssManager<AssOrderSendRequest> | |||
if (AssOrderStep.WAITING_RECEIVE != assOrderinfo.getOrderStep()) { | |||
throw newBusinessException("当前申请单处于'"+assOrderinfo.getOrderStep().getStep()+"'不是待收货状态"); | |||
} | |||
if (assOrderinfo.getOrderType() != AssOrderType.OBU_SUPPLY){ | |||
if (StringUtils.isEmpty(req.getCardId())){ | |||
throw newBusinessException(assOrderinfo.getOrderType().getDesc()+"类型订单卡号不能为空"); | |||
} | |||
} | |||
// 查询卡 临时代码 | |||
InvwCardDetails cardDetails = invwCardDetailsRepo.findByCardIdAndStatus(req.getCardId(), InvDeviceStatus.NEW); | |||
// InvwCardDetails cardDetails = invwCardDetailsRepo.findByCardId(card); | |||
@@ -91,6 +102,8 @@ public class AssOrderSendManager extends AbstractAssManager<AssOrderSendRequest> | |||
switch (orderinfo.getOrderType()){ | |||
case VEHICLE_UPDATE: | |||
vehicleChangeSendManagew.send(orderinfo, req); | |||
case OBU_SUPPLY: | |||
obuSupplySendManage.send(orderinfo, req); | |||
break; | |||
default: | |||
throw newBusinessException("订单类型未定义"); | |||
@@ -130,6 +143,8 @@ public class AssOrderSendManager extends AbstractAssManager<AssOrderSendRequest> | |||
switch (order.getOrderType()){ | |||
case VEHICLE_UPDATE: | |||
res.setType(OperateType.CHANGE_VEHICLE_SEND); | |||
case OBU_SUPPLY: | |||
res.setType(OperateType.CHANGE_VEHICLE_SEND); | |||
break; | |||
} | |||
res.setId(order.getId()); |
@@ -0,0 +1,50 @@ | |||
package cn.com.taiji.ias.manager.ass.obuSupply; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.ass.AssObuSupply; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.entity.user.Staff; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderAuditRequest; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.ass.AssObuSupplyRepo; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.ias.manager.ass.AssCommonUtil; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.time.LocalDateTime; | |||
@Service | |||
public class ObuSupplyReviewManager extends AssCommonUtil { | |||
@Autowired | |||
private AssOrderinfoRepo orderinfoRepo; | |||
@Autowired | |||
private AssObuSupplyRepo obuSupplyRepo; | |||
public void serviceHandle(AssOrderAuditRequest req, AssOrderinfo orderInfo, Staff staff) throws ServiceHandleException { | |||
//处理业务 | |||
persistInternal(req,orderInfo,staff); | |||
} | |||
protected void persistInternal(AssOrderAuditRequest req, AssOrderinfo orderInfo, Staff staff) throws ServiceHandleException { | |||
LocalDateTime now = LocalDateTime.now(); | |||
if (req.getAuditStatus()){ | |||
AssObuSupply obuSupply = obuSupplyRepo.findByOrderNo(req.getOrderNo()); | |||
if (obuSupply == null){ | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("根据订单号"+req.getOrderNo()+"未查询到增补OBU信息"); | |||
} | |||
if (obuSupply.getNeedPost()){ | |||
orderInfo.setOrderStep(AssOrderStep.WAITING_SEND); | |||
}else { | |||
orderInfo.setOrderStep(AssOrderStep.WAITING_ACTIVE); | |||
} | |||
}else { | |||
orderInfo.setOrderStep(AssOrderStep.AUDIT_FAIL); | |||
orderInfo.setAuditFailureCase(req.getReason()); | |||
} | |||
orderInfo.setAuditTime(now); | |||
orderInfo.setAuditOpenId(staff.getOpenId()); | |||
orderinfoRepo.merge(orderInfo); | |||
} | |||
} |
@@ -0,0 +1,41 @@ | |||
package cn.com.taiji.ias.manager.ass.obuSupply; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.ass.AssObuSupply; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderSendRequest; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.ass.AssObuSupplyRepo; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.time.LocalDateTime; | |||
@Service | |||
public class ObuSupplySendManage { | |||
@Autowired | |||
private AssOrderinfoRepo orderinfoRepo; | |||
@Autowired | |||
private AssObuSupplyRepo obuSupplyRepo; | |||
@Transactional(rollbackFor = Exception.class) | |||
public void send(AssOrderinfo orderinfo, AssOrderSendRequest req) throws ServiceHandleException { | |||
//更新订单状态 | |||
LocalDateTime now = LocalDateTime.now(); | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_RECEIVE); | |||
orderinfo.setObuId(req.getObuId()); | |||
orderinfo.setUpdateTime(now); | |||
orderinfoRepo.merge(orderinfo); | |||
//更新增补OBU信息 | |||
AssObuSupply obuSupply = obuSupplyRepo.findByOrderNo(orderinfo.getOrderNo()); | |||
if (obuSupply == null){ | |||
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("根据订单号"+req.getOrderNo()+"未查询到增补OBU信息"); | |||
} | |||
obuSupply.setObuId(req.getObuId()); | |||
obuSupplyRepo.merge(obuSupply); | |||
} | |||
} |