package com.xzx.gc.system.controller;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.util.StrUtil;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.xzx.gc.common.Result;
|
import com.xzx.gc.common.annotations.PassToken;
|
import com.xzx.gc.common.constant.CommonEnum;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.constant.ExceptionEnum;
|
import com.xzx.gc.common.dto.gdmap.GdReverseGEODto;
|
import com.xzx.gc.common.dto.log.OperationAppLog;
|
import com.xzx.gc.common.exception.RestException;
|
import com.xzx.gc.common.request.BaseController;
|
import com.xzx.gc.common.utils.gdmap.GdMapUtil;
|
import com.xzx.gc.entity.*;
|
import com.xzx.gc.model.IdDTO;
|
import com.xzx.gc.model.order.FenceDto;
|
import com.xzx.gc.model.order.PartnerFenceDTO;
|
import com.xzx.gc.model.system.HomeServiceAddDTO;
|
import com.xzx.gc.model.system.HomeServiceFindDTO;
|
import com.xzx.gc.model.system.HomeServiceLevelDTO;
|
import com.xzx.gc.model.system.HomeServicePageDTO;
|
import com.xzx.gc.system.service.*;
|
import com.xzx.gc.util.BeanUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Api(tags = "到家服务分类管理")
|
@RestController
|
@Slf4j
|
public class HomeServiceInfoController extends BaseController {
|
|
|
@Autowired
|
private HomeServiceInfoService homeServiceInfoService;
|
@Autowired
|
private FenceService fenceService;
|
@Autowired
|
private AddressLevelService addressLevelService;
|
@Autowired
|
private AddressService addressService;
|
@Autowired
|
private PartnerFenceService partnerFenceService;
|
@Autowired
|
private HomeServiceRefService homeServiceRefService;
|
|
@ApiOperation(value = "到家服务添加分类")
|
@PostMapping("/admin/front/homeService/add")
|
public Result add(HttpServletRequest request, @RequestBody HomeServiceAddDTO homeServiceAddDTO) {
|
if(homeServiceAddDTO.getParentId()==null){
|
homeServiceAddDTO.setParentId(Constants.TOP_ID);
|
}
|
Long id=homeServiceInfoService.add(homeServiceAddDTO);
|
|
OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request))
|
.methodName(Constants.SYS_MODUL_NAME).operateAction("到家服务添加分类-"+id).build();
|
mqUtil.sendApp(build);
|
|
return Result.success();
|
}
|
|
@ApiOperation(value = "到家服务编辑分类")
|
@PostMapping("/admin/front/homeService/update")
|
public Result update(HttpServletRequest request, @RequestBody HomeServiceAddDTO homeServiceAddDTO) {
|
Long id = homeServiceAddDTO.getId();
|
HomeServiceInfo byId = homeServiceInfoService.findById(id);
|
BeanUtil.copyProperties(byId,homeServiceAddDTO,BeanUtils.getNotNullPropertyNames(homeServiceAddDTO));
|
homeServiceInfoService.update(homeServiceAddDTO);
|
|
OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request))
|
.methodName(Constants.SYS_MODUL_NAME).operateAction("到家服务编辑分类-"+ homeServiceAddDTO.getId()).build();
|
mqUtil.sendApp(build);
|
return Result.success();
|
}
|
|
@ApiOperation(value = "到家服务根据层级分页查询")
|
@PostMapping("/admin/front/homeService/findByLevel")
|
public Result<PageInfo<HomeServiceInfo>> findByLevel(HttpServletRequest request,@RequestBody HomeServiceLevelDTO homeServiceLevelDTO) {
|
PageHelper.startPage(homeServiceLevelDTO.getPageNo(),homeServiceLevelDTO.getPageSize());
|
List<HomeServiceInfo> list = homeServiceInfoService.findByLevel(homeServiceLevelDTO.getLevel());
|
//第二级 返回围栏等信息
|
if(2==homeServiceLevelDTO.getLevel().intValue()) {
|
for (HomeServiceInfo homeServiceInfo : list) {
|
List<PartnerFenceDTO> listRel = new ArrayList<>();
|
List<HomeServiceRef> byServiceId = homeServiceRefService.findByServiceId(homeServiceInfo.getId());
|
for (HomeServiceRef homeServiceRef : byServiceId) {
|
String fenceId = homeServiceRef.getFenceId();
|
String partnerId = homeServiceRef.getPartnerId();
|
Short refType = homeServiceRef.getRefType();
|
if (1 == refType.intValue()) {
|
PartnerFenceDTO partnerFenceDTO = new PartnerFenceDTO();
|
partnerFenceDTO.setPartnerId(partnerId);
|
partnerFenceDTO.setRefType(refType);
|
listRel.add(partnerFenceDTO);
|
} else if (2 == refType.intValue()) {
|
List<PartnerFenceDTO> collect = listRel.stream().filter(x -> x.getRefType().intValue() == 2 && x.getPartnerId().equals(partnerId)).collect(Collectors.toList());
|
if (CollUtil.isNotEmpty(collect)) {
|
List<String> fenceIds = collect.get(0).getFenceIds();
|
fenceIds.add(fenceId);
|
for (PartnerFenceDTO partnerFenceDTO : listRel) {
|
if (partnerFenceDTO.getPartnerId().equals(partnerId) && partnerFenceDTO.getRefType().intValue() == 2) {
|
partnerFenceDTO.setFenceIds(fenceIds);
|
}
|
}
|
} else {
|
PartnerFenceDTO partnerFenceDTO = new PartnerFenceDTO();
|
partnerFenceDTO.setPartnerId(partnerId);
|
partnerFenceDTO.setRefType(refType);
|
List<String> fenceIds = new ArrayList<>();
|
fenceIds.add(fenceId);
|
partnerFenceDTO.setFenceIds(fenceIds);
|
listRel.add(partnerFenceDTO);
|
}
|
}
|
}
|
homeServiceInfo.setList(listRel);
|
}
|
}
|
PageInfo<HomeServiceInfo> pageInfo=new PageInfo<>(list);
|
return Result.success(pageInfo);
|
}
|
|
@ApiOperation(value = "到家服务分页查询分类")
|
@PostMapping("/admin/front/homeService/page")
|
public Result<PageInfo<HomeServiceInfo>> page(HttpServletRequest request,@RequestBody HomeServicePageDTO homeServicePageDTO) {
|
PageInfo<HomeServiceInfo> page = homeServiceInfoService.page(homeServicePageDTO);
|
return Result.success(page);
|
}
|
|
@ApiOperation(value = "到家服务删除分类")
|
@PostMapping("/admin/front/homeService/delete")
|
public Result delete(HttpServletRequest request,@RequestBody IdDTO idDTO) {
|
Long id = Convert.toLong(idDTO.getId());
|
HomeServiceInfo byId = homeServiceInfoService.findById(id);
|
Short level = byId.getLevel();
|
if(2==level.intValue()){
|
List<HomeServiceInfo> byParentId = homeServiceInfoService.findByParentId(id,null);
|
if(CollUtil.isNotEmpty(byParentId)){
|
throw new RestException("请先删除其下的子类");
|
}
|
//删除关联关系
|
homeServiceRefService.deleteByServiceId(id);
|
}
|
|
homeServiceInfoService.deleteById(id);
|
OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request))
|
.methodName(Constants.SYS_MODUL_NAME).operateAction("到家服务删除分类-"+ id).build();
|
mqUtil.sendApp(build);
|
return Result.success();
|
}
|
|
@ApiOperation(value = "到家服务查询")
|
@PostMapping("/homeService/find")
|
@PassToken
|
public Result<List<HomeServiceInfo>> find(HttpServletRequest request,@RequestBody HomeServiceFindDTO homeServiceFindDTO) {
|
//确定用户的围栏
|
Long addressId = homeServiceFindDTO.getAddressId();
|
String townShipId=null;
|
String lon;
|
String lat;
|
if(addressId!=null){
|
AddressInfo byId = addressService.findById(addressId);
|
townShipId=byId.getTownshipId();
|
lon=byId.getLongitude();
|
lat=byId.getLatitude();
|
}else {
|
lon=homeServiceFindDTO.getLongitude();
|
lat=homeServiceFindDTO.getLatitude();
|
GdReverseGEODto gdReverseGEODto = new GdReverseGEODto();
|
gdReverseGEODto.setKey(Constants.GD_MAP_KEY);
|
gdReverseGEODto.setLocation(homeServiceFindDTO.getLongitude() + "," + homeServiceFindDTO.getLatitude());
|
Result<AddressInfo> areaInfo = GdMapUtil.getAreaInfo(gdReverseGEODto, 0);
|
if (areaInfo.getCode() == 0) {
|
AddressInfo addressInfo = areaInfo.getData();
|
String adcode = addressInfo.getAdcode();
|
AddressLevelInfo byAdcode = addressLevelService.findByAdcode(adcode);
|
if(byAdcode!=null) {
|
townShipId = byAdcode.getLevel3Id();
|
}
|
} else {
|
return Result.error(Convert.toInt(ExceptionEnum.可忽略异常.getValue()),areaInfo.getMsg());
|
}
|
}
|
|
List<HomeServiceInfo> second=new ArrayList<>();
|
if (StrUtil.isNotBlank(townShipId)) {
|
FenceDto fence = fenceService.getFence(townShipId, false, lon,lat, true);
|
if (StrUtil.isNotBlank(fence.getFenceId())) {
|
second = homeServiceInfoService.findSecond(null, fence.getFenceId());
|
if(CollUtil.isEmpty(second)){
|
PartnerFence partnerIdByFenceId = partnerFenceService.findPartnerIdByFenceId(fence.getFenceId());
|
if(partnerIdByFenceId!=null){
|
second = homeServiceInfoService.findSecond(partnerIdByFenceId.getPartnerId(),null);
|
}
|
}
|
|
//设置子类
|
if(CollUtil.isNotEmpty(second)){
|
for (HomeServiceInfo homeServiceInfo : second) {
|
Long id = homeServiceInfo.getId();
|
List<HomeServiceInfo> byParentId = homeServiceInfoService.findByParentId(id,Constants.SHOW_FLAG);
|
homeServiceInfo.setChilds(byParentId);
|
}
|
}
|
}
|
}
|
|
return Result.success(second);
|
|
}
|
}
|