Commit 60339592 authored by hezhen's avatar hezhen

Merge branch 'master_chw_publish' into dev-chw

parents bf4d511b 72036fd3
......@@ -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, "调车需求订单"),
;
/**
* 编码
......
package com.xxfc.platform.order.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
/**
* 订单需求接单详情表
*
* @author hezhen
* @email 18178966185@163.com
* @date 2019-09-09 15:51:16
*/
@Data
@Table(name = "order_pulish_receive_detail")
public class OrderPulishReceiveDetail implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Integer companyId;
@Column(name = "publish_id")
@ApiModelProperty(value = "需求id")
private Integer publishId;
@Column(name = "type")
@ApiModelProperty(value = "类型:1-接单者;2-发布者")
private Integer type;
@Column(name = "receive_ids")
@ApiModelProperty(value = "接单ids(逗号隔开)")
private String receiveIds;
@Column(name = "refuse_receive_ids")
@ApiModelProperty(value = "拒绝的接单ids")
private String refuseReceiveIds;
}
......@@ -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);
}
package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderPulishReceiveDetail;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.vehicle.pojo.vo.VehiclePublishReceiveVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class PulishReceiveBO extends OrderPulishReceiveDetail implements OrderDetail {
private BaseOrder order;
private List<VehiclePublishReceiveVo> receiveVos;
AppUserDTO appUserDTO;
/**
* 促成人联系方式
*/
@ApiModelProperty(value = "促成人联系方式")
String facilitatePhone;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/**
* 优惠券*
*/
private List<String> tickerNo;
/**
* 订单子项
*/
List<OrderItem> items;
}
package com.xxfc.platform.order.pojo.order.add;
import com.xxfc.platform.order.entity.OrderPulishReceiveDetail;
import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@Data
public class AddPublishReceiveDTO extends OrderPulishReceiveDetail {
@ApiModelProperty("接单用户Id")
private Integer userId;
@ApiModelProperty("接单详情")
List<VehiclePublishReceive> receives;
}
......@@ -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,17 +846,33 @@ 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);
if (OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) {
sendOrderMq(orvd, otd, omd, baseOrder, ORDER_FINISH);
//订单完成时,payway为 支付宝,则转支付
baseOrder.setPayWay(payWay);
orderAccountBiz.finishFreeze2PayAmount(baseOrder);
sendOrderMq(orvd, otd, omd, baseOrder, ORDER_PAY);
if (OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) {
sendOrderMq(orvd, otd, omd, baseOrder, ORDER_FINISH);
//订单完成时,payway为 支付宝,则转支付
baseOrder.setPayWay(payWay);
orderAccountBiz.finishFreeze2PayAmount(baseOrder);
}
}
}
} else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
......
package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.order.entity.OrderPulishReceiveDetail;
import com.xxfc.platform.order.mapper.OrderPulishReceiveDetailMapper;
import org.springframework.stereotype.Service;
/**
*
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-19 17:00:35
*/
@Service
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.mapper;
import com.xxfc.platform.order.entity.OrderPulishReceiveDetail;
import tk.mybatis.mapper.common.Mapper;
/**
*
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-19 17:00:35
*/
public interface OrderPulishReceiveDetailMapper extends Mapper<OrderPulishReceiveDetail> {
}
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.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.pojo.order.PulishReceiveBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
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;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
@Log4j
public class OrderPulishReceiveService extends AbstractOrderHandle<OrderPulishReceiveDetailBiz, PulishReceiveBO> implements UserRestInterface {
@Autowired
VehicleFeign vehicleFeign;
@Autowired
ThirdFeign thirdFeign;
private static Integer IS_CHILD = 1;
private static Integer LEVEL_DEFAULT = 0;
private static Integer NUMBER_ZERO = 0;
private static Long autoCancelTime;
@Autowired
OrderCostDetailBiz orderCostDetailBiz;
@Autowired
OrderTemplateBiz orderTemplateBiz;
@Autowired
protected UserAuthConfig userAuthConfig;
@Autowired
ActivityFeign activityFeign;
@Autowired
public HttpServletRequest request;
private SimpleDateFormat simleFormatter = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
@PostConstruct
public void init() {
this.channel = null;
this.orderTypeEnum = OrderTypeEnum.PUBLISH;
}
public void initDictionary() {
dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
this.autoCancelTime = Long.valueOf(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ACT_MEMBER).getDetail());
}
@Override
public void handleDetail(PulishReceiveBO bo) {
//设置订单状态为3
bo.getOrder().setStatus(OrderStatusEnum.ORDER_UNPAY.getCode());
List<VehiclePublishReceiveVo> receiveVos = bo.getReceiveVos();
if (receiveVos.size() > 0 ){
VehiclePublishReceiveVo receiveVo = receiveVos.get(0);
//设置订单图片
bo.getOrder().setPicture(receiveVo.getCover());
//设置订单名称
bo.getOrder().setName(receiveVo.getName());
}
super.handleDetail(bo);
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime);
}
@Override
public void handleCalculate(PulishReceiveBO bo) {
OrderPriceVO tpv = calculatePrice(bo);
BeanUtil.copyProperties(tpv, bo.getOrder());
BeanUtil.copyProperties(tpv, bo);
}
@Override
public OrderPriceVO calculatePrice(PulishReceiveBO detail) {
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal couponAmount = BigDecimal.ZERO;
//设置Item
/* OrderItem memberOrderItem = orderItemBiz.initOrderItem(detail.getBaseUserMemberLevel().getPrice(), 1, detail.getBaseUserMemberLevel().getName(), detail.getBaseUserMemberLevel().getId() + "", ItemTypeEnum.MEMBER);
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(receiveAmount);
/* //vehicleAmount 优惠券处理
if (null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(detail.getOrder().getUserId(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE);
if (couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
memberOrderItem.handleCouponAmount(couponAmount);
}
}*/
//订单总价格
orderAmount = orderAmount.add(goodsAmount);
//真实价格
realAmount = realAmount.add(orderAmount).subtract(couponAmount);
//生成订单明细
OrderPriceVO opv = new OrderPriceVO();
opv.setOrderAmount(orderAmount);
opv.setGoodsAmount(goodsAmount);
opv.setRealAmount(realAmount);
opv.setCouponAmount(couponAmount);
return opv;
}
}
......@@ -40,6 +40,36 @@ public class VehiclePublishReceive implements Serializable {
private String vehicleId;
@Column(name = "name")
@ApiModelProperty(value = "商品名称")
private String name;
@Column(name = "goods_type")
@ApiModelProperty(value = "商品类型 1--房车;2--机车;3--游艇;4-豪车")
private Integer goodsType;
@Column(name = "brand_id")
@ApiModelProperty(value = "品牌id")
private Integer brandId;
@Column(name = "category_id")
@ApiModelProperty(value = "型号id")
private Integer categoryId;
@Column(name = "cover")
@ApiModelProperty(value = "封面")
private String cover;
@Column(name = "extension_list")
@ApiModelProperty(value = "扩展信息(逗号隔开)")
private String extensionList;
@Column(name = "publish_goods_id")
@ApiModelProperty(value = "需求子id")
private Integer publishGoodsId;
......
......@@ -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;
......
package com.xxfc.platform.vehicle.pojo.dto;
import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@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;
@ApiModelProperty("类型:1-接单者;2-发布者")
private Integer type;
@ApiModelProperty("接单公司Id")
private Integer companyId;
@ApiModelProperty("接单用户Id")
private Integer userId;
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;
}
package com.xxfc.platform.vehicle.pojo.vo;
import com.xxfc.platform.vehicle.entity.VehiclePublishReceive;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class VehiclePublishReceiveVo extends VehiclePublishReceive {
@ApiModelProperty("品牌名称")
String brandName;
@ApiModelProperty("型号名称")
String categoryName;
private List<VehicleExtensionVO> extensionVOS;
@ApiModelProperty("接单公司")
String receiveCompanyName;
@ApiModelProperty("发布公司")
String publishCompanyName;
@ApiModelProperty("需求id")
private Integer publishId;
@ApiModelProperty("接单者服务费(单个商品)")
private BigDecimal receiveAmount;
@ApiModelProperty("发布服务费(单个商品)")
private BigDecimal publishAmount;
}
......@@ -133,6 +133,11 @@ public class VehicleExtensionBiz extends BaseBiz<VehicleEextensionMapper, Vehicl
}
public String getExtensionIds(String vehicleId){
return mapper.getExtensionIds(vehicleId);
}
......
......@@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
......@@ -37,6 +38,8 @@ public class VehiclePublishBiz extends BaseBiz<VehiclePublishMapper, VehiclePubl
ConfigFeign configFeign;
@Transactional(rollbackFor = Exception.class)
public void addOrUpd(VehiclePublish vehiclePublish){
List<VehiclePublishGoods> goodsList = vehiclePublish.getPublishGoodsList();
if (CollectionUtils.isEmpty(goodsList)){
......@@ -98,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;
}
......
......@@ -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));
}};
}
}
......
......@@ -6,6 +6,7 @@ import com.xxfc.platform.vehicle.entity.VehicleExtension;
import com.xxfc.platform.vehicle.pojo.dto.VehicleExtensionFindDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleExtensionVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.additional.idlist.SelectByIdListMapper;
import tk.mybatis.mapper.common.Mapper;
......@@ -28,4 +29,7 @@ public interface VehicleEextensionMapper extends Mapper<VehicleExtension>, Selec
List<VehicleExtensionVO> selectListByPlatCata(VehicleExtensionFindDTO vehicleExtensionFindDTO);
@Select("SELECT GROUP_CONCAT(cata_id) FROM vehicle_extension WHERE vehicle_id=#{vehicleId} and is_del = 0")
String getExtensionIds(@Param("vehicleId") String vehicleId);
}
\ No newline at end of file
......@@ -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
......@@ -2,9 +2,21 @@ 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;
import java.util.List;
public interface VehiclePublishReceiveMapper extends Mapper<VehiclePublishReceive>, SelectByIdListMapper<VehiclePublishReceive,Integer> {
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();
}
}
......@@ -18,5 +18,22 @@
</where>
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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehiclePublishReceiveMapper">
<select id="selectList" resultType="com.xxfc.platform.vehicle.pojo.vo.VehiclePublishReceiveVo" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePublishReceiveDTO">
SELECT r.*,
b.cn_name as brandName,
c.`name` categoryName,
bc.`name` as receiveCompanyName,
bc1.`name` as publishCompanyName,
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 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
<where>
r.is_del = 0
<if test="publishId != null and publishId > 0">
AND g.`publish_id`= #{publishId}
</if>
<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
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
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