提交 90d4209e 作者: zhenjie

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: 03375f956fab10f958d6dd0772f3d0b275fca3f8 newTag: 8118519f46d175f9aa351561f564c6ffc5243432
...@@ -2,12 +2,15 @@ package com.mmc.oms.client; ...@@ -2,12 +2,15 @@ package com.mmc.oms.client;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mmc.oms.common.ResultEnum;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.mall.*; import com.mmc.oms.model.dto.mall.*;
import com.mmc.oms.model.dto.service.ServiceDTO; import com.mmc.oms.model.dto.service.ServiceDTO;
import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO; import com.mmc.oms.model.qo.mall.MallOrderGoodsInfoQO;
import com.mmc.oms.model.qo.mall.ProductSpecPriceQO; import com.mmc.oms.model.qo.mall.ProductSpecPriceQO;
import com.mmc.oms.model.vo.uav.MallGoodsVO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
...@@ -126,4 +129,22 @@ public class PmsClient { ...@@ -126,4 +129,22 @@ public class PmsClient {
List<ServiceDTO> serviceDTOS = JSONArray.parseArray(responseEntity.getBody(), ServiceDTO.class); List<ServiceDTO> serviceDTOS = JSONArray.parseArray(responseEntity.getBody(), ServiceDTO.class);
return serviceDTOS; return serviceDTOS;
} }
public MallGoodsVO mallGoodsDetails(Integer id) throws JsonProcessingException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<String> responseEntity = restTemplate.exchange(pmsAppUri + "/app/goods/appMallGoodsDetails" + "?id=" + id, HttpMethod.GET, entity, String.class);
if (StringUtils.isBlank(responseEntity.getBody())) {
return null;
}
ResultBody resultBody = JSONObject.parseObject(responseEntity.getBody(), ResultBody.class);
if (resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) {
// create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
MallGoodsVO mallGoodsVO = objectMapper.readValue(resultBody.getResult().toString(), MallGoodsVO.class);
return mallGoodsVO;
}
return null;
}
} }
package com.mmc.oms.common.constant;
import java.math.BigDecimal;
/**
* @author: zj
* @Date: 2023/9/8 14:17
*/
public interface UavOrderProportion {
public static final BigDecimal PROPORTION = BigDecimal.valueOf(5);
}
...@@ -6,6 +6,7 @@ import com.mmc.oms.controller.BaseController; ...@@ -6,6 +6,7 @@ import com.mmc.oms.controller.BaseController;
import com.mmc.oms.dao.demand.DemandReleaseOrderDao; import com.mmc.oms.dao.demand.DemandReleaseOrderDao;
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.model.vo.demand.CommonPaymentVO; import com.mmc.oms.model.vo.demand.CommonPaymentVO;
import com.mmc.oms.model.vo.demand.UserPayInfoVO; import com.mmc.oms.model.vo.demand.UserPayInfoVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -57,6 +58,10 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -57,6 +58,10 @@ public class NotRepeatSubmitConfig extends BaseController {
@Value("${payment.url}") @Value("${payment.url}")
private String paymentApp; private String paymentApp;
@Value("${ims.url}")
private String imsApp;
@Pointcut("@within(notRepeatSubmit)||@annotation(notRepeatSubmit)") @Pointcut("@within(notRepeatSubmit)||@annotation(notRepeatSubmit)")
public void pointcut(NotRepeatSubmit notRepeatSubmit) { public void pointcut(NotRepeatSubmit notRepeatSubmit) {
...@@ -74,18 +79,6 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -74,18 +79,6 @@ public class NotRepeatSubmitConfig extends BaseController {
HttpServletRequest request = attributes.getRequest(); HttpServletRequest request = attributes.getRequest();
Integer userAccountId = this.getCurrentAccount(request).getUserAccountId(); Integer userAccountId = this.getCurrentAccount(request).getUserAccountId();
String accountUriLockKey = userAccountId + "-" + request.getServletPath();
// 设置锁定资源名称,accountUriLock改为userid+uri作为标识,作为测试写死
// String accountUriLockKey = "accountUriLock";
RLock accountUriLock = redissonClient.getLock(accountUriLockKey);
boolean tryLock;
MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();
Method method = signature.getMethod();
String name = method.getDeclaringClass().getName();
String[] parameterNames = signature.getParameterNames();
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
Object[] values = proceedingJoinPoint.getArgs(); Object[] values = proceedingJoinPoint.getArgs();
String[] names = ((CodeSignature) proceedingJoinPoint.getSignature()).getParameterNames(); String[] names = ((CodeSignature) proceedingJoinPoint.getSignature()).getParameterNames();
...@@ -94,24 +87,59 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -94,24 +87,59 @@ public class NotRepeatSubmitConfig extends BaseController {
} }
log.info(map+""); log.info(map+"");
CommonPaymentVO commonPaymentsVO = (CommonPaymentVO) map.get("commonPaymentVO"); CommonPaymentVO commonPaymentsVO = (CommonPaymentVO) map.get("commonPaymentVO");
String json1 = stringRedisTemplate.opsForValue().get(commonPaymentsVO.getOrderNumber());
String accountUriLockKey=null;
Integer requirementsInfoId=null;
if (json1!=null){
GetOrderNumberDTO getOrderNumberDTO1= JSONObject.parseObject(json1, GetOrderNumberDTO.class);
requirementsInfoId = getOrderNumberDTO1.getRequirementsInfoId();
ServiceRequirementsDO rep = repertory(requirementsInfoId,request);
Integer repertory2 = rep.getRepertory();
if (repertory2!=null && repertory2<=0 ){
return ResultBody.error("需求已被人抢走");
}
if (requirementsInfoId!=null && repertory2!=0){
accountUriLockKey=requirementsInfoId +repertory2+ "-" + request.getServletPath();
}
}
if (requirementsInfoId!=null){
accountUriLockKey = requirementsInfoId + "-" + request.getServletPath();
}else {
accountUriLockKey = userAccountId + "-" + request.getServletPath();
}
// 设置锁定资源名称,accountUriLock改为userid+uri作为标识,作为测试写死
// String accountUriLockKey = "accountUriLock";
RLock accountUriLock = redissonClient.getLock(accountUriLockKey);
boolean tryLock;
MethodSignature signature = (MethodSignature) proceedingJoinPoint.getSignature();
Method method = signature.getMethod();
String name = method.getDeclaringClass().getName();
String[] parameterNames = signature.getParameterNames();
//尝试获取分布式锁 //尝试获取分布式锁
//-1为永久 leaseTime 最多等待几秒 上锁以后leaseTime秒自动解锁 //-1为永久 leaseTime 最多等待几秒 上锁以后leaseTime秒自动解锁
tryLock = accountUriLock.tryLock(-1, leaseTime, TimeUnit.MILLISECONDS); tryLock = accountUriLock.tryLock(-1, leaseTime, TimeUnit.MILLISECONDS);
log.info("tryLock:" + tryLock); log.info("tryLock:" + tryLock);
if (tryLock) { if (tryLock) {
try { try {
String orderNumber = commonPaymentsVO.getOrderNumber(); if (requirementsInfoId!=null){
ServiceRequirementsDO repertory = repertory(requirementsInfoId,request);
Integer repertory1 = repertory.getRepertory();
if (repertory1!=null && repertory1<=0 ){
return ResultBody.error("需求已被人抢走");
}
}
String orderNumber = commonPaymentsVO.getOrderNumber();
String json = stringRedisTemplate.opsForValue().get(orderNumber); String json = stringRedisTemplate.opsForValue().get(orderNumber);
GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class); if (json!=null){
if (getOrderNumberDTO!=null){ GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class);
GetOrderNumberDO getOrderNumberDO = new GetOrderNumberDO(getOrderNumberDTO); GetOrderNumberDO getOrderNumberDO = new GetOrderNumberDO(getOrderNumberDTO);
if (getOrderNumberDTO.getRequirementsInfoId()!=null){ if (getOrderNumberDTO.getRequirementsInfoId()!=null){
String orderNumber1 = releaseOrderDao.getOrderNumber(getOrderNumberDO.getRequirementsInfoId()); String orderNumber1 = releaseOrderDao.getOrderNumber(getOrderNumberDO.getRequirementsInfoId());
if (orderNumber1!=null){ if (orderNumber1!=null){
UserPayInfoVO userPayInfoVO = queryUserPayInfo(orderNumber1, request); UserPayInfoVO userPayInfoVO = queryUserPayInfo(orderNumber1, request);
if (!userPayInfoVO.getTradeState().equals("SUCCESS")){ if (!userPayInfoVO.getTradeState().equals("SUCCESS")){
releaseOrderDao.getDelete(getOrderNumberDO.getRequirementsInfoId()); releaseOrderDao.getDelete(getOrderNumberDO.getRequirementsInfoId());
} }
} }
int i = releaseOrderDao.selectOrderNumberDO(getOrderNumberDO.getRequirementsInfoId()); int i = releaseOrderDao.selectOrderNumberDO(getOrderNumberDO.getRequirementsInfoId());
...@@ -156,5 +184,23 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -156,5 +184,23 @@ public class NotRepeatSubmitConfig extends BaseController {
return body; return body;
} }
/**
* 通过订单编号查看是否支付成功
*
* @param requirementsInfoId
* @return
*/
public ServiceRequirementsDO repertory(Integer requirementsInfoId, HttpServletRequest request) {
String token = request.getHeader("token");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(requirementsInfoId), headers);
ResponseEntity<ServiceRequirementsDO> exchange = restTemplate.exchange(imsApp + "requirements/repertory?requirementsInfoId=" + requirementsInfoId, HttpMethod.GET, entity, ServiceRequirementsDO.class);
ServiceRequirementsDO body = exchange.getBody();
return body;
}
} }
package com.mmc.oms.controller.uav;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.controller.BaseController;
import com.mmc.oms.model.dto.uav.UavOrderDTO;
import com.mmc.oms.model.dto.uav.UavOrderStatusDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.uav.AddUavOrderVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import com.mmc.oms.service.uav.UavOrderService;
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.*;
import javax.servlet.http.HttpServletRequest;
/**
* @author: zj
* @Date: 2023/9/4 13:29
*/
@Api(tags = { "最新版-订单接口" })
@RestController
@RequestMapping("/uav-order/")
public class UavOrderController extends BaseController {
@Autowired
private UavOrderService uavOrderService;
@ApiOperation(value = "提交订单")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)})
@PostMapping("addOrder")
public ResultBody<UavOrderDTO> addOrder(@RequestBody AddUavOrderVO param, HttpServletRequest request) {
return uavOrderService.addOrder(param, this.getCurrentAccount(request));
}
@ApiOperation(value = "订单详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)})
@GetMapping("detail")
public ResultBody<UavOrderDTO> detail(@RequestParam Integer id) throws Exception {
return uavOrderService.detail(id);
}
@ApiOperation(value = "关闭")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("close")
public ResultBody close(@RequestParam Integer id, HttpServletRequest request) {
return uavOrderService.close(id, this.getCurrentAccount(request).getToken());
}
@ApiOperation(value = "后台订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)})
@PostMapping("list")
public ResultBody<UavOrderDTO> list(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) {
return uavOrderService.list(uavOrderQO, this.getCurrentAccount(request));
}
@ApiOperation(value = "个人订单列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderDTO.class)})
@PostMapping("listByUid")
public ResultBody<UavOrderDTO> listByUid(@RequestBody UavOrderQO uavOrderQO, HttpServletRequest request) {
return uavOrderService.listByUid(uavOrderQO, this.getCurrentAccount(request));
}
@ApiOperation(value = "支付", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("pay")
public ResultBody pay(@RequestParam Integer id, HttpServletRequest request) {
return uavOrderService.pay(id, this.getCurrentAccount(request), request);
}
@ApiOperation(value = "上传付款凭证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("upLoadPay")
public ResultBody upLoadPay(@RequestBody UavOrderPayVO uavOrderPayVO) {
return uavOrderService.upLoadPay(uavOrderPayVO);
}
@ApiOperation(value = "审核付款凭证")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("checkPay")
public ResultBody checkPay(@RequestBody UavOrderPayVO uavOrderPayVO) {
return uavOrderService.checkPay(uavOrderPayVO);
}
@ApiOperation(value = "发货")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("send")
public ResultBody send(@RequestBody UavOrderExpressVO param) {
return uavOrderService.send(param);
}
@ApiOperation(value = "收货")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("receive")
public ResultBody receive(@RequestParam Integer id, HttpServletRequest request) {
return uavOrderService.receive(id, this.getCurrentAccount(request));
}
@ApiOperation(value = "评价订单", hidden = true)
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("remarkOrder")
public ResultBody remarkOrder(@RequestBody UavOrderRemarkVO uavOrderRemarkVO) {
return uavOrderService.remarkOrder(uavOrderRemarkVO);
}
@ApiOperation(value = "卖家备注")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("sellerRemark")
public ResultBody sellerRemark(@RequestParam Integer id, @RequestParam String content) {
return uavOrderService.sellerRemark(id, content);
}
@ApiOperation(value = "订单状态列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = UavOrderStatusDTO.class)})
@GetMapping("statusList")
public ResultBody statusList() {
return uavOrderService.statusList();
}
// 检测超时未收货的订单
// 设置订单抽成比例
// 微信完成回调-修改订单状态
}
package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavOrderDO;
import com.mmc.oms.entity.uav.UavOrderPayDO;
import com.mmc.oms.entity.uav.UavOrderSkuDO;
import com.mmc.oms.entity.uav.UavOrderStatusDO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/4 15:29
*/
@Mapper
public interface UavOrderDao {
void addOrder(UavOrderDO uavOrderDO);
void addOrderSku(List<UavOrderSkuDO> skuDOS);
UavOrderDO detail(Integer id);
UavOrderDO detailByNo(String orderNo);
List<UavOrderPayDO> listUavOrderPay(Integer uavOrderId);
List<UavOrderSkuDO> listUavOrderSkuDO(Integer uavOrderId);
void sellerRemark(Integer id, String content);
void updateUavOrderStatus(Integer id, Integer nextCode);
List<UavOrderStatusDO> statusList();
int countList(UavOrderQO uavOrderQO);
List<UavOrderDO> list(UavOrderQO uavOrderQO);
void addOrderPay(UavOrderPayDO uavOrderPayDO);
void updateUavOrderPayInfo(UavOrderDO uavOrderDO);
}
package com.mmc.oms.dao.uav;
import com.mmc.oms.entity.uav.UavOrderExpressDO;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: zj
* @Date: 2023/9/5 16:19
*/
@Mapper
public interface UavOrderExpressDao {
void addAddress(UavOrderExpressDO uavOrderExpressDO);
UavOrderExpressDO getUavOrderExpressDO(Integer uavOrderId);
int updateUavOrderExpressDO(UavOrderExpressDO uavOrderExpressDO);
}
package com.mmc.oms.entity.demand;
import java.math.BigDecimal;
/**
* @Author small
* @Date 2023/9/7 15:54
* @Version 1.0
*/
public enum OrderLevelEnum {
//普通订单
REGULAR_ORDER("REGULAR_ORDER", new BigDecimal(0)),
//紧急订单
RUSH_ORDER("RUSH_ORDER", new BigDecimal(100)),
//置顶订单
TOP_ORDER("TOP_ORDER", new BigDecimal(300));
private String key;
private BigDecimal value;
private OrderLevelEnum(String key, BigDecimal value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public BigDecimal getValue() {
return value;
}
public void setValue(BigDecimal value) {
this.value = value;
}
public static OrderLevelEnum match(String key) {
OrderLevelEnum result = null;
for (OrderLevelEnum s : values()) {
if (s.getKey() == key) {
result = s;
break;
}
}
return result;
}
public static OrderLevelEnum catchMessage(BigDecimal value) {
OrderLevelEnum result = null;
for (OrderLevelEnum s : values()) {
if (s.getValue().equals(value)) {
result = s;
break;
}
}
return result;
}
}
package com.mmc.oms.entity.demand;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mmc.oms.common.publicinterface.Insert;
import com.mmc.oms.common.publicinterface.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author small
* @Date 2023/9/7 15:50
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ServiceRequirementsDO {
private static final long serialVersionUID = -447951390213113317L;
@ApiModelProperty(value = "id")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "id")
@NotBlank(message = "服务类型id不能为空", groups = {Insert.class, Update.class})
private Integer serviceId;
@ApiModelProperty(value = "飞行日期——任务开始时间", example = "2023-07-25", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskStartTime;
@ApiModelProperty(value = "飞行日期——任务结束时间", example = "2023-07-26", required = true)
@NotNull(message = "任务开始时间不能为空", groups = {Insert.class, Update.class})
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date taskEndTime;
@ApiModelProperty(value = "飞行位置——任务地址", example = "广东省深圳市", required = true)
@NotBlank(message = "任务地址不能为空", groups = {Insert.class, Update.class})
private String taskAddress;
@ApiModelProperty(value = "飞行位置——任务经度", example = "23.344324", required = true)
@NotNull(message = "任务经度不能为空", groups = {Insert.class, Update.class})
private Double longitude;
@ApiModelProperty(value = "飞行位置——任务纬度", example = "44.344324", required = true)
@NotNull(message = "任务纬度不能为空", groups = {Insert.class, Update.class})
private Double latitude;
@ApiModelProperty(value = "需求描述", example = "描述一下", required = true)
@NotNull(message = "需求描述不能为空", groups = {Insert.class})
@Length(max = 300, message = "字符过长")
private String requireDescription;
@ApiModelProperty(value = "订单金额", example = "订单金额", required = true)
@NotNull(message = "订单金额", groups = {Insert.class})
private BigDecimal orderAmount;
@ApiModelProperty(value = "飞手保险", example = "飞手保险", required = true)
@NotNull(message = "飞手保险", groups = {Insert.class})
private String insurance;
@ApiModelProperty(value = "订单级别", example = "订单级别", required = true)
@NotNull(message = "订单级别", groups = {Insert.class})
private OrderLevelEnum orderLevelEnum;
@ApiModelProperty(value = "后台获取token里面的用户id", hidden = true)
private Integer userAccountId;
@ApiModelProperty(value = "发布者姓名", example = "张三")
private String publishName;
@ApiModelProperty(value = "发布者电话", example = "1892994543", required = true)
@NotNull(message = "发布者电话不能为空", groups = {Insert.class})
private String publishPhone;
@ApiModelProperty(value = "发布者订单编号")
private String publisherNumber;
@ApiModelProperty(value = "0普通 100急单 300置顶")
private BigDecimal orderLevelAmount;
@ApiModelProperty(value = "订单级别 REGULAR_ORDER,RUSH_ORDER,TOP_ORDER")
private String orderLevel;
@ApiModelProperty(value = "总金额", example = "100", required = true)
@NotNull(message = "总金额", groups = {Insert.class})
private BigDecimal totalAmount;
@ApiModelProperty(value = "云享金", example = "10")
private BigDecimal cashAmount;
@ApiModelProperty(value = "佣金", example = "10")
private BigDecimal salaryAmount;
@ApiModelProperty(value = "微信金额", example = "10")
private BigDecimal weChat;
@ApiModelProperty(value = "微信支付订单编号", example = "R202308191657303116170")
private String wechatPayOrderNumber;
private Integer repertory;
@ApiModelProperty(value = "支付方式,云享金:1,佣金:2,微信支付:3", example = "1,2,3")
private String paymentType;
@ApiModelProperty(value = "地区编码")
private String adcode;
@ApiModelProperty(value = "置顶/加急 佣金支付多少", example = "100")
private BigDecimal levelSalaryAmount;
@ApiModelProperty(value = "置顶/加急 微信支付多少", example = "100")
private BigDecimal levelWeChatAmount;
@ApiModelProperty(value = "置顶/加急 云享金支付多少", example = "100")
private BigDecimal levelCashAmount;
@ApiModelProperty(value = "openid")
private String openid;
@ApiModelProperty(value = "服务名称")
private String serviceName;
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zj
* @Date: 2023/9/4 13:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单")
public class UavOrderDO implements Serializable {
private static final long serialVersionUID = 2696589294661774288L;
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("订单状态")
private Integer statusCode;
@ApiModelProperty("买家id")
private Integer userAccountId;
@ApiModelProperty("卖家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty("卖家企业名称")
private String companyName;
@ApiModelProperty("订单实付总额")
private BigDecimal orderTotalAmount;
@ApiModelProperty("抵扣佣金余额")
private BigDecimal salaryAmount;
@ApiModelProperty("抵扣云享金余额")
private BigDecimal shareAmount;
@ApiModelProperty("其他方式支付额度")
private BigDecimal otherAmount;
@ApiModelProperty("wechatpay微信,alipay支付宝,offline线下")
private String payType;
@ApiModelProperty("订单类型,0正常订单、1意向订单")
private Integer orderType;
@ApiModelProperty("订单交期")
private Date deliveryTime;
@ApiModelProperty("收货地址id")
private Integer userAddressId;
@ApiModelProperty("买家备注")
private String userRemark;
@ApiModelProperty("卖家备注")
private String sellerRemark;
@ApiModelProperty("下单时间")
private Date createTime;
@ApiModelProperty("支付时间")
private Date payTime;
@ApiModelProperty("确认收货时间")
private Date confirmReceiptTime;
@ApiModelProperty("修改版本")
private Integer version;
@ApiModelProperty("评价状态")
private Integer remarkStatus;
@ApiModelProperty("最近修改时间")
private Date updateTime;
@ApiModelProperty("规格列表")
private List<UavOrderSkuDO> skuDOS;
public UavOrderDTO buildUavOrderDTO(){
return UavOrderDTO.builder().id(this.id).version(this.version).orderNo(this.orderNo).statusCode(this.statusCode).userAccountId(this.userAccountId)
.thirdBackUserAccountId(this.thirdBackUserAccountId).companyName(this.companyName).orderTotalAmount(this.orderTotalAmount).salaryAmount(this.salaryAmount)
.shareAmount(this.shareAmount).otherAmount(this.otherAmount).payType(this.payType).orderType(this.orderType).deliveryTime(this.deliveryTime).userAddressId(this.userAddressId)
.userRemark(this.userRemark).sellerRemark(this.sellerRemark).createTime(this.createTime).payTime(this.payTime).confirmReceiptTime(this.confirmReceiptTime)
.remarkStatus(this.remarkStatus).updateTime(this.updateTime).skuDTOList(CollectionUtils.isEmpty(skuDOS) ? null :
this.skuDOS.stream().map(UavOrderSkuDO::buildUavOrderSkuDTO).collect(Collectors.toList()))
.build();
}
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.entity.mall.UserAddressDO;
import com.mmc.oms.model.dto.uav.UavOrderExpressDTO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/9/4 13:53
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单收货地址信息")
public class UavOrderExpressDO implements Serializable {
private static final long serialVersionUID = -8046463151711449213L;
private Integer id;
private Integer uavOrderId;
private String sendExpNo;
private String sendExpCode;
private String takeName;
private String takePhone;
private String takeRegion;
private String takeAddress;
private Date receiveTime;
private Integer receive;
private Date updateTime;
private Date createTime;
public UavOrderExpressDO(UserAddressDO userAddressDO) {
this.takeName = userAddressDO.getTakeName();
this.takePhone = userAddressDO.getTakePhone();
this.takeRegion = userAddressDO.getTakeRegion();
this.takeAddress = userAddressDO.getTakeAddress();
}
public UavOrderExpressDO(UavOrderExpressVO param) {
this.id = param.getId();
this.uavOrderId = param.getUavOrderId();
this.sendExpNo = param.getSendExpNo();
this.sendExpCode = param.getSendExpCode();
this.takeName = param.getTakeName();
this.takePhone = param.getTakePhone();
this.takeRegion = param.getTakeRegion();
this.takeAddress = param.getTakeAddress();
}
public UavOrderExpressDTO buildUavOrderExpressDTO(){
return UavOrderExpressDTO.builder().id(this.id).uavOrderId(this.uavOrderId).sendExpNo(this.sendExpNo).sendExpCode(this.sendExpCode).takeName(this.takeName)
.takePhone(this.takePhone).takeAddress(this.takeAddress).takeRegion(this.takeRegion).receive(this.receive).receiveTime(this.receiveTime)
.build();
}
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderPayDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/9/4 13:56
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单支付信息")
public class UavOrderPayDO implements Serializable {
private static final long serialVersionUID = -7440333696084228732L;
private Integer id;
private Integer uavOrderId;
private String payImgList;
private Integer checkStatus;
private Integer payType;
private String payRemark;
private String refuseReason;
private Date createTime;
private Date checkTime;
private BigDecimal payAmount;
public UavOrderPayDTO buildUavOrderPayDTO(){
return UavOrderPayDTO.builder().id(this.id).uavOrderId(this.uavOrderId).payImgList(this.payImgList).checkStatus(this.checkStatus)
.payRemark(this.payRemark).refuseReason(this.refuseReason).createTime(this.createTime).payType(this.payType)
.payAmount(this.payAmount).build();
}
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderSkuDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: zj
* @Date: 2023/9/4 14:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单sku")
public class UavOrderSkuDO implements Serializable {
private static final long serialVersionUID = 8711946446973624100L;
@ApiModelProperty("订单规格id")
private Integer id;
@ApiModelProperty("订单id")
private Integer uavOrderId;
@ApiModelProperty("商品id")
private Integer mallGoodsId;
@ApiModelProperty("商品名称")
private String tradeName;
@ApiModelProperty("商品规格id")
private Integer priceStockId;
@ApiModelProperty("商品规格")
private String productSpec;
@ApiModelProperty("购买数量")
private Integer orderNum;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("商品规格图片")
private String skuImage;
@ApiModelProperty("商品规格编号")
private String skuNo;
@ApiModelProperty("下单时间")
private Date createTime;
public UavOrderSkuDTO buildUavOrderSkuDTO(){
return UavOrderSkuDTO.builder().id(this.id).uavOrderId(this.uavOrderId).mallGoodsId(this.mallGoodsId).tradeName(this.tradeName)
.priceStockId(this.priceStockId).productSpec(this.productSpec).orderNum(this.orderNum).unitPrice(this.unitPrice).skuImage(this.skuImage)
.skuNo(this.skuNo).createTime(this.createTime).build();
}
}
package com.mmc.oms.entity.uav;
import com.mmc.oms.model.dto.uav.UavOrderStatusDTO;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/4 14:13
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单状态")
public class UavOrderStatusDO implements Serializable {
private static final long serialVersionUID = 7424753482301667469L;
private Integer id;
private String status;
private Integer code;
private Integer nextCode;
public UavOrderStatusDTO buildUavOrderStatusDTO(){
return UavOrderStatusDTO.builder().id(this.id).status(this.status).code(this.code).nextCode(this.nextCode).build();
}
}
package com.mmc.oms.enums;
/**
* @author: zj
* @Date: 2023/9/4 14:36
*/
public enum UavOrderStatus {
CONTACT(100, 200, "待意向沟通"),
CONFIRM(200, 300, "待确认订单"),
SIGN(300, 400, "待签署合同"),
PAYING(400, 500,"待付款"),
WAITING_DELIVER_GOODS(500,600, "待发货"),
WAITING_RECEIVE_GOODS(600, 700, "待收货"),
WAITING_REMARK(700, 800, "待评价"),
FINISH(800, 800,"已完成"),
CLOSE(900, 900,"已关闭")
;
public Integer getCode() {
return code;
}
public Integer getNextCode() {
return nextCode;
}
public String getName() {
return name;
}
UavOrderStatus(Integer code, Integer nextCode, String name) {
this.code = code;
this.nextCode = nextCode;
this.name = name;
}
private Integer code;
private Integer nextCode;
private String name;
}
package com.mmc.oms.feign;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.PaymentAppApiHystrix;
import com.mmc.oms.model.vo.ApplyRefundVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* @author: zj
* @Date: 2023/9/8 11:08
*/
@FeignClient(url = "${payment.url}", name = "payment-svc", fallback = PaymentAppApiHystrix.class)
public interface PaymentAppApi {
@PostMapping("wechat/applyRefund")
public ResultBody applyRefund(@RequestBody ApplyRefundVO applyRefundVO);
}
...@@ -2,10 +2,11 @@ package com.mmc.oms.feign; ...@@ -2,10 +2,11 @@ package com.mmc.oms.feign;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.hystrix.UserAppApiHystrix; import com.mmc.oms.feign.hystrix.UserAppApiHystrix;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.vo.uav.PayUavWalletVO;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO; import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
/** /**
* @author: zj * @author: zj
...@@ -16,4 +17,13 @@ public interface UserAppApi { ...@@ -16,4 +17,13 @@ public interface UserAppApi {
@PostMapping("pay/feignTopUpCash") @PostMapping("pay/feignTopUpCash")
public ResultBody feignTopUpCash(@RequestBody TopUpOrderVO topUpOrderVO); public ResultBody feignTopUpCash(@RequestBody TopUpOrderVO topUpOrderVO);
@GetMapping("pay/getCurrentUserPayWalletInfo")
public ResultBody<PayWalletDTO> getCurrentUserPayWalletInfo(@RequestHeader String token);
@PostMapping("pay/feignPayUavWallet")
public ResultBody feignPayUavWallet(@RequestBody PayUavWalletVO payUavWalletVO, @RequestHeader String token);
@GetMapping("company/getManagerIdByBackUserId")
public ResultBody getManagerIdByBackUserId(@RequestParam Integer backUserAccountId, @RequestHeader String token);
} }
package com.mmc.oms.feign.hystrix;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.PaymentAppApi;
import com.mmc.oms.model.vo.ApplyRefundVO;
import lombok.extern.slf4j.Slf4j;
/**
* @author: zj
* @Date: 2023/9/8 11:08
*/
@Slf4j
public class PaymentAppApiHystrix implements PaymentAppApi {
@Override
public ResultBody applyRefund(ApplyRefundVO applyRefundVO) {
log.error("PaymentAppApiHystrix applyRefund ---- param:{}", JSONObject.toJSONString(applyRefundVO));
return ResultBody.error("调用微信退款失败");
}
}
\ No newline at end of file
package com.mmc.oms.feign.hystrix; package com.mmc.oms.feign.hystrix;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.oms.common.result.ResultBody; import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.feign.UserAppApi; import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.vo.uav.PayUavWalletVO;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO; import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -17,4 +20,22 @@ public class UserAppApiHystrix implements UserAppApi { ...@@ -17,4 +20,22 @@ public class UserAppApiHystrix implements UserAppApi {
log.error("熔断:UserAppApiHystrix.feignTopUpCash==error==>param:{}", topUpOrderVO); log.error("熔断:UserAppApiHystrix.feignTopUpCash==error==>param:{}", topUpOrderVO);
return ResultBody.error("-1", "远程调用失败"); return ResultBody.error("-1", "远程调用失败");
} }
@Override
public ResultBody<PayWalletDTO> getCurrentUserPayWalletInfo(String token) {
log.error("熔断:UserAppApiHystrix.getCurrentUserPayWalletInfo==error");
return ResultBody.error("-1", "远程调用失败");
}
@Override
public ResultBody feignPayUavWallet(PayUavWalletVO payUavWalletVO, String token) {
log.error("熔断:UserAppApiHystrix.feignPayUavWallet==error==>param:{}", JSONObject.toJSONString(payUavWalletVO));
return ResultBody.error("-1", "远程调用失败");
}
@Override
public ResultBody getManagerIdByBackUserId(Integer backUserAccountId, String token) {
log.error("熔断:UserAppApiHystrix.getManagerIdByBackUserId==error==>param:{}", JSONObject.toJSONString(backUserAccountId));
return ResultBody.error("-1", "远程调用失败");
}
} }
package com.mmc.oms.model.dto.uav;
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;
/**
* @author 作者 lw
* @version 创建时间:2023.08.18 下午13:31:12
* @explain 类说明
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PayWalletDTO implements Serializable {
private static final long serialVersionUID = 75097833899496576L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "用户ID")
private Integer userAccountId;
@ApiModelProperty(value = "用户姓名")
private String userName;
@ApiModelProperty(value = "云享金余额")
private BigDecimal cashAmt;
@ApiModelProperty(value = "云享金总金额")
private BigDecimal totalCash;
@ApiModelProperty(value = "已冻结云享金")
private BigDecimal cashFreeze;
@ApiModelProperty(value = "佣金余额")
private BigDecimal salaryAmt;
@ApiModelProperty(value = "已冻结佣金")
private BigDecimal salaryFreeze;
@ApiModelProperty(value = "佣金总额度")
private BigDecimal totalSalary;
@ApiModelProperty(value = "已提现的金额")
private BigDecimal rebateWdl;
@ApiModelProperty(value = "提现冻结金额")
private BigDecimal wdlFreeze;
@ApiModelProperty(value = "冻结总额")
private BigDecimal totalFreeze;
@ApiModelProperty(value = "总金额")
private BigDecimal totalAmount;
public void mathTotal() {
// 总冻结余额
this.totalFreeze = BigDecimal.ZERO;
if (this.cashFreeze != null) {
this.totalFreeze = this.totalFreeze.add(this.cashFreeze);
}
if (this.salaryFreeze != null) {
this.totalFreeze = this.totalFreeze.add(this.salaryFreeze);
}
// 总云享金余额
this.totalCash = BigDecimal.ZERO;
if (this.cashAmt != null) {
this.totalCash = this.totalCash.add(this.cashAmt);
}
if (this.cashFreeze != null) {
this.totalCash = this.totalCash.add(this.cashFreeze);
}
// 总佣金余额
this.totalSalary = BigDecimal.ZERO;
if (this.salaryAmt != null) {
this.totalSalary = this.totalSalary.add(this.salaryAmt);
}
if (this.salaryFreeze != null) {
this.totalSalary = this.totalSalary.add(this.salaryFreeze);
}
// 总金额
this.totalAmount = BigDecimal.ZERO;
this.totalAmount = this.totalAmount.add(this.totalCash);
this.totalAmount = this.totalAmount.add(this.totalSalary);
}
}
package com.mmc.oms.model.dto.uav;
import com.mmc.oms.model.dto.kdn.KdnExpDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/4 14:50
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "最新版-订单")
public class UavOrderDTO implements Serializable {
private static final long serialVersionUID = 7548192478886457453L;
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("订单状态")
private Integer statusCode;
@ApiModelProperty("买家id")
private Integer userAccountId;
@ApiModelProperty("卖家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty("卖家企业名称")
private String companyName;
@ApiModelProperty("订单实付总额")
private BigDecimal orderTotalAmount;
@ApiModelProperty("抵扣佣金余额")
private BigDecimal salaryAmount;
@ApiModelProperty("抵扣云享金余额")
private BigDecimal shareAmount;
@ApiModelProperty("其他方式支付额度")
private BigDecimal otherAmount;
@ApiModelProperty("wechatpay微信,alipay支付宝,offline线下")
private String payType;
@ApiModelProperty("订单类型,0正常订单、1意向订单")
private Integer orderType;
@ApiModelProperty("订单交期")
private Date deliveryTime;
@ApiModelProperty("收货地址id")
private Integer userAddressId;
@ApiModelProperty("买家备注")
private String userRemark;
@ApiModelProperty("卖家备注")
private String sellerRemark;
@ApiModelProperty("下单时间")
private Date createTime;
@ApiModelProperty("支付时间")
private Date payTime;
@ApiModelProperty("确认收货时间")
private Date confirmReceiptTime;
@ApiModelProperty("修改版本")
private Integer version;
@ApiModelProperty("评价状态")
private Integer remarkStatus;
@ApiModelProperty("最近修改时间")
private Date updateTime;
@ApiModelProperty("用户收货地址信息")
private UavOrderExpressDTO uavOrderExpressDTO;
@ApiModelProperty("快递信息")
private KdnExpDTO kdnExpDTO;
@ApiModelProperty("用户支付凭证")
private List<UavOrderPayDTO> payDTOList;
@ApiModelProperty("订单规格列表")
private List<UavOrderSkuDTO> skuDTOList;
}
package com.mmc.oms.model.dto.uav;
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.util.Date;
/**
* @author: zj
* @Date: 2023/9/4 14:52
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "收货地址")
public class UavOrderExpressDTO implements Serializable {
private static final long serialVersionUID = 6025905100022602806L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "快递编号")
private String sendExpNo;
@ApiModelProperty(value = "快递编码")
private String sendExpCode;
@ApiModelProperty(value = "取货人")
private String takeName;
@ApiModelProperty(value = "取货人号码")
private String takePhone;
@ApiModelProperty(value = "地区信息")
private String takeRegion;
@ApiModelProperty(value = "发货-收货详细地址")
private String takeAddress;
@ApiModelProperty(value = "取件时间")
private Date receiveTime;
@ApiModelProperty(value = "是否已取件,0未取,1已取")
private Integer receive;
}
package com.mmc.oms.model.dto.uav;
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: zj
* @Date: 2023/9/4 14:55
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "用户支付信息")
public class UavOrderPayDTO implements Serializable {
private static final long serialVersionUID = 7429924736182755541L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "支付凭证")
private String payImgList;
@ApiModelProperty(value = "审核状态,0待审批,1通过,2未通过")
private Integer checkStatus;
@ApiModelProperty(value = "备注信息")
private String payRemark;
@ApiModelProperty(value = "未通过原因")
private String refuseReason;
@ApiModelProperty(value = "提交时间")
private Date createTime;
@ApiModelProperty(value = "0微信支付,1支付宝,2线下支付凭证")
private Integer payType;
@ApiModelProperty(value = "支付金额")
private BigDecimal payAmount;
}
package com.mmc.oms.model.dto.uav;
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: zj
* @Date: 2023/9/4 14:59
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "订单sku信息")
public class UavOrderSkuDTO implements Serializable {
private static final long serialVersionUID = -7021228030949249793L;
@ApiModelProperty("订单规格id")
private Integer id;
@ApiModelProperty("订单id")
private Integer uavOrderId;
@ApiModelProperty("商品id")
private Integer mallGoodsId;
@ApiModelProperty("商品名称")
private String tradeName;
@ApiModelProperty("商品规格id")
private Integer priceStockId;
@ApiModelProperty("商品规格")
private String productSpec;
@ApiModelProperty("购买数量")
private Integer orderNum;
@ApiModelProperty("单价")
private BigDecimal unitPrice;
@ApiModelProperty("商品规格图片")
private String skuImage;
@ApiModelProperty("商品规格编号")
private String skuNo;
@ApiModelProperty("下单时间")
private Date createTime;
}
package com.mmc.oms.model.dto.uav;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/4 15:02
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "订单状态")
public class UavOrderStatusDTO implements Serializable {
private static final long serialVersionUID = -3676195254250571926L;
private Integer id;
private String status;
private Integer code;
private Integer nextCode;
}
package com.mmc.oms.model.dto.user; package com.mmc.oms.model.dto.user;
import com.mmc.oms.model.vo.CompanyInfoVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
...@@ -17,13 +18,12 @@ import java.io.Serializable; ...@@ -17,13 +18,12 @@ import java.io.Serializable;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
//@ApiModel(value = "com.mmc.csf.model.dto.BaseAccountDTO", description = "登录信息DTO")
public class BaseAccountDTO implements Serializable { public class BaseAccountDTO implements Serializable {
private static final long serialVersionUID = -2979712090903806216L; private static final long serialVersionUID = -2979712090903806216L;
@ApiModelProperty(value = "token") @ApiModelProperty(value = "token")
private String token; private String token;
@ApiModelProperty(value = "账号id") @ApiModelProperty(value = "当前账号id")
private Integer userAccountId; private Integer userAccountId;
@ApiModelProperty(value = "账号") @ApiModelProperty(value = "账号")
private String accountNo; private String accountNo;
...@@ -37,6 +37,11 @@ public class BaseAccountDTO implements Serializable { ...@@ -37,6 +37,11 @@ public class BaseAccountDTO implements Serializable {
private String nickName; private String nickName;
@ApiModelProperty(value = "0是后台管理 100客户端 小程序") @ApiModelProperty(value = "0是后台管理 100客户端 小程序")
private Integer portType; private Integer portType;
@ApiModelProperty(value = "后台账号单位信息")
private CompanyInfoVO companyInfoVO;
@ApiModelProperty(value = "角色信息")
private RoleInfoDTO roleInfo;
@ApiModelProperty(value = "小程序登录id")
private Integer appUserAccountId;
} }
...@@ -27,7 +27,7 @@ public class RoleInfoDTO implements Serializable { ...@@ -27,7 +27,7 @@ public class RoleInfoDTO implements Serializable {
@ApiModelProperty(value = "角色名称") @ApiModelProperty(value = "角色名称")
private String roleName; private String roleName;
@ApiModelProperty(value = "是否为管理角色:0否 1是") @ApiModelProperty(value = "是否为管理角色:0否 1是")
private Integer admin;// 是否为管理角色 private Integer superAdmin;
@ApiModelProperty(value = "是否为运营角色:0否 1是") @ApiModelProperty(value = "是否为运营角色:0否 1是")
private Integer operate; private Integer operate;
@ApiModelProperty(value = "是否为系统角色:0否 1是") @ApiModelProperty(value = "是否为系统角色:0否 1是")
......
package com.mmc.oms.model.qo.uav;
import com.mmc.oms.common.publicinterface.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/6 15:03
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UavOrderQO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "关键字-订单编号", required = false)
private String keyword;
@ApiModelProperty(value = "用户uid", required = false)
private String uid;
@ApiModelProperty(value = "订单状态码")
private Integer statusCode;
@ApiModelProperty(value = "用户id", hidden = true)
private Integer userAccountId;
@ApiModelProperty(value = "商家id", hidden = true)
private Integer thirdBackUserAccountId;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "页码", required = true)
@NotNull(message = "页码不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "每页显示数", required = true)
@NotNull(message = "每页显示数不能为空", groups = Page.class)
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.oms.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author LW
* @date 2023/7/22 14:51
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ApplyRefundVO {
@ApiModelProperty(value = "商户订单号", required = true)
private String outTradeNo;
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty(value = "退款金额", required = true)
private Long refund;
// @ApiModelProperty(value = "商品信息(可填可不填)")
// private List<GoodsDetail> goodsDetail;
}
package com.mmc.oms.model.vo;
import com.mmc.oms.common.publicinterface.Insert;
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.NotNull;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/7/3 16:04
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CompanyInfoVO implements Serializable {
private static final long serialVersionUID = 3247519744829926132L;
@ApiModelProperty(value = "id")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "单位类型,0科比特,1加盟公司", example = "0")
@NotNull(message = "单位类型不能为空", groups = {Insert.class})
private Integer companyType;
@ApiModelProperty(value = "单位名称", example = "科比特")
@NotNull(message = "单位名称不能为空", groups = {Insert.class})
private String companyName;
@ApiModelProperty(value = "单位全称", example = "浙江科比特创新科技有限公司")
private String fullName;
@ApiModelProperty(value = "省份名称", example = "广东省", hidden = true)
@NotNull(message = "省份名称不能为空")
private String province;
@ApiModelProperty(value = "城市名称", example = "深圳市", hidden = true)
@NotNull(message = "城市名称不能为空")
private String city;
@ApiModelProperty(value = "县区名称", example = "南山区", hidden = true)
@NotNull(message = "县区名称不能为空")
private String district;
@ApiModelProperty(value = "详细地址", example = "西丽街道万科云城国际创新谷6栋")
@NotNull(message = "详细地址不能为空", groups = {Insert.class})
private String address;
@ApiModelProperty(value = "联系人", example = "lx")
private String companyUserName;
@ApiModelProperty(value = "联系电话", example = "13925255742")
private String phoneNum;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "小程序用户id")
private Integer userAccountId;
@ApiModelProperty(value = "后台用户id")
private Integer backUserAccountId;
@ApiModelProperty(value = "纬度")
private Double lat;
@ApiModelProperty(value = "经度")
private Double lon;
@ApiModelProperty(value = "社会信用代码")
private String creditCode;
@ApiModelProperty(value = "营业执照")
private String licenseImg;
@ApiModelProperty(value = "品牌名称", example = "科比特")
private String brandName;
@ApiModelProperty(value = "品牌logo", example = "http://")
private String brandLogo;
@ApiModelProperty(value = "管理员标识")
private Integer leader;
@ApiModelProperty(value = "服务资质信息", example = "5星店铺")
private String content;
@ApiModelProperty(value = "评分", example = "*****")
private Integer score;
@ApiModelProperty(value = "背景图", example = "http://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/3505c402-cbf9-41a5-9d6f-bdb350625bea.jpg")
private String backImg;
@ApiModelProperty(value = "当前距离")
private Double distance;
}
...@@ -21,6 +21,8 @@ public class CommonPaymentVO { ...@@ -21,6 +21,8 @@ public class CommonPaymentVO {
@ApiModelProperty(value = "订单编号", example = "R202307251459553408130") @ApiModelProperty(value = "订单编号", example = "R202307251459553408130")
private String orderNumber; private String orderNumber;
@ApiModelProperty(value = "商品描述")
private String description;
@ApiModelProperty(value = "订单来源 0:产品商城 1:租赁订单 2:培训订单 3发布需求 4服务需求发布 5充值 ...其他后续加") @ApiModelProperty(value = "订单来源 0:产品商城 1:租赁订单 2:培训订单 3发布需求 4服务需求发布 5充值 ...其他后续加")
private Integer orderPort; private Integer orderPort;
......
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @author: zj
* @Date: 2023/9/4 16:01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AddUavOrderVO implements Serializable {
private static final long serialVersionUID = 2749055915508197141L;
@ApiModelProperty("商家id")
private Integer thirdBackUserAccountId;
@ApiModelProperty("卖家企业名称")
private String companyName;
@ApiModelProperty("商品id")
private Integer mallGoodsId;
@ApiModelProperty("收货地址")
private Integer userAddressId;
@ApiModelProperty("订单类型,0正常直接支付订单,1意向沟通订单")
private Integer orderType;
@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("用户备注")
private String userRemark;
@ApiModelProperty("规格列表")
private List<UavOrderSkuVO> skuVOS;
@ApiModelProperty("是否抵扣云享金,0否,1是")
private Integer deductShareAmount;
@ApiModelProperty("是否抵扣余额,0否,1是")
private Integer deductSalaryAmount;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author LW
* @date 2023/7/24 17:57
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GoodsResourcesVO {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "url")
private String url;
@ApiModelProperty(value = "类型:0主图 1副图 2视频")
private Integer type;
}
package com.mmc.oms.model.vo.uav;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
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.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Author LW
* @date 2023/7/24 17:44
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class MallGoodsVO implements Serializable {
private static final long serialVersionUID = 3608022295150526085L;
@ApiModelProperty(value = "id", example = "1")
@NotNull(message = "id不能为空", groups = {Update.class})
private Integer id;
@ApiModelProperty(value = "商品名称", example = "这是商品名称", required = true)
@NotBlank(message = "商品名称不能为空", groups = {Update.class, Create.class})
private String tradeName;
@ApiModelProperty(value = "商品描述", example = "商品描述", required = true)
@NotBlank(message = "商品描述不能为空", groups = {Update.class, Create.class})
private String description;
@ApiModelProperty(value = "商品资源:图片or视频及其他")
@NotEmpty(message = "图片不能为空")
private List<GoodsResourcesVO> resourcesList;
@ApiModelProperty(value = "一级分类id", example = "1", required = true)
@NotNull(message = "一级分类id不能为空", groups = {Update.class, Create.class})
private Integer categoryPrimaryId;
@ApiModelProperty(value = "二级分类id", example = "2", required = true)
@NotNull(message = "二级分类id不能为空", groups = {Update.class, Create.class})
private Integer categorySubId;
@ApiModelProperty(value = "商品状态", example = "1", required = true)
@NotNull(message = "商品状态不能为空", groups = {Update.class, Create.class})
private Integer shelfStatus;
@ApiModelProperty(value = "商品标签")
private String goodsLabel;
@ApiModelProperty(value = "标签是否显示 0否 1是")
private Integer labelShow;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
private List<SpecAttrVO> specAttrList;
@ApiModelProperty(value = "价格库存排列组合表信息")
private List<PriceStockVO> priceStock;
@ApiModelProperty(value = "商品详情 富文本")
private String goodsDetails;
@ApiModelProperty(value = "创建时间 用作列表回显")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(value = "店铺id 小程序用")
private Integer userAccountId;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/9/7 16:07
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PayUavWalletVO implements Serializable {
private static final long serialVersionUID = 1683979749411588941L;
@ApiModelProperty(value = "用户ID")
private Integer userAccountId;
@ApiModelProperty(value = "云享金")
private BigDecimal cashAmount;
@ApiModelProperty(value = "佣金")
private BigDecimal salaryAmount;
@ApiModelProperty(value = "订单状态 100:订单支付 1400:商城订单退款")
private Integer orderStatus;
@ApiModelProperty(value = "订单备注")
private String remark;
}
package com.mmc.oms.model.vo.uav;
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;
/**
* @Author LW
* @date 2023/8/8 10:48
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PriceStockVO implements Serializable {
private static final long serialVersionUID = 1011141620995647903L;
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "商品规格", example = "示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来")
private String productSpec;
@ApiModelProperty(value = "销售价格", example = "1")
private BigDecimal salePrice;
@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 = "1")
private BigDecimal channelPrice;
@ApiModelProperty(value = "库存", example = "10")
private Integer stock;
@ApiModelProperty(value = "sku编号", example = "mmc-da-s-b")
private String skuNo;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author LW
* @date 2023/7/24 20:16
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpecAttrVO {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "规格名称", example = "规格名称", required = true)
private String specName;
@ApiModelProperty(value = "规格值信息", required = true)
private List<SpecAttrVO> specValuesList;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/6 14:46
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UavOrderExpressVO implements Serializable {
private static final long serialVersionUID = -255177942680112246L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "快递编号")
private String sendExpNo;
@ApiModelProperty(value = "快递编码")
private String sendExpCode;
@ApiModelProperty(value = "取货人")
private String takeName;
@ApiModelProperty(value = "取货人号码")
private String takePhone;
@ApiModelProperty(value = "地区信息")
private String takeRegion;
@ApiModelProperty(value = "发货-收货详细地址")
private String takeAddress;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/6 19:25
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("最新版-订单支付信息")
public class UavOrderPayVO implements Serializable {
private static final long serialVersionUID = 7418105078457625073L;
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "支付凭证")
private String payImgList;
@ApiModelProperty(value = "审核状态,0待审批,1通过,2未通过")
private Integer checkStatus;
@ApiModelProperty(value = "备注信息")
private String payRemark;
@ApiModelProperty(value = "未通过原因")
private String refuseReason;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author: zj
* @Date: 2023/9/6 14:56
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UavOrderRemarkVO implements Serializable {
private static final long serialVersionUID = -5505722703435250409L;
@ApiModelProperty(value = "订单id")
private Integer uavOrderId;
@ApiModelProperty(value = "评分")
private Integer level;
@ApiModelProperty(value = "图片地址,‘,’隔开")
private String uavImages;
@ApiModelProperty(value = "评论内容")
private String content;
}
package com.mmc.oms.model.vo.uav;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author: zj
* @Date: 2023/9/4 16:31
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UavOrderSkuVO implements Serializable {
private static final long serialVersionUID = 6034392498890957390L;
@ApiModelProperty("商品规格id")
@NotNull(message = "商品规格id必传")
private Integer priceStockId;
@ApiModelProperty("商品规格")
@NotNull(message = "商品规格必传")
private String productSpec;
@ApiModelProperty("购买数量")
@NotNull(message = "购买数量图片必传")
private Integer orderNum;
@ApiModelProperty(value = "单价", hidden = true)
private BigDecimal unitPrice;
@ApiModelProperty("商品规格图片")
@NotNull(message = "商品规格图片必传")
private String skuImage;
@ApiModelProperty("商品规格编号")
private String skuNo;
@ApiModelProperty("客户提交订单的单价")
@NotNull(message = "价格必传")
private BigDecimal salePrice;
}
...@@ -5,9 +5,9 @@ package com.mmc.oms.mq.constant; ...@@ -5,9 +5,9 @@ package com.mmc.oms.mq.constant;
* @Date: 2023/8/23 11:26 * @Date: 2023/8/23 11:26
*/ */
public class RabbitmqConstant { public class RabbitmqConstant {
public final static String USER_TOP_UP_DIRECT_EXCHANGE = "USER_TOP_UP_DIRECT_EXCHANGE";
public final static String USER_TOP_UP_DIRECT_QUEUE = "USER_TOP_UP_DIRECT_QUEUE"; public final static String USER_TOP_UP_DIRECT_QUEUE = "USER_TOP_UP_DIRECT_QUEUE";
public final static String USER_TOP_UP_ROUTING_KEY = "USER_TOP_UP_ROUTING_KEY"; public final static String PAY_UAV_ORDER_SUCCESS_QUEUE = "PAY_UAV_ORDER_SUCCESS_QUEUE";
} }
...@@ -5,6 +5,7 @@ import com.mmc.oms.dao.topup.TopUpOrderDao; ...@@ -5,6 +5,7 @@ import com.mmc.oms.dao.topup.TopUpOrderDao;
import com.mmc.oms.entity.topup.TopUpOrderDO; import com.mmc.oms.entity.topup.TopUpOrderDO;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO; import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import com.mmc.oms.mq.constant.RabbitmqConstant; import com.mmc.oms.mq.constant.RabbitmqConstant;
import com.mmc.oms.service.uav.UavOrderService;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -24,6 +25,9 @@ public class MqConsumer { ...@@ -24,6 +25,9 @@ public class MqConsumer {
@Resource @Resource
TopUpOrderDao topUpOrderDao; TopUpOrderDao topUpOrderDao;
@Resource
private UavOrderService uavOrderService;
@RabbitListener(queues = RabbitmqConstant.USER_TOP_UP_DIRECT_QUEUE) @RabbitListener(queues = RabbitmqConstant.USER_TOP_UP_DIRECT_QUEUE)
public void subscribeDirectQueue(@Payload String topUpOrder, Channel channel, Message message) { public void subscribeDirectQueue(@Payload String topUpOrder, Channel channel, Message message) {
TopUpOrderVO topUpOrderVO = JSONObject.parseObject(topUpOrder, TopUpOrderVO.class); TopUpOrderVO topUpOrderVO = JSONObject.parseObject(topUpOrder, TopUpOrderVO.class);
...@@ -36,4 +40,13 @@ public class MqConsumer { ...@@ -36,4 +40,13 @@ public class MqConsumer {
topUpOrderDao.updateTopUpOrderInfo(topUpOrderDO); topUpOrderDao.updateTopUpOrderInfo(topUpOrderDO);
log.info("<==========用户充值订单消费结束==========>"); log.info("<==========用户充值订单消费结束==========>");
} }
@RabbitListener(queues = RabbitmqConstant.PAY_UAV_ORDER_SUCCESS_QUEUE)
public void subscribePayUavOrderDirectQueue(@Payload String topUpOrder, Channel channel, Message message) {
TopUpOrderVO topUpOrderVO = JSONObject.parseObject(topUpOrder, TopUpOrderVO.class);
log.info("<==========商城支付消费开始:信息是---->{}==========>", topUpOrderVO);
// 根据支付消息修改订单状态
uavOrderService.payUavOrder(topUpOrderVO);
log.info("<==========用户充值订单消费结束==========>");
}
} }
...@@ -10,10 +10,16 @@ import com.mmc.oms.controller.demand.util.EmojiUtils; ...@@ -10,10 +10,16 @@ import com.mmc.oms.controller.demand.util.EmojiUtils;
import com.mmc.oms.dao.demand.DemandReleaseOrderDao; import com.mmc.oms.dao.demand.DemandReleaseOrderDao;
import com.mmc.oms.dao.demand.PublishServiceOrderDao; import com.mmc.oms.dao.demand.PublishServiceOrderDao;
import com.mmc.oms.dao.topup.TopUpOrderDao; import com.mmc.oms.dao.topup.TopUpOrderDao;
import com.mmc.oms.dao.uav.UavOrderDao;
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.topup.TopUpOrderDO; import com.mmc.oms.entity.topup.TopUpOrderDO;
import com.mmc.oms.entity.uav.UavOrderDO;
import com.mmc.oms.enums.UavOrderStatus;
import com.mmc.oms.feign.UserAppApi;
import com.mmc.oms.model.dto.uav.PayWalletDTO;
import com.mmc.oms.model.vo.demand.CommonPaymentVO; import com.mmc.oms.model.vo.demand.CommonPaymentVO;
import com.mmc.oms.model.vo.demand.DemandReleaseOrderVO; import com.mmc.oms.model.vo.demand.DemandReleaseOrderVO;
import com.mmc.oms.model.vo.demand.OrderRequestParamsVO; import com.mmc.oms.model.vo.demand.OrderRequestParamsVO;
...@@ -32,9 +38,11 @@ import org.springframework.web.client.RestTemplate; ...@@ -32,9 +38,11 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
/** /**
* @Author small * @Author small
...@@ -53,17 +61,26 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -53,17 +61,26 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
private DemandReleaseOrderDao releaseOrderDao; private DemandReleaseOrderDao releaseOrderDao;
@Autowired @Autowired
private UavOrderDao uavOrderDao;
@Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Value("${payment.url}") @Value("${payment.url}")
private String paymentUrl; private String paymentUrl;
@Value("${ims.url}")
private String imsApp;
@Autowired @Autowired
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
@Resource @Resource
private TopUpOrderDao topUpOrderDao; private TopUpOrderDao topUpOrderDao;
@Autowired
private UserAppApi userAppApi;
@Override @Override
public ResultBody publish(DemandReleaseOrderVO demandReleaseOrderVO, HttpServletRequest request) { public ResultBody publish(DemandReleaseOrderVO demandReleaseOrderVO, HttpServletRequest request) {
DemandReleaseOrderDO requirementsInfoDO = new DemandReleaseOrderDO(demandReleaseOrderVO); DemandReleaseOrderDO requirementsInfoDO = new DemandReleaseOrderDO(demandReleaseOrderVO);
...@@ -76,11 +93,13 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -76,11 +93,13 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
public ResultBody orderPayment(CommonPaymentVO commonPaymentVO, HttpServletRequest request, Integer userAccountId) { public ResultBody orderPayment(CommonPaymentVO commonPaymentVO, HttpServletRequest request, Integer userAccountId) {
String token = request.getHeader("token"); String token = request.getHeader("token");
switch (commonPaymentVO.getOrderPort().toString()) { switch (commonPaymentVO.getOrderPort().toString()) {
case "0":
return payUavOrder(commonPaymentVO, token);
case "3": case "3":
return orderPost(commonPaymentVO, token); return orderPost(commonPaymentVO, token);
case "4": case "4":
//发布服务需求支付 //发布服务需求支付
return publishServicePay(commonPaymentVO, token, userAccountId); return publishServicePay(commonPaymentVO, token, userAccountId,request);
case "5": case "5":
return topUpOrder(commonPaymentVO, token, userAccountId); return topUpOrder(commonPaymentVO, token, userAccountId);
default: default:
...@@ -88,6 +107,24 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -88,6 +107,24 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
} }
} }
public ResultBody payUavOrder(CommonPaymentVO commonPaymentVO, String token) {
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(commonPaymentVO.getOrderNumber());
if (!uavOrderDO.getOtherAmount().multiply(BigDecimal.valueOf(100)).equals(commonPaymentVO.getAmount())){
return ResultBody.error("发起支付金额不正确");
}
OrderRequestParamsVO orderRequestParamsVO = new OrderRequestParamsVO();
orderRequestParamsVO.setOrderNo(commonPaymentVO.getOrderNumber());
orderRequestParamsVO.setAmount(commonPaymentVO.getAmount());
orderRequestParamsVO.setAttach("PAY_UAV_ORDER");
orderRequestParamsVO.setDescription(commonPaymentVO.getDescription());
orderRequestParamsVO.setOrderPort(commonPaymentVO.getOrderPort());
ResultBody resultBody = releaseOrder(orderRequestParamsVO, token);
if (!"200".equals(resultBody.getCode())) {
throw new RuntimeException("调用微信支付方法失败!");
}
return resultBody;
}
@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位
...@@ -124,9 +161,14 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -124,9 +161,14 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
* @param userAccountId * @param userAccountId
* @return * @return
*/ */
private ResultBody publishServicePay(CommonPaymentVO commonPaymentVO, String token,Integer userAccountId) { private ResultBody publishServicePay(CommonPaymentVO commonPaymentVO, String token,Integer userAccountId, HttpServletRequest request) {
if ("4".equals(commonPaymentVO.getOrderPort().toString())){ if ("4".equals(commonPaymentVO.getOrderPort().toString())){
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
String orderNumber = commonPaymentVO.getOrderNumber(); String orderNumber = commonPaymentVO.getOrderNumber();
String json = stringRedisTemplate.opsForValue().get(orderNumber); String json = stringRedisTemplate.opsForValue().get(orderNumber);
GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class); GetOrderNumberDTO getOrderNumberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class);
...@@ -136,6 +178,11 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -136,6 +178,11 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
if (i!=0){ if (i!=0){
return ResultBody.error("当前需求已有人支付"); return ResultBody.error("当前需求已有人支付");
} }
ServiceRequirementsDO repertory = repertory(getOrderNumberDO.getRequirementsInfoId(), request);
Integer repertory1 = repertory.getRepertory();
if (repertory1!=null && repertory1<=0 ){
return ResultBody.error("需求已被人抢走");
}
} }
releaseOrderDao.insertService(getOrderNumberDO); releaseOrderDao.insertService(getOrderNumberDO);
BigDecimal paramMoney = getOrderNumberDO.getWeChatPay(); BigDecimal paramMoney = getOrderNumberDO.getWeChatPay();
...@@ -224,4 +271,23 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService ...@@ -224,4 +271,23 @@ public class DemandReleaseOrderServiceImpl implements DemandReleaseOrderService
} }
return ResultBody.success(map); return ResultBody.success(map);
} }
/**
* 查看是否支付成功
*
* @param requirementsInfoId
* @return
*/
public ServiceRequirementsDO repertory(Integer requirementsInfoId, HttpServletRequest request) {
String token = request.getHeader("token");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("token", token);
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(requirementsInfoId), headers);
ResponseEntity<ServiceRequirementsDO> exchange = restTemplate.exchange(imsApp + "requirements/repertory?requirementsInfoId=" + requirementsInfoId, HttpMethod.GET, entity, ServiceRequirementsDO.class);
ServiceRequirementsDO body = exchange.getBody();
return body;
}
} }
package com.mmc.oms.service.uav;
import com.mmc.oms.common.result.ResultBody;
import com.mmc.oms.model.dto.user.BaseAccountDTO;
import com.mmc.oms.model.qo.uav.UavOrderQO;
import com.mmc.oms.model.vo.uav.AddUavOrderVO;
import com.mmc.oms.model.vo.uav.UavOrderExpressVO;
import com.mmc.oms.model.vo.uav.UavOrderPayVO;
import com.mmc.oms.model.vo.uav.UavOrderRemarkVO;
import com.mmc.oms.model.vo.wallet.TopUpOrderVO;
import javax.servlet.http.HttpServletRequest;
/**
* @author: zj
* @Date: 2023/9/4 15:31
*/
public interface UavOrderService {
ResultBody addOrder(AddUavOrderVO param, BaseAccountDTO currentAccount);
ResultBody detail(Integer id) throws Exception;
ResultBody close(Integer id, String token);
ResultBody list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount);
ResultBody listByUid(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount);
ResultBody pay(Integer id, BaseAccountDTO currentAccount, HttpServletRequest request);
ResultBody send(UavOrderExpressVO param);
ResultBody receive(Integer id, BaseAccountDTO currentAccount);
ResultBody remarkOrder(UavOrderRemarkVO uavOrderRemarkVO);
ResultBody sellerRemark(Integer id, String content);
ResultBody statusList();
ResultBody upLoadPay(UavOrderPayVO uavOrderPayVO);
ResultBody checkPay(UavOrderPayVO uavOrderPayVO);
void payUavOrder(TopUpOrderVO topUpOrderVO);
}
...@@ -67,5 +67,8 @@ payment: ...@@ -67,5 +67,8 @@ payment:
pms: pms:
url: https://test.iuav.shop/pms/ url: https://test.iuav.shop/pms/
ims:
url: https://test.iuav.shop/release/
...@@ -7,8 +7,9 @@ spring: ...@@ -7,8 +7,9 @@ spring:
password: IUAV_DEV@2023&MYSQL password: IUAV_DEV@2023&MYSQL
redis: redis:
database: 1 database: 1
host: 127.0.0.1 host: r-wz9ke310fs684hacn1pd.redis.rds.aliyuncs.com
port: 6379 port: 6379
password: MMC@2022&REDIS
jedis: jedis:
pool: pool:
max-active: 2 max-active: 2
...@@ -57,5 +58,7 @@ payment: ...@@ -57,5 +58,7 @@ payment:
pms: pms:
url: http://localhost:8099/pms/ url: http://localhost:8099/pms/
ims:
url: http://localhost:10001/release/
...@@ -66,3 +66,5 @@ payment: ...@@ -66,3 +66,5 @@ payment:
pms: pms:
url: https://www.iuav.shop/pms/ url: https://www.iuav.shop/pms/
ims:
url: https://www.iuav.shop/release/
<?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.UavOrderDao">
<resultMap type="com.mmc.oms.entity.uav.UavOrderDO"
id="uavOrderResultMap">
<id property="id" column="id" />
<result property="orderNo" column="order_no" />
<result property="statusCode" column="status_code" />
<result property="userAccountId" column="user_account_id" />
<result property="thirdBackUserAccountId" column="third_back_user_account_id" />
<result property="companyName" column="company_name" />
<result property="orderTotalAmount" column="order_total_amount" />
<result property="salaryAmount" column="salary_amount" />
<result property="shareAmount" column="share_amount" />
<result property="otherAmount" column="other_amount" />
<result property="payType" column="pay_type" />
<result property="orderType" column="order_type" />
<result property="deliveryTime" column="delivery_time" />
<result property="userAddressId" column="user_address_id" />
<result property="userRemark" column="user_remark" />
<result property="sellerRemark" column="seller_remark" />
<result property="createTime" column="create_time" />
<result property="payTime" column="pay_time" />
<result property="confirmReceiptTime" column="confirm_receipt_time" />
<result property="version" column="version" />
<result property="remarkStatus" column="remark_status" />
<result property="updateTime" column="update_time" />
<collection property="skuDOS" ofType="com.mmc.oms.entity.uav.UavOrderSkuDO"
select="listUavOrderSkuDO"
column="{uavOrderId=id}">
</collection>
</resultMap>
<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,
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
</sql>
<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,
salary_amount, share_amount, other_amount, pay_type, order_type, user_address_id, user_remark, seller_remark, create_time
)
values( #{orderNo}, #{statusCode}, #{userAccountId}, #{thirdBackUserAccountId}, #{companyName}, #{orderTotalAmount},
#{salaryAmount}, #{shareAmount}, #{otherAmount}, #{payType}, #{orderType}, #{userAddressId}, #{userRemark}, #{sellerRemark},
NOW()
);
</insert>
<insert id="addOrderSku" keyProperty="id" useGeneratedKeys="true">
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)
values
<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())
</foreach>
</insert>
<insert id="addOrderPay" parameterType="com.mmc.oms.entity.uav.UavOrderPayDO" useGeneratedKeys="true" keyProperty="id">
insert into uav_order_pay(
uav_order_id,
order_no,
pay_type,
pay_amount,
pay_img_list,
check_status,
pay_remark,
refuse_reason,
create_time,
check_time
)
values(#{uavOrderId}, #{orderNo}, #{payType}, #{payAmount}, #{payImgList}, #{checkStatus}, #{payRemark}, #{refuseReason}, NOW(), #{checkTime})
</insert>
<update id="sellerRemark">
update uav_order set seller_remark = #{content} where id = #{id}
</update>
<update id="updateUavOrderStatus">
update uav_order set status_code = #{nextCode} where id = #{id}
</update>
<update id="updateUavOrderPayInfo" parameterType="com.mmc.oms.entity.uav.UavOrderDO">
update uav_order set pay_time = #{payTime}, pay_type = #{payType} where id = #{id}
</update>
<select id="detail" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select <include refid="uav_order_column" /> from uav_order where id = #{id}
</select>
<select id="listUavOrderPay" resultType="com.mmc.oms.entity.uav.UavOrderPayDO">
select
id,
uav_order_id,
pay_type,
pay_img_list,
check_status,
pay_remark,
refuse_reason,
create_time,
check_time
from uav_order_pay
where uav_order_id = #{uavOrderId}
</select>
<select id="listUavOrderSkuDO" resultType="com.mmc.oms.entity.uav.UavOrderSkuDO">
select
id,
uav_order_id,
mall_goods_id,
trade_name,
price_stock_id,
product_spec,
order_num,
unit_price,
sku_image,
sku_no,
create_time
from uav_order_sku
where uav_order_id = #{uavOrderId}
</select>
<select id="statusList" resultType="com.mmc.oms.entity.uav.UavOrderStatusDO">
select
id,
status,
code,
next_code
from uav_order_status
</select>
<select id="countList" resultType="java.lang.Integer" parameterType="com.mmc.oms.model.qo.uav.UavOrderQO">
select count(*) from uav_order
where 1 = 1
<if test="keyword != null">
and order_no = #{orderNo}
</if>
<if test="uid != null">
and user_account_id = #{uid}
</if>
<if test="userAccountId != null">
and user_account_id = #{userAccountId}
</if>
<if test="statusCode != null">
and status_code = #{statusCode}
</if>
<if test="thirdBackUserAccountId != null">
and third_back_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="startTime != null">
and create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= create_time
</if>
</select>
<select id="list" resultMap="uavOrderResultMap" parameterType="com.mmc.oms.model.qo.uav.UavOrderQO">
SELECT <include refid="uav_order_column" />
FROM
uav_order uo
where 1 = 1
<if test="keyword != null">
and uo.order_no = #{orderNo}
</if>
<if test="uid != null">
and uo.user_account_id = #{uid}
</if>
<if test="userAccountId != null">
and uo.user_account_id = #{userAccountId}
</if>
<if test="statusCode != null">
and uo.status_code = #{statusCode}
</if>
<if test="thirdBackUserAccountId != null">
and uo.third_back_user_account_id = #{thirdBackUserAccountId}
</if>
<if test="startTime != null">
and uo.create_time >= #{startTime}
</if>
<if test="endTime != null">
and #{endTime} >= uo.create_time
</if>
order by uo.id desc
limit #{pageNo}, #{pageSize}
</select>
<select id="detailByNo" resultType="com.mmc.oms.entity.uav.UavOrderDO">
select <include refid="uav_order_column" /> from uav_order where order_no = #{orderNo}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.oms.dao.uav.UavOrderExpressDao">
<insert id="addAddress" keyProperty="id" useGeneratedKeys="true"
parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO">
insert into uav_order_express(uav_order_id, send_exp_no, send_exp_code, take_name, take_phone, take_region, take_address, create_time)
values (#{uavOrderId}, #{sendExpNo}, #{sendExpCode}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress}, NOW())
</insert>
<update id="updateUavOrderExpressDO" parameterType="com.mmc.oms.entity.uav.UavOrderExpressDO">
update uav_order_express
<set>
<if test="sendExpNo != null">
send_exp_no = #{sendExpNo},
</if>
<if test="sendExpCode != null">
send_exp_code = #{sendExpCode},
</if>
<if test="takeName != null">
take_name = #{takeName},
</if>
<if test="takePhone != null">
take_phone = #{takePhone},
</if>
<if test="takeRegion != null">
take_region = #{takeRegion},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
<if test="sendTime != null">
send_time = #{sendTime},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
<if test="receive != null">
is_receive = #{receive},
</if>
<if test="receiveTime != null">
receive_time = #{receiveTime},
</if>
<if test="takeAddress != null">
take_address = #{takeAddress},
</if>
</set>
where
id = #{id}
</update>
<select id="getUavOrderExpressDO" resultType="com.mmc.oms.entity.uav.UavOrderExpressDO">
select
id,
uav_order_id,
send_exp_no,
send_exp_code,
take_name,
take_phone,
take_region,
take_address,
send_time,
is_receive,
receive_time,
update_time,
create_time
from uav_order_express
where uav_order_id = #{uavOrderId}
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论