Commit 1847dccc authored by hezhen's avatar hezhen

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

parents c3effd4e c7f48b7d
......@@ -107,4 +107,6 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
List<T> list = mapper.selectByExample(example);
return new TableResultResponse<T>(result.getTotal(), list);
}
}
......@@ -14,7 +14,7 @@ import lombok.Data;
@Data
public class UserMemberDTO {
public static final int ISBIND_BIND = 1;
/**
* 用户id
......
package com.xxfc.platform.campsite.dto;
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 CampsiteShopAdminDTO {
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 adress;
/**
* 客服电话
*/
@ApiModelProperty(value = "客服电话")
private String servicePhone;
/**
* 配套设施&收费
*/
@ApiModelProperty(value = "配套设施&收费")
private String configure;
/**
* 店铺详情
*/
@ApiModelProperty(value = "店铺详情")
private String content;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 轮播图
*/
private List<CampsiteShopCarouselDTO> carouselDTOS;
/**
* 营地类型
*/
private List<Integer> campsiteTagDTOS;
}
package com.xxfc.platform.campsite.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/19 15:44
*/
@Data
@ApiModel(value = "营地查找条件dto")
public class CampsiteShopAdminFindDTO extends PageParam {
/**
* 营地创建时间范围的起始时间
*/
@ApiModelProperty(value = "营地创建时间范围的起始时间")
private Long startTime;
/**
* 营地创建时间范围的结束时间
*/
@ApiModelProperty(value = "营地创建时间范围的结束时间")
private Long endTime;
/**
* 营地的名称
*/
@ApiModelProperty(value = "营地的名称")
private String name;
}
package com.xxfc.platform.campsite.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 营地店铺表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-17 10:28:48
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "营地店铺*后台dto")
public class CampsiteShopAdminPageDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键id")
private Integer id;
/**
* 店铺名称
*/
@ApiModelProperty(value = "店铺名称")
private String name;
/**
* 店铺类型名称
*/
@ApiModelProperty(value = "店铺类型名称")
private List<String> storeTypeName;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
/**
* 上下架状态 0-创建状态 1-上架 2-下架
*/
@ApiModelProperty(value = "上下架状态 0-创建状态 1-上架 2-下架")
private Integer saleState;
}
......@@ -16,12 +16,10 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop_carousel")
@ApiModel(value = "店铺轮播Vo")
public class CampsiteShopCarouselDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
/**
......@@ -42,17 +40,4 @@ public class CampsiteShopCarouselDTO implements Serializable {
@ApiModelProperty(value = "轮播图片链接")
private String imgUrl;
/**
* 图片名称
*/
@ApiModelProperty(value = "图片名称")
private String name;
/**
* 是否删除:0-正常;1-删除
*/
@ApiModelProperty(value = "是否删除:0-正常;1-删除")
private Integer isDel;
}
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop")
@ApiModel(value = "营地店铺dto" )
public class CampsiteShopDTO implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -17,7 +17,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop")
@ApiModel(value = "营地店铺vo")
public class CampsiteShopPageDTO implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -81,4 +80,17 @@ public class CampsiteShopPageDTO implements Serializable {
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
}
......@@ -17,15 +17,12 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop_tag")
@ApiModel(value = "店铺类型vo")
public class CampsiteShopTagDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("首页banner图主键")
private Long id;
/**
* 店铺id
*/
......@@ -39,22 +36,14 @@ public class CampsiteShopTagDTO implements Serializable {
private Integer tagId;
/**
* 创建时间
* 类型名称
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
@ApiModelProperty(value = "类型名称")
private String tagName;
/**
* 修改时间
*/
@ApiModelProperty(value = "修改时间", hidden = true)
private Long updTime;
/**
* 是否删除,0否,1是
* 创建时间
*/
@ApiModelProperty(value = "是否删除,0否,1是")
private Integer isDel;
private Long crtTime;
}
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_tag")
@ApiModel(value = "店铺类型vo")
public class CampsiteTagDTO implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @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;
......
package com.xxfc.platform.campsite.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.List;
/**
* 营地店铺表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-06-17 10:28:48
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "营地店铺*后台vo")
public class CampsiteShopAdminPageVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键id")
private Integer id;
/**
* 店铺名称
*/
@ApiModelProperty(value = "店铺名称")
private String name;
/**
* 店铺类型名称
*/
@ApiModelProperty(value = "店铺类型名称")
private List<String> storeTypeName;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
/**
* 上下架状态 0-创建状态 1-上架 2-下架
*/
@ApiModelProperty(value = "上下架状态 0-创建状态 1-上架 2-下架")
private Integer saleState;
}
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop_carousel")
@ApiModel(value = "店铺轮播Vo")
public class CampsiteShopCarouselVo implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -20,7 +20,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop")
@ApiModel(value = "营地店铺vo")
@Builder
@NoArgsConstructor
......@@ -78,15 +77,25 @@ public class CampsiteShopPageVo implements Serializable {
/**
* 经度
*/
@Column(name = "longitude")
@ApiModelProperty(value = "经度")
private Double longitude;
/**
* 纬度
*/
@Column(name = "latitude")
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
* 热度值
*/
@ApiModelProperty(value = "热度值")
private Integer hot;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Long crtTime;
}
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop_tag")
@ApiModel(value = "店铺类型vo")
public class CampsiteShopTagVo implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_shop")
@ApiModel(value = "营地店铺vo")
public class CampsiteShopVo implements Serializable {
private static final long serialVersionUID = 1L;
......
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @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;
......
......@@ -16,7 +16,6 @@ import java.io.Serializable;
* @date 2019-06-17 10:28:48
*/
@Data
@Table(name = "campsite_tag")
@ApiModel(value = "店铺类型vo")
public class CampsiteTagVo implements Serializable {
private static final long serialVersionUID = 1L;
......
package com.xxfc.platform.campsite.biz;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.CampSiteApplication;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopPageDTO;
import com.xxfc.platform.campsite.dto.*;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo;
import com.xxfc.platform.campsite.vo.CampsiteShopCarouselDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopDetailVo;
import com.xxfc.platform.campsite.vo.CampsiteShopPageVo;
......@@ -19,9 +17,11 @@ import org.springframework.stereotype.Service;
import com.xxfc.platform.campsite.entity.CampsiteShop;
import com.xxfc.platform.campsite.mapper.CampsiteShopMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -72,6 +72,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
BeanUtils.copyProperties(campsiteShopPageDTO,campsiteShopPageVo);
campsiteShopPageVoList.add(campsiteShopPageVo);
}
campsiteShopPageVoList.stream().sorted(Comparator.comparing(CampsiteShopPageVo::getHot).reversed().thenComparing(CampsiteShopPageVo::getCrtTime).reversed());
campsiteShopPageDataVO.setData(campsiteShopPageVoList);
return campsiteShopPageDataVO;
}
......@@ -118,6 +119,81 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
return campsiteShopDetailVo;
}
/**
* 根据创建时间或营地名称来查找营地列表
* @param campsiteShopAdminFindDTO
* @return
*/
public PageDataVO<CampsiteShopAdminPageVo> findCampsiteShopPage(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO) {
if (log.isDebugEnabled()){
log.debug("查询条件:【{}】",campsiteShopAdminFindDTO);
}
PageDataVO<CampsiteShopAdminPageDTO> campsiteShopAdminpageDTOPageDataVO = PageDataVO.pageInfo(campsiteShopAdminFindDTO.getPage(),campsiteShopAdminFindDTO.getLimit(),()->mapper.findCampsiteShops(campsiteShopAdminFindDTO));
List<CampsiteShopAdminPageDTO> campsiteShopAdminPageDTOS = campsiteShopAdminpageDTOPageDataVO.getData();
if (log.isDebugEnabled()){
log.debug("查询结果:【{}】",campsiteShopAdminPageDTOS);
}
PageDataVO<CampsiteShopAdminPageVo> campsiteShopAdminPageDataVos = new PageDataVO<>();
if (CollectionUtils.isEmpty(campsiteShopAdminPageDTOS)){
return campsiteShopAdminPageDataVos;
}
//转换成营地ids
List<Integer> campsiteShopIds = campsiteShopAdminPageDTOS.stream().map(CampsiteShopAdminPageDTO::getId).collect(Collectors.toList());
//根据营地ids查询营地对应的标签 键营地id 值对应的标签列表
Map<Integer,List<String>> shopTagsMap = campsiteShopTagBiz.findByCampsiteShopIds(campsiteShopIds);
if (log.isDebugEnabled()){
log.debug("营地id为:【{}】的类型【{}】",campsiteShopIds,shopTagsMap);
}
campsiteShopAdminPageDTOS.stream().peek(campsiteShopAdminPageDTO -> campsiteShopAdminPageDTO.setStoreTypeName(shopTagsMap.get(campsiteShopAdminPageDTO.getId())))
.sorted(Comparator.comparing(CampsiteShopAdminPageDTO::getHot).reversed().thenComparing(CampsiteShopAdminPageDTO::getCrtTime).reversed());
//组装数据
campsiteShopAdminPageDataVos.setTotalPage(campsiteShopAdminpageDTOPageDataVO.getTotalPage());
campsiteShopAdminPageDataVos.setTotalCount(campsiteShopAdminpageDTOPageDataVO.getTotalCount());
campsiteShopAdminPageDataVos.setPageSize(campsiteShopAdminpageDTOPageDataVO.getPageSize());
campsiteShopAdminPageDataVos.setPageNum(campsiteShopAdminpageDTOPageDataVO.getPageNum());
campsiteShopAdminPageDataVos.setData(JSONObject.parseObject(JSONObject.toJSONString(campsiteShopAdminPageDTOS),new TypeReference<List<CampsiteShopAdminPageVo>>(){}));
return campsiteShopAdminPageDataVos;
}
/**
* 营地保存或更新
* @param campsiteShopAdminDTO
* @return
*/
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int saveCampsiteShop(CampsiteShopAdminDTO campsiteShopAdminDTO) {
CampsiteShop campsiteShop = new CampsiteShop();
BeanUtils.copyProperties(campsiteShopAdminDTO,campsiteShop);
int effectRows = 0;
if (Objects.nonNull(campsiteShopAdminDTO.getId())){
if (log.isDebugEnabled()){
log.debug("更新营地的信息:【{}】",campsiteShop);
}
//更新操作
campsiteShop.setUpdTime(Instant.now().toEpochMilli());
effectRows = mapper.updateByPrimaryKeySelective(campsiteShop);
}else {
//保存操作
//保存营地信息
if (log.isDebugEnabled()){
log.debug("保存营地的信息:【{}】",campsiteShop);
}
campsiteShop.setCrtTime(Instant.now().toEpochMilli());
effectRows = mapper.insertSelective(campsiteShop);
}
//保存或更新 * 营地与 轮播图信息
List<CampsiteShopCarouselDTO> carouselDTOS = campsiteShopAdminDTO.getCarouselDTOS();
if (CollectionUtils.isNotEmpty(carouselDTOS)) {
carouselDTOS.stream().peek(campsiteShopCarouselDTO -> campsiteShopCarouselDTO.setShopId(campsiteShop.getId())).count();
}
campsiteShopCarouselBiz.saveBatch(carouselDTOS,campsiteShop.getId());
//保存或更新 * 营地与营地类型信息
List<Integer> campsiteTagDTOS = campsiteShopAdminDTO.getCampsiteTagDTOS();
campsiteShopTagBiz.saveBatch(campsiteTagDTOS,campsiteShop.getId());
return effectRows;
}
/**
* 根据经纬度,计算两点间的距离
*
......@@ -145,4 +221,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper,CampsiteShop> {
s = s * EARTH_RADIUS;
return s;
}
}
\ No newline at end of file
......@@ -2,13 +2,20 @@ package com.xxfc.platform.campsite.biz;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.campsite.entity.CampsiteShopCarousel;
import com.xxfc.platform.campsite.mapper.CampsiteShopCarouselMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 店铺轮播表
......@@ -18,6 +25,7 @@ import java.util.List;
* @date 2019-06-17 10:28:48
*/
@Service
@Slf4j
public class CampsiteShopCarouselBiz extends BaseBiz<CampsiteShopCarouselMapper,CampsiteShopCarousel> {
/**
......@@ -28,4 +36,32 @@ public class CampsiteShopCarouselBiz extends BaseBiz<CampsiteShopCarouselMapper,
public List<CampsiteShopCarouselDetailDTO> findByCampsiteShopId(Integer id) {
return mapper.findCarousesByShopId(id);
}
/**
* 批量保存
* @param carouselDTOS
* @return
*/
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int saveBatch(List<CampsiteShopCarouselDTO> carouselDTOS,Integer shopId) {
List<Integer> ids =null;
List<CampsiteShopCarouselDTO> shopCarouselDTOS=null;
if (CollectionUtils.isNotEmpty(carouselDTOS)){
ids = carouselDTOS.stream().filter(campsiteShopCarouselDTO -> Objects.nonNull(campsiteShopCarouselDTO.getId())).map(CampsiteShopCarouselDTO::getId).collect(Collectors.toList());
shopCarouselDTOS = carouselDTOS.stream()
.filter(campsiteShopCarouselDTO -> Objects.isNull(campsiteShopCarouselDTO.getId()))
.collect(Collectors.toList());
}
if (log.isDebugEnabled()){
log.debug("更新的营地id:【{}】的轮播图信息id:【{}】",shopId,ids);
}
int effectRows = mapper.updateCarouseStatus(ids, shopId, 1);
if (CollectionUtils.isEmpty(shopCarouselDTOS)){
return effectRows;
}
if (log.isDebugEnabled()){
log.debug("保存营地id:【{}】的轮播图信息:【{}】",shopId,shopCarouselDTOS);
}
return mapper.saveBatch(shopCarouselDTOS);
}
}
\ No newline at end of file
package com.xxfc.platform.campsite.biz;
import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopTagDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.campsite.entity.CampsiteShopTag;
import com.xxfc.platform.campsite.mapper.CampsiteShopTagMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 店铺类型表
......@@ -17,6 +27,7 @@ import java.util.List;
* @date 2019-06-17 10:28:48
*/
@Service
@Slf4j
public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteShopTag> {
/**
* 根据店铺id查询
......@@ -26,4 +37,43 @@ public class CampsiteShopTagBiz extends BaseBiz<CampsiteShopTagMapper,CampsiteSh
public List<String> findByCampsiteShopId(Integer id) {
return mapper.findByCampsiteShopId(id);
}
/**
* 根据店铺ids查询
* @param campsiteShopIds
* @return
*/
public Map<Integer, List<String>> findByCampsiteShopIds(List<Integer> campsiteShopIds) {
List<CampsiteShopTagDTO> campsiteShopTagDTOS = mapper.findByCampsiteShopIds(campsiteShopIds);
if (CollectionUtils.isEmpty(campsiteShopTagDTOS)){
return null;
}
Map<Integer, List<String>> shopOfTagsMap = campsiteShopTagDTOS.stream()
.collect(Collectors.groupingBy(CampsiteShopTagDTO::getShopId,Collectors.mapping(CampsiteShopTagDTO::getTagName,Collectors.toList())));
return shopOfTagsMap;
}
/**
* 批量保存
* @param campsiteTagIds
* @return
*/
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int saveBatch(List<Integer> campsiteTagIds,Integer shopId) {
int effectRows = mapper.deleteByShopId(shopId);
if (CollectionUtils.isNotEmpty(campsiteTagIds)){
List<CampsiteShopTagDTO> campsiteShopTagDTOS = campsiteTagIds.stream().map(id -> {
CampsiteShopTagDTO campsiteShopTagDTO = new CampsiteShopTagDTO();
campsiteShopTagDTO.setTagId(id);
campsiteShopTagDTO.setShopId(shopId);
campsiteShopTagDTO.setCrtTime(Instant.now().toEpochMilli());
return campsiteShopTagDTO;
}).collect(Collectors.toList());
if (log.isDebugEnabled()){
log.debug("保存的营地与标签的信息:【{}】",campsiteShopTagDTOS);
}
mapper.saveBatch(campsiteShopTagDTOS);
}
return effectRows;
}
}
\ No newline at end of file
package com.xxfc.platform.campsite.mapper;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDetailDTO;
import com.xxfc.platform.campsite.entity.CampsiteShopCarousel;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -22,4 +24,8 @@ public interface CampsiteShopCarouselMapper extends Mapper<CampsiteShopCarousel>
* @return
*/
List<CampsiteShopCarouselDetailDTO> findCarousesByShopId(Integer shopId);
int updateCarouseStatus(@Param("ids") List<Integer> ids, @Param("shopId") Integer shopId, @Param("status") int status);
int saveBatch(@Param("sc") List<CampsiteShopCarouselDTO> shopCarouselDTOS);
}
package com.xxfc.platform.campsite.mapper;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminPageDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopDetailDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopPageDTO;
import com.xxfc.platform.campsite.entity.CampsiteShop;
......@@ -30,4 +32,11 @@ public interface CampsiteShopMapper extends Mapper<CampsiteShop> {
* @return
*/
CampsiteShopDetailDTO findCampsiteShopDetailById(Integer id);
/**
* 根据条件查询
* @param campsiteShopAdminFindDTO
* @return
*/
List<CampsiteShopAdminPageDTO> findCampsiteShops(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO);
}
package com.xxfc.platform.campsite.mapper;
import com.xxfc.platform.campsite.dto.CampsiteShopTagDTO;
import com.xxfc.platform.campsite.entity.CampsiteShopTag;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;
......@@ -22,4 +25,17 @@ public interface CampsiteShopTagMapper extends Mapper<CampsiteShopTag> {
*/
@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<String> findByCampsiteShopId(Integer shopId);
/**
* 根据店铺ids查询
* @param campsiteShopIds
* @return
*/
List<CampsiteShopTagDTO> findByCampsiteShopIds(@Param("cspIds") List<Integer> campsiteShopIds);
int updateCampsiteTagStatus(@Param("ids") List<Long> ids,@Param("status") Integer status, @Param("shopId") Integer shopId);
int saveBatch(@Param("stgdtos") List<CampsiteShopTagDTO> shopTagDTOS);
int deleteByShopId(Integer shopId);
}
......@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
*/
@RestController
@RequestMapping("/campsiteShop")
@Api(value = "营地店铺",tags = "营地店铺")
@Api(value = "营地店铺",tags = "App营地店铺")
public class CampsiteShopController extends BaseController<CampsiteShopBiz,CampsiteShop> {
......@@ -59,4 +59,6 @@ public class CampsiteShopController extends BaseController<CampsiteShopBiz,Camps
CampsiteShopDetailVo campsiteShopDetailVo = getBaseBiz().findCampsiteShopDetailById(id,longitude,latitude);
return ObjectRestResponse.succ(campsiteShopDetailVo);
}
}
\ No newline at end of file
......@@ -27,12 +27,12 @@ import java.util.List;
public class CampsiteTagController extends BaseController<CampsiteTagBiz,CampsiteTag> {
/**
* 查询营地列表
* 查询营地类型列表
* @return
*/
@GetMapping("/app/unauth/tags")
@IgnoreClientToken
@ApiOperation(value = "营地列表")
@ApiOperation(value = "营地类型列表")
public ObjectRestResponse<CampsiteTagListVo> findCampstieTags(){
List<CampsiteTagListVo> campsiteTagListVolist = getBaseBiz().findCampsiteTags();
return ObjectRestResponse.succ(campsiteTagListVolist);
......
package com.xxfc.platform.campsite.rest.admin;
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.campsite.biz.CampsiteShopBiz;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO;
import com.xxfc.platform.campsite.entity.CampsiteShop;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
/**
* @author libin
* @version 1.0
* @description 营地店铺
* @data 2019/6/17 13:37
*/
@RestController
@RequestMapping("/admin/campsiteShop")
@Api(value = "营地店铺",tags = "后台营地店铺")
public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz,CampsiteShop> {
/**
* 按条件分页查询 营地列表
* @param campsiteShopAdminFindDTO
* @return
*/
@ApiOperation(value = "营地列表")
@GetMapping("/pages")
public ObjectRestResponse<PageDataVO<CampsiteShopAdminPageVo>> findCampsiteShopPage(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO){
PageDataVO<CampsiteShopAdminPageVo> pageVoPageDataVO = getBaseBiz().findCampsiteShopPage(campsiteShopAdminFindDTO);
return ObjectRestResponse.succ(pageVoPageDataVO);
}
/**
* 营地保存
* @param campsiteShopAdminDTO
* @return
*/
@PostMapping("/save")
public ObjectRestResponse<Void> saveCampistieShop(@RequestBody CampsiteShopAdminDTO campsiteShopAdminDTO){
int effectRows = getBaseBiz().saveCampsiteShop(campsiteShopAdminDTO);
if (effectRows>0){
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createDefaultFail();
}
}
\ No newline at end of file
package com.xxfc.platform.campsite.rest.admin;
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 com.xxfc.platform.campsite.vo.CampsiteTagListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 营地类型
* @data 2019/6/17 13:36
*/
@RestController
@RequestMapping("/admin/campsiteTag")
@Api(tags = "营地类型")
public class CampsiteTagAdminController extends BaseController<CampsiteTagBiz,CampsiteTag> {
}
\ No newline at end of file
......@@ -14,6 +14,22 @@
</resultMap>
<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 `img_url`as `imgUrl`,`url`as `url` from `campsite_shop_carousel` where shop_id=#{shopId}
</select>
<update id="updateCarouseStatus">
update `campsite_shop_carousel` set `is_del`=#{status} where `shop_id`=#{shopId}
<if test="ids != null and ids.size() != 0">
and `id` not in <foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
</update>
<insert id="saveBatch" >
insert into `campsite_shop_carousel` (`shop_id`,`img_url`)values
<foreach collection="sc" item="s" separator=",">
(#{s.shopId} ,#{s.imgUrl} )
</foreach>;
</insert>
</mapper>
\ No newline at end of file
......@@ -30,11 +30,13 @@
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="isDel" column="is_del"/>
<result property="hot" column="hot"/>
<result property="saleState" column="sale_state"/>
</resultMap>
<select id="findCampsiteShopsByType" resultType="com.xxfc.platform.campsite.dto.CampsiteShopPageDTO">
select cs.id as `id`,cs.name as `name`,cs.logo as `logo`,cs.url as `url`,cs.province_name as `provinceName`,cs.city_name as `cityName`,
cs.longitude as `longitude`,cs.latitude as `latitude`,ct.id as `storeId`,ct.name as `storeTypeName`
cs.longitude as `longitude`,cs.latitude as `latitude`,cs.hot as `hot`,cs.crt_time as `crtTime`,ct.id as `storeId`,ct.name as `storeTypeName`
FROM `campsite_shop_tag` cst
left JOIN `campsite_shop` cs on cst.shop_id=cs.id
left JOIN `campsite_tag` ct on cst.tag_id=ct.id
......@@ -47,4 +49,30 @@
select `name` as `name`,`province_name` as `provinceName`,`city_name` as `cityName`,`adress` as `address`,
`content` as `content`,`configure` as `configure`,`longitude` as `longitude`,`latitude` as `latitude` from `campsite_shop` where `id`=#{id}
</select>
<select id="findCampsiteShops" parameterType="com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO" resultType="com.xxfc.platform.campsite.dto.CampsiteShopAdminPageDTO">
SELECT `id`,`name`,`hot`,`crt_time` as `crtTime`,`sale_state` as
`saleState` FROM `campsite_shop`
<where>
<if test="startTime != null || endTime!=null">
<choose>
<when test="startTime!=null and endTime!=null">
crt_time between #{startTime} and #{endTime}
</when>
<otherwise>
<if test="startTime!=null">
crt_time=#{startTime}
</if>
<if test="endTime != null">
crt_time=#{endTime}
</if>
</otherwise>
</choose>
</if>
<if test="name != null and name != ''">
and `name` like concat('%',#{name},'%')
</if>
</where>
</select>
</mapper>
\ No newline at end of file
......@@ -13,4 +13,33 @@
<result property="isDel" column="is_del"/>
</resultMap>
<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
and cst.tag_id in
<foreach collection="cspIds" item="tagId" separator="," open="(" close=")">
#{tagId}
</foreach>
</select>
<update id="updateCampsiteTagStatus">
update `campsite_shop_tag` set `is_del`=#{status} where `shop_id`=#{shopId}
<if test="ids != null and ids.size() != 0">
and `id` not in <foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</if>
</update>
<insert id="saveBatch">
insert into `campsite_shop_tag`(`shop_id`,`tag_id`,`crt_time`)values
<foreach collection="stgdtos" item="stg" separator=",">
(#{stg.shopId} ,#{stg.tagId} ,#{stg.crtTime} )
</foreach>
</insert>
<delete id="deleteByShopId">
delete from `campsite_shop_tag` where `shop_id`=#{shopId} ;
</delete>
</mapper>
\ No newline at end of file
package com.xxfc.service;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.campsite.CampSiteApplication;
import com.xxfc.platform.campsite.biz.CampsiteShopBiz;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopAdminFindDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopCarouselDTO;
import com.xxfc.platform.campsite.dto.CampsiteShopTagDTO;
import com.xxfc.platform.campsite.vo.CampsiteShopAdminPageVo;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.Instant;
import java.util.Arrays;
/**
* @author libin
* @version 1.0
* @description TODO
* @data 2019/6/19 16:41
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CampSiteApplication.class)
@Slf4j
public class CampsiteShopBizTest {
@Autowired
private CampsiteShopBiz campsiteShopBiz;
@Test
public void testList(){
CampsiteShopAdminFindDTO campsiteShopAdminFindDTO = new CampsiteShopAdminFindDTO();
campsiteShopAdminFindDTO.setName("kon");
Instant now = Instant.now();
long start = now.minusMillis(3 * 24 * 60 * 60 * 1000).toEpochMilli();
campsiteShopAdminFindDTO.setStartTime(start);
campsiteShopAdminFindDTO.setEndTime(now.toEpochMilli());
campsiteShopAdminFindDTO.setPage(1);
campsiteShopAdminFindDTO.setLimit(10);
PageDataVO<CampsiteShopAdminPageVo> campsiteShopPage = campsiteShopBiz.findCampsiteShopPage(campsiteShopAdminFindDTO);
System.out.println(campsiteShopPage.getData());
}
@Test
public void testSae(){
CampsiteShopAdminDTO campsiteShopAdminDTO = new CampsiteShopAdminDTO();
// campsiteShopAdminDTO.setId(13);
campsiteShopAdminDTO.setProvince(2323);
campsiteShopAdminDTO.setProvinceName("浙江省");
campsiteShopAdminDTO.setCity(2342342);
campsiteShopAdminDTO.setCityName("台州市");
campsiteShopAdminDTO.setAdress("胡同路23号");
campsiteShopAdminDTO.setConcat("zhangsan");
campsiteShopAdminDTO.setConfigure("dsaasdfasdfa");
campsiteShopAdminDTO.setContent("sadfasdfasdfasd");
campsiteShopAdminDTO.setHot(23);
campsiteShopAdminDTO.setLogo("https://xxtest.upyuns.com/image/admin/2019-06-13/23.png");
campsiteShopAdminDTO.setName("kong");
campsiteShopAdminDTO.setPhone("132121212121");
campsiteShopAdminDTO.setServicePhone("4545454545");
campsiteShopAdminDTO.setLatitude(39.983171);
campsiteShopAdminDTO.setLongitude(116.308479);
CampsiteShopCarouselDTO campsiteShopCarouselDTO = new CampsiteShopCarouselDTO();
//campsiteShopCarouselDTO.setId(12);
campsiteShopCarouselDTO.setImgUrl("https://xxtest.upyuns.com/image/admin/2019-06-13/23.png");
campsiteShopAdminDTO.setCarouselDTOS(Arrays.asList(campsiteShopCarouselDTO));
campsiteShopAdminDTO.setCampsiteTagDTOS(Arrays.asList(1));
System.out.println("保存的json信息:【{}】"+JSONObject.toJSONString(campsiteShopAdminDTO));
campsiteShopBiz.saveCampsiteShop(campsiteShopAdminDTO);
}
}
......@@ -69,5 +69,10 @@ public class OrderMemberDetail implements Serializable {
@ApiModelProperty(value = "折扣比例 80即 八折")
private Integer rebate;
/**
* 会员等级
*/
@Column(name = "member_level")
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
}
......@@ -287,5 +287,11 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty(value = "剩余需要退还的钱(押金)")
private BigDecimal returnPayResidue;
/**
* 预定记录id
*/
@Column(name = "book_record_id")
@ApiModelProperty(value = "预定记录id")
private Long bookRecordId;
}
......@@ -114,9 +114,11 @@ public class OrderVehicaleCrosstown {
/**
* 是否有扣除项
*/
private Boolean isDed;
private Boolean deduction;
/**
* 扣除项明细
* 扣除项明细 json
* deductions: 扣除项
* cost:费用
*/
private String dedDetail;
......@@ -129,4 +131,14 @@ public class OrderVehicaleCrosstown {
* 1、交车, 2、还车
*/
private Integer type;
/**
* 合计扣除费用
*/
private Integer deductionCost;
/**
* 剩余押金
*/
private Integer restDeposit;
}
\ No newline at end of file
......@@ -17,5 +17,4 @@ import java.util.List;
public class MemberBO extends OrderMemberDetail implements OrderDetail {
private BaseOrder order;
private BaseUserMemberLevel baseUserMemberLevel;
private Integer levelNum;
}
......@@ -2,19 +2,22 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -35,8 +38,15 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TR
* @date 2019-05-15 21:30:33
*/
@Service
@Slf4j
public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
OrderMemberDetailBiz orderMemberDetailBiz;
@Autowired
OrderTourDetailBiz orderTourDetailBiz;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
......@@ -46,6 +56,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
ThirdFeign thirdFeign;
@Autowired
TourFeign tourFeign;
@Autowired
UserFeign userFeign;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap);
}
......@@ -60,9 +76,14 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
cancelAble = new HashMap<Integer, List<Integer>>();
cancelAble.put(OrderTypeEnum.RentVehicle.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
add(OrderStatusEnum.ORDER_TOSTART.getCode());
}});
cancelAble.put(OrderTypeEnum.TOUR.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
add(OrderStatusEnum.ORDER_TOSTART.getCode());
}});
cancelAble.put(OrderTypeEnum.MEMBER.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
}
......@@ -114,8 +135,66 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
}
//处理取消流程
if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
//取消租车预定
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
setOrderId(baseOrder.getId());
}});
//增加库存
tourFeign.stock(otd.getSpePriceId(), otd.getTotalNumber(), TourFeign.STOCK_PLUS);
}
}else {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
public void payNotifyHandle(String orderNo, String tradeNo) {
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo);
}});
if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus()) && baseOrder.getHasPay().equals(SYS_FALSE)) {
BaseOrder updateOrder = new BaseOrder() {{
setNo(orderNo);
setOutTradeNo(tradeNo);
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
}};
//如果是会员订单,则触发会员效益
if(OrderTypeEnum.MEMBER.getCode().equals(baseOrder.getType())) {
//直接设置订单完成
updateOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
OrderMemberDetail omd = orderMemberDetailBiz.selectOne(new OrderMemberDetail(){{
setOrderId(baseOrder.getId());
}});
try {
userFeign.buyMember(new UserMemberDTO() {{
setUserId(baseOrder.getUserId());
setDiscount(omd.getRebate());
setIsBind(ISBIND_BIND);
setMemberLevel(omd.getMemberLevel());
setRentFreeDays(omd.getRentFreeNum());
}});
}catch (Exception e){
log.error(e.getMessage(), e);
}
}else if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
//车辆预定审核通过
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
//暂无处理
}
this.updateSelectiveById(updateOrder);
} else {
log.error(" order has payed , orderNo:{}, tradeNo:{} ", orderNo, tradeNo);
}
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ import org.springframework.context.annotation.Configuration;
* @author xuxueli 2017-04-28
*/
@Slf4j
//@Configuration
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
......
......@@ -4,24 +4,31 @@ import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
//@JobHandler(value = "httpJobHandler")
//@Component
@JobHandler(value = "httpJobHandler")
@Component
@Slf4j
public class HttpJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
try {
for(int i =0; i < 10; i++) {
XxlJobLogger.log("helloword");
return SUCCESS;
log.info("helloword");
}
ReturnT returnT = new ReturnT();
returnT.setCode(100);
returnT.setMsg("成功");
returnT.setContent(param);
return returnT;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
......
......@@ -3,6 +3,7 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
......@@ -19,8 +20,11 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO;
......@@ -47,6 +51,7 @@ import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@Controller
......@@ -64,6 +69,10 @@ public class BaseOrderController extends CommonBaseController {
UserFeign userFeign;
@Resource
VehicleFeign vehicleFeign;
@Autowired
OrderMemberDetailBiz orderMemberDetailBiz;
@Value("${gateway.host}")
String host;
@Value("${gateway.order}")
......@@ -84,18 +93,9 @@ public class BaseOrderController extends CommonBaseController {
return new ObjectRestResponse<>().data(PageDataVO.pageInfo(query, () -> baseOrderBiz.pageByParm(query.getSuper())));
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "订单列表")
@IgnoreClientToken
public ObjectRestResponse<PageDataVO<OrderPageVO>> getOrderList(QueryOrderDTO dto) {
Query query = new Query(dto);
return new ObjectRestResponse<>().data(PageDataVO.pageInfo(query, () -> baseOrderBiz.selectListAll()));
}
@RequestMapping(value = "/getOrderList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "订单列表")
@ApiOperation(value = "获取后台订单列表")
@IgnoreClientToken
public ObjectRestResponse<PageDataVO<OrderPageVO>> selectByUser(QueryOrderList dto) {
if (dto.getStartTime() != null) {
......@@ -130,7 +130,7 @@ public class BaseOrderController extends CommonBaseController {
@RequestMapping(value = "/getVehicleList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "交还车订单列表")
@ApiOperation(value = "交还车租车订单列表")
@IgnoreClientToken
public ObjectRestResponse<List<OrderPageVO>> getVehicleList(QueryOrderList dto) {
if (dto.getStartTime() != null) {
......@@ -146,7 +146,7 @@ public class BaseOrderController extends CommonBaseController {
@RequestMapping(value = "/getTourList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "交还车订单列表")
@ApiOperation(value = "交还车旅游订单列表")
@IgnoreClientToken
public ObjectRestResponse<List<OrderPageVO>> getTourList(QueryOrderList dto) {
if (dto.getStartTime() != null) {
......@@ -294,6 +294,7 @@ public class BaseOrderController extends CommonBaseController {
}});
if (null == dbBaseOrder || !BaseContextHandler.getUserID().equals(dbBaseOrder.getUserId().toString())) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
dbBaseOrder.setCancelReason(cancelOrderDto.getCancelReason());
baseOrderBiz.cancel(dbBaseOrder);
......@@ -308,32 +309,11 @@ public class BaseOrderController extends CommonBaseController {
public ObjectRestResponse notifyUrl(NotifyUrlDTO dto) {
//判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态
if (StrUtil.isNotBlank(dto.getOrderNo())) {
BaseOrder baseOrder = baseOrderBiz.selectOne(new BaseOrder() {{
setNo(dto.getOrderNo());
}});
if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
baseOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
baseOrder.setOutTradeNo(dto.getTradeNo());
baseOrderBiz.updateById(baseOrder);
} else {
if (OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
BaseOrder updateOrder = new BaseOrder() {{
setNo(dto.getOrderNo());
setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
setOutTradeNo(dto.getTradeNo());
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
}};
baseOrderBiz.updateSelectiveById(updateOrder);
} else {
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
}
}
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo());
}else{
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
}
return new ObjectRestResponse().rel(true);
return ObjectRestResponse.succ();
}
/**
* 订单查询类
......
......@@ -83,7 +83,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Override
public void initDetail(MemberBO bo) {
super.initDetail(bo);
BaseUserMemberLevel buml = userFeign.level(bo.getLevelNum());
BaseUserMemberLevel buml = userFeign.level(bo.getMemberLevel());
bo.setBaseUserMemberLevel(buml);
bo.setRentFreeNum(buml.getNumber());
bo.setRebate(buml.getDiscount());
......
......@@ -15,6 +15,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
......@@ -223,7 +224,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//根据车型、时间、距离,门店,预定车辆
RentVehicleBookDTO rentVehicleBookDTO = BeanUtil.toBean(detail.getBookVehicleVO(), RentVehicleBookDTO.class);
rentVehicleBookDTO.setUserName(BaseContextHandler.getName());
ObjectRestResponse<String> orr = vehicleFeign.rentApplyVehicle(rentVehicleBookDTO);
detail.setVehicleId(orr.getData());
ObjectRestResponse<VehicleBookRecord> orr = vehicleFeign.rentApplyVehicle(rentVehicleBookDTO);
detail.setVehicleId(orr.getData().getVehicleId());
detail.setBookRecordId(orr.getData().getId());
}
}
......@@ -120,7 +120,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
}})).getData().get(0).getId());
//扣減庫存
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber());
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber(), TourFeign.STOCK_SUBTRACT);
super.handleDetail(bo);
}
......
......@@ -24,9 +24,11 @@
<result column="upd_time" jdbcType="BIGINT" property="updTime" />
<result column="vehicle_key" jdbcType="LONGVARCHAR" property="vehicleKey"/>
<result column="license_id_card" jdbcType="VARCHAR" property="licenseIdCard"/>
<result column="is_ded" jdbcType="BIT" property="isDeD" />
<result column="deduction" jdbcType="BIT" property="deduction" />
<result column="ded_detail" jdbcType="LONGVARCHAR" property="dedDetail" />
<result column="type" jdbcType="INTEGER" property="type"/>
<result column="deduction_cost" jdbcType="INTEGER" property="deductionCost"/>
<result column="rest_deposit" jdbcType="INTEGER" property="restDeposit"/>
</resultMap>
<select id="selectByOrderId" parameterType="com.xxfc.platform.order.entity.OrderVehicaleCrosstown" resultMap="BaseResultMap">
......
......@@ -26,6 +26,8 @@ import java.util.Map;
*/
@FeignClient(value = "xx-tour")
public interface TourFeign {
public static final int STOCK_SUBTRACT = 1;
public static final int STOCK_PLUS = 2;
/**
* 计算价格
......@@ -35,6 +37,13 @@ public interface TourFeign {
@RequestMapping(value = "/spe/user/prices", method = RequestMethod.POST)
public ObjectRestResponse<TourSpePriceVo> refund(@RequestBody TourSpePriceDTO spePriceDto);
/**
*
* @param speId
* @param number
* @param type 1--减库存,2--加库存
* @return
*/
@RequestMapping(value = "/spe/stock", method = RequestMethod.GET)
public ObjectRestResponse<TourSpePriceVo> stock(@RequestParam Integer speId, @RequestParam Integer number, @RequestParam Integer type);
......
package com.xxfc.platform.vehicle.entity;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "vehicle_book_hour_info")
public class VehicleBookHourInfo {
@Id
private Integer id;
@Column(name = "vehicle_id")
private String vehicleId;
@Column(name = "year_month_day")
private String yearMonthDay;
@Column(name = "booked_hour")
private Integer bookedHour;
@Column(name = "create_time")
private Date createTime;
@Column(name = "update_time")
private Date updateTime;
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return vehicle_id
*/
public String getVehicleId() {
return vehicleId;
}
/**
* @param vehicleId
*/
public void setVehicleId(String vehicleId) {
this.vehicleId = vehicleId;
}
/**
* @return year_month_day
*/
public String getYearMonthDay() {
return yearMonthDay;
}
/**
* @param yearMonthDay
*/
public void setYearMonthDay(String yearMonthDay) {
this.yearMonthDay = yearMonthDay;
}
/**
* @return booked_hour
*/
public Integer getBookedHour() {
return bookedHour;
}
/**
* @param bookedHour
*/
public void setBookedHour(Integer bookedHour) {
this.bookedHour = bookedHour;
}
/**
* @return create_time
*/
public Date getCreateTime() {
return createTime;
}
/**
* @param createTime
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* @return update_time
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* @param updateTime
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
......@@ -33,8 +34,14 @@ public interface VehicleFeign {
public RestResponse addScore(@RequestParam(value="id")Integer id, @RequestParam(value="score")Integer score);
@RequestMapping(value = "/vehicleInfo/rent/book/vehicle", method = RequestMethod.POST)
public ObjectRestResponse<String> rentApplyVehicle(@RequestBody RentVehicleBookDTO rentVehicleBookDTO);
public ObjectRestResponse<VehicleBookRecord> rentApplyVehicle(@RequestBody RentVehicleBookDTO rentVehicleBookDTO);
@RequestMapping(value ="/branchCompany/app/unauth/detail/{id}",method = RequestMethod.GET)
public ObjectRestResponse<CompanyDetail> getCompanyDetail(@PathVariable Integer id);
@RequestMapping(value = "/unbook/4employee/{bookRecordId}", method = RequestMethod.DELETE)
public RestResponse<Integer> unbookVehicle(@PathVariable Long bookRecordId);
@RequestMapping(value = "/book/4employee/prove/{bookRecordId}", method = RequestMethod.PUT)
public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId);
}
......@@ -284,7 +284,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return
*/
@Transactional
public void applyVehicle4Employee(Integer userId, BookVehicleVO bookVehicleVo, String userName) throws Exception{
public VehicleBookRecord applyVehicle4Employee(Integer userId, BookVehicleVO bookVehicleVo, String userName) throws Exception{
//检查车辆信息是否合法
checkIfVehicleExists(bookVehicleVo.getVehicle());
//提取日期和相应的预定目标日期
......@@ -337,6 +337,8 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
}
bookRecordAccItemMapper.batchAdd(params);
}
return vehicleBookRecord;
}
@Transactional
......
package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo;
import tk.mybatis.mapper.common.Mapper;
public interface VehicleBookHourInfoMapper extends Mapper<VehicleBookHourInfo> {
}
\ No newline at end of file
......@@ -24,10 +24,7 @@ import com.xxfc.platform.vehicle.common.CustomIllegalParamException;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookInfo;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import com.xxfc.platform.vehicle.entity.VehicleWarningMsg;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import io.swagger.annotations.Api;
......@@ -202,6 +199,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/book/4employee/prove/{bookRecordId}", method = RequestMethod.PUT)
@ApiOperation(value = "预定车辆审核通过")
public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -215,6 +213,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/book/4employee/reject/{bookRecordId}", method = RequestMethod.PUT)
@ApiOperation(value = "拒绝预定车辆")
public RestResponse<Integer> rejectVehicleBooking(@PathVariable Long bookRecordId) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -242,6 +241,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/unbook/4employee/{bookRecordId}", method = RequestMethod.DELETE)
@ApiOperation(value = "取消预定车辆")
public RestResponse<Integer> unbookVehicle(@PathVariable Long bookRecordId) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -249,6 +249,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
}
@RequestMapping(value = "/bookedRecord/{bookEndDate}/{id}", method = RequestMethod.GET)
@ApiOperation(value = "获取预定记录")
public RestResponse<QueryVehicleBookRecordVo> getBookedRecord(@PathVariable String bookEndDate, @PathVariable Long id) throws Exception {
try {
return RestResponse.codeAndData(RestResponse.SUC_CODE, vehicleBookRecordBiz.getById(id, DateTime.parse(bookEndDate, DEFAULT_FORMATTER)));
......@@ -262,6 +263,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
@RequestMapping(value = "/bookedRecord", method = RequestMethod.GET)
@ApiOperation(value = "获取多个预定记录")
public RestResponse<PageDataVO<QueryVehicleBookRecordVo>> getBookedRecord(@RequestParam String vehicleBookRecordQueryVoJson) throws Exception {
VehicleBookRecordQueryVo vehicleBookRecordQueryVo = null;
......@@ -283,6 +285,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/book/4employee/lift", method = RequestMethod.PUT)
@ApiOperation(value = "提车")
public RestResponse<Integer> liftVehicle(@RequestBody LiftVehicleVo liftVehicleVo) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -296,6 +299,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
* @return
*/
@RequestMapping(value = "/book/4employee/ret", method = RequestMethod.PUT)
@ApiOperation(value = "还车")
public RestResponse<Integer> retVehicle(@RequestBody RetVehicleVo retVehicleVo) throws Exception {
Integer operatorId = Integer.parseInt(BaseContextHandler.getUserID());
String userName = BaseContextHandler.getName();
......@@ -372,9 +376,9 @@ public class VehicleController extends BaseController<VehicleBiz> {
}
bookVehicleVo.setVehicle(pageDataVO.getData().get(0).getId());
baseBiz.applyVehicle4Employee(operatorId, bookVehicleVo, userName);
VehicleBookRecord vehicleBookRecord = baseBiz.applyVehicle4Employee(operatorId, bookVehicleVo, userName);
return ObjectRestResponse.succ(bookVehicleVo.getVehicle());
return ObjectRestResponse.succ(vehicleBookRecord);
}
......
......@@ -15,9 +15,9 @@
</plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8"
connectionURL="jdbc:mysql://10.5.52.3:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8"
userId="root"
password="xx2019fc">
password="sslcloud123*()">
</jdbcConnection>
<javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
......@@ -37,7 +37,7 @@
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="vehicle_upkeep_item" domainObjectName="VehicleUpkeepItem"></table>
<table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>
<table tableName="vehicle_book_hour_info" domainObjectName="VehicleBookHourInfo"></table>
<!-- <table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>-->
</context>
</generatorConfiguration>
\ 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