Commit 008339bb authored by libin's avatar libin

营地、评价

parent 08c2af74
...@@ -107,7 +107,4 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -107,7 +107,4 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
List<T> list = mapper.selectByExample(example); List<T> list = mapper.selectByExample(example);
return new TableResultResponse<T>(result.getTotal(), list); return new TableResultResponse<T>(result.getTotal(), list);
} }
} }
...@@ -117,7 +117,7 @@ public class CampsiteShopAdminDTO { ...@@ -117,7 +117,7 @@ public class CampsiteShopAdminDTO {
* 具体地址 * 具体地址
*/ */
@ApiModelProperty(value = "具体地址") @ApiModelProperty(value = "具体地址")
private String adress; private String address;
/** /**
* 客服电话 * 客服电话
......
...@@ -20,6 +20,8 @@ import lombok.NoArgsConstructor; ...@@ -20,6 +20,8 @@ import lombok.NoArgsConstructor;
@Api("轮播图详细列表") @Api("轮播图详细列表")
public class CampsiteShopCarouselDetailDTO { public class CampsiteShopCarouselDetailDTO {
private Integer id;
/** /**
* 图片地址 * 图片地址
*/ */
......
...@@ -119,7 +119,7 @@ public class CampsiteShopDTO implements Serializable { ...@@ -119,7 +119,7 @@ public class CampsiteShopDTO implements Serializable {
* 具体地址 * 具体地址
*/ */
@ApiModelProperty(value = "具体地址") @ApiModelProperty(value = "具体地址")
private String adress; private String address;
/** /**
* 客服电话 * 客服电话
......
...@@ -22,7 +22,7 @@ public class CampsiteShopTagDTO implements Serializable { ...@@ -22,7 +22,7 @@ public class CampsiteShopTagDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Long id; private Integer id;
/** /**
* 店铺id * 店铺id
*/ */
...@@ -39,7 +39,7 @@ public class CampsiteShopTagDTO implements Serializable { ...@@ -39,7 +39,7 @@ public class CampsiteShopTagDTO implements Serializable {
* 类型名称 * 类型名称
*/ */
@ApiModelProperty(value = "类型名称") @ApiModelProperty(value = "类型名称")
private String tagName; private String name;
/** /**
* 创建时间 * 创建时间
......
...@@ -143,9 +143,9 @@ public class CampsiteShop implements Serializable { ...@@ -143,9 +143,9 @@ public class CampsiteShop implements Serializable {
/** /**
* 具体地址 * 具体地址
*/ */
@Column(name = "adress") @Column(name = "address")
@ApiModelProperty(value = "具体地址") @ApiModelProperty(value = "具体地址")
private String adress; private String address;
/** /**
* 客服电话 * 客服电话
......
...@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor; ...@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
import javax.persistence.Table; import javax.persistence.Table;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -41,7 +42,7 @@ public class CampsiteShopAdminPageVo implements Serializable { ...@@ -41,7 +42,7 @@ public class CampsiteShopAdminPageVo implements Serializable {
* 店铺类型名称 * 店铺类型名称
*/ */
@ApiModelProperty(value = "店铺类型名称") @ApiModelProperty(value = "店铺类型名称")
private List<String> storeTypeName; private List<String> storeTypeName = new ArrayList<>();
/** /**
* 热度值 * 热度值
*/ */
......
package com.xxfc.platform.campsite.vo;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/19 18:07
*/
@Data
public class CampsiteShopAdminVO {
/**
* 主键id
*/
@ApiModelProperty("主键id")
private Integer id;
/**
* 店铺名称
*/
@ApiModelProperty(value = "店铺名称")
private String name;
/**
* 店铺logo
*/
@ApiModelProperty(value = "店铺logo")
private String logo;
/**
* 店铺介绍
*/
@ApiModelProperty(value = "店铺介绍")
private String intro;
/**
* 店铺URL
*/
@ApiModelProperty(value = "店铺URL")
private String url;
/**
* 主要联系人
*/
@ApiModelProperty(value = "主要联系人")
private String concat;
/**
* 联系人身份证号
*/
@ApiModelProperty(value = "联系人身份证号")
private String idNumber;
/**
* 联系人电话
*/
@ApiModelProperty(value = "联系人电话")
private String phone;
/**
* 公司id
*/
@ApiModelProperty(value = "公司id")
private Integer companyId;
/**
* 公司名称
*/
@ApiModelProperty(value = "公司名称")
private String companyName;
/**
* 开店时间
*/
@ApiModelProperty(value = "开店时间")
private Long startTime;
/**
* 地址-省/直辖市(编码)
*/
@ApiModelProperty(value = "地址-省/直辖市(编码)")
private Integer province;
/**
* 地址-省/直辖市(名称)
*/
@ApiModelProperty(value = "地址-省/直辖市(名称)")
private String provinceName;
/**
* 地址-市
*/
@ApiModelProperty(value = "地址-市")
private Integer city;
/**
* 地址-市(名称)
*/
@ApiModelProperty(value = "地址-市(名称)")
private String cityName;
/**
* 经度
*/
@ApiModelProperty(value = "经度")
private Double longitude;
/**
* 纬度
*/
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
* 具体地址
*/
@ApiModelProperty(value = "具体地址")
private String address;
/**
* 客服电话
*/
@ApiModelProperty(value = "客服电话")
private String servicePhone;
/**
* 配套设施&收费
*/
@ApiModelProperty(value = "配套设施&收费")
private String configure;
/**
* 店铺详情
*/
@ApiModelProperty(value = "店铺详情")
private String content;
/**
* 店铺状态:0-未开业;1-已开业
*/
@ApiModelProperty(value = "店铺状态:0-未开业;1-已开业")
private Integer status;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 上下架状态 0-创建状态 1-上架 2-下架
*/
@ApiModelProperty(value = "上下架状态 0-创建状态 1-上架 2-下架")
private Integer saleState;
/**
* 轮播图
*/
private List<CampsiteShopCarouselVo> carouse;
/**
* 营地类型
*/
private List<CampsiteTagListVo> campsiteTagListVos;
}
package com.xxfc.platform.campsite.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/17 18:23
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Api("轮播图详细列表")
public class CampsiteShopCarouselAdminDetailVo {
private Integer id;
/**
* 商家id
*/
@ApiModelProperty(value = "商家id")
private Integer shopId;
/**
* 访问链接
*/
@ApiModelProperty(value = "访问链接")
private String url;
/**
* 轮播图片链接
*/
@ApiModelProperty(value = "轮播图片链接")
private String imgUrl;
}
...@@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.dto.*; import com.xxfc.platform.campsite.dto.*;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo; import com.xxfc.platform.campsite.vo.*;
import com.xxfc.platform.campsite.vo.CampsiteShopCarouselDetailVo; import jdk.nashorn.internal.ir.LiteralNode;
import com.xxfc.platform.campsite.vo.CampsiteShopDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopPageVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -72,7 +70,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -72,7 +70,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
BeanUtils.copyProperties(campsiteShopPageDTO,campsiteShopPageVo); BeanUtils.copyProperties(campsiteShopPageDTO,campsiteShopPageVo);
campsiteShopPageVoList.add(campsiteShopPageVo); campsiteShopPageVoList.add(campsiteShopPageVo);
} }
campsiteShopPageVoList.stream().sorted(Comparator.comparing(CampsiteShopPageVo::getHot).reversed().thenComparing(CampsiteShopPageVo::getCrtTime).reversed()); campsiteShopPageVoList.sort(Comparator.comparing(CampsiteShopPageVo::getHot).reversed().thenComparing(CampsiteShopPageVo::getCrtTime).reversed());
campsiteShopPageDataVO.setData(campsiteShopPageVoList); campsiteShopPageDataVO.setData(campsiteShopPageVoList);
return campsiteShopPageDataVO; return campsiteShopPageDataVO;
} }
...@@ -98,18 +96,20 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -98,18 +96,20 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
log.debug("根据店铺id=【{}】查询出店铺轮播图信息:【{}】",id,campsiteShopCarouselDTOS); log.debug("根据店铺id=【{}】查询出店铺轮播图信息:【{}】",id,campsiteShopCarouselDTOS);
} }
List<CampsiteShopCarouselDetailVo> campsiteShopCarouselDetailVos = new ArrayList<>(); List<CampsiteShopCarouselDetailVo> campsiteShopCarouselDetailVos = new ArrayList<>();
campsiteShopCarouselDTOS.forEach(campsiteShopCarouselDetailDTO -> { if (CollectionUtils.isNotEmpty(campsiteShopCarouselDTOS)) {
CampsiteShopCarouselDetailVo carouselDetailVo = new CampsiteShopCarouselDetailVo(); campsiteShopCarouselDTOS.forEach(campsiteShopCarouselDetailDTO -> {
BeanUtils.copyProperties(campsiteShopCarouselDetailDTO,carouselDetailVo); CampsiteShopCarouselDetailVo carouselDetailVo = new CampsiteShopCarouselDetailVo();
campsiteShopCarouselDetailVos.add(carouselDetailVo); BeanUtils.copyProperties(campsiteShopCarouselDetailDTO, carouselDetailVo);
}); campsiteShopCarouselDetailVos.add(carouselDetailVo);
});
}
campsiteShopDetailVo.setCampsiteShopCarouselDetailVos(campsiteShopCarouselDetailVos); campsiteShopDetailVo.setCampsiteShopCarouselDetailVos(campsiteShopCarouselDetailVos);
//从店铺类型表根据店铺id查询 -->类型列表拼接 //从店铺类型表根据店铺id查询 -->类型列表拼接
List<String> typeNameList = campsiteShopTagBiz.findByCampsiteShopId(id); List<CampsiteShopTagDTO> shopTagDTOS = campsiteShopTagBiz.findByCampsiteShopId(id);
if (log.isDebugEnabled()){ if (log.isDebugEnabled()){
log.debug("根据店铺id=【{}】查询出店铺类型:【{}】",id,typeNameList); log.debug("根据店铺id=【{}】查询出店铺类型:【{}】",id,shopTagDTOS);
} }
campsiteShopDetailVo.setTypeNames(typeNameList); campsiteShopDetailVo.setTypeNames(shopTagDTOS==null?Collections.EMPTY_LIST:shopTagDTOS.stream().map(CampsiteShopTagDTO::getName).collect(Collectors.toList()));
//根据经纬度算距离 //根据经纬度算距离
double distance = getDistance(campsiteShopDetailDTO.getLongitude(),campsiteShopDetailDTO.getLatitude(),longitude,latitude); double distance = getDistance(campsiteShopDetailDTO.getLongitude(),campsiteShopDetailDTO.getLatitude(),longitude,latitude);
if (log.isDebugEnabled()){ if (log.isDebugEnabled()){
...@@ -128,6 +128,20 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -128,6 +128,20 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
if (log.isDebugEnabled()){ if (log.isDebugEnabled()){
log.debug("查询条件:【{}】",campsiteShopAdminFindDTO); log.debug("查询条件:【{}】",campsiteShopAdminFindDTO);
} }
//筛选时间处理
Long startTime = campsiteShopAdminFindDTO.getStartTime();
Long endTime = campsiteShopAdminFindDTO.getEndTime();
if (startTime==null || endTime ==null){
Long processTime = startTime!=null?startTime:(endTime!=null?endTime:null);
if (processTime!=null){
campsiteShopAdminFindDTO.setStartTime(processStartTime(processTime));
campsiteShopAdminFindDTO.setEndTime(processEndTime(processTime));
}
}else {
campsiteShopAdminFindDTO.setStartTime(processStartTime(startTime));
campsiteShopAdminFindDTO.setEndTime(processEndTime(endTime));
}
PageDataVO<CampsiteShopAdminPageDTO> campsiteShopAdminpageDTOPageDataVO = PageDataVO.pageInfo(campsiteShopAdminFindDTO.getPage(),campsiteShopAdminFindDTO.getLimit(),()->mapper.findCampsiteShops(campsiteShopAdminFindDTO)); PageDataVO<CampsiteShopAdminPageDTO> campsiteShopAdminpageDTOPageDataVO = PageDataVO.pageInfo(campsiteShopAdminFindDTO.getPage(),campsiteShopAdminFindDTO.getLimit(),()->mapper.findCampsiteShops(campsiteShopAdminFindDTO));
List<CampsiteShopAdminPageDTO> campsiteShopAdminPageDTOS = campsiteShopAdminpageDTOPageDataVO.getData(); List<CampsiteShopAdminPageDTO> campsiteShopAdminPageDTOS = campsiteShopAdminpageDTOPageDataVO.getData();
if (log.isDebugEnabled()){ if (log.isDebugEnabled()){
...@@ -144,8 +158,12 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -144,8 +158,12 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
if (log.isDebugEnabled()){ if (log.isDebugEnabled()){
log.debug("营地id为:【{}】的类型【{}】",campsiteShopIds,shopTagsMap); log.debug("营地id为:【{}】的类型【{}】",campsiteShopIds,shopTagsMap);
} }
campsiteShopAdminPageDTOS.stream().peek(campsiteShopAdminPageDTO -> campsiteShopAdminPageDTO.setStoreTypeName(shopTagsMap.get(campsiteShopAdminPageDTO.getId()))) campsiteShopAdminPageDTOS = campsiteShopAdminPageDTOS.stream().peek(campsiteShopAdminPageDTO -> {
.sorted(Comparator.comparing(CampsiteShopAdminPageDTO::getHot).reversed().thenComparing(CampsiteShopAdminPageDTO::getCrtTime).reversed()); if (Objects.nonNull(shopTagsMap)) {
List<String> tagNames = shopTagsMap.get(campsiteShopAdminPageDTO.getId());
campsiteShopAdminPageDTO.setStoreTypeName(tagNames == null ? new ArrayList<String>() : tagNames);
}
}).sorted(Comparator.comparing(CampsiteShopAdminPageDTO::getHot).reversed().thenComparing(CampsiteShopAdminPageDTO::getCrtTime).reversed()).collect(Collectors.toList());
//组装数据 //组装数据
campsiteShopAdminPageDataVos.setTotalPage(campsiteShopAdminpageDTOPageDataVO.getTotalPage()); campsiteShopAdminPageDataVos.setTotalPage(campsiteShopAdminpageDTOPageDataVO.getTotalPage());
campsiteShopAdminPageDataVos.setTotalCount(campsiteShopAdminpageDTOPageDataVO.getTotalCount()); campsiteShopAdminPageDataVos.setTotalCount(campsiteShopAdminpageDTOPageDataVO.getTotalCount());
...@@ -163,6 +181,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -163,6 +181,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int saveCampsiteShop(CampsiteShopAdminDTO campsiteShopAdminDTO) { public int saveCampsiteShop(CampsiteShopAdminDTO campsiteShopAdminDTO) {
CampsiteShop campsiteShop = new CampsiteShop(); CampsiteShop campsiteShop = new CampsiteShop();
campsiteShopAdminDTO.setName(campsiteShopAdminDTO.getName()==null?null:campsiteShopAdminDTO.getName().trim());
BeanUtils.copyProperties(campsiteShopAdminDTO,campsiteShop); BeanUtils.copyProperties(campsiteShopAdminDTO,campsiteShop);
int effectRows = 0; int effectRows = 0;
if (Objects.nonNull(campsiteShopAdminDTO.getId())){ if (Objects.nonNull(campsiteShopAdminDTO.getId())){
...@@ -194,6 +213,44 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -194,6 +213,44 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
return effectRows; return effectRows;
} }
/**
* 编辑查询
* @param id
* @return
*/
public CampsiteShopAdminVO findByCampsiteId(Integer id) {
CampsiteShopAdminVO campsiteShopAdminVO = new CampsiteShopAdminVO();
CampsiteShop campsiteShop = new CampsiteShop();
campsiteShop.setId(id);
CampsiteShop shop = mapper.selectOne(campsiteShop);
BeanUtils.copyProperties(shop, campsiteShopAdminVO);
//根据营地id查询轮播
List<CampsiteShopCarouselDetailDTO> shopCarouselDetailDTOS = campsiteShopCarouselBiz.findByCampsiteShopId(id);
List<CampsiteShopCarouselVo> campsiteShopCarouselVos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(shopCarouselDetailDTOS)) {
shopCarouselDetailDTOS.forEach(campsiteShopCarouselDetailDTO -> {
CampsiteShopCarouselVo campsiteShopCarouselVo = new CampsiteShopCarouselVo();
BeanUtils.copyProperties(campsiteShopCarouselDetailDTO, campsiteShopCarouselVo);
campsiteShopCarouselVos.add(campsiteShopCarouselVo);
});
}
campsiteShopAdminVO.setCarouse(campsiteShopCarouselVos);
//根据营地id查询营地类型
List<CampsiteShopTagDTO> shopTagDTOS = campsiteShopTagBiz.findByCampsiteShopId(id);
List<CampsiteTagListVo> shopTagVos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(shopTagDTOS)) {
shopTagDTOS.forEach(campsiteShopTagDTO -> {
CampsiteTagListVo campsiteTagListVo = new CampsiteTagListVo();
BeanUtils.copyProperties(campsiteShopTagDTO, campsiteTagListVo);
shopTagVos.add(campsiteTagListVo);
});
campsiteShopAdminVO.setCampsiteTagListVos(shopTagVos);
}
campsiteShopAdminVO.setCarouse(campsiteShopAdminVO.getCarouse()==null?new ArrayList<CampsiteShopCarouselVo>():campsiteShopAdminVO.getCarouse());
campsiteShopAdminVO.setCampsiteTagListVos(campsiteShopAdminVO.getCampsiteTagListVos()==null?new ArrayList<CampsiteTagListVo>():campsiteShopAdminVO.getCampsiteTagListVos());
return campsiteShopAdminVO;
}
/** /**
* 逻辑删除 * 逻辑删除
* @param id * @param id
...@@ -212,6 +269,46 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -212,6 +269,46 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
public int updateCampsiteSaleStatus(Integer id, Integer status) { public int updateCampsiteSaleStatus(Integer id, Integer status) {
return mapper.updateCampsiteSaleStatus(id,status); return mapper.updateCampsiteSaleStatus(id,status);
} }
/**
* 检验营地名称是否存在
* @param id
* @param name
* @return
*/
public Boolean campsiteNameExist(Integer id, String name) {
int count = mapper.checkNameExist(id,name);
if (count == 0) {
return false;
}
return true;
}
/**
* 处理开始时间
* @param time
* @return
*/
private long processStartTime(Long time){
Date processStartDate = new Date(time);
processStartDate.setHours(0);
processStartDate.setMinutes(0);
processStartDate.setSeconds(0);
return processStartDate.getTime();
}
/**
* 处理结束时间
* @param time
* @return
*/
private long processEndTime(Long time){
Date processEndDate = new Date(time);
processEndDate.setHours(23);
processEndDate.setMinutes(59);
processEndDate.setSeconds(59);
return processEndDate.getTime();
}
/** /**
* 根据经纬度,计算两点间的距离 * 根据经纬度,计算两点间的距离
* *
...@@ -240,4 +337,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> { ...@@ -240,4 +337,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
return s; return s;
} }
} }
\ No newline at end of file
...@@ -34,7 +34,7 @@ public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteSh ...@@ -34,7 +34,7 @@ public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteSh
* @param id * @param id
* @return * @return
*/ */
public List<String> findByCampsiteShopId(Integer id) { public List<CampsiteShopTagDTO> findByCampsiteShopId(Integer id) {
return mapper.findByCampsiteShopId(id); return mapper.findByCampsiteShopId(id);
} }
...@@ -49,7 +49,7 @@ public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteSh ...@@ -49,7 +49,7 @@ public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteSh
return null; return null;
} }
Map<Integer, List<String>> shopOfTagsMap = campsiteShopTagDTOS.stream() Map<Integer, List<String>> shopOfTagsMap = campsiteShopTagDTOS.stream()
.collect(Collectors.groupingBy(CampsiteShopTagDTO::getShopId,Collectors.mapping(CampsiteShopTagDTO::getTagName,Collectors.toList()))); .collect(Collectors.groupingBy(CampsiteShopTagDTO::getShopId,Collectors.mapping(CampsiteShopTagDTO::getName,Collectors.toList())));
return shopOfTagsMap; return shopOfTagsMap;
} }
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.campsite.biz; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.campsite.biz;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.sun.org.apache.regexp.internal.RE;
import com.xxfc.platform.campsite.dto.CampsiteTagListDTO; import com.xxfc.platform.campsite.dto.CampsiteTagListDTO;
import com.xxfc.platform.campsite.vo.CampsiteTagListVo; import com.xxfc.platform.campsite.vo.CampsiteTagListVo;
import com.xxfc.platform.campsite.vo.CampsiteTagVo; import com.xxfc.platform.campsite.vo.CampsiteTagVo;
...@@ -62,6 +63,31 @@ public class CampsiteTagBiz extends BaseBiz<CampsiteTagMapper,CampsiteTag> { ...@@ -62,6 +63,31 @@ public class CampsiteTagBiz extends BaseBiz<CampsiteTagMapper,CampsiteTag> {
return tagVoPageDataVO; return tagVoPageDataVO;
} }
tagVoPageDataVO = JSONObject.parseObject(JSONObject.toJSONString(pageDataVO),new TypeReference<PageDataVO<CampsiteTagVo>>(){}); tagVoPageDataVO = JSONObject.parseObject(JSONObject.toJSONString(pageDataVO),new TypeReference<PageDataVO<CampsiteTagVo>>(){});
tagVoPageDataVO.getData().sort(Comparator.comparing(CampsiteTagVo::getRank).reversed().thenComparing(Comparator.comparing(CampsiteTagVo::getCtrTime).reversed()));
return tagVoPageDataVO; return tagVoPageDataVO;
} }
/**
* 更改是否作为筛选条件
* @param id
* @param status
* @return
*/
public int updateCampsiteTagIsSearchStatus(Integer id, Integer status) {
return mapper.updateCampsiteTagIsearchStatus(id,status);
}
/**
* 营地类型名检验
* @param id
* @param name
* @return
*/
public Boolean checkTagNameExist(Integer id, String name) {
int count = mapper.checkTagNameExist(id,name);
if (count == 0){
return false;
}
return true;
}
} }
\ No newline at end of file
...@@ -55,4 +55,12 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> { ...@@ -55,4 +55,12 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
* @return * @return
*/ */
int updateCampsiteSaleStatus(@Param("id") Integer id, @Param("status") Integer status); int updateCampsiteSaleStatus(@Param("id") Integer id, @Param("status") Integer status);
/**
* 检验营地名称
* @param id
* @param name
* @return
*/
int checkNameExist(@Param("id") Integer id,@Param("name") String name);
} }
...@@ -23,8 +23,7 @@ public interface CampsiteShopTagMapper extends Mapper<CampsiteShopTag> { ...@@ -23,8 +23,7 @@ public interface CampsiteShopTagMapper extends Mapper<CampsiteShopTag> {
* @param shopId * @param shopId
* @return * @return
*/ */
@Select("select `name` from campsite_shop_tag as `cst` left join campsite_tag as `ct` on cst.tag_id=ct.id where `shop_id`=#{shopId}") List<CampsiteShopTagDTO> findByCampsiteShopId(Integer shopId);
List<String> findByCampsiteShopId(Integer shopId);
/** /**
* 根据店铺ids查询 * 根据店铺ids查询
......
...@@ -36,4 +36,21 @@ public interface CampsiteTagMapper extends Mapper<CampsiteTag> { ...@@ -36,4 +36,21 @@ public interface CampsiteTagMapper extends Mapper<CampsiteTag> {
List<CampsiteTagDTO> finCampsiteTagsAll(); List<CampsiteTagDTO> finCampsiteTagsAll();
/**
* 更改筛选条件状态
* @param id
* @param status
* @return
*/
int updateCampsiteTagIsearchStatus(@Param("id") Integer id, @Param("status") Integer status);
/**
* 检验营地类型名
* @param id
* @param name
* @return
*/
int checkTagNameExist(@Param("id") Integer id,@Param("name") String name);
} }
...@@ -8,6 +8,7 @@ import com.xxfc.platform.campsite.dto.CampsiteShopAdminDTO; ...@@ -8,6 +8,7 @@ import com.xxfc.platform.campsite.dto.CampsiteShopAdminDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO; import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO;
import com.xxfc.platform.campsite.entity.CampsiteShop; import com.xxfc.platform.campsite.entity.CampsiteShop;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo; import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -29,8 +30,8 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz, ...@@ -29,8 +30,8 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz,
* @return * @return
*/ */
@ApiOperation(value = "营地列表") @ApiOperation(value = "营地列表")
@GetMapping("/pages") @PostMapping("/pages")
public ObjectRestResponse<PageDataVO<CampsiteShopAdminPageVo>> findCampsiteShopPage(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO){ public ObjectRestResponse<PageDataVO<CampsiteShopAdminPageVo>> findCampsiteShopPage(@RequestBody CampsiteShopAdminFindDTO campsiteShopAdminFindDTO){
PageDataVO<CampsiteShopAdminPageVo> pageVoPageDataVO = getBaseBiz().findCampsiteShopPage(campsiteShopAdminFindDTO); PageDataVO<CampsiteShopAdminPageVo> pageVoPageDataVO = getBaseBiz().findCampsiteShopPage(campsiteShopAdminFindDTO);
return ObjectRestResponse.succ(pageVoPageDataVO); return ObjectRestResponse.succ(pageVoPageDataVO);
} }
...@@ -78,4 +79,16 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz, ...@@ -78,4 +79,16 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz,
} }
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createDefaultFail();
} }
@GetMapping("/exist")
public ObjectRestResponse<Boolean> checkCampsiteNameExist(@RequestParam(value = "id",required = false) Integer id,@RequestParam("name") String name){
Boolean exist = getBaseBiz().campsiteNameExist(id,name==null?"":name.trim());
return ObjectRestResponse.succ(exist);
}
@GetMapping("/campsite/{id}")
public ObjectRestResponse<CampsiteShopAdminVO> findByCampsiteId(@PathVariable("id") Integer id){
CampsiteShopAdminVO campsiteShopAdminVO = getBaseBiz().findByCampsiteId(id);
return ObjectRestResponse.succ(campsiteShopAdminVO);
}
} }
\ No newline at end of file
...@@ -43,4 +43,19 @@ public class CampsiteTagAdminController extends BaseController<CampsiteTagBiz,Ca ...@@ -43,4 +43,19 @@ public class CampsiteTagAdminController extends BaseController<CampsiteTagBiz,Ca
return ObjectRestResponse.succ(tagVoPageDataVO); return ObjectRestResponse.succ(tagVoPageDataVO);
} }
@PutMapping("/searchStatus")
public ObjectRestResponse<Void> updateIsSearchStatus(@RequestParam("id") Integer id,@RequestParam("status") Integer status){
int effectRows = getBaseBiz().updateCampsiteTagIsSearchStatus(id,status);
if (effectRows>0){
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
@GetMapping("/exist")
public ObjectRestResponse<Boolean> checkTagNameExist(@RequestParam(value = "id",required = false) Integer id,@RequestParam("name") String name){
Boolean exist = getBaseBiz().checkTagNameExist(id,name==null?"":name.trim());
return ObjectRestResponse.succ(exist);
}
} }
\ No newline at end of file
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</resultMap> </resultMap>
<select id="findCarousesByShopId" resultType="com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO"> <select id="findCarousesByShopId" resultType="com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO">
select `img_url`as `imgUrl`,`url`as `url` from `campsite_shop_carousel` where shop_id=#{shopId} select `id` as `id`,`img_url`as `imgUrl`,`url`as `url` from `campsite_shop_carousel` where shop_id=#{shopId} and `is_del`=0;
</select> </select>
<update id="updateCarouseStatus"> <update id="updateCarouseStatus">
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<result property="cityName" column="city_name"/> <result property="cityName" column="city_name"/>
<result property="longitude" column="longitude"/> <result property="longitude" column="longitude"/>
<result property="latitude" column="latitude"/> <result property="latitude" column="latitude"/>
<result property="adress" column="adress"/> <result property="address" column="address"/>
<result property="servicePhone" column="service_phone"/> <result property="servicePhone" column="service_phone"/>
<result property="configure" column="configure"/> <result property="configure" column="configure"/>
<result property="content" column="content"/> <result property="content" column="content"/>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
</select> </select>
<select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO"> <select id="findCampsiteShopDetailById" resultType="com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO">
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`adress` as `address`, select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`address` as `address`,
`content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id} `content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id}
</select> </select>
...@@ -55,21 +55,9 @@ ...@@ -55,21 +55,9 @@
SELECT `id`,`name`,`hot`,`crt_time` as `crtTime`,`sale_state` as SELECT `id`,`name`,`hot`,`crt_time` as `crtTime`,`sale_state` as
`saleState` FROM `campsite_shop` `saleState` FROM `campsite_shop`
where `is_del`=0 where `is_del`=0
<if test="startTime != null || endTime!=null"> <if test="startTime != null and endTime!=null">
<choose> and crt_time between #{startTime} and #{endTime}
<when test="startTime!=null and endTime!=null"> </if>
and crt_time between #{startTime} and #{endTime}
</when>
<otherwise>
<if test="startTime!=null">
and crt_time=#{startTime}
</if>
<if test="endTime != null">
and crt_time=#{endTime}
</if>
</otherwise>
</choose>
</if>
<if test="name != null and name != ''"> <if test="name != null and name != ''">
and `name` like concat('%',#{name},'%') and `name` like concat('%',#{name},'%')
</if> </if>
...@@ -82,4 +70,11 @@ ...@@ -82,4 +70,11 @@
<update id="updateCampsiteSaleStatus"> <update id="updateCampsiteSaleStatus">
update `campsite_shop` set `sale_state`=#{status} where `id`=#{id} update `campsite_shop` set `sale_state`=#{status} where `id`=#{id}
</update> </update>
<select id="checkNameExist" resultType="int">
select count(`id`) from `campsite_shop` where `name`=#{name}
<if test="id != null">
and `id`!=#{id}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -14,13 +14,17 @@ ...@@ -14,13 +14,17 @@
</resultMap> </resultMap>
<select id="findByCampsiteShopIds" resultType="com.xxfc.platform.campsite.dto.CampsiteShopTagDTO"> <select id="findByCampsiteShopIds" resultType="com.xxfc.platform.campsite.dto.CampsiteShopTagDTO">
select cst.shop_id as `shopId`,cst.tag_id as `tagId`,ct.name as `tagName` from `campsite_shop_tag` as `cst` inner join `campsite_tag` as `ct` on cst.tag_id=ct.id where cst.is_del=0 select cst.shop_id as `shopId`,cst.tag_id as `tagId`,ct.name as `name` from `campsite_shop_tag` as `cst` inner join `campsite_tag` as `ct` on cst.tag_id=ct.id where cst.is_del=0
and cst.tag_id in and cst.shop_id in
<foreach collection="cspIds" item="tagId" separator="," open="(" close=")"> <foreach collection="cspIds" item="spid" separator="," open="(" close=")">
#{tagId} #{spid}
</foreach> </foreach>
</select> </select>
<select id="findByCampsiteShopId" resultType="com.xxfc.platform.campsite.dto.CampsiteShopTagDTO">
select ct.id as `id`,ct.name as `name` from campsite_shop_tag as `cst` left join campsite_tag as `ct` on cst.tag_id=ct.id where `shop_id`=#{shopId}
</select>
<update id="updateCampsiteTagStatus"> <update id="updateCampsiteTagStatus">
update `campsite_shop_tag` set `is_del`=#{status} where `shop_id`=#{shopId} update `campsite_shop_tag` set `is_del`=#{status} where `shop_id`=#{shopId}
<if test="ids != null and ids.size() != 0"> <if test="ids != null and ids.size() != 0">
...@@ -42,4 +46,5 @@ ...@@ -42,4 +46,5 @@
delete from `campsite_shop_tag` where `shop_id`=#{shopId} ; delete from `campsite_shop_tag` where `shop_id`=#{shopId} ;
</delete> </delete>
</mapper> </mapper>
\ No newline at end of file
...@@ -35,4 +35,15 @@ ...@@ -35,4 +35,15 @@
<select id="finCampsiteTagsAll" resultMap="campsiteTagDTOMap"> <select id="finCampsiteTagsAll" resultMap="campsiteTagDTOMap">
select * from `campsite_tag` where `is_del`=0 select * from `campsite_tag` where `is_del`=0
</select> </select>
<update id="updateCampsiteTagIsearchStatus">
update `campsite_tag` set `is_search`=#{status} where `id`=#{id}
</update>
<select id="checkTagNameExist" resultType="int">
select count(`id`) from `campsite_tag` where `name`=#{name}
<if test="id != null">
and `id`!=#{id}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -57,7 +57,7 @@ public class CampsiteShopBizTest { ...@@ -57,7 +57,7 @@ public class CampsiteShopBizTest {
campsiteShopAdminDTO.setProvinceName("浙江省"); campsiteShopAdminDTO.setProvinceName("浙江省");
campsiteShopAdminDTO.setCity(2342342); campsiteShopAdminDTO.setCity(2342342);
campsiteShopAdminDTO.setCityName("台州市"); campsiteShopAdminDTO.setCityName("台州市");
campsiteShopAdminDTO.setAdress("胡同路23号"); campsiteShopAdminDTO.setAddress("胡同路23号");
campsiteShopAdminDTO.setConcat("zhangsan"); campsiteShopAdminDTO.setConcat("zhangsan");
campsiteShopAdminDTO.setConfigure("dsaasdfasdfa"); campsiteShopAdminDTO.setConfigure("dsaasdfasdfa");
campsiteShopAdminDTO.setContent("sadfasdfasdfasd"); campsiteShopAdminDTO.setContent("sadfasdfasdfasd");
......
package com.xxfc.platform.tour.dto;
import com.xxfc.platform.vehicle.constant.VehicleScoreType;
import lombok.Data;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/18 15:45
*/
@Data
public class ScoreTypeDTO {
/**
* 评分类型
*/
@Enumerated(EnumType.STRING)
private VehicleScoreType vehicleScoreType;
/**
* 评分
*/
private int score;
}
package com.xxfc.platform.tour.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 商品评分
* @data 2019/6/18 15:15
*/
@Data
public class TourUserScoreDTO {
@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;
/**
* 评分类型
*/
@ApiModelProperty(value = "评分类型")
private Integer type;
/**
* 评价分
*/
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 评分明细
*/
@ApiModelProperty(value = "评分明细")
private String scores;
/**
* 是否匿名;0-否;1-是
*/
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 状态:0-未审核;1-已审核;2-审核不通过
*/
@ApiModelProperty(value = "状态:0-未审核;1-已审核;2-审核不通过")
private Integer status;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除;0-正常;1-删除
*/
@ApiModelProperty(value = "是否删除;0-正常;1-删除")
private Integer isDel;
/**
* 服务类型评分
*/
@ApiModelProperty(value = "服务类型评分")
private List<ScoreTypeDTO> scoretype;
}
\ No newline at end of file
package com.xxfc.platform.tour.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description 商品评分
* @data 2019/6/18 15:15
*/
@Data
public class TourUserScoreDetailDTO {
/**
* 用户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 name;
/**
* 商品描述
*/
@ApiModelProperty(value = "商品描述")
private String describes;
/**
* 商品封面
*/
@ApiModelProperty(value = "商品封面")
private String cover;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 评分明细
*/
@ApiModelProperty(value = "评分明细")
private String scores;
}
\ No newline at end of file
package com.xxfc.platform.tour.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description 商品评分
* @data 2019/6/18 15:15
*/
@Data
public class TourUserScoreListDTO {
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 评价分
*/
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 是否匿名;0-否;1-是
*/
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
}
\ No newline at end of file
package com.xxfc.platform.tour.entity;
import java.io.Serializable;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-21 20:27:43
*/
@Data
@Table(name = "tour_user_score")
public class TourUserScore implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 商品id
*/
@Column(name = "model_id")
@ApiModelProperty(value = "商品id")
private Integer modelId;
/**
* 评分类型
*/
@Column(name = "type")
@ApiModelProperty(value = "评分类型")
private Integer type;
/**
* 评价分
*/
@Column(name = "ave_score")
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 评分明细
*/
@Column(name = "scores")
@ApiModelProperty(value = "评分明细")
private String scores;
/**
* 是否匿名;0-否;1-是
*/
@Column(name = "is_anony")
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@Column(name = "comment")
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@Column(name = "imgs")
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 状态:0-未审核;1-已审核;2-审核不通过
*/
@Column(name = "status")
@ApiModelProperty(value = "状态:0-未审核;1-已审核;2-审核不通过")
private Integer status;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除;0-正常;1-删除
*/
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除;0-正常;1-删除")
private Integer isDel;
}
package com.xxfc.platform.tour.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;
}
package com.xxfc.platform.tour.vo;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 订单评价vo
* @data 2019/6/18 15:26
*/
@Data
public class TourUserScoreVo {
/**
* 主键id
*/
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@ApiModelProperty("用户id")
private String userId;
/**
* 用户名
*/
@ApiModelProperty(value = "用户名")
private String userName;
/**
* 用户头像地址
*/
@ApiModelProperty(value = "用户头像地址")
private String headUrl;
/**
* 评分类型
*/
@ApiModelProperty(value = "评分类型")
private Integer type;
/**
* 评价分
*/
@ApiModelProperty(value = "评价分")
private Integer aveScore;
/**
* 是否匿名;0-否;1-是
*/
@ApiModelProperty(value = "是否匿名;0-否;1-是")
private Integer isAnony;
/**
* 评价
*/
@ApiModelProperty(value = "评价")
private String comment;
/**
* 图片
*/
@ApiModelProperty(value = "图片")
private String imgs;
/**
* 商品名称
*/
@ApiModelProperty(value ="商品名称")
private String name;
/**
* 商品封面
*/
@ApiModelProperty(value = "商品封面")
private String cover;
/**
* 商品描述
*/
@ApiModelProperty(value = "商品描述")
private String describes;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 类型-评分
*/
private List<ScoreTypeVo> scoreTypeVos;
}
package com.xxfc.platform.tour.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.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.tour.dto.ScoreTypeDTO;
import com.xxfc.platform.tour.dto.TourUserScoreDTO;
import com.xxfc.platform.tour.dto.TourUserScoreDetailDTO;
import com.xxfc.platform.tour.dto.TourUserScoreListDTO;
import com.xxfc.platform.tour.vo.ScoreTypeVo;
import com.xxfc.platform.tour.vo.TourUserScoreVo;
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.stereotype.Service;
import com.xxfc.platform.tour.entity.TourUserScore;
import com.xxfc.platform.tour.mapper.TourUserScoreMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
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;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-21 20:27:43
*/
@Service
@Slf4j
public class TourUserScoreBiz extends BaseBiz<TourUserScoreMapper,TourUserScore> {
@Resource
private UserFeign userFeign;
/**
* 根据商品id查询
* @param goodId
* @return
*/
public PageDataVO<TourUserScoreVo> findTourUserScorePageByGoodId(Integer goodId, Integer pageNo, Integer pageSize) {
PageDataVO<TourUserScoreVo> pageDataVO = new PageDataVO<>();
//根据模型id查找
PageDataVO<TourUserScoreListDTO> tourUserScoreDTOPageDataVO = PageDataVO.pageInfo(pageNo,pageSize,()->mapper.findyByGoodIdAndApproved(goodId,1));
List<TourUserScoreListDTO> dataVOData = tourUserScoreDTOPageDataVO.getData();
if (CollectionUtils.isEmpty(dataVOData)){
return pageDataVO;
}
if (log.isDebugEnabled()){
log.debug("根据商品id查找出的评价:【{}】",dataVOData);
}
//设置用户信息
List<Integer> userIds = dataVOData.stream().map(TourUserScoreListDTO::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<TourUserScoreVo> tourUserScoreVos = dataVOData.stream().map(vehicleUserScoreListDTO -> {
TourUserScoreVo tourUserScoreVo = new TourUserScoreVo();
BeanUtils.copyProperties(vehicleUserScoreListDTO, tourUserScoreVo);
tourUserScoreVo.setUserName(userMap.get(vehicleUserScoreListDTO.getUserId()).getNickname());
tourUserScoreVo.setHeadUrl(userMap.get(vehicleUserScoreListDTO.getUserId()).getHeadimgurl());
return tourUserScoreVo;
}).sorted(Comparator.comparing(TourUserScoreVo::getCrtTime).reversed()).collect(Collectors.toList());
//组装数据
pageDataVO.setPageNum(tourUserScoreDTOPageDataVO.getPageNum());
pageDataVO.setPageSize(tourUserScoreDTOPageDataVO.getPageSize());
pageDataVO.setTotalCount(tourUserScoreDTOPageDataVO.getTotalCount());
pageDataVO.setTotalPage(tourUserScoreDTOPageDataVO.getTotalPage());
pageDataVO.setData(tourUserScoreVos);
return pageDataVO;
}
/**
* 保存评分
* @param tourUserScoreDTO
* @return
*/
public int saveTourUserScore(TourUserScoreDTO tourUserScoreDTO, AppUserDTO appUserDTO) {
if (log.isDebugEnabled()){
log.debug("用户:【{}】,评分的数据:【{}】",appUserDTO.getNickname(),tourUserScoreDTO);
}
tourUserScoreDTO.setCrtTime(Instant.now().toEpochMilli());
List<ScoreTypeDTO> scoretype = tourUserScoreDTO.getScoretype();
int avgScore =0;
if (CollectionUtils.isNotEmpty(scoretype)) {
//评分明细
tourUserScoreDTO.setScores(JSONObject.toJSONString(scoretype));
//计算平均分值
double avgScored = scoretype.stream().mapToInt(ScoreTypeDTO::getScore).average().getAsDouble();
avgScore = Long.valueOf(Math.round(avgScored)).intValue();
//更改商品的评分
/* if (0 != avgScore) {
tourGoodBiz.updateScoreByModelIdAndavgScore(tourUserScoreDTO.getGoodId(), avgScore);
}*/
}
TourUserScore trourUserScore = new TourUserScore();
BeanUtils.copyProperties(tourUserScoreDTO,trourUserScore);
trourUserScore.setAveScore(avgScore);
trourUserScore.setUserId(appUserDTO.getUserid());
trourUserScore.setUpdTime(Instant.now().toEpochMilli());
return mapper.insertSelective(trourUserScore);
}
/**
* 根据订单id查询订单评价
* @param orderId
* @return
*/
public TourUserScoreVo findTourUserScoreDetailByOrderId(Integer orderId) {
TourUserScoreVo toureUserScoreVo = new TourUserScoreVo();
//根据订单id查询
TourUserScoreDetailDTO tourUserScoreDetailDTO = mapper.findTourUserScoreDetailByOrderId(orderId);
if (log.isDebugEnabled()){
log.debug("根据订单id:【{}】查询到的订单评价内容:【{}】",orderId,tourUserScoreDetailDTO);
}
BeanUtils.copyProperties(tourUserScoreDetailDTO,toureUserScoreVo);
//评分明细数据转换
String scores = tourUserScoreDetailDTO.getScores();
if (StringUtils.isNotEmpty(scores)){
List<ScoreTypeVo> typeVos = JSONObject.parseObject(scores, new TypeReference<List<ScoreTypeVo>>() {});
toureUserScoreVo.setScoreTypeVos(typeVos);
}
//根据用户id查询用户信息
ObjectRestResponse<List<AppUserVo>> appuserResponse = userFeign.getByUserIds(Arrays.asList(tourUserScoreDetailDTO.getUserId()));
if (log.isDebugEnabled()){
log.debug("根据用户id:【{}】查询到的用户信息:【{}】",tourUserScoreDetailDTO.getUserId(),appuserResponse.getData());
}
AppUserVo appUserVo = appuserResponse.getData().get(0);
toureUserScoreVo.setUserName(appUserVo.getNickname());
toureUserScoreVo.setHeadUrl(appUserVo.getHeadimgurl());
return toureUserScoreVo;
}
}
\ No newline at end of file
package com.xxfc.platform.tour.mapper;
import com.xxfc.platform.tour.dto.TourUserScoreDetailDTO;
import com.xxfc.platform.tour.dto.TourUserScoreListDTO;
import com.xxfc.platform.tour.entity.TourUserScore;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* 用户评分表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-21 20:27:43
*/
public interface TourUserScoreMapper extends Mapper<TourUserScore> {
/**
* 根据审核状态和车型id查询评论
* @param goodId
* @param status
* @return
*/
@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 `tour_user_score` where `model_id`=#{goodId}")
List<TourUserScoreListDTO> findyByGoodIdAndApproved(@Param("goodId") Integer goodId, @Param("status") Integer status);
/**
* 根据订单查询评价
* @param orderId
* @return
*/
TourUserScoreDetailDTO findTourUserScoreDetailByOrderId(Integer orderId);
}
package com.xxfc.platform.tour.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;
import com.xxfc.platform.tour.biz.TourUserScoreBiz;
import com.xxfc.platform.tour.dto.TourUserScoreDTO;
import com.xxfc.platform.tour.entity.TourUserScore;
import com.xxfc.platform.tour.vo.TourUserScoreVo;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("tourUserScore")
public class TourUserScoreController extends BaseController<TourUserScoreBiz,TourUserScore> {
/**
* 保存评论
* @param tourUserScoreDTO
* @param appUserDTO
* @return
*/
@PostMapping("/score")
public ObjectRestResponse<Void> saveTourUserScore(@RequestBody @BeanValid TourUserScoreDTO tourUserScoreDTO, AppUserDTO appUserDTO){
int effectRows = getBaseBiz().saveTourUserScore(tourUserScoreDTO,appUserDTO);
if (effectRows>0){
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
/**
* 根据车型查询评论列表 根据评分时间排序
*
* @param modelId
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping("/app/unauth/scores")
public ObjectRestResponse<PageDataVO<TourUserScoreVo>> findVehicleUserScorePageByModelId(@RequestParam("modelId") Integer modelId,
@RequestParam(value = "pageNo",required = false,defaultValue = "1")Integer pageNo,
@RequestParam(value = "pageSize",required = false,defaultValue = "10") Integer pageSize) {
PageDataVO<TourUserScoreVo> pageDataVO = getBaseBiz().findTourUserScorePageByGoodId(modelId,pageNo,pageSize);
return ObjectRestResponse.succ(pageDataVO);
}
/**
* 根据订单id查询评价详情
* @param orderId
* @return
*/
@GetMapping("/score/order/{orderId}")
public ObjectRestResponse findVehicleUserScoreDetailByOrderId(@PathVariable("orderId") Integer orderId){
TourUserScoreVo vehicleUserScoreVo = getBaseBiz().findTourUserScoreDetailByOrderId(orderId);
return ObjectRestResponse.succ(vehicleUserScoreVo);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.tour.mapper.TourUserScoreMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.tour.entity.TourUserScore" id="tourUserScoreMap">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="orderId" column="order_id"/>
<result property="modelId" column="model_id"/>
<result property="type" column="type"/>
<result property="aveScore" column="ave_score"/>
<result property="scores" column="scores"/>
<result property="isAnony" column="is_anony"/>
<result property="comment" column="comment"/>
<result property="imgs" column="imgs"/>
<result property="status" column="status"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="isDel" column="is_del"/>
</resultMap>
<select id="findTourUserScoreDetailByOrderId"
resultType="com.xxfc.platform.tour.dto.TourUserScoreDetailDTO">
SELECT tus.user_id as `userId`,tus.ave_score as `aveScore`,tus.comment as `comment`, tus.imgs as `imgs`,tus.crt_time as `crtTime`,tus.scores as `scores`,tg.name as `name`,tg.describes as `describes`,tg.cover as `cover`
FROM `tour_user_score` as `tus` left JOIN `tour_good` as `tg` on tus.model_id=tg.id WHERE tus.order_id=#{orderId} ;
</select>
</mapper>
...@@ -24,7 +24,7 @@ public interface VehicleUserScoreMapper extends Mapper<VehicleUserScore> { ...@@ -24,7 +24,7 @@ public interface VehicleUserScoreMapper extends Mapper<VehicleUserScore> {
* @param status * @param status
* @return * @return
*/ */
@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}") @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}")
List<VehicleUserScoreListDTO> findyByModelIdAndApproved(@Param("modelId") Integer modelId, @Param("status") Integer status); List<VehicleUserScoreListDTO> findyByModelIdAndApproved(@Param("modelId") Integer modelId, @Param("status") Integer status);
/** /**
......
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