提交 195f69bd 作者: zhenjie

采购订单相关接口

上级 05cccb77
......@@ -228,6 +228,14 @@ public class CodeUtil {
return sb.toString();
}
public static String uavPOrderCode() {
StringBuffer sb = new StringBuffer();
sb.append("UP");
sb.append(TDateUtil.getCurrentDateByType("yyyyMMddHHmmss"));
sb.append(CodeUtil.getRandomNum(4));
return sb.toString();
}
/**
* 活动编号
*/
......
......@@ -37,8 +37,8 @@ public class UavOrderController extends BaseController {
@ApiOperation(value = "订单详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)})
@GetMapping("detail")
public ResultBody<UavOrderDTO> detail(@RequestParam Integer id) throws Exception {
return uavOrderService.detail(id);
public ResultBody<UavOrderDTO> detail(@RequestParam Integer id, HttpServletRequest request) throws Exception {
return uavOrderService.detail(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "关闭")
......@@ -121,10 +121,12 @@ public class UavOrderController extends BaseController {
@ApiOperation(value = "平台确认订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("confirmOrder")
public ResultBody confirmOrder(@RequestBody UavOrderVO uavOrderVO) {
return uavOrderService.confirmOrder(uavOrderVO);
public ResultBody confirmOrder(@RequestBody UavOrderVO uavOrderVO, HttpServletRequest request) {
return uavOrderService.confirmOrder(uavOrderVO, this.getCurrentAccount(request));
}
// TODO 签署完成(修改订单状态)
// 设置订单抽成比例
// 微信完成回调-修改订单状态
......
package com.mmc.oms.controller.uav;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.uav.UavPurchaseOrderDTO;
import com.mmc.oms.model.qo.uav.UavPOrderQO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavPOConfirmVO;
import com.mmc.oms.service.uav.UavPOService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @author: zj
......@@ -17,4 +27,50 @@ import org.springframework.web.bind.annotation.RestController;
public class UavPOController extends BaseController {
@Autowired
private UavPOService uavPOService;
@ApiOperation(value = "平台确认采购订单(包含签署)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("confirmPOrder")
private ResultBody confirmPOrder(@RequestBody UavPOConfirmVO uavPOConfirmVO, HttpServletRequest request){
return uavPOService.confirmPOrder(uavPOConfirmVO, this.getCurrentAccount(request));
}
@ApiOperation(value = "平台采购订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavPurchaseOrderDTO.class)})
@PostMapping("listPurchaseOrder")
private ResultBody listPurchase(@RequestBody UavPOrderQO uavPOrderQO){
return uavPOService.listPurchase(uavPOrderQO);
}
@ApiOperation(value = "订单详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavPurchaseOrderDTO.class)})
@GetMapping("getPurchaseOrder")
private ResultBody getPurchaseOrder(@RequestParam Integer id, HttpServletRequest request){
return uavPOService.getPurchaseOrder(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "上传付款凭证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("upLoadPay")
public ResultBody upLoadPay(@RequestBody UavOrderPayVO uavOrderPayVO) {
return uavPOService.upLoadPay(uavOrderPayVO);
}
@ApiOperation(value = "审核付款凭证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("checkPay")
public ResultBody checkPay(@RequestBody UavOrderPayVO uavOrderPayVO) {
return uavPOService.checkPay(uavOrderPayVO);
}
@ApiOperation(value = "发货")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("send")
public ResultBody send(@RequestBody UavOrderExpressVO param) {
return uavPOService.send(param);
}
// 评价
// 签署完成改变状态
}
package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavOrderPayDO;
import com.mmc.oms.entity.uav.UavPurchaseOrderDO;
import com.mmc.oms.entity.uav.UavPurchaseOrderPayDO;
import com.mmc.oms.model.qo.uav.UavPOrderQO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/9 10:05
*/
@Mapper
public interface UavPODao {
int addPurchaseOrder(UavPurchaseOrderDO uavPurchaseOrderDO);
UavPurchaseOrderDO getUavPOrder(Integer id);
int countListPurchaseOrder(UavPOrderQO uavPOrderQO);
List<UavPurchaseOrderDO> listPurchaseOrder(UavPOrderQO uavPOrderQO);
void updateUavPOrderStatus(Integer id, Integer nextCode);
List<UavPurchaseOrderPayDO> listUavPOrderPay(Integer uavPurchaseOrderId);
void updateUavPOrderDO(UavPurchaseOrderDO uavPOrder);
void addPurchaseOrderPay(UavPurchaseOrderPayDO uavOrderPayDO);
void updateUavPOrderPay(UavPurchaseOrderPayDO uavOrderPayDO);
UavPurchaseOrderDO getUavPOrderByUavOId(Integer uavOrderId);
}
......@@ -25,6 +25,8 @@ public class UavOrderSkuDO implements Serializable {
private Integer id;
@ApiModelProperty("订单id")
private Integer uavOrderId;
@ApiModelProperty("采购订单id")
private Integer uavPurchaseOrderId;
@ApiModelProperty("商品id")
private Integer mallGoodsId;
@ApiModelProperty("商品名称")
......
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavPurchaseOrderDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/9/11 13:23
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-采购订单")
public class UavPurchaseOrderDO implements Serializable {
private static final long serialVersionUID = -2874411492914226394L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "采购方id")
private Integer backUserAccountId;
@ApiModelProperty(value = "第三方商家用户id")
private Integer thirdUserAccountId;
@ApiModelProperty(value = "被关联订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "订单金额")
private BigDecimal orderAmount;
@ApiModelProperty(value = "订单状态")
private Integer statusCode;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "买家备注")
private String userRemark;
@ApiModelProperty(value = "卖家备注")
private String sellerRemark;
@ApiModelProperty("规格列表")
private List<UavOrderSkuDO> skuDOS;
public UavPurchaseOrderDTO buildUavPurchaseOrderDTO() {
return UavPurchaseOrderDTO.builder().id(this.id).orderNo(this.orderNo).statusCode(this.statusCode).backUserAccountId(this.backUserAccountId)
.thirdUserAccountId(this.thirdUserAccountId).uavOrderId(this.uavOrderId).orderAmount(this.orderAmount).statusCode(this.statusCode)
.createTime(this.createTime).userRemark(this.userRemark).sellerRemark(this.sellerRemark).skuDTOList(CollectionUtils.isNotEmpty(skuDOS) ?
this.skuDOS.stream().map(UavOrderSkuDO::buildUavOrderSkuDTO).collect(Collectors.toList()) : null).build();
}
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderPayDTO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/9/11 16:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-采购订单凭证")
public class UavPurchaseOrderPayDO implements Serializable {
private static final long serialVersionUID = -287998124979696397L;
private Integer id;
private Integer uavPOrderId;
private String payImgList;
private Integer checkStatus;
private String payRemark;
private String refuseReason;
private Date createTime;
private Date checkTime;
public UavPurchaseOrderPayDO(UavOrderPayVO uavOrderPayVO) {
this.id = uavOrderPayVO.getId();
this.payImgList = uavOrderPayVO.getPayImgList();
this.checkStatus = uavOrderPayVO.getCheckStatus();
this.payRemark = uavOrderPayVO.getPayRemark();
this.refuseReason = uavOrderPayVO.getRefuseReason();
}
public UavOrderPayDTO buildUavOrderPayDTO(){
return UavOrderPayDTO.builder().id(this.id).uavOrderId(this.uavPOrderId).payImgList(this.payImgList).checkStatus(this.checkStatus)
.payRemark(this.payRemark).refuseReason(this.refuseReason).createTime(this.createTime).build();
}
}
......@@ -2,12 +2,15 @@ package com.mmc.oms.feign;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.UserAppApiHystrix;
import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.UserAccountQO;
import com.mmc.oms.model.vo.uav.PayUavWalletVO;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......@@ -41,4 +44,7 @@ public interface UserAppApi {
@PostMapping("user-account/feignListAppUserAccount")
List<UserAccountSimpleDTO> feignListAppUserAccount(@ApiParam(value = "账号查询QO", required = true) @RequestBody UserAccountQO userAccountQO, @RequestHeader("token") String token);
@PostMapping("/fdd/contract/listContractInfoByOrderNo")
List<ContractInfoDTO> listContractInfoByOrderNo(@RequestBody List<String> orderNos, @RequestHeader("token") String token);
}
......@@ -3,6 +3,7 @@ package com.mmc.oms.feign.hystrix;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.UserAccountQO;
......@@ -48,4 +49,10 @@ public class UserAppApiHystrix implements UserAppApi {
log.error("熔断:UserAppApiHystrix.feignListAppUserAccount:{}", userAccountQO);
return null;
}
@Override
public List<ContractInfoDTO> listContractInfoByOrderNo(List<String> orderNos, String token) {
log.error("熔断:UserAppApiHystrix.listContractInfoByOrderNo==error==>param:{}", JSONObject.toJSONString(orderNos));
return null;
}
}
package com.mmc.oms.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (ContractInfoDO)实体类
*
* @author makejava
* @since 2023-09-07 10:14:08
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ContractInfoDTO implements Serializable {
private static final long serialVersionUID = -42558889792167148L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "发起合同方用户唯一标识")
private String unionId;
@ApiModelProperty(value = "订单号")
private String orderNo;
@ApiModelProperty(value = "合同编号")
private String contractNo;
@ApiModelProperty(value = "合同标题")
private String contractTitle;
@ApiModelProperty(value = "状态: 0、等待平台签署1、平台签署失败 2、等待(买家/供应商)签署(平台签署成功) 3、(买家/供应商)签署失败 4、(买家/供应商)签署成功、5、归档")
private Integer signStatus;
@ApiModelProperty(value = "签署完成日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date singerTime;
@ApiModelProperty(value = "平台签署失败备注信息")
private String aRemark;
@ApiModelProperty(value = "(买家/供应商)签署失败备注信息")
private String bRemark;
@ApiModelProperty(value = "平台签署交易号")
private String aTransactionId;
@ApiModelProperty(value = "(买家/供应商)签署交易号")
private String bTransactionId;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date createTime;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date updateTime;
@ApiModelProperty(value = "归档日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date archiveDate;
}
package com.mmc.oms.model.dto.uav;
import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -82,5 +83,7 @@ public class UavOrderDTO implements Serializable {
private List<UavOrderPayDTO> payDTOList;
@ApiModelProperty("订单规格列表")
private List<UavOrderSkuDTO> skuDTOList;
@ApiModelProperty("合同签署信息")
private ContractInfoDTO contractInfoDTO;
}
......@@ -26,6 +26,8 @@ public class UavOrderSkuDTO implements Serializable {
private Integer id;
@ApiModelProperty("订单id")
private Integer uavOrderId;
@ApiModelProperty("采购订单id")
private Integer uavPurchaseOrderId;
@ApiModelProperty("商品id")
private Integer mallGoodsId;
@ApiModelProperty("商品名称")
......
package com.mmc.oms.model.dto.uav;
import com.mmc.oms.model.dto.ContractInfoDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/11 13:30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "采购订单")
public class UavPurchaseOrderDTO implements Serializable {
private static final long serialVersionUID = -4512219777300057765L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "采购方id")
private Integer backUserAccountId;
@ApiModelProperty(value = "第三方商家用户id")
private Integer thirdUserAccountId;
@ApiModelProperty(value = "被关联订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "订单金额")
private BigDecimal orderAmount;
@ApiModelProperty(value = "订单状态")
private Integer statusCode;
@ApiModelProperty(value = "生成时间")
private Date createTime;
@ApiModelProperty(value = "买家备注")
private String userRemark;
@ApiModelProperty(value = "卖家备注")
private String sellerRemark;
@ApiModelProperty("订单规格列表")
private List<UavOrderSkuDTO> skuDTOList;
@ApiModelProperty("用户收货地址信息")
private UavOrderExpressDTO uavOrderExpressDTO;
@ApiModelProperty("付款凭证")
private List<UavOrderPayDTO> uavOrderPayDTOS;
@ApiModelProperty("合同签署信息")
private ContractInfoDTO contractInfoDTO;
}
package com.mmc.oms.model.qo.uav;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/11 14:12
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UavPOrderQO implements Serializable {
private static final long serialVersionUID = 12451212L;
@ApiModelProperty(value = "关键字-订单编号", required = false)
private String keyword;
@ApiModelProperty(value = "用户uid", required = false)
private String uid;
@ApiModelProperty(value = "订单状态码")
private Integer statusCode;
@ApiModelProperty(value = "用户id", hidden = true)
private Integer userAccountId;
@ApiModelProperty(value = "商家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.oms.entity.uav;
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModel;
import io.swagger.models.auth.In;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author: zj
* @Date: 2023/9/9 10:58
* @Date: 2023/9/11 13:40
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-采购订单")
public class UavPODO implements Serializable {
private static final long serialVersionUID = 2696589294661774228L;
@AllArgsConstructor
public class UavPOConfirmVO implements Serializable {
private static final long serialVersionUID = 2835559199139139868L;
@ApiModelProperty("采购订单id")
private Integer id;
@ApiModelProperty("订单金额")
private BigDecimal orderAmount;
@ApiModelProperty("平台备注")
private String userRemark;
}
......@@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
public interface UavOrderService {
ResultBody addOrder(AddUavOrderVO param, BaseAccountDTO currentAccount);
ResultBody detail(Integer id) throws Exception;
ResultBody detail(Integer id, BaseAccountDTO baseAccountDTO) throws Exception;
ResultBody close(Integer id, String token);
......@@ -41,7 +41,7 @@ public interface UavOrderService {
void payUavOrder(TopUpOrderVO topUpOrderVO);
ResultBody confirmOrder(UavOrderVO uavOrderVO);
ResultBody confirmOrder(UavOrderVO uavOrderVO, BaseAccountDTO currentAccount);
ResultBody checkNoReceive();
}
package com.mmc.oms.service.uav;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavPOrderQO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavPOConfirmVO;
/**
* @author: zj
* @Date: 2023/9/9 10:03
*/
public interface UavPOService {
ResultBody confirmPOrder(UavPOConfirmVO uavPOConfirmVO, BaseAccountDTO currentAccount);
ResultBody listPurchase(UavPOrderQO uavPOrderQO);
ResultBody getPurchaseOrder(Integer id, BaseAccountDTO currentAccount);
ResultBody upLoadPay(UavOrderPayVO uavOrderPayVO);
ResultBody checkPay(UavOrderPayVO uavOrderPayVO);
ResultBody send(UavOrderExpressVO param);
}
package com.mmc.oms.service.uav.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.client.PmsClient;
import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.constant.UavOrderProportion;
......@@ -12,12 +11,14 @@ import com.mmc.oms.common.util.KdnExpressUtil;
import com.mmc.oms.dao.UserAddressDao;
import com.mmc.oms.dao.uav.UavOrderDao;
import com.mmc.oms.dao.uav.UavOrderExpressDao;
import com.mmc.oms.dao.uav.UavPODao;
import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.entity.uav.*;
import com.mmc.oms.enums.UavOrderStatus;
import com.mmc.oms.enums.UavOrderType;
import com.mmc.oms.feign.PaymentAppApi;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import com.mmc.oms.model.dto.order.ExpStationsDTO;
import com.mmc.oms.model.dto.uav.*;
......@@ -60,6 +61,9 @@ public class UavOrderServiceImpl implements UavOrderService {
private UserAddressDao userAddressDao;
@Autowired
private UavPODao uavPODao;
@Autowired
private DemandReleaseOrderService demandReleaseOrderService;
@Autowired
......@@ -204,7 +208,7 @@ public class UavOrderServiceImpl implements UavOrderService {
}
@Override
public ResultBody detail(Integer id) throws Exception {
public ResultBody detail(Integer id, BaseAccountDTO baseAccountDTO) throws Exception {
UavOrderDO uavOrderDO = uavOrderDao.detail(id);
UavOrderDTO uavOrderDTO = uavOrderDO.buildUavOrderDTO();
// 收货信息、付款信息、规格信息、快递信息、签署信息
......@@ -228,6 +232,11 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderDTO.setKdnExpDTO(kdnExpDTO);
}
// 合同签署信息
List<String> orderNos = Arrays.asList(uavOrderDO.getOrderNo());
List<ContractInfoDTO> contractInfoDTOS = userAppApi.listContractInfoByOrderNo(orderNos, baseAccountDTO.getToken());
if (CollectionUtils.isNotEmpty(contractInfoDTOS)) {
uavOrderDTO.setContractInfoDTO(contractInfoDTOS.get(0));
}
return ResultBody.success(uavOrderDTO);
}
......@@ -449,16 +458,24 @@ public class UavOrderServiceImpl implements UavOrderService {
return ResultBody.success();
}
@Transactional
@Override
public ResultBody checkPay(UavOrderPayVO uavOrderPayVO) {
// 一个订单可能会多次上传付款凭证,因此单独审核
UavOrderDO uavOrderDO = uavOrderDao.detail(uavOrderPayVO.getUavOrderId());
if (uavOrderPayVO.getCheckStatus().equals(1)){
// 第一次审核通过,则要把订单状态改为待发货
// 第一次审核通过,则要把订单状态改为待发货;意向订单还要生成采购订单
if (uavOrderDO.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) {
this.updateUavOrderStatus(uavOrderPayVO.getUavOrderId(), UavOrderStatus.FINISH_PAYING);
// TODO 生成采购订单
UavPurchaseOrderDO uavPurchaseOrderDO = new UavPurchaseOrderDO();
uavPurchaseOrderDO.setBackUserAccountId(1);
uavPurchaseOrderDO.setThirdUserAccountId(uavOrderDO.getThirdBackUserAccountId());
uavPurchaseOrderDO.setOrderAmount(uavOrderDO.getOrderTotalAmount());
uavPurchaseOrderDO.setOrderNo(CodeUtil.uavPOrderCode());
uavPurchaseOrderDO.setUavOrderId(uavOrderDO.getId());
uavPurchaseOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode());
uavPODao.addPurchaseOrder(uavPurchaseOrderDO);
}
}
UavOrderPayDO uavOrderPayDO = new UavOrderPayDO(uavOrderPayVO);
......@@ -491,15 +508,17 @@ public class UavOrderServiceImpl implements UavOrderService {
@Transactional
@Override
public ResultBody confirmOrder(UavOrderVO uavOrderVO) {
public ResultBody confirmOrder(UavOrderVO uavOrderVO, BaseAccountDTO currentAccount) {
// 修改订单状态
UavOrderDO uavOrderDO = uavOrderDao.detail(uavOrderVO.getId());
if (!uavOrderDO.getStatusCode().toString().equals(UavOrderStatus.CONFIRM.getCode().toString())) {
return ResultBody.error("操作有误,请重试!");
}
// TODO 核验合同签署状态
if ( 1 == 1) {
return ResultBody.error("待签署合同");
//核验合同签署状态,确认平台要先完成签署
List<String> orderNos = Arrays.asList(uavOrderDO.getOrderNo());
List<ContractInfoDTO> contractInfoDTOS = userAppApi.listContractInfoByOrderNo(orderNos, currentAccount.getToken());
if (CollectionUtils.isNotEmpty(contractInfoDTOS) && !contractInfoDTOS.get(0).getSignStatus().equals(2)) {
return ResultBody.error("待平台签署合同");
}
// 修改订单信息
uavOrderDO.setOrderTotalAmount(uavOrderVO.getOrderTotalAmount());
......
package com.mmc.oms.service.uav.impl;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.uav.UavOrderExpressDao;
import com.mmc.oms.dao.uav.UavPODao;
import com.mmc.oms.entity.uav.UavOrderExpressDO;
import com.mmc.oms.entity.uav.UavOrderPayDO;
import com.mmc.oms.entity.uav.UavPurchaseOrderDO;
import com.mmc.oms.entity.uav.UavPurchaseOrderPayDO;
import com.mmc.oms.enums.UavOrderStatus;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.uav.UavOrderPayDTO;
import com.mmc.oms.model.dto.uav.UavPurchaseOrderDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavPOrderQO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavPOConfirmVO;
import com.mmc.oms.service.uav.UavOrderService;
import com.mmc.oms.service.uav.UavPOService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
......@@ -11,4 +37,136 @@ import org.springframework.stereotype.Service;
@Service
@Slf4j
public class UavPOServiceImpl implements UavPOService {
@Autowired
private UavPODao uavPODao;
@Autowired
private UserAppApi userAppApi;
@Autowired
private UavOrderExpressDao uavOrderExpressDao;
@Autowired
private UavOrderService uavOrderService;
@Override
public ResultBody confirmPOrder(UavPOConfirmVO uavPOConfirmVO, BaseAccountDTO currentAccount) {
UavPurchaseOrderDO uavPOrder = uavPODao.getUavPOrder(uavPOConfirmVO.getId());
if (!uavPOrder.getStatusCode().equals(UavOrderStatus.CONFIRM.getCode())) {
return ResultBody.error("操作有误,请重试!");
}
// 合同签署信息,确认平台要先完成签署
List<String> orderNos = Arrays.asList(uavPOrder.getOrderNo());
List<ContractInfoDTO> contractInfoDTOS = userAppApi.listContractInfoByOrderNo(orderNos, currentAccount.getToken());
if (CollectionUtils.isNotEmpty(contractInfoDTOS) && !contractInfoDTOS.get(0).getSignStatus().equals(2)) {
// 确认平台要先完成签署
return ResultBody.error("合同未签署");
}
// 修改订单状态
this.updateUavPOrderStatus(uavPOConfirmVO.getId(), UavOrderStatus.CONFIRM);
// 修改订单信息
uavPOrder.setUserRemark(uavPOConfirmVO.getUserRemark());
uavPOrder.setOrderAmount(uavPOConfirmVO.getOrderAmount());
uavPODao.updateUavPOrderDO(uavPOrder);
return ResultBody.success();
}
/**
* 修改采购订单状态
* @param id
* @param uavOrderStatus
*/
@Transactional
public void updateUavPOrderStatus(Integer id, UavOrderStatus uavOrderStatus){
Integer nextCode = null;
if (uavOrderStatus.getNextCode().equals(UavOrderStatus.PAYING.getCode())) {
nextCode = 420;
}else {
nextCode = uavOrderStatus.getNextCode();
}
uavPODao.updateUavPOrderStatus(id, nextCode);
}
@Override
public ResultBody listPurchase(UavPOrderQO uavPOrderQO) {
int count = uavPODao.countListPurchaseOrder(uavPOrderQO);
if (count == 0) {
return ResultBody.success(PageResult.buildPage(uavPOrderQO.getPageNo(), uavPOrderQO.getPageSize(), count));
}
Integer pageNo = uavPOrderQO.getPageNo();
uavPOrderQO.buildCurrentPage();
List<UavPurchaseOrderDO> uavPurchaseOrderDOS = uavPODao.listPurchaseOrder(uavPOrderQO);
List<UavPurchaseOrderDTO> purchaseOrderDTOS = uavPurchaseOrderDOS.stream().map(UavPurchaseOrderDO::buildUavPurchaseOrderDTO).collect(Collectors.toList());
// TODO 买家和买家信息
return ResultBody.success(PageResult.buildPage(pageNo, uavPOrderQO.getPageSize(), count, purchaseOrderDTOS));
}
@Override
public ResultBody getPurchaseOrder(Integer id, BaseAccountDTO currentAccount) {
UavPurchaseOrderDO uavPOrder = uavPODao.getUavPOrder(id);
if(uavPOrder == null) {
return ResultBody.error("订单不存在!");
}
UavPurchaseOrderDTO uavPurchaseOrderDTO = uavPOrder.buildUavPurchaseOrderDTO();
// 收货信息
UavOrderExpressDO uavOrderExpressDO = uavOrderExpressDao.getUavOrderExpressDO(uavPOrder.getUavOrderId());
uavPurchaseOrderDTO.setUavOrderExpressDTO(uavOrderExpressDO == null ? null : uavOrderExpressDO.buildUavOrderExpressDTO());
// 付款凭证信息
List<UavPurchaseOrderPayDO> purchaseOrderPayDOS = uavPODao.listUavPOrderPay(id);
List<UavOrderPayDTO> uavOrderPayDTOS = purchaseOrderPayDOS.stream().map(UavPurchaseOrderPayDO::buildUavOrderPayDTO).collect(Collectors.toList());
uavPurchaseOrderDTO.setUavOrderPayDTOS(uavOrderPayDTOS);
// 合同签署信息
List<String> orderNos = Arrays.asList(uavPOrder.getOrderNo());
List<ContractInfoDTO> contractInfoDTOS = userAppApi.listContractInfoByOrderNo(orderNos, currentAccount.getToken());
if (CollectionUtils.isNotEmpty(contractInfoDTOS)) {
uavPurchaseOrderDTO.setContractInfoDTO(contractInfoDTOS.get(0));
}
return ResultBody.success(uavPurchaseOrderDTO);
}
@Override
public ResultBody upLoadPay(UavOrderPayVO uavOrderPayVO) {
UavPurchaseOrderDO uavPOrder = uavPODao.getUavPOrder(uavOrderPayVO.getUavOrderId());
if (!uavPOrder.getStatusCode().equals(UavOrderStatus.PAYING.getCode())) {
return ResultBody.error("操作有误,请重试!");
}
UavPurchaseOrderPayDO uavOrderPayDO = new UavPurchaseOrderPayDO(uavOrderPayVO);
uavOrderPayDO.setUavPOrderId(uavOrderPayVO.getUavOrderId());
uavPODao.addPurchaseOrderPay(uavOrderPayDO);
// 修改订单状态
this.updateUavPOrderStatus(uavPOrder.getId(), UavOrderStatus.PAYING);
return ResultBody.success();
}
@Transactional
@Override
public ResultBody checkPay(UavOrderPayVO uavOrderPayVO) {
UavPurchaseOrderDO uavPOrder = uavPODao.getUavPOrder(uavOrderPayVO.getUavOrderId());
if (!uavPOrder.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) {
return ResultBody.error("操作有误,请重试!");
}
UavPurchaseOrderPayDO uavOrderPayDO = new UavPurchaseOrderPayDO(uavOrderPayVO);
uavPODao.updateUavPOrderPay(uavOrderPayDO);
if (uavOrderPayVO.getCheckStatus().equals(1)) {
// 修改订单状态
this.updateUavPOrderStatus(uavPOrder.getId(), UavOrderStatus.FINISH_PAYING);
}else {
this.updateUavPOrderStatus(uavPOrder.getId(), UavOrderStatus.PAYING);
}
return ResultBody.success();
}
@Override
public ResultBody send(UavOrderExpressVO param) {
UavPurchaseOrderDO uavPOrder = uavPODao.getUavPOrderByUavOId(param.getUavOrderId());
if (!uavPOrder.getStatusCode().equals(UavOrderStatus.WAITING_DELIVER_GOODS.getCode())) {
return ResultBody.error("操作有误,请重试!");
}
// 修改主订单信息
uavOrderService.send(param);
// 修改子订单信息
this.updateUavPOrderStatus(uavPOrder.getId(), UavOrderStatus.WAITING_DELIVER_GOODS);
return ResultBody.success();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.uav.UavPODao">
<resultMap type="com.mmc.oms.entity.uav.UavPODO"
<resultMap type="com.mmc.oms.entity.uav.UavPurchaseOrderDO"
id="uavPOResultMap">
<id property="id" column="id" />
<result property="orderNo" column="order_no" />
<result property="backUserAccountId" column="back_user_account_id" />
<result property="thirdUserAccountId" column="third_user_account_id" />
<result property="uavOrderId" column="uav_order_id" />
<result property="orderAmount" column="order_amount" />
<result property="statusCode" column="status_code" />
<result property="createTime" column="create_time" />
<result property="userRemark" column="user_remark" />
<result property="sellerRemark" column="seller_remark" />
<collection property="skuDOS" ofType="com.mmc.oms.entity.uav.UavOrderSkuDO"
select="listUavOrderSkuDO"
column="{uavOrderId=uav_order_id}">
</collection>
</resultMap>
<sql id="uav_purchase_order_column">
id, order_no, back_user_account_id, third_user_account_id, uav_order_id, order_amount, status_code,
create_time, user_remark, seller_remark
</sql>
<insert id="addPurchaseOrder" parameterType="com.mmc.oms.entity.uav.UavPurchaseOrderDO" keyProperty="id"
useGeneratedKeys="true">
insert into uav_purchase_order(order_no, back_user_account_id, third_user_account_id, uav_order_id, order_amount, status_code,
create_time, user_remark, seller_remark)
values(#{orderNo}, #{backUserAccountId}, #{thirdUserAccountId}, #{uavOrderId}, #{orderAmount}, #{statusCode}, NOW(), #{userRemark}, #{sellerRemark});
</insert>
<insert id="addPurchaseOrderPay" parameterType="com.mmc.oms.entity.uav.UavPurchaseOrderPayDO" useGeneratedKeys="true" keyProperty="id">
insert into uav_purchase_order_pay(
uav_purchase_order_id, pay_img_list, check_status, pay_remark, refuse_reason, create_time, check_time )
values(#{uavPurchaseOrderId}, #{payImgList}, #{checkStatus}, #{payRemark}, #{refuseReason}, NOW(), #{checkTime})
</insert>
<update id="updateUavPOrderStatus">
update uavOrderStatus set status_code = #{statusCode} where id = #{id}
</update>
<update id="updateUavPOrderDO" parameterType="com.mmc.oms.entity.uav.UavPurchaseOrderDO">
update uav_purchase_order
<set>
<if test="orderAmount != null">
order_amount = #{orderAmount},
</if>
<if test="userRemark != null">
user_remark = #{userRemark}
</if>
</set>
where id = #{id}
</update>
<update id="updateUavPOrderPay" parameterType="com.mmc.oms.entity.uav.UavPurchaseOrderPayDO">
update uav_purchase_order_pay
<set>
<if test="payImgList != null">
pay_img_list = #{payImgList},
</if>
<if test="checkStatus != null">
check_status = #{checkStatus},
</if>
<if test="payRemark != null">
pay_remark = #{payRemark},
</if>
<if test="refuseReason != null">
refuse_reason = #{refuseReason}
</if>
</set>
where id = #{id}
</update>
<select id="listUavOrderSkuDO" resultType="com.mmc.oms.entity.uav.UavOrderSkuDO">
select
id,
uav_order_id,
mall_goods_id,
trade_name,
price_stock_id,
product_spec,
order_num,
unit_price,
sku_image,
sku_no,
create_time
from uav_order_sku
where uav_order_id = #{uavOrderId}
</select>
<select id="getUavPOrder" resultType="com.mmc.oms.entity.uav.UavPurchaseOrderDO">
select <include refid="uav_purchase_order_column"/>
from uav_purchase_order where id = #{id}
</select>
<select id="listPurchaseOrder" resultType="com.mmc.oms.entity.uav.UavPurchaseOrderDO" parameterType="com.mmc.oms.model.qo.uav.UavPOrderQO">
select <include refid="uav_purchase_order_column"/>
from uav_purchase_order
where 1 = 1
<if test="keyword != null">
and order_no = #{orderNo}
</if>
<if test="thirdBackUserAccountId != null">
and third_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="statusCode != null">
and status_code = #{statusCode}
</if>
<if test="startTime != null">
and create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= create_time
</if>
order by id desc
limit #{pageNo}, #{pageSize}
</select>
<select id="countListPurchaseOrder" resultType="java.lang.Integer" parameterType="com.mmc.oms.model.qo.uav.UavPOrderQO">
select count(*)
from uav_purchase_order
where 1 = 1
<if test="keyword != null">
and order_no = #{orderNo}
</if>
<if test="thirdBackUserAccountId != null">
and third_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="statusCode != null">
and status_code = #{statusCode}
</if>
<if test="startTime != null">
and create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= create_time
</if>
</select>
<select id="listUavPOrderPay" resultType="com.mmc.oms.entity.uav.UavPurchaseOrderPayDO">
select id,
uav_purchase_order_id,
pay_img_list,
check_status,
pay_remark,
refuse_reason,
create_time,
check_time
from uav_purchase_order_pay
where uav_purchase_order_id = #{uavPurchaseOrderId}
</select>
<select id="getUavPOrderByUavOId" resultType="com.mmc.oms.entity.uav.UavPurchaseOrderDO">
select <include refid="uav_purchase_order_column"/>
from uav_purchase_order where uav_order_id = #{uavOrderId}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论