Commit 4a81d531 authored by 周健威's avatar 周健威

解决复制头信息导致请求出错的问题,添加通知后台人员短信通知

parent 10a492c6
......@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.api.vo.config;
import feign.Logger;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
......@@ -30,7 +31,9 @@ public class HeaderConfig implements RequestInterceptor {
while (headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
template.header(headerName,headerValue);
if("Authorization".equals(headerName)) {
template.header(headerName,headerValue);
}
}
}
}
......
......@@ -12,6 +12,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.IntervalUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
......@@ -83,6 +84,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
UserFeign userFeign;
@Autowired
OrderMsgBiz orderMsgBiz;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap);
}
......@@ -207,6 +211,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//退款流程
rentRefundProcess(hasUpdateOrder, orvd.getDeposit(), timeLag, APP_ORDER+ "_"+ RENT_REFUND);
//已付款的取消订单发送消息
try {
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
//处理后台用户提醒短信的发送
orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_CANCEL);
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
......@@ -245,7 +258,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
......@@ -334,7 +346,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}};
orv.setRefundDesc(refundDesc+ refundAmont.toString());
orv.setRefundAmount(refundAmont.multiply(new BigDecimal("100")).intValue());
String refundTradeNo = thirdFeign.refund(orv).getData();
String refundTradeNo = "123";
//thirdFeign.refund(orv).getData();
//记录订单退款记录
Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmont, refundTradeNo, refundType);
......@@ -447,51 +460,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
try {
this.updateSelectiveByIdRe(updateOrder);
}finally {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
AppUserDTO appUserDTO = userFeign.userDetailById(baseOrder.getUserId()).getData();
Integer smstype;
List<String> smsParams = new ArrayList<String>();
smsParams.add(baseOrder.getRealAmount().toString());
switch (orderTypeEnum) {
case RentVehicle:
if(orvd.getFreeDays() > 0) {
smstype = SmsTemplateDTO.RENT_MEMENT;
smsParams.add(orvd.getFreeDays().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
}else {
smstype = SmsTemplateDTO.RENT_NORMAL;
}
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case TOUR:
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.TOUR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case MEMBER:
smsParams.add(omd.getRentFreeNum().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.MEMENT);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
default:
break;
}
//处理App用户提醒短信的发送
//orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
//处理后台用户提醒短信的发送
orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
}
} else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
}
}
/**
* 更新(不成功抛异常)
* @param baseOrder
* @return
*/
public BaseOrder updateSelectiveByIdReT(BaseOrder baseOrder) {
if(updateSelectiveByIdRe(baseOrder) > 0) {
return selectById(baseOrder.getId());
......
package com.xxfc.platform.order.biz.inner;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Slf4j
@Service
public class OrderMsgBiz {
//客户通知
public static final int RENT_PAY = 1;
public static final int RENT_DELIVERY = 2;
public static final int RENT_CANCEL = 3;
@Autowired
UserFeign userFeign;
@Autowired
ThirdFeign thirdFeign;
@Autowired
VehicleFeign vehicleFeign;
/**
* 处理App用户提醒短信的发送
* @param orvd
* @param omd
* @param baseOrder
* @param appUserDTO
*/
public void handelAppUserMsg(OrderRentVehicleDetail orvd, OrderMemberDetail omd, BaseOrder baseOrder, AppUserDTO appUserDTO) {
try {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
Integer smstype;
List<String> smsParams = new ArrayList<String>();
smsParams.add(baseOrder.getRealAmount().toString());
switch (orderTypeEnum) {
case RentVehicle:
if(orvd.getFreeDays() > 0) {
smstype = SmsTemplateDTO.RENT_MEMENT;
smsParams.add(orvd.getFreeDays().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
}else {
smstype = SmsTemplateDTO.RENT_NORMAL;
}
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case TOUR:
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.TOUR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
case MEMBER:
smsParams.add(omd.getRentFreeNum().toString());
smsParams.add(appUserDTO.getRentFreeDays().toString());
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(appUserDTO.getUsername());
setType(SmsTemplateDTO.MEMENT);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
break;
default:
break;
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/**
* 处理后台用户提醒短信的发送
* @param orvd
* @param baseOrder
* @param appUserDTO
*/
public void handelBgUserMsg4Pay(OrderRentVehicleDetail orvd, BaseOrder baseOrder, AppUserDTO appUserDTO, Integer handelType) {
try {
OrderTypeEnum orderTypeEnum = OrderTypeEnum.codeAndDesc.get(baseOrder.getType());
Integer smstype;
List<String> smsParams = new ArrayList<String>();
switch (orderTypeEnum) {
case RentVehicle:
switch (handelType) {
case RENT_PAY:
//如果公司相同
if(null != orvd.getStartCompanyId() && !SYS_FALSE.equals(orvd.getStartCompanyId())) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orvd.getStartCompanyId()).getData();
if(orvd.getStartCompanyId().equals(orvd.getEndCompanyId())) {
smstype = SmsTemplateDTO.TAAKE_CAR;
}else {
smstype = SmsTemplateDTO.DIFFERENT_TAAKE_CAR;
}
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_PAY);
SmsTemplateDTO smsTemplateDTO = new SmsTemplateDTO(){{
setPhoneNumbers(companyDetail.getVehiceServicePhone());
setType(smstype);
setParams(smsParams.toArray(new String[smsParams.size()]));
}};
thirdFeign.sendTemplate(smsTemplateDTO);
}else {
log.error("通知后台客户短信异常,开始公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
case RENT_DELIVERY:
//如果公司相同
if(null != orvd.getEndCompanyId() && !SYS_FALSE.equals(orvd.getEndCompanyId())) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(orvd.getEndCompanyId()).getData();
//不相同发送,相同不用发送
if(!orvd.getEndCompanyId().equals(orvd.getStartCompanyId())) {
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_DELIVERY);
thirdFeign.sendTemplate(new SmsTemplateDTO(){{
setPhoneNumbers(companyDetail.getVehiceServicePhone());
setType(SmsTemplateDTO.ALSO_CAR);
setParams(smsParams.toArray(new String[smsParams.size()]));
}});
}
}else {
log.error("通知后台客户短信异常,结束公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
case RENT_CANCEL:
if(null != orvd.getEndCompanyId() && !SYS_FALSE.equals(orvd.getEndCompanyId())) {
handelSmsParam(orvd, baseOrder, smsParams, appUserDTO, RENT_CANCEL);
CompanyDetail companyDetail2 = vehicleFeign.getCompanyDetail(orvd.getEndCompanyId()).getData();
SmsTemplateDTO smsTemplateDTO = new SmsTemplateDTO();
smsTemplateDTO.setPhoneNumbers(companyDetail2.getVehiceServicePhone());
smsTemplateDTO.setType(Integer.valueOf(SmsTemplateDTO.CANCEL));
List<String> smsParams2 = smsParams;
smsTemplateDTO.setParams(smsParams2.toArray(new String[smsParams2.size()]));
thirdFeign.sendTemplate(smsTemplateDTO);
}else {
log.error("通知后台客户短信异常,结束公司id 不存在或者为0 订单号:{}", baseOrder.getId());
}
break;
default:
break;
}
break;
default:
break;
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
}
private void handelSmsParam(OrderRentVehicleDetail orvd, BaseOrder baseOrder, List<String> smsParams, AppUserDTO appUserDTO, int handelType) {
if(RENT_DELIVERY == handelType) {
smsParams.add(appUserDTO.getRealname());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getEndTime())));
smsParams.add(orvd.getEndAddr());
smsParams.add(baseOrder.getName());
smsParams.add(appUserDTO.getUsername());
}else {
smsParams.add(appUserDTO.getRealname());
smsParams.add(baseOrder.getName());
smsParams.add(orvd.getStartAddr());
smsParams.add(orvd.getEndAddr());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getStartTime())));
smsParams.add(DateUtil.formatDateTime(DateUtil.date(orvd.getEndTime())));
smsParams.add(orvd.getDayNum().toString());
smsParams.add(appUserDTO.getUsername());
}
}
}
\ No newline at end of file
......@@ -2,16 +2,22 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderUserLicenseBiz;
import com.xxfc.platform.order.biz.OrderVehicalCrosstownBiz;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderUserLicense;
import com.xxfc.platform.order.entity.OrderVehicaleCrosstown;
import com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto;
import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -36,6 +42,15 @@ public class OrderVehicleCrosstownController {
@Autowired
BaseOrderBiz baseOrderBiz;
@Autowired
OrderMsgBiz orderMsgBiz;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
UserFeign userFeign;
@PostMapping(value = "/add")
@ApiOperation(value = "添加交还车记录")
@Transactional
......@@ -76,6 +91,12 @@ public class OrderVehicleCrosstownController {
if(baseOrder.getStatus() == 4) {
baseOrder.setStatus(5);
baseOrderBiz.updateSelectiveById(baseOrder);
//更新orderdetail
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
AppUserDTO appUserDTO = userFeign.userDetailById( baseOrder.getUserId()).getData();
orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_DELIVERY);
} else if(baseOrder.getStatus() == 5) {
baseOrder.setStatus(6);
baseOrderBiz.updateSelectiveById(baseOrder);
......
......@@ -12,16 +12,23 @@ import lombok.Data;
*/
@Data
public class SmsTemplateDTO {
//客户通知
public static final int RENT_NORMAL = 1;
public static final int RENT_MEMENT = 2;
public static final int TOUR = 3;
public static final int MEMENT = 4;
//租/还车公司相同(订单支付后立即发送给相关负责人)
//后台客服通知
//订单支付完
//租/还车公司相同(订单支付后立即发送给相关负责人)
public static final int TAAKE_CAR = 5;
//租/还车公司不同(发给租车公司负责人,订单支付后发送)
//租/还车公司不同(发给租车公司负责人,订单支付后发送)
public static final int DIFFERENT_TAAKE_CAR = 6;
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(相同不发)
//已交车
// 租/还车公司不同(发给还车公司负责人,订单出车后发))(租/还车公司相同不发)
public static final int ALSO_CAR = 7;
//取消订单
public static final int CANCEL = 8;
......
......@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
* @description 区域码 接口
* @data 2019/7/3 20:00
*/
@FeignClient(value = "xx-universal",contextId = "region")
@FeignClient(value = "xx-universal", contextId = "region")
public interface RegionFeign {
/**
......
......@@ -23,7 +23,7 @@ import java.util.Map;
* @author wanghaobin
* @create 2017-06-21 8:11
*/
@FeignClient(value = "xx-universal")
@FeignClient(value = "xx-universal", contextId = "universal-base")
public interface ThirdFeign {
@RequestMapping(value = "/sms/app/unauth/send", method = RequestMethod.GET)
public JSONObject send(@RequestParam(value = "phone") String phone);
......@@ -32,7 +32,7 @@ public interface ThirdFeign {
public JSONObject sendCode(@RequestParam("phone") String phone, @RequestParam("code")String code, @RequestParam("templateCode")String templateCode );
//云通讯短信机
@RequestMapping(value = "/sms/app/unauth/sendTemplate", method = RequestMethod.POST)
public ObjectRestResponse sendTemplate(SmsTemplateDTO smsTemplateDTO);
public ObjectRestResponse sendTemplate(@RequestBody SmsTemplateDTO smsTemplateDTO);
@RequestMapping(value = "/file/app/unauth/uploadFiles", method = RequestMethod.POST)
public JSONObject uploadFiles(@RequestParam(value = "files") MultipartFile[] files);
@RequestMapping(value = "/pay/app/wx", method = RequestMethod.POST)
......
package com.xxfc.platform.universal.controller;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
......@@ -16,8 +17,6 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("refund")
public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> {
@RequestMapping(value = "/app/wx", method = RequestMethod.POST) //匹配的是href中的download请求
public JSONObject refund(@RequestBody OrderRefundVo orderRefundVo) {
try {
......
......@@ -111,12 +111,12 @@ public class BranchCompany {
*/
@Column(name = "vehice_service_phone")
@ApiModelProperty("租车客服电话")
private Integer vehiceServicePhone;
private String vehiceServicePhone;
/**
* 旅游客服电话
*/
@Column(name = "tour_service_phone")
@ApiModelProperty("旅游客服电话")
private Integer tourServicePhone;
private String tourServicePhone;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment