Commit 6cda71d8 authored by jiaorz's avatar jiaorz

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

# Conflicts:
#	ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/feign/UserFeign.java
#	xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/BaseOrder.java
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BaseOrderController.java
parents db37bd1e 5befbd76
...@@ -7,3 +7,4 @@ target/ ...@@ -7,3 +7,4 @@ target/
.settings/ .settings/
.classpath .classpath
ace-modules/ace-tool/src/main/resources/application-dev.yml ace-modules/ace-tool/src/main/resources/application-dev.yml
src/main/test/**
\ No newline at end of file
...@@ -4,6 +4,8 @@ package com.github.wxiaoqi.security.common.constant; ...@@ -4,6 +4,8 @@ package com.github.wxiaoqi.security.common.constant;
* Created by ace on 2017/8/29. * Created by ace on 2017/8/29.
*/ */
public class CommonConstants { public class CommonConstants {
public static final int SYS_TRUE = 1;
public static final int SYS_FALSE = 0;
public final static String RESOURCE_TYPE_MENU = "menu"; public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button"; public final static String RESOURCE_TYPE_BTN = "button";
// 用户token异常 // 用户token异常
......
...@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; ...@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice("com.xxfc.platform") @RestControllerAdvice("com.xxfc.platform")
public class PlatformExceptionHandler { public class PlatformExceptionHandler {
@ExceptionHandler(value = {BaseException.class,Exception.class}) @ExceptionHandler(value = {BaseException.class})
public BaseResponse baseExceptionHandler(Exception e) { public BaseResponse baseExceptionHandler(Exception e) {
if (e instanceof BaseException){ if (e instanceof BaseException){
BaseException be = (BaseException) e; BaseException be = (BaseException) e;
......
...@@ -8,5 +8,5 @@ public class PageParam { ...@@ -8,5 +8,5 @@ public class PageParam {
@ApiModelProperty("当前页码") @ApiModelProperty("当前页码")
Integer page; Integer page;
@ApiModelProperty("每页限制") @ApiModelProperty("每页限制")
Integer limit; Integer limit;
} }
...@@ -35,4 +35,4 @@ APP_TRADE_TYPE=APP ...@@ -35,4 +35,4 @@ APP_TRADE_TYPE=APP
#支付回调 #支付回调
weixinHost=xxtest.upyuns.com weixinHost=xxtest.upyuns.com
#证书存放目录 #证书存放目录
APICLIENT_CERT=D:\\server\\cert\\apiclient_cert.p12 APICLIENT_CERT=D:\\cert\\1514583081_20181017_cert.p12
...@@ -17,11 +17,15 @@ import com.github.wxiaoqi.security.common.msg.BaseResponse; ...@@ -17,11 +17,15 @@ import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* ${DESCRIPTION} * ${DESCRIPTION}
...@@ -69,4 +73,23 @@ public class PublicController { ...@@ -69,4 +73,23 @@ public class PublicController {
} }
return new ObjectRestResponse<AppUserDetail>().rel(true).data(user); return new ObjectRestResponse<AppUserDetail>().rel(true).data(user);
} }
//批量获取用户信息
@RequestMapping(value = "/app/userinfo-by-id", method = RequestMethod.GET)
public @ResponseBody
Map<Integer,Object> userDetailById(List<Integer> userids) throws Exception {
Map<Integer,Object> map=new HashMap<>();
for (Integer userid:userids) {
AppUserDetail user = detailBiz.getUserByUserid(userid);
if (user == null) {
user=new AppUserDetail();
user.setHeadimgurl(SystemConfig.USER_HEADER_URL_DEFAULT);
}
map.put(userid,user);
}
return map;
}
} }
...@@ -29,10 +29,10 @@ public class CampsiteShopCarousel implements Serializable { ...@@ -29,10 +29,10 @@ public class CampsiteShopCarousel implements Serializable {
private Integer id; private Integer id;
/** /**
* 商家id * 营地id
*/ */
@Column(name = "shop_id") @Column(name = "shop_id")
@ApiModelProperty(value = "商家id") @ApiModelProperty(value = "营地id")
private Integer shopId; private Integer shopId;
/** /**
......
...@@ -9,7 +9,7 @@ import lombok.Data; ...@@ -9,7 +9,7 @@ import lombok.Data;
/** /**
* 店铺类型表 * 店铺与类型
* *
* @author libin * @author libin
* @email 18178966185@163.com * @email 18178966185@163.com
......
...@@ -196,6 +196,14 @@ public class BaseOrder implements Serializable { ...@@ -196,6 +196,14 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "是否有优惠") @ApiModelProperty(value = "是否有优惠")
private Long hasDiscount; private Long hasDiscount;
/**
* 是否已支付
*/
@Column(name = "has_pay")
@ApiModelProperty(value = "是否已支付")
private Integer hasPay;
@Transient @Transient
private String username; private String username;
......
package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Data
@Table(name = "order_refund")
public class OrderRefund implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 退款对应的流水号
*/
@Column(name = "trade_no")
@ApiModelProperty(value = "退款对应的流水号")
private Integer tradeNo;
/**
* 退款时间
*/
@Column(name = "refund_time")
@ApiModelProperty(value = "退款时间")
private Long refundTime;
/**
* 退款类型 1--订单款;2--押金
*/
@Column(name = "refund_type")
@ApiModelProperty(value = "退款类型 1--订单款;2--押金")
private Integer refundType;
/**
* 退款状态 0--失败;1--成功
*/
@Column(name = "refund_status")
@ApiModelProperty(value = "退款状态 0--失败;1--成功")
private Integer refundStatus;
/**
* 退款金额
*/
@Column(name = "refund_amount")
@ApiModelProperty(value = "退款金额")
private Integer refundAmount;
/**
* 退款说明
*/
@Column(name = "refund_desc")
@ApiModelProperty(value = "退款说明")
private String refundDesc;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
}
...@@ -50,11 +50,6 @@ public class AddRentVehicleDTO{ ...@@ -50,11 +50,6 @@ public class AddRentVehicleDTO{
@ApiModelProperty(value = "还车地点") @ApiModelProperty(value = "还车地点")
private String endAddr; private String endAddr;
//费用详情
@Column(name = "cost_detail")
@ApiModelProperty(value = "费用详情")
private String costDetail;
//取车城市编号 //取车城市编号
@Column(name = "start_city") @Column(name = "start_city")
@ApiModelProperty(value = "取车城市编号") @ApiModelProperty(value = "取车城市编号")
......
...@@ -17,6 +17,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{ ...@@ -17,6 +17,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{
BigDecimal deposit; BigDecimal deposit;
@ApiModelProperty(value = "天数") @ApiModelProperty(value = "天数")
Integer dayNum; Integer dayNum;
@ApiModelProperty(value = "车辆天数")
Integer vehicleDayNum;
@ApiModelProperty(value = "车辆个数") @ApiModelProperty(value = "车辆个数")
Integer vehicleNum; Integer vehicleNum;
@ApiModelProperty(value = "司机个数") @ApiModelProperty(value = "司机个数")
......
...@@ -6,15 +6,23 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode; ...@@ -6,15 +6,23 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.mapper.BaseOrderMapper; import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
/** /**
* *
* *
...@@ -24,6 +32,16 @@ import java.util.Map; ...@@ -24,6 +32,16 @@ import java.util.Map;
*/ */
@Service @Service
public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderRefundBiz orderRefundBiz;
@Autowired
ThirdFeign thirdFeign;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){ public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap); return mapper.pageByParm(paramMap);
} }
...@@ -51,6 +69,32 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -51,6 +69,32 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setStatus(OrderStatusEnum.ORDER_CANCEL.getCode()); setStatus(OrderStatusEnum.ORDER_CANCEL.getCode());
setCancelReason(baseOrder.getCancelReason()); setCancelReason(baseOrder.getCancelReason());
}}); }});
//触发退款流程
//判断是否已支付
if(baseOrder.getHasPay().equals(SYS_TRUE)) {
//判断订单类型
if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal refundAmont = orvd.getDeposit().add(baseOrder.getGoodsAmount());
thirdFeign.refund(new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setRefundAmount(refundAmont.multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
}});
//创建订单退款记录
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
}
}
}else { }else {
throw new BaseException(ResultCode.FAILED_CODE); throw new BaseException(ResultCode.FAILED_CODE);
} }
......
package com.xxfc.platform.order.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.mapper.OrderRefundMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Service
public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
}
\ No newline at end of file
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderRefund;
import tk.mybatis.mapper.common.Mapper;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
public interface OrderRefundMapper extends Mapper<OrderRefund> {
}
...@@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil; ...@@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken; import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
...@@ -45,9 +44,10 @@ import javax.annotation.Resource; ...@@ -45,9 +44,10 @@ import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@Controller @Controller
@RequestMapping("baseOrder") @RequestMapping("baseOrder")
@Api(value = "订单", tags = {"订单"}) @Api(value = "订单", tags = {"订单"})
...@@ -316,26 +316,24 @@ public class BaseOrderController extends CommonBaseController { ...@@ -316,26 +316,24 @@ public class BaseOrderController extends CommonBaseController {
baseOrder.setOutTradeNo(dto.getTradeNo()); baseOrder.setOutTradeNo(dto.getTradeNo());
baseOrderBiz.updateById(baseOrder); baseOrderBiz.updateById(baseOrder);
} else { } else {
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto)); if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
BaseOrder updateOrder = new BaseOrder() {{
setNo(dto.getOrderNo());
setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
setOutTradeNo(dto.getTradeNo());
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
}};
baseOrderBiz.updateSelectiveById(updateOrder);
} else {
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
}
} }
} else { }else{
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto)); log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
} }
return new ObjectRestResponse().rel(true); return new ObjectRestResponse().rel(true);
} }
public AppUserDTO getUserDetail() {
String token = request.getHeader("Authorization");
if (StringUtils.isBlank(token)) {
return null;
}
ObjectRestResponse<AppUserDTO> objectRestResponse = userFeign.userDetailByToken(token);
if (objectRestResponse.getData() == null) {
return null;
}
return objectRestResponse.getData();
}
/** /**
* 订单查询类 * 订单查询类
*/ */
...@@ -393,5 +391,4 @@ public class BaseOrderController extends CommonBaseController { ...@@ -393,5 +391,4 @@ public class BaseOrderController extends CommonBaseController {
@ApiModelProperty(value = "支付订单(流水)号") @ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo; private String tradeNo;
} }
}
}
\ No newline at end of file
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderRefundBiz;
import com.xxfc.platform.order.entity.OrderRefund;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("orderRefund")
public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> {
}
\ No newline at end of file
...@@ -78,7 +78,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -78,7 +78,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
detail.setOrderId(detail.getOrder().getId()); detail.setOrderId(detail.getOrder().getId());
detailBiz.insertSelective(detail); detailBiz.insertSelective(detail);
detail.getOrder().setDetailId(detail.getId()); detail.getOrder().setDetailId(detail.getId());
baseOrderBiz.updateById(detail.getOrder()); baseOrderBiz.updateSelectiveById(detail.getOrder());
} }
// /** // /**
......
...@@ -97,17 +97,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -97,17 +97,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//当前用户 //当前用户
AppUserDTO dto = detail.getAppUserDTO(); AppUserDTO dto = detail.getAppUserDTO();
// //如果用户存在,并且为会员,并且车辆有优惠价 //如果用户存在,并且为会员,并且车辆有优惠价
// if(null != dto && detail.getRentFreeDay() > 0 && dto.getRentFreeDays() > 0) { if(null != dto && detail.getRentFreeDay() > 0 && dto.getRentFreeDays() > 0) {
// if(detail.getDayNum() > dto.getRentFreeDays()) { if(detail.getDayNum() > dto.getRentFreeDays()) {
// freeDayNum = dto.getRentFreeDays(); freeDayNum = dto.getRentFreeDays();
// }else { }else {
// freeDayNum = detail.getDayNum(); freeDayNum = detail.getDayNum();
// } }
// vehicleDayNum = detail.getDayNum() - freeDayNum; vehicleDayNum = detail.getDayNum() - freeDayNum;
// }else { }else {
// vehicleDayNum = detail.getDayNum(); vehicleDayNum = detail.getDayNum();
// } }
//计算价格 //计算价格
//计算车辆费用 //计算车辆费用
...@@ -130,7 +130,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -130,7 +130,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
}else { }else {
modelAmount = vehicleModel.getPrice(); modelAmount = vehicleModel.getPrice();
} }
vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(detail.getDayNum()))); vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(vehicleDayNum)));
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) { if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
//计算司机费用 //计算司机费用
driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum()))); driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
...@@ -160,11 +160,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -160,11 +160,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setDamageSafePrice(DAMAGE_SAFE); rvp.setDamageSafePrice(DAMAGE_SAFE);
rvp.setModelName(vehicleModel.getName()); rvp.setModelName(vehicleModel.getName());
rvp.setDayNum(detail.getDayNum()); rvp.setDayNum(detail.getDayNum());
rvp.setVehicleDayNum(vehicleDayNum);
rvp.setVehicleNum(1); rvp.setVehicleNum(1);
rvp.setDriverNum(1); rvp.setDriverNum(1);
//设置收费明细 //设置收费明细
costDetail(rvp, handlechildren(detail)); costDetail(rvp, handlechildren(detail, vehicleDayNum));
return rvp; return rvp;
} }
...@@ -186,8 +187,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -186,8 +187,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return modelAmount; return modelAmount;
} }
private String handlechildren(RentVehicleBO detail) { private String handlechildren(RentVehicleBO detail, Integer vehicleDayNum) {
StringBuffer childrenStr = new StringBuffer("${tem_0101}"); StringBuffer childrenStr = new StringBuffer("");
if(vehicleDayNum > 0) {
childrenStr.append(",${tem_0101}");
}
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) { if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
childrenStr.append(",${tem_0102}"); childrenStr.append(",${tem_0102}");
} }
...@@ -195,6 +199,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -195,6 +199,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) { if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) {
childrenStr.append(",${tem_0104}"); childrenStr.append(",${tem_0104}");
} }
if(childrenStr.length() > 0){
childrenStr.deleteCharAt(1);
}
return childrenStr.toString(); return childrenStr.toString();
} }
......
...@@ -57,7 +57,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -57,7 +57,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
private static Integer IS_CHILD = 0; private static Integer IS_CHILD = 1;
// private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00"); // private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00");
// private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔 // private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
...@@ -113,11 +113,11 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -113,11 +113,11 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
bo.setStartCityName(sysRegion.getName()); bo.setStartCityName(sysRegion.getName());
//设置verificationId 核销id //设置verificationId 核销id
bo.setVerificationId(tourFeign.entityList(BeanUtil.beanToMap(new TourGoodVerification(){{ // bo.setVerificationId(tourFeign.entityList(BeanUtil.beanToMap(new TourGoodVerification(){{
setSpeId(bo.getSpePriceId()); // setSpeId(bo.getSpePriceId());
setGoodId(bo.getGoodId()); // setGoodId(bo.getGoodId());
setSiteId(bo.getSiteId()); // setSiteId(bo.getSiteId());
}})).getData().get(0).getId()); // }})).getData().get(0).getId());
//扣減庫存 //扣減庫存
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber()); tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber());
......
<?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.order.mapper.OrderRefundMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderRefund" id="orderRefundMap">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="tradeNo" column="trade_no"/>
<result property="refundTime" column="refund_time"/>
<result property="refundType" column="refund_type"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundAmount" column="refund_amount"/>
<result property="refundDesc" column="refund_desc"/>
<result property="crtTime" column="crt_time"/>
</resultMap>
</mapper>
\ No newline at end of file
...@@ -72,6 +72,11 @@ public class TourGoodDTO { ...@@ -72,6 +72,11 @@ public class TourGoodDTO {
@ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架") @ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架")
private Integer status; private Integer status;
//是否省外;0-省内;1-省外
@ApiModelProperty(value = "是否省外;0-省内;1-省外")
private Integer isOutside;
//是否推荐:0-未推荐;1-已推荐 //是否推荐:0-未推荐;1-已推荐
@ApiModelProperty(value = "是否推荐:0-未推荐;1-已推荐") @ApiModelProperty(value = "是否推荐:0-未推荐;1-已推荐")
private Integer recommend; private Integer recommend;
......
package com.xxfc.platform.tour.dto; package com.xxfc.platform.tour.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @author libin * @author libin
...@@ -10,6 +13,9 @@ import lombok.Data; ...@@ -10,6 +13,9 @@ import lombok.Data;
* @data 2019/6/12 13:50 * @data 2019/6/12 13:50
*/ */
@Data @Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TourTagBannerDTO { public class TourTagBannerDTO {
......
...@@ -90,7 +90,12 @@ public class TourGood implements Serializable { ...@@ -90,7 +90,12 @@ public class TourGood implements Serializable {
@Column(name = "status") @Column(name = "status")
@ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架") @ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架")
private Integer status; private Integer status;
//是否省外;0-省内;1-省外
@Column(name = "is_outside")
@ApiModelProperty(value = "是否省外;0-省内;1-省外")
private Integer isOutside;
//创建时间 //创建时间
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true ) @ApiModelProperty(value = "创建时间", hidden = true )
......
...@@ -83,6 +83,10 @@ public class TourGoodDetailVo { ...@@ -83,6 +83,10 @@ public class TourGoodDetailVo {
//更新时间 //更新时间
@ApiModelProperty(value = "更新时间", hidden = true ) @ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime; private Long updTime;
//是否省外;0-省内;1-省外
@ApiModelProperty(value = "是否省外;0-省内;1-省外")
private Integer isOutside;
//是否推荐:0-未推荐;1-已推荐 //是否推荐:0-未推荐;1-已推荐
@ApiModelProperty(value = "是否推荐:0-未推荐;1-已推荐") @ApiModelProperty(value = "是否推荐:0-未推荐;1-已推荐")
......
...@@ -2,11 +2,6 @@ package com.xxfc.platform.tour.vo; ...@@ -2,11 +2,6 @@ package com.xxfc.platform.tour.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -74,6 +69,10 @@ public class TourGoodVo implements Serializable { ...@@ -74,6 +69,10 @@ public class TourGoodVo implements Serializable {
@ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架") @ApiModelProperty(value = "状态:0-未发布;1-上架;2-下架")
private Integer status; private Integer status;
//是否省外;0-省内;1-省外
@ApiModelProperty(value = "是否省外;0-省内;1-省外")
private Integer isOutside;
//天数 //天数
@ApiModelProperty(value = "天数") @ApiModelProperty(value = "天数")
private Integer number; private Integer number;
......
...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; ...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.tour.dto.TourTagBannerDTO; import com.xxfc.platform.tour.dto.TourTagBannerDTO;
import com.xxfc.platform.tour.mapper.TourTagBannerMapper; import com.xxfc.platform.tour.mapper.TourTagBannerMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -13,9 +14,7 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -13,9 +14,7 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -26,6 +25,7 @@ import java.util.stream.Collectors; ...@@ -26,6 +25,7 @@ import java.util.stream.Collectors;
* @date 2019-06-06 11:41:51 * @date 2019-06-06 11:41:51
*/ */
@Service @Service
@Slf4j
public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> { public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> {
public List<TourTagBanner> findById(long tid) { public List<TourTagBanner> findById(long tid) {
...@@ -43,7 +43,6 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> ...@@ -43,7 +43,6 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner>
* @return * @return
*/ */
public PageDataVO<TourTagBanner> findTourTagBannerWithPage(Integer pageNo,Integer pageSize){ public PageDataVO<TourTagBanner> findTourTagBannerWithPage(Integer pageNo,Integer pageSize){
return PageDataVO.pageInfo(pageNo,pageSize,()->mapper.findAllByState(0)); return PageDataVO.pageInfo(pageNo,pageSize,()->mapper.findAllByState(0));
} }
...@@ -66,6 +65,9 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> ...@@ -66,6 +65,9 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner>
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int save(TourTagBannerDTO tourTagBannerDTO, UserDTO userDTO) { public int save(TourTagBannerDTO tourTagBannerDTO, UserDTO userDTO) {
if (log.isDebugEnabled()){
log.debug("保存的轮播图信息:[{}]",tourTagBannerDTO);
}
TourTagBanner tourTagBanner = new TourTagBanner(); TourTagBanner tourTagBanner = new TourTagBanner();
BeanUtils.copyProperties(tourTagBannerDTO,tourTagBanner); BeanUtils.copyProperties(tourTagBannerDTO,tourTagBanner);
//设置相关信息 //设置相关信息
...@@ -75,6 +77,24 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> ...@@ -75,6 +77,24 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner>
return mapper.insert(tourTagBanner); return mapper.insert(tourTagBanner);
} }
/**
* 批量保存
* @param tourTagBannerDTOS
* @param userDTO
* @return
*/
public int saveBatch(List<TourTagBannerDTO> tourTagBannerDTOS,UserDTO userDTO){
if (log.isDebugEnabled()){
log.debug("批量保存的轮播图信息:[{}]",tourTagBannerDTOS);
}
tourTagBannerDTOS.stream().peek(tourTagBannerDTO -> {
tourTagBannerDTO.setCrtTime(Instant.now().toEpochMilli());
tourTagBannerDTO.setCrtName(userDTO.getUsername());
tourTagBannerDTO.setIsDel(0);
}).count();
return mapper.insertBatch(tourTagBannerDTOS);
}
/** /**
* 根据标签id查询 * 根据标签id查询
* @param tagId * @param tagId
...@@ -116,9 +136,10 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> ...@@ -116,9 +136,10 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner>
mapper.updateTourTagBannerStatusByTagId(tourTagBannerDTOS.get(0).getTagId(),1,Instant.now().toEpochMilli()); mapper.updateTourTagBannerStatusByTagId(tourTagBannerDTOS.get(0).getTagId(),1,Instant.now().toEpochMilli());
} }
} }
tourTagBannerDTOS.stream().filter(tourTagBannerDTO -> Objects.isNull(tourTagBannerDTO.getId())).peek(tourTagBannerDTO -> { List<TourTagBannerDTO> tagBannerDTOS = tourTagBannerDTOS.stream().filter(tourTagBannerDTO -> Objects.isNull(tourTagBannerDTO.getId())).collect(Collectors.toList());
save(tourTagBannerDTO,userDTO); if (CollectionUtils.isNotEmpty(tagBannerDTOS)){
}).count(); saveBatch(tagBannerDTOS,userDTO);
}
} }
/** /**
...@@ -128,8 +149,24 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner> ...@@ -128,8 +149,24 @@ public class TourTagBannerBiz extends BaseBiz<TourTagBannerMapper,TourTagBanner>
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateTourBanner(TourTagBannerDTO tourTagBannerDTO,UserDTO userDTO){ public int updateTourBanner(TourTagBannerDTO tourTagBannerDTO,UserDTO userDTO){
if (log.isDebugEnabled()){
log.debug("更改的banner信息:[{}]",tourTagBannerDTO);
}
tourTagBannerDTO.setUpdName(userDTO.getUsername()); tourTagBannerDTO.setUpdName(userDTO.getUsername());
tourTagBannerDTO.setUpdTime(Instant.now().toEpochMilli()); tourTagBannerDTO.setUpdTime(Instant.now().toEpochMilli());
return mapper.updateTourTagBanner(tourTagBannerDTO); return mapper.updateTourTagBanner(tourTagBannerDTO);
} }
/**
* 根据标签ids查询
* @param tagIds
* @return
*/
public Map<Integer, List<TourTagBannerDTO>> findTourTagBannersByTagIds(List<Integer> tagIds) {
List<TourTagBannerDTO> tourTagBannerDTOS = mapper.findByTagIdsAndStatus(tagIds,0);
if (log.isDebugEnabled()){
log.debug("根据标签集合id查询出banner信息:[{}]",tourTagBannerDTOS);
}
return tourTagBannerDTOS.stream().collect(Collectors.groupingBy(TourTagBannerDTO::getTagId));
}
} }
\ No newline at end of file
...@@ -8,8 +8,8 @@ import com.xxfc.platform.tour.dto.TourTagAndBannerDTO; ...@@ -8,8 +8,8 @@ import com.xxfc.platform.tour.dto.TourTagAndBannerDTO;
import com.xxfc.platform.tour.dto.TourTagBannerDTO; import com.xxfc.platform.tour.dto.TourTagBannerDTO;
import com.xxfc.platform.tour.dto.TourTagDTO; import com.xxfc.platform.tour.dto.TourTagDTO;
import com.xxfc.platform.tour.mapper.TourTagMapper; import com.xxfc.platform.tour.mapper.TourTagMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -23,6 +23,7 @@ import java.util.ArrayList; ...@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 旅游路线标签 * 旅游路线标签
...@@ -32,6 +33,7 @@ import java.util.Objects; ...@@ -32,6 +33,7 @@ import java.util.Objects;
* @date 2019-06-06 11:41:51 * @date 2019-06-06 11:41:51
*/ */
@Service @Service
@Slf4j
public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
...@@ -74,22 +76,34 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -74,22 +76,34 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
* @return * @return
*/ */
public PageDataVO<TourTagAndBannerDTO> findTourTagWithPage(Integer pageNo, Integer pageSize) { public PageDataVO<TourTagAndBannerDTO> findTourTagWithPage(Integer pageNo, Integer pageSize) {
PageDataVO<TourTagAndBannerDTO> tourTagAndBannerDTOPageDataVO = new PageDataVO<>();
//根据分页条件查询出旅游标签的信息 //根据分页条件查询出旅游标签的信息
PageDataVO<TourTag> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findAllByIsDel(TourTag.builder().isDel(0).build())); PageDataVO<TourTag> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findAllByIsDel(TourTag.builder().isDel(0).build()));
List<TourTag> tourTags = pageDataVO.getData(); List<TourTag> tourTags = pageDataVO.getData();
if (log.isDebugEnabled()){
log.debug("旅游分页查询标签:[{}]",tourTags);
}
if (CollectionUtils.isEmpty(tourTags)){
return tourTagAndBannerDTOPageDataVO;
}
List<TourTagAndBannerDTO> tourTagAndBannerDTOS = new ArrayList<>(); List<TourTagAndBannerDTO> tourTagAndBannerDTOS = new ArrayList<>();
tourTags.forEach(tourTag -> { //根据标签ids查询banner
//vo转换 List<Integer> tagIds = tourTags.stream().map(TourTag::getId).collect(Collectors.toList());
TourTagDTO tourTagDTO = new TourTagDTO(); Map<Integer, List<TourTagBannerDTO>> tourTagBannerMap = tourTagBannerBiz.findTourTagBannersByTagIds(tagIds);
BeanUtils.copyProperties(tourTag,tourTagDTO); tourTags.forEach(tourTag -> {
//根据旅游标签id查询出标签banner相关信息
List<TourTagBannerDTO> tagBannerDTOS = tourTagBannerBiz.findTourTagBannersByTagId(tourTag.getId());
//banner 数量
tourTagDTO.setBannerNums(tagBannerDTOS.size());
tourTagAndBannerDTOS.add(TourTagAndBannerDTO.builder().tourTagDTO(tourTagDTO).tourTagBannerDTOS(tagBannerDTOS).build());
}); });
for (TourTag tourTag:tourTags){
//vo转换
TourTagDTO tourTagDTO = new TourTagDTO();
BeanUtils.copyProperties(tourTag,tourTagDTO);
//根据旅游标签id查询出标签banner相关信息
List<TourTagBannerDTO> tagBannerDTOS = tourTagBannerMap.get(tourTag.getId());
//banner 数量
tourTagDTO.setBannerNums(tagBannerDTOS==null?0:tagBannerDTOS.size());
tourTagAndBannerDTOS.add(TourTagAndBannerDTO.builder().tourTagDTO(tourTagDTO).tourTagBannerDTOS(tagBannerDTOS).build());
}
//组装数据 //组装数据
PageDataVO<TourTagAndBannerDTO> tourTagAndBannerDTOPageDataVO = new PageDataVO<>();
tourTagAndBannerDTOPageDataVO.setData(tourTagAndBannerDTOS); tourTagAndBannerDTOPageDataVO.setData(tourTagAndBannerDTOS);
tourTagAndBannerDTOPageDataVO.setPageNum(pageDataVO.getPageNum()); tourTagAndBannerDTOPageDataVO.setPageNum(pageDataVO.getPageNum());
tourTagAndBannerDTOPageDataVO.setPageSize(pageDataVO.getPageSize()); tourTagAndBannerDTOPageDataVO.setPageSize(pageDataVO.getPageSize());
...@@ -107,10 +121,16 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -107,10 +121,16 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
public TourTagAndBannerDTO findTourTagById(Integer tagId){ public TourTagAndBannerDTO findTourTagById(Integer tagId){
//根据旅游标签id查询出标签信息 //根据旅游标签id查询出标签信息
TourTag tourTag = mapper.findById(tagId); TourTag tourTag = mapper.findById(tagId);
if (log.isDebugEnabled()){
log.debug("根据标签id=[{}]查询出标签信息:[{}]",tagId,tourTag);
}
TourTagDTO tourTagDTO = new TourTagDTO(); TourTagDTO tourTagDTO = new TourTagDTO();
BeanUtils.copyProperties(tourTag,tourTagDTO); BeanUtils.copyProperties(tourTag,tourTagDTO);
//根据旅游标签id查询出标签对应的轮播图信息 //根据旅游标签id查询出标签对应的轮播图信息
List<TourTagBannerDTO> tourTagBannerDTOS = tourTagBannerBiz.findTourTagBannersByTagId(tagId); List<TourTagBannerDTO> tourTagBannerDTOS = tourTagBannerBiz.findTourTagBannersByTagId(tagId);
if (log.isDebugEnabled()){
log.debug("根据标签id=[{}],查询出轮播图信息:[{}]",tagId,tourTagBannerDTOS);
}
TourTagAndBannerDTO tourTagAndBannerDTO = new TourTagAndBannerDTO(); TourTagAndBannerDTO tourTagAndBannerDTO = new TourTagAndBannerDTO();
//组装数据 //组装数据
tourTagAndBannerDTO.setTourTagDTO(tourTagDTO); tourTagAndBannerDTO.setTourTagDTO(tourTagDTO);
...@@ -125,6 +145,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -125,6 +145,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int saveTourTag(TourTagAndBannerDTO tourTagAndBannerDTO, UserDTO userDTO) { public int saveTourTag(TourTagAndBannerDTO tourTagAndBannerDTO, UserDTO userDTO) {
if (log.isDebugEnabled()){
log.debug("传入保存的标签信息:[{}]",tourTagAndBannerDTO);
}
TourTagDTO tourTagDTO = tourTagAndBannerDTO.getTourTagDTO(); TourTagDTO tourTagDTO = tourTagAndBannerDTO.getTourTagDTO();
List<TourTagBannerDTO> tourTagBannerDTOS = tourTagAndBannerDTO.getTourTagBannerDTOS(); List<TourTagBannerDTO> tourTagBannerDTOS = tourTagAndBannerDTO.getTourTagBannerDTOS();
//设置标签创建的相关信息 //设置标签创建的相关信息
...@@ -137,10 +160,8 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -137,10 +160,8 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
return effectRows; return effectRows;
} }
//保存标签轮播图 //保存标签轮播图
tourTagBannerDTOS.forEach(tourTagBannerDTO -> { tourTagBannerDTOS.stream().peek(tourTagBannerDTO -> tourTagBannerDTO.setTagId(tourTagDTO.getId())).count();
tourTagBannerDTO.setTagId(tourTagDTO.getId()); tourTagBannerBiz.saveBatch(tourTagBannerDTOS,userDTO);
tourTagBannerBiz.save(tourTagBannerDTO,userDTO);
});
return effectRows; return effectRows;
} }
...@@ -169,6 +190,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -169,6 +190,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateTourTag(TourTagAndBannerDTO tourTagAndBannerDTO, UserDTO userDTO) { public int updateTourTag(TourTagAndBannerDTO tourTagAndBannerDTO, UserDTO userDTO) {
if (log.isDebugEnabled()){
log.debug("更改的旅游标签信息:[{}]",tourTagAndBannerDTO);
}
TourTagDTO tourTagDTO = tourTagAndBannerDTO.getTourTagDTO(); TourTagDTO tourTagDTO = tourTagAndBannerDTO.getTourTagDTO();
//修改旅游标签信息 //修改旅游标签信息
tourTagDTO.setUpdTime(Instant.now().toEpochMilli()); tourTagDTO.setUpdTime(Instant.now().toEpochMilli());
...@@ -178,6 +202,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> { ...@@ -178,6 +202,9 @@ public class TourTagBiz extends BaseBiz<TourTagMapper,TourTag> {
} }
//修改标签的相关轮播图 //修改标签的相关轮播图
List<TourTagBannerDTO> tourTagBannerDTOS = tourTagAndBannerDTO.getTourTagBannerDTOS(); List<TourTagBannerDTO> tourTagBannerDTOS = tourTagAndBannerDTO.getTourTagBannerDTOS();
if (log.isDebugEnabled()){
log.debug("更改标签对应的轮播图信息:[{}]",tourTagBannerDTOS);
}
tourTagBannerDTOS.stream().filter(tourTagBannerDTO -> Objects.isNull(tourTagBannerDTO.getTagId())).peek(tourTagBannerDTO -> tourTagBannerDTO.setTagId(tourTagDTO.getId())).count(); tourTagBannerDTOS.stream().filter(tourTagBannerDTO -> Objects.isNull(tourTagBannerDTO.getTagId())).peek(tourTagBannerDTO -> tourTagBannerDTO.setTagId(tourTagDTO.getId())).count();
tourTagBannerBiz.updateTourBannerByBatch(tourTagBannerDTOS,userDTO); tourTagBannerBiz.updateTourBannerByBatch(tourTagBannerDTOS,userDTO);
return effrows; return effrows;
......
...@@ -2,7 +2,6 @@ package com.xxfc.platform.tour.mapper; ...@@ -2,7 +2,6 @@ package com.xxfc.platform.tour.mapper;
import com.xxfc.platform.tour.dto.TourTagBannerDTO; import com.xxfc.platform.tour.dto.TourTagBannerDTO;
import com.xxfc.platform.tour.entity.TourTagBanner; import com.xxfc.platform.tour.entity.TourTagBanner;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
...@@ -68,4 +67,19 @@ public interface TourTagBannerMapper extends Mapper<TourTagBanner> { ...@@ -68,4 +67,19 @@ public interface TourTagBannerMapper extends Mapper<TourTagBanner> {
* @param status * @param status
*/ */
void updateTourBannerStatusByTagannerIdsAndTagId(@Param("tourTagBannerIds") List<Long> tourTagBannerIds, @Param("tagId") Integer tagId,@Param("status") Integer status); void updateTourBannerStatusByTagannerIdsAndTagId(@Param("tourTagBannerIds") List<Long> tourTagBannerIds, @Param("tagId") Integer tagId,@Param("status") Integer status);
/**
* 根据标签ids 查询
* @param tagIds
* @param status
* @return
*/
List<TourTagBannerDTO> findByTagIdsAndStatus(@Param("tagIds") List<Integer> tagIds, @Param("status") Integer status);
/**
* 批量插入
* @param tourTagBannerDTOS
* @return
*/
int insertBatch(@Param("tourTagBanners") List<TourTagBannerDTO> tourTagBannerDTOS);
} }
...@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
*/ */
@RestController @RestController
@RequestMapping("/admin/tourBanner") @RequestMapping("/admin/tourBanner")
@Api(value = "banner后台接口") @Api(value = "banner后台接口",tags = "banner后台接口")
public class TourBannerAdminController extends TourBaseController<TourBannerBiz> { public class TourBannerAdminController extends TourBaseController<TourBannerBiz> {
/** /**
...@@ -51,7 +51,7 @@ public class TourBannerAdminController extends TourBaseController<TourBannerBiz> ...@@ -51,7 +51,7 @@ public class TourBannerAdminController extends TourBaseController<TourBannerBiz>
} }
/** /**
* 分查询banner * 分查询banner
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
* @return * @return
......
...@@ -47,7 +47,7 @@ public class TourGoodAdminController extends BaseController<TourGoodBiz, TourGoo ...@@ -47,7 +47,7 @@ public class TourGoodAdminController extends BaseController<TourGoodBiz, TourGoo
@ApiOperation("后台旅游上下架") @ApiOperation("后台旅游上下架")
@RequestMapping(value = "/admin/upStatus", method = RequestMethod.POST) @RequestMapping(value = "/admin/upStatus", method = RequestMethod.GET)
public ObjectRestResponse upStatus( public ObjectRestResponse upStatus(
@RequestParam(value = "id",defaultValue = "0")Integer id, @RequestParam(value = "id",defaultValue = "0")Integer id,
@RequestParam(value = "status",defaultValue = "1")Integer status) { @RequestParam(value = "status",defaultValue = "1")Integer status) {
......
...@@ -22,7 +22,7 @@ import java.util.List; ...@@ -22,7 +22,7 @@ import java.util.List;
*/ */
@RestController @RestController
@RequestMapping("/admin/tourTag") @RequestMapping("/admin/tourTag")
@Api(value = "后台*旅游标签") @Api(value = "后台*旅游标签",tags = "后台*旅游标签")
public class TourTagAdminController extends TourBaseController<TourTagBiz> { public class TourTagAdminController extends TourBaseController<TourTagBiz> {
/** /**
* 分页查询标签 * 分页查询标签
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<result property="isMember" column="is_member"/> <result property="isMember" column="is_member"/>
<result property="stock" column="stock"/> <result property="stock" column="stock"/>
<result property="unit" column="unit"/> <result property="unit" column="unit"/>
<result property="isOutside" column="is_outside"/>
</resultMap> </resultMap>
<resultMap type="com.xxfc.platform.tour.vo.TourGoodVo" id="tourGoodVoMap"> <resultMap type="com.xxfc.platform.tour.vo.TourGoodVo" id="tourGoodVoMap">
...@@ -47,12 +48,13 @@ ...@@ -47,12 +48,13 @@
<result property="stock" column="stock"/> <result property="stock" column="stock"/>
<result property="unit" column="unit"/> <result property="unit" column="unit"/>
<result property="tagNames" column="tagNames"/> <result property="tagNames" column="tagNames"/>
<result property="isOutside" column="is_outside"/>
</resultMap> </resultMap>
<!--查询旅游路线列表--> <!--查询旅游路线列表-->
<select id="getGoodList" parameterType="java.util.Map" resultMap="tourGoodMap"> <select id="getGoodList" parameterType="java.util.Map" resultMap="tourGoodMap">
SELECT * from tour_good t SELECT * from tour_good t
where 1=1 where t.is_del=1 AND t.g.status=1
<if test="params.query != null and params.query != ''"> <if test="params.query != null and params.query != ''">
and (t.`name` like CONCAT('%',#{params.query},'%') or t.introduce like CONCAT('%',#{params.query},'%')) and (t.`name` like CONCAT('%',#{params.query},'%') or t.introduce like CONCAT('%',#{params.query},'%'))
</if> </if>
...@@ -85,6 +87,7 @@ ...@@ -85,6 +87,7 @@
LEFT JOIN tour_good_tag tag ON g.id=tag.good_id LEFT JOIN tour_good_tag tag ON g.id=tag.good_id
LEFT JOIN tour_tag t ON tag.tag_id=t.id LEFT JOIN tour_tag t ON tag.tag_id=t.id
<where> <where>
g.is_del=0
<if test="params.name != null and params.name != ''"> <if test="params.name != null and params.name != ''">
and (g.`name` like CONCAT('%',#{params.name},'%') or g.introduce like CONCAT('%',#{params.name},'%')) and (g.`name` like CONCAT('%',#{params.name},'%') or g.introduce like CONCAT('%',#{params.name},'%'))
</if> </if>
......
...@@ -16,6 +16,18 @@ ...@@ -16,6 +16,18 @@
<result property="isDel" column="is_del"/> <result property="isDel" column="is_del"/>
</resultMap> </resultMap>
<resultMap id="tourTagBannerDTOMap" type="com.xxfc.platform.tour.dto.TourTagBannerDTO">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="cover" column="cover"/>
<result property="crtName" column="crt_name"/>
<result property="crtTime" column="crt_time"/>
<result property="updName" column="upd_name"/>
<result property="updTime" column="upd_time"/>
<result property="url" column="url"/>
<result property="isDel" column="is_del"/>
</resultMap>
<delete id="updateTourBannerStatusByTagannerIdsAndTagId"> <delete id="updateTourBannerStatusByTagannerIdsAndTagId">
update tour_tag_banner set `is_del`=#{status} where tag_id=#{tagId} and id not in update tour_tag_banner set `is_del`=#{status} where tag_id=#{tagId} and id not in
<foreach collection="tourTagBannerIds" item="id" index="index" open="(" close=")" separator=","> <foreach collection="tourTagBannerIds" item="id" index="index" open="(" close=")" separator=",">
...@@ -23,4 +35,17 @@ ...@@ -23,4 +35,17 @@
</foreach> </foreach>
</delete> </delete>
<select id="findByTagIdsAndStatus" resultMap="tourTagBannerDTOMap">
select * from `tour_tag_banner` where `is_del`=#{status} and `tag_id` in
<foreach collection="tagIds" item="tagId" separator="," close=")" open="(">
#{tagId}
</foreach>
</select>
<insert id="insertBatch" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
insert into `tour_tag_banner`(`title`,`cover`,`crt_name`,`tag_id`,`crt_time`)values
<foreach collection="tourTagBanners" item="tagbanner" separator=",">
(#{tagbanner.title},#{tagbanner.cover},#{tagbanner.crtName},#{tagbanner.tagId} ,#{tagbanner.crtTime})
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
...@@ -23,10 +23,6 @@ public class OrderRefundVo{ ...@@ -23,10 +23,6 @@ public class OrderRefundVo{
//订单号 //订单号
@ApiModelProperty(value = "订单号") @ApiModelProperty(value = "订单号")
private String orderNo; private String orderNo;
//用户id
@ApiModelProperty(value = "用户id")
private Integer userId;
//支付金额 //支付金额
@ApiModelProperty(value = "支付金额") @ApiModelProperty(value = "支付金额")
...@@ -36,9 +32,6 @@ public class OrderRefundVo{ ...@@ -36,9 +32,6 @@ public class OrderRefundVo{
@ApiModelProperty(value = "退款金额") @ApiModelProperty(value = "退款金额")
private Integer refundAmount; private Integer refundAmount;
//支付接口返回的流水号
@ApiModelProperty(value = "支付接口返回的流水号")
private String serialNumber;
//退款描述 //退款描述
@ApiModelProperty(value = "退款描述") @ApiModelProperty(value = "退款描述")
......
...@@ -7,8 +7,6 @@ import java.util.HashMap; ...@@ -7,8 +7,6 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.xxfc.platform.universal.weixin.util.Snowflake;
import com.xxfc.platform.universal.weixin.util.WeChatSignUtil; import com.xxfc.platform.universal.weixin.util.WeChatSignUtil;
import com.xxfc.platform.universal.weixin.util.XmlUtils; import com.xxfc.platform.universal.weixin.util.XmlUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -36,15 +34,15 @@ public class WxPayRefundUtils { ...@@ -36,15 +34,15 @@ public class WxPayRefundUtils {
// private static final String pay_appId = "wx81470220f10b266e"; // private static final String pay_appId = "wx81470220f10b266e";
// private static final String pay_mchId = "1423414902"; // private static final String pay_mchId = "1423414902";
// private static final String subMchId = "1511773781"; // private static final String subMchId = "1511773781";
private static final String APICLIENT_CERT = SystemConfig.APICLIENT_CERT; //private static final String APICLIENT_CERT = SystemConfig.APICLIENT_CERT;
// private static final String pay_partnerKey = // private static final String pay_partnerKey =
// "CNITR89201000CNITR89201000FUWUSH"; // "CNITR89201000CNITR89201000FUWUSH";
public static boolean refund(String pay_appId, String pay_mchId,String pay_partnerKey, public static boolean refund(String pay_appId, String pay_mchId,String pay_partnerKey,
String out_trade_no,String out_refund_no, String total_fee, String refund_fee, String refund_desc) { String out_trade_no,String out_refund_no, String total_fee, String refund_fee, String refund_desc,String apiclient_cert) {
String result = postXML(URL, genXML(pay_appId, pay_mchId,pay_partnerKey, out_trade_no,out_refund_no, total_fee, String result = postXML(URL, genXML(pay_appId, pay_mchId,pay_partnerKey, out_trade_no,out_refund_no, total_fee,
refund_fee, refund_desc), pay_mchId); refund_fee, refund_desc), pay_mchId,apiclient_cert);
System.out.println(result); log.info(result);
// 判定退款操作结果是否正确 // 判定退款操作结果是否正确
String return_msg = "<return_msg><![CDATA[OK]]></return_msg>"; String return_msg = "<return_msg><![CDATA[OK]]></return_msg>";
String result_code = "<result_code><![CDATA[SUCCESS]]></result_code>"; String result_code = "<result_code><![CDATA[SUCCESS]]></result_code>";
...@@ -52,8 +50,8 @@ public class WxPayRefundUtils { ...@@ -52,8 +50,8 @@ public class WxPayRefundUtils {
return result.contains(result_code) && result.contains(return_msg) && result.contains(return_code); return result.contains(result_code) && result.contains(return_msg) && result.contains(return_code);
} }
private static String postXML(String url, String xml, String pay_mchId) { private static String postXML(String url, String xml, String pay_mchId,String apiclient_cert) {
try (FileInputStream ips = new FileInputStream(new File(APICLIENT_CERT));) { try (FileInputStream ips = new FileInputStream(new File(apiclient_cert));) {
KeyStore keyStore = KeyStore.getInstance("PKCS12"); KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(ips, pay_mchId.toCharArray()); keyStore.load(ips, pay_mchId.toCharArray());
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(keyStore, pay_mchId.toCharArray()).build(); SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(keyStore, pay_mchId.toCharArray()).build();
......
package com.xxfc.platform.universal.biz; package com.xxfc.platform.universal.biz;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.process.SystemConfig; import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import com.github.wxiaoqi.security.common.util.result.JsonResultUtil; import com.github.wxiaoqi.security.common.util.result.JsonResultUtil;
import com.xxfc.platform.universal.entity.OrderPay;
import com.xxfc.platform.universal.entity.OrderRefund; import com.xxfc.platform.universal.entity.OrderRefund;
import com.xxfc.platform.universal.mapper.OrderRefundMapper; import com.xxfc.platform.universal.mapper.OrderRefundMapper;
import com.xxfc.platform.universal.vo.OrderRefundVo; import com.xxfc.platform.universal.vo.OrderRefundVo;
...@@ -15,7 +14,11 @@ import com.xxfc.platform.universal.weixin.util.Snowflake; ...@@ -15,7 +14,11 @@ import com.xxfc.platform.universal.weixin.util.Snowflake;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/** /**
* 订单支付退款表 * 订单支付退款表
...@@ -28,6 +31,10 @@ import org.springframework.stereotype.Service; ...@@ -28,6 +31,10 @@ import org.springframework.stereotype.Service;
@Slf4j @Slf4j
public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
@Autowired
private OrderPayBiz payBiz;
@Value("${universal.cert}")
private String APICLIENT_CERT ;
//申请退款 //申请退款
public JSONObject refund(OrderRefundVo orderRefundVo)throws Exception{ public JSONObject refund(OrderRefundVo orderRefundVo)throws Exception{
...@@ -35,7 +42,7 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { ...@@ -35,7 +42,7 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
log.error("-----参数为空-----------"); log.error("-----参数为空-----------");
return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空");
} }
String out_trade_no=orderRefundVo.getOrderNo(); String order_no=orderRefundVo.getOrderNo();
String appid= SystemConfig.APP_ID; String appid= SystemConfig.APP_ID;
String mchId=SystemConfig.APP_PARTNER; String mchId=SystemConfig.APP_PARTNER;
String partnerKey=SystemConfig.APP_PARTNER_KEY; String partnerKey=SystemConfig.APP_PARTNER_KEY;
...@@ -43,26 +50,36 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { ...@@ -43,26 +50,36 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
Integer refundAmount=orderRefundVo.getRefundAmount(); Integer refundAmount=orderRefundVo.getRefundAmount();
String refundDesc =StringUtils.isNotBlank(orderRefundVo.getRefundDesc())?orderRefundVo.getRefundDesc(): "审核通过,退款"; String refundDesc =StringUtils.isNotBlank(orderRefundVo.getRefundDesc())?orderRefundVo.getRefundDesc(): "审核通过,退款";
String out_refund_no = Snowflake.build() + ""; String out_refund_no = Snowflake.build() + "";
if(StringUtils.isBlank(out_trade_no)||StringUtils.isBlank(appid)||StringUtils.isBlank(mchId)||StringUtils.isBlank(partnerKey) if(StringUtils.isBlank(order_no)||StringUtils.isBlank(appid)||StringUtils.isBlank(mchId)||StringUtils.isBlank(partnerKey)
||payAmount==null||payAmount==0||refundAmount==null||refundAmount==0){ ||payAmount==null||payAmount==0||refundAmount==null||refundAmount==0){
log.error("-----参数为空-----------"); log.error("-----参数为空-----------");
return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空");
} }
Example example =new Example(OrderPay.class);
example.createCriteria().andEqualTo("orderNo", order_no).andEqualTo("isDel",0).andEqualTo("status",1);
List<OrderPay> list=payBiz.selectByExample(example);
if(list.size()==0){
log.error("---支付回调---trade_no====="+order_no+"----订单不存在或未支付");
return JsonResultUtil.createFailedResult(ResultCode.FAILED_CODE, order_no+"订单不存在或未支付");
}
OrderPay orderPay=list.get(0);
String out_trade_no=orderPay.getTradeNo();
boolean flag=WxPayRefundUtils.refund(appid,mchId,partnerKey,out_trade_no,out_refund_no,payAmount+"", boolean flag=WxPayRefundUtils.refund(appid,mchId,partnerKey,out_trade_no,out_refund_no,payAmount+"",
refundAmount+"",refundDesc); refundAmount+"",refundDesc,APICLIENT_CERT);
if(flag){ if(flag){
OrderRefund orderRefund= new OrderRefund(); OrderRefund orderRefund= new OrderRefund();
BeanUtils.copyProperties(orderRefund,orderRefundVo); BeanUtils.copyProperties(orderRefund,orderRefundVo);
if(StringUtils.isNotBlank(orderRefund.getRefundDesc())){ if(StringUtils.isNotBlank(orderRefund.getRefundDesc())){
orderRefund.setRefundDesc(refundDesc); orderRefund.setRefundDesc(refundDesc);
} }
orderRefund.setUserId(orderPay.getUserId());
orderRefund.setStatus(2); orderRefund.setStatus(2);
orderRefund.setFinishTime(System.currentTimeMillis()); orderRefund.setFinishTime(System.currentTimeMillis());
String trade_no = OrderUtil.GetOrderNumber(""); orderRefund.setRefundTradeNo(out_refund_no);
orderRefund.setRefundTradeNo(trade_no); orderRefund.setOutRefundNo(out_trade_no);
orderRefund.setOutRefundNo(out_refund_no); orderRefund.setSerialNumber(orderPay.getSerialNumber());
insertSelective(orderRefund); insertSelective(orderRefund);
return JsonResultUtil.createSuccessResultWithObj(trade_no); return JsonResultUtil.createSuccessResultWithObj(out_refund_no);
} }
return JsonResultUtil.createDefaultFail(); return JsonResultUtil.createDefaultFail();
} }
......
package com.xxfc.platform.vehicle.constant;
/**
* @author libin
* @version 1.0
* @description 车型评分类型
* @data 2019/6/18 15:39
*/
public enum VehicleScoreType {
/**
* 服务态度
*/
SERVICE,
/**
* 司机
*/
DRIVER,
/**
* 检验感受
*/
EXPERIENCE;
}
package com.xxfc.platform.vehicle.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-18 15:03:58
*/
@Data
@Table(name = "vehicle_user_score")
public class VehicleUserScore implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 车型id
*/
@Column(name = "model_id")
@ApiModelProperty(value = "车型id")
private Integer modelId;
/**
* 评分类型
*/
@Column(name = "type")
@ApiModelProperty(value = "评分类型")
private Integer type;
/**
* 评价分
*/
@Column(name = "ave_score")
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 评分明细
*/
@Column(name = "scores")
@ApiModelProperty(value = "评分明细")
private String scores;
/**
* 是否匿名;0-否;1-是
*/
@Column(name = "is_anony")
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@Column(name = "comment")
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@Column(name = "imgs")
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 状态:0-未审核;1-已审核;2-审核不通过
*/
@Column(name = "status")
@ApiModelProperty(value = "状态:0-未审核;1-已审核;2-审核不通过")
private Integer status;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除;0-正常;1-删除
*/
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除;0-正常;1-删除")
private Integer isDel;
}
package com.xxfc.platform.vehicle.pojo.dto;
import com.xxfc.platform.vehicle.constant.VehicleScoreType;
import lombok.Data;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/18 15:45
*/
@Data
public class ScoreTypeDTO {
/**
* 评分类型
*/
@Enumerated(EnumType.STRING)
private VehicleScoreType vehicleScoreType;
/**
* 评分
*/
private int score;
}
package com.xxfc.platform.vehicle.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 车型评分
* @data 2019/6/18 15:15
*/
@Data
public class VehicleUserScoreDTO {
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 订单id
*/
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 车型id
*/
@ApiModelProperty(value = "车型id")
private Integer modelId;
/**
* 评分类型
*/
@ApiModelProperty(value = "评分类型")
private Integer type;
/**
* 评价分
*/
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 评分明细
*/
@ApiModelProperty(value = "评分明细")
private String scores;
/**
* 是否匿名;0-否;1-是
*/
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 状态:0-未审核;1-已审核;2-审核不通过
*/
@ApiModelProperty(value = "状态:0-未审核;1-已审核;2-审核不通过")
private Integer status;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除;0-正常;1-删除
*/
@ApiModelProperty(value = "是否删除;0-正常;1-删除")
private Integer isDel;
/**
* 服务类型评分
*/
@ApiModelProperty(value = "服务类型评分")
private List<ScoreTypeDTO> scoretype;
}
\ No newline at end of file
package com.xxfc.platform.vehicle.pojo.vo;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/18 15:26
*/
@Data
public class VehicleUserScoreVo {
}
package com.xxfc.platform.vehicle.biz;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.entity.VehicleUserScore;
import com.xxfc.platform.vehicle.mapper.VehicleUserScoreMapper;
import com.xxfc.platform.vehicle.pojo.dto.ScoreTypeDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleUserScoreVo;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.time.Instant;
import java.util.List;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-18 15:03:58
*/
@Service
public class VehicleUserScoreBiz extends BaseBiz<VehicleUserScoreMapper, VehicleUserScore> {
/**
* 根据车型id查询
* @param modelId
* @return
*/
public PageDataVO<VehicleUserScoreVo> findVehicleUserScorePageByModelId(Integer modelId) {
return null;
}
/**
* 保存评分
* @param vehicleUserScoreDTO
* @return
*/
public int saveVehicleUserScore(VehicleUserScoreDTO vehicleUserScoreDTO) {
vehicleUserScoreDTO.setCrtTime(Instant.now().toEpochMilli());
List<ScoreTypeDTO> scoretype = vehicleUserScoreDTO.getScoretype();
vehicleUserScoreDTO.setComment(JSONObject.toJSONString(scoretype));
double avgScore = scoretype.stream().mapToInt(ScoreTypeDTO::getScore).average().getAsDouble();
VehicleUserScore vehicleUserScore = new VehicleUserScore();
BeanUtils.copyProperties(vehicleUserScoreDTO,vehicleUserScore);
//vehicleUserScore.setAveScore();
return mapper.insertSelective(vehicleUserScore);
}
}
\ No newline at end of file
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleUserScore;
import tk.mybatis.mapper.common.Mapper;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-18 15:03:58
*/
public interface VehicleUserScoreMapper extends Mapper<VehicleUserScore> {
}
package com.xxfc.platform.vehicle.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.biz.VehicleUserScoreBiz;
import com.xxfc.platform.vehicle.entity.VehicleUserScore;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDTO;
import com.xxfc.platform.vehicle.pojo.vo.VehicleUserScoreVo;
import org.springframework.web.bind.annotation.*;
/**
* @author libin
* @version 1.0
* @description 评分
* @data 2019/6/18 15:32
*/
@RestController
@RequestMapping("vehicleUserScore")
public class VehicleUserScoreController extends BaseController<VehicleUserScoreBiz, VehicleUserScore> {
/**
* 保存评分
* @param vehicleUserScoreDTO
* @return
*/
@PostMapping("/score")
public ObjectRestResponse<Void> saveVehicleUserScore(VehicleUserScoreDTO vehicleUserScoreDTO){
int effectRows = getBaseBiz().saveVehicleUserScore(vehicleUserScoreDTO);
if (effectRows>0){
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
/**
* 根据车型查询评分列表
*
* @param modelId
* @return
*/
@GetMapping("/scores")
public ObjectRestResponse<PageDataVO<VehicleUserScoreVo>> findVehicleUserScorePageByModelId(@RequestParam("modelId") Integer modelId) {
PageDataVO<VehicleUserScoreVo> pageDataVO = getBaseBiz().findVehicleUserScorePageByModelId(modelId);
return ObjectRestResponse.succ(pageDataVO);
}
}
\ 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.VehicleUserScoreMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.vehicle.entity.VehicleUserScore" id="vehicleUserScoreMap">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="orderId" column="order_id"/>
<result property="modelId" column="model_id"/>
<result property="type" column="type"/>
<result property="aveScore" column="ave_score"/>
<result property="scores" column="scores"/>
<result property="isAnony" column="is_anony"/>
<result property="comment" column="comment"/>
<result property="imgs" column="imgs"/>
<result property="status" column="status"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="isDel" column="is_del"/>
</resultMap>
</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