提交 13ee364d 作者: 张小凤

RequirementsController(update)

上级 3c402e0b
......@@ -175,12 +175,12 @@ public class RequirementsController extends BaseController {
}
@ApiOperation(value = "new--小程序————飞手端确认结算")
@ApiOperation(value = "new--小程序————飞手端最终确认结算")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("confirmSettlement")
public ResultBody confirmSettlement(HttpServletRequest request) {
public ResultBody confirmSettlement(HttpServletRequest request, @RequestParam(value = "需求id") Integer requirementsInfoId) {
Integer userAccountId = this.getUserLoginInfoFromRedis(request).getUserAccountId();
return requirementsService.confirmSettlement(userAccountId);
return requirementsService.confirmSettlement(userAccountId, requirementsInfoId);
}
@ApiOperation(value = "new——小程序-—发布者--订单结算详情")
......
......@@ -131,6 +131,13 @@ public class RequirementsInfoDO implements Serializable {
private BigDecimal salaryAmount;
@ApiModelProperty(value = "抢单飞手用户id ")
private Integer pilotCertificationUserId;
@ApiModelProperty(value = "抢单飞手用户openid ")
private String flyerOpenid;
@ApiModelProperty(value = "飞手获得任务佣金")
private BigDecimal receiveSalaryAmount;
public RequirementsInfoVO buildRequirementsInfoVO() {
......
......@@ -106,5 +106,5 @@ public interface RequirementsService {
ResultBody<FlowDictionaryDTO> flowDictionary();
ResultBody confirmSettlement(Integer userAccountId);
ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId);
}
......@@ -531,14 +531,61 @@ public class RequirementsServiceImpl implements RequirementsService {
flyerCancel(walletFlowVO, request.getHeader("token"));
requirementsDao.updateScene(requirementsInfoId, 7);
requirementsDao.updateInfo(requirementsInfoId, 7);
this.sendMsgFlyerInfoAuth(requirementsServiceDO);
this.sendMsgPublishInfoAuth(requirementsServiceDO);
return ResultBody.success(ResultEnum.PAYMENT_SUCCESS.getResultMsg());
}
private void sendMsgFlyerInfoAuth(RequirementsServiceDO requirementsServiceDO) {
private void sendMsgFlyerInfoAuth(RequirementsInfoDO requirementsInfoDO) {
//订单编号
JSONObject value1 = new JSONObject();
value1.put("value", requirementsInfoDO.getPublisherNumber());
//订单金额
JSONObject value2 = new JSONObject();
value2.put("value", requirementsInfoDO.getOrderAmount());
//下单时间
JSONObject value3 = new JSONObject();
value3.put("value", requirementsInfoDO.getCreateTime());
//取消时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
String date = df.format(new Date());
JSONObject value4 = new JSONObject();
value4.put("value", date);
JSONObject value5 = new JSONObject();
String remark = "飞手已取消,你获得赔偿金" + requirementsInfoDO.getReceiveSalaryAmount() + "元";
value5.put("value", remark);
JSONObject datad = new JSONObject();
//订单编号
datad.put("character_string2", value1);
//订单金额
datad.put("amount3", value2);
//下单时间
datad.put("date5", value3);
//取消时间
datad.put("time7", value4);
//备注
datad.put("thing4", value5);
AppletMsgVOS appletMsgVO = new AppletMsgVOS();
appletMsgVO.setTouser(requirementsInfoDO.getFlyerOpenid());
appletMsgVO.setTemplate_id(WxMsgTemplete.INDEMNIFY_FOR_PUBLICATION);
appletMsgVO.setPage("pages/welcome/index");
appletMsgVO.setData(datad);
appletMsgVO.setMiniprogram_state(userSystemConstant.getMiniProgramState());
appletMsgVO.setLang("zh_CN");
sendUserAppletMsg(appletMsgVO);
}
private void sendMsgPublishInfoAuth(RequirementsServiceDO requirementsServiceDO) {
//订单编号
JSONObject value1 = new JSONObject();
......@@ -572,7 +619,8 @@ public class RequirementsServiceImpl implements RequirementsService {
JSONObject value5 = new JSONObject();
value5.put("value", "");
String remark = "飞手已取消,你获得赔偿金" + requirementsServiceDO.getPercentagePenaltyOfOrder() + "元";
value5.put("value", remark);
JSONObject datad = new JSONObject();
//订单编号
......@@ -671,7 +719,9 @@ public class RequirementsServiceImpl implements RequirementsService {
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
WalletFlowVO walletFlowVO = new WalletFlowVO();
PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO();
FlyerWalletFlowVO flyerWalletFlowVO = new FlyerWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO);
IsNullConvertZeroUtil.checkIsNull(flyerWalletFlowVO);
if (serviceFlowId == 1) {
//飞手无责取消 将全部退回 不包含加急或者置顶
//支付
......@@ -700,33 +750,68 @@ public class RequirementsServiceImpl implements RequirementsService {
}
//单方面取消订单并且飞手已经抢单
if (serviceFlowId == 2) {
BigDecimal orderAmount = requirementsInfoDO.getOrderAmount();
BigDecimal bigDecimal = new BigDecimal(0.7);
//剩余金额
BigDecimal residueOrderAmount = orderAmount.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
//先退微信 再退任务佣金 最后退云享金
BigDecimal weChat = requirementsInfoDO.getWeChat();
//微信需要退款多少金额
//微信金额大于扣除之后的金额
BigDecimal refundCashAmount = new BigDecimal(0);
BigDecimal refundSalaryAmount = new BigDecimal(0);
BigDecimal refundWeChat = new BigDecimal(0);
//微信支付金额大于需要退款金额
if (weChat.compareTo(residueOrderAmount) == 1) {
refundWeChat = refundCashAmount;
BigDecimal multiply = weChat.multiply(new BigDecimal(100));
BigDecimal multiply = refundWeChat.multiply(new BigDecimal(100));
Long longWeChat = multiply.longValue();
applyRefundVO.setRefund(longWeChat);
applyRefundVO.setReason("扣除飞手百分之三十的费用");
applyRefundVO.setOutTradeNo(requirementsInfoDO.getWechatPayOrderNumber());
//退款到微信
applyRefund(applyRefundVO, request.getHeader("token"));
}
//微信支付金额小于需要退款金额
if (weChat.compareTo(residueOrderAmount) == -1 ||
weChat.compareTo(refundCashAmount) == 0) {
//优先扣除微信里面的钱
BigDecimal returnToWechat = residueOrderAmount.subtract(requirementsInfoDO.getWeChat());
//退回佣金
BigDecimal residueAmount = returnToWechat.subtract(requirementsInfoDO.getSalaryAmount());
if (residueAmount.compareTo(BigDecimal.ZERO) == 0
|| residueAmount.compareTo(BigDecimal.ZERO) == -1) {
publisherWalletFlowVO.setUserAccountId(userAccountId);
publisherWalletFlowVO.setOperateUserAccountId(userAccountId);
publisherWalletFlowVO.setModeOfPayment(300);
publisherWalletFlowVO.setSalaryAmount(residueAmount);
flyerCancel(walletFlowVO, request.getHeader("token"));
} else if (residueAmount.compareTo(BigDecimal.ZERO) == 1) {
publisherWalletFlowVO.setCashAmount(residueAmount);
publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount());
publisherWalletFlowVO.setUserAccountId(userAccountId);
publisherWalletFlowVO.setOperateUserAccountId(userAccountId);
publisherWalletFlowVO.setModeOfPayment(300);
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
//退回任务佣金
flyerCancel(walletFlowVO, request.getHeader("token"));
}
BigDecimal weChatAmount = requirementsInfoDO.getWeChat();
long longWeChat = weChatAmount.multiply(new BigDecimal(100)).longValue();
applyRefundVO.setRefund(longWeChat);
applyRefundVO.setReason("退回方式——微信佣金云享金");
applyRefundVO.setOutTradeNo(requirementsInfoDO.getWechatPayOrderNumber());
applyRefund(applyRefundVO, request.getHeader("token"));
}
BigDecimal receiveSalaryAmount = orderAmount.multiply(new BigDecimal(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP);
flyerWalletFlowVO.setSalaryAmount(receiveSalaryAmount);
flyerWalletFlowVO.setUserAccountId(requirementsInfoDO.getPilotCertificationUserId());
flyerWalletFlowVO.setOperateUserAccountId(userAccountId);
flyerWalletFlowVO.setModeOfPayment(300);
flyerCancel(walletFlowVO, request.getHeader("token"));
requirementsInfoDO.setReceiveSalaryAmount(receiveSalaryAmount);
//给飞手发送短信
this.sendMsgFlyerInfoAuth(requirementsInfoDO);
return ResultBody.success(ResultEnum.REFUND_PERCENTAGE.getResultMsg());
}
return ResultBody.success();
......@@ -770,7 +855,11 @@ public class RequirementsServiceImpl implements RequirementsService {
}
@Override
public ResultBody confirmSettlement(Integer userAccountId) {
public ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(requirementsInfoId, userAccountId);
if (requirementsInfoDO == null) {
return ResultBody.error("结算失败");
}
return ResultBody.success();
}
......
......@@ -622,11 +622,15 @@
ra.level_salary_amount,
ra.level_we_chat_amount,
ra.wechat_pay_order_number,
ri.service_flow_id
ri.service_flow_id,
rs.pilot_certification_user_id,
rs.openid as flyerOpenid,
ri.create_time
FROM requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id
LEFT JOIN service_flow sf ON sf.id = ri.service_flow_id
LEFT JOIN requirements_amount ra ON ra.requirements_info_id = ri.id
LEFT JOIN requirements_service rs ON rs.requirements_info_id = ri.id
WHERE ri.user_account_id = #{userAccountId}
AND ri.id = #{requirementsInfoId}
</select>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论