提交 9cf0a42e 作者: zhenjie

意向订单开发

上级 8d7db639
......@@ -5,10 +5,7 @@ import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.uav.UavOrderDTO;
import com.mmc.oms.model.dto.uav.UavOrderStatusDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.uav.AddUavOrderVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import com.mmc.oms.model.vo.uav.*;
import com.mmc.oms.service.uav.UavOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -100,7 +97,7 @@ public class UavOrderController extends BaseController {
return uavOrderService.receive(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "评价订单", hidden = true)
@ApiOperation(value = "评价订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("remarkOrder")
public ResultBody remarkOrder(@RequestBody UavOrderRemarkVO uavOrderRemarkVO) {
......@@ -121,7 +118,12 @@ public class UavOrderController extends BaseController {
return uavOrderService.statusList();
}
// 检测超时未收货的订单
@ApiOperation(value = "平台确认订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("confirmOrder")
public ResultBody confirmOrder(@RequestBody UavOrderVO uavOrderVO) {
return uavOrderService.confirmOrder(uavOrderVO);
}
// 设置订单抽成比例
......
package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavOrderDO;
import com.mmc.oms.entity.uav.UavOrderPayDO;
import com.mmc.oms.entity.uav.UavOrderSkuDO;
import com.mmc.oms.entity.uav.UavOrderStatusDO;
import com.mmc.oms.entity.uav.*;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import org.apache.ibatis.annotations.Mapper;
......@@ -40,4 +37,10 @@ public interface UavOrderDao {
void addOrderPay(UavOrderPayDO uavOrderPayDO);
void updateUavOrderPayInfo(UavOrderDO uavOrderDO);
void updateUavOrder(UavOrderDO uavOrderDO);
void checkPay(UavOrderPayDO uavOrderPayDO);
void addRemarkOrder(UavOrderRemarkDO uavOrderRemarkDO);
}
......@@ -3,6 +3,8 @@ package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavOrderExpressDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/5 16:19
......@@ -14,4 +16,6 @@ public interface UavOrderExpressDao {
UavOrderExpressDO getUavOrderExpressDO(Integer uavOrderId);
int updateUavOrderExpressDO(UavOrderExpressDO uavOrderExpressDO);
List<UavOrderExpressDO> listNoReceive();
}
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 io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -32,6 +33,14 @@ public class UavOrderPayDO implements Serializable {
private Date checkTime;
private BigDecimal payAmount;
public UavOrderPayDO(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.uavOrderId).payImgList(this.payImgList).checkStatus(this.checkStatus)
.payRemark(this.payRemark).refuseReason(this.refuseReason).createTime(this.createTime).payType(this.payType)
......
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/9 17:48
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单评价信息")
public class UavOrderRemarkDO implements Serializable {
private static final long serialVersionUID = 3316555339556069007L;
@ApiModelProperty(value = "评价id")
private Integer id;
@ApiModelProperty(value = "商品id")
private Integer mallGoodsId;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "评分")
private Integer remarkLevel;
@ApiModelProperty(value = "图片地址,‘,’隔开")
private String uavImages;
@ApiModelProperty(value = "评论内容")
private String content;
public UavOrderRemarkDO(UavOrderRemarkVO uavOrderRemarkVO){
this.id = uavOrderRemarkVO.getId();
this.mallGoodsId = uavOrderRemarkVO.getMallGoodsId();
this.uavOrderId = uavOrderRemarkVO.getUavOrderId();
this.remarkLevel = uavOrderRemarkVO.getRemarkLevel();
this.uavImages = uavOrderRemarkVO.getUavImages();
this.content = uavOrderRemarkVO.getContent();
}
}
......@@ -9,6 +9,7 @@ public enum UavOrderStatus {
CONFIRM(200, 300, "待确认订单"),
SIGN(300, 400, "待签署合同"),
PAYING(400, 500,"待付款"),
FINISH_PAYING(420, 500,"已上传付款凭证"),
WAITING_DELIVER_GOODS(500,600, "待发货"),
WAITING_RECEIVE_GOODS(600, 700, "待收货"),
WAITING_REMARK(700, 800, "待评价"),
......
package com.mmc.oms.enums;
/**
* @author: zj
* @Date: 2023/9/9 14:09
*/
public enum UavOrderType {
PAY(0, "正常订单"),SIGN(1, "意向订单")
;
UavOrderType(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
private Integer code;
private String name;
}
......@@ -18,10 +18,14 @@ import java.io.Serializable;
@Builder
public class UavOrderRemarkVO implements Serializable {
private static final long serialVersionUID = -5505722703435250409L;
@ApiModelProperty(value = "评价id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "商品id")
private Integer mallGoodsId;
@ApiModelProperty(value = "评分")
private Integer level;
private Integer remarkLevel;
@ApiModelProperty(value = "图片地址,‘,’隔开")
private String uavImages;
@ApiModelProperty(value = "评论内容")
......
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
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/9 13:47
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UavOrderVO implements Serializable {
private static final long serialVersionUID = 2835559199139136798L;
@ApiModelProperty("订单id")
private Integer id;
@ApiModelProperty("订单实付总额")
private BigDecimal orderTotalAmount;
@ApiModelProperty("订单交期")
private Date deliveryTime;
@ApiModelProperty("卖家备注")
private String sellerRemark;
}
package com.mmc.oms.schedule;
import com.mmc.oms.service.uav.UavOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @author: zj
* @Date: 2023/9/9 17:34
*/
@Slf4j
@Component
public class ScheduleController {
@Autowired
private UavOrderService uavOrderService;
@Scheduled(fixedDelay = 5 * 60 * 1000)
public void checkNoReceiveUavOrder() {
log.info("checkNoReceiveUavOrder");
uavOrderService.checkNoReceive();
}
}
......@@ -3,10 +3,7 @@ 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.UavOrderQO;
import com.mmc.oms.model.vo.uav.AddUavOrderVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import com.mmc.oms.model.vo.uav.*;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import javax.servlet.http.HttpServletRequest;
......@@ -43,4 +40,8 @@ public interface UavOrderService {
ResultBody checkPay(UavOrderPayVO uavOrderPayVO);
void payUavOrder(TopUpOrderVO topUpOrderVO);
ResultBody confirmOrder(UavOrderVO uavOrderVO);
ResultBody checkNoReceive();
}
......@@ -15,6 +15,7 @@ import com.mmc.oms.dao.uav.UavOrderExpressDao;
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.kdn.KdnExpDTO;
......@@ -161,8 +162,11 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderDO.setOrderNo(orderNo);
uavOrderDO.setOrderTotalAmount(orderTotalAmount);
uavOrderDO.setOrderType(param.getOrderType());
// TODO 意向订单待处理
uavOrderDO.setStatusCode(otherAmount.compareTo(BigDecimal.ZERO) > 0 ? UavOrderStatus.PAYING.getCode() : statusCode);
if (param.getOrderType().equals(UavOrderType.PAY.getCode())){
uavOrderDO.setStatusCode(otherAmount.compareTo(BigDecimal.ZERO) > 0 ? UavOrderStatus.PAYING.getCode() : statusCode);
}else {
uavOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode());
}
uavOrderDO.setUserAccountId(currentAccount.getUserAccountId());
uavOrderDO.setThirdBackUserAccountId(param.getThirdBackUserAccountId());
uavOrderDO.setCompanyName(param.getCompanyName());
......@@ -221,6 +225,7 @@ public class UavOrderServiceImpl implements UavOrderService {
if (kdnExpDTO != null) {
uavOrderDTO.setKdnExpDTO(kdnExpDTO);
}
// 合同签署信息
return ResultBody.success(uavOrderDTO);
}
......@@ -281,7 +286,7 @@ public class UavOrderServiceImpl implements UavOrderService {
Integer pageNo = uavOrderQO.getPageNo();
uavOrderQO.buildCurrentPage();
List<UavOrderDO> uavOrderDOS = uavOrderDao.list(uavOrderQO);
// 买家信息
// TODO 买家信息
List<UavOrderDTO> uavOrderDTOS = uavOrderDOS.stream().map(UavOrderDO::buildUavOrderDTO).collect(Collectors.toList());
return ResultBody.success(PageResult.buildPage(pageNo, uavOrderQO.getPageSize(), count, uavOrderDTOS));
}
......@@ -362,13 +367,13 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO.setOrderStatus(1500);
payUavWalletVO.setRemark("商城订单收入,订单编号" + uavOrderDO.getOrderNo());
// 拿到商家管理员的用户id
ResultBody managerRes = userAppApi.getManagerIdByBackUserId(uavOrderDO.getThirdBackUserAccountId(), currentAccount.getToken());
ResultBody managerRes = userAppApi.getManagerIdByBackUserId(uavOrderDO.getThirdBackUserAccountId(), null);
if (!managerRes.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return managerRes;
}
payUavWalletVO.setUserAccountId((Integer) managerRes.getResult());
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, currentAccount.getToken());
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, null);
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return resultBody;
......@@ -379,9 +384,16 @@ public class UavOrderServiceImpl implements UavOrderService {
@Override
public ResultBody remarkOrder(UavOrderRemarkVO uavOrderRemarkVO) {
// 填入评价内容
UavOrderDO uavOrderDO = uavOrderDao.detail(uavOrderRemarkVO.getUavOrderId());
if (!uavOrderDO.getStatusCode().toString().equals(UavOrderStatus.WAITING_REMARK.getCode().toString())) {
return ResultBody.error("操作有误,请重试!");
}
// 修改订单状态
return null;
this.updateUavOrderStatus(uavOrderRemarkVO.getUavOrderId(), UavOrderStatus.WAITING_REMARK);
// 填入评价内容
UavOrderRemarkDO uavOrderRemarkDO = new UavOrderRemarkDO(uavOrderRemarkVO);
uavOrderDao.addRemarkOrder(uavOrderRemarkDO);
return ResultBody.success();
}
@Transactional
......@@ -402,14 +414,39 @@ public class UavOrderServiceImpl implements UavOrderService {
return ResultBody.success(uavOrderStatusDTOS);
}
@Transactional
@Override
public ResultBody upLoadPay(UavOrderPayVO uavOrderPayVO) {
return null;
UavOrderDO uavOrderDO = uavOrderDao.detail(uavOrderPayVO.getUavOrderId());
// 修改订单状态
if (uavOrderDO.getStatusCode().equals(UavOrderStatus.PAYING.getCode())) {
uavOrderDao.updateUavOrderStatus(uavOrderDO.getId(), UavOrderStatus.FINISH_PAYING.getCode());
}
UavOrderPayDO uavOrderPayDO = new UavOrderPayDO(uavOrderPayVO);
uavOrderPayDO.setUavOrderId(uavOrderPayVO.getUavOrderId());
// 审核状态,0待审批,1已通过,2未通过
uavOrderPayDO.setCheckStatus(0);
// 0微信支付,1支付宝,2线下支付凭证
uavOrderPayDO.setPayType(2);
uavOrderDao.addOrderPay(uavOrderPayDO);
return ResultBody.success();
}
@Override
public ResultBody checkPay(UavOrderPayVO uavOrderPayVO) {
return null;
// 一个订单可能会多次上传付款凭证,因此单独审核
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 生成采购订单
}
}
UavOrderPayDO uavOrderPayDO = new UavOrderPayDO(uavOrderPayVO);
uavOrderDao.checkPay(uavOrderPayDO);
return ResultBody.success();
}
@Transactional
......@@ -434,4 +471,36 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderPayDO.setCreateTime(new Date());
uavOrderDao.addOrderPay(uavOrderPayDO);
}
@Transactional
@Override
public ResultBody confirmOrder(UavOrderVO uavOrderVO) {
// 修改订单状态
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("待签署合同");
}
// 修改订单信息
uavOrderDO.setOrderTotalAmount(uavOrderVO.getOrderTotalAmount());
uavOrderDO.setDeliveryTime(uavOrderVO.getDeliveryTime());
uavOrderDO.setSellerRemark(uavOrderVO.getSellerRemark());
uavOrderDO.setStatusCode(UavOrderStatus.SIGN.getCode());
uavOrderDao.updateUavOrder(uavOrderDO);
return ResultBody.success();
}
@Override
public ResultBody checkNoReceive() {
// 超时未签收的订单列表
// 自动签收
List<UavOrderExpressDO> uavOrderExpressDOS = uavOrderExpressDao.listNoReceive();
for (UavOrderExpressDO expressDO : uavOrderExpressDOS) {
this.receive(expressDO.getUavOrderId(), null);
}
return ResultBody.success();
}
}
......@@ -73,6 +73,11 @@
values(#{uavOrderId}, #{orderNo}, #{payType}, #{payAmount}, #{payImgList}, #{checkStatus}, #{payRemark}, #{refuseReason}, NOW(), #{checkTime})
</insert>
<insert id="addRemarkOrder" parameterType="com.mmc.oms.entity.uav.UavOrderRemarkDO">
insert into uav_order_remark (mall_goods_id, uav_order_id, remark_level, remark_images, content, create_time)
values (#{mallGoodsId}, #{uavOrderId}, #{remarkLevel}, #{remarkImages}, #{content}, NOW())
</insert>
<update id="sellerRemark">
update uav_order set seller_remark = #{content} where id = #{id}
</update>
......@@ -84,6 +89,44 @@
<update id="updateUavOrderPayInfo" parameterType="com.mmc.oms.entity.uav.UavOrderDO">
update uav_order set pay_time = #{payTime}, pay_type = #{payType} where id = #{id}
</update>
<update id="updateUavOrder" parameterType="com.mmc.oms.entity.uav.UavOrderDO">
update uav_order
<set>
<if test="orderTotalAmount != null">
order_total_amount = #{orderTotalAmount},
</if>
<if test="statusCode != null">
status_code = #{statusCode},
</if>
<if test="deliveryTime != null">
delivery_time = #{deliveryTime},
</if>
<if test="sellerRemark != null">
seller_remark = #{sellerRemark}
</if>
</set>
where id = #{id} and version = #{version}
</update>
<update id="checkPay" parameterType="com.mmc.oms.entity.uav.UavOrderPayDO">
update uav_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="detail" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select <include refid="uav_order_column" /> from uav_order where id = #{id}
......
<?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.UavOrderExpressDao">
<sql id="uav_order_express_column">
id, uav_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, send_time,
is_receive as receive, receive_time, update_time, create_time
</sql>
<insert id="addAddress" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO">
insert into uav_order_express(uav_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, create_time)
......@@ -50,22 +56,16 @@
<select id="getUavOrderExpressDO" resultType="com.mmc.oms.entity.uav.UavOrderExpressDO">
select
id,
uav_order_id,
send_exp_no,
send_exp_code,
take_name,
take_phone,
take_region,
take_address,
send_time,
is_receive,
receive_time,
update_time,
create_time
<include refid="uav_order_express_column" />
from uav_order_express
where uav_order_id = #{uavOrderId}
</select>
<select id="listNoReceive" resultType="com.mmc.oms.entity.uav.UavOrderExpressDO">
select
<include refid="uav_order_express_column" />
from uav_order_express where is_receive = 0 and send_time > timestampdiff(day, send_time, NOW())
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论