Commit 6838160d authored by libin's avatar libin

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

parents e3fc7154 2729e34e
package com.github.wxiaoqi.security.admin.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户会员
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 19:38:56
*/
@Data
public class UserMemberDTO {
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 会员等级
*/
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
/**
* 0:未支付 1:绑定 2:解绑
*/
@ApiModelProperty(value = "0:未支付 1:绑定 2:解绑")
private Integer isBind;
/**
* 赠送总天数
*/
@ApiModelProperty(value = "赠送总天数")
private Integer totalNumber;
/**
* 剩余天数
*/
@ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays;
//折扣
@ApiModelProperty(value = "折扣")
private Integer discount;
}
......@@ -76,6 +76,35 @@ public class BaseUserMember implements Serializable {
@ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays;
/**
* 会员消费次数
*/
@Column(name = "pay_count")
@ApiModelProperty(value = "会员消费次数")
private Integer payCount;
/**
* 购买会员次数
*/
@Column(name = "buy_count")
@ApiModelProperty(value = "购买会员次数")
private Integer buyCount;
/**
* 下单锁住天数
*/
@Column(name = "lock_days")
@ApiModelProperty(value = "下单锁住天数")
private Integer lockDays;
//折扣
@Column(name = "discount")
@ApiModelProperty(value = "折扣")
private Integer discount;
/**
* 有效期;0代表永久
*/
......
package com.github.wxiaoqi.security.admin.feign;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -22,6 +21,12 @@ import java.util.List;
public interface UserFeign {
@RequestMapping(value = "/public/userinfo-by-token")
public ObjectRestResponse<UserDTO> userinfoByToken(@RequestParam("token") String token);
/**
* token获取用户信息
* @param token
* @return
*/
@RequestMapping(value = "/public/app/userinfo-by-token")
public ObjectRestResponse<AppUserDTO> userDetailByToken(@RequestParam("token") String token);
......@@ -35,9 +40,52 @@ public interface UserFeign {
public ObjectRestResponse authentication( @RequestParam(value="userId")Integer userId,
@RequestParam(value="idNumber")String idNumber,
@RequestParam(value="status")Integer status);
/**
* 获取会员等级列表
* @return
*/
@RequestMapping(value = "/member/app/unauth/levels", method = RequestMethod.GET)
public List<BaseUserMemberLevel> levels();
/**
* 获取单个会员等级
* @return
*/
@RequestMapping(value = "/member/app/unauth/level/{type}", method = RequestMethod.GET)
public BaseUserMemberLevel level(@PathVariable Integer type);
/**
* 批量获取用户基本信息
* @param ids
* @return
*/
@RequestMapping(value = "/public/getByUserIds", method = RequestMethod.GET)
public ObjectRestResponse<List<AppUserVo>> getByUserIds(@RequestParam("ids")List<Integer> ids);
/**
* 购买会员
* @param userMemberDTO
* @return
* @throws Exception
*/
@RequestMapping(value = "/member/user/buyMember", method = RequestMethod.POST)
public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO) throws Exception;
/**
* 订单更改会员
* @param userId
* @param days
* @param type 1-用户锁定下单;2-购买下单;3-取消订单
* @return
* @throws Exception
*/
@RequestMapping(value = "/member/user/memberDays", method = RequestMethod.POST)
public int memberDays(
@RequestParam(value = "userId",defaultValue = "0")Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type
) throws Exception;
}
......@@ -27,6 +27,10 @@ public class AppUserDTO {
private Integer certificationStatus;
private Integer rentFreeDays;
private Integer totalNumber;
private Integer payCount;
private Integer buyCount;
private Integer lockDays;
private Integer discount;
private Integer memberLevel;
private Integer memberNo;
private Long cardLeave;
......
......@@ -64,6 +64,29 @@ public class UserMemberVo {
private Integer rentFreeDays;
/**
* 会员消费次数
*/
@ApiModelProperty(value = "会员消费次数")
private Integer payCount;
/**
* 购买会员次数
*/
@ApiModelProperty(value = "购买会员次数")
private Integer buyCount;
/**
* 下单锁住天数
*/
@ApiModelProperty(value = "下单锁住天数")
private Integer lockDays;
//折扣
@ApiModelProperty(value = "折扣")
private Integer discount;
/**
* 有效期;0代表永久
*/
@ApiModelProperty(value = "有效期;0代表永久")
......
package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.UserMemberVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
......@@ -16,14 +22,123 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2019-06-18 19:38:56
*/
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMember> {
@Autowired
AppUserDetailBiz detailBiz;
//获取用户会员信息
@Cache(key = "user:member{1}")
public UserMemberVo getMemberInfoByUserId(Integer userId){
return mapper.getInfoByUserId(userId);
}
//更新会员信息
@Override
@CacheClear(key = "user:member{1.userid}")
public void updateSelectiveById(BaseUserMember userMember){ super.updateSelectiveById(userMember);}
//用户购买会员信息更新
public void updUserMemberByUserId(UserMemberDTO userMemberDTO)throws Exception{
if(userMemberDTO==null){
log.error("updUserMemberByUserId----参数为空");
return;
}
Integer userId=userMemberDTO.getUserId();
UserMemberVo userMemberVo=getMemberInfoByUserId(userId);
BaseUserMember baseUserMember=new BaseUserMember();
BeanUtils.copyProperties(baseUserMember,userMemberDTO);
Integer freeDays= baseUserMember.getRentFreeDays();
Integer totalNumber=baseUserMember.getTotalNumber()==null?0:baseUserMember.getTotalNumber();
if(freeDays==null||freeDays==0){
freeDays=totalNumber;
}
if(userMemberVo==null){
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setBuyCount(1);
insertSelective(baseUserMember);
}else {
baseUserMember.setId(userMemberVo.getId());
totalNumber+=userMemberVo.getTotalNumber()==null?0:userMemberVo.getTotalNumber();
freeDays+=userMemberVo.getRentFreeDays()==null?0:userMemberVo.getRentFreeDays();
baseUserMember.setBuyCount(userMemberVo.getBuyCount()+1);
baseUserMember.setTotalNumber(totalNumber);
baseUserMember.setRentFreeDays(freeDays);
updateSelectiveById(baseUserMember);
}
AppUserVo userVo= detailBiz.getUserInfoById(userId);
if(userVo!=null&&(userVo.getIsMember()==null||userVo.getIsMember()==0)){
AppUserVo userVo1=new AppUserVo();
userVo1.setId(userVo.getId());
userVo1.setIsMember(1);
detailBiz.updUuserInfoById(userVo1);
}
}
/**
* //
* @param userId
* @param days
* @param type;1-用户锁定下单;2-购买下单;3-取消订单
* @return
*/
public int upMemberDays(Integer userId,Integer days,Integer type){
int num=-1;
UserMemberVo userMemberVo=getMemberInfoByUserId(userId);
if(userMemberVo!=null){
days=days==null?0:days;
Integer freeDays=userMemberVo.getRentFreeDays()==null?0:userMemberVo.getRentFreeDays();
// Integer lockDays=userMemberVo.getLockDays()==null?userMemberVo.getLockDays():0;
Integer totalNumber=userMemberVo.getTotalNumber()==null?0:userMemberVo.getTotalNumber();
BaseUserMember baseUserMember=new BaseUserMember();
baseUserMember.setId(userMemberVo.getId());
if(type==1){
/*if((freeDays-lockDays)>0&&(freeDays-lockDays)>=days){
baseUserMember.setLockDays(lockDays+days);
updateSelectiveById(baseUserMember);
num=freeDays-(lockDays+days);
}*/
if(freeDays>0&&freeDays>=days){
freeDays=freeDays-days;
baseUserMember.setRentFreeDays(freeDays);
updateSelectiveById(baseUserMember);
num=freeDays;
}
}else if(type==2){
/*Integer payCount=userMemberVo.getPayCount()==null?0:userMemberVo.getPayCount();
payCount=payCount+1;
freeDays=(freeDays-days)>0?(freeDays-days):0;
lockDays=lockDays>0?(lockDays-days)>0?(lockDays-days):0:0;
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setPayCount(payCount);
baseUserMember.setLockDays(lockDays);
updateSelectiveById(baseUserMember);
num=freeDays-lockDays;*/
Integer payCount=userMemberVo.getPayCount()==null?0:userMemberVo.getPayCount();
payCount=payCount+1;
baseUserMember.setPayCount(payCount);
updateSelectiveById(baseUserMember);
num=freeDays;
}else {
/*lockDays=lockDays>0?(lockDays-days)>0?(lockDays-days):0:0;
baseUserMember.setLockDays(lockDays);
updateSelectiveById(baseUserMember);
num=freeDays-lockDays;*/
freeDays=(freeDays+days)>0?(freeDays+days):0;
freeDays=freeDays>totalNumber?totalNumber:freeDays;
baseUserMember.setRentFreeDays(freeDays);
updateSelectiveById(baseUserMember);
num=freeDays;
}
}
return num;
}
}
\ No newline at end of file
......@@ -2,11 +2,9 @@ package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.UserMemberLevelBiz;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -28,4 +26,20 @@ public class MemberLevelController {
List<BaseUserMemberLevel> levels() throws Exception {
return memberBiz.getLevesls();
}
@RequestMapping(value = "/app/unauth/level/{type}", method = RequestMethod.GET)
public @ResponseBody
BaseUserMemberLevel level(@PathVariable Integer type) throws Exception {
List<BaseUserMemberLevel> list=memberBiz.getLevesls();
if(type!=null){
if(list.size()>0){
for (BaseUserMemberLevel userMemberLevel:list){
if(userMemberLevel.getLevel()!=null&&userMemberLevel.getLevel()==type){
return userMemberLevel;
}
}
}
}
return null;
}
}
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-08 11:51
*/
@RestController
@RequestMapping("member")
public class UserMemberController {
@Autowired
private BaseUserMemberBiz memberBiz;
/**
* 购买会员
* @param userMemberDTO
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/buyMember", method = RequestMethod.POST)
public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO) throws Exception {
memberBiz.updUserMemberByUserId(userMemberDTO);
return ObjectRestResponse.succ();
}
/**
* 订单更改会员
* @param userId
* @param days
* @param type 1-用户锁定下单;2-购买下单;3-取消订单
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/memberDays", method = RequestMethod.POST)
public int memberDays(
@RequestParam(value = "userId",defaultValue = "0")Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type
) throws Exception {
return memberBiz.upMemberDays(userId,days,type);
}
}
......@@ -7,12 +7,13 @@
<groupId>com.github.wxiaoqi</groupId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xx-campsite</artifactId>
<packaging>pom</packaging>
<groupId>com.xxfc.platform</groupId>
<modules>
<module>xx-campsite-api</module>
<module>xx-campsite-server</module>
</modules>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<artifactId>xx-campsite</artifactId>
</project>
\ No newline at end of file
......@@ -3,15 +3,13 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xx-campsite</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-campsite-api</artifactId>
<name>xx-campsite-api</name>
<description>The xxfc campsite api</description>
<dependencies>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
......
......@@ -3,26 +3,21 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>xx-campsite</artifactId>
<groupId>com.github.wxiaoqi</groupId>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-campsite-server</artifactId>
<name>xx-campsite-server</name>
<description>the xxfc travel Campsite</description>
<dependencies>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-campsite-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xxfc.common</groupId>
<artifactId>xx-common-platform-web</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
......
package com.xxfc.platform.order.contant.enumerate;
import java.util.HashMap;
import java.util.Map;
public enum RefundTypeEnum {
RentVehicle(1, "订单款"),
TOUR(2, "押金"),
;
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
//Maps.newHashMap();
// static{
// for(VehicleBookRecordStatus constantType : VehicleBookRecordStatus.values()){
// codeAndDesc.put(constantType.getCode(),constantType.getDesc());
// }
// }
RefundTypeEnum(Integer code, String desc){
this.code=code;
this.desc=desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code);
}
}
\ No newline at end of file
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-19 17:00:35
*/
@Data
@Table(name = "order_member_detail")
public class OrderMemberDetail 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 = "name")
@ApiModelProperty(value = "名称")
private String name;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 出租免费天数
*/
@Column(name = "rent_free_num")
@ApiModelProperty(value = "出租免费天数")
private Integer rentFreeNum;
/**
* 折扣比例 80即 八折
*/
@Column(name = "rebate")
@ApiModelProperty(value = "折扣比例 80即 八折")
private Integer rebate;
}
package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
......@@ -39,7 +40,7 @@ public class OrderRefund implements Serializable {
*/
@Column(name = "trade_no")
@ApiModelProperty(value = "退款对应的流水号")
private Integer tradeNo;
private String tradeNo;
/**
* 退款时间
......@@ -67,7 +68,7 @@ public class OrderRefund implements Serializable {
*/
@Column(name = "refund_amount")
@ApiModelProperty(value = "退款金额")
private Integer refundAmount;
private BigDecimal refundAmount;
/**
* 退款说明
......
......@@ -2,6 +2,7 @@ package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -12,7 +13,7 @@ import lombok.Data;
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-15 17:11:08
* @date 2019-06-19 20:21:29
*/
@Data
@Table(name = "order_rent_vehicle_detail")
......@@ -258,6 +259,13 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty(value = "优惠天数")
private Integer freeDays;
/**
* 折扣 80 即 8折
*/
@Column(name = "rebate")
@ApiModelProperty(value = "折扣 80 即 8折")
private Integer rebate;
/**
* 出发公司区域id
*/
......@@ -265,5 +273,19 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty(value = "出发公司区域id")
private Integer startZoneId;
/**
* 退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)
*/
@Column(name = "return_pay_status")
@ApiModelProperty(value = "退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)")
private Integer returnPayStatus;
/**
* 剩余需要退还的钱(押金)
*/
@Column(name = "return_pay_residue")
@ApiModelProperty(value = "剩余需要退还的钱(押金)")
private BigDecimal returnPayResidue;
}
......@@ -60,4 +60,8 @@ public class AddTourDTO {
//联系邮箱
@ApiModelProperty(value = "联系邮箱")
private String contactEmail;
//站点id
@ApiModelProperty(value = "站点id")
private Integer siteId;
}
package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.entity.TourUser;
import lombok.Data;
import java.util.List;
@Data
public class MemberBO extends OrderMemberDetail implements OrderDetail {
private BaseOrder order;
private BaseUserMemberLevel baseUserMemberLevel;
private Integer levelNum;
}
......@@ -25,6 +25,14 @@
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
<build>
......
package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
......@@ -21,6 +24,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
/**
......@@ -81,15 +85,30 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal refundAmont = orvd.getDeposit().add(baseOrder.getGoodsAmount());
thirdFeign.refund(new OrderRefundVo(){{
String refundTradeNo = 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());
}});
}}).getData();
//创建订单退款记录
//如果返回的流水为空,则当做失败
Integer refundStatus = SYS_TRUE;
if(StrUtil.isBlank(refundTradeNo)) {
refundStatus = SYS_FALSE;
}
//创建订单退款记录
OrderRefund orderRefund = new OrderRefund(){{
setOrderId(baseOrder.getId());
setRefundAmount(refundAmont);
setRefundTime(System.currentTimeMillis());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
setTradeNo(refundTradeNo);
setRefundType(RefundTypeEnum.RentVehicle.getCode());
}};
orderRefund.setRefundStatus(refundStatus);
orderRefundBiz.insertSelective(orderRefund);
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
......
package com.xxfc.platform.order.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.mapper.OrderMemberDetailMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
*
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-19 17:00:35
*/
@Service
public class OrderMemberDetailBiz extends BaseBiz<OrderMemberDetailMapper,OrderMemberDetail> {
}
\ No newline at end of file
package com.xxfc.platform.order.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@Slf4j
//@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
\ No newline at end of file
package com.xxfc.platform.order.jobhandler;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
//@JobHandler(value = "httpJobHandler")
//@Component
public class HttpJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
try {
XxlJobLogger.log("helloword");
return SUCCESS;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
} finally {
;
}
}
}
\ No newline at end of file
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import tk.mybatis.mapper.common.Mapper;
/**
*
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-19 17:00:35
*/
public interface OrderMemberDetailMapper extends Mapper<OrderMemberDetail> {
}
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("orderMemberDetail")
public class OrderMemberDetailController extends BaseController<OrderMemberDetailBiz,OrderMemberDetail> {
}
\ No newline at end of file
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.biz.OrderTourDetailBiz;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.order.pojo.price.TourPriceVO;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.entity.TourGoodVerification;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import com.xxfc.platform.vehicle.entity.SysRegion;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Log4j
public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz, MemberBO> {
@Autowired
TourFeign tourFeign;
@Autowired
VehicleFeign vehicleFeign;
private static Integer IS_CHILD = 1;
private static Integer LEVEL_DEFAULT = 0;
private static Integer NUMBER_ZERO = 0;
@Autowired
OrderCostDetailBiz orderCostDetailBiz;
@Autowired
OrderTemplateBiz orderTemplateBiz;
@Autowired
protected UserAuthConfig userAuthConfig;
@Autowired
UserFeign userFeign;
@Autowired
public HttpServletRequest request;
@PostConstruct
public void init(){
this.orderTypeEnum = OrderTypeEnum.MEMBER;
}
public AppUserDTO getUserInfo(){
return userFeign.userDetailByToken(userAuthConfig.getToken(request)).getData();
}
@Override
public void initDetail(MemberBO bo) {
super.initDetail(bo);
BaseUserMemberLevel buml = userFeign.level(bo.getLevelNum());
bo.setBaseUserMemberLevel(buml);
bo.setRentFreeNum(buml.getNumber());
bo.setRebate(buml.getDiscount());
}
@Override
public void handleDetail(MemberBO bo) {
//设置订单状态为3
bo.getOrder().setStatus(OrderStatusEnum.ORDER_UNPAY.getCode());
//设置订单图片
bo.getOrder().setPicture(bo.getBaseUserMemberLevel().getIcon());
//设置订单名称
bo.getOrder().setName(bo.getBaseUserMemberLevel().getName());
super.handleDetail(bo);
}
@Override
public void handleCalculate(MemberBO bo) {
OrderPriceVO tpv = calculatePrice(bo);
BeanUtil.copyProperties(tpv, bo.getOrder());
BeanUtil.copyProperties(tpv, bo);
}
@Override
public OrderPriceVO calculatePrice(MemberBO detail) {
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
//商品价格
goodsAmount = goodsAmount.add(detail.getBaseUserMemberLevel().getPrice());
//订单总价格
orderAmount = orderAmount.add(goodsAmount);
//真实价格
realAmount = realAmount.add(orderAmount);
//生成订单明细
OrderPriceVO opv = new OrderPriceVO();
opv.setOrderAmount(orderAmount);
opv.setGoodsAmount(goodsAmount);
opv.setRealAmount(realAmount);
return opv;
}
}
......@@ -113,11 +113,11 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
bo.setStartCityName(sysRegion.getName());
//设置verificationId 核销id
// bo.setVerificationId(tourFeign.entityList(BeanUtil.beanToMap(new TourGoodVerification(){{
// setSpeId(bo.getSpePriceId());
// setGoodId(bo.getGoodId());
// setSiteId(bo.getSiteId());
// }})).getData().get(0).getId());
bo.setVerificationId(tourFeign.entityList(BeanUtil.beanToMap(new TourGoodVerification(){{
setSpeId(bo.getSpePriceId());
setGoodId(bo.getGoodId());
setSiteId(bo.getSiteId());
}})).getData().get(0).getId());
//扣減庫存
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber());
......
......@@ -36,7 +36,7 @@ public interface TourFeign {
public ObjectRestResponse<TourSpePriceVo> refund(@RequestBody TourSpePriceDTO spePriceDto);
@RequestMapping(value = "/spe/stock", method = RequestMethod.GET)
public ObjectRestResponse<TourSpePriceVo> stock(@RequestParam Integer speId, @RequestParam Integer number);
public ObjectRestResponse<TourSpePriceVo> stock(@RequestParam Integer speId, @RequestParam Integer number, @RequestParam Integer type);
@RequestMapping(value = "/tourGood/app/unauth/usable/{id}", method = RequestMethod.GET)
......
......@@ -83,14 +83,18 @@ public class TourGoodSpeBiz extends BaseBiz<TourGoodSpePriceMapper, TourGoodSpeP
}
//减库存
public ObjectRestResponse cutStock(Integer speId,Integer number) {
public ObjectRestResponse cutStock(Integer speId,Integer number,Integer type) {
TourGoodSpePrice spePrice = mapper.selectByPrimaryKey(speId);
if(type==1){
if (spePrice != null && spePrice.getStock() > 0 && spePrice.getStock() >= number) {
mapper.updStockById(speId, number);
return ObjectRestResponse.succ();
mapper.updStockById(speId, number,type);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.STOCK_CODE, "库存不足");
}
}else {
mapper.updStockById(speId, number,type);
}
return ObjectRestResponse.succ();
}
//删除
......
......@@ -19,7 +19,7 @@ public interface TourGoodSpePriceMapper extends Mapper<TourGoodSpePrice> {
List<TourDepartTimeVo> getAllByGoodId(@Param("goodId") Integer goodId);
//减库存
int updStockById(@Param("id") Integer id,@Param("number") Integer number);
int updStockById(@Param("id") Integer id,@Param("number") Integer number,@Param("type") Integer type);
//删除站点
public int delSpe(@Param("goodId")Integer goodId,@Param("list")List<Integer> ids);
......
......@@ -26,8 +26,10 @@ public class TourGoodSpeController extends TourBaseController<TourGoodSpeBiz> {
@RequestMapping(value = "/stock", method = RequestMethod.GET)
public ObjectRestResponse<TourSpePriceVo> stock(
@RequestParam(value = "speId",defaultValue = "0")Integer speId,
@RequestParam(value = "number",defaultValue = "0") Integer number){
return baseBiz.cutStock(speId,number);
@RequestParam(value = "number",defaultValue = "0") Integer number,
@RequestParam(value = "type",defaultValue = "1") Integer type
){
return baseBiz.cutStock(speId,number,type);
}
}
\ No newline at end of file
......@@ -54,7 +54,7 @@
<!--查询旅游路线列表-->
<select id="getGoodList" parameterType="java.util.Map" resultMap="tourGoodMap">
SELECT * from tour_good t
where t.is_del=1 AND t.status=1
where t.is_del=0 AND t.status=1
<if test="params.query != null and params.query != ''">
and (t.`name` like CONCAT('%',#{params.query},'%') or t.introduce like CONCAT('%',#{params.query},'%'))
</if>
......
......@@ -43,7 +43,14 @@
<!-- 减库存-->
<update id="updStockById">
update tour_good_spe_price set stock=stock-#{number} where id=#{id}
update tour_good_spe_price set
<if test="type==1">
stock=stock-#{number}
</if>
<if test="type==2">
stock=stock+#{number}
</if>
where id=#{id}
</update>
<update id="delSpe">
......
package com.xxfc.platform.universal.feign;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.universal.entity.OrderRefund;
import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.vo.OrderRefundVo;
......@@ -27,6 +28,6 @@ public interface ThirdFeign {
@RequestMapping(value = "/pay/app/wx", method = RequestMethod.POST)
public JSONObject wx(@RequestBody OrderPayVo orderPayVo);
@RequestMapping(value = "/refund/app/wx", method = RequestMethod.POST)
public JSONObject refund(@RequestBody OrderRefundVo orderRefundVo);
public ObjectRestResponse<String> refund(@RequestBody OrderRefundVo orderRefundVo);
}
......@@ -18,7 +18,7 @@ public class VehicleBookRecord {
/**
* 车辆id
*/
private String vehicle;
private String vehicleId;
/**
* 申请状态:1-申请中 2-已通过 3-已归还 4-拒绝 5-逾期归还
......
package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import lombok.Data;
import java.util.List;
@Data
public class VehicleAndModelInfoVo extends Vehicle {
VehicleModel vehicleModel;
List<VehicleBookRecord> vehicleBookRecord;
}
package com.xxfc.platform.vehicle.pojo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class VehicleCountVo {
@ApiModelProperty(value = "总数")
private Integer total;
@ApiModelProperty(value = "车辆状态")
private Integer travelStatus;
@ApiModelProperty(value = "状态描述")
private String detail;
}
package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import lombok.Data;
@Data
public class VehicleRecordInfoVo extends VehicleBookRecord {
VehicleAndModelInfoVo vehicleAndModelInfoVo;
}
package com.xxfc.platform.vehicle.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class VehiclePlanDto extends PageParam {
@ApiModelProperty(value = "车辆Id")
private String vehicleId;
@ApiModelProperty(value = "开始时间")
private String startTime;
@ApiModelProperty(value = "结束时间")
private String endTime;
@ApiModelProperty(value = "车辆状态")
private Integer status;
@ApiModelProperty(value = "车牌")
private String numberPlate;
@ApiModelProperty(value = "所属分公司Id")
private Integer subordinateBranch;
@ApiModelProperty(value = "停车分公司Id")
private Integer parkBranchCompanyId;
}
......@@ -8,6 +8,7 @@ import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.base.Function;
......@@ -26,6 +27,7 @@ import com.xxfc.platform.vehicle.mapper.VehicleBookInfoMapper;
import com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper;
import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.BeanUtilsBean;
......@@ -52,7 +54,6 @@ import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.concurrent.TimeUnit;
......@@ -303,7 +304,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
}
//加入预定申请记录
VehicleBookRecord vehicleBookRecord = new VehicleBookRecord();
vehicleBookRecord.setVehicle(bookVehicleVo.getVehicle());
vehicleBookRecord.setVehicleId(bookVehicleVo.getVehicle());
vehicleBookRecord.setBookType(BookType.EMPLOYEE_APPLY.getCode());
vehicleBookRecord.setStatus(VehicleBookRecordStatus.APPLY.getCode());
vehicleBookRecord.setBookUser(userId);
......@@ -1013,4 +1014,15 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
}
public List<VehicleCountVo> countVehicleByParam(VehiclePlanDto vehiclePlanDto) {
return mapper.countVehicleByParam(vehiclePlanDto);
}
public PageDataVO<VehicleAndModelInfoVo> getAllVehicle(VehiclePlanDto vehiclePlanDto) {
Query query = new Query(vehiclePlanDto);
PageDataVO<VehicleAndModelInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllVehicle(query.getSuper()));
return pageDataVO;
}
}
......@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.biz;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
......@@ -17,6 +18,7 @@ import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.mapper.BookRecordAccItemMapper;
import com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
......@@ -313,6 +315,12 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
}
public PageDataVO<VehicleRecordInfoVo> getListByParam(VehiclePlanDto vehiclePlanDto) {
Query query = new Query(vehiclePlanDto);
PageDataVO<VehicleRecordInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getByParam(query.getSuper()));
return pageDataVO;
}
private String getTbNameNow(){
return TB_NAME_PREFIX+ DateTime.now().toString(YEAR_DATE_TIME_FORMATTER);
}
......
......@@ -14,6 +14,7 @@ import com.xxfc.platform.vehicle.entity.VehicleWarningRule;
import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import com.xxfc.platform.vehicle.mapper.VehicleWarningMsgMapper;
import com.xxfc.platform.vehicle.mapper.VehicleWarningRuleMapper;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import com.xxfc.platform.vehicle.util.JSUtil;
import com.xxfc.platform.vehicle.pojo.AddVehicleWarningMsgVo;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
......@@ -212,5 +213,8 @@ public class VehicleWarningMsgBiz extends BaseBiz<VehicleWarningMsgMapper, Vehic
}
}
public List<VehicleWarningMsg> getAllByParam(VehiclePlanDto vehiclePlanDto) {
return mapper.getAllByparam(vehiclePlanDto);
}
}
......@@ -3,6 +3,8 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.pojo.QueryVehicleBookRecordVo;
import com.xxfc.platform.vehicle.pojo.VehicleBookRecordAndTbNameVo;
import com.xxfc.platform.vehicle.pojo.VehicleRecordInfoVo;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -28,4 +30,8 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> {
public VehicleBookRecord getById(Map<String, Object> params);
public List<VehicleRecordInfoVo> getByParam(Map<String, Object> params);
public List<VehicleBookRecord> getByVehicleId(String vehicleId);
}
\ No newline at end of file
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.pojo.AddOrUpdateVehicleVo;
import com.xxfc.platform.vehicle.pojo.QueryVehicleVo;
import com.xxfc.platform.vehicle.pojo.UsableVehicleModelVO;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import org.springframework.data.repository.query.Param;
import tk.mybatis.mapper.common.Mapper;
......@@ -13,12 +12,14 @@ import java.util.Map;
public interface VehicleMapper extends Mapper<Vehicle> {
public List<QueryVehicleVo> getByPage(Map<String, Object> params);
public List<QueryVehicleVo> getByPageNotAllData(Map<String, Object> params);
public int updateStatusById(Map<String, Object> params);
/**
* 锁定相关编码 或 车牌 的行
*
* @param addOrUpdateVehicleVo
* @return
*/
......@@ -32,4 +33,8 @@ public interface VehicleMapper extends Mapper<Vehicle> {
List<UsableVehicleModelVO> searchUsableModel(Map<String, Object> params);
List<Vehicle> searchUsableVehicle(Map<String, Object> params);
List<VehicleCountVo> countVehicleByParam(VehiclePlanDto vehiclePlanDto);
List<VehicleAndModelInfoVo> getAllVehicle(Map<String, Object> params);
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleWarningMsg;
import com.xxfc.platform.vehicle.pojo.QueryVehicleWarningMsgVo;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -13,4 +14,6 @@ public interface VehicleWarningMsgMapper extends Mapper<VehicleWarningMsg> {
public List<VehicleWarningMsg> getMsgByVehicle(String vehicleId);
public List<VehicleWarningMsg> getAllByparam(VehiclePlanDto vehiclePlanDto);
}
......@@ -14,9 +14,11 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Maps;
import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleBookRecordBiz;
import com.xxfc.platform.vehicle.biz.VehiclePlatCataBiz;
import com.xxfc.platform.vehicle.biz.VehicleWarningMsgBiz;
import com.xxfc.platform.vehicle.common.BaseController;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.common.RestResponse;
......@@ -25,8 +27,11 @@ import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookInfo;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.entity.VehicleWarningMsg;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -51,9 +56,9 @@ import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP;
@RestController
@RequestMapping("/vehicleInfo")
@Slf4j
@Slf4j
@IgnoreClientToken
@Api(value = "车辆管理controller", tags = {"车辆管理接口"})
@Api(value="车辆管理controller",tags={"车辆管理接口"})
public class VehicleController extends BaseController<VehicleBiz> {
@Autowired
......@@ -71,6 +76,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
@Autowired
private VehiclePlatCataBiz vehiclePlatCataBiz;
@Autowired
private VehicleWarningMsgBiz vehicleWarningMsgBiz;
private static Integer MAX_DRIVING_LICENSE_SIZE = 10 * 1024 * 1024;//10M
public static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
......@@ -138,6 +146,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
}
@RequestMapping(value = "/upload/drivingLicense", method = RequestMethod.POST)
@ApiOperation(value = "上传驾驶员驾驶证")
public RestResponse uploadDrivingLicense(@RequestParam("file") MultipartFile file)
throws Exception {
String contentType = file.getContentType(); //图片文件类型
......@@ -154,16 +163,19 @@ public class VehicleController extends BaseController<VehicleBiz> {
@IgnoreUserToken
@RequestMapping(value = "/download/drivingLicense", method = RequestMethod.GET) //匹配的是href中的download请求
@ApiOperation(value = "下载驾驶证")
public ResponseEntity<byte[]> downloadDrivingLicense(@RequestParam("realFileRelPath") String realFileRelPath) throws Exception {
return baseBiz.downloadDrivingLicense(realFileRelPath);
}
@RequestMapping(value = "/bookedInfo/{vehicleId}/{yearMonth}", method = RequestMethod.GET)
@ApiOperation(value = "获取车辆预定信息")
public RestResponse<VehicleBookInfo> getBookedInfo(@PathVariable String vehicleId, @PathVariable String yearMonth) {
return RestResponse.data(baseBiz.getByVehicleIdAndYearMonth(vehicleId, yearMonth));
}
@RequestMapping(value = "/bookedInfo/{vehicleId}", method = RequestMethod.GET)
@ApiOperation(value = "根据车辆Id获取所有的预定信息")
public RestResponse<List<VehicleBookInfo>> getBookedInfo(@PathVariable String vehicleId) {
return RestResponse.data(baseBiz.getByVehicleIdAndYearMonth(vehicleId));
}
......@@ -175,6 +187,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/book/4employee", method = RequestMethod.POST)
@ApiOperation(value = "申请预定车辆信息")
public RestResponse<Integer> applyVehicle(@RequestBody BookVehicleVO bookVehicleVo) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -364,6 +377,25 @@ public class VehicleController extends BaseController<VehicleBiz> {
return ObjectRestResponse.succ(bookVehicleVo.getVehicle());
}
@RequestMapping(value = "/getVehiclePlanList", method = RequestMethod.GET)
@ApiOperation(value = "获取排车信息")
@IgnoreClientToken
public ObjectRestResponse<Map<String, Object>> getVehiclePlanList(VehiclePlanDto vehiclePlanDto) {
//获取统计信息
List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto);
//获取警告信息
List<VehicleWarningMsg> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto);
//获取列表
PageDataVO<VehicleAndModelInfoVo> pageDataVO = baseBiz.getAllVehicle(vehiclePlanDto);
Map<String, Object> map = Maps.newHashMap();
map.put("vehicleCountVos",vehicleCountVos);
map.put("vehicleWarningMsgs",vehicleWarningMsgs);
map.put("vehicleAndModelInfoVo",pageDataVO);
return ObjectRestResponse.succ(map);
}
/**
* 保存
*
......
......@@ -2,6 +2,10 @@
<!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.VehicleBookRecordMapper" >
<resultMap id="getVehicleMap" type="com.xxfc.platform.vehicle.pojo.VehicleRecordInfoVo">
<association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectById" />
</resultMap>
<update id="changeRecordStatus" parameterType="java.util.Map">
update vehicle_book_record set
<if test="reviewerApply != null ">
......@@ -87,7 +91,7 @@
<insert id="insertHis" parameterType="java.util.Map">
insert into ${tbName} (
`id`,
`vehicle`,
`vehicle_id`,
`status`,
`book_type`,
`book_user`,
......@@ -119,7 +123,7 @@
)
values(
#{id},
#{vehicle},
#{vehicleId},
#{status},
#{bookType},
#{bookUser},
......@@ -154,7 +158,7 @@
<select id="getByPage4Month" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord">
select
`id`,
`vehicle`,
`vehicle_id`,
`status`,
`book_type`,
`book_user`,
......@@ -196,7 +200,7 @@
<select id="getByPage" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.pojo.QueryVehicleBookRecordVo">
select
vbr.`id`,
vbr.`vehicle`,
vbr.`vehicle_id`,
vbr.`status`,
vbr.`book_type`,
vbr.`book_user`,
......@@ -236,11 +240,11 @@
vbf.booked_date as bookedDate
from
${tbName} vbr left join
vehicle v on vbr.vehicle = v.id left join
vehicle v on vbr.vehicle_id = v.id left join
branch_company bc on bc.id = v.subordinate_branch left join
branch_company bcl on bcl.id = vbr.lift_company left join
branch_company bcr on bcr.id = vbr.ret_company left join
vehicle_book_info vbf on vbf.vehicle = vbr.vehicle and vbf.year_month = #{selectedMonth}
vehicle_book_info vbf on vbf.vehicle = vbr.vehicle_id and vbf.year_month = #{selectedMonth}
where
1=1
<if test="liftCompany !=null">
......@@ -273,7 +277,7 @@
<select id="getById" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" >
select
vbr.`id`,
vbr.`vehicle`,
vbr.`vehicle_id`,
vbr.`status`,
vbr.`book_type`,
vbr.`book_user`,
......@@ -308,13 +312,71 @@
where id = #{id}
</select>
<select id="getByVehicleId" parameterType="java.lang.String" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" >
select
vbr.`id`,
vbr.`vehicle_id`,
vbr.`status`,
vbr.`book_type`,
vbr.`book_user`,
vbr.`book_user_name`,
vbr.`contact_info`,
vbr.`book_start_date`,
vbr.`book_end_date`,
vbr.`lift_location`,
vbr.`lift_addr`,
vbr.`remark`,
vbr.`create_time`,
vbr.`update_time`,
vbr.`destination`,
vbr.`reviewer_apply`,
vbr.`reviewer_name_apply`,
vbr.`reviewer_return`,
vbr.`reviewer_name_return`,
vbr.`reviewer_cancel`,
vbr.`reviewer_name_cancel`,
vbr.`actual_start_date`,
vbr.`actual_end_date`,
vbr.`reviewer_lift`,
vbr.`reviewer_name_lift`,
vbr.lift_company,
vbr.lift_remark,
vbr.ret_company,
vbr.mileage_lift,
vbr.mileage_ret,
vbr.have_violation,
vbr.ret_remark
from vehicle_book_record vbr
where vehicle_id = #{vehicleId}
</select>
<select id="getByParam" parameterType="java.util.Map" resultMap="getVehicleMap">
select v1.* from vehicle_book_record v1
left join vehicle v2 on v2.id = v1.vehicle_id
<where>
<if test="startTime != null">
and v1.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v2.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v2.status = #{status}
</if>
<if test="subordinateBranch != null">
and v2.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v2.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
order By v1.create_time DESC
</select>
<insert id="createTbIfNotExists" parameterType="java.lang.String">
CREATE TABLE IF NOT EXISTS ${_parameter} (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`vehicle` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '车辆id',
`vehicle_id` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '车辆id',
`status` int(255) NULL DEFAULT NULL COMMENT '申请状态:1-申请中 2-已通过 3-已归还 4-拒绝 5-逾期归还 6-已取消',
`book_type` int(11) NOT NULL COMMENT '预定类型,1-用户租赁、2-内部员工申请 3-维修',
`book_user` int(11) NOT NULL COMMENT '预定用户id',
......@@ -346,7 +408,7 @@
`mileage_ret` int(10) NULL DEFAULT NULL COMMENT '还车里程数',
`have_violation` tinyint(4) NULL DEFAULT NULL COMMENT '是否违章',
PRIMARY KEY (`id`) USING BTREE,
INDEX `i_vehicle`(`vehicle`) USING BTREE,
INDEX `i_vehicle`(`vehicle_id`) USING BTREE,
INDEX `i_book_user`(`book_user`) USING BTREE,
INDEX `i_book_end_date`(`book_end_date`) USING BTREE COMMENT '迁移至历史表时查询用到该索引(暂时)'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '汽车预定记录历史表,按年分表' ROW_FORMAT = Dynamic;
......
......@@ -3,13 +3,21 @@
<mapper namespace="com.xxfc.platform.vehicle.mapper.VehicleMapper">
<resultMap id="searchUsableModelMap" type="com.xxfc.platform.vehicle.pojo.UsableVehicleModelVO">
<!-- <collection column="company_id" property="id" ofType="com.xxfc.platform.vehicle.entity.BranchCompany" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />-->
<!-- <result column="company_id" property="companyId" jdbcType="VARCHAR" javaType="java.lang.Integer"/>-->
<!-- <result column="model_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<!-- <result column="vehicle_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<association property="company" column="company_id" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />
<association property="vehicleModel" column="model_id" select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey" />
<!-- <association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectByPrimaryKey" />-->
<!-- <collection column="company_id" property="id" ofType="com.xxfc.platform.vehicle.entity.BranchCompany" select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey" />-->
<!-- <result column="company_id" property="companyId" jdbcType="VARCHAR" javaType="java.lang.Integer"/>-->
<!-- <result column="model_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<!-- <result column="vehicle_id" property="modelId" jdbcType="INTEGER" javaType="java.lang.Integer"/>-->
<association property="company" column="company_id"
select="com.xxfc.platform.vehicle.mapper.BranchCompanyMapper.selectByPrimaryKey"/>
<association property="vehicleModel" column="model_id"
select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/>
<!-- <association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectByPrimaryKey" />-->
</resultMap>
<resultMap id="searchModel" type="com.xxfc.platform.vehicle.pojo.VehicleAndModelInfoVo">
<association property="vehicleModel" column="model_id"
select="com.xxfc.platform.vehicle.mapper.VehicleModelMapper.selectByPrimaryKey"/>
<association property="vehicleBookRecord" column="id" select="com.xxfc.platform.vehicle.mapper.VehicleBookRecordMapper.getByVehicleId" />
</resultMap>
<update id="updateStatusById" parameterType="java.util.Map">
......@@ -237,6 +245,12 @@
where number_plate = #{numberPlate}
</select>
<select id="selectById" resultMap="searchModel">
select * from vehicle
where id = #{id}
order By create_time DESC
</select>
<update id="updateStatusByIdAndStatus">
update vehicle
set status = #{status}
......@@ -255,7 +269,8 @@
<include refid="searchUsableSql"/>
GROUP BY model_id, company_id<if test="lon != null and lat != null">, distance</if>
GROUP BY model_id, company_id
<if test="lon != null and lat != null">, distance</if>
<!-- 循环 相同父级 数据做并集, 不同父级做或集 -->
<if test=" catas != null ">
......@@ -294,6 +309,131 @@
distance asc
</if>
</select>
<select id="getAllVehicle" parameterType="java.util.Map" resultMap="searchModel">
select *
from vehicle v1
<where>
<if test="startTime != null">
and v1.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v1.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v1.status = #{status}
</if>
<if test="subordinateBranch != null">
and v1.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v1.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
</select>
<select id="countVehicleByParam" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto"
resultType="com.xxfc.platform.vehicle.pojo.VehicleCountVo">
SELECT count(*) total ,
CASE
WHEN travel_status = 1 THEN
'1'
WHEN travel_status = 2 THEN
'2'
WHEN travel_status = 3 THEN
'3'
WHEN travel_status = 4 THEN
'4'
ELSE
'-1'
END travel_status,
CASE
WHEN travel_status = 1 THEN
'出行中'
WHEN travel_status = 2 THEN
'预约中'
WHEN travel_status = 3 THEN
'空闲中'
WHEN travel_status = 4 THEN
'保养中'
ELSE
'不可用'
END detail
from vehicle v1
<where>
<if test="startTime != null">
and v1.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v1.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v1.status = #{status}
</if>
<if test="subordinateBranch != null">
and v1.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v1.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
GROUP BY travel_status
union all
SELECT count(*) total, '0' travel_status, '总数' detail from vehicle v2
<where>
<if test="startTime != null">
and v2.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v2.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v2.status = #{status}
</if>
<if test="subordinateBranch != null">
and v2.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v2.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
union all
SELECT count(*) total,
CASE
WHEN status = 1 THEN
'5'
WHEN status = 2 THEN
'6'
ELSE
'7'
END travel_status,
CASE
WHEN status = 1 THEN
'正常运行'
WHEN status = 2 THEN
'维修'
ELSE
'报废'
END travel_status
FROM vehicle v3
<where>
<if test="startTime != null">
and v3.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v3.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v3.status = #{status}
</if>
<if test="subordinateBranch != null">
and v3.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v3.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
GROUP BY status
</select>
<sql id="searchUsableSql">
from vehicle v
......@@ -312,7 +452,8 @@
<foreach collection="yearMonthAndParam" index="yearMonth" item="andOperation">
and
( (vbi.`year_month` = #{yearMonth} or vbi.`year_month` is null) and
ifnull(vbi.`booked_date`,0) &amp; #{andOperation.andOperationFactor} = #{andOperation.andOperationRs}
ifnull(vbi.`booked_date`,0) &amp; #{andOperation.andOperationFactor} =
#{andOperation.andOperationRs}
)
</foreach>
</if>
......
......@@ -20,8 +20,35 @@
</select>
<select id="getMsgByVehicle" parameterType="String" resultType="com.xxfc.platform.vehicle.entity.VehicleWarningMsg" >
select id, type, status, msg, rule_id, msg_key, vehicle_id, create_time, update_time, remark from vehicle_warning_msg where vehicle_id = #{_parameter}
<select id="getMsgByVehicle" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleWarningMsg" >
select id, type, status, msg, rule_id, msg_key, vehicle_id, create_time, update_time, remark from vehicle_warning_msg
where vehicle_id = #{_parameter}
</select>
<select id="getAllByparam" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto" resultType="com.xxfc.platform.vehicle.entity.VehicleWarningMsg" >
select w.*
from vehicle_warning_msg w
left join vehicle v on w.vehicle_id = v.id
<where>
<if test="vehicleId != null">
and w.vehicle_id = #{vehicleId}
</if>
<if test="startTime != null">
and w.create_time between #{startTime} and #{endTime}
</if>
<if test="numberPlate != null">
and v.number_plate = #{numberPlate}
</if>
<if test="status != null">
and v.status = #{status}
</if>
<if test="subordinateBranch != null">
and v.subordinate_branch = #{subordinateBranch}
</if>
<if test="parkBranchCompanyId != null">
and v.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where>
</select>
......
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