提交 52629640 作者: xiaowang

Merge branch 'develop'

...@@ -14,4 +14,4 @@ patches: ...@@ -14,4 +14,4 @@ patches:
images: images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG - name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/oms newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/oms
newTag: 62d5ba1ec80b8f48768cc6453fedc8e3fb12f95c newTag: 704f07092d111117a1d78f6ded71276115f3ba04
...@@ -3,8 +3,10 @@ package com.mmc.oms; ...@@ -3,8 +3,10 @@ package com.mmc.oms;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableScheduling
@EnableFeignClients(basePackages = "com.mmc.oms.feign") @EnableFeignClients(basePackages = "com.mmc.oms.feign")
public class OmsApplication { public class OmsApplication {
......
package com.mmc.oms.common.util; package com.mmc.oms.common.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* @Author small * @Author small
...@@ -236,6 +239,14 @@ public class CodeUtil { ...@@ -236,6 +239,14 @@ public class CodeUtil {
return sb.toString(); return sb.toString();
} }
public static String multiUavOrderPayCode() {
StringBuffer sb = new StringBuffer();
sb.append("m");
sb.append(TDateUtil.getCurrentDateByType("yyyyMMddHHmmss"));
sb.append(CodeUtil.getRandomNum(4));
return sb.toString();
}
/** /**
* 活动编号 * 活动编号
*/ */
...@@ -243,4 +254,14 @@ public class CodeUtil { ...@@ -243,4 +254,14 @@ public class CodeUtil {
return "AC" + CodeUtil.getRandomNum(5); return "AC" + CodeUtil.getRandomNum(5);
} }
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
private static final AtomicInteger counter = new AtomicInteger(0);
public static String generateOrderId() {
Date now = new Date();
String dateString = sdf.format(now);
int count = counter.incrementAndGet();
return "ORD" + dateString + String.format("%04d", count);
}
} }
package com.mmc.oms.controller.data;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.data.OrderReportDTO;
import com.mmc.oms.service.data.OrderReportService;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author LW
* @date 2023/9/16 17:49
* 概要:
*/
@Api(tags = "云享飞加盟入驻及商品sku看板数据")
@RequestMapping("/product/report")
@RestController
public class OrderReportController {
@Autowired
private OrderReportService orderReportService;
@ApiOperation(value = "获取用户报表数据")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = OrderReportDTO.class)})
@GetMapping("/getOrderReportData")
public ResultBody<OrderReportDTO> getOrderReportData() {
return orderReportService.getOrderReportData();
}
}
package com.mmc.oms.controller.lease;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.service.lease.LeaseOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @author: lw
* @Date: 2023/9/21 16:29
*/
@Api(tags = {"最新版--租赁订单接口"})
@RestController
@RequestMapping("/lease/order/")
public class LeaseOrderController extends BaseController {
@Resource
private LeaseOrderService leaseOrderService;
@ApiOperation(value = "提交订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = LeaseOrderDTO.class)})
@PostMapping("addLeaseOrder")
public ResultBody<LeaseOrderDTO> addLeaseOrder(@RequestBody AddLeaseOrderVO param, HttpServletRequest request) {
return leaseOrderService.addLeaseOrder(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "订单详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = LeaseOrderDTO.class)})
@GetMapping("detail")
public ResultBody<LeaseOrderDTO> detail(@RequestParam Integer id, HttpServletRequest request) throws Exception {
return leaseOrderService.detail(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "买家申请退款(取消订单)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("close")
public ResultBody close(@RequestBody LeaseOrderRefundVO leaseOrderRefundVO, HttpServletRequest request) {
return leaseOrderService.close(leaseOrderRefundVO, this.getCurrentAccount(request).getToken());
}
@ApiOperation(value = "后台订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = LeaseOrderDTO.class)})
@PostMapping("list")
public ResultBody<LeaseOrderDTO> list(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) {
return leaseOrderService.list(uavOrderQO, this.getCurrentAccount(request));
}
}
...@@ -2,6 +2,7 @@ package com.mmc.oms.controller.uav; ...@@ -2,6 +2,7 @@ package com.mmc.oms.controller.uav;
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.feign.UserAppApi;
import com.mmc.oms.model.dto.uav.UavCartCompanyDTO; import com.mmc.oms.model.dto.uav.UavCartCompanyDTO;
import com.mmc.oms.model.dto.uav.UavCartDTO; import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.dto.uav.UavOrderDTO; import com.mmc.oms.model.dto.uav.UavOrderDTO;
...@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
......
...@@ -3,9 +3,7 @@ package com.mmc.oms.controller.uav; ...@@ -3,9 +3,7 @@ package com.mmc.oms.controller.uav;
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.ContractInfoDTO; import com.mmc.oms.model.dto.ContractInfoDTO;
import com.mmc.oms.model.dto.uav.UavCartCompanyDTO; import com.mmc.oms.model.dto.uav.*;
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.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.uav.*; import com.mmc.oms.model.vo.uav.*;
import com.mmc.oms.service.uav.UavOrderService; import com.mmc.oms.service.uav.UavOrderService;
...@@ -38,9 +36,9 @@ public class UavOrderController extends BaseController { ...@@ -38,9 +36,9 @@ public class UavOrderController extends BaseController {
} }
@ApiOperation(value = "提交订单-购物车") @ApiOperation(value = "提交订单-购物车")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = MultiUavOrderDTO.class)})
@PostMapping("addOrderByCart") @PostMapping("addOrderByCart")
public ResultBody<UavOrderDTO> addOrderByCart(@RequestBody AddUavOrderByCartQO orderByCartQO, public ResultBody<MultiUavOrderDTO> addOrderByCart(@RequestBody AddUavOrderByCartQO orderByCartQO,
HttpServletRequest request) { HttpServletRequest request) {
return uavOrderService.addOrderByCart(orderByCartQO, this.getCurrentAccount(request)); return uavOrderService.addOrderByCart(orderByCartQO, this.getCurrentAccount(request));
} }
...@@ -143,6 +141,13 @@ public class UavOrderController extends BaseController { ...@@ -143,6 +141,13 @@ public class UavOrderController extends BaseController {
return uavOrderService.removeUavOrder(id); return uavOrderService.removeUavOrder(id);
} }
@ApiOperation(value = "商品评价")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderRemarkDTO.class)})
@GetMapping("listGoodsRemark")
public List<UavOrderRemarkDTO> listGoodsRemark(@RequestParam Integer remarkType, @RequestParam Integer goodsId) {
return uavOrderService.listGoodsRemark(remarkType, goodsId);
}
// 设置订单抽成比例 // 设置订单抽成比例
// 微信完成回调-修改订单状态 // 微信完成回调-修改订单状态
......
package com.mmc.oms.dao; package com.mmc.oms.dao;
import com.mmc.oms.entity.mall.UserAddressDO; import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.entity.uav.UavOrderExpressDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
......
package com.mmc.oms.dao.data;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author LW
* @date 2023/9/19 10:06
* 概要:
*/
@Mapper
public interface OrderReportDao {
}
package com.mmc.oms.dao.lease;
import com.mmc.oms.entity.lease.LeaseOrderDO;
import com.mmc.oms.entity.lease.LeaseOrderExpressDO;
import com.mmc.oms.entity.lease.LeaseRefundOrderDO;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author LW
* @date 2023/9/21 16:48
* 概要:
*/
@Mapper
public interface LeaseOrderDao {
void addOrder(LeaseOrderDO leaseOrderDO);
void addAddress(LeaseOrderExpressDO leaseOrderExpressDO);
LeaseOrderDO detail(Integer id);
LeaseOrderExpressDO getLeaseOrderExpress(Integer id);
void updateUavOrderStatus(Integer id, Integer code);
void addLeaseRefundOrder(LeaseRefundOrderDO leaseRefundOrderDO);
}
...@@ -4,6 +4,7 @@ import com.mmc.oms.entity.uav.*; ...@@ -4,6 +4,7 @@ import com.mmc.oms.entity.uav.*;
import com.mmc.oms.model.qo.uav.UavOrderQO; import com.mmc.oms.model.qo.uav.UavOrderQO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -42,11 +43,21 @@ public interface UavOrderDao { ...@@ -42,11 +43,21 @@ public interface UavOrderDao {
void checkPay(UavOrderPayDO uavOrderPayDO); void checkPay(UavOrderPayDO uavOrderPayDO);
void addRemarkOrder(UavOrderRemarkDO uavOrderRemarkDO); void addRemarkOrder(List<UavOrderRemarkDO> uavOrderRemarkDOS);
UavOrderPayDO getUavOrderPayById(Integer id); UavOrderPayDO getUavOrderPayById(Integer id);
void updateUavOrderProportion(Integer id, Integer proportion); void updateUavOrderProportion(Integer id, Integer proportion);
void closeShowUavOrder(Integer id); void closeShowUavOrder(Integer id);
void batchAddOrder(List<UavOrderDO> orders);
int getOrderCount();
BigDecimal getSaleOrderGMV();
List<UavOrderRemarkDO> listGoodsRemark(Integer remarkType, Integer goodsId);
void updateUavOrderRemarkStatus(Integer id);
} }
...@@ -18,4 +18,6 @@ public interface UavOrderExpressDao { ...@@ -18,4 +18,6 @@ public interface UavOrderExpressDao {
int updateUavOrderExpressDO(UavOrderExpressDO uavOrderExpressDO); int updateUavOrderExpressDO(UavOrderExpressDO uavOrderExpressDO);
List<UavOrderExpressDO> listNoReceive(); List<UavOrderExpressDO> listNoReceive();
void batchAddOrderExpress(List<UavOrderExpressDO> expressDOS);
} }
package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavPayWxDO;
import com.mmc.oms.entity.uav.UavPayWxSubDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/21 19:36
*/
@Mapper
public interface UavPayWxDao {
UavPayWxDO getUavPayWx(String payNo);
void addUavPayWx(UavPayWxDO uavPayWx);
void batchAddUavPayWxSub(List<UavPayWxSubDO> payWxSubDOS);
List<UavPayWxSubDO> listUavPayWxSub(Integer uavPayWxId);
void finishUavPayWx(String orderNo, String tradeState);
}
package com.mmc.oms.entity.lease;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* (LeaseOrderDO)实体类
*
* @author makejava
* @since 2023-09-21 16:59:10
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaseOrderDO implements Serializable {
private static final long serialVersionUID = -58305538180098964L;
private Integer id;
/**
* 订单编号
*/
private String orderNo;
/**
* 订单状态
*/
private Integer statusCode;
/**
* 下单用户id
*/
private Integer userAccountId;
/**
* 租赁商品id
*/
private Integer leaseGoodsId;
/**
* 商家企业名称
*/
private String companyName;
/**
* 商家id
*/
private Integer thirdBackUserAccountId;
/**
* 商品标题
*/
private String orderName;
/**
* sku图片/商品图片
*/
private String skuImg;
/**
* 订单总金额
*/
private BigDecimal orderTotalAmount;
/**
* 抵扣佣金金额
*/
private BigDecimal salaryAmount;
/**
* 抵扣云享金金额
*/
private BigDecimal shareAmount;
/**
* 其他渠道应支付金额
*/
private BigDecimal otherAmount;
/**
* 支付方式,wechatpay微信,alipay支付宝,offline线下
*/
private String payType;
/**
* 用户收货地址id
*/
private Integer userAddressId;
/**
* 买家备注信息
*/
private String userRemark;
/**
* 商家备注信息
*/
private String sellerRemark;
/**
* 支付时间
*/
private Date payTime;
/**
* 确认收货时间(成交时间)
*/
private Date confirmReceiptTime;
/**
* 修改版本
*/
private Integer version;
/**
* 评价状态
*/
private Integer remarkStatus;
/**
* 订单分成比例(平台收取)
*/
private Integer proportion;
/**
* 用户删除(0用户不可看,1用户可看)
* (假删除,后台还能看到)
*/
private Integer showUserPort;
/**
* 生成订单时间(下单时间)
*/
private Date createTime;
/**
* 最近修改时间
*/
private Date updateTime;
/**
* 单价 元/天
*/
private BigDecimal unitPrice;
/**
* 购买的商品数量
*/
private Integer wareNum;
/**
* 押金
*/
private BigDecimal deposit;
/**
* 租约开始日
*/
private Date startDate;
/**
* 租约结束日
*/
private Date endDate;
/**
* 关闭原因
*/
private String shutReason;
/**
* sku
*/
private String sku;
/**
* 发货时间
*/
private Date sendWareTime;
private String modeOfDeliveryInfo;
public LeaseOrderDTO buildLeaseOrderDTO() {
return LeaseOrderDTO.builder().id(id).orderNo(orderNo).statusCode(statusCode).userAccountId(userAccountId)
.thirdBackUserAccountId(thirdBackUserAccountId).companyName(companyName).orderTotalAmount(orderTotalAmount)
.salaryAmount(salaryAmount).shareAmount(shareAmount).otherAmount(otherAmount).payType(payType).payTime(payTime)
.startDate(startDate).endDate(endDate).userRemark(userRemark).sellerRemark(sellerRemark).createTime(createTime)
.confirmReceiptTime(confirmReceiptTime).remarkStatus(remarkStatus).modeOfDeliveryInfo(modeOfDeliveryInfo).sku(sku).skuImg(skuImg).build();
}
}
package com.mmc.oms.entity.lease;
import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.model.dto.uav.UavOrderExpressDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (LeaseOrderExpressDO)实体类
*
* @author makejava
* @since 2023-09-22 15:02:22
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaseOrderExpressDO implements Serializable {
private static final long serialVersionUID = -24578000103219438L;
private Integer id;
private Integer leaseOrderId;
private String sendExpNo;
private String sendExpCode;
/**
* 收货人姓名
*/
private String takeName;
/**
* 收货人电话
*/
private String takePhone;
/**
* 收货地区
*/
private String takeRegion;
/**
* 收货详细地址
*/
private String takeAddress;
/**
* 发货时间
*/
private Date sendTime;
/**
* 是否已签收
*/
private Integer receive;
/**
* 收货人签收时间
*/
private Date receiveTime;
private Date updateTime;
private Date createTime;
public LeaseOrderExpressDO(UserAddressDO userAddressDO) {
this.takeName = userAddressDO.getTakeName();
this.takePhone = userAddressDO.getTakePhone();
this.takeRegion = userAddressDO.getTakeRegion();
this.takeAddress = userAddressDO.getTakeAddress();
}
public UavOrderExpressDTO buildUavOrderExpressDTO() {
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)
.sendTime(this.sendTime).build();
}
}
package com.mmc.oms.entity.lease;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* (LeaseRefundOrderDO)实体类
*
* @author makejava
* @since 2023-09-23 15:49:05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LeaseRefundOrderDO implements Serializable {
private static final long serialVersionUID = -78279245843440398L;
private Integer id;
private Integer leaseOrderId;
/**
* 归还状态:0已归还 1无需归还
*/
private Integer status;
/**
* 物流单号
*/
private String expressNum;
/**
* 图片文件
*/
private String file;
/**
* 原因
*/
private String reason;
private Date createTime;
private Date updateTime;
public LeaseRefundOrderDO(LeaseOrderRefundVO leaseOrderRefundVO) {
this.leaseOrderId = leaseOrderRefundVO.getId();
this.status = leaseOrderRefundVO.getStatus();
this.expressNum = leaseOrderRefundVO.getExpressNum();
this.file = leaseOrderRefundVO.getFile();
this.reason = leaseOrderRefundVO.getReason();
}
}
package com.mmc.oms.entity.uav; package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderRemarkDTO;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO; import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -8,6 +9,7 @@ import lombok.Data; ...@@ -8,6 +9,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @author: zj * @author: zj
...@@ -21,6 +23,8 @@ public class UavOrderRemarkDO implements Serializable { ...@@ -21,6 +23,8 @@ public class UavOrderRemarkDO implements Serializable {
private static final long serialVersionUID = 3316555339556069007L; private static final long serialVersionUID = 3316555339556069007L;
@ApiModelProperty(value = "评价id") @ApiModelProperty(value = "评价id")
private Integer id; private Integer id;
@ApiModelProperty(value = "评价类型,0商城,1租赁")
private Integer remarkType;
@ApiModelProperty(value = "商品id") @ApiModelProperty(value = "商品id")
private Integer mallGoodsId; private Integer mallGoodsId;
@ApiModelProperty(value = "订单id") @ApiModelProperty(value = "订单id")
...@@ -31,6 +35,14 @@ public class UavOrderRemarkDO implements Serializable { ...@@ -31,6 +35,14 @@ public class UavOrderRemarkDO implements Serializable {
private String uavImages; private String uavImages;
@ApiModelProperty(value = "评论内容") @ApiModelProperty(value = "评论内容")
private String content; private String content;
@ApiModelProperty(value = "生成时间")
private Date createTime;
public UavOrderRemarkDTO buildUavOrderRemarkDTO() {
return UavOrderRemarkDTO.builder().id(this.id).remarkType(this.remarkType).mallGoodsId(this.mallGoodsId)
.uavOrderId(this.uavOrderId).remarkLevel(this.remarkLevel).content(this.content).uavImages(this.uavImages)
.createTime(this.createTime).build();
}
public UavOrderRemarkDO(UavOrderRemarkVO uavOrderRemarkVO){ public UavOrderRemarkDO(UavOrderRemarkVO uavOrderRemarkVO){
this.id = uavOrderRemarkVO.getId(); this.id = uavOrderRemarkVO.getId();
......
package com.mmc.oms.entity.uav;
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;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/21 16:59
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("多订单支付总记录")
public class UavPayWxDO implements Serializable {
private static final long serialVersionUID = 3003931182943391633L;
private Integer id;
private String payNo;
private BigDecimal amount;
private String tradeState;
private Date createTime;
private List<UavPayWxSubDO> payWxSubDOS;
}
package com.mmc.oms.entity.uav;
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/21 19:27
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("订单微信支付记录")
public class UavPayWxSubDO implements Serializable {
private static final long serialVersionUID = -1446318972494082705L;
private Integer id;
private Integer uavPayWxId;
private Integer uavOrderId;
private String orderNo;
private BigDecimal amount;
private Date createTime;
}
package com.mmc.oms.enums;
/**
* @author: zj
* @Date: 2023/9/4 14:36
*/
public enum LeaseOrderStatus {
PLACED_AN_ORDER(100, "已下单", "待付款"),
PAID(200, "已付款", "等发货"),
SHIPPED(300, "卖家已发货", "待买家收货"),
TO_BE_RETURNED(400, "待归还", "待归还"),
WAITING_MERCHANT_CONFIRM(500, "等待商家确认", "等待商家确认"),
COMPLETE_TRANSACTION(600, "交易完成", "交易完成"),
APPLY_REFUND(700, "申请退款", "退款中"),
CLOSE(999, "订单关闭", "订单关闭");
public Integer getCode() {
return code;
}
public String getDoing() {
return doing;
}
public String getWaiting() {
return waiting;
}
LeaseOrderStatus(Integer code, String doing, String waiting) {
this.code = code;
this.doing = doing;
this.waiting = waiting;
}
private Integer code;
private String doing;
private String waiting;
}
package com.mmc.oms.enums;
/**
* @author: lw
* @Date: 2023/9/4 14:36
*/
public enum LeaseTermInfo {
THREE_DAY(1, 3, "三天"),
SEVEN_DAY(2, 7, "七天"),
THIRTY_DAY(3, 30, "三十天"),
NINETY_DAY(4, 90, "九十天"),
ONE_HUNDRED_AND_EIGHTY_DAY(5, 180, "一百八十天");
public Integer getId() {
return id;
}
public Integer getDays() {
return days;
}
public String getDescription() {
return description;
}
LeaseTermInfo(Integer id, Integer days, String description) {
this.id = id;
this.days = days;
this.description = description;
}
private Integer id;
private Integer days;
private String description;
}
package com.mmc.oms.feign;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.ImsApiHystrix;
import com.mmc.oms.model.dto.data.ReleaseReportDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @Author LW
* @date 2023/6/15 10:46 概要:
*/
@FeignClient(url = "${ims.url}", name = "ims", fallback = ImsApiHystrix.class)
public interface ImsAppApi {
@GetMapping("/report/getReleaseReportData")
ResultBody<ReleaseReportDTO> getUserReportData();
}
...@@ -4,8 +4,12 @@ import com.mmc.oms.common.result.ResultBody; ...@@ -4,8 +4,12 @@ import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.PmsAppApiHystrix; import com.mmc.oms.feign.hystrix.PmsAppApiHystrix;
import com.mmc.oms.model.dto.uav.UavCartDTO; import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.qo.uav.PriceStockQO; import com.mmc.oms.model.qo.uav.PriceStockQO;
import com.mmc.oms.model.vo.lease.LeaseGoodsVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
...@@ -20,4 +24,7 @@ public interface PmsAppApi { ...@@ -20,4 +24,7 @@ public interface PmsAppApi {
@PostMapping("app/goods/listPriceStock") @PostMapping("app/goods/listPriceStock")
List<UavCartDTO> listPriceStock(@RequestBody List<PriceStockQO> priceStockQOS); List<UavCartDTO> listPriceStock(@RequestBody List<PriceStockQO> priceStockQOS);
@GetMapping("app/lease/leaseGoodsDetails")
ResultBody<LeaseGoodsVO> leaseGoodsDetails(@RequestParam Integer id);
} }
...@@ -38,6 +38,9 @@ public interface UserAppApi { ...@@ -38,6 +38,9 @@ public interface UserAppApi {
@GetMapping("company/getManagerIdByBackUserId") @GetMapping("company/getManagerIdByBackUserId")
public ResultBody getManagerIdByBackUserId(@RequestParam Integer backUserAccountId, @RequestHeader String token); public ResultBody getManagerIdByBackUserId(@RequestParam Integer backUserAccountId, @RequestHeader String token);
@PostMapping("user-account/feignListUserAccountByIds")
List<UserAccountSimpleDTO> feignListUserAccountByIds(@RequestBody List<Integer> ids, @RequestHeader("token") String token);
/** /**
* 获取小程序用户集合列表页面 * 获取小程序用户集合列表页面
* *
......
package com.mmc.oms.feign.config; package com.mmc.oms.feign.config;
import com.mmc.oms.feign.hystrix.ImsApiHystrix;
import com.mmc.oms.feign.hystrix.PmsAppApiHystrix; import com.mmc.oms.feign.hystrix.PmsAppApiHystrix;
import com.mmc.oms.feign.hystrix.UserAppApiHystrix; import com.mmc.oms.feign.hystrix.UserAppApiHystrix;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -24,4 +25,8 @@ public class FeignConfiguration { ...@@ -24,4 +25,8 @@ public class FeignConfiguration {
return new UserAppApiHystrix(); return new UserAppApiHystrix();
} }
@Bean(name = "imsApiHystrix")
public ImsApiHystrix imsAppApi() {
return new ImsApiHystrix();
}
} }
package com.mmc.oms.feign.hystrix;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.ImsAppApi;
import com.mmc.oms.model.dto.data.ReleaseReportDTO;
import lombok.extern.slf4j.Slf4j;
/**
* @Author LW
* @date 2023/6/15 10:47 概要:
*/
@Slf4j
public class ImsApiHystrix implements ImsAppApi {
@Override
public ResultBody<ReleaseReportDTO> getUserReportData() {
log.error("熔断:ImsApiHystrix.getUserReportData");
return null;
}
}
...@@ -5,8 +5,8 @@ import com.mmc.oms.common.result.ResultBody; ...@@ -5,8 +5,8 @@ import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.PmsAppApi; import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.model.dto.uav.UavCartDTO; import com.mmc.oms.model.dto.uav.UavCartDTO;
import com.mmc.oms.model.qo.uav.PriceStockQO; import com.mmc.oms.model.qo.uav.PriceStockQO;
import com.mmc.oms.model.vo.lease.LeaseGoodsVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
...@@ -18,7 +18,7 @@ import java.util.List; ...@@ -18,7 +18,7 @@ import java.util.List;
public class PmsAppApiHystrix implements PmsAppApi { public class PmsAppApiHystrix implements PmsAppApi {
@Override @Override
public ResultBody feignLeaseGoodsInfoByAddressId(Integer id) { public ResultBody feignLeaseGoodsInfoByAddressId(Integer id) {
log.info("熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}",id); log.info("熔断:PmsAppApiHystrix.feignLeaseGoodsInfoByAddressId==error==>param:{}", id);
return null; return null;
} }
...@@ -27,4 +27,10 @@ public class PmsAppApiHystrix implements PmsAppApi { ...@@ -27,4 +27,10 @@ public class PmsAppApiHystrix implements PmsAppApi {
log.info("熔断:PmsAppApiHystrix.listPriceStock==error==>param:{}", JSONObject.toJSONString(priceStockQOS)); log.info("熔断:PmsAppApiHystrix.listPriceStock==error==>param:{}", JSONObject.toJSONString(priceStockQOS));
return null; return null;
} }
@Override
public ResultBody<LeaseGoodsVO> leaseGoodsDetails(Integer id) {
log.info("熔断:PmsAppApiHystrix.leaseGoodsDetails==error==>param:{}", id);
return null;
}
} }
...@@ -52,6 +52,12 @@ public class UserAppApiHystrix implements UserAppApi { ...@@ -52,6 +52,12 @@ public class UserAppApiHystrix implements UserAppApi {
} }
@Override @Override
public List<UserAccountSimpleDTO> feignListUserAccountByIds(List<Integer> ids, String token) {
log.error("熔断:UserAppApiHystrix.feignListUserAccountByIds:{}", ids);
return null;
}
@Override
public List<UserAccountSimpleDTO> feignListAppUserAccount(UserAccountQO userAccountQO, String token) { public List<UserAccountSimpleDTO> feignListAppUserAccount(UserAccountQO userAccountQO, String token) {
log.error("熔断:UserAppApiHystrix.feignListAppUserAccount:{}", userAccountQO); log.error("熔断:UserAppApiHystrix.feignListAppUserAccount:{}", userAccountQO);
return null; return null;
......
...@@ -39,7 +39,10 @@ public class AuthSignatureFilter implements AuthFilter { ...@@ -39,7 +39,10 @@ public class AuthSignatureFilter implements AuthFilter {
/** /**
* 无需登录白名单 * 无需登录白名单
*/ */
private static final String[] IGNORE_URLS = {"/oms/swagger-resources", "/oms/v2/api-docs", "/oms/doc.html", "/oms/mallorder/listStatus","/oms/actuator/health/readiness", "/oms/uav-order/finishSign", "/oms/uav-order/statusList"}; private static final String[] IGNORE_URLS = {"/oms/swagger-resources", "/oms/v2/api-docs", "/oms/doc.html",
"/oms/mallorder/listStatus","/oms/actuator/health/readiness", "/oms/uav-order/finishSign", "/oms/uav-order/statusList",
"/oms/uav-order/listGoodsRemark"
};
/*无需加密狗无需登录白名单*/ /*无需加密狗无需登录白名单*/
private static final String[] USE_KEY = {"/oms/account/loginByUsbKey"}; private static final String[] USE_KEY = {"/oms/account/loginByUsbKey"};
......
package com.mmc.oms.model.dto.data;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/9/16 14:15
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderReportDTO {
@ApiModelProperty(value = "商城售卖订单总数")
private Integer saleOrderCount;
@ApiModelProperty(value = "商品租赁订单总数")
private Integer leaseOrderCount;
@ApiModelProperty(value = "服务订单订单总数")
private Integer serviceOrderCount;
@ApiModelProperty(value = "商城售卖交易总额")
private BigDecimal saleGMV;
@ApiModelProperty(value = "商品租赁交易总额")
private BigDecimal leaseGMV;
@ApiModelProperty(value = "服务订单交易总额")
private BigDecimal serviceGMV;
@ApiModelProperty(value = "交易总额")
private BigDecimal totalGMV;
}
package com.mmc.oms.model.dto.data;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/9/16 14:15
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ReleaseReportDTO {
@ApiModelProperty(value = "信息发布总数")
private Integer releaseCount;
@ApiModelProperty(value = "订单发布数量")
private Integer orderReleaseCount;
@ApiModelProperty(value = "帖子发布数量")
private Integer postsReleaseCount;
@ApiModelProperty(value = "话题发布数量")
private Integer topicReleaseCount;
@ApiModelProperty(value = "订单金额")
private BigDecimal serviceOrderAmount;
}
package com.mmc.oms.model.dto.lease;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import com.mmc.oms.model.dto.uav.UavOrderExpressDTO;
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;
/**
* @author: lw
* @Date: 2023/9/4 14:50
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "最新版-订单")
public class LeaseOrderDTO implements Serializable {
private static final long serialVersionUID = 7548192478556457453L;
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("订单状态")
private Integer statusCode;
@ApiModelProperty("买家id")
private Integer userAccountId;
@ApiModelProperty("买家手机号")
private String phoneNum;
@ApiModelProperty("买家姓名")
private String userName;
@ApiModelProperty("买家昵称")
private String nickname;
@ApiModelProperty("卖家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty("卖家企业名称")
private String companyName;
@ApiModelProperty("订单实付总额")
private BigDecimal orderTotalAmount;
@ApiModelProperty("订单需付金额")
private BigDecimal needPayAmount;
@ApiModelProperty("抵扣佣金余额")
private BigDecimal salaryAmount;
@ApiModelProperty("抵扣云享金余额")
private BigDecimal shareAmount;
@ApiModelProperty("其他方式支付额度")
private BigDecimal otherAmount;
@ApiModelProperty("wechatpay微信,alipay支付宝,offline线下")
private String payType;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("租赁开始时间")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("租赁结束时间")
private Date endDate;
@ApiModelProperty("买家备注")
private String userRemark;
@ApiModelProperty("卖家备注")
private String sellerRemark;
@ApiModelProperty("下单时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty("支付时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date payTime;
@ApiModelProperty("确认收货时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date confirmReceiptTime;
@ApiModelProperty(value = "修改版本", hidden = true)
private Integer version;
@ApiModelProperty("评价状态")
private Integer remarkStatus;
@ApiModelProperty("最近修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
@ApiModelProperty("用户收货地址信息")
private UavOrderExpressDTO uavOrderExpressDTO;
@ApiModelProperty("快递信息")
private KdnExpDTO kdnExpDTO;
@ApiModelProperty("订单规格列表")
private String sku;
@ApiModelProperty("sku图片")
private String skuImg;
@ApiModelProperty("运费")
private String modeOfDeliveryInfo;
}
package com.mmc.oms.model.dto.uav;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/21 16:11
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MultiUavOrderDTO implements Serializable {
private static final long serialVersionUID = -935420087357754202L;
private BigDecimal allOtherAmount;
private String payNo;
private List<UavOrderDTO> uavOrderDTOS;
}
...@@ -22,8 +22,16 @@ public class UavCartCompanyDTO implements Serializable { ...@@ -22,8 +22,16 @@ public class UavCartCompanyDTO implements Serializable {
private static final long serialVersionUID = -6785504068213761405L; private static final long serialVersionUID = -6785504068213761405L;
@ApiModelProperty(value = "商家id") @ApiModelProperty(value = "商家id")
private Integer thirdBackUserAccountId; private Integer thirdBackUserAccountId;
@ApiModelProperty(value = "商家名称") @ApiModelProperty(value = "商家名称")
private String companyName; private String companyName;
@ApiModelProperty("是否抵扣云享金,0否,1是")
private Integer deductShareAmount;
@ApiModelProperty("是否抵扣余额,0否,1是")
private Integer deductSalaryAmount;
@ApiModelProperty(value = "购物车对应规格") @ApiModelProperty(value = "购物车对应规格")
private List<UavCartDTO> uavCartDOS; private List<UavCartDTO> uavCartDOS;
} }
...@@ -24,9 +24,9 @@ public class UavCartDTO implements Serializable { ...@@ -24,9 +24,9 @@ public class UavCartDTO implements Serializable {
private Integer id; private Integer id;
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Integer userAccountId; private Integer userAccountId;
@ApiModelProperty(value = "商家id") @ApiModelProperty(value = "商家id", hidden = true)
private Integer thirdBackUserAccountId; private Integer thirdBackUserAccountId;
@ApiModelProperty(value = "商家名称") @ApiModelProperty(value = "商家名称", hidden = true)
private String companyName; private String companyName;
@ApiModelProperty(value = "商品id") @ApiModelProperty(value = "商品id")
private Integer mallGoodsId; private Integer mallGoodsId;
...@@ -48,6 +48,8 @@ public class UavCartDTO implements Serializable { ...@@ -48,6 +48,8 @@ public class UavCartDTO implements Serializable {
private Date createTime; private Date createTime;
@ApiModelProperty(value = "是否展示价格,0 不显示 1显示") @ApiModelProperty(value = "是否展示价格,0 不显示 1显示")
private Integer priceShow; private Integer priceShow;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
@ApiModelProperty(value = "是否上架状态:0: 下架 1:上架") @ApiModelProperty(value = "是否上架状态:0: 下架 1:上架")
private Integer shelfStatus; private Integer shelfStatus;
} }
package com.mmc.oms.model.dto.uav;
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;
/**
* @author: zj
* @Date: 2023/9/23 15:05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UavOrderRemarkDTO implements Serializable {
private static final long serialVersionUID = 2751635245494487278L;
@ApiModelProperty(value = "评价id")
private Integer id;
@ApiModelProperty(value = "评价类型,0商城,1租赁")
private Integer remarkType;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "商品id")
private Integer mallGoodsId;
@ApiModelProperty(value = "评分")
private Integer remarkLevel;
@ApiModelProperty(value = "图片地址,‘,’隔开")
private String uavImages;
@ApiModelProperty(value = "评论内容")
private String content;
@ApiModelProperty(value = "生成时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date createTime;
}
...@@ -19,8 +19,6 @@ import java.io.Serializable; ...@@ -19,8 +19,6 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
public class UavCartQO implements Serializable { public class UavCartQO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单类型,0正常订单,1意向订单", required = true)
private Integer orderType;
@ApiModelProperty(value = "页码", required = true) @ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = Page.class) @NotNull(message = "页码不能为空", groups = Page.class)
......
package com.mmc.oms.model.vo.lease;
import com.fasterxml.jackson.annotation.JsonFormat;
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: lw
* @Date: 2023/9/21 16:01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AddLeaseOrderVO implements Serializable {
private static final long serialVersionUID = 2749055915508197141L;
@ApiModelProperty("商家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty("卖家企业名称")
private String companyName;
@ApiModelProperty("租赁商品id")
private Integer leaseGoodsId;
@ApiModelProperty("收货地址id")
private Integer userAddressId;
@ApiModelProperty(value = "订单实付总额", hidden = true)
private BigDecimal orderTotalAmount;
@ApiModelProperty(value = "抵扣钱包余额", hidden = true)
private BigDecimal walletAmount;
@ApiModelProperty(value = "抵扣云享金余额", hidden = true)
private BigDecimal shareAmount;
@ApiModelProperty(value = "其他方式支付额度", hidden = true)
private BigDecimal otherAmount;
@ApiModelProperty(value = "租期", hidden = true)
private Integer leaseTerm;
@ApiModelProperty("用户备注")
private String userRemark;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("租赁开始时间")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("租赁结束时间")
private Date endDate;
@ApiModelProperty("购买数量")
private Integer wareNum;
@ApiModelProperty(value = "单价", hidden = true)
private BigDecimal unitPrice;
@ApiModelProperty(value = "押金", hidden = true)
private BigDecimal deposit;
@ApiModelProperty("sku")
private String sku;
@ApiModelProperty("是否抵扣云享金,0否,1是")
private Integer deductShareAmount;
@ApiModelProperty("是否抵扣余额,0否,1是")
private Integer deductSalaryAmount;
}
package com.mmc.oms.model.vo.lease;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.oms.common.publicinterface.Create;
import com.mmc.oms.common.publicinterface.Update;
import com.mmc.oms.model.vo.uav.GoodsResourcesVO;
import com.mmc.oms.model.vo.uav.SpecAttrVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @Author LW
* @date 2023/7/24 17:44
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LeaseGoodsVO implements Serializable {
private static final long serialVersionUID = -3147170430919703826L;
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "商品标题", example = "商品标题", required = true)
@NotEmpty(message = "商品标题不能为空", groups = {Update.class, Create.class})
private String tradeName;
@ApiModelProperty(value = "商品卖点", example = "商品卖点")
private String sellingPoint;
@ApiModelProperty(value = "商品成新", example = "1", required = true)
private Integer level;
@ApiModelProperty(value = "商品状态 :0下架 1上架", example = "1", required = true)
@NotNull(message = "商品状态不能为空", groups = {Update.class, Create.class})
private Integer shelfStatus;
@ApiModelProperty(value = "商品类型id", example = "1", required = true)
@NotNull(message = "商品类型id不能为空", groups = {Update.class, Create.class})
private Integer productTypeId;
@ApiModelProperty(value = "品牌id", example = "2", required = true)
@NotNull(message = "品牌id不能为空", groups = {Update.class, Create.class})
private Integer brandInfoId;
@ApiModelProperty(value = "型号id", example = "2", required = true)
@NotNull(message = "型号id不能为空", groups = {Update.class, Create.class})
private Integer deviceModeId;
@ApiModelProperty(value = "商品参数", example = "示例:[{\"起飞重量\":\"595g\"}]")
private String productParam;
@ApiModelProperty(value = "商品资源:图片or视频及其他")
@NotEmpty(message = "图片不能为空")
private List<GoodsResourcesVO> resourcesList;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
private List<SpecAttrVO> specAttrList;
@ApiModelProperty(value = "价格库存排列组合表信息")
private List<LeasePriceStockVO> priceStock;
@ApiModelProperty(value = "商品详情 富文本")
private String productDetails;
@ApiModelProperty(value = "最短租期")
private Integer minLeaseTerm;
@ApiModelProperty(value = "最长租期")
private Integer maxLeaseTerm;
@ApiModelProperty(value = "发货地址")
private Integer shipAddress;
@ApiModelProperty(value = "归还地址")
private Integer returnAddress;
@ApiModelProperty(value = "寄出物流")
private String logisticsCompany;
@ApiModelProperty(value = "配送方式")
private Integer modeOfDelivery;
@ApiModelProperty(value = "展示最低价", example = "1")
private BigDecimal showPrice;
@ApiModelProperty(value = "创建时间 用作列表回显", hidden = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(value = "店铺id 小程序用", hidden = true)
private Integer userAccountId;
@ApiModelProperty(value = "押金范围", hidden = true)
private String cashPledgeRange;
@ApiModelProperty(value = "租金范围", hidden = true)
private String rentalRange;
@ApiModelProperty(value = "库存", hidden = true)
private Integer stock;
@ApiModelProperty(value = "市code编码")
private String districtCode;
@ApiModelProperty(value = "类型名称", hidden = true)
private String productTypeName;
@ApiModelProperty(value = "品牌名称", hidden = true)
private String brandName;
@ApiModelProperty(value = "型号名称", hidden = true)
private String deviceModeName;
@ApiModelProperty(value = "配送方式信息", hidden = true)
private String modeOfDeliveryInfo;
@ApiModelProperty(value = "企业名称", hidden = true)
private String companyName;
}
package com.mmc.oms.model.vo.lease;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author LW
* @date 2023/9/23 15:36
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LeaseOrderRefundVO implements Serializable {
@ApiModelProperty("订单id")
private Integer id;
@ApiModelProperty("归还状态 0已归还 1无需归还")
private Integer status;
@ApiModelProperty("物流单号")
private String expressNum;
@ApiModelProperty("图片文件")
private String file;
@ApiModelProperty("原因")
private String reason;
}
package com.mmc.oms.model.vo.lease;
import com.mmc.oms.common.publicinterface.Create;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/8/8 10:48
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class LeasePriceStockVO implements Serializable {
private static final long serialVersionUID = 1011141620995647903L;
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "商品规格", example = "示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来")
@NotEmpty(message = "商品规格不能为空", groups = {Update.class, Create.class})
private String productSpec;
@ApiModelProperty(value = "押金", example = "1")
private BigDecimal cashPledge;
@ApiModelProperty(value = "3天租金", example = "1")
private BigDecimal threeDaysRental;
@ApiModelProperty(value = "7天租金", example = "1")
private BigDecimal sevenDaysRental;
@ApiModelProperty(value = "30天租金", example = "1")
private BigDecimal thirtyDaysRental;
@ApiModelProperty(value = "90天租金", example = "1")
private BigDecimal ninetyDaysRental;
@ApiModelProperty(value = "180天租金", example = "1")
private BigDecimal maxDaysRental;
@ApiModelProperty(value = "sku图片", example = "https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/35bbd044-7cd7-4c85-ba27-69776e03dbb2.jpg")
private String skuImage;
@ApiModelProperty(value = "库存", example = "10")
@Max(message = "最大不能超过9999", groups = {Update.class, Create.class}, value = 9999)
private Integer stock;
@ApiModelProperty(value = "是否缺货 0:否 1:是")
private Integer stockOut;
}
...@@ -27,12 +27,6 @@ public class AddUavOrderByCartQO implements Serializable { ...@@ -27,12 +27,6 @@ public class AddUavOrderByCartQO implements Serializable {
@ApiModelProperty("用户备注") @ApiModelProperty("用户备注")
private String userRemark; private String userRemark;
@ApiModelProperty("是否抵扣云享金,0否,1是")
private Integer deductShareAmount;
@ApiModelProperty("是否抵扣余额,0否,1是")
private Integer deductSalaryAmount;
@ApiModelProperty("每家商户对应的规格") @ApiModelProperty("每家商户对应的规格")
private List<UavCartCompanyDTO> cartCompanyDTOS; private List<UavCartCompanyDTO> cartCompanyDTOS;
} }
package com.mmc.oms.service.data;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.data.OrderReportDTO;
/**
* @Author LW
* @date 2023/9/19 10:05
* 概要:
*/
public interface OrderReportService {
ResultBody<OrderReportDTO> getOrderReportData();
}
package com.mmc.oms.service.data.impl;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.dao.uav.UavOrderDao;
import com.mmc.oms.feign.ImsAppApi;
import com.mmc.oms.model.dto.data.OrderReportDTO;
import com.mmc.oms.model.dto.data.ReleaseReportDTO;
import com.mmc.oms.service.data.OrderReportService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/9/19 10:05
* 概要:
*/
@Service
public class OrderReportServiceImpl implements OrderReportService {
@Resource
private UavOrderDao uavOrderDao;
@Resource
private ImsAppApi imsAppApi;
@Override
public ResultBody<OrderReportDTO> getOrderReportData() {
OrderReportDTO orderReportDTO = new OrderReportDTO();
// 获取商城订单数量
int saleOrderCount = uavOrderDao.getOrderCount();
orderReportDTO.setSaleOrderCount(saleOrderCount);
// 获取租赁订单数量// todo 暂时默认0
int leaseOrderCount = 0;
orderReportDTO.setLeaseOrderCount(leaseOrderCount);
// 获取服务订单总数
ResultBody<ReleaseReportDTO> userReportData = imsAppApi.getUserReportData();
int serviceOrderCount = userReportData.getResult().getOrderReleaseCount();
orderReportDTO.setServiceOrderCount(serviceOrderCount);
// 获取商城订单GMV
BigDecimal saleGMV = uavOrderDao.getSaleOrderGMV();
orderReportDTO.setSaleGMV(saleGMV);
// 获取租赁订单GMV // todo 暂时默认0
BigDecimal leaseGMV = BigDecimal.ZERO;
orderReportDTO.setLeaseGMV(leaseGMV);
BigDecimal serviceGMV = userReportData.getResult().getServiceOrderAmount();
orderReportDTO.setServiceGMV(serviceGMV);
// 获取总GMV
orderReportDTO.setTotalGMV(saleGMV.add(leaseGMV).add(serviceGMV));
return ResultBody.success(orderReportDTO);
}
}
...@@ -11,12 +11,14 @@ import com.mmc.oms.dao.demand.DemandReleaseOrderDao; ...@@ -11,12 +11,14 @@ 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.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.entity.demand.DemandReleaseOrderDO; import com.mmc.oms.entity.demand.DemandReleaseOrderDO;
import com.mmc.oms.entity.demand.GetOrderNumberDO; import com.mmc.oms.entity.demand.GetOrderNumberDO;
import com.mmc.oms.entity.demand.GetOrderNumberDTO; import com.mmc.oms.entity.demand.GetOrderNumberDTO;
import com.mmc.oms.entity.demand.ServiceRequirementsDO; 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.enums.UavOrderStatus; 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.dto.uav.PayWalletDTO;
...@@ -81,6 +83,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -81,6 +83,9 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
private TopUpOrderDao topUpOrderDao; private TopUpOrderDao topUpOrderDao;
@Autowired @Autowired
private UavPayWxDao uavPayWxDao;
@Autowired
private UserAppApi userAppApi; private UserAppApi userAppApi;
@Override @Override
...@@ -109,17 +114,25 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -109,17 +114,25 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
} }
} }
public ResultBody payUavOrder(CommonPaymentVO commonPaymentVO, String token) { private ResultBody multiUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) {
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(commonPaymentVO.getOrderNumber()); UavPayWxDO uavPayWxDO = uavPayWxDao.getUavPayWx(orderRequestParamsVO.getOrderNo());
if (uavOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(commonPaymentVO.getAmount())) !=0 ){ if (uavPayWxDO.getAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) !=0 ){
return ResultBody.error("发起支付金额不正确");
}
orderRequestParamsVO.setDescription("商城多订单" + orderRequestParamsVO.getOrderNo());
ResultBody resultBody = releaseOrder(orderRequestParamsVO, token);
if (!"200".equals(resultBody.getCode())) {
throw new RuntimeException("调用微信支付方法失败!");
}
return resultBody;
}
private ResultBody singleUavOrderPay(OrderRequestParamsVO orderRequestParamsVO, String token) {
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(orderRequestParamsVO.getOrderNo());
if (uavOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).compareTo(BigDecimal.valueOf(orderRequestParamsVO.getAmount())) !=0 ){
return ResultBody.error("发起支付金额不正确"); return ResultBody.error("发起支付金额不正确");
} }
OrderRequestParamsVO orderRequestParamsVO = new OrderRequestParamsVO();
orderRequestParamsVO.setOrderNo(commonPaymentVO.getOrderNumber());
orderRequestParamsVO.setAmount(commonPaymentVO.getAmount());
orderRequestParamsVO.setAttach("PAY_UAV_ORDER");
orderRequestParamsVO.setDescription("商城订单" + uavOrderDO.getOrderNo()); orderRequestParamsVO.setDescription("商城订单" + uavOrderDO.getOrderNo());
orderRequestParamsVO.setOrderPort(commonPaymentVO.getOrderPort());
ResultBody resultBody = releaseOrder(orderRequestParamsVO, token); ResultBody resultBody = releaseOrder(orderRequestParamsVO, token);
if (!"200".equals(resultBody.getCode())) { if (!"200".equals(resultBody.getCode())) {
throw new RuntimeException("调用微信支付方法失败!"); throw new RuntimeException("调用微信支付方法失败!");
...@@ -127,6 +140,20 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -127,6 +140,20 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
return resultBody; return resultBody;
} }
public ResultBody payUavOrder(CommonPaymentVO commonPaymentVO, String token) {
OrderRequestParamsVO orderRequestParamsVO = new OrderRequestParamsVO();
orderRequestParamsVO.setOrderNo(commonPaymentVO.getOrderNumber());
orderRequestParamsVO.setAmount(commonPaymentVO.getAmount());
orderRequestParamsVO.setAttach("PAY_UAV_ORDER");
orderRequestParamsVO.setOrderPort(commonPaymentVO.getOrderPort());
// 购物车下单涉及多订单
if (commonPaymentVO.getOrderNumber().startsWith("m")) {
return multiUavOrderPay(orderRequestParamsVO, token);
}else {
return singleUavOrderPay(orderRequestParamsVO, token);
}
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBody topUpOrder(CommonPaymentVO commonPaymentVO, String token, Integer userAccountId) { public ResultBody topUpOrder(CommonPaymentVO commonPaymentVO, String token, Integer userAccountId) {
// 生成充值订单编号 规则T加时间戳加用户id加随机数4位 // 生成充值订单编号 规则T加时间戳加用户id加随机数4位
......
package com.mmc.oms.service.lease;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
/**
* @Author LW
* @date 2023/9/21 16:38
* 概要:
*/
public interface LeaseOrderService {
ResultBody<LeaseOrderDTO> addLeaseOrder(AddLeaseOrderVO param, BaseAccountDTO currentAccount);
ResultBody detail(Integer id, BaseAccountDTO currentAccount) throws Exception;
ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token);
ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount);
}
package com.mmc.oms.service.lease.impl;
import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.json.JsonUtil;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.common.util.CodeUtil;
import com.mmc.oms.common.util.KdnExpressUtil;
import com.mmc.oms.dao.UserAddressDao;
import com.mmc.oms.dao.lease.LeaseOrderDao;
import com.mmc.oms.entity.lease.LeaseOrderDO;
import com.mmc.oms.entity.lease.LeaseOrderExpressDO;
import com.mmc.oms.entity.lease.LeaseRefundOrderDO;
import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.enums.LeaseOrderStatus;
import com.mmc.oms.enums.LeaseTermInfo;
import com.mmc.oms.feign.PaymentAppApi;
import com.mmc.oms.feign.PmsAppApi;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import com.mmc.oms.model.dto.lease.LeaseOrderDTO;
import com.mmc.oms.model.dto.order.ExpStationsDTO;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.dto.user.UserAccountSimpleDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.ApplyRefundVO;
import com.mmc.oms.model.vo.lease.AddLeaseOrderVO;
import com.mmc.oms.model.vo.lease.LeaseGoodsVO;
import com.mmc.oms.model.vo.lease.LeaseOrderRefundVO;
import com.mmc.oms.model.vo.lease.LeasePriceStockVO;
import com.mmc.oms.model.vo.uav.GoodsResourcesVO;
import com.mmc.oms.model.vo.uav.PayUavWalletVO;
import com.mmc.oms.service.lease.LeaseOrderService;
import com.mmc.oms.service.uav.UavOrderService;
import com.mmc.oms.util.TDateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
/**
* @Author LW
* @date 2023/9/21 16:46
* 概要:
*/
@Service
@Slf4j
public class LeaseOrderServiceImpl implements LeaseOrderService {
@Resource
private PmsAppApi pmsAppApi;
@Resource
private UavOrderService uavOrderService;
@Resource
private LeaseOrderDao leaseOrderDao;
@Resource
private UserAddressDao userAddressDao;
@Resource
private UserAppApi userAppApi;
@Resource
private PaymentAppApi paymentAppApi;
@Override
@Transactional
public ResultBody addLeaseOrder(AddLeaseOrderVO param, BaseAccountDTO currentAccount) {
log.info("user:{},addOrder param:{}", currentAccount.getUserAccountId(), param);
if (StringUtils.isEmpty(param.getSku())) {
return ResultBody.error("至少选择一个规格!");
}
if (param.getWareNum() <= 0) {
return ResultBody.error("购买数量不得少于1");
}
LeaseGoodsVO leaseGoodsVO;
LeasePriceStockVO priceStock = null;
try {
leaseGoodsVO = pmsAppApi.leaseGoodsDetails(param.getLeaseGoodsId()).getResult();
// 检验商品是否在卖
if (leaseGoodsVO == null || !leaseGoodsVO.getShelfStatus().equals(1)) {
return ResultBody.error("商品已下架");
}
// 判断租赁时间是否超出当前商品的最长租期或小于最短租期
int distanceDays = TDateUtil.distanceDays(param.getStartDate(), param.getEndDate());
param.setLeaseTerm(distanceDays);
// 获取租赁商品的最低租期
Integer minLeaseTerm = getLeaseTerm(leaseGoodsVO.getMinLeaseTerm());
// 获取租赁商品的最大租期
Integer maxLeaseTerm = getLeaseTerm(leaseGoodsVO.getMaxLeaseTerm());
if (distanceDays < minLeaseTerm || distanceDays > maxLeaseTerm) {
return ResultBody.error("商品信息发生变更,刷新后重试!");
}
// 判断该租期在那个价格区间
Integer priceSection = getPriceSection(distanceDays);
// 找到对应的规格
boolean flag = false;
for (LeasePriceStockVO priceStockVO : leaseGoodsVO.getPriceStock()) {
if (param.getSku().equals(priceStockVO.getProductSpec())) {
priceStock = priceStockVO;
// 获取最新的规格单价
param.setUnitPrice(getUnitPrice(priceSection, priceStockVO));
param.setDeposit(priceStockVO.getCashPledge());
flag = true;
break;
}
}
if (!flag) {
return ResultBody.error("选择规格不存在");
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(e.getMessage());
}
String orderNo = CodeUtil.generateOrderId();
// 计算订单总金额
BigDecimal orderTotalAmount = param.getUnitPrice().multiply(BigDecimal.valueOf(param.getLeaseTerm()))
.multiply(BigDecimal.valueOf(param.getWareNum())).add(param.getDeposit().multiply(BigDecimal.valueOf(param.getWareNum())));
BigDecimal otherAmount = BigDecimal.ZERO;
otherAmount = otherAmount.add(orderTotalAmount);
// 判断云享金或余额是否够抵扣
// 校验云享金、钱包余额是否足够抵扣
BigDecimal shareAmount = BigDecimal.ZERO;
BigDecimal salaryAmount = BigDecimal.ZERO;
Integer statusCode = null;
// 获取用户钱包信息
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken());
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) {
return payResInfo;
}
PayWalletDTO payWalletDTO = payResInfo.getResult();
if (param.getDeductShareAmount().equals(1)) {
if (otherAmount.compareTo(payWalletDTO.getCashAmt()) >= 0) {
// 抵扣云享金小于等于订单总额时,直接使用云享金
shareAmount = payWalletDTO.getCashAmt();
} else {
// 余额超过订单金额时,订单总额使用余额支付
shareAmount = otherAmount;
}
}
otherAmount = otherAmount.subtract(shareAmount);
// 支付完成
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
statusCode = LeaseOrderStatus.PAID.getCode();
} else {
if (param.getDeductSalaryAmount().equals(1)) {
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) >= 0) {
// 抵扣余额小于等于订单总额时,直接使用余额
salaryAmount = payWalletDTO.getSalaryAmt();
} else {
// 余额超过订单金额时,订单总额使用余额支付
salaryAmount = otherAmount;
}
}
otherAmount = otherAmount.subtract(salaryAmount);
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
statusCode = LeaseOrderStatus.PAID.getCode();
}
}
// 抵扣余额
uavOrderService.deductWallet(shareAmount, salaryAmount, currentAccount);
// 获取商品主图
String url = null;
for (GoodsResourcesVO goodsResourcesVO : leaseGoodsVO.getResourcesList()) {
if (goodsResourcesVO.getType().equals(0)) {
url = goodsResourcesVO.getUrl();
break;
}
}
// 添加总订单表
LeaseOrderDO leaseOrderDO = new LeaseOrderDO();
leaseOrderDO.setOrderNo(orderNo);
leaseOrderDO.setOrderTotalAmount(orderTotalAmount);
leaseOrderDO.setStatusCode(otherAmount.compareTo(BigDecimal.ZERO) > 0 ? LeaseOrderStatus.PLACED_AN_ORDER.getCode() : statusCode);
leaseOrderDO.setUserAccountId(currentAccount.getUserAccountId());
leaseOrderDO.setLeaseGoodsId(param.getLeaseGoodsId());
leaseOrderDO.setCompanyName(param.getCompanyName());
leaseOrderDO.setThirdBackUserAccountId(param.getThirdBackUserAccountId());
leaseOrderDO.setOrderName(leaseGoodsVO.getTradeName());
leaseOrderDO.setModeOfDeliveryInfo(leaseGoodsVO.getModeOfDeliveryInfo());
if (priceStock.getSkuImage() != null) {
leaseOrderDO.setSkuImg(priceStock.getSkuImage());
} else {
leaseOrderDO.setSkuImg(url);
}
leaseOrderDO.setSalaryAmount(salaryAmount);
leaseOrderDO.setSku(param.getSku());
leaseOrderDO.setShareAmount(shareAmount);
leaseOrderDO.setOtherAmount(otherAmount);
leaseOrderDO.setUserAddressId(param.getUserAddressId());
leaseOrderDO.setUserRemark(param.getUserRemark());
leaseOrderDO.setUnitPrice(param.getUnitPrice());
leaseOrderDO.setWareNum(param.getWareNum());
leaseOrderDO.setDeposit(param.getDeposit());
leaseOrderDO.setStartDate(param.getStartDate());
if (null != statusCode && statusCode.equals(LeaseOrderStatus.PAID.getCode())) {
leaseOrderDO.setPayTime(new Date());
}
leaseOrderDO.setEndDate(param.getEndDate());
leaseOrderDao.addOrder(leaseOrderDO);
// 添加收货地址
UserAddressDO userAddressDO = userAddressDao.selectById(param.getUserAddressId());
LeaseOrderExpressDO leaseOrderExpressDO = new LeaseOrderExpressDO(userAddressDO);
leaseOrderExpressDO.setLeaseOrderId(leaseOrderDO.getId());
leaseOrderDao.addAddress(leaseOrderExpressDO);
LeaseOrderDTO leaseOrderDTO = leaseOrderDO.buildLeaseOrderDTO();
leaseOrderDTO.setModeOfDeliveryInfo(leaseGoodsVO.getModeOfDeliveryInfo());
return ResultBody.success(leaseOrderDTO);
}
private Integer getLeaseTerm(Integer leaseTermId) {
if (leaseTermId.equals(LeaseTermInfo.THREE_DAY.getId())) {
return LeaseTermInfo.THREE_DAY.getDays();
} else if (leaseTermId.equals(LeaseTermInfo.SEVEN_DAY.getId())) {
return LeaseTermInfo.SEVEN_DAY.getDays();
} else if (leaseTermId.equals(LeaseTermInfo.THIRTY_DAY.getId())) {
return LeaseTermInfo.THIRTY_DAY.getDays();
} else if (leaseTermId.equals(LeaseTermInfo.NINETY_DAY.getId())) {
return LeaseTermInfo.NINETY_DAY.getDays();
} else {
return LeaseTermInfo.ONE_HUNDRED_AND_EIGHTY_DAY.getDays();
}
}
private BigDecimal getUnitPrice(Integer priceSection, LeasePriceStockVO priceStockVO) {
if (priceSection.equals(LeaseTermInfo.THREE_DAY.getDays())) {
return priceStockVO.getThreeDaysRental();
} else if (priceSection.equals(LeaseTermInfo.SEVEN_DAY.getDays())) {
return priceStockVO.getSevenDaysRental();
} else if (priceSection.equals(LeaseTermInfo.THIRTY_DAY.getDays())) {
return priceStockVO.getThirtyDaysRental();
} else if (priceSection.equals(LeaseTermInfo.NINETY_DAY.getDays())) {
return priceStockVO.getNinetyDaysRental();
} else {
return priceStockVO.getMaxDaysRental();
}
}
private Integer getPriceSection(int distanceDays) {
if (distanceDays >= LeaseTermInfo.THREE_DAY.getDays() && distanceDays < LeaseTermInfo.SEVEN_DAY.getDays()) {
return LeaseTermInfo.THREE_DAY.getDays();
} else if (distanceDays >= LeaseTermInfo.SEVEN_DAY.getDays() && distanceDays < LeaseTermInfo.THIRTY_DAY.getDays()) {
return LeaseTermInfo.SEVEN_DAY.getDays();
} else if (distanceDays >= LeaseTermInfo.THIRTY_DAY.getDays() && distanceDays < LeaseTermInfo.NINETY_DAY.getDays()) {
return LeaseTermInfo.THIRTY_DAY.getDays();
} else if (distanceDays >= LeaseTermInfo.NINETY_DAY.getDays() && distanceDays < LeaseTermInfo.ONE_HUNDRED_AND_EIGHTY_DAY.getDays()) {
return LeaseTermInfo.NINETY_DAY.getDays();
} else {
return LeaseTermInfo.ONE_HUNDRED_AND_EIGHTY_DAY.getDays();
}
}
@Override
public ResultBody detail(Integer id, BaseAccountDTO currentAccount) throws Exception {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(id);
if (leaseOrderDO == null) {
return ResultBody.error("订单信息不存在!");
}
LeaseOrderDTO leaseOrderDTO = leaseOrderDO.buildLeaseOrderDTO();
if (leaseOrderDO.getStatusCode().equals(LeaseOrderStatus.PLACED_AN_ORDER.getCode())) {
leaseOrderDTO.setNeedPayAmount(leaseOrderDO.getOtherAmount());
}
// 收货信息、付款信息、规格信息、快递信息、签署信息
LeaseOrderExpressDO leaseOrderExpressDO = leaseOrderDao.getLeaseOrderExpress(id);
if (leaseOrderExpressDO != null) {
leaseOrderDTO.setUavOrderExpressDTO(leaseOrderExpressDO.buildUavOrderExpressDTO());
// 快递信息
KdnExpDTO kdnExpDTO = this.getOrderExpInfo(leaseOrderExpressDO);
leaseOrderDTO.setKdnExpDTO(kdnExpDTO);
}
// 设置个人信息
UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(leaseOrderDO.getUserAccountId(), currentAccount.getToken());
if (userAccountSimpleDTO != null) {
leaseOrderDTO.setUserName(userAccountSimpleDTO.getUserName());
leaseOrderDTO.setNickname(userAccountSimpleDTO.getNickName());
leaseOrderDTO.setPhoneNum(userAccountSimpleDTO.getPhoneNum());
}
return ResultBody.success(leaseOrderDTO);
}
private KdnExpDTO getOrderExpInfo(LeaseOrderExpressDO exp) throws Exception {
String json = "";
if ("SF".equals(exp.getSendExpCode())) {
json = KdnExpressUtil.SF(exp.getTakePhone(), exp.getSendExpNo());
} else if ("JD".equals(exp.getSendExpCode())) {
json = KdnExpressUtil.JD("", exp.getSendExpNo());
} else {
json = KdnExpressUtil.others(exp.getSendExpCode(), exp.getSendExpNo());
}
KdnExpDTO kdn = JsonUtil.parseJsonToObj(json, KdnExpDTO.class);
kdn.setLogisticCode(exp.getSendExpNo());
if (!org.springframework.util.CollectionUtils.isEmpty(kdn.getTraces())) {
Collections.sort(kdn.getTraces(), Comparator.comparing(ExpStationsDTO::getAcceptTime).reversed());// 升序
}
return kdn;
}
@Override
public ResultBody close(LeaseOrderRefundVO leaseOrderRefundVO, String token) {
LeaseOrderDO leaseOrderDO = leaseOrderDao.detail(leaseOrderRefundVO.getId());
if (leaseOrderDO == null) {
return ResultBody.error("订单信息不存在!");
}
// 判断订单状态
if (leaseOrderDO.getStatusCode().compareTo(LeaseOrderStatus.PAID.getCode()) > 0) {
if (leaseOrderDO.getStatusCode().compareTo(LeaseOrderStatus.TO_BE_RETURNED.getCode()) == 0) {
return ResultBody.error("当前状态不可申请退款");
}
// 判断商品是否需要归还
if (leaseOrderRefundVO.getStatus().equals(0) && leaseOrderRefundVO.getExpressNum() == null) {
return ResultBody.error("请填充物流编号");
}
// 插入退款订单信息
LeaseRefundOrderDO leaseRefundOrderDO = new LeaseRefundOrderDO(leaseOrderRefundVO);
leaseOrderDao.addLeaseRefundOrder(leaseRefundOrderDO);
// 修改订单状态
leaseOrderDao.updateUavOrderStatus(leaseOrderRefundVO.getStatus(), LeaseOrderStatus.APPLY_REFUND.getCode());
return ResultBody.success();
} else {
// 退云享金、佣金
if (leaseOrderDO.getShareAmount().compareTo(BigDecimal.ZERO) > 0 || leaseOrderDO.getSalaryAmount().compareTo(BigDecimal.ZERO) > 0) {
PayUavWalletVO payUavWalletVO = new PayUavWalletVO();
payUavWalletVO.setCashAmount(leaseOrderDO.getShareAmount());
payUavWalletVO.setSalaryAmount(leaseOrderDO.getSalaryAmount());
payUavWalletVO.setOrderStatus(1400);
payUavWalletVO.setUserAccountId(leaseOrderDO.getUserAccountId());
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, token);
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
return resultBody;
}
}
// 微信退款
if ("wechatpay".equals(leaseOrderDO.getPayType())) {
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setOutTradeNo(leaseOrderDO.getOrderNo());
applyRefundVO.setReason("关闭租赁订单");
applyRefundVO.setRefund(leaseOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).longValue());
ResultBody applyRefund = paymentAppApi.applyRefund(applyRefundVO, token);
log.info("applyRefund res:{}", applyRefund);
if (!applyRefund.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error("关闭订单失败!");
}
}
// 修改订单状态
this.updateLeaseOrderStatus(leaseOrderRefundVO.getId(), LeaseOrderStatus.CLOSE);
return ResultBody.success();
}
}
@Transactional(rollbackFor = Exception.class)
public void updateLeaseOrderStatus(Integer id, LeaseOrderStatus leaseOrderStatus) {
leaseOrderDao.updateUavOrderStatus(id, leaseOrderStatus.getCode());
}
@Override
public ResultBody<LeaseOrderDTO> list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) {
return null;
}
}
...@@ -55,7 +55,8 @@ public class ServiceOrderTaskServiceImpl ...@@ -55,7 +55,8 @@ public class ServiceOrderTaskServiceImpl
@Autowired private PmsClient pmsClient; @Autowired private PmsClient pmsClient;
@Autowired private UserClient userClient; @Autowired
private UserAppApi userAppApi;
@Autowired private HttpUtil httpUtil; @Autowired private HttpUtil httpUtil;
...@@ -162,7 +163,7 @@ public class ServiceOrderTaskServiceImpl ...@@ -162,7 +163,7 @@ public class ServiceOrderTaskServiceImpl
} }
private Map<Integer, UserAccountSimpleDTO> getUserDTOMap(HttpServletRequest request, List<Integer> userIds) { private Map<Integer, UserAccountSimpleDTO> getUserDTOMap(HttpServletRequest request, List<Integer> userIds) {
List<UserAccountSimpleDTO> userList = userClient.feignListUserAccountByIds(userIds, request.getHeader(TokenConstant.TOKEN)); List<UserAccountSimpleDTO> userList = userAppApi.feignListUserAccountByIds(userIds, request.getHeader(TokenConstant.TOKEN));
Map<Integer, UserAccountSimpleDTO> userMap = new HashMap<>(); Map<Integer, UserAccountSimpleDTO> userMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(userList)){ if(CollectionUtils.isNotEmpty(userList)){
userMap = userList.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, d -> d, (k1, k2) -> k1)); userMap = userList.stream().collect(Collectors.toMap(UserAccountSimpleDTO::getId, d -> d, (k1, k2) -> k1));
......
...@@ -21,5 +21,5 @@ public interface UavCartService { ...@@ -21,5 +21,5 @@ public interface UavCartService {
ResultBody list(UavCartQO uavCartQO, BaseAccountDTO currentAccount); ResultBody list(UavCartQO uavCartQO, BaseAccountDTO currentAccount);
void buildUavCartCompany(Integer orderType, List<UavCartCompanyDTO> uavCartCompanyDTOS); void buildUavCartCompany(List<UavCartCompanyDTO> uavCartCompanyDTOS);
} }
package com.mmc.oms.service.uav; package com.mmc.oms.service.uav;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.ContractInfoDTO; import com.mmc.oms.model.dto.uav.UavOrderRemarkDTO;
import com.mmc.oms.model.dto.uav.UavCartCompanyDTO;
import com.mmc.oms.model.dto.uav.UavOrderDTO;
import com.mmc.oms.model.dto.user.BaseAccountDTO; 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.uav.*; import com.mmc.oms.model.vo.uav.*;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO; import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -54,4 +53,9 @@ public interface UavOrderService { ...@@ -54,4 +53,9 @@ public interface UavOrderService {
ResultBody removeUavOrder(Integer id); ResultBody removeUavOrder(Integer id);
ResultBody addOrderByCart(AddUavOrderByCartQO orderByCartQO, BaseAccountDTO currentAccount); ResultBody addOrderByCart(AddUavOrderByCartQO orderByCartQO, BaseAccountDTO currentAccount);
ResultBody deductWallet(BigDecimal allShareAmount, BigDecimal allSalaryAmount, BaseAccountDTO currentAccount);
List<UavOrderRemarkDTO> listGoodsRemark(Integer remarkType, Integer goodsId);
} }
package com.mmc.oms.service.uav.impl; package com.mmc.oms.service.uav.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.ResultEnum; import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.result.PageResult; import com.mmc.oms.common.result.PageResult;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
...@@ -15,6 +16,7 @@ import com.mmc.oms.model.qo.uav.PriceStockQO; ...@@ -15,6 +16,7 @@ import com.mmc.oms.model.qo.uav.PriceStockQO;
import com.mmc.oms.model.qo.uav.UavCartQO; import com.mmc.oms.model.qo.uav.UavCartQO;
import com.mmc.oms.model.vo.uav.UavCartVO; import com.mmc.oms.model.vo.uav.UavCartVO;
import com.mmc.oms.service.uav.UavCartService; import com.mmc.oms.service.uav.UavCartService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -28,6 +30,7 @@ import java.util.stream.Collectors; ...@@ -28,6 +30,7 @@ import java.util.stream.Collectors;
* @Date: 2023/9/16 14:40 * @Date: 2023/9/16 14:40
*/ */
@Service @Service
@Slf4j
public class UavCartServiceImpl implements UavCartService { public class UavCartServiceImpl implements UavCartService {
@Autowired @Autowired
private UavCartDao uavCartDao; private UavCartDao uavCartDao;
...@@ -71,18 +74,19 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -71,18 +74,19 @@ public class UavCartServiceImpl implements UavCartService {
if (list.size() == 0) { if (list.size() == 0) {
return ResultBody.success(PageResult.buildPage(uavCartQO.getPageNo(), uavCartQO.getPageSize(), list.size())); return ResultBody.success(PageResult.buildPage(uavCartQO.getPageNo(), uavCartQO.getPageSize(), list.size()));
} }
Integer pageNo = uavCartQO.getPageNo(); Integer pageNo = uavCartQO.getPageSize();
uavCartQO.buildCurrentPage(); uavCartQO.buildCurrentPage();
List<UavCartCompanyDO> uavCartCompanyDOS = uavCartDao.list(pageNo, uavCartQO.getPageSize(), currentAccount.getUserAccountId()); List<UavCartCompanyDO> uavCartCompanyDOS = uavCartDao.list(uavCartQO.getPageNo(), uavCartQO.getPageSize(), currentAccount.getUserAccountId());
List<UavCartCompanyDTO> uavCartCompanyDTOS = uavCartCompanyDOS.stream().map(UavCartCompanyDO::buildUavCartCompanyDTO).collect(Collectors.toList()); List<UavCartCompanyDTO> uavCartCompanyDTOS = uavCartCompanyDOS.stream().map(UavCartCompanyDO::buildUavCartCompanyDTO).collect(Collectors.toList());
// 同步商品信息,价格及是否展示 // 同步商品信息,价格及是否展示
// 根据规格查询商品信息 // 根据规格查询商品信息
buildUavCartCompany(uavCartQO.getOrderType(), uavCartCompanyDTOS); buildUavCartCompany(uavCartCompanyDTOS);
uavCartCompanyDTOS.removeIf(i -> CollectionUtils.isEmpty(i.getUavCartDOS()));
return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), uavCartCompanyDTOS)); return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), uavCartCompanyDTOS));
} }
@Override @Override
public void buildUavCartCompany(Integer orderType, List<UavCartCompanyDTO> uavCartCompanyDTOS){ public void buildUavCartCompany(List<UavCartCompanyDTO> uavCartCompanyDTOS){
List<PriceStockQO> priceStockQOS = new ArrayList<>(); List<PriceStockQO> priceStockQOS = new ArrayList<>();
for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) { for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) {
for (UavCartDTO uavCartDO : uavCartCompanyDTO.getUavCartDOS()) { for (UavCartDTO uavCartDO : uavCartCompanyDTO.getUavCartDOS()) {
...@@ -92,35 +96,29 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -92,35 +96,29 @@ public class UavCartServiceImpl implements UavCartService {
} }
// 最新规格信息 // 最新规格信息
List<UavCartDTO> uavCartDTOS = pmsAppApi.listPriceStock(priceStockQOS); List<UavCartDTO> uavCartDTOS = pmsAppApi.listPriceStock(priceStockQOS);
if (CollectionUtils.isEmpty(uavCartDTOS)) {
return;
}
// 更新最新的规格信息 // 更新最新的规格信息
for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) { for (UavCartCompanyDTO uavCartCompanyDTO : uavCartCompanyDTOS) {
uavCartCompanyDTO.setCompanyName(uavCartCompanyDTO.getUavCartDOS().get(0).getCompanyName()); uavCartCompanyDTO.setCompanyName(uavCartCompanyDTO.getUavCartDOS().get(0).getCompanyName());
for (UavCartDTO uavCartDTO : uavCartCompanyDTO.getUavCartDOS()) { for (UavCartDTO uavCartDTO : uavCartCompanyDTO.getUavCartDOS()) {
// 从最新规格中逐个更新 // 标识是否找到
Boolean flag = false;
// 从最新规格中逐个更新,没有则置为失效
for (UavCartDTO newestUavCartDTO : uavCartDTOS) { for (UavCartDTO newestUavCartDTO : uavCartDTOS) {
if (uavCartDTO.getMallGoodsId().equals(newestUavCartDTO.getMallGoodsId()) if (uavCartDTO.getMallGoodsId().equals(newestUavCartDTO.getMallGoodsId())
&& uavCartDTO.getProductSpec().equals(newestUavCartDTO.getProductSpec())) { && uavCartDTO.getProductSpec().equals(newestUavCartDTO.getProductSpec())) {
// 不符合的移除 flag = true;
if (UavOrderType.PAY.getCode().equals(orderType)) {
if (newestUavCartDTO.getPriceShow().equals(0)) {
uavCartCompanyDTO.getUavCartDOS().remove(uavCartDTO);
}
}else {
if (newestUavCartDTO.getPriceShow().equals(1)) {
uavCartCompanyDTO.getUavCartDOS().remove(uavCartDTO);
}
}
uavCartDTO.setPriceShow(newestUavCartDTO.getPriceShow()); uavCartDTO.setPriceShow(newestUavCartDTO.getPriceShow());
uavCartDTO.setSalePrice(newestUavCartDTO.getSalePrice()); uavCartDTO.setSalePrice(newestUavCartDTO.getSalePrice());
uavCartDTO.setShelfStatus(newestUavCartDTO.getShelfStatus());
uavCartDTO.setDeleted(newestUavCartDTO.getDeleted());
break; break;
} }
} }
// 找不到或被删除则置为失效
if (!flag || uavCartDTO.getDeleted().equals(1)) {
uavCartDTO.setShelfStatus(0);
uavCartDTO.setDeleted(1);
} }
if (CollectionUtils.isEmpty(uavCartCompanyDTO.getUavCartDOS())) {
uavCartCompanyDTOS.remove(uavCartCompanyDTO);
} }
} }
} }
......
...@@ -14,6 +14,7 @@ import com.mmc.oms.dao.UserAddressDao; ...@@ -14,6 +14,7 @@ import com.mmc.oms.dao.UserAddressDao;
import com.mmc.oms.dao.uav.UavOrderDao; import com.mmc.oms.dao.uav.UavOrderDao;
import com.mmc.oms.dao.uav.UavOrderExpressDao; import com.mmc.oms.dao.uav.UavOrderExpressDao;
import com.mmc.oms.dao.uav.UavPODao; import com.mmc.oms.dao.uav.UavPODao;
import com.mmc.oms.dao.uav.UavPayWxDao;
import com.mmc.oms.entity.mall.UserAddressDO; import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.entity.uav.*; import com.mmc.oms.entity.uav.*;
import com.mmc.oms.enums.UavOrderStatus; import com.mmc.oms.enums.UavOrderStatus;
...@@ -68,6 +69,9 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -68,6 +69,9 @@ public class UavOrderServiceImpl implements UavOrderService {
private UavPODao uavPODao; private UavPODao uavPODao;
@Autowired @Autowired
private UavPayWxDao uavPayWxDao;
@Autowired
private DemandReleaseOrderService demandReleaseOrderService; private DemandReleaseOrderService demandReleaseOrderService;
@Autowired @Autowired
...@@ -163,17 +167,8 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -163,17 +167,8 @@ public class UavOrderServiceImpl implements UavOrderService {
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode(); statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
} }
} }
PayUavWalletVO payUavWalletVO = new PayUavWalletVO(); // 抵扣余额
payUavWalletVO.setCashAmount(shareAmount); this.deductWallet(shareAmount, salaryAmount, currentAccount);
payUavWalletVO.setSalaryAmount(salaryAmount);
payUavWalletVO.setOrderStatus(100);
payUavWalletVO.setUserAccountId(currentAccount.getUserAccountId());
if (shareAmount.compareTo(BigDecimal.ZERO) > 0 || salaryAmount.compareTo(BigDecimal.ZERO) > 0) {
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, currentAccount.getToken());
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())){
return resultBody;
}
}
} }
// 添加总订单表 // 添加总订单表
UavOrderDO uavOrderDO = new UavOrderDO(); UavOrderDO uavOrderDO = new UavOrderDO();
...@@ -463,9 +458,18 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -463,9 +458,18 @@ public class UavOrderServiceImpl implements UavOrderService {
} }
// 修改订单状态 // 修改订单状态
this.updateUavOrderStatus(uavOrderRemarkVO.getUavOrderId(), UavOrderStatus.WAITING_REMARK); this.updateUavOrderStatus(uavOrderRemarkVO.getUavOrderId(), UavOrderStatus.WAITING_REMARK);
uavOrderDao.updateUavOrderRemarkStatus(uavOrderDO.getId());
List<UavOrderSkuDO> uavOrderSkuDOS = uavOrderDao.listUavOrderSkuDO(uavOrderDO.getId());
List<Integer> mallGoodsIds = uavOrderSkuDOS.stream().map(i -> i.getMallGoodsId()).distinct().collect(Collectors.toList());
List<UavOrderRemarkDO> uavOrderRemarkDOS = new ArrayList<UavOrderRemarkDO>();
for (Integer mallGoodsId : mallGoodsIds) {
// 填入评价内容 // 填入评价内容
UavOrderRemarkDO uavOrderRemarkDO = new UavOrderRemarkDO(uavOrderRemarkVO); UavOrderRemarkDO uavOrderRemarkDO = new UavOrderRemarkDO(uavOrderRemarkVO);
uavOrderDao.addRemarkOrder(uavOrderRemarkDO); uavOrderRemarkDO.setRemarkType(0);
uavOrderRemarkDO.setMallGoodsId(mallGoodsId);
uavOrderRemarkDOS.add(uavOrderRemarkDO);
}
uavOrderDao.addRemarkOrder(uavOrderRemarkDOS);
return ResultBody.success(); return ResultBody.success();
} }
...@@ -539,6 +543,15 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -539,6 +543,15 @@ public class UavOrderServiceImpl implements UavOrderService {
@Transactional @Transactional
@Override @Override
public void payUavOrder(TopUpOrderVO topUpOrderVO) { public void payUavOrder(TopUpOrderVO topUpOrderVO) {
if (topUpOrderVO.getOrderNo().startsWith("m")){
payMultiUavOrder(topUpOrderVO);
}else {
paySingleUavOrder(topUpOrderVO);
}
}
@Transactional
public void paySingleUavOrder(TopUpOrderVO topUpOrderVO) {
// 添加支付凭证、记录支付方式 // 添加支付凭证、记录支付方式
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(topUpOrderVO.getOrderNo()); UavOrderDO uavOrderDO = uavOrderDao.detailByNo(topUpOrderVO.getOrderNo());
if (uavOrderDO == null) { if (uavOrderDO == null) {
...@@ -561,6 +574,24 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -561,6 +574,24 @@ public class UavOrderServiceImpl implements UavOrderService {
} }
@Transactional @Transactional
public void payMultiUavOrder(TopUpOrderVO topUpOrderVO) {
UavPayWxDO uavPayWx = uavPayWxDao.getUavPayWx(topUpOrderVO.getOrderNo());
if (uavPayWx != null) {
List<UavPayWxSubDO> payWxSubDOS = uavPayWxDao.listUavPayWxSub(uavPayWx.getId());
for (UavPayWxSubDO wxSubDO : payWxSubDOS) {
TopUpOrderVO upOrderVO = new TopUpOrderVO();
upOrderVO.setOpenid(topUpOrderVO.getOpenid());
upOrderVO.setOrderNo(wxSubDO.getOrderNo());
upOrderVO.setAmount(wxSubDO.getAmount().multiply(BigDecimal.valueOf(100)).intValue());
upOrderVO.setTradeState(topUpOrderVO.getTradeState());
upOrderVO.setTradeStateDesc(topUpOrderVO.getTradeStateDesc());
this.paySingleUavOrder(upOrderVO);
}
}
uavPayWxDao.finishUavPayWx(topUpOrderVO.getOrderNo(), topUpOrderVO.getTradeState());
}
@Transactional
@Override @Override
public ResultBody confirmOrder(UavOrderVO uavOrderVO, BaseAccountDTO currentAccount) { public ResultBody confirmOrder(UavOrderVO uavOrderVO, BaseAccountDTO currentAccount) {
// 修改订单状态 // 修改订单状态
...@@ -663,30 +694,91 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -663,30 +694,91 @@ public class UavOrderServiceImpl implements UavOrderService {
@Transactional @Transactional
@Override @Override
public ResultBody addOrderByCart(AddUavOrderByCartQO orderByCartQO, BaseAccountDTO currentAccount) { public ResultBody addOrderByCart(AddUavOrderByCartQO orderByCartQO, BaseAccountDTO currentAccount) {
uavCartService.buildUavCartCompany(orderByCartQO.getOrderType(), orderByCartQO.getCartCompanyDTOS()); uavCartService.buildUavCartCompany(orderByCartQO.getCartCompanyDTOS());
// 可以多商家多商品,为每个商家生成一个订单
List<UavOrderDO> orders = new ArrayList<UavOrderDO>();
BigDecimal allAmount = BigDecimal.ZERO;
// 意向订单只能下一个商家的 // 意向订单只能下一个商家的
if (orderByCartQO.getOrderType().equals(UavOrderType.SIGN.getCode()) && orderByCartQO.getCartCompanyDTOS().size() > 1) { if (orderByCartQO.getOrderType().equals(UavOrderType.SIGN.getCode()) && orderByCartQO.getCartCompanyDTOS().size() > 1) {
return ResultBody.error("意向订单仅限下单个商家的商品"); return ResultBody.error("意向订单仅限下单个商家的商品");
} }
// 云享金、余额扣除相关
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken());
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) {
return payResInfo;
}
PayWalletDTO payWalletDTO = payResInfo.getResult();
// 购物车id
List<Integer> cartIds = new ArrayList<>();
// 可以多商家多商品,为每个商家生成一个订单
List<UavOrderDO> orders = new ArrayList<UavOrderDO>();
BigDecimal allOtherAmount = BigDecimal.ZERO;
BigDecimal allShareAmount = BigDecimal.ZERO;
BigDecimal allSalaryAmount = BigDecimal.ZERO;
// 生成订单信息 // 生成订单信息
for (UavCartCompanyDTO companyDTO : orderByCartQO.getCartCompanyDTOS()) { for (UavCartCompanyDTO companyDTO : orderByCartQO.getCartCompanyDTOS()) {
BigDecimal singleOrderAmount = BigDecimal.ZERO; BigDecimal orderAmount = BigDecimal.ZERO;
UavOrderDO uavOrderDO = new UavOrderDO(); UavOrderDO uavOrderDO = new UavOrderDO();
// 校验云享金、钱包余额是否足够抵扣
BigDecimal shareAmount = BigDecimal.ZERO;
BigDecimal salaryAmount = BigDecimal.ZERO;
BigDecimal otherAmount = BigDecimal.ZERO;
Integer statusCode = null;
List<UavOrderSkuDO> skuDOS = new ArrayList<UavOrderSkuDO>(); List<UavOrderSkuDO> skuDOS = new ArrayList<UavOrderSkuDO>();
String orderNo = CodeUtil.uavOrderCode(); String orderNo = CodeUtil.uavOrderCode();
if (CollectionUtils.isNotEmpty(companyDTO.getUavCartDOS())) { if (CollectionUtils.isNotEmpty(companyDTO.getUavCartDOS())) {
for (UavCartDTO uavCartDTO : companyDTO.getUavCartDOS()) { for (UavCartDTO uavCartDTO : companyDTO.getUavCartDOS()) {
// 记录购物车id
cartIds.add(uavCartDTO.getId());
// 购物车记录转换成对应规格
UavOrderSkuDO uavOrderSkuDO = new UavOrderSkuDO(uavCartDTO); UavOrderSkuDO uavOrderSkuDO = new UavOrderSkuDO(uavCartDTO);
skuDOS.add(uavOrderSkuDO); skuDOS.add(uavOrderSkuDO);
singleOrderAmount = singleOrderAmount.add(uavCartDTO.getSalePrice().multiply(BigDecimal.valueOf(uavCartDTO.getOrderNum()))); orderAmount = orderAmount.add(uavCartDTO.getSalePrice().multiply(BigDecimal.valueOf(uavCartDTO.getOrderNum())));
if (uavCartDTO.getShelfStatus().equals(0)) {
return ResultBody.error(uavCartDTO.getTradeName() + " 已下架,请重新选择");
} }
} }
}else {
return ResultBody.error("所选规格无效");
}
otherAmount = otherAmount.add(orderAmount);
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if (orderByCartQO.getOrderType().equals(UavOrderType.PAY.getCode())){
// 抵扣云享金
if (companyDTO.getDeductShareAmount().equals(1) && payWalletDTO.getCashAmt().compareTo(BigDecimal.ZERO) > 0) {
if (payWalletDTO.getCashAmt().compareTo(otherAmount) > 0) {
shareAmount = shareAmount.add(otherAmount);
}else {
shareAmount = shareAmount.add(payWalletDTO.getCashAmt());
}
otherAmount = otherAmount.subtract(shareAmount);
allShareAmount = allShareAmount.add(shareAmount);
payWalletDTO.setCashAmt(payWalletDTO.getCashAmt().subtract(shareAmount));
}
// 抵扣余额
if (companyDTO.getDeductSalaryAmount().equals(1) && payWalletDTO.getSalaryAmt().compareTo(BigDecimal.ZERO) > 0
&& otherAmount.compareTo(BigDecimal.ZERO) > 0) {
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) > 0) {
salaryAmount = salaryAmount.add(payWalletDTO.getSalaryAmt());
}else {
salaryAmount = salaryAmount.add(otherAmount);
}
otherAmount = otherAmount.subtract(salaryAmount);
allSalaryAmount = allSalaryAmount.add(salaryAmount);
payWalletDTO.setSalaryAmt(payWalletDTO.getSalaryAmt().subtract(salaryAmount));
}
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
}else {
statusCode = UavOrderStatus.PAYING.getCode();
}
}else {
statusCode = UavOrderStatus.CONFIRM.getCode();
}
// 设置订单状态 // 设置订单状态
// uavOrderDO.setStatusCode(); uavOrderDO.setStatusCode(statusCode);
uavOrderDO.setOrderTotalAmount(singleOrderAmount); uavOrderDO.setOrderTotalAmount(orderAmount);
uavOrderDO.setOtherAmount(otherAmount);
uavOrderDO.setSalaryAmount(salaryAmount);
uavOrderDO.setShareAmount(shareAmount);
uavOrderDO.setUserAccountId(currentAccount.getUserAccountId()); uavOrderDO.setUserAccountId(currentAccount.getUserAccountId());
uavOrderDO.setUserAddressId(orderByCartQO.getUserAddressId()); uavOrderDO.setUserAddressId(orderByCartQO.getUserAddressId());
uavOrderDO.setThirdBackUserAccountId(companyDTO.getThirdBackUserAccountId()); uavOrderDO.setThirdBackUserAccountId(companyDTO.getThirdBackUserAccountId());
...@@ -696,15 +788,87 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -696,15 +788,87 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderDO.setOrderNo(orderNo); uavOrderDO.setOrderNo(orderNo);
uavOrderDO.setSkuDOS(skuDOS); uavOrderDO.setSkuDOS(skuDOS);
orders.add(uavOrderDO); orders.add(uavOrderDO);
allAmount = allAmount.add(singleOrderAmount); allOtherAmount = allOtherAmount.add(otherAmount);
} }
// 云享金、余额扣除相关 // 抵扣余额
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken()); if (allShareAmount.compareTo(BigDecimal.ZERO) > 0 || allSalaryAmount.compareTo(BigDecimal.ZERO) > 0) {
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null){ this.deductWallet(allShareAmount, allSalaryAmount, currentAccount);
return payResInfo; }
// 添加订单信息
uavOrderDao.batchAddOrder(orders);
// 全部规格信息
List<UavOrderSkuDO> allSkuDOS = new ArrayList<UavOrderSkuDO>();
for (UavOrderDO order : orders) {
for (UavOrderSkuDO skuDO : order.getSkuDOS()) {
skuDO.setUavOrderId(order.getId());
allSkuDOS.add(skuDO);
}
}
// 批量添加规格
uavOrderDao.addOrderSku(allSkuDOS);
// 多个添加收货地址
List<UavOrderExpressDO> expressDOS = new ArrayList<UavOrderExpressDO>();
UserAddressDO userAddressDO = userAddressDao.selectById(orderByCartQO.getUserAddressId());
for (UavOrderDO order : orders) {
UavOrderExpressDO uavOrderExpressDO = new UavOrderExpressDO(userAddressDO);
uavOrderExpressDO.setUavOrderId(order.getId());
expressDOS.add(uavOrderExpressDO);
}
// 批量添加收货地址
uavOrderExpressDao.batchAddOrderExpress(expressDOS);
// 批量标识购物车
uavCartService.batchRemove(cartIds);
List<UavOrderDTO> collect = orders.stream().map(UavOrderDO::buildUavOrderDTO).collect(Collectors.toList());
long unFinishPay = collect.stream().filter(i -> i.getStatusCode().equals(UavOrderStatus.PAYING.getCode())).count();
MultiUavOrderDTO multiUavOrderDTO = new MultiUavOrderDTO();
multiUavOrderDTO.setAllOtherAmount(allOtherAmount);
multiUavOrderDTO.setUavOrderDTOS(collect);
// 待订单个数大于1
if (unFinishPay > 0) {
String payNo = CodeUtil.multiUavOrderPayCode();
multiUavOrderDTO.setPayNo(payNo);
UavPayWxDO uavPayWx = new UavPayWxDO();
uavPayWx.setPayNo(payNo);
uavPayWx.setAmount(allOtherAmount);
uavPayWx.setTradeState("WAIT");
List<UavPayWxSubDO> payWxSubDOS = new ArrayList<>();
uavPayWxDao.addUavPayWx(uavPayWx);
collect.stream().forEach(i -> {
if (i.getStatusCode().equals(UavOrderStatus.PAYING.getCode())) {
UavPayWxSubDO uavPayWxSubDO = new UavPayWxSubDO();
uavPayWxSubDO.setUavPayWxId(uavPayWx.getId());
uavPayWxSubDO.setUavOrderId(i.getId());
uavPayWxSubDO.setOrderNo(i.getOrderNo());
uavPayWxSubDO.setAmount(i.getOtherAmount());
payWxSubDOS.add(uavPayWxSubDO);
}
});
uavPayWxDao.batchAddUavPayWxSub(payWxSubDOS);
}
return ResultBody.success(multiUavOrderDTO);
} }
PayWalletDTO payWalletDTO = payResInfo.getResult();
@Override
public ResultBody deductWallet(BigDecimal allShareAmount, BigDecimal allSalaryAmount, BaseAccountDTO currentAccount) {
PayUavWalletVO payUavWalletVO = new PayUavWalletVO();
payUavWalletVO.setCashAmount(allShareAmount);
payUavWalletVO.setSalaryAmount(allSalaryAmount);
payUavWalletVO.setOrderStatus(100);
payUavWalletVO.setUserAccountId(currentAccount.getUserAccountId());
if (allShareAmount.compareTo(BigDecimal.ZERO) > 0 || allSalaryAmount.compareTo(BigDecimal.ZERO) > 0) {
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, currentAccount.getToken());
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
ResultBody.error("余额抵扣失败!");
}
}
return ResultBody.success(); return ResultBody.success();
} }
@Override
public List<UavOrderRemarkDTO> listGoodsRemark(Integer remarkType, Integer goodsId) {
List<UavOrderRemarkDO> remarkDOS = uavOrderDao.listGoodsRemark(remarkType, goodsId);
return CollectionUtils.isNotEmpty(remarkDOS) ? remarkDOS.stream()
.map(UavOrderRemarkDO::buildUavOrderRemarkDTO).collect(Collectors.toList()) : null;
}
} }
package com.mmc.oms.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author 作者 geDuo
* @version 创建时间:2021年7月17日 下午5:28:19
* @explain 日期时间工具类
*/
public class TDateUtil {
public static final String ONE_WEEK = "oneweek";
public static final String ONE_MONTH = "onemonth";
public static final String THREE_MONTH = "threemonth";
public static final String SIX_MONTH = "sixmonth";
public static final String ONE_YEAR = "oneyear";
public static String getCurrentDate() {
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm");// 设置日期格式
String date = df.format(new Date());// new Date()为获取当前系统时间
return date;
}
public static String getCurrentDateByType(String format) {
SimpleDateFormat df = new SimpleDateFormat(format);// 设置日期格式
String date = df.format(new Date());// new Date()为获取当前系统时间
return date;
}
public static String getCurrentDateMidd() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
String date = df.format(new Date());// new Date()为获取当前系统时间
return date;
}
public static Date getDate(String str, String format) {
Date date = null;
try {
SimpleDateFormat df = new SimpleDateFormat(format);// 设置日期格式
// String dates=df.format(new Date());// new Date()为获取当前系统时间
date = df.parse(str);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
/**
* date类型转字符串
*/
public static String getDateStr(Date date, String type) {
SimpleDateFormat format = new SimpleDateFormat(type);
String s = format.format(date);
return s;
}
/**
* 根据日期获得随机数
*/
public static Integer getDateRandom(Date date, String format, int count) {
String code = "";
for (int i = 0; i < count; i++) {
code = code + (int) (Math.random() * 9);
}
code = TDateUtil.getDateStr(date, format) + code;
return Integer.parseInt(code);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public static Date dateFromSecond(long sceondTime) {
return new Date(sceondTime * 1000);
}
/**
* 10位数的秒转日期字符
*
* @param mss
* @return
*/
public static String dateFromSecondStr(long sceondTime) {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(sceondTime * 1000));
}
/**
* 秒转时分秒
*
* @param secondTime
* @return
*/
public static String hmsFromSecond(Integer secondTime) {
Integer hour = secondTime / 60 / 60;
Integer minutes = secondTime / 60 % 60;
Integer remainingSeconds = secondTime % 60;
return (hour + "h" + minutes + "min" + remainingSeconds + "s");
}
public static String hmsFromSecondFormat(long secondTime) {
long day = secondTime / 60 / 60 / 24;
long hour = secondTime / 60 / 60 % 24;
long minutes = secondTime / 60 % 60;
long remainingSeconds = secondTime % 60;
if (day > 0) {
return (day + "天" + hour + "小时" + minutes + "分" + remainingSeconds + "秒");
}
return (hour + "小时" + minutes + "分" + remainingSeconds + "秒");
}
/**
* 两个日期的相差秒数
*
* @param maxDate
* @param minDate
* @return
*/
public static long calLastedTime(Date maxDate, Date minDate) {
long a = maxDate.getTime();
long b = minDate.getTime();
long c = (a - b) / 1000;
return c;
}
/**
* 获取某个月的月底最后一天的时间
*/
public static Date getMonthLatestDay(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(ca.getTime());
Date dates = getDate(last, "yyyy-MM-dd");
return dates;
}
/**
* 某个时间 加N天
*/
public static Date nextNumDay(Date d, int num) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
Date now = d;
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DAY_OF_MONTH, num);
String last = format.format(calendar.getTime());
date = getDate(last, "yyyy-MM-dd");
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
/**
* 某天个时间加 N 小时
*
* @param now
* @param num
* @return
*/
public static Date addHourTime(Date now, int num) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.HOUR, num);
String last = format.format(calendar.getTime());
date = getDate(last, "yyyy-MM-dd HH:mm:ss");
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
/**
* 某个时间加n个月加n天(负数为减)
*/
@SuppressWarnings("static-access")
public static Date getMonthNDayN(Date date, int month, int day) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date news = null;
try {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, month);
calendar.add(calendar.DATE, day);
String last = format.format(calendar.getTime());
news = getDate(last, "yyyy-MM-dd");
} catch (Exception e) {
e.printStackTrace();
}
return news;
}
/**
* 时间戳-计算小时
*/
public static long getDistanceTime(long time1, long time2) {
long diff = 0;
long day = 0;
long hour = 0;
if (time1 < time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
return hour;
}
/**
* 两个时间之间相差距离多少天
*
* @param one 时间参数 1:
* @param two 时间参数 2:
* @return 相差天数
*/
public static int distanceDays(Date one, Date two) {
int days = 0;
long time1 = one.getTime();
long time2 = two.getTime();
long diff;
if (time1 < time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
days = new Long(diff / (1000 * 60 * 60 * 24)).intValue();
return days;
}
public static Date nextNumDateTime(Date d, int num) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
Date now = d;
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DAY_OF_MONTH, num);
String last = format.format(calendar.getTime());
date = getDate(last, "yyyy-MM-dd HH:mm:ss");
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
public static String createYearWeek(String startStr, String endStr) {
if (startStr == null || "".equals(startStr) || endStr == null || "".equals(endStr)) {
return "起止日期不能为空";
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date start = null;
Date end = null;
Date startDate;
Date endDate;
int dayOfWeek;
boolean goOn = true;
int no = 0;
try {
start = sdf.parse(startStr);
end = sdf.parse(endStr);
} catch (ParseException e) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
start = simpleDateFormat.parse(startStr);
end = simpleDateFormat.parse(endStr);
} catch (ParseException pe) {
pe.printStackTrace();
}
}
if (start.compareTo(end) > -1) {
return "结束日期必须大于开始日期";
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
List<Map<String, String>> weekList = new ArrayList<>();
if (dayOfWeek > 1 && dayOfWeek < 7) {
do {
startDate = start;
calendar.add(Calendar.DATE, (8 - dayOfWeek));
endDate = calendar.getTime();
no += 1;
Map<String, String> map = new HashMap<>();
map.put("startOfWeek", sdf.format(startDate));
map.put("weekNo", no + "");
if (endDate.compareTo(end) < 0) {
map.put("endOfWeek", sdf.format(endDate));
weekList.add(map);
calendar.add(Calendar.DATE, 1);
start = calendar.getTime();
dayOfWeek = 2;
} else {
map.put("endOfWeek", sdf.format(end));
weekList.add(map);
goOn = false;
}
} while (goOn);
} else {
no += 1;
startDate = start;
if (dayOfWeek == 1) {
endDate = start;
} else {
calendar.add(Calendar.DATE, 1);
endDate = calendar.getTime();
}
Map<String, String> map = new HashMap<>();
map.put("startOfWeek", sdf.format(startDate));
map.put("endOfWeek", sdf.format(endDate));
map.put("weekNo", no + "");
weekList.add(map);
calendar.add(Calendar.DATE, 1);
start = calendar.getTime();
do {
startDate = start;
calendar.add(Calendar.DATE, 6);
endDate = calendar.getTime();
no += 1;
map = new HashMap<>();
map.put("startOfWeek", sdf.format(startDate));
map.put("weekNo", no + "");
if (endDate.compareTo(end) < 0) {
map.put("endOfWeek", sdf.format(endDate));
weekList.add(map);
calendar.add(Calendar.DATE, 1);
start = calendar.getTime();
} else {
map.put("endOfWeek", sdf.format(end));
weekList.add(map);
goOn = false;
}
} while (goOn);
}
return weekList.toString();
}
/**
* 获取起止日期
*
* @param sdf 需要显示的日期格式
* @param date 需要参照的日期
* @param n 最近n周
* @param option 0 开始日期;1 结束日期
* @param k 0 包含本周 1 不包含本周
* @return
*/
public static String getFromToDate(SimpleDateFormat sdf, Date date, int n, int option, int k) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
int offset = 0 == option ? 1 - dayOfWeek : 7 - dayOfWeek;
int amount = 0 == option ? offset - (n - 1 + k) * 7 : offset - k * 7;
calendar.add(Calendar.DATE, amount);
return sdf.format(calendar.getTime());
}
/**
* 根据当前日期获得最近n周的日期区间(包含本周)
*
* @param n
* @param sdf
* @return
*/
public static String getNWeekTimeInterval(int n, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);// 设置日期格式
String beginDate = getFromToDate(sdf, new Date(), n, 0, 0);
String endDate = getFromToDate(sdf, new Date(), n, 1, 0);
return beginDate + "," + endDate;
}
/**
* 根据当前日期获得最近n周的日期区间(不包含本周)
*
* @param n
* @param sdf
* @return
*/
public static String getNWeekTimeIntervalTwo(int n, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);// 设置日期格式
String beginDate = getFromToDate(sdf, new Date(), n, 0, 1);
String endDate = getFromToDate(sdf, new Date(), n, 1, 1);
return beginDate + "," + endDate;
}
/**
* 根据当前日期获得本周的日期区间(本周周一和周日日期)
*
* @param sdf
* @return
*/
public static String getThisWeekTimeInterval(String format) {
return getNWeekTimeInterval(1, format);
}
/**
* 根据当前日期获得上周的日期区间(上周周一和周日日期)
*
* @param sdf
* @return
*/
public static String getLastWeekTimeInterval(String format) {
return getNWeekTimeIntervalTwo(1, format);
}
/**
* 获取某个日期最近一个的星期日
*
* @return
*/
public static Date getLatestWeekend(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
Date endDate = TDateUtil.nextNumDay(date, w * -1);
return endDate;
}
/**
* 获取N周的星期一的日期(正加负减)
*
* @param date
* @return
*/
public static Date getMinMonday(Date date, int weekNum) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
Date endDate = TDateUtil.nextNumDay(date, w * -1);
Date startDate = TDateUtil.nextNumDay(endDate, (weekNum * 7) + 1);
return startDate;
}
/**
* 获取某个月加几个月后一号的日期
*/
@SuppressWarnings("static-access")
public static Date getAddMonThDay(Date date, int i) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendar.MONTH, i);
calendar.set(Calendar.DAY_OF_MONTH, 1);
String last = format.format(calendar.getTime());
date = getDate(last, "yyyy-MM-dd");
return date;
}
/**
* 某个月最后一天
*/
public static Date getAnyMonthLastDay(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(ca.getTime());
date = getDate(last, "yyyy-MM-dd");
return date;
}
public static Date getDate(Date date, String type) {
SimpleDateFormat format = new SimpleDateFormat(type);
String s = format.format(date);
return getDate(s, type);
}
/**
* 获取去年今天的日期
*/
public static Date getLastYearTodayDate() {
Calendar instance = Calendar.getInstance();
instance.add(Calendar.YEAR, -1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String s = format.format(instance.getTime());
return getDate(s, "yyyy-MM-dd");
}
/**
* 获取昨天的日期
*
* @param type
* @return
*/
public static String getYesterdayDateByType(String type) {
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DAY_OF_MONTH, -1);
Date time = instance.getTime();
SimpleDateFormat format = new SimpleDateFormat(type);
return format.format(time);
}
/**
* 判断两个时间是不是在同一个月
*/
public static boolean isSameMonth(Date date1, Date date2) {
Calendar c = Calendar.getInstance();
c.setTime(date1);
int month1 = c.get(Calendar.MONTH);
c.setTime(date2);
int month2 = c.get(Calendar.MONTH);
if (month1 == month2) {
return true;
}
return false;
}
/**
* 间隔天数
*
* @param startTime
* @param endTime
* @return
*/
public static int isolateDayNum(String startTime, String endTime) {
Date startDate = getDate(startTime, "yyyy-MM-dd");
Date endDate = getDate(endTime, "yyyy-MM-dd");
long differentMillis = endDate.getTime() - startDate.getTime();
long dayNum = differentMillis / (1000 * 60 * 60 * 24);
return (int) dayNum;
}
/**
* 获取某月最后一天的时间
*
* @param yearMonth
* @return
*/
public static String getLastDateTimeOfMonth(String yearMonth) {
SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar instance = Calendar.getInstance();
try {
Date parse = format0.parse(yearMonth);
instance.setTime(parse);
instance.set(Calendar.DAY_OF_MONTH, instance.getActualMaximum(Calendar.DAY_OF_MONTH));
instance.set(Calendar.HOUR_OF_DAY, 23);
instance.set(Calendar.MINUTE, 59);
instance.set(Calendar.SECOND, 59);
String format = format1.format(instance.getTime());
return format;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static Date getStrToDate(String str) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
Date date = null;
try {
if (str == null) {
date = null;
} else {
date = dateFormat.parse(str);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static int getStageByDate(Date date) {
Calendar instance = Calendar.getInstance();
instance.setTime(date);
//当前时间
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String format = dateFormat.format(date);
try {
Date currentTime = dateFormat.parse(format);
Date parse1 = dateFormat.parse("05:00:00");
Date parse2 = dateFormat.parse("11:00:00");
Date parse3 = dateFormat.parse("17:00:00");
Date parse4 = dateFormat.parse("00:00:00");
//A:05:00-11:00 | B:11:00-17:00 | C:00:00-05:00,17:00-00:00
if (currentTime.after(parse4) && currentTime.before(parse1)) {
return 3;
} else if (currentTime.after(parse1) && currentTime.before(parse2)) {
return 1;
} else if (currentTime.after(parse2) && currentTime.before(parse3)) {
return 2;
} else if (currentTime.after(parse3) && currentTime.after(parse4)) {
return 4;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public static String getCurrentYear() {
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
return year;
}
}
...@@ -70,5 +70,5 @@ pms: ...@@ -70,5 +70,5 @@ pms:
ims: ims:
url: https://test.iuav.shop/release/ url: https://test.iuav.shop/release/
scheduling:
enabled: true
<?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.data.OrderReportDao">
</mapper>
\ No newline at end of file
<?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.lease.LeaseOrderDao">
<insert id="addOrder" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.oms.entity.lease.LeaseOrderDO">
insert into lease_order (order_no,
status_code,
user_account_id,
lease_goods_id,
company_name,
third_back_user_account_id,
order_name,
sku_img,
order_total_amount,
salary_amount,
share_amount,
other_amount,
user_address_id,
pay_time,
user_remark,
unit_price,
ware_num,
deposit,
start_date,
end_date)
values (#{orderNo}, #{statusCode}, #{userAccountId}, #{leaseGoodsId}, #{companyName}, #{thirdBackUserAccountId},
#{orderName}, #{skuImg}, #{orderTotalAmount}, #{salaryAmount}, #{shareAmount}, #{otherAmount},
#{userAddressId},
#{payTime}, #{userRemark}, #{unitPrice}, #{wareNum}, #{deposit}, #{startDate}, #{endDate});
</insert>
<insert id="addAddress">
insert into lease_order_express(lease_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region,
take_address, create_time)
values (#{leaseOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},
NOW())
</insert>
<insert id="addLeaseRefundOrder">
insert into lease_order_id,status,express_num,file,reason
values (#{leaseOrderId}, #{status}, #{expressNum}, #{file}, #{reason})
</insert>
<update id="updateUavOrderStatus">
update lease_order
set status_code = #{code}
where id = #{id}
</update>
<sql id="lease_order_column">
id
,order_no,status_code,user_account_id,lease_goods_id,company_name,third_back_user_account_id,
order_name,sku_img,sku,order_total_amount,salary_amount,share_amount,other_amount,pay_type,
user_address_id,user_remark,seller_remark,pay_time,confirm_receipt_time,version,remark_status,mode_of_delivery_Info,
proportion,show_user_port,create_time,update_time,unit_price,ware_num,deposit,start_date,end_date,shut_reason,send_ware_time
</sql>
<select id="detail" resultType="com.mmc.oms.entity.lease.LeaseOrderDO">
select
<include refid="lease_order_column"/>
from lease_order where id = #{id}
</select>
<sql id="lease_order_express_column">
id
, lease_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>
<select id="getLeaseOrderExpress" resultType="com.mmc.oms.entity.lease.LeaseOrderExpressDO">
select
<include refid="lease_order_express_column"/>
from lease_order_express
where lease_order_id = #{id}
</select>
</mapper>
\ No newline at end of file
...@@ -4,28 +4,28 @@ ...@@ -4,28 +4,28 @@
<resultMap type="com.mmc.oms.entity.uav.UavOrderDO" <resultMap type="com.mmc.oms.entity.uav.UavOrderDO"
id="uavOrderResultMap"> id="uavOrderResultMap">
<id property="id" column="id" /> <id property="id" column="id"/>
<result property="orderNo" column="order_no" /> <result property="orderNo" column="order_no"/>
<result property="statusCode" column="status_code" /> <result property="statusCode" column="status_code"/>
<result property="userAccountId" column="user_account_id" /> <result property="userAccountId" column="user_account_id"/>
<result property="thirdBackUserAccountId" column="third_back_user_account_id" /> <result property="thirdBackUserAccountId" column="third_back_user_account_id"/>
<result property="companyName" column="company_name" /> <result property="companyName" column="company_name"/>
<result property="orderTotalAmount" column="order_total_amount" /> <result property="orderTotalAmount" column="order_total_amount"/>
<result property="salaryAmount" column="salary_amount" /> <result property="salaryAmount" column="salary_amount"/>
<result property="shareAmount" column="share_amount" /> <result property="shareAmount" column="share_amount"/>
<result property="otherAmount" column="other_amount" /> <result property="otherAmount" column="other_amount"/>
<result property="payType" column="pay_type" /> <result property="payType" column="pay_type"/>
<result property="orderType" column="order_type" /> <result property="orderType" column="order_type"/>
<result property="deliveryTime" column="delivery_time" /> <result property="deliveryTime" column="delivery_time"/>
<result property="userAddressId" column="user_address_id" /> <result property="userAddressId" column="user_address_id"/>
<result property="userRemark" column="user_remark" /> <result property="userRemark" column="user_remark"/>
<result property="sellerRemark" column="seller_remark" /> <result property="sellerRemark" column="seller_remark"/>
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time"/>
<result property="payTime" column="pay_time" /> <result property="payTime" column="pay_time"/>
<result property="confirmReceiptTime" column="confirm_receipt_time" /> <result property="confirmReceiptTime" column="confirm_receipt_time"/>
<result property="version" column="version" /> <result property="version" column="version"/>
<result property="remarkStatus" column="remark_status" /> <result property="remarkStatus" column="remark_status"/>
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time"/>
<collection property="skuDOS" ofType="com.mmc.oms.entity.uav.UavOrderSkuDO" <collection property="skuDOS" ofType="com.mmc.oms.entity.uav.UavOrderSkuDO"
select="listUavOrderSkuDO" select="listUavOrderSkuDO"
column="{uavOrderId=id}"> column="{uavOrderId=id}">
...@@ -37,37 +37,43 @@ ...@@ -37,37 +37,43 @@
</resultMap> </resultMap>
<sql id="uav_order_column"> <sql id="uav_order_column">
id, order_no, status_code, user_account_id, third_back_user_account_id, company_name, order_total_amount, salary_amount, id
, order_no, status_code, user_account_id, third_back_user_account_id, company_name, order_total_amount, salary_amount,
share_amount, other_amount, pay_type, order_type, delivery_time, user_address_id, user_remark, seller_remark, create_time, share_amount, other_amount, pay_type, order_type, delivery_time, user_address_id, user_remark, seller_remark, create_time,
pay_time, confirm_receipt_time, version, remark_status, update_time pay_time, confirm_receipt_time, version, remark_status, update_time
</sql> </sql>
<sql id="uav_order_pay_column"> <sql id="uav_order_pay_column">
id, uav_order_id, pay_type, pay_img_list, check_status, pay_remark, refuse_reason, create_time, check_time id
, uav_order_id, pay_type, pay_img_list, check_status, pay_remark, refuse_reason, create_time, check_time
</sql> </sql>
<insert id="addOrder" parameterType="com.mmc.oms.entity.uav.UavOrderDO" useGeneratedKeys="true" keyProperty="id"> <insert id="addOrder" parameterType="com.mmc.oms.entity.uav.UavOrderDO" useGeneratedKeys="true" keyProperty="id">
insert into uav_order(order_no, status_code, user_account_id, third_back_user_account_id, company_name, order_total_amount, insert into uav_order(order_no, status_code, user_account_id, third_back_user_account_id, company_name,
salary_amount, share_amount, other_amount, pay_type, order_type, user_address_id, user_remark, seller_remark, create_time order_total_amount,
) salary_amount, share_amount, other_amount, pay_type, order_type, user_address_id,
values( #{orderNo}, #{statusCode}, #{userAccountId}, #{thirdBackUserAccountId}, #{companyName}, #{orderTotalAmount}, user_remark, seller_remark, create_time)
#{salaryAmount}, #{shareAmount}, #{otherAmount}, #{payType}, #{orderType}, #{userAddressId}, #{userRemark}, #{sellerRemark}, values (#{orderNo}, #{statusCode}, #{userAccountId}, #{thirdBackUserAccountId}, #{companyName},
NOW() #{orderTotalAmount},
); #{salaryAmount}, #{shareAmount}, #{otherAmount}, #{payType}, #{orderType}, #{userAddressId},
#{userRemark}, #{sellerRemark},
NOW());
</insert> </insert>
<insert id="addOrderSku" keyProperty="id" useGeneratedKeys="true"> <insert id="addOrderSku" keyProperty="id" useGeneratedKeys="true">
insert into uav_order_sku( insert into uav_order_sku(
uav_order_id, mall_goods_id, trade_name, price_stock_id, product_spec, order_num, unit_price, sku_image, sku_no, create_time) uav_order_id, mall_goods_id, trade_name, price_stock_id, product_spec, order_num, unit_price, sku_image, sku_no,
create_time)
values values
<foreach item="item" collection="list" separator=","> <foreach item="item" collection="list" separator=",">
(#{item.uavOrderId}, #{item.mallGoodsId}, #{item.tradeName}, #{item.priceStockId}, #{item.productSpec}, #{item.orderNum}, #{item.unitPrice}, #{item.skuImage}, #{item.skuNo}, NOW()) (#{item.uavOrderId}, #{item.mallGoodsId}, #{item.tradeName}, #{item.priceStockId}, #{item.productSpec},
#{item.orderNum}, #{item.unitPrice}, #{item.skuImage}, #{item.skuNo}, NOW())
</foreach> </foreach>
</insert> </insert>
<insert id="addOrderPay" parameterType="com.mmc.oms.entity.uav.UavOrderPayDO" useGeneratedKeys="true" keyProperty="id"> <insert id="addOrderPay" parameterType="com.mmc.oms.entity.uav.UavOrderPayDO" useGeneratedKeys="true"
insert into uav_order_pay( keyProperty="id">
uav_order_id, insert into uav_order_pay(uav_order_id,
order_no, order_no,
pay_type, pay_type,
pay_amount, pay_amount,
...@@ -76,26 +82,47 @@ ...@@ -76,26 +82,47 @@
pay_remark, pay_remark,
refuse_reason, refuse_reason,
create_time, create_time,
check_time check_time)
) values (#{uavOrderId}, #{orderNo}, #{payType}, #{payAmount}, #{payImgList}, #{checkStatus}, #{payRemark},
values(#{uavOrderId}, #{orderNo}, #{payType}, #{payAmount}, #{payImgList}, #{checkStatus}, #{payRemark}, #{refuseReason}, NOW(), #{checkTime}) #{refuseReason}, NOW(), #{checkTime})
</insert>
<insert id="addRemarkOrder" keyProperty="id" useGeneratedKeys="true">
insert into uav_order_remark (remark_type, mall_goods_id, uav_order_id, remark_level, uav_images, content, create_time)
values
<foreach item="item" collection="list" separator=",">
(#{item.remarkType}, #{item.mallGoodsId}, #{item.uavOrderId}, #{item.remarkLevel}, #{item.uavImages}, #{item.content}, NOW())
</foreach>
</insert> </insert>
<insert id="addRemarkOrder" parameterType="com.mmc.oms.entity.uav.UavOrderRemarkDO"> <insert id="batchAddOrder" keyProperty="id" useGeneratedKeys="true">
insert into uav_order_remark (mall_goods_id, uav_order_id, remark_level, uav_images, content, create_time) insert into uav_order(order_no, status_code, user_account_id, third_back_user_account_id, company_name, order_total_amount,
values (#{mallGoodsId}, #{uavOrderId}, #{remarkLevel}, #{uavImages}, #{content}, NOW()) salary_amount, share_amount, other_amount, pay_type, order_type, user_address_id, user_remark, seller_remark, create_time
)
values
<foreach item="item" collection="list" separator=",">
(#{item.orderNo}, #{item.statusCode}, #{item.userAccountId}, #{item.thirdBackUserAccountId}, #{item.companyName}, #{item.orderTotalAmount},
#{item.salaryAmount}, #{item.shareAmount}, #{item.otherAmount}, #{item.payType}, #{item.orderType}, #{item.userAddressId}, #{item.userRemark}, #{item.sellerRemark}, NOW())
</foreach>
</insert> </insert>
<update id="sellerRemark"> <update id="sellerRemark">
update uav_order set seller_remark = #{content} where id = #{id} update uav_order
set seller_remark = #{content}
where id = #{id}
</update> </update>
<update id="updateUavOrderStatus"> <update id="updateUavOrderStatus">
update uav_order set status_code = #{nextCode} where id = #{id} update uav_order
set status_code = #{nextCode}
where id = #{id}
</update> </update>
<update id="updateUavOrderPayInfo" parameterType="com.mmc.oms.entity.uav.UavOrderDO"> <update id="updateUavOrderPayInfo" parameterType="com.mmc.oms.entity.uav.UavOrderDO">
update uav_order set pay_time = #{payTime}, pay_type = #{payType} where id = #{id} update uav_order
set pay_time = #{payTime},
pay_type = #{payType}
where id = #{id}
</update> </update>
<update id="updateUavOrder" parameterType="com.mmc.oms.entity.uav.UavOrderDO"> <update id="updateUavOrder" parameterType="com.mmc.oms.entity.uav.UavOrderDO">
...@@ -143,15 +170,27 @@ ...@@ -143,15 +170,27 @@
</update> </update>
<update id="updateUavOrderProportion"> <update id="updateUavOrderProportion">
update uav_order set proportion = #{proportion} where id = #{id} update uav_order
set proportion = #{proportion}
where id = #{id}
</update> </update>
<update id="closeShowUavOrder"> <update id="closeShowUavOrder">
update uav_order set show_user_port = 0 where id = #{id} update uav_order
set show_user_port = 0
where id = #{id}
</update>
<update id="updateUavOrderRemarkStatus">
update uav_order
set remark_status = 1
where id = #{id}
</update> </update>
<select id="detail" resultType="com.mmc.oms.entity.uav.UavOrderDO"> <select id="detail" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select <include refid="uav_order_column" /> from uav_order where id = #{id} select
<include refid="uav_order_column"/>
from uav_order where id = #{id}
</select> </select>
<select id="listUavOrderPay" resultType="com.mmc.oms.entity.uav.UavOrderPayDO"> <select id="listUavOrderPay" resultType="com.mmc.oms.entity.uav.UavOrderPayDO">
...@@ -162,8 +201,7 @@ ...@@ -162,8 +201,7 @@
</select> </select>
<select id="listUavOrderSkuDO" resultType="com.mmc.oms.entity.uav.UavOrderSkuDO"> <select id="listUavOrderSkuDO" resultType="com.mmc.oms.entity.uav.UavOrderSkuDO">
select select id,
id,
uav_order_id, uav_order_id,
mall_goods_id, mall_goods_id,
trade_name, trade_name,
...@@ -179,8 +217,7 @@ ...@@ -179,8 +217,7 @@
</select> </select>
<select id="statusList" resultType="com.mmc.oms.entity.uav.UavOrderStatusDO"> <select id="statusList" resultType="com.mmc.oms.entity.uav.UavOrderStatusDO">
select select id,
id,
status, status,
code, code,
next_code next_code
...@@ -220,7 +257,8 @@ ...@@ -220,7 +257,8 @@
</select> </select>
<select id="list" resultMap="uavOrderResultMap" parameterType="com.mmc.oms.model.qo.uav.UavOrderQO"> <select id="list" resultMap="uavOrderResultMap" parameterType="com.mmc.oms.model.qo.uav.UavOrderQO">
SELECT <include refid="uav_order_column" /> SELECT
<include refid="uav_order_column"/>
FROM FROM
uav_order uo uav_order uo
where 1 = 1 where 1 = 1
...@@ -256,13 +294,32 @@ ...@@ -256,13 +294,32 @@
</select> </select>
<select id="detailByNo" resultType="com.mmc.oms.entity.uav.UavOrderDO"> <select id="detailByNo" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select <include refid="uav_order_column" /> from uav_order where order_no = #{orderNo} select
<include refid="uav_order_column"/>
from uav_order where order_no = #{orderNo}
</select> </select>
<select id="getUavOrderPayById" resultType="com.mmc.oms.entity.uav.UavOrderPayDO"> <select id="getUavOrderPayById" resultType="com.mmc.oms.entity.uav.UavOrderPayDO">
select <include refid="uav_order_pay_column"/> select
<include refid="uav_order_pay_column"/>
from uav_order_pay from uav_order_pay
where id = #{id} and pay_type = 2 where id = #{id} and pay_type = 2
</select> </select>
<select id="getOrderCount" resultType="java.lang.Integer">
select count(*)
from uav_order
where status_code <![CDATA[<>]]> 900
</select>
<select id="getSaleOrderGMV" resultType="java.math.BigDecimal">
SELECT sum(order_total_amount) AS GMV
FROM uav_order
WHERE status_code <![CDATA[<>]]> 900
</select>
<select id="listGoodsRemark" resultType="com.mmc.oms.entity.uav.UavOrderRemarkDO">
select id, remark_type, mall_goods_id, uav_order_id, remark_level, uav_images, content, create_time
from uav_order_remark
where mall_goods_id = #{goodsId} and remark_type = #{remarkType}
order by id desc
</select>
</mapper> </mapper>
...@@ -13,6 +13,14 @@ ...@@ -13,6 +13,14 @@
values (#{uavOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress}, NOW()) values (#{uavOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress}, NOW())
</insert> </insert>
<insert id="batchAddOrderExpress">
insert into uav_order_express(uav_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, create_time)
values
<foreach item="item" collection="list" separator=",">
(#{item.uavOrderId}, #{item.sendExpNo}, #{item.sendExpCode}, #{item.takeName}, #{item.takePhone}, #{item.takeRegion}, #{item.takeAddress}, NOW())
</foreach>
</insert>
<update id="updateUavOrderExpressDO" parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO"> <update id="updateUavOrderExpressDO" parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO">
update uav_order_express update uav_order_express
<set> <set>
......
<?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.UavPayWxDao">
<sql id="UAV_PAY_WX_COLUMN">
id, pay_no, amount, trade_state, create_time
</sql>
<sql id="UAV_PAY_WX_SUB_COLUMN">
id, uav_pay_wx_id, uav_order_id, order_no, amount, create_time
</sql>
<insert id="addUavPayWx" parameterType="com.mmc.oms.entity.uav.UavPayWxDO" keyProperty="id" useGeneratedKeys="true">
insert into uav_pay_wx (pay_no, amount, trade_state, create_time)
values (#{payNo}, #{amount}, #{tradeState}, NOW())
</insert>
<insert id="batchAddUavPayWxSub" keyProperty="id" useGeneratedKeys="true">
insert into uav_pay_wx_sub( uav_pay_wx_id, uav_order_id, order_no, amount, create_time)
values
<foreach item="item" collection="list" separator=",">
(#{item.uavPayWxId}, #{item.uavOrderId}, #{item.orderNo}, #{item.amount}, NOW())
</foreach>
</insert>
<update id="finishUavPayWx">
update uav_pay_wx set trade_state = #{tradeState} where pay_no = #{payNo}
</update>
<select id="getUavPayWx" resultType="com.mmc.oms.entity.uav.UavPayWxDO">
select <include refid="UAV_PAY_WX_COLUMN"/>
from uav_pay_wx where pay_no = #{payNo}
</select>
<select id="listUavPayWxSub" resultType="com.mmc.oms.entity.uav.UavPayWxSubDO">
select <include refid="UAV_PAY_WX_SUB_COLUMN"/>
from uav_pay_wx_sub where uav_pay_wx_id = #{uavPayWxId}
</select>
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论