Commit 72036fd3 authored by hezhen's avatar hezhen

添加接单功能

parent e530bd36
......@@ -54,6 +54,8 @@ public class RabbitConstant {
public static final String KEY_VCOMPANY_UPD="vcompany:upd";
public static final String KEY_VEHICLE_RECEIVE="vehicle:receive";
static {
exchangeTopicSet = new HashSet<String>() {{
add(ADMIN_TOPIC);
......
......@@ -8,6 +8,7 @@ public enum OrderTypeEnum {
TOUR(2, "旅游订单"),
MEMBER(3, "会员订单"),
ACTIVITY(4, "活动订单"),
PUBLISH(5, "调车需求订单"),
;
/**
* 编码
......
......@@ -2,10 +2,12 @@ package com.xxfc.platform.order.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderInvoice;
import com.xxfc.platform.order.pojo.dto.OrderDTO;
import com.xxfc.platform.order.pojo.dto.OrderDetailDTO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.PulishReceiveBO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......@@ -46,4 +48,8 @@ public interface OrderFeign {
@RequestMapping(value = "chw/orderDetail/app/unauth/getOrderDetail", method = RequestMethod.GET)
ObjectRestResponse<OrderDetailDTO> getOrderDetail(@RequestParam("orderNo")String orderNo, @RequestParam("type")Integer type);
@PostMapping(value = "chw/orderPulishReceive/add")
ObjectRestResponse<BaseOrder> add(@RequestBody PulishReceiveBO bo);
}
......@@ -20,7 +20,7 @@ public class PulishReceiveBO extends OrderPulishReceiveDetail implements OrderDe
* 促成人联系方式
*/
@ApiModelProperty(value = "促成人联系方式")
Integer facilitatePhone;
String facilitatePhone;
/**
* 下单来源,1--app;2--小程序
......
......@@ -62,6 +62,7 @@ import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import com.xxfc.platform.vehicle.util.DistanceUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
......@@ -70,6 +71,7 @@ import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -82,7 +84,6 @@ import static com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.pojo.mq.OrderMQDTO.*;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
import static com.xxfc.platform.universal.constant.DictionaryKey.ILLEGAL_TYPE;
/**
......@@ -154,6 +155,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
@Autowired
SpecialRentBiz specialRentBiz;
@Autowired
OrderPulishReceiveDetailBiz receiveDetailBiz;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
......@@ -842,8 +846,22 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
//处理App用户提醒短信的发送
// orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
orderMsgBiz.handelMsgPayNew(orvd, otd, omd, baseOrder, appUserDTO);
if (OrderTypeEnum.PUBLISH.getCode().equals(baseOrder.getType())){
OrderPulishReceiveDetail receiveDetail = new OrderPulishReceiveDetail();
receiveDetail.setOrderId(baseOrder.getId());
receiveDetail=receiveDetailBiz.selectOne(receiveDetail);
if (receiveDetail != null ){
Integer receiveType = receiveDetail.getType() == null ? 0 : receiveDetail.getType();
VehiclePublishReceiveDTO publishReceiveDTO = new VehiclePublishReceiveDTO();
BeanUtils.copyProperties(receiveDetail,publishReceiveDTO);
publishReceiveDTO.setStatus(receiveType == 2 ? VehiclePublishReceiveDTO.AGREE : VehiclePublishReceiveDTO.PAY);
publishReceiveDTO.setOrderNo(baseOrder.getNo());
vehicleFeign.updReceive(publishReceiveDTO);
}
}else {
orderMsgBiz.handelMsgPayNew(orvd, otd, omd, baseOrder, appUserDTO);
//处理后台用户提醒短信的发送
// orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
sendOrderMq(orvd, otd, omd, baseOrder, ORDER_PAY);
......@@ -854,6 +872,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
orderAccountBiz.finishFreeze2PayAmount(baseOrder);
}
}
}
} else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
}
......
......@@ -13,5 +13,5 @@ import org.springframework.stereotype.Service;
* @date 2019-06-19 17:00:35
*/
@Service
public class OrderPulishReceiveDetailDetailBiz extends BaseBiz<OrderPulishReceiveDetailMapper, OrderPulishReceiveDetail> {
public class OrderPulishReceiveDetailBiz extends BaseBiz<OrderPulishReceiveDetailMapper, OrderPulishReceiveDetail> {
}
\ No newline at end of file
......@@ -29,6 +29,7 @@ import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
......@@ -110,6 +111,10 @@ public class OrderCancelBiz {
@Autowired
ActivityFeign activityFeign;
@Autowired
OrderPulishReceiveDetailBiz receiveDetailBiz;
private static Map<Integer, List<Integer>> cancelAble;
static {
cancelAble = new HashMap<Integer, List<Integer>>();
......@@ -127,6 +132,9 @@ public class OrderCancelBiz {
cancelAble.put(OrderTypeEnum.ACTIVITY.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
cancelAble.put(OrderTypeEnum.PUBLISH.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
}
/**
......@@ -140,6 +148,7 @@ public class OrderCancelBiz {
OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail();
OrderActiveDetail orderActiveDetail = new OrderActiveDetail();
OrderPulishReceiveDetail receiveDetail = new OrderPulishReceiveDetail();
if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) {
BaseOrder updateOrder = new BaseOrder(){{
setId(baseOrder.getId());
......@@ -468,6 +477,14 @@ public class OrderCancelBiz {
}
}else if(OrderTypeEnum.PUBLISH.getCode().equals(baseOrder.getType())) {
receiveDetail = receiveDetailBiz.selectOne(new OrderPulishReceiveDetail(){{
setOrderId(baseOrder.getId());
}});
VehiclePublishReceiveDTO receiveDTO = new VehiclePublishReceiveDTO();
BeanUtils.copyProperties(receiveDetail,receiveDTO);
receiveDTO.setStatus(VehiclePublishReceiveDTO.CANCEL);
vehicleFeign.updReceive(receiveDTO);
}
//返还优惠券
......
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderPulishReceiveDetailBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderPulishReceiveDetail;
import com.xxfc.platform.order.pojo.order.PulishReceiveBO;
import com.xxfc.platform.order.service.OrderPulishReceiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("chw/orderPulishReceive")
@Api(value = "调车需求订单", tags = {"调车需求订单"})
@IgnoreClientToken
public class OrderPulishReceiveController extends BaseController<OrderPulishReceiveDetailBiz, OrderPulishReceiveDetail> {
@Autowired
OrderPulishReceiveService receiveService;
@Autowired
UserFeign userFeign;
@RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "确认订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody PulishReceiveBO bo) {
bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData());
//查询优惠券
receiveService.createOrder(bo);
return ObjectRestResponse.succ(bo.getOrder());
}
}
\ No newline at end of file
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.order.PulishReceiveBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehiclePublishReceiveVo;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -30,14 +23,11 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
@Log4j
public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishReceiveDetailDetailBiz, PulishReceiveBO> implements UserRestInterface {
public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishReceiveDetailBiz, PulishReceiveBO> implements UserRestInterface {
@Autowired
......@@ -46,12 +36,6 @@ public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishRe
@Autowired
ThirdFeign thirdFeign;
@Autowired
private BaseOrderBiz baseOrderBiz;
@Autowired
private UserFeign userFeign;
private static Integer IS_CHILD = 1;
private static Integer LEVEL_DEFAULT = 0;
......@@ -80,7 +64,7 @@ public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishRe
@PostConstruct
public void init() {
this.channel = null;
this.orderTypeEnum = OrderTypeEnum.MEMBER;
this.orderTypeEnum = OrderTypeEnum.PUBLISH;
}
public void initDictionary() {
......@@ -99,7 +83,6 @@ public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishRe
VehiclePublishReceiveVo receiveVo = receiveVos.get(0);
//设置订单图片
bo.getOrder().setPicture(receiveVo.getCover());
//设置订单名称
bo.getOrder().setName(receiveVo.getName());
}
......@@ -130,9 +113,16 @@ public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishRe
detail.setItems(new ArrayList<OrderItem>());
detail.getItems().add(memberOrderItem);*/
List<VehiclePublishReceiveVo> receiveVos = detail.getReceiveVos();
BigDecimal receiveAmount = BigDecimal.ZERO;
if (receiveVos.size() > 0 ) {
receiveAmount = receiveVos.parallelStream().filter(oadTemp ->
(Integer.valueOf(VehiclePublishReceiveDTO.ADD).equals(oadTemp.getStatus()))
).map(VehiclePublishReceiveVo::getReceiveAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
}
//商品价格
//goodsAmount = goodsAmount.add(memberOrderItem.getCalculateAmount(Boolean.TRUE));
goodsAmount = goodsAmount.add(receiveAmount);
/* //vehicleAmount 优惠券处理
if (null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
......
......@@ -6,10 +6,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.CompanyInfoFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.dto.*;
import com.xxfc.platform.vehicle.pojo.vo.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
......@@ -264,4 +261,7 @@ public interface VehicleFeign {
@RequestMapping(value = "/vehicleInfo/rent/apply/usable-vehicle", method = RequestMethod.POST)
public ObjectRestResponse<PageDataVO<UsableVeicleVO>> applyUsableVehicle(@RequestBody RentVehicleBookDTO rbd);
@PostMapping("app/publishAeceive/app/unauth/updReceive")
ObjectRestResponse updReceive(@RequestBody VehiclePublishReceiveDTO publishReceiveDTO);
}
......@@ -43,6 +43,8 @@ public class VehiclePublishFindDTO extends PageParam implements DataInter {
@ApiModelProperty("当前时间")
private Long nowTime;
private String orderNo;
List<Integer> dataCorporationIds;
......
......@@ -16,6 +16,11 @@ import java.util.List;
@Data
public class VehiclePublishReceiveDTO{
public static final int ADD=0;
public static final int PAY=1;
public static final int REFUSE=2;
public static final int AGREE=3;
public static final int CANCEL=4;
@ApiModelProperty("需求Id")
private Integer publishId;
......@@ -37,8 +42,29 @@ public class VehiclePublishReceiveDTO{
List<Integer> ids;
@ApiModelProperty(value = "接单ids(逗号隔开)")
private String receiveIds;
@ApiModelProperty(value = "拒绝的接单ids")
private String refuseReceiveIds;
private Integer status;
@ApiModelProperty("接单详情")
List<VehiclePublishReceive> receives;
private String orderNo;
private Long nowTime;
public Long getNowTime(){
return System.currentTimeMillis();
}
}
package com.xxfc.platform.vehicle.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@Data
public class VehicleReceiveRefundDTO {
@ApiModelProperty("需求id")
private Integer publishId;
private String orderNoStr;
}
......@@ -18,5 +18,8 @@ public class VehiclePublishGoodsVo extends VehiclePublishGoods {
@ApiModelProperty("型号名称")
String categoryName;
@ApiModelProperty("商品数量")
Integer goodsNumber;
private List<VehicleExtensionVO> extensionVOS;
}
......@@ -5,6 +5,7 @@ import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
......@@ -34,4 +35,11 @@ public class VehiclePublishReceiveVo extends VehiclePublishReceive {
private Integer publishId;
@ApiModelProperty("接单者服务费(单个商品)")
private BigDecimal receiveAmount;
@ApiModelProperty("发布服务费(单个商品)")
private BigDecimal publishAmount;
}
......@@ -101,6 +101,16 @@ public class VehiclePublishBiz extends BaseBiz<VehiclePublishMapper, VehiclePubl
}
public void updWaitConfirmNumber(Integer number,Integer id){
mapper.updWaitConfirmNumber(number,id);
}
public void updConfirmNumber(Integer number,Integer id){
mapper.updConfirmNumber(number,id);
}
......
......@@ -33,6 +33,19 @@ public class VehiclePublishGoodsBiz extends BaseBiz<VehiclePublishGoodsMapper, V
public List<VehiclePublishGoodsVo> getList(VehiclePublishFindDTO publishFindDTO){
List<VehiclePublishGoodsVo> list = mapper.selectList(publishFindDTO);
setGoodsList(list);
return list;
}
public List<VehiclePublishGoodsVo> getListByOrderNo(VehiclePublishFindDTO publishFindDTO){
List<VehiclePublishGoodsVo> list = mapper.selectListByOrderNo(publishFindDTO);
setGoodsList(list);
return list;
}
public void setGoodsList(List<VehiclePublishGoodsVo> list){
if (CollectionUtils.isNotEmpty(list)){
for (VehiclePublishGoodsVo publishGoodsVo : list){
String vehicleId = publishGoodsVo.getVehicleId();
......@@ -48,7 +61,6 @@ public class VehiclePublishGoodsBiz extends BaseBiz<VehiclePublishGoodsMapper, V
publishGoodsVo.setExtensionVOS(extensionVOS);
}
}
return list;
}
......
......@@ -2,23 +2,38 @@ package com.xxfc.platform.vehicle.biz;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.feign.OrderFeign;
import com.xxfc.platform.order.pojo.order.PulishReceiveBO;
import com.xxfc.platform.universal.dto.SendMsgDTO;
import com.xxfc.platform.universal.feign.MQSenderFeign;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehiclePublish;
import com.xxfc.platform.vehicle.entity.VehiclePublishGoods;
import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import com.xxfc.platform.vehicle.mapper.VehiclePublishReceiveMapper;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleReceiveRefundDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehiclePublishReceiveVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant.*;
@Service
......@@ -38,12 +53,19 @@ public class VehiclePublishReceiveBiz extends BaseBiz<VehiclePublishReceiveMappe
@Autowired
VehicleExtensionBiz vehicleExtensionBiz;
@Autowired
OrderFeign orderFeign;
@Autowired
MQSenderFeign mqSenderFeign;
@Transactional(rollbackFor = Exception.class)
public void receive(VehiclePublishReceiveDTO publishReceiveDTO){
public BaseOrder receive(VehiclePublishReceiveDTO publishReceiveDTO){
Integer publishId = publishReceiveDTO.getPublishId() == null ? 0 : publishReceiveDTO.getPublishId();
if (publishId == 0 || CollectionUtils.isEmpty(publishReceiveDTO.getReceives())){
Integer receiveType = publishReceiveDTO.getType() == null ? 0 : publishReceiveDTO.getType();
if (publishId == 0 || receiveType == 0 || ( receiveType == 1 && CollectionUtils.isEmpty(publishReceiveDTO.getReceives()))){
throw new BaseException("参数不能为空", ResultCode.FAILED_CODE);
}
VehiclePublish vehiclePublish = vehiclePublishBiz.selectById(publishId);
......@@ -52,6 +74,8 @@ public class VehiclePublishReceiveBiz extends BaseBiz<VehiclePublishReceiveMappe
}
Integer type = vehiclePublish.getType() == null ? 0 : vehiclePublish.getType();
List<VehiclePublishReceive> receives = publishReceiveDTO.getReceives();
List<Integer> receiveIds = new ArrayList<>();
if (CollectionUtils.isNotEmpty(publishReceiveDTO.getReceives())){
for (VehiclePublishReceive vehiclePublishReceive : receives){
Integer id = vehiclePublishReceive.getId() == null ? 0 : vehiclePublishReceive.getId();
if (id == 0){
......@@ -75,6 +99,7 @@ public class VehiclePublishReceiveBiz extends BaseBiz<VehiclePublishReceiveMappe
categoryId = vehicle.getCategoryId();
extensionList = vehicleExtensionBiz.getExtensionIds(vehicleId);
}
vehiclePublishReceive.setReceiveCompanyId(publishReceiveDTO.getCompanyId());
vehiclePublishReceive.setName(vehicle.getName());
vehiclePublishReceive.setGoodsType(vehiclePublish.getGoodsType());
vehiclePublishReceive.setCover(cover);
......@@ -82,17 +107,161 @@ public class VehiclePublishReceiveBiz extends BaseBiz<VehiclePublishReceiveMappe
vehiclePublishReceive.setCategoryId(categoryId);
vehiclePublishReceive.setExtensionList(extensionList);
insertSelective(vehiclePublishReceive);
id = vehiclePublishReceive.getId();
}else {
VehiclePublishReceive receive = selectById(id);
if (receive == null || !receive.getStatus().equals(VehiclePublishReceiveDTO.PAY)){
throw new BaseException("接单无法确认--id==="+id, ResultCode.FAILED_CODE);
}
}
receiveIds.add(id);
}
publishReceiveDTO.setIds(receiveIds);
BaseOrder baseOrder = addOrder(publishReceiveDTO);
if (baseOrder == null)
throw new BaseException("下单失败",ResultCode.FAILED_CODE);
publishReceiveDTO.setOrderNo(baseOrder.getNo());
mapper.updReceiveById(publishReceiveDTO);
return baseOrder;
}else {
if (receiveType == 2){
publishReceiveDTO.setStatus(VehiclePublishReceiveDTO.REFUSE);
updOrderReceive(publishReceiveDTO);
}
return null;
}
}
public List<VehiclePublishReceiveVo> getList(VehiclePublishReceiveDTO publishReceiveDTO){
return mapper.selectList(publishReceiveDTO);
}
public BaseOrder addOrder(VehiclePublishReceiveDTO publishReceiveDTO){
List<VehiclePublishReceiveVo> list = getList(publishReceiveDTO);
if (list.size() == 0){
throw new BaseException("无处理的单", ResultCode.FAILED_CODE);
}
PulishReceiveBO pulishReceiveBO = new PulishReceiveBO();
String receiveIds = publishReceiveDTO.getIds().stream().map(String::valueOf).collect(Collectors.joining(","));
pulishReceiveBO.setReceiveIds(receiveIds);
pulishReceiveBO.setRefuseReceiveIds(publishReceiveDTO.getRefuseReceiveIds());
pulishReceiveBO.setReceiveVos(list);
pulishReceiveBO.setType(publishReceiveDTO.getType());
pulishReceiveBO.setCompanyId(publishReceiveDTO.getCompanyId());
pulishReceiveBO.setPublishId(publishReceiveDTO.getPublishId());
ObjectRestResponse<BaseOrder> restResponse = orderFeign.add(pulishReceiveBO);
if (restResponse.getData() == null ){
throw new BaseException(restResponse.getMessage(),restResponse.getStatus());
}
return restResponse.getData();
}
public void updOrderReceive(VehiclePublishReceiveDTO publishReceiveDTO){
String receiveIds = publishReceiveDTO.getReceiveIds();
Integer status = publishReceiveDTO.getStatus() == null ? 0 : publishReceiveDTO.getStatus();
Integer type = publishReceiveDTO.getType() == null ? 0 : publishReceiveDTO.getType();
String publishOrderNo = publishReceiveDTO.getOrderNo();
Integer number = 0;
VehiclePublishReceive receive = new VehiclePublishReceive();
if (type == 2){
receive.setPublishOrderNo(publishOrderNo);
receive.setAckTime(publishReceiveDTO.getNowTime());
}
if (StringUtils.isNotBlank(receiveIds)){
List<Integer> receiveIdList =Arrays.asList(receiveIds.split(",")).parallelStream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
receive.setStatus(status);
number+=updReceive(receiveIdList,receive);
}
String refuseReceiveIds = publishReceiveDTO.getRefuseReceiveIds();
Integer refuseNumber = 0;
String orderNoStr = null;
if (StringUtils.isNotBlank(refuseReceiveIds)){
List<Integer> refuseReceiveIdList =Arrays.asList(refuseReceiveIds.split(",")).parallelStream().map(s -> Integer.valueOf(s)).collect(Collectors.toList());
receive.setStatus(2);
refuseNumber+=updReceive(refuseReceiveIdList,receive);
if (status.equals( VehiclePublishReceiveDTO.REFUSE)){
orderNoStr=mapper.getOrderNoStr(null,refuseReceiveIdList);
}
}
if (type == 2){
number+=refuseNumber;
vehiclePublishBiz.updConfirmNumber(number,publishReceiveDTO.getPublishId());
if (StringUtils.isBlank(orderNoStr)){
orderNoStr=mapper.getOrderNoStr(publishOrderNo,null);
VehicleReceiveRefundDTO receiveRefundDTO = new VehicleReceiveRefundDTO();
receiveRefundDTO.setOrderNoStr(orderNoStr);
sendQueue(receiveRefundDTO);
}
}else {
if (type == 1 && status.equals( VehiclePublishReceiveDTO.PAY)){
vehiclePublishBiz.updWaitConfirmNumber(number,publishReceiveDTO.getPublishId());
}
}
}
public Integer updReceive(List<Integer> ids,VehiclePublishReceive receive){
Integer num = 0;
for (Integer id : ids){
receive.setId(id);
num+=updateSelectiveByIdRe(receive);
}
return num;
}
public void refundReceive(String orderNoStrList){
if (StringUtils.isBlank(orderNoStrList))
return;
List<String> orderNoList =Arrays.asList(orderNoStrList.split(",")).parallelStream().map(s -> String.valueOf(s)).collect(Collectors.toList());
for (String orderNo : orderNoList){
VehiclePublishReceiveDTO publishReceiveDTO = new VehiclePublishReceiveDTO();
publishReceiveDTO.setOrderNo(orderNo);
List<VehiclePublishReceiveVo> listByOrderNo = getList(publishReceiveDTO);
Long count = listByOrderNo.stream().filter(x -> x.getStatus().equals(VehiclePublishReceiveDTO.PAY)).count();
if (count == null || count == 0){
BigDecimal refundAmount = listByOrderNo.parallelStream().filter(oadTemp ->
(Integer.valueOf(VehiclePublishReceiveDTO.REFUSE).equals(oadTemp.getStatus()))
).map(VehiclePublishReceiveVo::getReceiveAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
if (refundAmount.compareTo(BigDecimal.ZERO) > 0){
log.info("-----操作接单退款-----orderNo==="+orderNo+"----refundAmount==="+refundAmount);
}
}
}
}
@Transactional(rollbackFor = Exception.class)
public void refundReceiveQueue(VehicleReceiveRefundDTO receiveRefundDTO){
String orderNoStr = receiveRefundDTO.getOrderNoStr();
if (StringUtils.isNotBlank(orderNoStr)){
refundReceive(orderNoStr);
}
}
public BaseOrder addOrder()
public void sendQueue(VehicleReceiveRefundDTO receiveRefundDTO) {
try {
SendMsgDTO sendMsgDTO = new SendMsgDTO() {{
setExchange(VEHICLE_TOPIC);
}};
sendMsgDTO.setJson(JSONUtil.toJsonStr(receiveRefundDTO));
sendMsgDTO.setRoutKey(KEY_VEHICLE_RECEIVE);
mqSenderFeign.postSendMessage(sendMsgDTO);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
......
......@@ -26,6 +26,9 @@ public class RabbitVehicleConfig extends RabbitCommonConfig {
//同步门店信息
public static final String VEHICLE_COMPANY_UPD_QUEUE = "vehicle.company:upd.queue";
//接单退款消息
public static final String VEHICLE_RECEVIE_REFUND_QUEUE = "vehicle.recevie:refund.queue";
static {
myQueue = new ArrayList<BindDTO>() {{
......@@ -33,6 +36,8 @@ public class RabbitVehicleConfig extends RabbitCommonConfig {
add(new BindDTO(VEHICLE_CORPORATION_UPD_QUEUE, ADMIN_TOPIC, KEY_CORPORATION_UPD));
//门店
add(new BindDTO(VEHICLE_COMPANY_UPD_QUEUE, ADMIN_TOPIC, KEY_COMPANY_UPD));
//接单退款消息
add(new BindDTO(VEHICLE_RECEVIE_REFUND_QUEUE, VEHICLE_TOPIC, KEY_VEHICLE_RECEIVE));
}};
}
}
......
......@@ -14,4 +14,7 @@ public interface VehiclePublishGoodsMapper extends Mapper<VehiclePublishGoods>,
List<VehiclePublishGoodsVo> selectList(VehiclePublishFindDTO publishFindDTO);
List<VehiclePublishGoodsVo> selectListByOrderNo(VehiclePublishFindDTO publishFindDTO);
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehiclePublish;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishFindDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehiclePublishVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.additional.idlist.SelectByIdListMapper;
import tk.mybatis.mapper.common.Mapper;
......@@ -14,4 +16,11 @@ public interface VehiclePublishMapper extends Mapper<VehiclePublish>, SelectById
List<VehiclePublishVo> selectList(VehiclePublishFindDTO publishFindDTO);
@Update("update vehicle_publish set wait_confirm_number=wait_confirm_number+#{number} where id=#{id}")
void updWaitConfirmNumber(@Param("number") Integer number,@Param("id")Integer id);
@Update("update vehicle_publish set confirm_number=confirm_number+#{number},wait_confirm_number=wait_confirm_number-#{number} where id=#{id} and confirm_number >= (confirm_number+#{number}) and (wait_confirm_number-#{number}) >= 0 ")
void updConfirmNumber(@Param("number") Integer number,@Param("id")Integer id);
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehiclePublishReceiveVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.idlist.SelectByIdListMapper;
import tk.mybatis.mapper.common.Mapper;
......@@ -14,4 +15,8 @@ public interface VehiclePublishReceiveMapper extends Mapper<VehiclePublishReceiv
List<VehiclePublishReceiveVo> selectList(VehiclePublishReceiveDTO receiveDTO);
void updReceiveById(VehiclePublishReceiveDTO receiveDTO);
String getOrderNoStr(@Param("publishOrderNo") String publishOrderNo,@Param("ids")List<Integer> ids);
}
\ No newline at end of file
package com.xxfc.platform.vehicle.mqhandler;
import cn.hutool.json.JSONUtil;
import com.rabbitmq.client.Channel;
import com.xxfc.platform.vehicle.biz.CompanyInfoBiz;
import com.xxfc.platform.vehicle.biz.VehiclePublishReceiveBiz;
import com.xxfc.platform.vehicle.entity.CompanyInfo;
import com.xxfc.platform.vehicle.pojo.dto.VehicleReceiveRefundDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.Headers;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static com.xxfc.platform.vehicle.config.RabbitVehicleConfig.VEHICLE_CORPORATION_UPD_QUEUE;
import static com.xxfc.platform.vehicle.config.RabbitVehicleConfig.VEHICLE_RECEVIE_REFUND_QUEUE;
@Component
@Slf4j
public class VehicleReceiveMQHandler {
@Autowired
VehiclePublishReceiveBiz publishReceiveBiz;
/**
* 接单退款信息
* @param
*/
@RabbitListener(queues = VEHICLE_RECEVIE_REFUND_QUEUE)
public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) {
log.info("接单退款信息 messageJson:"+ JSONUtil.parse(message));
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
try {
String messageId = message.getMessageProperties().getMessageId();
String msg = new String(message.getBody(), "UTF-8");
VehicleReceiveRefundDTO receiveRefundDTO = JSONUtil.toBean(msg, VehicleReceiveRefundDTO.class);
publishReceiveBiz.refundReceiveQueue(receiveRefundDTO);
executorService.shutdown();
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
// 手动签收
channel.basicAck(deliveryTag, false);
} catch (Exception e) {
log.info("接收到的消息失败");
try {
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
} catch (IOException i) {
log.error(e.getMessage(), i);
}
log.error(e.getMessage(), e);
}
}
});
}
}
......@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.common.util.BeanUtils;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.biz.VehicleApplyBiz;
import com.xxfc.platform.vehicle.biz.VehiclePublishBiz;
import com.xxfc.platform.vehicle.biz.VehiclePublishGoodsBiz;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleApply;
import com.xxfc.platform.vehicle.entity.VehiclePublish;
......@@ -16,6 +17,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -29,6 +31,9 @@ import java.util.List;
@Api(tags = {"商品需求"})
public class AppVehiclePublishController extends BaseController<VehiclePublishBiz> {
@Autowired
VehiclePublishGoodsBiz publishGoodsBiz;
......@@ -85,6 +90,14 @@ public class AppVehiclePublishController extends BaseController<VehiclePublishBi
}
@GetMapping("orderDetail")
@ApiModelProperty("订单详情")
public ObjectRestResponse orderDetail(VehiclePublishFindDTO publishFindDTO) {
return ObjectRestResponse.succ(publishGoodsBiz.getListByOrderNo(publishFindDTO));
}
......
package com.xxfc.platform.vehicle.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.biz.VehiclePublishReceiveBiz;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author Administrator
*/
@Slf4j
@RestController
@RequestMapping("app/publishAeceive")
@Api(tags = {"商品需求"})
public class AppVehiclePublishReceiveController extends BaseController<VehiclePublishReceiveBiz> {
@PostMapping("meet")
@ApiModelProperty("接单")
public ObjectRestResponse meet(@RequestBody VehiclePublishReceiveDTO publishReceiveDTO) {
if (publishReceiveDTO.getCompanyId() == null || publishReceiveDTO.getCompanyId() == 0){
List<Integer> companyIds = getBusinessUserCompanyIds();
if (companyIds != null && companyIds.size() > 0){
publishReceiveDTO.setCompanyId(companyIds.get(0));
}
}
return ObjectRestResponse.succ(baseBiz.receive(publishReceiveDTO));
}
@PostMapping("app/unauth/updReceive")
@ApiModelProperty("支付后处理")
@IgnoreUserToken
public ObjectRestResponse updReceive(@RequestBody VehiclePublishReceiveDTO publishReceiveDTO) {
baseBiz.updOrderReceive(publishReceiveDTO);
return ObjectRestResponse.succ();
}
}
......@@ -19,4 +19,21 @@
order by g.number DESC
</select>
<select id="selectListByOrderNo" resultType="com.xxfc.platform.vehicle.pojo.vo.VehiclePublishGoodsVo" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePublishFindDTO">
SELECT r.goodsNumber,g.*,IFNULL(b1.cn_name,b.cn_name) as brandName,IFNULL(c1.`name`,c.`name`) as categoryName FROM
(SELECT COUNT(id) as goodsNumber,publish_goods_id FROM vehicle_publish_receive
WHERE receive_order_no = #{orderNo}
GROUP BY publish_goods_id) r
LEFT JOIN vehicle_publish_goods g ON r.publish_goods_id=g.id
LEFT JOIN vehicle v ON g.vehicle_id=v.id
LEFT JOIN vehicle_brand b1 ON v.brand_id=b1.id
LEFT JOIN vehicle_category c1 ON v.category_id=c1.id
LEFT JOIN vehicle_brand b ON g.brand_id=b.id
LEFT JOIN vehicle_category c ON g.category_id=c.id
order by g.number DESC
</select>
</mapper>
\ No newline at end of file
......@@ -9,10 +9,12 @@
c.`name` categoryName,
bc.`name` as receiveCompanyName,
bc1.`name` as publishCompanyName,
g.`publish_id` as publishId
g.`publish_id` as publishId,
g.`receive_amount` as receiveAmount,
g.`publish_amount` as publishAmount
FROM vehicle_publish_receive r
LEFT JOIN vehicle_brand b ON a.brand_id=b.id
LEFT JOIN vehicle_category c ON a.category_id=c.id
LEFT JOIN vehicle_brand b ON r.brand_id=b.id
LEFT JOIN vehicle_category c ON r.category_id=c.id
LEFT JOIN branch_company bc ON r.receive_company_id = bc.id
LEFT JOIN branch_company bc1 ON r.publish_company_id = bc1.id
LEFT JOIN vehicle_publish_goods g ON r.publish_goods_id=g.id
......@@ -21,8 +23,8 @@
<if test="publishId != null and publishId > 0">
AND g.`publish_id`= #{publishId}
</if>
<if test="publishGoodsId != null and publishGoodsId > 0">
AND r.`publish_goods_id`= #{publishGoodsId}
<if test="orderNo != null and orderNo != '' ">
AND r.`receive_order_no`= #{orderNo}
</if>
<if test="ids != null and ids.size > 0">
and r.id in
......@@ -34,4 +36,39 @@
order by r.id DESC
</select>
<update id="updReceiveById" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO">
UPDATE vehicle_publish_receive SET
<choose>
<when test="type != null and type == 1">
receive_order_no = #{orderNo},receive_time=#{nowTime}
</when>
<otherwise>
publish_order_no = #{orderNo},ack_time=#{nowTime}
</otherwise>
</choose>
WHERE
id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<select id="getOrderNoStr" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO" resultType="java.lang.String">
SELECT GROUP_CONCAT(distinct receive_order_no) FROM vehicle_publish_receive
<where>
<if test="publishOrderNo != null and publishOrderNo != '' ">
and publish_order_no =#{publishOrderNo}
</if>
<if test="ids != null and ids.size > 0">
and id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
</mapper>
\ 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