提交 0349ee5f 作者: xiaowang

Merge branch 'develop' of ssh://git.mmcuav.cn:8222/iuav/oms into develop

 Conflicts:
	src/main/java/com/mmc/oms/service/uav/impl/UavOrderServiceImpl.java
...@@ -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: a4870374737ddbbcbffe5b315083b5d88d9ebbe9 newTag: e4c8c94ca488ff141cb02a3151438d95f7d4ae8d
...@@ -239,6 +239,14 @@ public class CodeUtil { ...@@ -239,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();
}
/** /**
* 活动编号 * 活动编号
*/ */
......
...@@ -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,6 +3,7 @@ package com.mmc.oms.controller.uav; ...@@ -3,6 +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.MultiUavOrderDTO;
import com.mmc.oms.model.dto.uav.UavCartCompanyDTO; import com.mmc.oms.model.dto.uav.UavCartCompanyDTO;
import com.mmc.oms.model.dto.uav.UavOrderDTO; import com.mmc.oms.model.dto.uav.UavOrderDTO;
import com.mmc.oms.model.dto.uav.UavOrderStatusDTO; import com.mmc.oms.model.dto.uav.UavOrderStatusDTO;
...@@ -38,10 +39,10 @@ public class UavOrderController extends BaseController { ...@@ -38,10 +39,10 @@ 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));
} }
......
...@@ -21,6 +21,4 @@ public interface UserAddressDao { ...@@ -21,6 +21,4 @@ public interface UserAddressDao {
UserAddressDO selectById(Integer userAddressId); UserAddressDO selectById(Integer userAddressId);
List<UserAddressDO> selectList(UserAddressDO userAddressDO); List<UserAddressDO> selectList(UserAddressDO userAddressDO);
void batchAddOrderExpress(List<UavOrderExpressDO> expressDOS);
} }
...@@ -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.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;
}
...@@ -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);
/** /**
* 获取小程序用户集合列表页面 * 获取小程序用户集合列表页面
* *
......
...@@ -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;
......
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;
}
...@@ -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;
......
...@@ -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)
......
...@@ -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位
......
...@@ -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);
} }
...@@ -80,13 +80,13 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -80,13 +80,13 @@ public class UavCartServiceImpl implements UavCartService {
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);
List<UavCartCompanyDTO> collect = uavCartCompanyDTOS.stream().filter(i -> CollectionUtils.isNotEmpty(i.getUavCartDOS())).collect(Collectors.toList()); uavCartCompanyDTOS.removeIf(i -> CollectionUtils.isEmpty(i.getUavCartDOS()));
return ResultBody.success(PageResult.buildPage(pageNo, uavCartQO.getPageSize(), list.size(), collect)); 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()) {
...@@ -96,9 +96,6 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -96,9 +96,6 @@ 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());
...@@ -120,13 +117,7 @@ public class UavCartServiceImpl implements UavCartService { ...@@ -120,13 +117,7 @@ public class UavCartServiceImpl implements UavCartService {
// 找不到或被删除则置为失效 // 找不到或被删除则置为失效
if (!flag || uavCartDTO.getDeleted().equals(1)) { if (!flag || uavCartDTO.getDeleted().equals(1)) {
uavCartDTO.setShelfStatus(0); uavCartDTO.setShelfStatus(0);
} uavCartDTO.setDeleted(1);
}
for (UavCartCompanyDTO cartCompanyDTO : uavCartCompanyDTOS) {
if (UavOrderType.PAY.getCode().equals(orderType)) {
cartCompanyDTO.setUavCartDOS(cartCompanyDTO.getUavCartDOS().stream().filter( item -> item.getPriceShow().equals(1)).collect(Collectors.toList()));
}else {
cartCompanyDTO.setUavCartDOS(cartCompanyDTO.getUavCartDOS().stream().filter( item -> item.getPriceShow().equals(0)).collect(Collectors.toList()));
} }
} }
} }
......
...@@ -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
...@@ -86,14 +90,14 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -86,14 +90,14 @@ public class UavOrderServiceImpl implements UavOrderService {
@Transactional @Transactional
public ResultBody addOrder(AddUavOrderVO param, BaseAccountDTO currentAccount) { public ResultBody addOrder(AddUavOrderVO param, BaseAccountDTO currentAccount) {
log.info("user:{},addOrder param:{}", currentAccount.getUserAccountId(), param); log.info("user:{},addOrder param:{}", currentAccount.getUserAccountId(), param);
if (CollectionUtils.isEmpty(param.getSkuVOS())) { if (CollectionUtils.isEmpty(param.getSkuVOS())){
return ResultBody.error("至少选择一个规格!"); return ResultBody.error("至少选择一个规格!");
} }
MallGoodsVO mallGoodsVO = null; MallGoodsVO mallGoodsVO = null;
try { try {
mallGoodsVO = pmsClient.mallGoodsDetails(param.getMallGoodsId()); mallGoodsVO = pmsClient.mallGoodsDetails(param.getMallGoodsId());
// 检验商品是否在卖 // 检验商品是否在卖
if (mallGoodsVO == null || !mallGoodsVO.getShelfStatus().equals(1)) { if (mallGoodsVO == null || !mallGoodsVO.getShelfStatus().equals(1)){
return ResultBody.error("商品已下架"); return ResultBody.error("商品已下架");
} }
// 找到对应的规格 // 找到对应的规格
...@@ -107,11 +111,11 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -107,11 +111,11 @@ public class UavOrderServiceImpl implements UavOrderService {
break; break;
} }
} }
if (!flag) { if (!flag){
return ResultBody.error("选择规格不存在"); return ResultBody.error("选择规格不存在");
} }
} }
} catch (Exception e) { }catch (Exception e){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
e.printStackTrace(); e.printStackTrace();
} }
...@@ -129,31 +133,31 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -129,31 +133,31 @@ public class UavOrderServiceImpl implements UavOrderService {
BigDecimal salaryAmount = BigDecimal.ZERO; BigDecimal salaryAmount = BigDecimal.ZERO;
Integer statusCode = null; Integer statusCode = null;
// 正常订单可以抵扣云享金和余额、意向订单不能扣 // 正常订单可以抵扣云享金和余额、意向订单不能扣
if (param.getOrderType().equals(UavOrderType.PAY.getCode())) { if (param.getOrderType().equals(UavOrderType.PAY.getCode())){
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken()); ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken());
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) { if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null){
return payResInfo; return payResInfo;
} }
PayWalletDTO payWalletDTO = payResInfo.getResult(); PayWalletDTO payWalletDTO = payResInfo.getResult();
if (param.getDeductShareAmount().equals(1)) { if (param.getDeductShareAmount().equals(1)){
if (otherAmount.compareTo(payWalletDTO.getCashAmt()) >= 0) { if (otherAmount.compareTo(payWalletDTO.getCashAmt()) >= 0) {
// 抵扣云享金小于等于订单总额时,直接使用云享金 // 抵扣云享金小于等于订单总额时,直接使用云享金
shareAmount = payWalletDTO.getCashAmt(); shareAmount = payWalletDTO.getCashAmt();
} else { }else {
// 余额超过订单金额时,订单总额使用余额支付 // 余额超过订单金额时,订单总额使用余额支付
shareAmount = otherAmount; shareAmount = otherAmount;
} }
} }
otherAmount = otherAmount.subtract(shareAmount); otherAmount = otherAmount.subtract(shareAmount);
// 支付完成 // 支付完成
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) { if (otherAmount.compareTo(BigDecimal.ZERO) == 0 ){
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode(); statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
} else { }else {
if (param.getDeductSalaryAmount().equals(1)) { if (param.getDeductSalaryAmount().equals(1)){
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) >= 0) { if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) >= 0) {
// 抵扣余额小于等于订单总额时,直接使用余额 // 抵扣余额小于等于订单总额时,直接使用余额
salaryAmount = payWalletDTO.getSalaryAmt(); salaryAmount = payWalletDTO.getSalaryAmt();
} else { }else {
// 余额超过订单金额时,订单总额使用余额支付 // 余额超过订单金额时,订单总额使用余额支付
salaryAmount = otherAmount; salaryAmount = otherAmount;
} }
...@@ -171,9 +175,9 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -171,9 +175,9 @@ public class UavOrderServiceImpl implements UavOrderService {
uavOrderDO.setOrderNo(orderNo); uavOrderDO.setOrderNo(orderNo);
uavOrderDO.setOrderTotalAmount(orderTotalAmount); uavOrderDO.setOrderTotalAmount(orderTotalAmount);
uavOrderDO.setOrderType(param.getOrderType()); uavOrderDO.setOrderType(param.getOrderType());
if (param.getOrderType().equals(UavOrderType.PAY.getCode())) { if (param.getOrderType().equals(UavOrderType.PAY.getCode())){
uavOrderDO.setStatusCode(otherAmount.compareTo(BigDecimal.ZERO) > 0 ? UavOrderStatus.PAYING.getCode() : statusCode); uavOrderDO.setStatusCode(otherAmount.compareTo(BigDecimal.ZERO) > 0 ? UavOrderStatus.PAYING.getCode() : statusCode);
} else { }else {
uavOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode()); uavOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode());
} }
uavOrderDO.setUserAccountId(currentAccount.getUserAccountId()); uavOrderDO.setUserAccountId(currentAccount.getUserAccountId());
...@@ -224,7 +228,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -224,7 +228,7 @@ public class UavOrderServiceImpl implements UavOrderService {
List<UavOrderPayDTO> collect = payDOS.stream().map(UavOrderPayDO::buildUavOrderPayDTO).collect(Collectors.toList()); List<UavOrderPayDTO> collect = payDOS.stream().map(UavOrderPayDO::buildUavOrderPayDTO).collect(Collectors.toList());
uavOrderDTO.setPayDTOList(collect); uavOrderDTO.setPayDTOList(collect);
} }
List<UavOrderSkuDO> skuDOS = uavOrderDao.listUavOrderSkuDO(id); List<UavOrderSkuDO> skuDOS =uavOrderDao.listUavOrderSkuDO(id);
if (CollectionUtils.isNotEmpty(skuDOS)) { if (CollectionUtils.isNotEmpty(skuDOS)) {
List<UavOrderSkuDTO> uavOrderSkuDTOS = skuDOS.stream().map(UavOrderSkuDO::buildUavOrderSkuDTO).collect(Collectors.toList()); List<UavOrderSkuDTO> uavOrderSkuDTOS = skuDOS.stream().map(UavOrderSkuDO::buildUavOrderSkuDTO).collect(Collectors.toList());
uavOrderDTO.setSkuDTOList(uavOrderSkuDTOS); uavOrderDTO.setSkuDTOList(uavOrderSkuDTOS);
...@@ -282,7 +286,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -282,7 +286,7 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO.setOrderStatus(1400); payUavWalletVO.setOrderStatus(1400);
payUavWalletVO.setUserAccountId(uavOrderDO.getUserAccountId()); payUavWalletVO.setUserAccountId(uavOrderDO.getUserAccountId());
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, token); ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, token);
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) { if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())){
return resultBody; return resultBody;
} }
} }
...@@ -306,7 +310,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -306,7 +310,7 @@ public class UavOrderServiceImpl implements UavOrderService {
@Override @Override
public ResultBody list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) { public ResultBody list(UavOrderQO uavOrderQO, BaseAccountDTO currentAccount) {
if (!currentAccount.getRoleInfo().getSuperAdmin().equals(1)) { if (!currentAccount.getRoleInfo().getSuperAdmin().equals(1)){
uavOrderQO.setThirdBackUserAccountId(currentAccount.getUserAccountId()); uavOrderQO.setThirdBackUserAccountId(currentAccount.getUserAccountId());
uavOrderQO.setOrderType(UavOrderType.PAY.getCode()); uavOrderQO.setOrderType(UavOrderType.PAY.getCode());
} }
...@@ -461,7 +465,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -461,7 +465,7 @@ public class UavOrderServiceImpl implements UavOrderService {
} }
@Transactional @Transactional
public void updateUavOrderStatus(Integer id, UavOrderStatus uavOrderStatus) { public void updateUavOrderStatus(Integer id, UavOrderStatus uavOrderStatus){
uavOrderDao.updateUavOrderStatus(id, uavOrderStatus.getNextCode()); uavOrderDao.updateUavOrderStatus(id, uavOrderStatus.getNextCode());
} }
...@@ -502,7 +506,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -502,7 +506,7 @@ public class UavOrderServiceImpl implements UavOrderService {
UavOrderPayDO beforeUavOrderPayDO = uavOrderDao.getUavOrderPayById(uavOrderPayVO.getId()); UavOrderPayDO beforeUavOrderPayDO = uavOrderDao.getUavOrderPayById(uavOrderPayVO.getId());
// 一个订单可能会多次上传付款凭证,因此单独审核 // 一个订单可能会多次上传付款凭证,因此单独审核
UavOrderDO uavOrderDO = uavOrderDao.detail(beforeUavOrderPayDO.getUavOrderId()); UavOrderDO uavOrderDO = uavOrderDao.detail(beforeUavOrderPayDO.getUavOrderId());
if (uavOrderPayVO.getCheckStatus().equals(1)) { if (uavOrderPayVO.getCheckStatus().equals(1)){
// 第一次审核通过,则要把订单状态改为待发货;意向订单还要生成采购订单 // 第一次审核通过,则要把订单状态改为待发货;意向订单还要生成采购订单
if (uavOrderDO.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) { if (uavOrderDO.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) {
this.updateUavOrderStatus(beforeUavOrderPayDO.getUavOrderId(), UavOrderStatus.FINISH_PAYING); this.updateUavOrderStatus(beforeUavOrderPayDO.getUavOrderId(), UavOrderStatus.FINISH_PAYING);
...@@ -516,7 +520,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -516,7 +520,7 @@ public class UavOrderServiceImpl implements UavOrderService {
uavPurchaseOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode()); uavPurchaseOrderDO.setStatusCode(UavOrderStatus.CONFIRM.getCode());
uavPODao.addPurchaseOrder(uavPurchaseOrderDO); uavPODao.addPurchaseOrder(uavPurchaseOrderDO);
} }
} else { }else {
if (uavOrderDO.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) { if (uavOrderDO.getStatusCode().equals(UavOrderStatus.FINISH_PAYING.getCode())) {
// 第一次未通过,需要走回上一步 // 第一次未通过,需要走回上一步
this.updateUavOrderStatus(beforeUavOrderPayDO.getUavOrderId(), UavOrderStatus.SIGN); this.updateUavOrderStatus(beforeUavOrderPayDO.getUavOrderId(), UavOrderStatus.SIGN);
...@@ -530,6 +534,15 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -530,6 +534,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) {
...@@ -552,6 +565,24 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -552,6 +565,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) {
// 修改订单状态 // 修改订单状态
...@@ -569,7 +600,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -569,7 +600,7 @@ public class UavOrderServiceImpl implements UavOrderService {
if (uavOrderDO.getOrderType().equals(UavOrderType.SIGN.getCode())) { if (uavOrderDO.getOrderType().equals(UavOrderType.SIGN.getCode())) {
ResultBody<PayWalletDTO> payResInfo = userAppApi.getPayWalletInfo(uavOrderDO.getUserAccountId(), currentAccount.getToken()); ResultBody<PayWalletDTO> payResInfo = userAppApi.getPayWalletInfo(uavOrderDO.getUserAccountId(), currentAccount.getToken());
PayWalletDTO payWalletDTO = payResInfo.getResult(); PayWalletDTO payWalletDTO = payResInfo.getResult();
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payWalletDTO == null) { if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payWalletDTO == null){
return payResInfo; return payResInfo;
} }
// 要扣除的云享金 // 要扣除的云享金
...@@ -581,11 +612,11 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -581,11 +612,11 @@ public class UavOrderServiceImpl implements UavOrderService {
// 根据订单总额确认扣除多少云享金 // 根据订单总额确认扣除多少云享金
if (uavOrderVO.getOrderTotalAmount().compareTo(payWalletDTO.getCashAmt()) >= 0) { if (uavOrderVO.getOrderTotalAmount().compareTo(payWalletDTO.getCashAmt()) >= 0) {
shareAmount = payWalletDTO.getCashAmt(); shareAmount = payWalletDTO.getCashAmt();
} else { }else {
shareAmount = uavOrderVO.getOrderTotalAmount(); shareAmount = uavOrderVO.getOrderTotalAmount();
} }
// 抵扣 // 抵扣
if (shareAmount.compareTo(BigDecimal.ZERO) > 0) { if (shareAmount.compareTo(BigDecimal.ZERO) > 0 ) {
PayUavWalletVO payUavWalletVO = new PayUavWalletVO(); PayUavWalletVO payUavWalletVO = new PayUavWalletVO();
payUavWalletVO.setUserAccountId(uavOrderDO.getUserAccountId()); payUavWalletVO.setUserAccountId(uavOrderDO.getUserAccountId());
payUavWalletVO.setCashAmount(shareAmount); payUavWalletVO.setCashAmount(shareAmount);
...@@ -594,7 +625,7 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -594,7 +625,7 @@ public class UavOrderServiceImpl implements UavOrderService {
payUavWalletVO.setOrderStatus(100); payUavWalletVO.setOrderStatus(100);
payUavWalletVO.setRemark("商城确认订单抵扣"); payUavWalletVO.setRemark("商城确认订单抵扣");
ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, currentAccount.getToken()); ResultBody resultBody = userAppApi.feignPayUavWallet(payUavWalletVO, currentAccount.getToken());
if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())) { if (!resultBody.getCode().equals(ResultEnum.SUCCESS.getResultCode())){
return resultBody; return resultBody;
} }
} }
...@@ -654,25 +685,19 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -654,25 +685,19 @@ 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());
// 意向订单只能下一个商家的 // 意向订单只能下一个商家的
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("意向订单仅限下单个商家的商品");
} }
// 正常订单可以抵扣云享金和余额、意向订单不能扣
if (orderByCartQO.getOrderType().equals(UavOrderType.PAY.getCode())) {
} else {
}
// 购物车id
List<Integer> cartIds = new ArrayList<>();
// 云享金、余额扣除相关 // 云享金、余额扣除相关
ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken()); ResultBody<PayWalletDTO> payResInfo = userAppApi.getCurrentUserPayWalletInfo(currentAccount.getToken());
if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) { if (!payResInfo.getCode().equals(ResultEnum.SUCCESS.getResultCode()) || payResInfo.getResult() == null) {
return payResInfo; return payResInfo;
} }
PayWalletDTO payWalletDTO = payResInfo.getResult(); PayWalletDTO payWalletDTO = payResInfo.getResult();
// 购物车id
List<Integer> cartIds = new ArrayList<>();
// 可以多商家多商品,为每个商家生成一个订单 // 可以多商家多商品,为每个商家生成一个订单
List<UavOrderDO> orders = new ArrayList<UavOrderDO>(); List<UavOrderDO> orders = new ArrayList<UavOrderDO>();
BigDecimal allOtherAmount = BigDecimal.ZERO; BigDecimal allOtherAmount = BigDecimal.ZERO;
...@@ -698,36 +723,46 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -698,36 +723,46 @@ public class UavOrderServiceImpl implements UavOrderService {
UavOrderSkuDO uavOrderSkuDO = new UavOrderSkuDO(uavCartDTO); UavOrderSkuDO uavOrderSkuDO = new UavOrderSkuDO(uavCartDTO);
skuDOS.add(uavOrderSkuDO); skuDOS.add(uavOrderSkuDO);
orderAmount = orderAmount.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); otherAmount = otherAmount.add(orderAmount);
// 抵扣云享金 // 正常订单可以抵扣云享金和余额、意向订单不能扣
if (companyDTO.getDeductShareAmount().equals(1) && payWalletDTO.getCashAmt().compareTo(BigDecimal.ZERO) > 0) { if (orderByCartQO.getOrderType().equals(UavOrderType.PAY.getCode())){
if (payWalletDTO.getCashAmt().compareTo(otherAmount) > 0) { // 抵扣云享金
shareAmount = shareAmount.add(otherAmount); if (companyDTO.getDeductShareAmount().equals(1) && payWalletDTO.getCashAmt().compareTo(BigDecimal.ZERO) > 0) {
} else { if (payWalletDTO.getCashAmt().compareTo(otherAmount) > 0) {
shareAmount = shareAmount.add(payWalletDTO.getCashAmt()); shareAmount = shareAmount.add(otherAmount);
}else {
shareAmount = shareAmount.add(payWalletDTO.getCashAmt());
}
otherAmount = otherAmount.subtract(shareAmount);
allShareAmount = allShareAmount.add(shareAmount);
payWalletDTO.setCashAmt(payWalletDTO.getCashAmt().subtract(shareAmount));
} }
otherAmount = otherAmount.subtract(shareAmount); // 抵扣余额
allShareAmount = allShareAmount.add(shareAmount); if (companyDTO.getDeductSalaryAmount().equals(1) && payWalletDTO.getSalaryAmt().compareTo(BigDecimal.ZERO) > 0
payWalletDTO.setCashAmt(payWalletDTO.getCashAmt().subtract(shareAmount)); && otherAmount.compareTo(BigDecimal.ZERO) > 0) {
} if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) > 0) {
// 抵扣余额 salaryAmount = salaryAmount.add(payWalletDTO.getSalaryAmt());
if (companyDTO.getDeductSalaryAmount().equals(1) && payWalletDTO.getSalaryAmt().compareTo(BigDecimal.ZERO) > 0 }else {
&& otherAmount.compareTo(BigDecimal.ZERO) > 0) { salaryAmount = salaryAmount.add(otherAmount);
if (otherAmount.compareTo(payWalletDTO.getSalaryAmt()) > 0) { }
salaryAmount = salaryAmount.add(payWalletDTO.getSalaryAmt()); otherAmount = otherAmount.subtract(salaryAmount);
} else { allSalaryAmount = allSalaryAmount.add(salaryAmount);
salaryAmount = salaryAmount.add(otherAmount); payWalletDTO.setSalaryAmt(payWalletDTO.getSalaryAmt().subtract(salaryAmount));
} }
otherAmount = otherAmount.subtract(salaryAmount); if (otherAmount.compareTo(BigDecimal.ZERO) == 0) {
allSalaryAmount = allSalaryAmount.add(salaryAmount); statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode();
payWalletDTO.setSalaryAmt(payWalletDTO.getSalaryAmt().subtract(salaryAmount)); }else {
} statusCode = UavOrderStatus.PAYING.getCode();
if (otherAmount.compareTo(BigDecimal.ZERO) == 0) { }
statusCode = UavOrderStatus.WAITING_DELIVER_GOODS.getCode(); }else {
} else { statusCode = UavOrderStatus.CONFIRM.getCode();
statusCode = UavOrderStatus.PAYING.getCode();
} }
// 设置订单状态 // 设置订单状态
uavOrderDO.setStatusCode(statusCode); uavOrderDO.setStatusCode(statusCode);
...@@ -747,7 +782,9 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -747,7 +782,9 @@ public class UavOrderServiceImpl implements UavOrderService {
allOtherAmount = allOtherAmount.add(otherAmount); allOtherAmount = allOtherAmount.add(otherAmount);
} }
// 抵扣余额 // 抵扣余额
this.deductWallet(allShareAmount, allSalaryAmount, currentAccount); if (allShareAmount.compareTo(BigDecimal.ZERO) > 0 || allSalaryAmount.compareTo(BigDecimal.ZERO) > 0) {
this.deductWallet(allShareAmount, allSalaryAmount, currentAccount);
}
// 添加订单信息 // 添加订单信息
uavOrderDao.batchAddOrder(orders); uavOrderDao.batchAddOrder(orders);
// 全部规格信息 // 全部规格信息
...@@ -769,10 +806,38 @@ public class UavOrderServiceImpl implements UavOrderService { ...@@ -769,10 +806,38 @@ public class UavOrderServiceImpl implements UavOrderService {
expressDOS.add(uavOrderExpressDO); expressDOS.add(uavOrderExpressDO);
} }
// 批量添加收货地址 // 批量添加收货地址
userAddressDao.batchAddOrderExpress(expressDOS); uavOrderExpressDao.batchAddOrderExpress(expressDOS);
// 批量标识购物车 // 批量标识购物车
uavCartService.batchRemove(cartIds); uavCartService.batchRemove(cartIds);
return ResultBody.success(); 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);
} }
@Override @Override
......
...@@ -26,14 +26,6 @@ ...@@ -26,14 +26,6 @@
values (#{userAccountId}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},#{type},#{flag},#{districtCode}) values (#{userAccountId}, #{takeName}, #{takePhone}, #{takeRegion}, #{takeAddress},#{type},#{flag},#{districtCode})
</insert> </insert>
<insert id="batchAddOrderExpress">
insert into user_address(user_account_id, take_name, take_phone, take_region, take_address,`type`,flag,district_code)
values
<foreach item="item" collection="list" separator=",">
(#{item.userAccountId}, #{item.takeName}, #{item.takePhone}, #{item.takeRegion}, #{item.takeAddress},#{item.type},#{item.flag},#{item.districtCode})
</foreach>
</insert>
<!-- 通过主键修改数据 --> <!-- 通过主键修改数据 -->
<update id="update" parameterType="com.mmc.oms.entity.mall.UserAddressDO"> <update id="update" parameterType="com.mmc.oms.entity.mall.UserAddressDO">
update user_address update user_address
......
...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论