提交 208b10bb 作者: 张小凤

Merge remote-tracking branch 'origin/develop'

...@@ -109,4 +109,11 @@ public class ServiceOrderFormDetailsDTO { ...@@ -109,4 +109,11 @@ public class ServiceOrderFormDetailsDTO {
@ApiModelProperty(value = "状态", example = "100") @ApiModelProperty(value = "状态", example = "100")
private String orderStatus; private String orderStatus;
@ApiModelProperty(value = "判定内容")
private String decisionContent;
@ApiModelProperty(value = "1:双方无责 2:发布者责任 3:飞手责任")
private Integer duty;
} }
...@@ -29,5 +29,12 @@ public class LiabilityProblemVO { ...@@ -29,5 +29,12 @@ public class LiabilityProblemVO {
private Integer duty; private Integer duty;
@ApiModelProperty(value = "客服判定内容",example = "双方无责")
private String decisionContent;
@ApiModelProperty(value = "用户id",hidden = true)
private Integer userAccountId;
} }
...@@ -18,4 +18,4 @@ patches: ...@@ -18,4 +18,4 @@ patches:
images: images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG - name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims
newTag: 4c17e602fcf7dc229e48e61efbd20115d3dabc9f newTag: 83a12518b04af35aab5b359934a9e9553288ed94
...@@ -239,7 +239,7 @@ public class RequirementsController extends BaseController { ...@@ -239,7 +239,7 @@ public class RequirementsController extends BaseController {
@PostMapping("confirmSettlement") @PostMapping("confirmSettlement")
public ResultBody confirmSettlement(HttpServletRequest request, @RequestParam(value = "需求id") Integer requirementsInfoId) { public ResultBody confirmSettlement(HttpServletRequest request, @RequestParam(value = "需求id") Integer requirementsInfoId) {
Integer userAccountId = this.getUserLoginInfoFromRedis(request).getUserAccountId(); Integer userAccountId = this.getUserLoginInfoFromRedis(request).getUserAccountId();
return requirementsService.confirmSettlement(userAccountId, requirementsInfoId); return requirementsService.confirmSettlement(userAccountId, requirementsInfoId,request);
} }
@ApiOperation(value = "new——小程序-—发布者--订单结算详情") @ApiOperation(value = "new——小程序-—发布者--订单结算详情")
...@@ -313,6 +313,12 @@ public class RequirementsController extends BaseController { ...@@ -313,6 +313,12 @@ public class RequirementsController extends BaseController {
return requirementsService.updateAmountGetNumber(getNumberVO, request); return requirementsService.updateAmountGetNumber(getNumberVO, request);
} }
/**
* 客服介入
* @param request
* @param liabilityProblemVO
* @return
*/
@ApiOperation(value = "new2——后台管理取消订单(取消发布者与飞手共同建立的订单)") @ApiOperation(value = "new2——后台管理取消订单(取消发布者与飞手共同建立的订单)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)}) @ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("cancelAll") @PostMapping("cancelAll")
......
...@@ -6,6 +6,7 @@ import com.mmc.csf.common.util.web.ResultEnum; ...@@ -6,6 +6,7 @@ import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.config.IsNullConvertZeroUtil; import com.mmc.csf.config.IsNullConvertZeroUtil;
import com.mmc.csf.infomation.vo.*; import com.mmc.csf.infomation.vo.*;
import com.mmc.csf.release.dao.RequirementsDao; import com.mmc.csf.release.dao.RequirementsDao;
import com.mmc.csf.release.entity.requirements.RequirementsAmountUpdateDO;
import com.mmc.csf.release.entity.requirements.RequirementsInfoDO; import com.mmc.csf.release.entity.requirements.RequirementsInfoDO;
import com.mmc.csf.release.entity.requirements.RequirementsServiceDO; import com.mmc.csf.release.entity.requirements.RequirementsServiceDO;
import com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO; import com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO;
...@@ -54,6 +55,11 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -54,6 +55,11 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
super(listenerContainer); super(listenerContainer);
} }
/**
* 飞手未确认按照钱的计算
* @param message
* @param pattern
*/
@Override @Override
public void onMessage(Message message, byte[] pattern) { public void onMessage(Message message, byte[] pattern) {
// 获取失效的key // 获取失效的key
...@@ -75,15 +81,30 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -75,15 +81,30 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
private ResultBody getResultBody(RequirementsInfoDO infoDO) { private ResultBody getResultBody(RequirementsInfoDO infoDO) {
int count = requirementsDao.selectInfo(infoDO.getId());
if (count!=0){
return ResultBody.error("已结算");
}
ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO(); ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO();
settleAccountsVO.setRequirementsInfoId(infoDO.getId()); settleAccountsVO.setRequirementsInfoId(infoDO.getId());
// RequirementsInfoDO infoDO = requirementsDao.selectSettleAccounts(settleAccountsVO); // RequirementsInfoDO infoDO = requirementsDao.selectSettleAccounts(settleAccountsVO);
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(infoDO.getId(), infoDO.getUserAccountId());
RequirementsServiceDO requirementsServiceDO = requirementsDao.serviceSettleAccounts(settleAccountsVO); RequirementsServiceDO requirementsServiceDO = requirementsDao.serviceSettleAccounts(settleAccountsVO);
if (requirementsInfoDO.getServiceFlowId()==5 || requirementsInfoDO.getServiceFlowId()==6
|| requirementsInfoDO.getServiceFlowId()==7){
return ResultBody.error("已结算");
}
RequirementsAmountUpdateDO updateAmount = requirementsDao.findUpdateAmount(infoDO.getId());
IsNullConvertZeroUtil.checkIsNull(infoDO); IsNullConvertZeroUtil.checkIsNull(infoDO);
IsNullConvertZeroUtil.checkIsNull(requirementsServiceDO); IsNullConvertZeroUtil.checkIsNull(requirementsServiceDO);
ServiceSettleAccountsDO settleAccountsDO = new ServiceSettleAccountsDO(settleAccountsVO); ServiceSettleAccountsDO settleAccountsDO = new ServiceSettleAccountsDO(settleAccountsVO);
requirementsDao.settleAccounts(settleAccountsDO); int i = requirementsDao.selectSettleAccountEs(settleAccountsDO.getRequirementsInfoId());
if (i==0){
requirementsDao.settleAccounts(settleAccountsDO);
}
requirementsDao.updateScene(settleAccountsVO.getRequirementsInfoId(), 5); requirementsDao.updateScene(settleAccountsVO.getRequirementsInfoId(), 5);
requirementsDao.updateInfo(settleAccountsVO.getRequirementsInfoId(), 5); requirementsDao.updateInfo(settleAccountsVO.getRequirementsInfoId(), 5);
//正常结算 //正常结算
...@@ -97,11 +118,32 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -97,11 +118,32 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
BigDecimal orderAmount = infoDO.getOrderAmount(); BigDecimal orderAmount = infoDO.getOrderAmount();
BigDecimal bigDecimal = new BigDecimal(0.9); BigDecimal bigDecimal = new BigDecimal(0.9);
BigDecimal bigDecimal1 = orderAmount.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal bigDecimal1 = orderAmount.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
publisherWalletFlowVO.setModeOfPayment(700); BigDecimal bigDecimal2 = new BigDecimal(0.1);
BigDecimal orderEarnings = orderAmount.multiply(bigDecimal2).setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal orderEarnings1 = requirementsInfoDO.getOrderEarnings();
BigDecimal add = orderEarnings1.add(orderEarnings);
//平台收益
requirementsDao.updateOrderEarnings(add,requirementsInfoDO.getId());
publisherWalletFlowVO.setModeOfPayment(900);
publisherWalletFlowVO.setFlyerSalaryAmount(bigDecimal1); publisherWalletFlowVO.setFlyerSalaryAmount(bigDecimal1);
publisherWalletFlowVO.setCashAmount(infoDO.getCashAmount().negate()); publisherWalletFlowVO.setCashAmount(infoDO.getCashAmount().negate());
publisherWalletFlowVO.setSalaryAmount(infoDO.getSalaryAmount().negate()); publisherWalletFlowVO.setSalaryAmount(infoDO.getSalaryAmount().negate());
//需要退回后面支付的金额
if (updateAmount.getCashAmount().compareTo(BigDecimal.ZERO)!=0||
updateAmount.getSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
publisherWalletFlowVO.setRefundCashAmount(updateAmount.getCashAmount());
publisherWalletFlowVO.setRefundSalaryAmount(updateAmount.getSalaryAmount());
}
//推发布者微信支付的金额
if (updateAmount.getWeChat().compareTo(BigDecimal.ZERO)!=0){
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setReason("飞手未确认退款");
applyRefundVO.setRefund(updateAmount.getWeChat().multiply(new BigDecimal(100)).longValue());
applyRefundVO.setOutTradeNo(updateAmount.getWechatPayOrderNumber());
applyRefund(applyRefundVO,"");
}
publisherWalletFlowVO.setUserAccountId(infoDO.getUserAccountId()); publisherWalletFlowVO.setUserAccountId(infoDO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(0); publisherWalletFlowVO.setOperateUserAccountId(0);
...@@ -114,7 +156,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -114,7 +156,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
} }
//退飞手钱 //退飞手钱
flyerWalletFlowVO.setModeOfPayment(700); flyerWalletFlowVO.setModeOfPayment(900);
flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount()); flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount());
flyerWalletFlowVO.setSalaryAmount(requirementsServiceDO.getSalaryAmount()); flyerWalletFlowVO.setSalaryAmount(requirementsServiceDO.getSalaryAmount());
flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getPilotCertificationUserId()); flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getPilotCertificationUserId());
...@@ -131,6 +173,8 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -131,6 +173,8 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
applyRefundVO.setRefund(longValueWeChat); applyRefundVO.setRefund(longValueWeChat);
applyRefund(applyRefundVO, ""); applyRefund(applyRefundVO, "");
} }
//推发布者微信账户
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO); walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO); walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO);
flyerCancel(walletFlowVO, ""); flyerCancel(walletFlowVO, "");
...@@ -151,7 +195,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene ...@@ -151,7 +195,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(walletFlowVO), headers); HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(walletFlowVO), headers);
ResponseEntity<Object> exchange = null; ResponseEntity<Object> exchange = null;
try { try {
exchange = restTemplate.exchange(userApp + "/userapp/pay/feignWalletFlow", HttpMethod.POST, entity, Object.class); exchange = restTemplate.exchange(userApp + "/userapp/pay/feignWalletFlowNO", HttpMethod.POST, entity, Object.class);
} catch (RestClientException e) { } catch (RestClientException e) {
return ResultBody.error(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED); return ResultBody.error(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED);
} }
......
...@@ -4,6 +4,7 @@ import com.mmc.csf.infomation.dto.*; ...@@ -4,6 +4,7 @@ import com.mmc.csf.infomation.dto.*;
import com.mmc.csf.infomation.qo.IndustryCaseQO; import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.qo.MyPreemptQO; import com.mmc.csf.infomation.qo.MyPreemptQO;
import com.mmc.csf.infomation.qo.MyPublishQO; import com.mmc.csf.infomation.qo.MyPublishQO;
import com.mmc.csf.infomation.vo.LiabilityProblemVO;
import com.mmc.csf.infomation.vo.ServiceSettleAccountsVO; import com.mmc.csf.infomation.vo.ServiceSettleAccountsVO;
import com.mmc.csf.release.entity.requirements.*; import com.mmc.csf.release.entity.requirements.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -103,6 +104,8 @@ public interface RequirementsDao { ...@@ -103,6 +104,8 @@ public interface RequirementsDao {
void settleAccounts(ServiceSettleAccountsDO settleAccountsDO); void settleAccounts(ServiceSettleAccountsDO settleAccountsDO);
int selectSettleAccountEs(Integer requirementsInfoId);
ServiceSettleAccountsDO settleAccountsDetails(Integer requirementsInfoId, Integer userAccountId); ServiceSettleAccountsDO settleAccountsDetails(Integer requirementsInfoId, Integer userAccountId);
void evaluate(ServiceEvaluateDO serviceEvaluateDO); void evaluate(ServiceEvaluateDO serviceEvaluateDO);
...@@ -120,6 +123,8 @@ public interface RequirementsDao { ...@@ -120,6 +123,8 @@ public interface RequirementsDao {
RequirementsInfoDO publisherCancel(Integer requirementsInfoId, Integer userAccountId); RequirementsInfoDO publisherCancel(Integer requirementsInfoId, Integer userAccountId);
RequirementsInfoDO publisherCancelFlyers(Integer requirementsInfoId);
RequirementsInfoDO customerPublisherCancel(Integer requirementsInfoId, Integer userAccountId); RequirementsInfoDO customerPublisherCancel(Integer requirementsInfoId, Integer userAccountId);
RequirementsInfoDO publisherCancelFlyer(Integer requirementsInfoId); RequirementsInfoDO publisherCancelFlyer(Integer requirementsInfoId);
...@@ -195,4 +200,16 @@ public interface RequirementsDao { ...@@ -195,4 +200,16 @@ public interface RequirementsDao {
RequirementsServiceDO serviceReq(Integer requirementsInfoId); RequirementsServiceDO serviceReq(Integer requirementsInfoId);
void updateRepertory(Integer requirementsInfoId); void updateRepertory(Integer requirementsInfoId);
int findAmountUpdate(Integer requirementsInfoId);
void updateRequirementsAmountUpdate(RequirementsAmountUpdateDO amountUpdateDO);
RequirementsAmountUpdateDO findUpdateAmount(Integer requirementsInfoId);
int selectInfo(Integer id);
void customerServiceIntervention(LiabilityProblemVO liabilityProblemVO);
int selectCustomer(Integer requirementsInfoId);
} }
...@@ -174,6 +174,9 @@ public class RequirementsInfoDO implements Serializable { ...@@ -174,6 +174,9 @@ public class RequirementsInfoDO implements Serializable {
@ApiModelProperty(value = "抢单飞手id") @ApiModelProperty(value = "抢单飞手id")
private Integer pilotCertificationId; private Integer pilotCertificationId;
@ApiModelProperty(value = "发布者openid")
private String openid;
public RequirementsInfoVO buildRequirementsInfoVO() { public RequirementsInfoVO buildRequirementsInfoVO() {
return RequirementsInfoVO.builder().id(this.id).requirementTypeId(this.requirementTypeId).userAccountId(this.userAccountId).publishName(this.publishName) return RequirementsInfoVO.builder().id(this.id).requirementTypeId(this.requirementTypeId).userAccountId(this.userAccountId).publishName(this.publishName)
.publishPhone(this.publishPhone).requireDescription(this.requireDescription).solved(this.solved).taskStartTime(this.taskStartTime).taskEndTime(this.taskEndTime) .publishPhone(this.publishPhone).requireDescription(this.requireDescription).solved(this.solved).taskStartTime(this.taskStartTime).taskEndTime(this.taskEndTime)
......
...@@ -106,6 +106,13 @@ public class ServiceOrderFormDetailsDO { ...@@ -106,6 +106,13 @@ public class ServiceOrderFormDetailsDO {
private BigDecimal orderEarnings; private BigDecimal orderEarnings;
@ApiModelProperty(value = "判定内容")
private String decisionContent;
@ApiModelProperty(value = "1:双方无责 2:发布者责任 3:飞手责任")
private Integer duty;
public ServiceOrderFormDetailsDTO buildOrderFormDetails() { public ServiceOrderFormDetailsDTO buildOrderFormDetails() {
return ServiceOrderFormDetailsDTO.builder() return ServiceOrderFormDetailsDTO.builder()
.id(this.id) .id(this.id)
...@@ -132,6 +139,8 @@ public class ServiceOrderFormDetailsDO { ...@@ -132,6 +139,8 @@ public class ServiceOrderFormDetailsDO {
.updateTime(this.updateTime) .updateTime(this.updateTime)
.orderStatus(this.orderStatus) .orderStatus(this.orderStatus)
.orderEarnings(this.orderEarnings) .orderEarnings(this.orderEarnings)
.duty(this.duty)
.decisionContent(this.decisionContent)
.build(); .build();
} }
} }
...@@ -111,7 +111,7 @@ public interface RequirementsService { ...@@ -111,7 +111,7 @@ public interface RequirementsService {
ResultBody<FlowDictionaryDTO> flowDictionary(); ResultBody<FlowDictionaryDTO> flowDictionary();
ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId); ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId,HttpServletRequest request);
ResultBody orderRequirements(String format); ResultBody orderRequirements(String format);
......
...@@ -1249,6 +1249,14 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1249,6 +1249,14 @@ public class RequirementsServiceImpl implements RequirementsService {
public ResultBody cancelAll(LiabilityProblemVO liabilityProblemVO, Integer userAccountId,HttpServletRequest request) { public ResultBody cancelAll(LiabilityProblemVO liabilityProblemVO, Integer userAccountId,HttpServletRequest request) {
RequirementsServiceDO requirementsServiceDO = requirementsDao.customerDroneFlyerCancel(liabilityProblemVO.getRequirementsInfoId()); RequirementsServiceDO requirementsServiceDO = requirementsDao.customerDroneFlyerCancel(liabilityProblemVO.getRequirementsInfoId());
RequirementsInfoDO requirementsInfoDO = requirementsDao.customerPublisherCancel(liabilityProblemVO.getRequirementsInfoId(), userAccountId); RequirementsInfoDO requirementsInfoDO = requirementsDao.customerPublisherCancel(liabilityProblemVO.getRequirementsInfoId(), userAccountId);
liabilityProblemVO.setUserAccountId(userAccountId);
int i = requirementsDao.selectCustomer(liabilityProblemVO.getRequirementsInfoId());
if (i!=0){
return ResultBody.error("请勿重复判定");
}
requirementsDao.customerServiceIntervention(liabilityProblemVO);
//双方无责 //双方无责
if (liabilityProblemVO.getDuty().equals(1)){ if (liabilityProblemVO.getDuty().equals(1)){
requirementsDao.updateInfo(liabilityProblemVO.getRequirementsInfoId(), 7); requirementsDao.updateInfo(liabilityProblemVO.getRequirementsInfoId(), 7);
...@@ -1290,43 +1298,142 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1290,43 +1298,142 @@ public class RequirementsServiceImpl implements RequirementsService {
publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount()); publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount());
flyerWalletFlowVO.setModeOfPayment(500); flyerWalletFlowVO.setModeOfPayment(500);
flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getUserAccountId()); flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getPilotCertificationUserId());
flyerWalletFlowVO.setOperateUserAccountId(userAccountId); flyerWalletFlowVO.setOperateUserAccountId(userAccountId);
flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount()); flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount());
flyerWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount()); flyerWalletFlowVO.setSalaryAmount(requirementsServiceDO.getSalaryAmount());
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO); walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO); walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO);
flyerCancel(walletFlowVO,request.getHeader("token")); flyerCancel(walletFlowVO,request.getHeader("token"));
//给发布者或者飞手发送信息
this.publicSendMsgPublishInfoAuth(requirementsServiceDO);
this.requirementsInfoInfoAuth(requirementsInfoDO);
return ResultBody.success(); return ResultBody.success();
} }
} }
//发布者责任 //发布者责任
if (liabilityProblemVO.getDuty().equals(2)){ if (liabilityProblemVO.getDuty().equals(2)){
publisherCancel(liabilityProblemVO.getRequirementsInfoId(),requirementsInfoDO.getUserAccountId(),request); publisherCancel(liabilityProblemVO.getRequirementsInfoId(),requirementsInfoDO.getUserAccountId(),request);
requirementsDao.updateInfo(liabilityProblemVO.getRequirementsInfoId(), 7);
requirementsDao.updateScene(liabilityProblemVO.getRequirementsInfoId(), 7);
return ResultBody.success(); return ResultBody.success();
} }
//飞手责任 //飞手责任
if (liabilityProblemVO.getDuty().equals(3)){ if (liabilityProblemVO.getDuty().equals(3)){
droneFlyerCancel(liabilityProblemVO.getRequirementsInfoId(),requirementsServiceDO.getUserAccountId(),request); droneFlyerCancel(liabilityProblemVO.getRequirementsInfoId(),requirementsServiceDO.getPilotCertificationUserId(),request);
requirementsDao.updateInfo(liabilityProblemVO.getRequirementsInfoId(), 7);
requirementsDao.updateScene(liabilityProblemVO.getRequirementsInfoId(), 7);
return ResultBody.success(); return ResultBody.success();
} }
return ResultBody.success(); return ResultBody.success();
} }
/**
* 给发布者发信息
*/
private void requirementsInfoInfoAuth(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.getOrderAmount() + "元";
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.getOpenid());
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);
}
/**
* 给飞手短信
* @param requirementsServiceDO
*/
private void publicSendMsgPublishInfoAuth(RequirementsServiceDO requirementsServiceDO) {
//订单编号
JSONObject value1 = new JSONObject();
value1.put("value", requirementsServiceDO.getPublisherNumber());
//订单金额
JSONObject value2 = new JSONObject();
value2.put("value", requirementsServiceDO.getPreemptTotalAmount());
//下单时间
JSONObject value3 = new JSONObject();
value3.put("value", requirementsServiceDO.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 = "退回金额" + requirementsServiceDO.getPreemptTotalAmount() + "元";
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(requirementsServiceDO.getOpenid());
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);
}
/** /**
* 修改任务佣金 * 修改任务佣金
* *
...@@ -1343,6 +1450,8 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1343,6 +1450,8 @@ public class RequirementsServiceImpl implements RequirementsService {
if (requirementsInfoDO == null) { if (requirementsInfoDO == null) {
return ResultBody.error("只能修改自己发布的服务需求"); return ResultBody.error("只能修改自己发布的服务需求");
} }
String json = stringRedisTemplate.opsForValue().get(amountVO.getWechatPayOrderNumber() + amountVO.getUserAccountId()); String json = stringRedisTemplate.opsForValue().get(amountVO.getWechatPayOrderNumber() + amountVO.getUserAccountId());
GetOrderNumberDTO numberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class); GetOrderNumberDTO numberDTO = JSONObject.parseObject(json, GetOrderNumberDTO.class);
//用户钱包信息接口 //用户钱包信息接口
...@@ -1365,6 +1474,7 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1365,6 +1474,7 @@ public class RequirementsServiceImpl implements RequirementsService {
BigDecimal tempTotalAmount = orderAmount; BigDecimal tempTotalAmount = orderAmount;
RequirementsAmountUpdateDO amountUpdateDO = new RequirementsAmountUpdateDO(amountVO, requirementsInfoDO); RequirementsAmountUpdateDO amountUpdateDO = new RequirementsAmountUpdateDO(amountVO, requirementsInfoDO);
IsNullConvertZeroUtil.checkIsNull(amountUpdateDO); IsNullConvertZeroUtil.checkIsNull(amountUpdateDO);
//校验是退款还是需要继续支付 //校验是退款还是需要继续支付
//继续支付 需要增加冻结的任务佣金 //继续支付 需要增加冻结的任务佣金
if (amountVO.getUpdateOrderAmount().compareTo(requirementsInfoDO.getOrderAmount()) == 1) { if (amountVO.getUpdateOrderAmount().compareTo(requirementsInfoDO.getOrderAmount()) == 1) {
...@@ -1487,24 +1597,49 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1487,24 +1597,49 @@ public class RequirementsServiceImpl implements RequirementsService {
WalletFlowVO walletFlowVO = new WalletFlowVO(); WalletFlowVO walletFlowVO = new WalletFlowVO();
PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO(); PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO); IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO);
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
//RequirementsServiceDO requirementsServiceDO = new RequirementsServiceDO(); publisherWalletFlowVO.setModeOfPayment(800);
System.out.println(amountUpdateDO); publisherWalletFlowVO.setSalaryAmount(amountUpdateDO.getSalaryAmount().negate());
publisherWalletFlowVO.setCashAmount(amountUpdateDO.getCashAmount().negate());
publisherWalletFlowVO.setUserAccountId(amountUpdateDO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(amountUpdateDO.getUserAccountId());
String wechatPayOrderNumber = amountUpdateDO.getWechatPayOrderNumber();
if (wechatPayOrderNumber!=null){
UserPayInfoVO userPayInfoVO = queryUserPayInfo(amountUpdateDO.getWechatPayOrderNumber(), request);
if (!userPayInfoVO.getTradeState().equals("SUCCESS")){
return ResultBody.error("支付失败,请重新支付");
}
}
if (tempTotalAmount.compareTo(BigDecimal.ZERO) == 0) { if (tempTotalAmount.compareTo(BigDecimal.ZERO) == 0) {
//表示订单计算完成,需要支付的钱都算出来了 //表示订单计算完成,需要支付的钱都算出来了
if (numberDTO != null) { if (numberDTO != null) {
amountUpdateDO.setWechatPayOrderNumber(numberDTO.getPaymentOrderNumber()); amountUpdateDO.setWechatPayOrderNumber(numberDTO.getPaymentOrderNumber());
} }
requirementsDao.updateScene(amountVO.getRequirementsInfoId(), 8); requirementsDao.updateScene(amountVO.getRequirementsInfoId(), 8);
requirementsDao.updateInfo(amountVO.getRequirementsInfoId(), 8); requirementsDao.updateInfo(amountVO.getRequirementsInfoId(), 8);
requirementsDao.requirementsAmountUpdate(amountUpdateDO); int amountUpdate = requirementsDao.findAmountUpdate(amountUpdateDO.getRequirementsInfoId());
redisUtil.ins("order_" + requirementsInfoDO.getPublisherNumber(), String.valueOf(requirementsInfoDO), 1, TimeUnit.HOURS); if (amountUpdate!=0){
return ResultBody.error("只能修改一次不能重复修改");
}else{
requirementsDao.requirementsAmountUpdate(amountUpdateDO);
}
if (amountUpdateDO.getSalaryAmount().compareTo(BigDecimal.ZERO)!=0 ||
amountUpdateDO.getCashAmount().compareTo(BigDecimal.ZERO)!=0){
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
flyerCancelNO(walletFlowVO,request.getHeader("token"));
}
//倒计时
// redisUtil.ins("order_" + requirementsInfoDO.getPublisherNumber(), String.valueOf(requirementsInfoDO), 1, TimeUnit.HOURS);
redisUtil.ins("order_" + requirementsInfoDO.getPublisherNumber(), String.valueOf(requirementsInfoDO), 1, TimeUnit.MINUTES);
return ResultBody.success(); return ResultBody.success();
} else { } else {
//云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法 //云享金和佣金扣除完成,但是还不足支付订单金额,并且没有选择微信支付,所以支付不合法
return ResultBody.success("修改失败"); return ResultBody.error("修改失败");
} }
} }
...@@ -1517,11 +1652,90 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1517,11 +1652,90 @@ public class RequirementsServiceImpl implements RequirementsService {
} }
@Override @Override
public ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId) { public ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId,HttpServletRequest request) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(requirementsInfoId, userAccountId); RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancelFlyers(requirementsInfoId);
ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO();
settleAccountsVO.setRequirementsInfoId(requirementsInfoId);
RequirementsServiceDO serviceDO = requirementsDao.serviceSettleAccounts(settleAccountsVO);
RequirementsAmountUpdateDO updateAmount = requirementsDao.findUpdateAmount(requirementsInfoId);
WalletFlowVO walletFlowVO = new WalletFlowVO();
PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO);
FlyerWalletFlowVO flyerWalletFlowVO = new FlyerWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(flyerWalletFlowVO);
IsNullConvertZeroUtil.checkIsNull(serviceDO);
IsNullConvertZeroUtil.checkIsNull(requirementsInfoDO);
if (requirementsInfoDO == null) { if (requirementsInfoDO == null) {
return ResultBody.error("结算失败"); return ResultBody.error("结算失败");
} }
BigDecimal earnings=BigDecimal.ZERO;
//修改金额
if (updateAmount!=null){
//继续支付需要扣除金额
IsNullConvertZeroUtil.checkIsNull(updateAmount);
publisherWalletFlowVO.setCashAmount(requirementsInfoDO.getCashAmount().negate());
publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount().negate());
publisherWalletFlowVO.setUserAccountId(requirementsInfoDO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(userAccountId);
publisherWalletFlowVO.setModeOfPayment(1000);
if (updateAmount.getCashAmount().compareTo(BigDecimal.ZERO)!=0||
updateAmount.getSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
BigDecimal cash = publisherWalletFlowVO.getCashAmount().negate();
BigDecimal salary = publisherWalletFlowVO.getSalaryAmount().negate();
BigDecimal add = cash.add(updateAmount.getCashAmount());
BigDecimal addSalary = salary.add(updateAmount.getSalaryAmount());
publisherWalletFlowVO.setCashAmount(add.negate());
publisherWalletFlowVO.setSalaryAmount(addSalary.negate());
// publisherWalletFlowVO.setRefundSalaryAmount(updateAmount.getSalaryAmount().negate());
//publisherWalletFlowVO.setRefundCashAmount(updateAmount.getCashAmount().negate());
}if(updateAmount.getReturnCashAmount().compareTo(BigDecimal.ZERO)!=0 ||
updateAmount.getReturnSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
publisherWalletFlowVO.setRefundCashAmount(updateAmount.getReturnCashAmount());
publisherWalletFlowVO.setRefundSalaryAmount(updateAmount.getReturnSalaryAmount());
}
if (updateAmount.getReturnWeChat().compareTo(BigDecimal.ZERO)!=0){
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setReason("飞手确认退款");
applyRefundVO.setOutTradeNo(updateAmount.getWechatPayOrderNumber());
applyRefundVO.setRefund(updateAmount.getReturnWeChat().multiply(new BigDecimal(100)).longValue());
applyRefund(applyRefundVO, request.getHeader("token"));
}
//给飞手金额
BigDecimal updateOrderAmount = updateAmount.getUpdateOrderAmount();
BigDecimal multiply = updateOrderAmount.multiply(new BigDecimal(0.9)).setScale(2, BigDecimal.ROUND_HALF_UP);
publisherWalletFlowVO.setFlyerSalaryAmount(multiply);
//平台收益
earnings = updateOrderAmount.multiply(new BigDecimal(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
flyerWalletFlowVO.setSalaryAmount(serviceDO.getSalaryAmount());
flyerWalletFlowVO.setCashAmount(serviceDO.getCashAmount());
flyerWalletFlowVO.setUserAccountId(serviceDO.getPilotCertificationUserId());
flyerWalletFlowVO.setOperateUserAccountId(userAccountId);
flyerWalletFlowVO.setModeOfPayment(1000);
if (serviceDO.getWeChat().compareTo(BigDecimal.ZERO)!=0){
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setReason("原路退回");
applyRefundVO.setOutTradeNo(serviceDO.getWechatPayOrderNumber());
BigDecimal weChat = serviceDO.getWeChat();
long longValueWeChat = weChat.multiply(new BigDecimal(100)).longValue();
applyRefundVO.setRefund(longValueWeChat);
applyRefund(applyRefundVO, request.getHeader("token"));
}
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO);
flyerCancelNO(walletFlowVO,request.getHeader("token"));
BigDecimal orderEarnings = requirementsInfoDO.getOrderEarnings();
BigDecimal add = orderEarnings.add(earnings);
requirementsDao.updateOrderEarnings(add,requirementsInfoId);
requirementsDao.updateInfo(requirementsInfoId, 5); requirementsDao.updateInfo(requirementsInfoId, 5);
requirementsDao.updateScene(requirementsInfoId, 5); requirementsDao.updateScene(requirementsInfoId, 5);
return ResultBody.success(); return ResultBody.success();
...@@ -1774,87 +1988,141 @@ public class RequirementsServiceImpl implements RequirementsService { ...@@ -1774,87 +1988,141 @@ public class RequirementsServiceImpl implements RequirementsService {
@Override @Override
public ResultBody flyHandAgree(FlyHandAgreeVO agreeVO, HttpServletRequest request) { public ResultBody flyHandAgree(FlyHandAgreeVO agreeVO, HttpServletRequest request) {
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancelFlyers(agreeVO.getRequirementsInfoId());
ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO(); ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO();
settleAccountsVO.setRequirementsInfoId(agreeVO.getRequirementsInfoId()); settleAccountsVO.setRequirementsInfoId(agreeVO.getRequirementsInfoId());
RequirementsInfoDO infoDO = requirementsDao.flyHandAgree(agreeVO.getRequirementsInfoId()); RequirementsServiceDO serviceDO = requirementsDao.serviceSettleAccounts(settleAccountsVO);
RequirementsServiceDO requirementsServiceDO = requirementsDao.serviceSettleAccounts(settleAccountsVO); RequirementsAmountUpdateDO updateAmount = requirementsDao.findUpdateAmount(agreeVO.getRequirementsInfoId());
RequirementsAmountUpdateDO amountUpdateDO = requirementsDao.selectAmountUpdate(agreeVO.getRequirementsInfoId());
IsNullConvertZeroUtil.checkIsNull(infoDO);
IsNullConvertZeroUtil.checkIsNull(requirementsServiceDO);
IsNullConvertZeroUtil.checkIsNull(amountUpdateDO);
ServiceSettleAccountsDO settleAccountsDO = new ServiceSettleAccountsDO(settleAccountsVO);
requirementsDao.settleAccounts(settleAccountsDO);
requirementsDao.updateScene(settleAccountsVO.getRequirementsInfoId(), 5);
requirementsDao.updateInfo(settleAccountsVO.getRequirementsInfoId(), 5);
//正常结算
WalletFlowVO walletFlowVO = new WalletFlowVO(); WalletFlowVO walletFlowVO = new WalletFlowVO();
PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO(); PublisherWalletFlowVO publisherWalletFlowVO = new PublisherWalletFlowVO();
FlyerWalletFlowVO flyerWalletFlowVO = new FlyerWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO); IsNullConvertZeroUtil.checkIsNull(publisherWalletFlowVO);
FlyerWalletFlowVO flyerWalletFlowVO = new FlyerWalletFlowVO();
IsNullConvertZeroUtil.checkIsNull(flyerWalletFlowVO); IsNullConvertZeroUtil.checkIsNull(flyerWalletFlowVO);
//给发布者发送 IsNullConvertZeroUtil.checkIsNull(serviceDO);
BigDecimal orderAmount = infoDO.getUpdateOrderAmount(); IsNullConvertZeroUtil.checkIsNull(requirementsInfoDO);
BigDecimal bigDecimal = new BigDecimal(0.9);
BigDecimal bigDecimal1 = orderAmount.multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP);
publisherWalletFlowVO.setModeOfPayment(700);
publisherWalletFlowVO.setFlyerSalaryAmount(bigDecimal1);
//如果修改金额小于订单金额 if (requirementsInfoDO.getServiceFlowId()==5){
if (infoDO.getOrderAmount().compareTo(infoDO.getUpdateOrderAmount()) == 1) { return ResultBody.error("已结算");
BigDecimal cashAmount = infoDO.getCashAmount().add(amountUpdateDO.getCashAmount());
BigDecimal salaryAmount = infoDO.getSalaryAmount().add(amountUpdateDO.getSalaryAmount());
publisherWalletFlowVO.setCashAmount(cashAmount.negate());
publisherWalletFlowVO.setSalaryAmount(salaryAmount.negate());
publisherWalletFlowVO.setUserAccountId(infoDO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(agreeVO.getUserAccountId());
} else if (infoDO.getOrderAmount().compareTo(infoDO.getUpdateOrderAmount()) == -1) {
BigDecimal cashAmount = infoDO.getCashAmount().subtract(amountUpdateDO.getReturnCashAmount());
BigDecimal salaryAmount = infoDO.getSalaryAmount().subtract(amountUpdateDO.getReturnSalaryAmount());
publisherWalletFlowVO.setCashAmount(cashAmount.negate());
publisherWalletFlowVO.setSalaryAmount(salaryAmount.negate());
publisherWalletFlowVO.setUserAccountId(settleAccountsVO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(agreeVO.getUserAccountId());
} }
if ("TOP_ORDER".equals(infoDO.getOrderLevel())) { if (requirementsInfoDO == null) {
publisherWalletFlowVO.setTopYxjAmount(infoDO.getLevelCashAmount().negate()); return ResultBody.error("结算失败");
publisherWalletFlowVO.setTopSalaryAmount(infoDO.getLevelSalaryAmount().negate());
} else if ("RUSH_ORDER".equals(infoDO.getOrderLevel())) {
publisherWalletFlowVO.setUrgentYxjAmount(infoDO.getLevelCashAmount().negate());
publisherWalletFlowVO.setUrgentSalaryAmount(infoDO.getLevelSalaryAmount().negate());
}
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
//推发布者微信钱
if (amountUpdateDO.getReturnWeChat().compareTo(BigDecimal.ZERO) != 0) {
applyRefundVO.setReason("推发布者微信金额");
applyRefundVO.setOutTradeNo(infoDO.getWechatPayOrderNumber());
BigDecimal weChat = amountUpdateDO.getWeChat();
long longValueWeChat = weChat.multiply(new BigDecimal(100)).longValue();
applyRefundVO.setRefund(longValueWeChat);
applyRefund(applyRefundVO, request.getHeader("token"));
} }
BigDecimal earnings=BigDecimal.ZERO;
//修改金额
if (updateAmount!=null){
//继续支付需要扣除金额
IsNullConvertZeroUtil.checkIsNull(updateAmount);
if (updateAmount.getUpdateOrderAmount().compareTo(updateAmount.getOrderAmount())==-1){
if (updateAmount.getReturnSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
BigDecimal orderAmount = updateAmount.getOrderAmount();
BigDecimal returnSalaryAmount = updateAmount.getReturnSalaryAmount();
BigDecimal subtract = orderAmount.subtract(returnSalaryAmount);
publisherWalletFlowVO.setSalaryAmount(subtract.negate());
if (requirementsInfoDO.getSalaryAmount().compareTo(updateAmount.getReturnSalaryAmount())==0){
publisherWalletFlowVO.setSalaryAmount(BigDecimal.ZERO);
}
//退飞手钱 if (requirementsInfoDO.getSalaryAmount().compareTo(updateAmount.getReturnSalaryAmount())==1){
flyerWalletFlowVO.setModeOfPayment(700); publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount().subtract(updateAmount.getReturnSalaryAmount()).negate());
flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount()); }
flyerWalletFlowVO.setSalaryAmount(requirementsServiceDO.getSalaryAmount());
flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getPilotCertificationUserId());
flyerWalletFlowVO.setOperateUserAccountId(settleAccountsVO.getUserAccountId());
}else{
publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount().negate());
}
if (updateAmount.getReturnCashAmount().compareTo(BigDecimal.ZERO)!=0){
BigDecimal orderAmount = updateAmount.getOrderAmount();
BigDecimal returnCashAmount = updateAmount.getReturnCashAmount();
BigDecimal subtract = orderAmount.subtract(returnCashAmount);
publisherWalletFlowVO.setCashAmount(subtract.negate());
if (requirementsInfoDO.getCashAmount().compareTo(updateAmount.getReturnCashAmount())==0){
publisherWalletFlowVO.setCashAmount(BigDecimal.ZERO);
}
if (updateAmount.getReturnCashAmount().compareTo(requirementsInfoDO.getCashAmount())==-1){
BigDecimal cashAmount = requirementsInfoDO.getCashAmount();
BigDecimal returnCashAmount1 = updateAmount.getReturnCashAmount();
BigDecimal subtract1 = cashAmount.subtract(returnCashAmount1);
publisherWalletFlowVO.setCashAmount(subtract1.negate());
}
if (requirementsServiceDO.getWeChat().compareTo(BigDecimal.ZERO) != 0) { }else{
publisherWalletFlowVO.setCashAmount(requirementsInfoDO.getCashAmount().negate());
}
}
if (updateAmount.getUpdateOrderAmount().compareTo(updateAmount.getOrderAmount())==1){
publisherWalletFlowVO.setSalaryAmount(requirementsInfoDO.getSalaryAmount().negate());
publisherWalletFlowVO.setCashAmount(requirementsInfoDO.getCashAmount().negate());
}
publisherWalletFlowVO.setUserAccountId(requirementsInfoDO.getUserAccountId());
publisherWalletFlowVO.setOperateUserAccountId(agreeVO.getUserAccountId());
publisherWalletFlowVO.setModeOfPayment(1000);
if (updateAmount.getCashAmount().compareTo(BigDecimal.ZERO)!=0||
updateAmount.getSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
BigDecimal cash = publisherWalletFlowVO.getCashAmount().negate();
BigDecimal salary = publisherWalletFlowVO.getSalaryAmount().negate();
BigDecimal add = cash.add(updateAmount.getCashAmount());
BigDecimal addSalary = salary.add(updateAmount.getSalaryAmount());
publisherWalletFlowVO.setCashAmount(add.negate());
publisherWalletFlowVO.setSalaryAmount(addSalary.negate());
// publisherWalletFlowVO.setRefundSalaryAmount(updateAmount.getSalaryAmount().negate());
//publisherWalletFlowVO.setRefundCashAmount(updateAmount.getCashAmount().negate());
}if(updateAmount.getReturnCashAmount().compareTo(BigDecimal.ZERO)!=0 ||
updateAmount.getReturnSalaryAmount().compareTo(BigDecimal.ZERO)!=0){
publisherWalletFlowVO.setRefundCashAmount(updateAmount.getReturnCashAmount());
publisherWalletFlowVO.setRefundSalaryAmount(updateAmount.getReturnSalaryAmount());
}
if (updateAmount.getReturnWeChat().compareTo(BigDecimal.ZERO)!=0){
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setReason("飞手确认退款");
applyRefundVO.setOutTradeNo(requirementsInfoDO.getWechatPayOrderNumber());
applyRefundVO.setRefund(updateAmount.getReturnWeChat().multiply(new BigDecimal(100)).longValue());
applyRefund(applyRefundVO, request.getHeader("token"));
}
//给飞手金额
BigDecimal updateOrderAmount = updateAmount.getUpdateOrderAmount();
BigDecimal multiply = updateOrderAmount.multiply(new BigDecimal(0.9)).setScale(2, BigDecimal.ROUND_HALF_UP);
publisherWalletFlowVO.setFlyerSalaryAmount(multiply);
//平台收益
earnings = updateOrderAmount.multiply(new BigDecimal(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
flyerWalletFlowVO.setSalaryAmount(serviceDO.getSalaryAmount());
flyerWalletFlowVO.setCashAmount(serviceDO.getCashAmount());
flyerWalletFlowVO.setUserAccountId(serviceDO.getPilotCertificationUserId());
flyerWalletFlowVO.setOperateUserAccountId(agreeVO.getUserAccountId());
flyerWalletFlowVO.setModeOfPayment(1000);
/**
* 退飞手金额
*/
if (serviceDO.getWeChat().compareTo(BigDecimal.ZERO)!=0){
ApplyRefundVO applyRefundVO = new ApplyRefundVO();
applyRefundVO.setReason("原路退回"); applyRefundVO.setReason("原路退回");
applyRefundVO.setOutTradeNo(requirementsServiceDO.getWechatPayOrderNumber()); applyRefundVO.setOutTradeNo(serviceDO.getWechatPayOrderNumber());
BigDecimal weChat = requirementsServiceDO.getWeChat(); BigDecimal weChat = serviceDO.getWeChat();
BigDecimal decimal = new BigDecimal(100);
long longValueWeChat = weChat.multiply(new BigDecimal(100)).longValue(); long longValueWeChat = weChat.multiply(new BigDecimal(100)).longValue();
applyRefundVO.setRefund(longValueWeChat); applyRefundVO.setRefund(longValueWeChat);
applyRefund(applyRefundVO, request.getHeader("token")); applyRefund(applyRefundVO, request.getHeader("token"));
} }
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO); walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO); walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO);
flyerCancel(walletFlowVO, request.getHeader("token"));
flyerCancelNO(walletFlowVO,request.getHeader("token"));
BigDecimal orderEarnings = requirementsInfoDO.getOrderEarnings();
BigDecimal add = orderEarnings.add(earnings);
requirementsDao.updateOrderEarnings(add,agreeVO.getRequirementsInfoId());
requirementsDao.updateInfo(agreeVO.getRequirementsInfoId(), 5);
requirementsDao.updateScene(agreeVO.getRequirementsInfoId(), 5);
return ResultBody.success(); return ResultBody.success();
} }
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
<result property="orderStatus" column="order_status"/> <result property="orderStatus" column="order_status"/>
<result property="doing" column="doing"/> <result property="doing" column="doing"/>
<result property="orderEarnings" column="order_earnings"/> <result property="orderEarnings" column="order_earnings"/>
<result property="duty" column="duty"/>
<result property="decisionContent" column="decision_content"/>
<collection property="orderEarningsDTO" ofType="com.mmc.csf.infomation.dto.PlatformOrderEarningsDTO" <collection property="orderEarningsDTO" ofType="com.mmc.csf.infomation.dto.PlatformOrderEarningsDTO"
select="selectOrderEarnings" select="selectOrderEarnings"
column="{requirementsInfoId=id}"> column="{requirementsInfoId=id}">
...@@ -109,34 +111,38 @@ ...@@ -109,34 +111,38 @@
</select> </select>
<select id="serviceOrderFormDetails" resultMap="serviceDetails"> <select id="serviceOrderFormDetails" resultMap="serviceDetails">
SELECT ri.id, SELECT
ri.create_time, ri.id,
ri.update_time, ri.create_time,
ri.service_id, ri.update_time,
ri.service_name, ri.service_id,
ri.publisher_number, ri.service_name,
ra.order_amount, ri.publisher_number,
ri.task_start_time, ra.order_amount,
ri.task_end_time, ri.task_start_time,
ri.task_address, ri.task_end_time,
ri.latitude, ri.task_address,
ri.longitude, ri.latitude,
ra.cash_amount, ri.longitude,
ra.salary_amount, ra.cash_amount,
ra.we_chat, ra.salary_amount,
rs.cash_amount AS preemptCashAmount, ra.we_chat,
rs.salary_amount AS preemptSalaryAmount, rs.cash_amount AS preemptCashAmount,
rs.we_chat AS preemptWeChat, rs.salary_amount AS preemptSalaryAmount,
ra.update_order_amount, rs.we_chat AS preemptWeChat,
ri.require_description, ra.update_order_amount,
sf.order_status, ri.require_description,
sf.doing, sf.order_status,
ra.order_earnings sf.doing,
FROM requirements_info ri ra.order_earnings,
LEFT JOIN requirements_amount ra csi.decision_content,
ON ri.id = ra.requirements_info_id csi.duty
LEFT JOIN requirements_service rs ON rs.requirements_info_id = ri.id FROM
LEFT JOIN service_flow sf ON ri.service_flow_id = sf.id requirements_info ri
LEFT JOIN requirements_amount ra ON ri.id = ra.requirements_info_id
LEFT JOIN requirements_service rs ON rs.requirements_info_id = ri.id
LEFT JOIN service_flow sf ON ri.service_flow_id = sf.id
LEFT JOIN customer_service_intervention csi ON csi.requirements_info_id = ri.id
WHERE ri.id = #{requirementsInfoId} WHERE ri.id = #{requirementsInfoId}
</select> </select>
......
...@@ -57,12 +57,68 @@ ...@@ -57,12 +57,68 @@
#{returnSalaryAmount}) #{returnSalaryAmount})
</insert> </insert>
<update id="updateRequirementsAmountUpdate" parameterType="com.mmc.csf.release.entity.requirements.RequirementsAmountUpdateDO">
update requirements_amount_update
<set>
<if test=" orderAmount != null ">
order_amount = #{orderAmount},
</if>
<if test=" cashAmount != null ">
cash_amount = #{cashAmount},
</if>
<if test=" weChat != null ">
we_chat = #{weChat},
</if>
<if test=" salaryAmount != null ">
salary_amount = #{salaryAmount},
</if>
<if test="wechatPayOrderNumber!=null">
wechat_pay_order_number= #{wechatPayOrderNumber},
</if>
create_time=NOW(),
update_time=NOW(),
reason=#{reason},
url=#{url},
user_account_id=#{userAccountId},
<if test="updateOrderAmount!=null">
update_order_amount=#{updateOrderAmount},
</if>
return_cash_amount=#{returnCashAmount},
return_we_chat =#{returnWeChat},
return_salary_amount=#{returnSalaryAmount}
</set>
where requirements_info_id=#{requirementsInfoId}
</update>
<select id="findUpdateAmount" resultType="com.mmc.csf.release.entity.requirements.RequirementsAmountUpdateDO">
select requirements_info_id,order_amount,update_order_amount,return_cash_amount,return_we_chat,return_salary_amount,
cash_amount,cash_amount,we_chat,salary_amount,wechat_pay_order_number from
requirements_amount_update where requirements_info_id=#{requirementsInfoId}
</select>
<select id="selectInfo" resultType="java.lang.Integer">
select count(*) from requirements_info where service_flow_id =5 and id=#{id}
</select>
<insert id="insertPlatformOrderEarnings"> <insert id="insertPlatformOrderEarnings">
INSERT INTO platform_order_earnings(liquidated_damages, requirements_info_id, user_account_id, create_time, INSERT INTO platform_order_earnings(liquidated_damages, requirements_info_id, user_account_id, create_time,
update_time) update_time)
values (#{earnings}, #{requirementsInfoId}, #{userAccountId}, NOW(), NOW()) values (#{earnings}, #{requirementsInfoId}, #{userAccountId}, NOW(), NOW())
</insert> </insert>
<insert id="customerServiceIntervention" parameterType="com.mmc.csf.infomation.vo.LiabilityProblemVO">
INSERT INTO customer_service_intervention(requirements_info_id, create_time, update_time, user_account_id,
decision_content,duty)
values (#{requirementsInfoId}, NOW(), NOW(), #{userAccountId}, #{decisionContent},#{duty})
</insert>
<select id="selectCustomer" resultType="java.lang.Integer">
select count(*) from customer_service_intervention where requirements_info_id=#{requirementsInfoId}
</select>
<update id="updatePlatformOrderEarnings"> <update id="updatePlatformOrderEarnings">
update platform_order_earnings update platform_order_earnings
set liquidated_damages=#{earnings}, set liquidated_damages=#{earnings},
...@@ -595,6 +651,10 @@ ...@@ -595,6 +651,10 @@
VALUES (#{orderAmount}, #{requirementsInfoId}, #{remark}, NOW(), NOW()); VALUES (#{orderAmount}, #{requirementsInfoId}, #{remark}, NOW(), NOW());
</insert> </insert>
<select id="selectSettleAccountEs" resultType="java.lang.Integer" >
select count(*) from service_settle_accounts where requirements_info_id=#{requirementsInfoId}
</select>
<select id="settleAccountsDetails" resultType="com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO"> <select id="settleAccountsDetails" resultType="com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO">
select id, order_amount, requirements_info_id, remark, create_time, update_time select id, order_amount, requirements_info_id, remark, create_time, update_time
...@@ -637,7 +697,8 @@ ...@@ -637,7 +697,8 @@
<select id="myPublish" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"> <select id="myPublish" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id, SELECT
ri.id,
ri.task_title, ri.task_title,
ri.task_start_time, ri.task_start_time,
ri.task_end_time, ri.task_end_time,
...@@ -661,12 +722,14 @@ ...@@ -661,12 +722,14 @@
sf.user_port, sf.user_port,
sf.flyer_port, sf.flyer_port,
sf.order_status, sf.order_status,
ri.publish ri.publish,
FROM requirements_info ri rau.update_order_amount
LEFT JOIN requirements_type rt FROM
ON rt.id = ri.requirement_type_id 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 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_amount ra ON ra.requirements_info_id = ri.id
LEFT JOIN requirements_amount_update rau ON rau.requirements_info_id = ri.id
WHERE ri.user_account_id = #{userAccountId} and ri.is_deleted!=1 WHERE ri.user_account_id = #{userAccountId} and ri.is_deleted!=1
<if test=" requirementsInfoId != null "> <if test=" requirementsInfoId != null ">
and ri.id=#{requirementsInfoId} and ri.id=#{requirementsInfoId}
...@@ -689,7 +752,8 @@ ...@@ -689,7 +752,8 @@
</select> </select>
<select id="myPreempt" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"> <select id="myPreempt" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id, SELECT
ri.id,
ri.task_title, ri.task_title,
ri.task_start_time, ri.task_start_time,
ri.task_end_time, ri.task_end_time,
...@@ -714,11 +778,14 @@ ...@@ -714,11 +778,14 @@
ri.publish, ri.publish,
rs.preempt_total_amount, rs.preempt_total_amount,
ra.order_level, ra.order_level,
ra.order_amount ra.order_amount,
FROM requirements_info ri rau.update_order_amount
FROM
requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id 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 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_amount ra ON ra.requirements_info_id = ri.id
LEFT JOIN requirements_amount_update rau ON rau.requirements_info_id = ri.id
INNER JOIN requirements_service rs ON ri.id = rs.requirements_info_id INNER JOIN requirements_service rs ON ri.id = rs.requirements_info_id
WHERE rs.pilot_certification_user_id = #{userAccountId} AND rs.is_deleted !=1 WHERE rs.pilot_certification_user_id = #{userAccountId} AND rs.is_deleted !=1
<if test=" requirementsInfoId != null "> <if test=" requirementsInfoId != null ">
...@@ -852,8 +919,9 @@ ...@@ -852,8 +919,9 @@
rs.wechat_pay_order_number, rs.wechat_pay_order_number,
rs.preempt_total_amount, rs.preempt_total_amount,
rs.service_flow_id, rs.service_flow_id,
rs.pilot_certification_user_id,
ra.order_amount, ra.order_amount,
ri.openid, rs.openid,
ra.order_earnings ra.order_earnings
FROM requirements_info ri FROM requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id
...@@ -914,7 +982,7 @@ ...@@ -914,7 +982,7 @@
</select> </select>
<select id="customerPublisherCancel" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO"> <select id="publisherCancelFlyers" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id, SELECT ri.id,
ri.task_title, ri.task_title,
ri.task_start_time, ri.task_start_time,
...@@ -960,6 +1028,56 @@ ...@@ -960,6 +1028,56 @@
LEFT JOIN service_flow sf ON sf.id = ri.service_flow_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_amount ra ON ra.requirements_info_id = ri.id
LEFT JOIN requirements_service rs ON rs.requirements_info_id = ri.id LEFT JOIN requirements_service rs ON rs.requirements_info_id = ri.id
WHERE ri.id = #{requirementsInfoId}
</select>
<select id="customerPublisherCancel" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.longitude,
ri.latitude,
ri.require_url,
ri.require_description,
ri.requirement_type_id,
ri.user_account_id,
rt.type_name AS requirementTypeName,
ri.publish_phone,
ri.publisher_number,
ri.service_id,
ra.total_amount,
ri.insurance,
ra.order_level,
ra.order_amount,
sf.doing,
sf.waiting,
sf.user_port,
sf.flyer_port,
sf.order_status,
ri.publish,
ra.order_amount,
ra.we_chat,
ra.salary_amount,
ra.cash_amount,
ra.level_cash_amount,
ra.level_salary_amount,
ra.level_we_chat_amount,
ra.wechat_pay_order_number,
ri.service_flow_id,
rs.pilot_certification_user_id,
ri.openid,
ri.create_time,
ra.order_level_amount,
ra.order_earnings
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.id = #{requirementsInfoId} WHERE ri.id = #{requirementsInfoId}
</select> </select>
...@@ -1377,4 +1495,8 @@ ...@@ -1377,4 +1495,8 @@
set repertory=1 set repertory=1
where id = #{requirementsInfoId} where id = #{requirementsInfoId}
</update> </update>
<select id="findAmountUpdate" resultType="java.lang.Integer">
select count(*) from requirements_amount_update where requirements_info_id=#{requirementsInfoId}
</select>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论