提交 501d9f15 作者: 张小凤

UpdateAmountGetNumberVO(update)

上级 d3c4b053
package com.mmc.csf.infomation.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author small
* @Date 2023/8/26 13:54
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UpdateAmountGetNumberVO {
@ApiModelProperty(value = "修改订单金额", example = "100.00", required = true)
//@NotNull(message = "订单金额", groups = {Insert.class})
//@DecimalMin(value = "100.00", message = "amount格式不正确")
private BigDecimal orderAmount;
@ApiModelProperty(value = "云享金", example = "10", hidden = true)
private BigDecimal cashAmount;
@ApiModelProperty(value = "佣金", example = "10", hidden = true)
private BigDecimal salaryAmount;
@ApiModelProperty(value = "微信金额", example = "10", hidden = true)
private BigDecimal weChatPay;
@ApiModelProperty(value = "用户id", example = "10", hidden = true)
private Integer userAccountId;
@ApiModelProperty(value = "支付方式,云享金:1,佣金:2,微信支付:3", example = "1,2,3", required = true)
private String paymentType;
@ApiModelProperty(value = "抢单时需要知道抢单的那个订单", example = "1", required = true)
private Integer requirementsInfoId;
}
......@@ -264,6 +264,16 @@ public class RequirementsController extends BaseController {
return requirementsService.updatePublisherCancel(amountVO, request);
}
@ApiOperation(value = "new--小程序——结算时修改任务佣金获取订单编号")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updateAmountGetNumber")
public ResultBody<GetOrderNumberDTO> updateAmountGetNumber(@RequestBody UpdateAmountGetNumberVO getNumberVO, HttpServletRequest request) {
Integer userAccountId = this.getUserLoginInfoFromRedis(request).getUserAccountId();
getNumberVO.setUserAccountId(userAccountId);
return requirementsService.updateAmountGetNumber(getNumberVO, request);
}
@ApiOperation(value = "new——后台管理取消订单(取消发布者与飞手共同建立的订单)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("cancelAll")
......
package com.mmc.csf.release.entity.requirements;
import com.mmc.csf.config.IsNullConvertZero;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author small
* @Date 2023/8/26 14:18
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RequirementsAmountUpdateDO {
@ApiModelProperty(value = "服务需求id", example = "1")
private Integer requirementTypeId;
@ApiModelProperty(value = "发布者修改后的订单金额", example = "100")
@IsNullConvertZero
private BigDecimal orderAmount;
@ApiModelProperty(value = "需要支付的云享金", example = "100")
@IsNullConvertZero
private BigDecimal cashAmount;
@ApiModelProperty(value = "微信支付金额", example = "100")
@IsNullConvertZero
private BigDecimal weChat;
@ApiModelProperty(value = "佣金", example = "100")
@IsNullConvertZero
private BigDecimal salaryAmount;
@ApiModelProperty(value = "微信支付的订单编号", example = "100")
@IsNullConvertZero
private BigDecimal wechatPayOrderNumber;
@ApiModelProperty(value = "修改原因", example = "未按时完成任务")
private String reason;
@ApiModelProperty(value = "图片地址", example = "http://")
private String url;
@ApiModelProperty(value = "用户id", example = "1")
private Integer userAccountId;
}
......@@ -95,6 +95,8 @@ public interface RequirementsService {
ResultBody updatePublisherNumber(GetOrderNumberUpdateVO getOrderNumberUpdateVO, HttpServletRequest request);
ResultBody updateAmountGetNumber(UpdateAmountGetNumberVO getNumberVO, HttpServletRequest request);
PageResult myPreempt(Integer userAccountId, MyPreemptQO param);
ResultBody droneFlyerCancel(Integer requirementsInfoId, Integer userAccountId, HttpServletRequest request);
......
......@@ -607,6 +607,102 @@ public class RequirementsServiceImpl implements RequirementsService {
}
}
@Override
public ResultBody<GetOrderNumberDTO> updateAmountGetNumber(UpdateAmountGetNumberVO getNumberVO, HttpServletRequest request) {
RequirementsAmountUpdateDO amountUpdateDO = new RequirementsAmountUpdateDO();
IsNullConvertZeroUtil.checkIsNull(amountUpdateDO);
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(getNumberVO.getRequirementsInfoId(), getNumberVO.getUserAccountId());
if (requirementsInfoDO == null) {
return ResultBody.error("只能修改自己发布的服务需求");
}
//用户钱包信息接口
ResultBody resultBody = getCurrentUserPayWalletInfo(request);
GetOrderNumberDTO orderNumberDTO = new GetOrderNumberDTO();
IsNullConvertZeroUtil.checkIsNull(orderNumberDTO);
orderNumberDTO.setUserAccountId(getNumberVO.getUserAccountId());
PayWalletDTO payWalletDTO = (PayWalletDTO) resultBody.getResult();
//用户云享金+用户佣金>总金额
//剩余后台云享金
BigDecimal cashAmt = payWalletDTO.getCashAmt();
//剩余佣金
BigDecimal salaryAmt = payWalletDTO.getSalaryAmt();
//需要支付的总金额
BigDecimal orderAmount = getNumberVO.getOrderAmount();
String paymentType = getNumberVO.getPaymentType();
String[] split = paymentType.split(",");
Set<String> collect = Arrays.asList(split).stream().collect(Collectors.toSet());
TreeSet<String> objects = new TreeSet<>(collect);
BigDecimal tempTotalAmount = orderAmount;
//校验是退款还是需要继续支付
//继续支付
if (getNumberVO.getOrderAmount().compareTo(requirementsInfoDO.getOrderAmount()) == 1) {
//不存在加急或者置顶
for (String type : objects) {
switch (type) {
case "1":
if (!(tempTotalAmount.compareTo(BigDecimal.ZERO) == 0)) {
if (cashAmt.compareTo(tempTotalAmount) == 1 || cashAmt.compareTo(tempTotalAmount) == 0) {
amountUpdateDO.setCashAmount(tempTotalAmount);
// walletFlowVO.setCashAmount(tempTotalAmount);
tempTotalAmount = BigDecimal.ZERO;
} else {
tempTotalAmount = tempTotalAmount.subtract(cashAmt);
amountUpdateDO.setCashAmount(cashAmt);
// walletFlowVO.setCashAmount(cashAmt);
}
}
break;
case "2":
if (!(tempTotalAmount.compareTo(BigDecimal.ZERO) == 0)) {
if (salaryAmt.compareTo(tempTotalAmount) == 1 || salaryAmt.compareTo(tempTotalAmount) == 0) {
amountUpdateDO.setSalaryAmount(tempTotalAmount);
tempTotalAmount = BigDecimal.ZERO;
} else {
tempTotalAmount = tempTotalAmount.subtract(salaryAmt);
amountUpdateDO.setSalaryAmount(salaryAmt);
}
}
break;
case "3":
if (!(tempTotalAmount.compareTo(BigDecimal.ZERO) == 0)) {
amountUpdateDO.setWeChat(tempTotalAmount);
tempTotalAmount = BigDecimal.ZERO;
}
break;
default:
break;
}
}
}
WalletFlowVO walletFlowVO = new WalletFlowVO();
PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO);
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
RequirementsServiceDO requirementsServiceDO = new RequirementsServiceDO();
if (tempTotalAmount.compareTo(BigDecimal.ZERO) == 0) {
//表示订单计算完成,需要支付的钱都算出来了
System.out.println(requirementsServiceDO.getWechatPayOrderNumber());
orderNumberDTO.setWeChatPay(requirementsServiceDO.getWeChat());
if (orderNumberDTO.getWeChatPay().compareTo(BigDecimal.ZERO) != 0) {
orderNumberDTO.setWeChatPay(requirementsServiceDO.getWeChat());
orderNumberDTO.setPaymentOrderNumber(randomOrderCode());
stringRedisTemplate.opsForValue().set(orderNumberDTO.getPaymentOrderNumber(), JsonUtil.parseObjToJson(orderNumberDTO));
}
return ResultBody.success(orderNumberDTO);
} else {
//云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法
return ResultBody.success("下单失败");
}
}
@Override
public PageResult myPreempt(Integer userAccountId, MyPreemptQO param) {
Integer pageNo = param.getPageNo();
......@@ -841,6 +937,9 @@ public class RequirementsServiceImpl implements RequirementsService {
@Override
public ResultBody publisherCancel(Integer requirementsInfoId, Integer userAccountId, HttpServletRequest request) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(requirementsInfoId, userAccountId);
if (requirementsInfoDO == null) {
return ResultBody.error("当前订单不存在");
}
Integer serviceFlowId = requirementsInfoDO.getServiceFlowId();
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
WalletFlowVO walletFlowVO = new WalletFlowVO();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论