Commit cdb93b3e authored by libin's avatar libin

Merge remote-tracking branch 'origin/master'

parents 99e96cbc 26ce1f83
...@@ -10,7 +10,7 @@ ace-modules/ace-tool/src/main/resources/application-dev.yml ...@@ -10,7 +10,7 @@ ace-modules/ace-tool/src/main/resources/application-dev.yml
**/src/test **/src/test
**/logs **/logs
xx-order/xx-order-server/logs/** xx-order/xx-order-server/logs/**
xx-order/xx-order-server/src/test/java/** xx-order/xx-order-server/src/test/**
*.log *.log
logs/** logs/**
/src/main/test/** /src/main/test/**
......
...@@ -36,4 +36,11 @@ public class UserMemberSaveDTO { ...@@ -36,4 +36,11 @@ public class UserMemberSaveDTO {
*/ */
@ApiModelProperty(value = "剩余天数") @ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays; private Integer rentFreeDays;
/**
* 剩余天数
*/
@ApiModelProperty(value = "剩余天数")
private Integer source;
} }
package com.github.wxiaoqi.security.admin.entity; package com.github.wxiaoqi.security.admin.entity;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Table; import javax.persistence.Table;
...@@ -20,6 +17,7 @@ import java.io.Serializable; ...@@ -20,6 +17,7 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Table(name = "base_user_member_export") @Table(name = "base_user_member_export")
@ToString
public class BaseUserMemberExport implements Serializable { public class BaseUserMemberExport implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Integer id; private Integer id;
...@@ -42,5 +40,12 @@ public class BaseUserMemberExport implements Serializable { ...@@ -42,5 +40,12 @@ public class BaseUserMemberExport implements Serializable {
private Integer crtId; private Integer crtId;
@Column(name = "member_name") @Column(name = "member_name")
private String memberName; private String memberName;
@Column(name = "before_membe_level")
private Integer beforeMemberLevel;
@Column(name = "before_discount")
private Integer beforeDiscount;
@Column(name = "source")
private Integer source;
} }
...@@ -4,18 +4,20 @@ import com.ace.cache.annotation.Cache; ...@@ -4,18 +4,20 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.UserMemberVo; import com.github.wxiaoqi.security.admin.vo.UserMemberVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
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.beanutils.BeanUtilsBean;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
...@@ -23,12 +25,14 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -23,12 +25,14 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* 用户会员表 * 用户会员表
...@@ -43,11 +47,25 @@ import java.util.List; ...@@ -43,11 +47,25 @@ import java.util.List;
public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMember> { public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMember> {
@Autowired @Autowired
AppUserDetailBiz detailBiz; private AppUserDetailBiz detailBiz;
@Autowired @Autowired
private BaseUserMemberLevelMapper BaseUserMemberLevelMapper; private BaseUserMemberLevelMapper BaseUserMemberLevelMapper;
private ExecutorService executorService = Executors.newCachedThreadPool();
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@Autowired
private BaseUserMemberExportBiz baseUserMemberExportBiz;
@Autowired
private HttpServletRequest request;
// @Autowired // @Autowired
// private TaskExecutor taskExecutor; // private TaskExecutor taskExecutor;
// //
...@@ -224,7 +242,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -224,7 +242,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
* @param userMemberDTO * @param userMemberDTO
*/ */
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void UpdateUserMember(UserMemberDTO userMemberDTO) throws InvocationTargetException, IllegalAccessException { public void UpdateUserMember(UserMemberDTO userMemberDTO) throws Exception {
Integer userId = userMemberDTO.getUserId(); Integer userId = userMemberDTO.getUserId();
BaseUserMember baseUserMember = new BaseUserMember(); BaseUserMember baseUserMember = new BaseUserMember();
...@@ -234,7 +252,6 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -234,7 +252,6 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
if (totalNumber < freeDays) { if (totalNumber < freeDays) {
freeDays = totalNumber; freeDays = totalNumber;
} }
if (userMemberDTO.getMemberLevel() != null) { if (userMemberDTO.getMemberLevel() != null) {
Example exa = new Example(BaseUserMemberLevel.class); Example exa = new Example(BaseUserMemberLevel.class);
Example.Criteria criteria = exa.createCriteria(); Example.Criteria criteria = exa.createCriteria();
...@@ -254,6 +271,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -254,6 +271,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
Integer buyCount = userMemberDTO.getBuyCount() == null ? 1 : userMemberDTO.getBuyCount(); Integer buyCount = userMemberDTO.getBuyCount() == null ? 1 : userMemberDTO.getBuyCount();
UserMemberVo userMemberVo = getMemberInfoByUserId(userMemberDTO.getUserId()); UserMemberVo userMemberVo = getMemberInfoByUserId(userMemberDTO.getUserId());
//保存修改记录
if (userMemberVo == null) { if (userMemberVo == null) {
baseUserMember.setRentFreeDays(freeDays); baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setBuyCount(buyCount); baseUserMember.setBuyCount(buyCount);
...@@ -277,6 +295,10 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -277,6 +295,10 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
userVo1.setIsMember(1); userVo1.setIsMember(1);
detailBiz.updUuserInfoById(userVo1); detailBiz.updUuserInfoById(userVo1);
} }
log.info("保存修改记录");
setModifyData(userMemberVo,baseUserMember);
log.info("保存成功");
} }
...@@ -286,4 +308,36 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem ...@@ -286,4 +308,36 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
criteria.andIn("userId", userIds); criteria.andIn("userId", userIds);
mapper.deleteByExample(example); mapper.deleteByExample(example);
} }
private void setModifyData(UserMemberVo beforeMember, BaseUserMember aftereMember) throws Exception {
log.info("保存修改会员记录={}",aftereMember);
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
executorService.submit(()->{
try {
AppUserVo qppUser = detailBiz.getUserInfoById(beforeMember.getUserId());
BaseUserMemberExport baseUserMemberExport = BaseUserMemberExport
.builder()
.username(qppUser.getUsername())
.beforeMemberLevel(beforeMember.getMemberLevel())
.memberLevel(aftereMember.getMemberLevel())
.totalNumber(aftereMember.getTotalNumber() - beforeMember.getTotalNumber())
.rentFreeDays(aftereMember.getRentFreeDays() - beforeMember.getRentFreeDays())
.beforeDiscount(beforeMember.getDiscount())
.discount(aftereMember.getDiscount())
.status(1)
.crtTime(System.currentTimeMillis())
.crtId(Integer.valueOf(infoFromToken.getId()))
.crtName(infoFromToken.getUniqueName())
.memberName(qppUser.getRealname())
.source(1)
.build();
baseUserMemberExportBiz.insertSelective(baseUserMemberExport);
System.out.println(baseUserMemberExport);
} catch (Exception e) {
e.printStackTrace();
log.error("保存修改会员记录失败"+e.getMessage());
}
log.info("保存修改会员记录成功");
});
}
} }
\ No newline at end of file
...@@ -52,6 +52,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -52,6 +52,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
private ThreadPoolTaskExecutor threadPoolTaskExecutor; private ThreadPoolTaskExecutor threadPoolTaskExecutor;
private final int BORDER_NUM=250; private final int BORDER_NUM=250;
private BaseUserMemberExport baseUserMemberExport;
public void saveUserMember(UserMemberSaveDTO userMemberSaveDTO, Integer userId, String name) { public void saveUserMember(UserMemberSaveDTO userMemberSaveDTO, Integer userId, String name) {
...@@ -256,4 +257,9 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -256,4 +257,9 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
public void updateUserMemberExportDataStatus(Integer id) { public void updateUserMemberExportDataStatus(Integer id) {
mapper.updateUserMemberExportDataStatusById(id, 1); mapper.updateUserMemberExportDataStatusById(id, 1);
} }
@Override
public void insertSelective(BaseUserMemberExport baseUserMemberExport){
mapper.insertSelective(baseUserMemberExport);
}
} }
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.mapper; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
...@@ -13,6 +14,7 @@ import java.util.List; ...@@ -13,6 +14,7 @@ import java.util.List;
* @email nishijjo@qq.com * @email nishijjo@qq.com
* @date 2019-06-11 11:06:45 * @date 2019-06-11 11:06:45
*/ */
@Repository
public interface BaseUserMemberLevelMapper extends Mapper<BaseUserMemberLevel> { public interface BaseUserMemberLevelMapper extends Mapper<BaseUserMemberLevel> {
List<BaseUserMemberLevel> selectUserMembersLevelByLevels(@Param("levels") List<Integer> levels); List<BaseUserMemberLevel> selectUserMembersLevelByLevels(@Param("levels") List<Integer> levels);
......
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
</update> </update>
<select id="findExportDataPage" resultType="com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO"> <select id="findExportDataPage" resultType="com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO">
select `id`,`member_level` as `memberLevel`,`member_name` as `memberName`,`rent_free_days` as `rentFreeDays`,`total_number` as `totalNumber`,`username`,`status`,`crt_name` as `crtName`,`crt_time`as `crtTime` from `base_user_member_export` where `is_del`=0 select `id`,`member_level` as `memberLevel`,`member_name` as `memberName`,`rent_free_days` as `rentFreeDays`,`total_number` as `totalNumber`,`username`,`status`,`crt_name` as `crtName`,`crt_time`as `crtTime` from `base_user_member_export`
where `is_del`=0 and source = 0
<if test="username != null and username != ''"> <if test="username != null and username != ''">
and `username`=#{username} and `username`=#{username}
</if> </if>
......
...@@ -297,6 +297,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -297,6 +297,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
orderPageVo.setIllegalReserve(illegalReserve); orderPageVo.setIllegalReserve(illegalReserve);
orderPageVo.setItems(orderItemBiz.selectList(new OrderItem(){{ orderPageVo.setItems(orderItemBiz.selectList(new OrderItem(){{
setOrderId(orderPageVo.getId()); setOrderId(orderPageVo.getId());
setType(104);
}})); }}));
return ObjectRestResponse.succ(orderPageVo); return ObjectRestResponse.succ(orderPageVo);
} }
......
...@@ -113,6 +113,13 @@ public class BackStageOrderController extends CommonBaseController implements Us ...@@ -113,6 +113,13 @@ public class BackStageOrderController extends CommonBaseController implements Us
return ObjectRestResponse.succ(new PageDataVO<>()); return ObjectRestResponse.succ(new PageDataVO<>());
} }
//车辆排班表查询订单详情
if (dto.getOneNo()!=null) {
dto.setPage(1);
dto.setLimit(1);
dto.setType(1);
}
if (StringUtils.isNotBlank(dto.getPhone()) || StringUtils.isNotBlank(dto.getRealName())) { if (StringUtils.isNotBlank(dto.getPhone()) || StringUtils.isNotBlank(dto.getRealName())) {
List<AppUserLogin> appUserLoins = userFeign.getOne(dto.getPhone(), dto.getRealName()); List<AppUserLogin> appUserLoins = userFeign.getOne(dto.getPhone(), dto.getRealName());
if (CollectionUtil.isNotEmpty(appUserLoins)) { if (CollectionUtil.isNotEmpty(appUserLoins)) {
......
...@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.order.VehicleItemDTO; ...@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.order.VehicleItemDTO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO; import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.AccompanyingItemType; import com.xxfc.platform.vehicle.constant.AccompanyingItemType;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
...@@ -143,75 +144,138 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -143,75 +144,138 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//设置订单名称 //设置订单名称
bo.getOrder().setName(bo.getVehicleModel().getName()); bo.getOrder().setName(bo.getVehicleModel().getName());
//是否有使用会员权益 则调用接口触发新增消费记录次数 //分布式事务执行标记
//扣减免费天数 Integer cloudTransact = 0;
if(SYS_TRUE.equals(bo.getOrder().getHasMemberRight())) {
if(null == bo.getFreeDays()) {
bo.setFreeDays(0);
}
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), UserFeign.MEMBER_DAYS_LOCK);
if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
OrderItem vehicleModelItem = bo.getItemByTypeEnum(ItemTypeEnum.VEHICLE_MODEL);
BigDecimal amount = vehicleModelItem.getTotalAmount();
//如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), Convert.toList(String.class, bo.getOrder().getCouponTickerNos()), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
}
//插入随声物品item try{
List<OrderAccompanyDTO> oads = new ArrayList<OrderAccompanyDTO>(); //插入随声物品item
List<AccompanyingItemVo> accompanyingItemList = vehicleFeign.listAccompanyingItem().getData(); List<OrderAccompanyDTO> oads = new ArrayList<OrderAccompanyDTO>();
List<AccompanyingItemVo> accompanyingItemList = vehicleFeign.listAccompanyingItem().getData();
// Map<String, AccompanyingItemVo> accompanyingItemMap = vehicleFeign.listAccompanyingItem().getData() // Map<String, AccompanyingItemVo> accompanyingItemMap = vehicleFeign.listAccompanyingItem().getData()
// .parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en)); // .parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
if(null == bo.getAccompanyItems()) { if(null == bo.getAccompanyItems()) {
bo.setAccompanyItems(new ArrayList<OrderAccompanyDTO>()); bo.setAccompanyItems(new ArrayList<OrderAccompanyDTO>());
} }
Map<String, OrderAccompanyDTO> orderAccompanyDTOMap = bo.getAccompanyItems() Map<String, OrderAccompanyDTO> orderAccompanyDTOMap = bo.getAccompanyItems()
.parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en)); .parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
for(AccompanyingItemVo aiv : accompanyingItemList) { for(AccompanyingItemVo aiv : accompanyingItemList) {
if(AccompanyingItemType.TOOL.getCode().equals(aiv.getType()) if(AccompanyingItemType.TOOL.getCode().equals(aiv.getType())
|| AccompanyingItemType.EQUIPMENT.getCode().equals(aiv.getType())) { || AccompanyingItemType.EQUIPMENT.getCode().equals(aiv.getType())) {
OrderAccompanyDTO orderAccompanyDTO = BeanUtil.toBean(aiv, OrderAccompanyDTO.class); OrderAccompanyDTO orderAccompanyDTO = BeanUtil.toBean(aiv, OrderAccompanyDTO.class);
orderAccompanyDTO.setUnitPrice(aiv.getPrice());
orderAccompanyDTO.setNum(aiv.getNumber());
oads.add(orderAccompanyDTO);
}else {
OrderAccompanyDTO orderAccompanyDTO = orderAccompanyDTOMap.get(aiv.getId().toString());
if(null != orderAccompanyDTO) {
BeanUtil.copyProperties(aiv, orderAccompanyDTO);
orderAccompanyDTO.setUnitPrice(aiv.getPrice()); orderAccompanyDTO.setUnitPrice(aiv.getPrice());
orderAccompanyDTO.setNum(aiv.getNumber());
oads.add(orderAccompanyDTO); oads.add(orderAccompanyDTO);
}else {
OrderAccompanyDTO orderAccompanyDTO = orderAccompanyDTOMap.get(aiv.getId().toString());
if(null != orderAccompanyDTO) {
BeanUtil.copyProperties(aiv, orderAccompanyDTO);
orderAccompanyDTO.setUnitPrice(aiv.getPrice());
oads.add(orderAccompanyDTO);
}
} }
} }
} bo.setAccompanyItems(oads);
bo.setAccompanyItems(oads);
//获取可用车辆 //获取可用车辆
acquireVehicle(bo, null, null); acquireVehicle(bo, null, null);
cloudTransact = 1;
OrderItem accompanyItem = orderItemBiz.initOrderItem(BigDecimal.ZERO, 1, "随车物品", null, ACCOMPANY); //添加随声物品项
accompanyItem.setRealAmount(BigDecimal.ZERO); OrderItem accompanyItem = orderItemBiz.initOrderItem(BigDecimal.ZERO, 1, "随车物品", null, ACCOMPANY);
accompanyItem.setDetail(JSONUtil.toJsonStr(bo.getAccompanyItems())); accompanyItem.setRealAmount(BigDecimal.ZERO);
accompanyItem.setOrderId(bo.getOrder().getId()); accompanyItem.setDetail(JSONUtil.toJsonStr(bo.getAccompanyItems()));
orderItemBiz.insertSelective(accompanyItem); accompanyItem.setOrderId(bo.getOrder().getId());
orderItemBiz.insertSelective(accompanyItem);
//是否有使用会员权益 则调用接口触发新增消费记录次数
//扣减免费天数
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_LOCK);
cloudTransact = 2;
//设置后台系统创建人 OrderItem vehicleModelItem = bo.getItemByTypeEnum(ItemTypeEnum.VEHICLE_MODEL);
if(StrUtil.isNotBlank(bo.getCrtUser())) { BigDecimal amount = vehicleModelItem.getTotalAmount();
bo.getOrder().setCrtUser(bo.getCrtUser());
//如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), Convert.toList(String.class, bo.getOrder().getCouponTickerNos()), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
}
cloudTransact = 3;
//设置后台系统创建人
if(StrUtil.isNotBlank(bo.getCrtUser())) {
bo.getOrder().setCrtUser(bo.getCrtUser());
}
super.handleDetail(bo);
}catch (Exception e) {
//事务补偿处理
log.error("cloudTransact : {}", cloudTransact);
RestResponse<Integer> restResponse;
try {
//判断分布式事务执行到哪里
switch (cloudTransact) {
case 1 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
break;
case 2 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_WITHDRAW);
break;
case 3 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
//退还天数
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_WITHDRAW);
//退还优惠券
for(String backCoupon : Convert.toList(String.class, bo.getOrder().getCouponTickerNos())) {
activityFeign.cancelUse(backCoupon);
}
break;
default:
break;
}
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
} finally {
throw e;
}
} }
super.handleDetail(bo);
//发送定时取消订单(数据字典设置--5分钟) //发送定时取消订单(数据字典设置--5分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime); rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime);
} }
private void useOrBackFreeDays(RentVehicleBO bo, int memberDaysWithdraw) {
//退还天数
if (SYS_TRUE.equals(bo.getOrder().getHasMemberRight())) {
if (null == bo.getFreeDays()) {
bo.setFreeDays(0);
}
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), memberDaysWithdraw);
if (result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}
private void errorRejectVehicle(RentVehicleBO bo) {
//取消车辆预定
//未支付,拒绝之前的预约
RestResponse<Integer> restResponse = vehicleFeign.rentRejectVehicleBooking(bo.getBookRecordId());
log.info("下单失败,拒绝预约{}, 结果: {}", bo.getBookRecordId(), restResponse.toString());
}
@Override @Override
public void handleCalculate(RentVehicleBO bo) { public void handleCalculate(RentVehicleBO bo) {
RentVehiclePriceVO rvpv = calculatePrice(bo); RentVehiclePriceVO rvpv = calculatePrice(bo);
......
...@@ -67,7 +67,7 @@ public class ServiceTest { ...@@ -67,7 +67,7 @@ public class ServiceTest {
@Test @Test
public void test4(){ public void test4(){
HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(null); HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(null,null);
System.out.println(totalOrder); System.out.println(totalOrder);
} }
......
...@@ -99,6 +99,12 @@ ...@@ -99,6 +99,12 @@
<version>0.2</version> <version>0.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-app-api</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -8,6 +8,8 @@ import com.github.wxiaoqi.security.common.constant.RestCode; ...@@ -8,6 +8,8 @@ import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.app.entity.Cofig;
import com.xxfc.platform.app.feign.ConfigFeign;
import com.xxfc.platform.universal.biz.UserMessage; import com.xxfc.platform.universal.biz.UserMessage;
import com.xxfc.platform.universal.entity.IDCardInformation; import com.xxfc.platform.universal.entity.IDCardInformation;
import com.xxfc.platform.universal.entity.IdInformation; import com.xxfc.platform.universal.entity.IdInformation;
...@@ -16,6 +18,8 @@ import com.xxfc.platform.universal.service.PictureParsing.UserPictureParsing; ...@@ -16,6 +18,8 @@ import com.xxfc.platform.universal.service.PictureParsing.UserPictureParsing;
import com.xxfc.platform.universal.service.authenticationInterface.UserAuthentication; import com.xxfc.platform.universal.service.authenticationInterface.UserAuthentication;
import com.xxfc.platform.universal.utils.CertifHttpUtils; import com.xxfc.platform.universal.utils.CertifHttpUtils;
import com.xxfc.platform.universal.utils.Validation; import com.xxfc.platform.universal.utils.Validation;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.collections4.map.HashedMap;
...@@ -44,14 +48,22 @@ import java.util.*; ...@@ -44,14 +48,22 @@ import java.util.*;
*/ */
@Service @Service
@Slf4j @Slf4j
@AllArgsConstructor
@NoArgsConstructor
public class CertificationService { public class CertificationService {
@Value("${certification.frequency:2}")
private Integer FREQUENCY;
@Autowired
private ConfigFeign configFeign;
@Autowired @Autowired
private UserAuthentication authentication; private UserAuthentication authentication;
@Autowired @Autowired
private IdInformationMapper idInformationMapper; private IdInformationMapper idInformationMapper;
@Autowired @Autowired
private UserFeign userFeign; private UserFeign userFeign;
...@@ -61,8 +73,12 @@ public class CertificationService { ...@@ -61,8 +73,12 @@ public class CertificationService {
@Autowired @Autowired
private UserPictureParsing userPictureParsing; private UserPictureParsing userPictureParsing;
private String AUTHENTICATION_TYPE="100";
/** /**
* 一、身份证图片进行实名认证 * 一、身份证图片进行实名认证
*
* @param idInformation * @param idInformation
* @return * @return
*/ */
...@@ -75,14 +91,14 @@ public class CertificationService { ...@@ -75,14 +91,14 @@ public class CertificationService {
} }
//判断是否有填写身份证号 //判断是否有填写身份证号
if (StringUtils.isBlank(idInformation.getIdNumber())) { if (StringUtils.isBlank(idInformation.getIdNumber())) {
return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA, "填写证件号"); return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA, "填写证件号");
} }
if (!Validation.isIdCard(idInformation.getIdNumber())) { if (!Validation.isIdCard(idInformation.getIdNumber())) {
return ObjectRestResponse.createFailedResult(ResultCode.WRONG_FORMAT_OF_ID_CARD, "填写的证件格式错误"); return ObjectRestResponse.createFailedResult(ResultCode.WRONG_FORMAT_OF_ID_CARD, "证件格式错误");
} }
//判断是有否填写名字 //判断是有否填写名字
if (StringUtils.isBlank(idInformation.getName())) { if (StringUtils.isBlank(idInformation.getName())) {
return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA, "填写姓名"); return ObjectRestResponse.createFailedResult(ResultCode.INCOMPLETE_DATA, "填写姓名");
} }
//判断是否有正面照片 //判断是否有正面照片
if (StringUtils.isBlank(idInformation.getFrontUrl())) { if (StringUtils.isBlank(idInformation.getFrontUrl())) {
...@@ -97,11 +113,20 @@ public class CertificationService { ...@@ -97,11 +113,20 @@ public class CertificationService {
//验证证件信息是否和填入的客户信息一致 //验证证件信息是否和填入的客户信息一致
String name = credentialsData.getName(); String name = credentialsData.getName();
String number = credentialsData.getCode(); String number = credentialsData.getCode();
if (idInformation.getName().equals(name)) { if (!idInformation.getName().replaceAll(" ","").equals(name)) {
ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "姓名不一致"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "姓名不一致");
}
if (!idInformation.getIdNumber().replaceAll(" ","").equals(number)) {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "证件号不一致");
} }
if (idInformation.getIdNumber().equals(number)) { //判断是否超过认证次数
ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "证件号不一致"); Example exa = new Example(IdInformation.class);
exa.createCriteria().andEqualTo("idNumber", number);
List<IdInformation> idInformatics = idInformationMapper.selectByExample(exa);
if (CollectionUtils.isNotEmpty(idInformatics) && idInformatics.size() >getCofig() ) {
log.error("该身份证已超过最大认证次数");
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "该身份证已超过最大认证次数");
} }
//3.验证 //3.验证
boolean result = authentication.certificate(new UserMessage() {{ boolean result = authentication.certificate(new UserMessage() {{
...@@ -150,6 +175,25 @@ public class CertificationService { ...@@ -150,6 +175,25 @@ public class CertificationService {
} }
/**
* 获取认证次数
* @return
*/
public Integer getCofig() {
List<Cofig> cofigs = null;
try {
cofigs = configFeign.getAllByType(AUTHENTICATION_TYPE).getData();
log.info("cofigs={}",cofigs);
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
if (CollectionUtils.isEmpty(cofigs)) {
return FREQUENCY;
}
return Integer.valueOf(cofigs.get(0).getParams());
}
/** /**
* 二、认证通过保存到数据库当中 * 二、认证通过保存到数据库当中
* *
...@@ -159,23 +203,12 @@ public class CertificationService { ...@@ -159,23 +203,12 @@ public class CertificationService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ObjectRestResponse<Integer> addIdInformation(IdInformation idInformation) { public ObjectRestResponse<Integer> addIdInformation(IdInformation idInformation) {
log.info("----idInformation=========" + idInformation); log.info("----idInformation=========" + idInformation);
//保存认证信息 //保存认证信息
try { try {
Example exa = new Example(IdInformation.class); idInformationMapper.insertSelective(idInformation);
Example.Criteria criteria = exa.createCriteria();
criteria.andEqualTo("idNumber", idInformation.getIdNumber());
List<IdInformation> idInformatics = idInformationMapper.selectByExample(exa);
if (CollectionUtils.isEmpty(idInformatics)) {
idInformation.setCrtTime(new Date());
idInformationMapper.insertSelective(idInformation);
} else {
log.error("该身份证已存在,不要重复认证");
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "该身份证已存在,不要重复认证");
}
log.info("----addIdInformation---userid===" + idInformation.getUserLoginId() + "----name====" + idInformation.getName() + "---IdNumber===" + idInformation.getIdNumber()); log.info("----addIdInformation---userid===" + idInformation.getUserLoginId() + "----name====" + idInformation.getName() + "---IdNumber===" + idInformation.getIdNumber());
//认证成功后修改用户,用户认证状态 //认证成功后修改用户,用户认证状态
ObjectRestResponse authentication = userFeign.authentication(idInformation.getUserLoginId(), idInformation.getName(), idInformation.getIdNumber(), 1); userFeign.authentication(idInformation.getUserLoginId(), idInformation.getName(), idInformation.getIdNumber(), 1);
return ObjectRestResponse.succ(idInformation.getId()); return ObjectRestResponse.succ(idInformation.getId());
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
......
...@@ -151,4 +151,19 @@ public class AddOrUpdateVehicleVo { ...@@ -151,4 +151,19 @@ public class AddOrUpdateVehicleVo {
* 车辆状态 * 车辆状态
*/ */
private Integer travelStatus; private Integer travelStatus;
/**
* 终端号
*/
private String terminalNumber;
/**
* SIM卡号
*/
private String simNumber;
/**
* 通讯类型
*/
private String communicationType;
} }
\ No newline at end of file
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</if> </if>
</where> </where>
GROUP BY c.id GROUP BY c.id
ORDER BY c.company_id ORDER BY c.company_id, c.count_date
</select> </select>
<select id="countByMonth" resultType="com.xxfc.platform.vehicle.pojo.BranchCompanyVehicleCountVo" parameterType="Map"> <select id="countByMonth" resultType="com.xxfc.platform.vehicle.pojo.BranchCompanyVehicleCountVo" parameterType="Map">
......
...@@ -534,7 +534,7 @@ ...@@ -534,7 +534,7 @@
and book_end_date &gt;= now() and book_end_date &gt;= now()
</if> </if>
<!--增加时间限制,已审核的未出车小于当前时间的不显示, 已出车的结束时间延后两天小于当前时间的不显示--> <!--增加时间限制,已审核的未出车小于当前时间的不显示, 已出车的结束时间延后两天小于当前时间的不显示-->
<if test="flag == true and status == 2"> <if test="flag == true and (status == 3 or status == 5 or status == 2)">
and ( (v4.id IS NOT NULL and DATE_ADD(v1.book_end_date,INTERVAL '2' DAY) >= now()) OR (v4.id IS NULL AND v1.book_end_date &gt;= now())) and ( (v4.id IS NOT NULL and DATE_ADD(v1.book_end_date,INTERVAL '2' DAY) >= now()) OR (v4.id IS NULL AND v1.book_end_date &gt;= now()))
</if> </if>
<if test="flag == true"> <if test="flag == true">
...@@ -542,7 +542,7 @@ ...@@ -542,7 +542,7 @@
</if> </if>
</where> </where>
group by v1.id group by v1.id
order by create_time DESC order by v1.book_start_date DESC
</select> </select>
<select id="selectAllBookRecord" resultMap="searchBookRecord" parameterType="Map"> <select id="selectAllBookRecord" resultMap="searchBookRecord" parameterType="Map">
......
...@@ -4,14 +4,16 @@ ...@@ -4,14 +4,16 @@
<select id="findVehicleModelPage" parameterType="com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition" <select id="findVehicleModelPage" parameterType="com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition"
resultType="com.xxfc.platform.vehicle.pojo.VehicleModelVo"> resultType="com.xxfc.platform.vehicle.pojo.VehicleModelVo">
SELECT * from SELECT * from
(select vm.*,v.sum,v2.leasableQuantity,vpc.`name` brandName,vpc2.name numberName from vehicle_model vm left JOIN (select vm.*,v.sum,v2.leasableQuantity,vpc.`name` brandName,vpc2.name numberName from vehicle_model vm
(select model_id as mid, count(1) as sum FROM vehicle GROUP BY mid) v left JOIN
on vm.id=v.mid left JOIN (select model_id as mid, count(1) as sum FROM vehicle where is_del= 0 GROUP BY mid) v
(select model_id as mid2, count(1) as leasableQuantity FROM vehicle where`use_type`=1 GROUP BY model_id) v2 on vm.id=v.mid
left JOIN
(select model_id as mid2, count(1) as leasableQuantity FROM vehicle where`use_type`=1 and is_del= 0 GROUP BY model_id) v2
on v.mid=v2.mid2 on v.mid=v2.mid2
left join (SELECT id,name FROM vehicle_plat_cata where state=0) vpc on vm.brand=vpc.id left join (SELECT id,name FROM vehicle_plat_cata where state=0) vpc on vm.brand=vpc.id
left join (SELECT id,name FROM vehicle_plat_cata where state=0) vpc2 on vm.number=vpc2.id left join (SELECT id,name FROM vehicle_plat_cata where state=0) vpc2 on vm.number=vpc2.id
where isdel = 0 where vm.isdel = 0
) vmqc WHERE 1=1 ) vmqc WHERE 1=1
<if test="isDel !=null "> <if test="isDel !=null ">
......
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