提交 208b10bb 作者: 张小凤

Merge remote-tracking branch 'origin/develop'

......@@ -109,4 +109,11 @@ public class ServiceOrderFormDetailsDTO {
@ApiModelProperty(value = "状态", example = "100")
private String orderStatus;
@ApiModelProperty(value = "判定内容")
private String decisionContent;
@ApiModelProperty(value = "1:双方无责 2:发布者责任 3:飞手责任")
private Integer duty;
}
......@@ -29,5 +29,12 @@ public class LiabilityProblemVO {
private Integer duty;
@ApiModelProperty(value = "客服判定内容",example = "双方无责")
private String decisionContent;
@ApiModelProperty(value = "用户id",hidden = true)
private Integer userAccountId;
}
......@@ -18,4 +18,4 @@ patches:
images:
- name: REGISTRY/NAMESPACE/IMAGE:TAG
newName: mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/ims
newTag: 4c17e602fcf7dc229e48e61efbd20115d3dabc9f
newTag: 83a12518b04af35aab5b359934a9e9553288ed94
......@@ -239,7 +239,7 @@ public class RequirementsController extends BaseController {
@PostMapping("confirmSettlement")
public ResultBody confirmSettlement(HttpServletRequest request, @RequestParam(value = "需求id") Integer requirementsInfoId) {
Integer userAccountId = this.getUserLoginInfoFromRedis(request).getUserAccountId();
return requirementsService.confirmSettlement(userAccountId, requirementsInfoId);
return requirementsService.confirmSettlement(userAccountId, requirementsInfoId,request);
}
@ApiOperation(value = "new——小程序-—发布者--订单结算详情")
......@@ -313,6 +313,12 @@ public class RequirementsController extends BaseController {
return requirementsService.updateAmountGetNumber(getNumberVO, request);
}
/**
* 客服介入
* @param request
* @param liabilityProblemVO
* @return
*/
@ApiOperation(value = "new2——后台管理取消订单(取消发布者与飞手共同建立的订单)")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("cancelAll")
......
......@@ -6,6 +6,7 @@ import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.config.IsNullConvertZeroUtil;
import com.mmc.csf.infomation.vo.*;
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.RequirementsServiceDO;
import com.mmc.csf.release.entity.requirements.ServiceSettleAccountsDO;
......@@ -54,6 +55,11 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
super(listenerContainer);
}
/**
* 飞手未确认按照钱的计算
* @param message
* @param pattern
*/
@Override
public void onMessage(Message message, byte[] pattern) {
// 获取失效的key
......@@ -75,15 +81,30 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
private ResultBody getResultBody(RequirementsInfoDO infoDO) {
int count = requirementsDao.selectInfo(infoDO.getId());
if (count!=0){
return ResultBody.error("已结算");
}
ServiceSettleAccountsVO settleAccountsVO = new ServiceSettleAccountsVO();
settleAccountsVO.setRequirementsInfoId(infoDO.getId());
// RequirementsInfoDO infoDO = requirementsDao.selectSettleAccounts(settleAccountsVO);
RequirementsInfoDO requirementsInfoDO = requirementsDao.publisherCancel(infoDO.getId(), infoDO.getUserAccountId());
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(requirementsServiceDO);
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.updateInfo(settleAccountsVO.getRequirementsInfoId(), 5);
//正常结算
......@@ -97,11 +118,32 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
BigDecimal orderAmount = infoDO.getOrderAmount();
BigDecimal bigDecimal = new BigDecimal(0.9);
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.setCashAmount(infoDO.getCashAmount().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.setOperateUserAccountId(0);
......@@ -114,7 +156,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
}
//退飞手钱
flyerWalletFlowVO.setModeOfPayment(700);
flyerWalletFlowVO.setModeOfPayment(900);
flyerWalletFlowVO.setCashAmount(requirementsServiceDO.getCashAmount());
flyerWalletFlowVO.setSalaryAmount(requirementsServiceDO.getSalaryAmount());
flyerWalletFlowVO.setUserAccountId(requirementsServiceDO.getPilotCertificationUserId());
......@@ -131,6 +173,8 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
applyRefundVO.setRefund(longValueWeChat);
applyRefund(applyRefundVO, "");
}
//推发布者微信账户
walletFlowVO.setPublisherWalletFlowVO(publisherWalletFlowVO);
walletFlowVO.setFlyerWalletFlowVO(flyerWalletFlowVO);
flyerCancel(walletFlowVO, "");
......@@ -151,7 +195,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
HttpEntity<String> entity = new HttpEntity<>(JSONObject.toJSONString(walletFlowVO), headers);
ResponseEntity<Object> exchange = null;
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) {
return ResultBody.error(ResultEnum.THE_THIRD_PARTY_INTERFACE_IS_BEING_UPDATED);
}
......
......@@ -4,6 +4,7 @@ import com.mmc.csf.infomation.dto.*;
import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.qo.MyPreemptQO;
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.release.entity.requirements.*;
import org.apache.ibatis.annotations.Mapper;
......@@ -103,6 +104,8 @@ public interface RequirementsDao {
void settleAccounts(ServiceSettleAccountsDO settleAccountsDO);
int selectSettleAccountEs(Integer requirementsInfoId);
ServiceSettleAccountsDO settleAccountsDetails(Integer requirementsInfoId, Integer userAccountId);
void evaluate(ServiceEvaluateDO serviceEvaluateDO);
......@@ -120,6 +123,8 @@ public interface RequirementsDao {
RequirementsInfoDO publisherCancel(Integer requirementsInfoId, Integer userAccountId);
RequirementsInfoDO publisherCancelFlyers(Integer requirementsInfoId);
RequirementsInfoDO customerPublisherCancel(Integer requirementsInfoId, Integer userAccountId);
RequirementsInfoDO publisherCancelFlyer(Integer requirementsInfoId);
......@@ -195,4 +200,16 @@ public interface RequirementsDao {
RequirementsServiceDO serviceReq(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 {
@ApiModelProperty(value = "抢单飞手id")
private Integer pilotCertificationId;
@ApiModelProperty(value = "发布者openid")
private String openid;
public RequirementsInfoVO buildRequirementsInfoVO() {
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)
......
......@@ -106,6 +106,13 @@ public class ServiceOrderFormDetailsDO {
private BigDecimal orderEarnings;
@ApiModelProperty(value = "判定内容")
private String decisionContent;
@ApiModelProperty(value = "1:双方无责 2:发布者责任 3:飞手责任")
private Integer duty;
public ServiceOrderFormDetailsDTO buildOrderFormDetails() {
return ServiceOrderFormDetailsDTO.builder()
.id(this.id)
......@@ -132,6 +139,8 @@ public class ServiceOrderFormDetailsDO {
.updateTime(this.updateTime)
.orderStatus(this.orderStatus)
.orderEarnings(this.orderEarnings)
.duty(this.duty)
.decisionContent(this.decisionContent)
.build();
}
}
......@@ -111,7 +111,7 @@ public interface RequirementsService {
ResultBody<FlowDictionaryDTO> flowDictionary();
ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId);
ResultBody confirmSettlement(Integer userAccountId, Integer requirementsInfoId,HttpServletRequest request);
ResultBody orderRequirements(String format);
......
......@@ -27,6 +27,8 @@
<result property="orderStatus" column="order_status"/>
<result property="doing" column="doing"/>
<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"
select="selectOrderEarnings"
column="{requirementsInfoId=id}">
......@@ -109,34 +111,38 @@
</select>
<select id="serviceOrderFormDetails" resultMap="serviceDetails">
SELECT ri.id,
ri.create_time,
ri.update_time,
ri.service_id,
ri.service_name,
ri.publisher_number,
ra.order_amount,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.latitude,
ri.longitude,
ra.cash_amount,
ra.salary_amount,
ra.we_chat,
rs.cash_amount AS preemptCashAmount,
rs.salary_amount AS preemptSalaryAmount,
rs.we_chat AS preemptWeChat,
ra.update_order_amount,
ri.require_description,
sf.order_status,
sf.doing,
ra.order_earnings
FROM 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
SELECT
ri.id,
ri.create_time,
ri.update_time,
ri.service_id,
ri.service_name,
ri.publisher_number,
ra.order_amount,
ri.task_start_time,
ri.task_end_time,
ri.task_address,
ri.latitude,
ri.longitude,
ra.cash_amount,
ra.salary_amount,
ra.we_chat,
rs.cash_amount AS preemptCashAmount,
rs.salary_amount AS preemptSalaryAmount,
rs.we_chat AS preemptWeChat,
ra.update_order_amount,
ri.require_description,
sf.order_status,
sf.doing,
ra.order_earnings,
csi.decision_content,
csi.duty
FROM
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}
</select>
......
......@@ -57,12 +57,68 @@
#{returnSalaryAmount})
</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 INTO platform_order_earnings(liquidated_damages, requirements_info_id, user_account_id, create_time,
update_time)
values (#{earnings}, #{requirementsInfoId}, #{userAccountId}, NOW(), NOW())
</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 platform_order_earnings
set liquidated_damages=#{earnings},
......@@ -595,6 +651,10 @@
VALUES (#{orderAmount}, #{requirementsInfoId}, #{remark}, NOW(), NOW());
</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, order_amount, requirements_info_id, remark, create_time, update_time
......@@ -637,7 +697,8 @@
<select id="myPublish" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id,
SELECT
ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
......@@ -661,12 +722,14 @@
sf.user_port,
sf.flyer_port,
sf.order_status,
ri.publish
FROM requirements_info ri
LEFT JOIN requirements_type rt
ON rt.id = ri.requirement_type_id
ri.publish,
rau.update_order_amount
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_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
<if test=" requirementsInfoId != null ">
and ri.id=#{requirementsInfoId}
......@@ -689,7 +752,8 @@
</select>
<select id="myPreempt" resultType="com.mmc.csf.release.entity.requirements.RequirementsInfoDO">
SELECT ri.id,
SELECT
ri.id,
ri.task_title,
ri.task_start_time,
ri.task_end_time,
......@@ -714,11 +778,14 @@
ri.publish,
rs.preempt_total_amount,
ra.order_level,
ra.order_amount
FROM requirements_info ri
ra.order_amount,
rau.update_order_amount
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_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
WHERE rs.pilot_certification_user_id = #{userAccountId} AND rs.is_deleted !=1
<if test=" requirementsInfoId != null ">
......@@ -852,8 +919,9 @@
rs.wechat_pay_order_number,
rs.preempt_total_amount,
rs.service_flow_id,
rs.pilot_certification_user_id,
ra.order_amount,
ri.openid,
rs.openid,
ra.order_earnings
FROM requirements_info ri
LEFT JOIN requirements_type rt ON rt.id = ri.requirement_type_id
......@@ -914,7 +982,7 @@
</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,
ri.task_title,
ri.task_start_time,
......@@ -960,6 +1028,56 @@
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}
</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}
</select>
......@@ -1377,4 +1495,8 @@
set repertory=1
where id = #{requirementsInfoId}
</update>
<select id="findAmountUpdate" resultType="java.lang.Integer">
select count(*) from requirements_amount_update where requirements_info_id=#{requirementsInfoId}
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论