Commit 373a75da authored by hezhen's avatar hezhen

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

parents b0eb42d0 9c215c17
......@@ -32,7 +32,6 @@ import java.lang.reflect.Parameter;
*/
@Aspect
@Component
@ComponentScan("com.xxfc.platform")
@ConditionalOnClass(value = UserFeign.class)
public class TokenAop {
......
......@@ -21,7 +21,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableDiscoveryClient
@EnableCircuitBreaker
@SpringBootApplication
@EnableFeignClients({"com.github.wxiaoqi.security","com.xxfc.platform"})
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign","com.xxfc.platform","com.github.wxiaoqi.security.admin.feign"})
//@EnableFeignClients({"com.github.wxiaoqi.security","com.xxfc.platform"})
@EnableScheduling
@EnableAceAuthClient
@EnableAceCache
......
......@@ -3,6 +3,7 @@ package com.xinxincaravan.caravan.vehicle.biz;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.entity.Vehicle;
import com.xinxincaravan.caravan.vehicle.entity.VehicleDepartureLog;
......@@ -61,4 +62,5 @@ public class VehicleDepartureService {
statisticData.setDepartureMileage(vehicleDepartureLogMapper.selectMileageByVehicleId(vehicle.getId()));
return statisticData;
}
}
......@@ -2,12 +2,15 @@ package com.xinxincaravan.caravan.vehicle.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xinxincaravan.caravan.vehicle.biz.VehicleBiz;
import com.xinxincaravan.caravan.vehicle.biz.VehicleDepartureService;
import com.xinxincaravan.caravan.vehicle.common.RestResponse;
import com.xinxincaravan.caravan.vehicle.constant.ResCode.ResCode;
import com.xinxincaravan.caravan.vehicle.entity.VehicleDepartureLog;
import com.xinxincaravan.caravan.vehicle.feign.UserFeign;
import com.xinxincaravan.caravan.vehicle.feign.dto.UserDTO;
import com.xinxincaravan.caravan.vehicle.vo.VehicleDepartureStatisticDataVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -17,6 +20,9 @@ import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* 车辆出行状态
*/
@IgnoreClientToken
@RestController
@RequestMapping("departure")
......@@ -33,6 +39,7 @@ public class VehicleDepartureController {
@Autowired
private UserAuthConfig userAuthConfig;
@GetMapping("page")
public RestResponse page(String numberPlate, Integer page, Integer limit, HttpServletRequest request) {
if (page == null || limit == null) {
......@@ -70,6 +77,4 @@ public class VehicleDepartureController {
}
return RestResponse.suc(vehicleDepartureService.statistic(numberPlate));
}
}
package com.xxfc.platform.campsite.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Table;
import java.io.Serializable;
/**
* 店铺类型表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_tag")
@ApiModel(value = "店铺类型dto")
public class CampsiteTagListDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键id")
private Integer id;
/**
* 名称
*/
@ApiModelProperty(value = "名称")
private String name;
}
......@@ -28,6 +28,18 @@ public class CampsiteShopDetailVo {
@ApiModelProperty("店铺名称")
private String name;
/**
* 地址-省/直辖市(名称)
*/
@ApiModelProperty("地址-省/直辖市(名称)")
private String provinceName;
/**
* 地址-市(名称)
*/
@ApiModelProperty("地址-市(名称)")
private String cityName;
/**
* 具体地址
*/
......@@ -57,7 +69,20 @@ public class CampsiteShopDetailVo {
*
*/
@ApiModelProperty("类型列表")
private String typeNames;
private List<String> typeNames;
/**
* 经度
*/
@ApiModelProperty(value = "经度")
private Double longitude;
/**
* 纬度
*/
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
*轮播图列表
......
package com.xxfc.platform.campsite.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Table;
import java.io.Serializable;
/**
* 店铺类型表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_tag")
@ApiModel(value = "店铺类型vo")
public class CampsiteTagListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键id")
private Integer id;
/**
* 名称
*/
@ApiModelProperty(value = "名称")
private String name;
}
......@@ -64,7 +64,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
return campsiteShopPageDataVO;
}
if (log.isDebugEnabled()){
log.debug("根据type=[{}]查询到的店铺数据:[{}]",type,campsiteShopPageDTOS);
log.debug("根据type=【{}】查询到的店铺数据:【{}】",type,campsiteShopPageDTOS);
}
List<CampsiteShopPageVo> campsiteShopPageVoList = new ArrayList<>();
for (CampsiteShopPageDTO campsiteShopPageDTO : campsiteShopPageDTOS) {
......@@ -88,13 +88,13 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
//从店铺表根据店铺id查询
CampsiteShopDetailDTO campsiteShopDetailDTO = mapper.findCampsiteShopDetailById(id);
if (log.isDebugEnabled()){
log.debug("根据店铺id=[{}]查询出店铺信息[{}]",id,campsiteShopDetailDTO);
log.debug("根据店铺id=【{}】查询出店铺信息【{}】",id,campsiteShopDetailDTO);
}
BeanUtils.copyProperties(campsiteShopDetailDTO,campsiteShopDetailVo);
//从轮播表根据店铺id查询
List<CampsiteShopCarouselDetailDTO> campsiteShopCarouselDTOS = campsiteShopCarouselBiz.findByCampsiteShopId(id);
if (log.isDebugEnabled()){
log.debug("根据店铺id=[{}]查询出店铺轮播图信息:[{}]",id,campsiteShopCarouselDTOS);
log.debug("根据店铺id=【{}】查询出店铺轮播图信息:【{}】",id,campsiteShopCarouselDTOS);
}
List<CampsiteShopCarouselDetailVo> campsiteShopCarouselDetailVos = new ArrayList<>();
campsiteShopCarouselDTOS.forEach(campsiteShopCarouselDetailDTO -> {
......@@ -106,15 +106,13 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
//从店铺类型表根据店铺id查询 -->类型列表拼接
List<String> typeNameList = campsiteShopTagBiz.findByCampsiteShopId(id);
if (log.isDebugEnabled()){
log.debug("根据店铺id=[{}]查询出店铺类型:[{}]",id,typeNameList);
log.debug("根据店铺id=【{}】查询出店铺类型:【{}】",id,typeNameList);
}
campsiteShopDetailVo.setTypeNames(typeNameList.stream().collect(Collectors.joining("|")));
//具体地址拼接
campsiteShopDetailVo.setAddress(String.format("%s%s%s",campsiteShopDetailDTO.getProvinceName(),campsiteShopDetailDTO.getCityName(),campsiteShopDetailDTO.getAddress()));
campsiteShopDetailVo.setTypeNames(typeNameList);
//根据经纬度算距离
double distance = getDistance(campsiteShopDetailDTO.getLongitude(),campsiteShopDetailDTO.getLatitude(),longitude,latitude);
if (log.isDebugEnabled()){
log.debug("根据店铺经度=[{}],纬度=[{}]和自己所在位置的经度=[{}],纬度=[{}]计算出的距离:[{}km]",campsiteShopDetailDTO.getLongitude(),campsiteShopDetailDTO.getLatitude(),longitude,latitude,distance);
log.debug("根据店铺经度=【{}】,纬度=【{}】和自己所在位置的经度=【{}】,纬度=【{}】计算出的距离:【{}km】",campsiteShopDetailDTO.getLongitude(),campsiteShopDetailDTO.getLatitude(),longitude,latitude,distance);
}
campsiteShopDetailVo.setDistance(String.format("%.1f",distance));
return campsiteShopDetailVo;
......
package com.xxfc.platform.campsite.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.xxfc.platform.campsite.dto.CampsiteTagListDTO;
import com.xxfc.platform.campsite.vo.CampsiteTagListVo;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.campsite.entity.CampsiteTag;
import com.xxfc.platform.campsite.mapper.CampsiteTagMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import java.util.List;
/**
* 店铺类型表
*
......@@ -15,4 +23,17 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/
@Service
public class CampsiteTagBiz extends BaseBiz<CampsiteTagMapper,CampsiteTag> {
/**
* 查询营地列表
* @return
*/
public List<CampsiteTagListVo> findCampsiteTags() {
List<CampsiteTagListDTO> campsiteTagListDTOS = mapper.findCampsiteTags();
if (CollectionUtils.isEmpty(campsiteTagListDTOS)){
return null;
}
List<CampsiteTagListVo> campsiteTagListVos = JSONObject.parseObject(JSONObject.toJSONString(campsiteTagListDTOS),new TypeReference<List<CampsiteTagListVo>>(){});
return campsiteTagListVos;
}
}
\ No newline at end of file
package com.xxfc.platform.campsite.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-21 8:39
*/
@Configuration
@Primary
public class RedisConfiguration {
@Bean
public RedisTemplate<String, Object> customRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory);
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
package com.xxfc.platform.campsite.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestConfiguration {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
package com.xxfc.platform.campsite.mapper;
import com.xxfc.platform.campsite.dto.CampsiteTagListDTO;
import com.xxfc.platform.campsite.entity.CampsiteTag;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 店铺类型表
*
......@@ -12,4 +15,10 @@ import tk.mybatis.mapper.common.Mapper;
*/
public interface CampsiteTagMapper extends Mapper<CampsiteTag> {
/**
* 查询可用营地列表
* @return
*/
List<CampsiteTagListDTO> findCampsiteTags();
}
package com.xxfc.platform.campsite.rest;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.campsite.biz.CampsiteTagBiz;
import com.xxfc.platform.campsite.entity.CampsiteTag;
import org.springframework.stereotype.Controller;
import com.xxfc.platform.campsite.vo.CampsiteTagListVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author libin
* @version 1.0
......@@ -17,4 +22,15 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("campsiteTag")
public class CampsiteTagController extends BaseController<CampsiteTagBiz,CampsiteTag> {
/**
* 查询营地列表
* @return
*/
@GetMapping("/app/unauth/tags")
@IgnoreClientToken
public ObjectRestResponse<CampsiteTagListVo> findCampstieTags(){
List<CampsiteTagListVo> campsiteTagListVolist = getBaseBiz().findCampsiteTags();
return ObjectRestResponse.succ(campsiteTagListVolist);
}
}
\ No newline at end of file
......@@ -15,4 +15,7 @@
<result property="isDel" column="is_del"/>
</resultMap>
<select id="findCampsiteTags" resultType="com.xxfc.platform.campsite.dto.CampsiteTagListDTO">
select `id`,`name` from `campsite_tag` where `is_del`=0;
</select>
</mapper>
\ No newline at end of file
......@@ -76,4 +76,9 @@ public class VehiclePlatCata implements Serializable {
private Integer isMore;
//是否多选
@Column(name = "start_using")
@ApiModelProperty(value = "是否作为客户端查询条件:0-否,1-是" )
private Integer startUsing;
}
package com.xxfc.platform.vehicle.pojo;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
@Data
public class VehicleVo {
/**
* 主键(uuid)
*/
@Id
private String id;
/**
* 车辆编号,0-没有
*/
private Integer code;
/**
* 车辆状态: 1-正常运行 2-维修 3-报废
*/
private Integer status;
/**
* 车牌号,空字符串-没有
*/
@Column(name = "number_plate")
private String numberPlate;
/**
* 品牌(编码,对应关系见相关常量),0-未填写
*/
private Integer brand;
/**
* 所属分支机构(id)
*/
@Column(name = "subordinate_branch")
private Integer subordinateBranch;
/**
* 用途类型:租赁房车(1)、展车等,对应关系见车辆常量表
*/
@Column(name = "use_type")
private Integer useType;
/**
* 备注信息
*/
private String remark;
/**
* 车架号
*/
private String vin;
/**
* 保险公司,见常量表
*/
private Integer insuranceCompany;
/**
* 保险单号
*/
private String insuranceNo;
/**
* 保险开始时间
*/
private Date insuranceStartDate;
/**
* 保险结束时间
*/
private Date insuranceEndDate;
/**
* 年审时间
*/
private Date annualVerificationDate;
/**
* 保养时间
*/
private Date maintenanceDate;
/**
* 保养里程数
*/
private Integer maintenanceMileage;
/**
* 车辆所属人-类型
*/
private Integer belongTo;
/**
* 所属人 名称
*/
private String belongToName;
/**
* 行驶证路径
*/
private String drivingLicensePath;
/**
* 发动机号
*/
private String engineNum;
/**
* 生产商
*/
private String manufacturer;
/**
* 收车时间
*/
private Date receiveTime;
/**
* 最后更新里程数
*/
private Integer mileageLastUpdate;
/**
* 停车分公司id
*/
private Integer parkBranchCompanyId;
/**
* 预计目的地分公司id
*/
private Integer expectDestinationBranchCompanyId;
/**
* 车型id
*/
private Integer modelId;
/**
*片区id
*/
private Integer zoneId;
/**
* 当前页
*/
private Integer page;
/**
* 每页条数
*/
private Integer limit;
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
......@@ -18,6 +19,20 @@ public class VehicleUserScoreDTO {
@ApiModelProperty("主键id")
private Integer id;
/**
* 订单id
*/
@ApiModelProperty(value = "订单id")
@NotNull(message = "订单id不能为空")
private Integer orderId;
/**
* 车型id
*/
@ApiModelProperty(value = "车型id")
@NotNull(message = "车型id不能为空")
private Integer modelId;
/**
* 评分类型
*/
......
package com.xxfc.platform.vehicle.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description 车型评分
* @data 2019/6/18 15:15
*/
@Data
public class VehicleUserScoreDetailDTO {
/**
* 用户id
*/
@ApiModelProperty("用户id")
private Integer userId;
/**
* 评价分
*/
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 评价
*/
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 车型名称
*/
@ApiModelProperty(value ="车型名称")
private String modelName;
/**
* 车型关键标签
*/
@ApiModelProperty(value = "车型关键标签")
private String modelKeyWorld;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 评分明细
*/
@ApiModelProperty(value = "评分明细")
private String scores;
}
\ No newline at end of file
package com.xxfc.platform.vehicle.pojo.vo;
import com.xxfc.platform.vehicle.constant.VehicleScoreType;
import lombok.Data;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/18 15:45
*/
@Data
public class ScoreTypeVo {
/**
* 评分类型
*/
@Enumerated(EnumType.STRING)
private VehicleScoreType vehicleScoreType;
/**
* 评分
*/
private int score;
}
......@@ -3,10 +3,12 @@ package com.xxfc.platform.vehicle.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description TODO
* @description 订单评价vo
* @data 2019/6/18 15:26
*/
@Data
......@@ -21,8 +23,8 @@ public class VehicleUserScoreVo {
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
@ApiModelProperty("用户id")
private String userId;
/**
* 用户名
......@@ -67,10 +69,26 @@ public class VehicleUserScoreVo {
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 车型名称
*/
@ApiModelProperty(value ="车型名称")
private String modelName;
/**
* 车型关键标签
*/
@ApiModelProperty(value = "车型关键标签")
private String modelKeyWorld;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 类型-评分
*/
private List<ScoreTypeVo> scoreTypeVos;
}
......@@ -7,8 +7,10 @@ import com.github.pagehelper.PageHelper;
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.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
......@@ -26,6 +28,7 @@ import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import com.xxfc.platform.vehicle.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
......@@ -45,8 +48,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
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;
import java.util.stream.Collectors;
......@@ -75,6 +82,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
@Autowired
private RedisTemplate customRedisTemplate;
@Value("${vehicle.baseUploadPath}")
private String baseUploadPath ;
......@@ -912,4 +920,97 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
PageInfo<Vehicle> usableVehicleInfo = new PageInfo<>(lists);
return PageDataVO.pageInfo(usableVehicleInfo);
}
/**
* 保存
* @param vehicle
* @return
*/
@Transactional
public ObjectRestResponse save(Vehicle vehicle){
if (vehicle==null) {
ObjectRestResponse.createDefaultFail();
}
String id = vehicle.getId();
if (StringUtils.isBlank(id)) {
insertSelective(vehicle);
insertSelective(vehicle);
}else {
updateSelectiveById(vehicle);
}
return ObjectRestResponse.succ();
}
/**
* 查找
* @param vehicleVo
* @param page
* @param limit
* @return
*/
public ObjectRestResponse findListByVehicle(VehicleVo vehicleVo, Integer page, Integer limit){
Vehicle vehicle = new Vehicle();
// vehicleVo复制一份到vehicle
try {
BeanUtilsBean.getInstance().copyProperties(vehicle,vehicleVo);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
return ObjectRestResponse.createDefaultFail();
}
WeekendSqls<Vehicle> sqls = WeekendSqls.<Vehicle>custom();
//车辆状态
if (vehicle.getStatus()!=null||vehicle.getStatus()!=0){
sqls.andEqualTo(Vehicle::getStatus,vehicle.getStatus());
}
//车牌号
if (StringUtils.isBlank(vehicle.getNumberPlate())){
sqls.andEqualTo(Vehicle::getNumberPlate,vehicle.getNumberPlate());
Function<Vehicle, Integer> getStatus = Vehicle::getStatus;
}
//公司
if (vehicle.getSubordinateBranch()==null||vehicle.getSubordinateBranch()==0){
sqls.andEqualTo(Vehicle::getSubordinateBranch,vehicle.getSubordinateBranch());
}
//大区
if (vehicleVo.getZoneId()==null||vehicleVo.getZoneId()==0){
//获取大区内的公司id
Example example= Example.builder(BranchCompany.class).where(WeekendSqls.<BranchCompany>custom()
.andEqualTo(BranchCompany::getZoneId,vehicleVo.getZoneId())).build();
List<BranchCompany> branchCompanies = branchCompanyBiz.selectByExample(example);
ArrayList<Integer> bIds = new ArrayList<>();
for (BranchCompany branchCompany : branchCompanies) {
bIds.add(branchCompany.getId());
}
sqls.andIn(Vehicle::getSubordinateBranch,bIds);
}
sqls.andEqualTo(Vehicle::getStatus,0);
Example exa = Example.builder(Vehicle.class).where(sqls).build();
PageDataVO<Object> objectPageDataVO = PageDataVO.pageInfo(page, limit, () -> selectByExample(exa));
return ObjectRestResponse.succ(objectPageDataVO);
}
/**
* 查询条
* @param id
* @return
*/
public ObjectRestResponse getOneById(Integer id){
return ObjectRestResponse.succ(selectByExample(
Example.builder(Vehicle.class)
.where(WeekendSqls.<Vehicle>custom()
.andEqualTo(Vehicle::getId,id)
.andEqualTo(Vehicle::getStatus,0))
.build()));
}
}
......@@ -58,4 +58,12 @@ public class VehicleCataBiz extends BaseBiz<VehicleCataMapper, VehicleCata> {
mapper.addCataList(vcs);
}
public void updateIsdalByVehicleModelId(VehicleCata vehicleCata){
mapper.updateIsdalByVehicleModelId( vehicleCata);
}
public void updateIsdalByVehicleCataId(VehicleCata vehicleCata) {
mapper.updateIsdalByVehicleCataId(vehicleCata);
}
}
......@@ -2,7 +2,9 @@ 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.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
......@@ -12,12 +14,16 @@ import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureStatisticDataVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Service
public class VehicleDepartureService {
public class VehicleDepartureService extends BaseBiz<VehicleDepartureLogMapper, VehicleDepartureLog> {
@Autowired
VehicleDepartureLogMapper vehicleDepartureLogMapper;
......@@ -61,4 +67,51 @@ public class VehicleDepartureService {
statisticData.setDepartureMileage(vehicleDepartureLogMapper.selectMileageByVehicleId(vehicle.getId()));
return statisticData;
}
@Transactional
public ObjectRestResponse save(VehicleDepartureLog vehicleDepartureLog) {
Integer id = vehicleDepartureLog.getId();
if (id == null || id == 0) {
vehicleDepartureLog.setCreateTime(new Date());
vehicleDepartureLog.setState(0);
insertSelective(vehicleDepartureLog);
} else {
vehicleDepartureLog.setUpdateTime(new Date());
updateSelectiveById(vehicleDepartureLog);
}
return ObjectRestResponse.succ();
}
public ObjectRestResponse findOne(Integer vid) throws Exception {
Example exm = Example.builder(VehicleDepartureLog.class)
.where(WeekendSqls.<VehicleDepartureLog>custom()
.andEqualTo(VehicleDepartureLog::getVehicleId, vid)
.andEqualTo(VehicleDepartureLog::getState, 0))
.orderByDesc("create_time")
.build();
List<VehicleDepartureLog> vehicleDepartureLogs = mapper.selectByExample(exm);
if (vehicleDepartureLogs.size() == 1) {
VehicleDepartureLog vehicleDepartureLog = vehicleDepartureLogs.get(1);
if (vehicleDepartureLog!=null) {
return ObjectRestResponse.succ(vehicleDepartureLog);
}
}
return ObjectRestResponse.createDefaultFail();
}
@Transactional
public ObjectRestResponse collect(VehicleDepartureLog vdl){
vdl.setArrivalTime(new Date());
vdl.setState(1);
updateSelectiveById(vdl);
return ObjectRestResponse.succ();
}
}
......@@ -64,4 +64,13 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
}
/**
*更新车型的评分
* @param modelId
* @param avgScore
* @return
*/
public int updateScoreByModelIdAndavgScore(Integer modelId, int avgScore) {
return mapper.updateScoreByModelIdAndavgScore(modelId,avgScore);
}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleCata;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.mapper.VehiclePlatCataMapper;
......@@ -19,9 +20,13 @@ import com.xxfc.platform.vehicle.pojo.CataVo;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.util.Arrays;
import org.springframework.aop.framework.AopContext;
import org.springframework.aop.framework.AopProxyUtils;
import org.springframework.aop.support.AopUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
......@@ -139,7 +144,7 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
* @param cascade
* @return
*/
@Transactional
public ObjectRestResponse addCascade(Cascade<VehiclePlatCata> cascade) {
//取出一级标签
......@@ -147,9 +152,10 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
parent.setCrtTime(System.currentTimeMillis());
parent.setState(0);
//插入一级标签获得id
parent.setIsMore(0);
parent.setRank(0);
mapper.insertSelective(parent);
Integer parentId = parent.getId();
int i = 1/0;
//取出二级标签
List<VehiclePlatCata> childrens = cascade.getChildren();
//逐条插入二级标签
......@@ -164,6 +170,7 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
/**
* 根据父类id获取子标签
*
......@@ -295,9 +302,9 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
* @param cas
* @return
*/
@Transactional
public ObjectRestResponse updateAndAdd( Cascade<VehiclePlatCata> cas) {
try {
if (cas==null||cas.getParent()==null) {
return ObjectRestResponse.createDefaultFail();
}
......@@ -309,10 +316,6 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
return updateCascade(cas);
}
} catch (Exception e) {
e.printStackTrace();
return ObjectRestResponse.createDefaultFail();
}
}
......@@ -322,7 +325,7 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
* @param cas
* @return
*/
@Transactional
public ObjectRestResponse updateCascade(Cascade<VehiclePlatCata> cas) {
try {
......@@ -341,7 +344,7 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
//遍历
for (VehiclePlatCata child : children) {
//判断子标签是更新还是新增
if (child.getId()==null){
if (child.getId()==null||child.getId()==0){
child.setState(0);
child.setUpdTime(System.currentTimeMillis());
//添加
......@@ -353,7 +356,8 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
VehicleCata vehicleCata = new VehicleCata();
vehicleCata.setCataId(id);
//修改车型和标签的中间表
vehicleCataBiz.delete(vehicleCata);
vehicleCata.setIsdel(1);
vehicleCataBiz.updateIsdalByVehicleCataId(vehicleCata);
}
//更新
......@@ -405,4 +409,57 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
return ObjectRestResponse.succ(vehiclePlatCatas);
}
/**
* 删除一级标签及其子标签
* @param id
* @return
*/
@Transactional
public ObjectRestResponse deleteCascadeById(Integer id){
//修改一级标签
VehiclePlatCata vehiclePlatCata = new VehiclePlatCata();
vehiclePlatCata.setId(id);
vehiclePlatCata.setState(1);
updateSelectiveById(vehiclePlatCata);
//修改子标签
VehiclePlatCata vpc = new VehiclePlatCata();
vpc.setState(1);
mapper.updateByExampleSelective(vpc,Example.builder(VehiclePlatCata.class)
.andWhere(WeekendSqls.<VehiclePlatCata>custom()
.andEqualTo(VehiclePlatCata::getParentId,id)).build());
return ObjectRestResponse.succ();
}
/**
* 修改客户端查询条件
* @param id
* @param startUsing
* @return
*/
@Transactional
public ObjectRestResponse setStartUsingById(Integer id, Integer startUsing){
VehiclePlatCata vehiclePlatCata = new VehiclePlatCata();
vehiclePlatCata.setId(id);
vehiclePlatCata.setStartUsing(startUsing);
updateSelectiveById(vehiclePlatCata);
return ObjectRestResponse.succ();
}
/**
* 修改单选还是多选
* @param id
* @param isMore
* @return
*/
@Transactional
public ObjectRestResponse setIsore(Integer id, Integer isMore){
VehiclePlatCata vehiclePlatCata = new VehiclePlatCata();
vehiclePlatCata.setId(id);
vehiclePlatCata.setIsMore(isMore);
updateSelectiveById(vehiclePlatCata);
return ObjectRestResponse.succ();
}
}
package com.xxfc.platform.vehicle.biz;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.entity.VehicleUserScore;
import com.xxfc.platform.vehicle.mapper.VehicleUserScoreMapper;
import com.xxfc.platform.vehicle.pojo.dto.ScoreTypeDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDetailDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreListDTO;
import com.xxfc.platform.vehicle.pojo.vo.ScoreTypeVo;
import com.xxfc.platform.vehicle.pojo.vo.VehicleUserScoreVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.Instant;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -32,16 +44,48 @@ import java.util.stream.Collectors;
@Slf4j
public class VehicleUserScoreBiz extends BaseBiz<VehicleUserScoreMapper, VehicleUserScore> {
@Resource
private UserFeign userFeign;
@Autowired
private VehicleModelBiz vehicleModelBiz;
/**
* 根据车型id查询
* @param modelId
* @return
*/
public PageDataVO<VehicleUserScoreVo> findVehicleUserScorePageByModelId(Integer modelId,Integer pageNo,Integer pageSize) {
PageDataVO<VehicleUserScoreVo> pageDataVO = new PageDataVO<>();
//根据模型id查找
PageDataVO<VehicleUserScoreListDTO> vehicleUserScoreDTOPageDataVO = PageDataVO.pageInfo(pageNo,pageSize,()->mapper.findyByModelIdAndApproved(modelId,1));
List<Integer> userIds = vehicleUserScoreDTOPageDataVO.getData().stream().map(VehicleUserScoreListDTO::getUserId).collect(Collectors.toList());
return null;
List<VehicleUserScoreListDTO> dataVOData = vehicleUserScoreDTOPageDataVO.getData();
if (CollectionUtils.isEmpty(dataVOData)){
return pageDataVO;
}
if (log.isDebugEnabled()){
log.debug("根据车型id查找出的评价:【{}】",dataVOData);
}
//设置用户信息
List<Integer> userIds = dataVOData.stream().map(VehicleUserScoreListDTO::getUserId).distinct().collect(Collectors.toList());
List<AppUserVo> appUserVos = userFeign.getByUserIds(userIds).getData();
if (log.isDebugEnabled()){
log.debug("根据用户ids查询出用户信息:【{}】",appUserVos);
}
Map<Integer, AppUserVo> userMap = appUserVos.stream().collect(Collectors.toMap(AppUserVo::getUserid, Function.identity()));
List<VehicleUserScoreVo> vehicleUserScoreVos = dataVOData.stream().map(vehicleUserScoreListDTO -> {
VehicleUserScoreVo vehicleUserScoreVo = new VehicleUserScoreVo();
BeanUtils.copyProperties(vehicleUserScoreListDTO, vehicleUserScoreVo);
vehicleUserScoreVo.setUserName(userMap.get(vehicleUserScoreListDTO.getUserId()).getNickname());
vehicleUserScoreVo.setHeadUrl(userMap.get(vehicleUserScoreListDTO.getUserId()).getHeadimgurl());
return vehicleUserScoreVo;
}).sorted(Comparator.comparing(VehicleUserScoreVo::getCrtTime).reversed()).collect(Collectors.toList());
//组装数据
pageDataVO.setPageNum(vehicleUserScoreDTOPageDataVO.getPageNum());
pageDataVO.setPageSize(vehicleUserScoreDTOPageDataVO.getPageSize());
pageDataVO.setTotalCount(vehicleUserScoreDTOPageDataVO.getTotalCount());
pageDataVO.setTotalPage(vehicleUserScoreDTOPageDataVO.getTotalPage());
pageDataVO.setData(vehicleUserScoreVos);
return pageDataVO;
}
/**
......@@ -51,18 +95,59 @@ public class VehicleUserScoreBiz extends BaseBiz<VehicleUserScoreMapper, Vehicle
*/
public int saveVehicleUserScore(VehicleUserScoreDTO vehicleUserScoreDTO, AppUserDTO appUserDTO) {
if (log.isDebugEnabled()){
log.debug("用户:{},评分的数据:【{}】",appUserDTO.getNickname(),vehicleUserScoreDTO);
log.debug("用户:【{}】,评分的数据:【{}】",appUserDTO.getNickname(),vehicleUserScoreDTO);
}
vehicleUserScoreDTO.setCrtTime(Instant.now().toEpochMilli());
List<ScoreTypeDTO> scoretype = vehicleUserScoreDTO.getScoretype();
int avgScore =0;
if (CollectionUtils.isNotEmpty(scoretype)) {
//评分明细
vehicleUserScoreDTO.setComment(JSONObject.toJSONString(scoretype));
vehicleUserScoreDTO.setScores(JSONObject.toJSONString(scoretype));
//计算平均分值
double avgScore = scoretype.stream().mapToInt(ScoreTypeDTO::getScore).average().getAsDouble();
double avgScored = scoretype.stream().mapToInt(ScoreTypeDTO::getScore).average().getAsDouble();
avgScore = Long.valueOf(Math.round(avgScored)).intValue();
//更改车型的评分
if (0 != avgScore) {
vehicleModelBiz.updateScoreByModelIdAndavgScore(vehicleUserScoreDTO.getModelId(), avgScore);
}
}
VehicleUserScore vehicleUserScore = new VehicleUserScore();
BeanUtils.copyProperties(vehicleUserScoreDTO,vehicleUserScore);
vehicleUserScore.setAveScore(Long.valueOf(Math.round(avgScore)).intValue());
vehicleUserScore.setAveScore(avgScore);
vehicleUserScore.setUserId(appUserDTO.getUserid());
vehicleUserScore.setUpdTime(Instant.now().toEpochMilli());
return mapper.insertSelective(vehicleUserScore);
}
/**
* 根据订单id查询订单评价
* @param orderId
* @return
*/
public VehicleUserScoreVo findVehicleUserScoreDetailByOrderId(Integer orderId) {
VehicleUserScoreVo vehicleUserScoreVo = new VehicleUserScoreVo();
//根据订单id查询
VehicleUserScoreDetailDTO vehicleUserScoreDetailDTO = mapper.findVehicleUserScoreDetailByOrderId(orderId);
if (log.isDebugEnabled()){
log.debug("根据订单id:【{}】查询到的订单评价内容:【{}】",orderId,vehicleUserScoreDetailDTO);
}
BeanUtils.copyProperties(vehicleUserScoreDetailDTO,vehicleUserScoreVo);
//评分明细数据转换
String scores = vehicleUserScoreDetailDTO.getScores();
if (StringUtils.isNotEmpty(scores)){
List<ScoreTypeVo> typeVos = JSONObject.parseObject(scores, new TypeReference<List<ScoreTypeVo>>() {});
vehicleUserScoreVo.setScoreTypeVos(typeVos);
}
//根据用户id查询用户信息
ObjectRestResponse<List<AppUserVo>> appuserResponse = userFeign.getByUserIds(Arrays.asList(vehicleUserScoreDetailDTO.getUserId()));
if (log.isDebugEnabled()){
log.debug("根据用户id:【{}】查询到的用户信息:【{}】",vehicleUserScoreDetailDTO.getUserId(),appuserResponse.getData());
}
AppUserVo appUserVo = appuserResponse.getData().get(0);
vehicleUserScoreVo.setUserName(appUserVo.getNickname());
vehicleUserScoreVo.setHeadUrl(appUserVo.getHeadimgurl());
return vehicleUserScoreVo;
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleCata;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -24,4 +25,7 @@ public interface VehicleCataMapper extends Mapper<VehicleCata> {
VehicleCata getOne(@Param("vehicleModelId")Integer vehicleModelId,@Param("cataId")Integer cataId );
void updateIsdalByVehicleModelId(VehicleCata vehicleCata);
void updateIsdalByVehicleCataId(VehicleCata vehicleCata);
}
......@@ -4,10 +4,11 @@ import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import com.xxfc.platform.vehicle.pojo.VehicleDepartureLogVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLog> {
public interface VehicleDepartureLogMapper extends BaseMapper<VehicleDepartureLog>, Mapper<VehicleDepartureLog> {
VehicleDepartureLog selectLastByVehicleId(String vehicleId);
......
......@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition;
import com.xxfc.platform.vehicle.pojo.VehicleModelVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -18,4 +19,11 @@ public interface VehicleModelMapper extends Mapper<VehicleModel> {
List<VehicleModelVo> findVehicleModelPage(VehicleModelQueryCondition vmqc);
/**
* 根据车型id和车型某个订单的评价的平均分值计算
* @param modelId
* @param avgScore
* @return
*/
int updateScoreByModelIdAndavgScore(@Param("modelId") Integer modelId, @Param("avgScore") int avgScore);
}
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleUserScore;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDetailDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreListDTO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
......@@ -25,4 +26,11 @@ public interface VehicleUserScoreMapper extends Mapper<VehicleUserScore> {
*/
@Select("select `user_id` as `userId`,`comment` as `comment`,`ave_score` as `aveScore`,`is_anony` as `isAnony`,`imgs` as `imgs`,`crt_time` as `crtTime` from `vehicle_user_score` where `model_id`=#{modelId} and `status`=#{status}")
List<VehicleUserScoreListDTO> findyByModelIdAndApproved(@Param("modelId") Integer modelId, @Param("status") Integer status);
/**
* 根据订单查询评价
* @param orderId
* @return
*/
VehicleUserScoreDetailDTO findVehicleUserScoreDetailByOrderId(Integer orderId);
}
......@@ -10,8 +10,11 @@ import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.common.VehicleBaseController;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.pojo.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import sun.java2d.pipe.AATextRenderer;
......@@ -62,7 +65,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return
*/
@GetMapping(value = "/add/fingCatasByParentId/{parentId}")
public ObjectRestResponse fingCatasByParentId(@PathVariable Integer parentId ){
public ObjectRestResponse fingCatasByParentId(@PathVariable("parentId") Integer parentId ){
return baseBiz.fingCatasByParentId(parentId);
}
......@@ -73,7 +76,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return
*/
@GetMapping(value = "/add/findCascade/{id}")
public ObjectRestResponse findCascade(@PathVariable Integer id){
public ObjectRestResponse findCascade(@PathVariable("id") Integer id){
return baseBiz.findCascade(id);
......@@ -87,14 +90,16 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @param sort 分类 0-增加车型页面,1-标签管理页面
* @return
*/
@GetMapping(value = "/add/fingCatasByParentId/{page}/{limit}/{sort}")
@GetMapping(value = "/add/getCascades/{page}/{limit}/{sort}")
public ObjectRestResponse getCascades(
// @PathVariable("page") Integer page
// ,@PathVariable("limit") Integer limit
// ,@PathVariable("sort") Integer sort){
@PathVariable Integer page
,@PathVariable Integer limit
,@PathVariable Integer sort){
return baseBiz.getCascades(page,limit,sort);
}
......@@ -105,14 +110,11 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return
*/
@PostMapping(value = "/add/addCascade/")
@Transactional
public ObjectRestResponse addCascade(@RequestBody Cascade<VehiclePlatCata> cascade){
try {
return baseBiz.addCascade(cascade);
} catch (Exception e) {
e.printStackTrace();
return ObjectRestResponse.createDefaultFail();
}
}
......@@ -136,7 +138,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return
*/
@PutMapping("/add/updateParentRank/{id}/{rank}")
public ObjectRestResponse updateParentRank(@PathVariable Integer id,@PathVariable Integer rank){
public ObjectRestResponse updateParentRank(@PathVariable("id") Integer id,@PathVariable("rank") Integer rank){
return baseBiz.updateParentRank(id,rank);
}
......@@ -152,6 +154,40 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
return baseBiz.getCatasByIds(ids);
}
/**
* 删除一级标签及其子标签
* @param id 标签id
* @return
*/
@DeleteMapping("/add/deleteCascadeById/{id}")
public ObjectRestResponse deleteCascadeById(@PathVariable("id") Integer id){
return baseBiz.deleteCascadeById(id);
}
/**
* 修改客户端查询条件
* @param id
* @param startUsing
* @return
*/
@PutMapping("/add/setStartUsingById/{id}/{startUsing}")
public ObjectRestResponse setStartUsingById(@PathVariable("id") Integer id,@PathVariable("startUsing") Integer startUsing){
return baseBiz.setStartUsingById(id,startUsing);
}
/**
* 修改单选还是多选
* @param id
* @param isMore
* @return
*/
@PutMapping("/add/setIsMore/{id}/{isMore}")
public ObjectRestResponse setIsMore (@PathVariable("id") Integer id,@PathVariable("isMore") Integer isMore){
return baseBiz.setIsore(id,isMore);
}
/* @RequestMapping(value = "/{id}", method = RequestMethod.GET)
public RestResponse<Vehicle> get(@PathVariable String id) {
return RestResponse.data(baseBiz.get(id));
......
......@@ -51,9 +51,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
......@@ -301,14 +301,14 @@ public class VehicleController extends BaseController<VehicleBiz> {
public ObjectRestResponse<PageDataVO<UsableVehicleModelVO>> rentUsableVehicle(UsableVeicleDTO dto) throws Exception {
//根据时间 获得 可用车辆
//结合车型
if(StringUtils.isNotBlank(dto.getCatasStr())) {
List<Integer> catasIds = Pattern.compile(",").splitAsStream(dto.getCatasStr()).map((s)-> Integer.parseInt(s)).collect(Collectors.toList());
if (StringUtils.isNotBlank(dto.getCatasStr())) {
List<Integer> catasIds = Pattern.compile(",").splitAsStream(dto.getCatasStr()).map((s) -> Integer.parseInt(s)).collect(Collectors.toList());
List<VehiclePlatCata> catas = vehiclePlatCataBiz.selectByExample(new Example.Builder(VehiclePlatCata.class)
.where(WeekendSqls.<VehiclePlatCata>custom().andIn(VehiclePlatCata::getId, catasIds)).build());
Map<Integer, List<VehiclePlatCata>> vpcMap = new HashMap<Integer, List<VehiclePlatCata>>();
for(VehiclePlatCata vpc : catas) {
for (VehiclePlatCata vpc : catas) {
List<VehiclePlatCata> vpcs = vpcMap.get(vpc.getParentId());
if(null == vpcs) {
if (null == vpcs) {
vpcs = new ArrayList<VehiclePlatCata>();
}
vpcs.add(vpc);
......@@ -354,7 +354,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
//查询可车辆信息
PageDataVO<Vehicle> pageDataVO = vehicleBiz.searchUsableVehicle(dto);
if(pageDataVO.getData().size() <= 0) {
if (pageDataVO.getData().size() <= 0) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
bookVehicleVo.setVehicle(pageDataVO.getData().get(0).getId());
......@@ -364,4 +364,41 @@ public class VehicleController extends BaseController<VehicleBiz> {
return ObjectRestResponse.succ(bookVehicleVo.getVehicle());
}
/**
* 保存
*
* @param vehicle
* @return
*/
@PostMapping("/add/seva")
public ObjectRestResponse seva(Vehicle vehicle) {
return baseBiz.save(vehicle);
}
/**
* 查找
* @param vehicleVo
* @param page
* @param limit
* @return
*/
@PostMapping("/add/findListByVehicle/{page}/{limit}")
public ObjectRestResponse findListByVehicle(
@RequestBody VehicleVo vehicleVo
, @PathVariable("page") Integer page
, @PathVariable("limit") Integer limit) {
return baseBiz.findListByVehicle(vehicleVo,page,limit);
}
/**
* 查询一条
* @param id
* @return
*/
@GetMapping("/add/getOneById/{id}")
public ObjectRestResponse getOneById(@PathVariable("id")Integer id){
return baseBiz.getOneById(id);
}
}
......@@ -4,14 +4,14 @@ import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleDepartureService;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.VehicleDepartureLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
......@@ -70,5 +70,38 @@ public class VehicleDepartureController {
return RestResponse.suc(vehicleDepartureService.statistic(numberPlate));
}
/**
* 保存(出车)
* @param vehicleDepartureLog
* @return
*/
@PostMapping("/app/save")
public ObjectRestResponse save(@RequestBody VehicleDepartureLog vehicleDepartureLog){
return vehicleDepartureService.save(vehicleDepartureLog);
}
/**
* 查询一条
* @param vid 车辆id
* @return
* @throws Exception
*/
@GetMapping("/app/findOne/{id}")
public ObjectRestResponse findOne(@PathVariable Integer vid) throws Exception {
return vehicleDepartureService.findOne(vid);
}
/**
*
* 收车
* @param vdl
* @return
* @throws Exception
*/
@PutMapping("/app/collect")
public ObjectRestResponse collect(@RequestBody VehicleDepartureLog vdl) throws Exception {
return vehicleDepartureService.collect(vdl);
}
}
......@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleCataBiz;
import com.xxfc.platform.vehicle.biz.VehicleModelBiz;
import com.xxfc.platform.vehicle.biz.VehiclePlatCataBiz;
......@@ -24,13 +25,17 @@ import io.swagger.annotations.ApiParam;
import net.bytebuddy.implementation.bytecode.Throw;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("vehicleModel")
......@@ -49,6 +54,7 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
@Autowired
private UserFeign userFeign;
//修改评分
@RequestMapping(value = "/app/addScore", method = RequestMethod.GET)
public RestResponse addScore(
......@@ -221,16 +227,37 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
@DeleteMapping(value = "/app/{id}")
@ResponseBody
@Transactional
public ObjectRestResponse<VehicleModel> remove(@PathVariable int id){
try {
vehicleModelBiz.deleteById(id);
public ObjectRestResponse<VehicleModel> remove(@PathVariable int id) {
//1.先判断是否有属于该车型可用的车辆,有不能删除,无可以进行删除
//根据车型查询对应的车辆
// Example exa = Example.builder(Vehicle.class).where(
// WeekendSqls.<Vehicle>custom()
// .andEqualTo(Vehicle::getModelId, id)
// .andEqualTo(Vehicle::getStatus, 1)
// .orEqualTo(Vehicle::getStatus,"2")
// ).build();
//
// List<Vehicle> vehicles = vehicleBiz.selectByExample(exa);
//
// //判断是查询到对应的车辆
// if (vehicles != null) {
// ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "该车型,无法删除");
// }
//2.进行逻辑删除
VehicleModel vm = new VehicleModel();
vm.setId(id);
vm.setIsdel(1);
vehicleModelBiz.updateById(vm);
//3.删除车型对应的标签
VehicleCata vehicleCata = new VehicleCata();
vehicleCata.setVehicleModelId(id);
vehicleCataBiz.delete(vehicleCata);
vehicleCata.setIsdel(1);
vehicleCataBiz.updateIsdalByVehicleModelId(vehicleCata);
return ObjectRestResponse.succ();
} catch (Exception e) {
e.printStackTrace();
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}
\ No newline at end of file
package com.xxfc.platform.vehicle.rest;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.annotation.BeanValid;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
......@@ -23,10 +24,11 @@ public class VehicleUserScoreController extends BaseController<VehicleUserScoreB
/**
* 保存评论
* @param vehicleUserScoreDTO
* @param appUserDTO
* @return
*/
@PostMapping("/score")
public ObjectRestResponse<Void> saveVehicleUserScore(@RequestBody VehicleUserScoreDTO vehicleUserScoreDTO, AppUserDTO appUserDTO){
public ObjectRestResponse<Void> saveVehicleUserScore(@RequestBody @BeanValid VehicleUserScoreDTO vehicleUserScoreDTO, AppUserDTO appUserDTO){
int effectRows = getBaseBiz().saveVehicleUserScore(vehicleUserScoreDTO,appUserDTO);
if (effectRows>0){
return ObjectRestResponse.succ();
......@@ -37,13 +39,26 @@ public class VehicleUserScoreController extends BaseController<VehicleUserScoreB
* 根据车型查询评论列表 根据评分时间排序
*
* @param modelId
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/scores")
@GetMapping("/app/unauth/scores")
public ObjectRestResponse<PageDataVO<VehicleUserScoreVo>> findVehicleUserScorePageByModelId(@RequestParam("modelId") Integer modelId,
@RequestParam("pageNo")Integer pageNo,
@RequestParam("pageSize") Integer pageSize) {
@RequestParam(value = "pageNo",required = false,defaultValue = "1")Integer pageNo,
@RequestParam(value = "pageSize",required = false,defaultValue = "10") Integer pageSize) {
PageDataVO<VehicleUserScoreVo> pageDataVO = getBaseBiz().findVehicleUserScorePageByModelId(modelId,pageNo,pageSize);
return ObjectRestResponse.succ(pageDataVO);
}
/**
* 根据订单id查询评价详情
* @param orderId
* @return
*/
@GetMapping("/score/order/{orderId}")
public ObjectRestResponse findVehicleUserScoreDetailByOrderId(@PathVariable("orderId") Integer orderId){
VehicleUserScoreVo vehicleUserScoreVo = getBaseBiz().findVehicleUserScoreDetailByOrderId(orderId);
return ObjectRestResponse.succ(vehicleUserScoreVo);
}
}
\ No newline at end of file
......@@ -36,5 +36,10 @@
</trim>
) and vehicle_model_id=#{vehicleModelId}
</update>
<update id="updateIsdalByVehicleModelId" parameterType="com.xxfc.platform.vehicle.entity.VehicleCata">
update vehicle_cata set isdel=#{isdel} where vehicle_model_id=#{vehicleModelId}
</update>
<update id="updateIsdalByVehicleCataId" parameterType="com.xxfc.platform.vehicle.entity.VehicleCata">
update vehicle_cata set isdel=#{isdel} where cata_id=#{cataId}
</update>
</mapper>
\ No newline at end of file
......@@ -26,4 +26,8 @@
</if>
ORDER BY vmqc.id ASC
</select>
<update id="updateScoreByModelIdAndavgScore">
update `vehicle_model` set `score`=(`score`+#{avgScore})/2 where `id`=#{modelId}
</update>
</mapper>
\ No newline at end of file
......@@ -7,12 +7,12 @@
<insert id="addPlatCataList" parameterType="java.util.List">
insert into vehicle_plat_cata (
parent_id,name,icon,depict,rank,level,state,crt_time,upd_time,isMore
parent_id,name,icon,depict,rank,level,state,crt_time,upd_time,isMore,start_using
) VALUES
<foreach collection ="vpclist" item="vpc" index="index" separator =",">
(#{vpc.parentId},#{vpc.name},#{vpc.icon},#{vpc.depict}
,#{vpc.rank},#{vpc.level},#{vpc.state},#{vpc.crtTime}
,#{vpc.updTime},#{vpc.isMore})
,#{vpc.updTime},#{vpc.isMore},#{vpc.startUsing})
</foreach>
</insert>
......
......@@ -21,4 +21,9 @@
<result property="isDel" column="is_del"/>
</resultMap>
<select id="findVehicleUserScoreDetailByOrderId"
resultType="com.xxfc.platform.vehicle.pojo.dto.VehicleUserScoreDetailDTO">
SELECT vus.user_id as `userId`,vus.ave_score as `aveScore`,vus.comment as `comment`, vus.imgs as `imgs`,vus.crt_time as `crtTime`,vus.scores as `scores`,vm.name as `modelName`,vm.keyword as `modelKeyWorld`
FROM `vehicle_user_score` as `vus` left JOIN `vehicle_model` as `vm` on vus.model_id=vm.id WHERE vus.order_id=#{orderId} ;
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment