提交 9f520a47 作者: xiaowang

租赁订单

上级 71c0169a
...@@ -3,9 +3,11 @@ package com.mmc.oms.controller.lease; ...@@ -3,9 +3,11 @@ package com.mmc.oms.controller.lease;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController; import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO; import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import com.mmc.oms.model.dto.transtatus.TranStatusDicDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO; import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO; import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO; import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.service.lease.LeaseOrderService; import com.mmc.oms.service.lease.LeaseOrderService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -44,7 +46,7 @@ public class LeaseOrderController extends BaseController { ...@@ -44,7 +46,7 @@ public class LeaseOrderController extends BaseController {
@ApiOperation(value = "买家申请退款(取消订单)") @ApiOperation(value = "买家申请退款(取消订单)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("close") @PostMapping("close")
public ResultBody close(@RequestBody LeaseOrderRefundVO leaseOrderRefundVO, HttpServletRequest request) { public ResultBody close(@RequestBody LeaseOrderRefundVO leaseOrderRefundVO, HttpServletRequest request) {
return leaseOrderService.close(leaseOrderRefundVO, this.getCurrentAccount(request).getToken()); return leaseOrderService.close(leaseOrderRefundVO, this.getCurrentAccount(request).getToken());
} }
...@@ -55,4 +57,61 @@ public class LeaseOrderController extends BaseController { ...@@ -55,4 +57,61 @@ public class LeaseOrderController extends BaseController {
public ResultBody<LeaseOrderDTO> list(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) { public ResultBody<LeaseOrderDTO> list(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) {
return leaseOrderService.list(uavOrderQO, this.getCurrentAccount(request)); return leaseOrderService.list(uavOrderQO, this.getCurrentAccount(request));
} }
@ApiOperation(value = "个人订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = LeaseOrderDTO.class)})
@PostMapping("listByUid")
public ResultBody<LeaseOrderDTO> listByUid(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) {
return leaseOrderService.listByUid(uavOrderQO, this.getCurrentAccount(request));
}
@ApiOperation(value = "支付", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("pay")
public ResultBody pay(@RequestParam Integer id, HttpServletRequest request) {
return leaseOrderService.pay(id, this.getCurrentAccount(request), request);
}
@ApiOperation(value = "发货")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("send")
public ResultBody send(@RequestBody UavOrderExpressVO param) {
return leaseOrderService.send(param);
}
@ApiOperation(value = "用户收货")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("receive")
public ResultBody receive(@RequestParam Integer id, HttpServletRequest request) {
return leaseOrderService.receive(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "归还商品")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("giveBack")
public ResultBody giveBack(@RequestBody LeaseOrderRefundVO leaseOrderRefundVO, HttpServletRequest request) {
return leaseOrderService.giveBack(leaseOrderRefundVO, this.getCurrentAccount(request));
}
@ApiOperation(value = "平台确认归还")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("pfConfirmOrderWare")
public ResultBody pfConfirmOrderWare(HttpServletRequest request, @RequestBody LeaseOrderRefundVO param) {
return leaseOrderService.pfConfirmOrderWare(this.getCurrentAccount(request), param);
}
@ApiOperation(value = "订单状态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = TranStatusDicDTO.class)})
@GetMapping("statusList")
public ResultBody statusList() {
return leaseOrderService.statusList();
}
@ApiOperation(value = "用户删除订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("removeLeaseOrder")
public ResultBody removeLeaseOrder(@RequestParam Integer id) {
return leaseOrderService.removeLeaseOrder(id);
}
} }
...@@ -3,8 +3,13 @@ package com.mmc.oms.dao.lease; ...@@ -3,8 +3,13 @@ package com.mmc.oms.dao.lease;
import com.mmc.oms.entity.lease.LeaseOrderDO; import com.mmc.oms.entity.lease.LeaseOrderDO;
import com.mmc.oms.entity.lease.LeaseOrderExpressDO; import com.mmc.oms.entity.lease.LeaseOrderExpressDO;
import com.mmc.oms.entity.lease.LeaseRefundOrderDO; import com.mmc.oms.entity.lease.LeaseRefundOrderDO;
import com.mmc.oms.entity.transtatus.TranStatusDicDO;
import com.mmc.oms.entity.uav.UavOrderDO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* @Author LW * @Author LW
* @date 2023/9/21 16:48 * @date 2023/9/21 16:48
...@@ -23,4 +28,22 @@ public interface LeaseOrderDao { ...@@ -23,4 +28,22 @@ public interface LeaseOrderDao {
void updateUavOrderStatus(Integer id, Integer code); void updateUavOrderStatus(Integer id, Integer code);
void addLeaseRefundOrder(LeaseRefundOrderDO leaseRefundOrderDO); void addLeaseRefundOrder(LeaseRefundOrderDO leaseRefundOrderDO);
int countList(UavOrderQO uavOrderQO);
List<LeaseOrderDO> list(UavOrderQO uavOrderQO);
List<LeaseRefundOrderDO> getLeaseRefundOrder(List<Integer> ids);
UavOrderDO detailByNo(String orderNo);
void updateLeaseOrderExpress(LeaseOrderExpressDO leaseOrderExpressDO);
List<TranStatusDicDO> statusList();
void closeShowLeaseOrder(Integer id);
List<LeaseOrderExpressDO> listLeaseOrderExpress(List<Integer> expressIds);
void updateLeaseOrderProportion(Integer id, int proportion);
} }
...@@ -154,6 +154,10 @@ public class LeaseOrderDO implements Serializable { ...@@ -154,6 +154,10 @@ public class LeaseOrderDO implements Serializable {
private String modeOfDeliveryInfo; private String modeOfDeliveryInfo;
private BigDecimal shareCashPledge;
private BigDecimal salaryCashPledge;
public LeaseOrderDTO buildLeaseOrderDTO() { public LeaseOrderDTO buildLeaseOrderDTO() {
return LeaseOrderDTO.builder().id(id).orderNo(orderNo).statusCode(statusCode).userAccountId(userAccountId) return LeaseOrderDTO.builder().id(id).orderNo(orderNo).statusCode(statusCode).userAccountId(userAccountId)
.thirdBackUserAccountId(thirdBackUserAccountId).companyName(companyName).orderTotalAmount(orderTotalAmount) .thirdBackUserAccountId(thirdBackUserAccountId).companyName(companyName).orderTotalAmount(orderTotalAmount)
......
...@@ -2,6 +2,8 @@ package com.mmc.oms.entity.lease; ...@@ -2,6 +2,8 @@ package com.mmc.oms.entity.lease;
import com.mmc.oms.entity.mall.UserAddressDO; import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.model.dto.uav.UavOrderExpressDTO; import com.mmc.oms.model.dto.uav.UavOrderExpressDTO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -44,6 +46,10 @@ public class LeaseOrderExpressDO implements Serializable { ...@@ -44,6 +46,10 @@ public class LeaseOrderExpressDO implements Serializable {
* 收货详细地址 * 收货详细地址
*/ */
private String takeAddress; private String takeAddress;
private String returnExpNo;
private String returnExpCode;
private Date returnTime;
/** /**
* 发货时间 * 发货时间
*/ */
...@@ -68,6 +74,26 @@ public class LeaseOrderExpressDO implements Serializable { ...@@ -68,6 +74,26 @@ public class LeaseOrderExpressDO implements Serializable {
this.takeAddress = userAddressDO.getTakeAddress(); this.takeAddress = userAddressDO.getTakeAddress();
} }
public LeaseOrderExpressDO(UavOrderExpressVO param) {
this.id = param.getId();
this.leaseOrderId = param.getUavOrderId();
this.sendExpNo = param.getSendExpNo();
this.sendExpCode = param.getSendExpCode();
this.takeName = param.getTakeName();
this.takePhone = param.getTakePhone();
this.takeRegion = param.getTakeRegion();
this.takeAddress = param.getTakeAddress();
this.sendTime = new Date();
}
public LeaseOrderExpressDO(LeaseOrderRefundVO leaseOrderRefundVO) {
this.id = leaseOrderRefundVO.getId();
this.leaseOrderId = leaseOrderRefundVO.getOrderId();
this.returnExpNo = leaseOrderRefundVO.getExpressNum();
this.returnExpCode = leaseOrderRefundVO.getExpressCode();
this.receiveTime = new Date();
}
public UavOrderExpressDTO buildUavOrderExpressDTO() { public UavOrderExpressDTO buildUavOrderExpressDTO() {
return UavOrderExpressDTO.builder().id(this.id).uavOrderId(this.leaseOrderId).sendExpNo(this.sendExpNo).sendExpCode(this.sendExpCode).takeName(this.takeName) return UavOrderExpressDTO.builder().id(this.id).uavOrderId(this.leaseOrderId).sendExpNo(this.sendExpNo).sendExpCode(this.sendExpCode).takeName(this.takeName)
.takePhone(this.takePhone).takeAddress(this.takeAddress).takeRegion(this.takeRegion).receive(this.receive).receiveTime(this.receiveTime) .takePhone(this.takePhone).takeAddress(this.takeAddress).takeRegion(this.takeRegion).receive(this.receive).receiveTime(this.receiveTime)
......
package com.mmc.oms.entity.lease; package com.mmc.oms.entity.lease;
import com.mmc.oms.model.dto.lease.LeaseRefundOrderDTO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO; import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -44,12 +45,21 @@ public class LeaseRefundOrderDO implements Serializable { ...@@ -44,12 +45,21 @@ public class LeaseRefundOrderDO implements Serializable {
private Date updateTime; private Date updateTime;
private Integer leaseOrderExpressId;
private Integer type;
public LeaseRefundOrderDO(LeaseOrderRefundVO leaseOrderRefundVO) { public LeaseRefundOrderDO(LeaseOrderRefundVO leaseOrderRefundVO) {
this.leaseOrderId = leaseOrderRefundVO.getId(); this.leaseOrderId = leaseOrderRefundVO.getOrderId();
this.status = leaseOrderRefundVO.getStatus(); this.status = leaseOrderRefundVO.getStatus();
this.expressNum = leaseOrderRefundVO.getExpressNum();
this.file = leaseOrderRefundVO.getFile(); this.file = leaseOrderRefundVO.getFile();
this.reason = leaseOrderRefundVO.getReason(); this.reason = leaseOrderRefundVO.getReason();
} }
public LeaseRefundOrderDTO buildLeaseRefundOrderDTO() {
return LeaseRefundOrderDTO.builder().id(this.id).leaseOrderId(this.leaseOrderId)
.status(this.status).file(this.file).reason(this.reason)
.createTime(this.createTime).build();
}
} }
...@@ -6,12 +6,13 @@ package com.mmc.oms.enums; ...@@ -6,12 +6,13 @@ package com.mmc.oms.enums;
*/ */
public enum LeaseOrderStatus { public enum LeaseOrderStatus {
PLACED_AN_ORDER(100, "已下单", "待付款"), PLACED_AN_ORDER(100, "已下单", "待付款"),
PAID(200, "已付款", "发货"), PAID(200, "已付款", "发货"),
SHIPPED(300, "卖家已发货", "待买家收货"), SHIPPED(300, "卖家已发货", "待买家收货"),
TO_BE_RETURNED(400, "待归还", "待归还"), TO_BE_RETURNED(400, "待归还", "待归还"),
WAITING_MERCHANT_CONFIRM(500, "等待商家确认", "等待商家确认"), WAITING_MERCHANT_CONFIRM(500, "等待商家确认", "等待商家确认"),
COMPLETE_TRANSACTION(600, "交易完成", "交易完成"), REMAIN_TO_BE_EVALUATED(600, "待评价", "待评价"),
APPLY_REFUND(700, "申请退款", "退款中"), COMPLETE_TRANSACTION(700, "交易完成", "交易完成"),
APPLY_REFUND(800, "申请退款", "退款中"),
CLOSE(999, "订单关闭", "订单关闭"); CLOSE(999, "订单关闭", "订单关闭");
public Integer getCode() { public Integer getCode() {
......
package com.mmc.oms.enums;
/**
* @author 作者 lw
* @version 创建时间:2023年09月26日 下午10:57:12
* @explain 类说明
*/
public enum OrderType {
REC(1, "客户收货"), RETURN(2, "归还"), PFREC(3, "平台收货"), RETREAT(4, "申请退款");
OrderType(Integer code, String status) {
this.code = code;
this.status = status;
}
private Integer code;
private String status;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
...@@ -91,5 +91,8 @@ public class LeaseOrderDTO implements Serializable { ...@@ -91,5 +91,8 @@ public class LeaseOrderDTO implements Serializable {
private String skuImg; private String skuImg;
@ApiModelProperty("运费") @ApiModelProperty("运费")
private String modeOfDeliveryInfo; private String modeOfDeliveryInfo;
@ApiModelProperty("发货后申请退款")
private LeaseRefundOrderDTO leaseRefundOrder;
@ApiModelProperty("商户确认收货信息")
private LeaseRefundOrderDTO storeReceiveOrder;
} }
package com.mmc.oms.model.dto.lease;
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;
/**
* @Author LW
* @date 2023/9/25 14:19
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LeaseRefundOrderDTO implements Serializable {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("订单id")
private Integer leaseOrderId;
@ApiModelProperty("归还状态:0已归还 1无需归还")
private Integer status;
@ApiModelProperty("快递单号")
private String expressNum;
@ApiModelProperty("物流编号")
private String expressCode;
@ApiModelProperty("图片文件")
private String file;
@ApiModelProperty("退款原因")
private String reason;
@ApiModelProperty("创建时间")
private Date createTime;
}
...@@ -17,12 +17,13 @@ import java.io.Serializable; ...@@ -17,12 +17,13 @@ import java.io.Serializable;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.TranStatusDicDTO", description = "订单状态DTO")
public class TranStatusDicDTO implements Serializable { public class TranStatusDicDTO implements Serializable {
private static final long serialVersionUID = -5956006425413101797L; private static final long serialVersionUID = -5956006425413101797L;
@ApiModelProperty(value = "状态码") @ApiModelProperty(value = "状态码")
private String status; private String status;
@ApiModelProperty(value = "当前状态描述")
private String doing; private String doing;
@ApiModelProperty(value = "等待状态描述")
private String waiting; private String waiting;
private String leaseOrderStatus; private String leaseOrderStatus;
} }
...@@ -33,6 +33,10 @@ public class AddLeaseOrderVO implements Serializable { ...@@ -33,6 +33,10 @@ public class AddLeaseOrderVO implements Serializable {
private BigDecimal walletAmount; private BigDecimal walletAmount;
@ApiModelProperty(value = "抵扣云享金余额", hidden = true) @ApiModelProperty(value = "抵扣云享金余额", hidden = true)
private BigDecimal shareAmount; private BigDecimal shareAmount;
@ApiModelProperty(value = "云享金抵扣押金金额", hidden = true)
private BigDecimal shareCashPledgeAmount;
@ApiModelProperty(value = "余额抵扣押金金额", hidden = true)
private BigDecimal salaryCashPledgeAmount;
@ApiModelProperty(value = "其他方式支付额度", hidden = true) @ApiModelProperty(value = "其他方式支付额度", hidden = true)
private BigDecimal otherAmount; private BigDecimal otherAmount;
@ApiModelProperty(value = "租期", hidden = true) @ApiModelProperty(value = "租期", hidden = true)
......
...@@ -16,12 +16,18 @@ import java.io.Serializable; ...@@ -16,12 +16,18 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class LeaseOrderRefundVO implements Serializable { public class LeaseOrderRefundVO implements Serializable {
@ApiModelProperty("订单id") @ApiModelProperty("id")
private Integer id; private Integer id;
@ApiModelProperty("归还状态 0已归还 1无需归还") @ApiModelProperty("订单id")
private Integer orderId;
@ApiModelProperty("归还状态 0已归还 1无需归还(注:发货后申请退款需要传,归还商品的时候不需要)")
private Integer status; private Integer status;
@ApiModelProperty("商家确认商品是否破损 0:未破损 1:破损")
private Integer damage;
@ApiModelProperty("物流单号") @ApiModelProperty("物流单号")
private String expressNum; private String expressNum;
@ApiModelProperty(value = "物流编码")
private String expressCode;
@ApiModelProperty("图片文件") @ApiModelProperty("图片文件")
private String file; private String file;
@ApiModelProperty("原因") @ApiModelProperty("原因")
......
...@@ -9,6 +9,7 @@ import com.mmc.oms.common.util.TDateUtil; ...@@ -9,6 +9,7 @@ import com.mmc.oms.common.util.TDateUtil;
import com.mmc.oms.controller.demand.util.EmojiUtils; import com.mmc.oms.controller.demand.util.EmojiUtils;
import com.mmc.oms.dao.demand.DemandReleaseOrderDao; import com.mmc.oms.dao.demand.DemandReleaseOrderDao;
import com.mmc.oms.dao.demand.PublishServiceOrderDao; import com.mmc.oms.dao.demand.PublishServiceOrderDao;
import com.mmc.oms.dao.lease.LeaseOrderDao;
import com.mmc.oms.dao.topup.TopUpOrderDao; import com.mmc.oms.dao.topup.TopUpOrderDao;
import com.mmc.oms.dao.uav.UavOrderDao; import com.mmc.oms.dao.uav.UavOrderDao;
import com.mmc.oms.dao.uav.UavPayWxDao; import com.mmc.oms.dao.uav.UavPayWxDao;
...@@ -19,9 +20,7 @@ import com.mmc.oms.entity.demand.ServiceRequirementsDO; ...@@ -19,9 +20,7 @@ import com.mmc.oms.entity.demand.ServiceRequirementsDO;
import com.mmc.oms.entity.topup.TopUpOrderDO; import com.mmc.oms.entity.topup.TopUpOrderDO;
import com.mmc.oms.entity.uav.UavOrderDO; import com.mmc.oms.entity.uav.UavOrderDO;
import com.mmc.oms.entity.uav.UavPayWxDO; import com.mmc.oms.entity.uav.UavPayWxDO;
import com.mmc.oms.enums.UavOrderStatus;
import com.mmc.oms.feign.UserAppApi; import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.vo.demand.CommonPaymentVO; import com.mmc.oms.model.vo.demand.CommonPaymentVO;
import com.mmc.oms.model.vo.demand.DemandReleaseOrderVO; import com.mmc.oms.model.vo.demand.DemandReleaseOrderVO;
import com.mmc.oms.model.vo.demand.OrderRequestParamsVO; import com.mmc.oms.model.vo.demand.OrderRequestParamsVO;
...@@ -41,7 +40,6 @@ import org.springframework.web.client.RestTemplate; ...@@ -41,7 +40,6 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -88,6 +86,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -88,6 +86,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
@Autowired @Autowired
private UserAppApi userAppApi; private UserAppApi userAppApi;
@Autowired
private LeaseOrderDao leaseOrderDao;
@Override @Override
public ResultBody publish(DemandReleaseOrderVO demandReleaseOrderVO, HttpServletRequest request) { public ResultBody publish(DemandReleaseOrderVO demandReleaseOrderVO, HttpServletRequest request) {
DemandReleaseOrderDO requirementsInfoDO = new DemandReleaseOrderDO(demandReleaseOrderVO); DemandReleaseOrderDO requirementsInfoDO = new DemandReleaseOrderDO(demandReleaseOrderVO);
...@@ -102,11 +103,13 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -102,11 +103,13 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
switch (commonPaymentVO.getOrderPort().toString()) { switch (commonPaymentVO.getOrderPort().toString()) {
case "0": case "0":
return payUavOrder(commonPaymentVO, token); return payUavOrder(commonPaymentVO, token);
case "1":
return payLeaseOrder(commonPaymentVO, token);
case "3": case "3":
return orderPost(commonPaymentVO, token); return orderPost(commonPaymentVO, token);
case "4": case "4":
//发布服务需求支付 //发布服务需求支付
return publishServicePay(commonPaymentVO, token, userAccountId,request); return publishServicePay(commonPaymentVO, token, userAccountId, request);
case "5": case "5":
return topUpOrder(commonPaymentVO, token, userAccountId); return topUpOrder(commonPaymentVO, token, userAccountId);
default: default:
...@@ -114,9 +117,27 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -114,9 +117,27 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
} }
} }
private ResultBody payLeaseOrder(CommonPaymentVO commonPaymentVO, String token) {
OrderRequestParamsVO orderRequestParamsVO = new OrderRequestParamsVO();
orderRequestParamsVO.setOrderNo(commonPaymentVO.getOrderNumber());
orderRequestParamsVO.setAmount(commonPaymentVO.getAmount());
orderRequestParamsVO.setAttach("LEASE_ORDER");
orderRequestParamsVO.setOrderPort(commonPaymentVO.getOrderPort());
UavOrderDO leaseOrder = leaseOrderDao.detailByNo(commonPaymentVO.getOrderNumber());
if (leaseOrder.getOtherAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(commonPaymentVO.getAmount())) != 0) {
return ResultBody.error("支付金额不正确");
}
orderRequestParamsVO.setDescription("租赁订单" + leaseOrder.getOrderNo());
ResultBody resultBody = releaseOrder(orderRequestParamsVO, token);
if (!"200".equals(resultBody.getCode())) {
return ResultBody.error("调用微信支付方法失败");
}
return resultBody;
}
private ResultBody multiUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) { private ResultBody multiUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) {
UavPayWxDO uavPayWxDO = uavPayWxDao.getUavPayWx(orderRequestParamsVO.getOrderNo()); UavPayWxDO uavPayWxDO = uavPayWxDao.getUavPayWx(orderRequestParamsVO.getOrderNo());
if (uavPayWxDO.getAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) !=0 ){ if (uavPayWxDO.getAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) != 0) {
return ResultBody.error("发起支付金额不正确"); return ResultBody.error("发起支付金额不正确");
} }
orderRequestParamsVO.setDescription("商城多订单" + orderRequestParamsVO.getOrderNo()); orderRequestParamsVO.setDescription("商城多订单" + orderRequestParamsVO.getOrderNo());
...@@ -129,7 +150,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -129,7 +150,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
private ResultBody singleUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) { private ResultBody singleUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) {
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(orderRequestParamsVO.getOrderNo()); UavOrderDO uavOrderDO = uavOrderDao.detailByNo(orderRequestParamsVO.getOrderNo());
if (uavOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) !=0 ){ if (uavOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) != 0) {
return ResultBody.error("发起支付金额不正确"); return ResultBody.error("发起支付金额不正确");
} }
orderRequestParamsVO.setDescription("商城订单" + uavOrderDO.getOrderNo()); orderRequestParamsVO.setDescription("商城订单" + uavOrderDO.getOrderNo());
...@@ -149,7 +170,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -149,7 +170,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
// 购物车下单涉及多订单 // 购物车下单涉及多订单
if (commonPaymentVO.getOrderNumber().startsWith("m")) { if (commonPaymentVO.getOrderNumber().startsWith("m")) {
return multiUavOrderPay(orderRequestParamsVO, token); return multiUavOrderPay(orderRequestParamsVO, token);
}else { } else {
return singleUavOrderPay(orderRequestParamsVO, token); return singleUavOrderPay(orderRequestParamsVO, token);
} }
} }
...@@ -190,9 +211,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -190,9 +211,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
* @param userAccountId * @param userAccountId
* @return * @return
*/ */
private ResultBody publishServicePay(CommonPaymentVO commonPaymentVO, String token,Integer userAccountId, HttpServletRequest request) { private ResultBody publishServicePay(CommonPaymentVO commonPaymentVO, String token, Integer userAccountId, HttpServletRequest request) {
if ("4".equals(commonPaymentVO.getOrderPort().toString())){ if ("4".equals(commonPaymentVO.getOrderPort().toString())) {
try { try {
TimeUnit.SECONDS.sleep(1); TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) { } catch (InterruptedException e) {
...@@ -202,14 +223,14 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -202,14 +223,14 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
String json = stringRedisTemplate.opsForValue().get(orderNumber); String json = stringRedisTemplate.opsForValue().get(orderNumber);
GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class); GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class);
GetOrderNumberDO getOrderNumberDO = new GetOrderNumberDO(getOrderNumberDTO); GetOrderNumberDO getOrderNumberDO = new GetOrderNumberDO(getOrderNumberDTO);
if (getOrderNumberDTO.getRequirementsInfoId()!=null){ if (getOrderNumberDTO.getRequirementsInfoId() != null) {
int i = releaseOrderDao.selectOrderNumberDO(getOrderNumberDO.getRequirementsInfoId()); int i = releaseOrderDao.selectOrderNumberDO(getOrderNumberDO.getRequirementsInfoId());
if (i!=0){ if (i != 0) {
return ResultBody.error("当前需求已有人支付"); return ResultBody.error("当前需求已有人支付");
} }
ServiceRequirementsDO repertory = repertory(getOrderNumberDO.getRequirementsInfoId(), request); ServiceRequirementsDO repertory = repertory(getOrderNumberDO.getRequirementsInfoId(), request);
Integer repertory1 = repertory.getRepertory(); Integer repertory1 = repertory.getRepertory();
if (repertory1!=null && repertory1<=0 ){ if (repertory1 != null && repertory1 <= 0) {
return ResultBody.error("需求已被人抢走"); return ResultBody.error("需求已被人抢走");
} }
} }
...@@ -220,7 +241,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -220,7 +241,7 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
OrderRequestParamsVO orderRequestParamsVO = getOrderNumberDO.orderRequestParamsVO(); OrderRequestParamsVO orderRequestParamsVO = getOrderNumberDO.orderRequestParamsVO();
orderRequestParamsVO.setAmount(i); orderRequestParamsVO.setAmount(i);
ResultBody resultBody = releaseOrder(orderRequestParamsVO, token); ResultBody resultBody = releaseOrder(orderRequestParamsVO, token);
stringRedisTemplate.opsForValue().set(getOrderNumberDO.getPaymentOrderNumber()+getOrderNumberDO.getUserAccountId(), JsonUtil.parseObjToJson(getOrderNumberDO)); stringRedisTemplate.opsForValue().set(getOrderNumberDO.getPaymentOrderNumber() + getOrderNumberDO.getUserAccountId(), JsonUtil.parseObjToJson(getOrderNumberDO));
return resultBody; return resultBody;
} }
return ResultBody.success(); return ResultBody.success();
......
...@@ -6,6 +6,9 @@ import com.mmc.oms.model.dto.user.BaseAccountDTO; ...@@ -6,6 +6,9 @@ import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO; import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO; import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO; import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import javax.servlet.http.HttpServletRequest;
/** /**
* @Author LW * @Author LW
...@@ -21,4 +24,20 @@ public interface LeaseOrderService { ...@@ -21,4 +24,20 @@ public interface LeaseOrderService {
ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token); ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token);
ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount); ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount);
ResultBody<LeaseOrderDTO> listByUid(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount);
ResultBody pay(Integer id, BaseAccountDTO currentAccount, HttpServletRequest request);
ResultBody send(UavOrderExpressVO param);
ResultBody receive(Integer id, BaseAccountDTO currentAccount);
ResultBody statusList();
ResultBody removeLeaseOrder(Integer id);
ResultBody giveBack(LeaseOrderRefundVO leaseOrderRefundVO, BaseAccountDTO currentAccount);
ResultBody pfConfirmOrderWare(BaseAccountDTO currentAccount, LeaseOrderRefundVO param);
} }
package com.mmc.oms.service.lease.impl; package com.mmc.oms.service.lease.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.ResultEnum; import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.constant.UavOrderProportion;
import com.mmc.oms.common.json.JsonUtil; import com.mmc.oms.common.json.JsonUtil;
import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.common.util.CodeUtil; import com.mmc.oms.common.util.CodeUtil;
import com.mmc.oms.common.util.KdnExpressUtil; import com.mmc.oms.common.util.KdnExpressUtil;
...@@ -11,39 +14,49 @@ import com.mmc.oms.entity.lease.LeaseOrderDO; ...@@ -11,39 +14,49 @@ import com.mmc.oms.entity.lease.LeaseOrderDO;
import com.mmc.oms.entity.lease.LeaseOrderExpressDO; import com.mmc.oms.entity.lease.LeaseOrderExpressDO;
import com.mmc.oms.entity.lease.LeaseRefundOrderDO; import com.mmc.oms.entity.lease.LeaseRefundOrderDO;
import com.mmc.oms.entity.mall.UserAddressDO; import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.entity.transtatus.TranStatusDicDO;
import com.mmc.oms.enums.LeaseOrderStatus; import com.mmc.oms.enums.LeaseOrderStatus;
import com.mmc.oms.enums.LeaseTermInfo; import com.mmc.oms.enums.LeaseTermInfo;
import com.mmc.oms.enums.OrderType;
import com.mmc.oms.feign.PaymentAppApi; import com.mmc.oms.feign.PaymentAppApi;
import com.mmc.oms.feign.PmsAppApi; import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.feign.UserAppApi; import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.kdn.KdnExpDTO; import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO; import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import com.mmc.oms.model.dto.lease.LeaseRefundOrderDTO;
import com.mmc.oms.model.dto.order.ExpStationsDTO; import com.mmc.oms.model.dto.order.ExpStationsDTO;
import com.mmc.oms.model.dto.transtatus.TranStatusDicDTO;
import com.mmc.oms.model.dto.uav.PayWalletDTO; import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO; import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO; import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.UserAccountQO;
import com.mmc.oms.model.qo.uav.UavOrderQO; import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.ApplyRefundVO; import com.mmc.oms.model.vo.ApplyRefundVO;
import com.mmc.oms.model.vo.demand.CommonPaymentVO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO; import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseGoodsVO; import com.mmc.oms.model.vo.lease.LeaseGoodsVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO; import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.model.vo.lease.LeasePriceStockVO; import com.mmc.oms.model.vo.lease.LeasePriceStockVO;
import com.mmc.oms.model.vo.uav.GoodsResourcesVO; import com.mmc.oms.model.vo.uav.GoodsResourcesVO;
import com.mmc.oms.model.vo.uav.PayUavWalletVO; import com.mmc.oms.model.vo.uav.PayUavWalletVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.service.demand.DemandReleaseOrderService;
import com.mmc.oms.service.lease.LeaseOrderService; import com.mmc.oms.service.lease.LeaseOrderService;
import com.mmc.oms.service.uav.UavOrderService; import com.mmc.oms.service.uav.UavOrderService;
import com.mmc.oms.util.TDateUtil; import com.mmc.oms.util.TDateUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Collections; import java.util.*;
import java.util.Comparator; import java.util.function.Function;
import java.util.Date; import java.util.stream.Collectors;
/** /**
* @Author LW * @Author LW
...@@ -65,6 +78,8 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -65,6 +78,8 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
private UserAppApi userAppApi; private UserAppApi userAppApi;
@Resource @Resource
private PaymentAppApi paymentAppApi; private PaymentAppApi paymentAppApi;
@Resource
DemandReleaseOrderService demandReleaseOrderService;
@Override @Override
@Transactional @Transactional
...@@ -121,8 +136,16 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -121,8 +136,16 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
BigDecimal orderTotalAmount = param.getUnitPrice().multiply(BigDecimal.valueOf(param.getLeaseTerm())) BigDecimal orderTotalAmount = param.getUnitPrice().multiply(BigDecimal.valueOf(param.getLeaseTerm()))
.multiply(BigDecimal.valueOf(param.getWareNum())).add(param.getDeposit().multiply(BigDecimal.valueOf(param.getWareNum()))); .multiply(BigDecimal.valueOf(param.getWareNum())).add(param.getDeposit().multiply(BigDecimal.valueOf(param.getWareNum())));
BigDecimal otherAmount = BigDecimal.ZERO; BigDecimal otherAmount = BigDecimal.ZERO;
// 用来进行操作的总金额
otherAmount = otherAmount.add(orderTotalAmount); otherAmount = otherAmount.add(orderTotalAmount);
// 判断云享金或余额是否够抵扣 // 总押金金额
BigDecimal totalDeposit = param.getDeposit().multiply(BigDecimal.valueOf(param.getWareNum()));
// 用来操作的总押金
BigDecimal otherCashPledge = BigDecimal.ZERO;
otherCashPledge = otherCashPledge.add(totalDeposit);
// 云享金押金金额,余额押金金额
BigDecimal shareCashPledge = BigDecimal.ZERO;
BigDecimal salaryCashPledge = BigDecimal.ZERO;
// 校验云享金、钱包余额是否足够抵扣 // 校验云享金、钱包余额是否足够抵扣
BigDecimal shareAmount = BigDecimal.ZERO; BigDecimal shareAmount = BigDecimal.ZERO;
BigDecimal salaryAmount = BigDecimal.ZERO; BigDecimal salaryAmount = BigDecimal.ZERO;
...@@ -301,8 +324,9 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -301,8 +324,9 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
} }
@Override @Override
@Transactional
public ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token) { public ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token) {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(leaseOrderRefundVO.getId()); LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(leaseOrderRefundVO.getOrderId());
if (leaseOrderDO == null) { if (leaseOrderDO == null) {
return ResultBody.error("订单信息不存在!"); return ResultBody.error("订单信息不存在!");
} }
...@@ -312,11 +336,22 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -312,11 +336,22 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
return ResultBody.error("当前状态不可申请退款"); return ResultBody.error("当前状态不可申请退款");
} }
// 判断商品是否需要归还 // 判断商品是否需要归还
if (leaseOrderRefundVO.getStatus().equals(0) && leaseOrderRefundVO.getExpressNum() == null) { if (leaseOrderRefundVO.getStatus().equals(0)) {
return ResultBody.error("请填充物流编号"); if (leaseOrderRefundVO.getExpressCode() == null || leaseOrderRefundVO.getExpressNum() == null) {
return ResultBody.error("请完善物流信息");
}
} }
// 插入退货地址信息
LeaseOrderExpressDO leaseOrderExpressDO = new LeaseOrderExpressDO();
leaseOrderExpressDO.setLeaseOrderId(leaseOrderRefundVO.getOrderId());
leaseOrderExpressDO.setReturnExpCode(leaseOrderRefundVO.getExpressCode());
leaseOrderExpressDO.setReturnExpNo(leaseOrderRefundVO.getExpressNum());
leaseOrderExpressDO.setReturnTime(new Date());
leaseOrderDao.addAddress(leaseOrderExpressDO);
// 插入退款订单信息 // 插入退款订单信息
LeaseRefundOrderDO leaseRefundOrderDO = new LeaseRefundOrderDO(leaseOrderRefundVO); LeaseRefundOrderDO leaseRefundOrderDO = new LeaseRefundOrderDO(leaseOrderRefundVO);
leaseRefundOrderDO.setLeaseOrderExpressId(leaseOrderExpressDO.getId());
leaseRefundOrderDO.setType(OrderType.RETREAT.getCode());
leaseOrderDao.addLeaseRefundOrder(leaseRefundOrderDO); leaseOrderDao.addLeaseRefundOrder(leaseRefundOrderDO);
// 修改订单状态 // 修改订单状态
leaseOrderDao.updateUavOrderStatus(leaseOrderRefundVO.getStatus(), LeaseOrderStatus.APPLY_REFUND.getCode()); leaseOrderDao.updateUavOrderStatus(leaseOrderRefundVO.getStatus(), LeaseOrderStatus.APPLY_REFUND.getCode());
...@@ -348,7 +383,7 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -348,7 +383,7 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
} }
} }
// 修改订单状态 // 修改订单状态
this.updateLeaseOrderStatus(leaseOrderRefundVO.getId(), LeaseOrderStatus.CLOSE); this.updateLeaseOrderStatus(leaseOrderRefundVO.getOrderId(), LeaseOrderStatus.CLOSE);
return ResultBody.success(); return ResultBody.success();
} }
} }
...@@ -360,6 +395,236 @@ public class LeaseOrderServiceImpl implements LeaseOrderService { ...@@ -360,6 +395,236 @@ public class LeaseOrderServiceImpl implements LeaseOrderService {
@Override @Override
public ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) { public ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) {
return null; if (!currentAccount.getRoleInfo().getSuperAdmin().equals(1)) {
uavOrderQO.setThirdBackUserAccountId(currentAccount.getUserAccountId());
}
int count = leaseOrderDao.countList(uavOrderQO);
if (count == 0) {
return ResultBody.success(PageResult.buildPage(uavOrderQO.getPageNo(), uavOrderQO.getPageSize(), count));
}
Integer pageNo = uavOrderQO.getPageNo();
uavOrderQO.buildCurrentPage();
List<LeaseOrderDO> leaseOrderDOS = leaseOrderDao.list(uavOrderQO);
Map<Integer, LeaseOrderDTO> leaseOrderDTOMap = new HashMap<>();
List<Integer> ids = new ArrayList<>();
List<Integer> userIds = new ArrayList<>();
for (LeaseOrderDO leaseOrderDO : leaseOrderDOS) {
LeaseOrderDTO leaseOrderDTO = leaseOrderDO.buildLeaseOrderDTO();
leaseOrderDTOMap.put(leaseOrderDO.getId(), leaseOrderDTO);
if (leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.APPLY_REFUND.getCode()) || leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.WAITING_MERCHANT_CONFIRM.getCode())) {
ids.add(leaseOrderDO.getId());
}
userIds.add(leaseOrderDTO.getUserAccountId());
}
buildRefundOrder(leaseOrderDTOMap, ids);
UserAccountQO userAccountQO = new UserAccountQO();
userAccountQO.setUserIds(userIds);
List<UserAccountSimpleDTO> userDTOS = userAppApi.feignListAppUserAccount(userAccountQO, currentAccount.getToken());
if (CollectionUtils.isNotEmpty(userDTOS)) {
Map<Integer, UserAccountSimpleDTO> userDTOMap = userDTOS.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, user -> user, (k1, k2) -> k2));
for (LeaseOrderDTO leaseOrderDTO : leaseOrderDTOMap.values()) {
UserAccountSimpleDTO user = userDTOMap.get(leaseOrderDTO.getUserAccountId());
if (user != null) {
leaseOrderDTO.setPhoneNum(user.getPhoneNum());
leaseOrderDTO.setNickname(user.getNickName());
leaseOrderDTO.setUserName(user.getUserName());
}
}
}
return ResultBody.success(PageResult.buildPage(pageNo, uavOrderQO.getPageSize(), count, new ArrayList<>(leaseOrderDTOMap.values())));
}
@Override
public ResultBody<LeaseOrderDTO> listByUid(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) {
uavOrderQO.setUserAccountId(currentAccount.getUserAccountId());
uavOrderQO.setShowUserPort(1);
int count = leaseOrderDao.countList(uavOrderQO);
if (count == 0) {
return ResultBody.success(PageResult.buildPage(uavOrderQO.getPageNo(), uavOrderQO.getPageSize(), count));
}
Integer pageNo = uavOrderQO.getPageNo();
uavOrderQO.buildCurrentPage();
List<LeaseOrderDO> leaseOrderDOS = leaseOrderDao.list(uavOrderQO);
Map<Integer, LeaseOrderDTO> leaseOrderDTOMap = new HashMap<>();
List<Integer> ids = new ArrayList<>();
for (LeaseOrderDO leaseOrderDO : leaseOrderDOS) {
LeaseOrderDTO leaseOrderDTO = leaseOrderDO.buildLeaseOrderDTO();
leaseOrderDTOMap.put(leaseOrderDO.getId(), leaseOrderDTO);
if (leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.APPLY_REFUND.getCode())) {
ids.add(leaseOrderDO.getId());
}
}
buildRefundOrder(leaseOrderDTOMap, ids);
return ResultBody.success(PageResult.buildPage(pageNo, uavOrderQO.getPageSize(), count, new ArrayList<>(leaseOrderDTOMap.values())));
}
private void buildRefundOrder(Map<Integer, LeaseOrderDTO> leaseOrderDTOMap, List<Integer> ids) {
if (ids.size() > 0) {
List<LeaseRefundOrderDO> leaseRefundOrderDO = leaseOrderDao.getLeaseRefundOrder(ids);
List<Integer> expressIds = leaseRefundOrderDO.stream().map(LeaseRefundOrderDO::getLeaseOrderExpressId).collect(Collectors.toList());
List<LeaseOrderExpressDO> expressDOS = leaseOrderDao.listLeaseOrderExpress(expressIds);
Map<Integer, LeaseOrderExpressDO> expressDOMap = expressDOS.stream().collect(Collectors.toMap(LeaseOrderExpressDO::getId, Function.identity()));
for (LeaseRefundOrderDO refundOrderDO : leaseRefundOrderDO) {
LeaseRefundOrderDTO refundOrderDTO = refundOrderDO.buildLeaseRefundOrderDTO();
LeaseOrderExpressDO expressDO = expressDOMap.get(refundOrderDO.getLeaseOrderExpressId());
if (expressDO != null) {
refundOrderDTO.setExpressCode(expressDO.getReturnExpCode());
refundOrderDTO.setExpressNum(expressDO.getReturnExpNo());
}
LeaseOrderDTO correspondingLeaseOrderDTO = leaseOrderDTOMap.get(refundOrderDTO.getLeaseOrderId());
if (correspondingLeaseOrderDTO != null) {
if (refundOrderDO.getType().equals(OrderType.RETREAT.getCode())) {
correspondingLeaseOrderDTO.setLeaseRefundOrder(refundOrderDTO);
} else {
correspondingLeaseOrderDTO.setStoreReceiveOrder(refundOrderDTO);
}
}
}
}
}
@Override
public ResultBody pay(Integer id, BaseAccountDTO currentAccount, HttpServletRequest request) {
// 发起微信支付
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(id);
if (!leaseOrderDO.getStatusCode().toString().equals(LeaseOrderStatus.PLACED_AN_ORDER.getCode().toString())) {
return ResultBody.error("操作有误,请重试!");
}
CommonPaymentVO commonPaymentVO = new CommonPaymentVO();
int shouldPay = leaseOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).intValue();
if (shouldPay <= 0) {
return ResultBody.success("已支付完成");
}
commonPaymentVO.setAmount(shouldPay);
commonPaymentVO.setDescription(leaseOrderDO.getOrderName());
commonPaymentVO.setOrderNumber(leaseOrderDO.getOrderNo());
commonPaymentVO.setOrderPort(1);
ResultBody resultBody = demandReleaseOrderService.orderPayment(commonPaymentVO, request, currentAccount.getUserAccountId());
return resultBody;
}
@Override
public ResultBody send(UavOrderExpressVO param) {
// 修改订单状态
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(param.getUavOrderId());
if (!leaseOrderDO.getStatusCode().toString().equals(LeaseOrderStatus.PAID.getCode().toString())) {
return ResultBody.error("状态流程有误,请重试!");
}
this.updateLeaseOrderStatus(param.getUavOrderId(), LeaseOrderStatus.SHIPPED);
// 修改收货信息
LeaseOrderExpressDO leaseOrderExpressDO = new LeaseOrderExpressDO(param);
leaseOrderDao.updateLeaseOrderExpress(leaseOrderExpressDO);
return ResultBody.success();
}
@Override
public ResultBody receive(Integer id, BaseAccountDTO currentAccount) {
// 修改订单状态
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(id);
if (!leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.SHIPPED.getCode())) {
return ResultBody.error("状态流程有误,请重试!");
}
// 修改收货信息
LeaseOrderExpressDO leaseOrderExpress = leaseOrderDao.getLeaseOrderExpress(id);
leaseOrderExpress.setReceive(1);
leaseOrderExpress.setReceiveTime(new Date());
leaseOrderDao.updateLeaseOrderExpress(leaseOrderExpress);
this.updateLeaseOrderStatus(id, LeaseOrderStatus.TO_BE_RETURNED);
return ResultBody.success();
}
@Override
public ResultBody statusList() {
List<TranStatusDicDO> statusDOS = leaseOrderDao.statusList();
List<TranStatusDicDTO> uavOrderStatusDTOS = statusDOS.stream().map(TranStatusDicDO::buildTranStatusDicDTO).collect(Collectors.toList());
return ResultBody.success(uavOrderStatusDTOS);
}
@Override
public ResultBody removeLeaseOrder(Integer id) {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(id);
log.info("leaseOrderDO:{}", JSONObject.toJSONString(leaseOrderDO));
if (leaseOrderDO.getStatusCode().compareTo(LeaseOrderStatus.COMPLETE_TRANSACTION.getCode()) < 0) {
return ResultBody.error("该订单状态不可删除!");
}
leaseOrderDao.closeShowLeaseOrder(id);
return ResultBody.success();
}
@Override
public ResultBody giveBack(LeaseOrderRefundVO leaseOrderRefundVO, BaseAccountDTO currentAccount) {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(leaseOrderRefundVO.getOrderId());
log.info("leaseOrderDO:{}", JSONObject.toJSONString(leaseOrderDO));
if (!leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.TO_BE_RETURNED.getCode())) {
return ResultBody.error("状态流程有误,请重试!");
}
LeaseOrderExpressDO leaseOrderExpressDO = new LeaseOrderExpressDO(leaseOrderRefundVO);
leaseOrderDao.updateLeaseOrderExpress(leaseOrderExpressDO);
this.updateLeaseOrderStatus(leaseOrderRefundVO.getOrderId(), LeaseOrderStatus.WAITING_MERCHANT_CONFIRM);
return ResultBody.success();
}
@Override
@Transactional
public ResultBody pfConfirmOrderWare(BaseAccountDTO currentAccount, LeaseOrderRefundVO param) {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(param.getOrderId());
log.info("leaseOrderDO:{}", JSONObject.toJSONString(leaseOrderDO));
if (!leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.WAITING_MERCHANT_CONFIRM.getCode())) {
return ResultBody.error("状态流程有误,请重试!");
}
if (param.getDamage().equals(0)) {
// 解冻用户钱包金额
if (leaseOrderDO.getShareAmount().compareTo(BigDecimal.ZERO) > 0 || leaseOrderDO.getSalaryAmount().compareTo(BigDecimal.ZERO) > 0) {
PayUavWalletVO userPayUavWalletVO = new PayUavWalletVO();
userPayUavWalletVO.setRemark("租赁订单金额解冻");
userPayUavWalletVO.setCashAmount(leaseOrderDO.getShareAmount());
userPayUavWalletVO.setSalaryAmount(leaseOrderDO.getSalaryAmount());
userPayUavWalletVO.setUserAccountId(leaseOrderDO.getUserAccountId());
userPayUavWalletVO.setOrderStatus(999);
ResultBody resultBody = userAppApi.feignPayUavWallet(userPayUavWalletVO, currentAccount.getToken());
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return resultBody;
}
}
BigDecimal thirdAmount = leaseOrderDO.getOrderTotalAmount().multiply(
BigDecimal.valueOf(100).subtract(UavOrderProportion.PROPORTION).divide(BigDecimal.valueOf(100)));
PayUavWalletVO payUavWalletVO = new PayUavWalletVO();
payUavWalletVO.setSalaryAmount(thirdAmount);
payUavWalletVO.setCashAmount(BigDecimal.ZERO);
payUavWalletVO.setRemark("租赁订单收入,订单编号" + leaseOrderDO.getOrderNo());
payUavWalletVO.setOrderStatus(1500);
// 拿到商家管理员的用户id
ResultBody managerRes = userAppApi.getManagerIdByBackUserId(leaseOrderDO.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());
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return resultBody;
}
leaseOrderDao.updateLeaseOrderProportion(leaseOrderDO.getId(), UavOrderProportion.PROPORTION.intValue());
this.updateLeaseOrderStatus(param.getOrderId(), LeaseOrderStatus.REMAIN_TO_BE_EVALUATED);
return ResultBody.success();
} else {
// todo 进行相应赔偿
return ResultBody.success();
}
} }
} }
...@@ -22,27 +22,92 @@ ...@@ -22,27 +22,92 @@
ware_num, ware_num,
deposit, deposit,
start_date, start_date,
end_date) share_cash_pledge,
salary_cash_pledge,
end_date,
sku)
values (#{orderNo}, #{statusCode}, #{userAccountId}, #{leaseGoodsId}, #{companyName}, #{thirdBackUserAccountId}, values (#{orderNo}, #{statusCode}, #{userAccountId}, #{leaseGoodsId}, #{companyName}, #{thirdBackUserAccountId},
#{orderName}, #{skuImg}, #{orderTotalAmount}, #{salaryAmount}, #{shareAmount}, #{otherAmount}, #{orderName}, #{skuImg}, #{orderTotalAmount}, #{salaryAmount}, #{shareAmount}, #{otherAmount},
#{userAddressId}, #{userAddressId},
#{payTime}, #{userRemark}, #{unitPrice}, #{wareNum}, #{deposit}, #{startDate}, #{endDate}); #{payTime}, #{userRemark}, #{unitPrice}, #{wareNum}, #{deposit}, #{startDate}, #{shareCashPledge},
#{salaryCashPledge}, #{endDate}, #{sku});
</insert> </insert>
<insert id="addAddress"> <insert id="addAddress" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.oms.entity.lease.LeaseOrderExpressDO">
insert into lease_order_express(lease_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, insert into lease_order_express(lease_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region,
take_address, create_time) take_address, create_time, return_exp_no, return_exp_code, return_time)
values (#{leaseOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress}, values (#{leaseOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},
NOW()) NOW(), #{returnExpNo}, #{returnExpCode}, #{returnTime})
</insert> </insert>
<insert id="addLeaseRefundOrder"> <insert id="addLeaseRefundOrder" parameterType="com.mmc.oms.entity.lease.LeaseRefundOrderDO" useGeneratedKeys="true"
insert into lease_order_id,status,express_num,file,reason keyProperty="id">
values (#{leaseOrderId}, #{status}, #{expressNum}, #{file}, #{reason}) insert into lease_refund_order(lease_order_id, status, file, reason, type, lease_order_express_id)
values (#{leaseOrderId}, #{status}, #{file}, #{reason}, #{type}, #{leaseOrderExpressId})
</insert> </insert>
<update id="updateUavOrderStatus"> <update id="updateUavOrderStatus">
update lease_order update lease_order
set status_code = #{code} set status_code = #{code}
where id = #{id} where id = #{id}
</update> </update>
<update id="updateLeaseOrderExpress">
update lease_order_express
<set>
<if test="sendExpNo != null">
send_exp_no = #{sendExpNo},
</if>
<if test="sendExpCode != null">
send_exp_code = #{sendExpCode},
</if>
<if test="takeName != null">
take_name = #{takeName},
</if>
<if test="takePhone != null">
take_phone = #{takePhone},
</if>
<if test="takeRegion != null">
take_region = #{takeRegion},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
<if test="sendTime != null">
send_time = #{sendTime},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
<if test="receive != null">
is_receive = #{receive},
</if>
<if test="receiveTime != null">
receive_time = #{receiveTime},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
<if test="returnExpNo != null">
return_exp_no = #{returnExpNo},
</if>
<if test="returnExpCode != null">
return_exp_code = #{returnExpCode},
</if>
<if test="returnTime != null">
return_time = #{returnTime},
</if>
</set>
where
id = #{id}
</update>
<update id="closeShowLeaseOrder">
update lease_order
set show_user_port = 0
where id = #{id}
</update>
<update id="updateLeaseOrderProportion">
update lease_order
set proportion = #{proportion}
where id = #{id}
</update>
<sql id="lease_order_column"> <sql id="lease_order_column">
id id
...@@ -60,8 +125,8 @@ proportion,show_user_port,create_time,update_time,unit_price,ware_num,deposit,st ...@@ -60,8 +125,8 @@ proportion,show_user_port,create_time,update_time,unit_price,ware_num,deposit,st
<sql id="lease_order_express_column"> <sql id="lease_order_express_column">
id id
, lease_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, send_time, ,lease_order_id,send_exp_no,send_exp_code,take_name,take_phone,take_region,take_address,send_time,is_receive
is_receive as receive, receive_time, update_time, create_time ,receive_time,return_exp_no,return_exp_code,return_time,update_time,create_time
</sql> </sql>
<select id="getLeaseOrderExpress" resultType="com.mmc.oms.entity.lease.LeaseOrderExpressDO"> <select id="getLeaseOrderExpress" resultType="com.mmc.oms.entity.lease.LeaseOrderExpressDO">
select select
...@@ -69,4 +134,99 @@ proportion,show_user_port,create_time,update_time,unit_price,ware_num,deposit,st ...@@ -69,4 +134,99 @@ proportion,show_user_port,create_time,update_time,unit_price,ware_num,deposit,st
from lease_order_express from lease_order_express
where lease_order_id = #{id} where lease_order_id = #{id}
</select> </select>
<select id="countList" resultType="java.lang.Integer">
select count(*) from lease_order lo
where 1 = 1
<if test="keyword != null">
and order_no = #{keyword}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
<if test="statusCode != null">
and status_code = #{statusCode}
</if>
<if test="thirdBackUserAccountId != null">
and third_back_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="startTime != null">
and create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= create_time
</if>
<if test="showUserPort != null">
and show_user_port = #{showUserPort}
</if>
</select>
<select id="list" resultType="com.mmc.oms.entity.lease.LeaseOrderDO">
SELECT
<include refid="lease_order_column"/>
FROM
lease_order lo
WHERE
1 = 1
<if test="keyword != null">
and lo.order_no = #{keyword}
</if>
<if test="uid != null">
and lo.user_account_id = #{uid}
</if>
<if test="userAccountId != null">
and lo.user_account_id = #{userAccountId}
</if>
<if test="statusCode != null">
and lo.status_code = #{statusCode}
</if>
<if test="thirdBackUserAccountId != null">
and lo.third_back_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="startTime != null">
and lo.create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= lo.create_time
</if>
<if test="showUserPort != null">
and show_user_port = #{showUserPort}
</if>
order by lo.id desc
limit #{pageNo}, #{pageSize}
</select>
<sql id="lease_refund_order_column">
id
,lease_order_express_id,lease_order_id,status,type,file,reason,create_time
</sql>
<select id="getLeaseRefundOrder" resultType="com.mmc.oms.entity.lease.LeaseRefundOrderDO">
select
<include refid="lease_refund_order_column"/>
from lease_refund_order
<where>
<foreach collection="list" item="item" open="and lease_order_id in(" separator="," close=")">
lease_order_id = #{item}
</foreach>
</where>
</select>
<select id="detailByNo" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select
<include refid="lease_order_column"/>
from lease_order
where order_no = #{orderNo}
</select>
<select id="statusList" resultType="com.mmc.oms.entity.transtatus.TranStatusDicDO">
select t.id, t.`status`, t.doing, t.waiting
from tran_status_dic t
order by t.sort asc
</select>
<select id="listLeaseOrderExpress" resultType="com.mmc.oms.entity.lease.LeaseOrderExpressDO">
select
<include refid="lease_order_express_column"/>
from lease_order_express
<where>
<foreach collection="list" item="item" open="and id in(" separator="," close=")">
id = #{item}
</foreach>
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论