From d2a5cf32ffd598eb10b6699cc93f665c3c1cbbf8 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 17 七月 2024 17:34:21 +0800 Subject: [PATCH] 提交 --- server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java | 158 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 149 insertions(+), 9 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java index 6223904..a7813f5 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java @@ -1,5 +1,6 @@ package com.doumee.service.business.impl; +import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.annotation.excel.ExcelImporter; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; @@ -12,15 +13,17 @@ import com.doumee.dao.admin.request.FcodeImport; import com.doumee.dao.admin.request.ShopImport; import com.doumee.dao.admin.request.UpdateShopSortDTO; -import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.CategorySegMapper; +import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.SegmentsMapper; -import com.doumee.dao.business.ShopMapper; +import com.doumee.dao.business.UsersMapper; import com.doumee.dao.business.join.ShopJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.ShopTree; import com.doumee.dao.business.vo.ShopTreeVo; -import com.doumee.dao.system.model.SystemUser; +import com.doumee.dao.business.vo.UnitCodeVo; +import com.doumee.dao.web.reqeust.EditShopDTO; +import com.doumee.dao.web.reqeust.ShopQueryByLLDTO; import com.doumee.service.business.ShopService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -29,6 +32,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; @@ -41,7 +45,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.Future; +import java.util.stream.Collectors; /** * 蹇楅偊缁勭粐淇℃伅琛⊿ervice瀹炵幇 @@ -55,10 +59,17 @@ private RedisTemplate<String, Object> redisTemplate; @Autowired private ShopJoinMapper shopMapper; + @Autowired private SegmentsMapper segmentsMapper; @Autowired private CategorySegMapper categorySegMapper; + @Autowired + private UsersMapper usersMapper; + @Autowired + private SystemDictDataBiz systemDictDataBiz; + @Autowired + private MemberMapper memberMapper; @Override public Long create(Shop shop) { @@ -254,7 +265,30 @@ queryWrapper.orderByAsc(sortData.getProperty()); } } - return PageData.from(shopMapper.selectPage(page, queryWrapper)); + PageData<Shop> pageData = PageData.from(shopMapper.selectPage(page, queryWrapper)); + //鏌ヨ缁忚惀鑼冨洿淇℃伅 + List<CategorySeg> categorySegAllList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda() + .isNotNull(CategorySeg::getOrgId) + .eq(CategorySeg::getIsdeleted,Constants.ZERO)); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegAllList)){ + for (Shop shop:pageData.getRecords()) { + if(StringUtils.isBlank(shop.getOrgId())){ + continue; + } + List<CategorySeg> categorySegList = categorySegAllList.stream().filter(i->i.getOrgId().equals(shop.getOrgId())).collect(Collectors.toList()); + List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList(); + List<String> seqNameList = new ArrayList<>(); + for(CategorySeg model : categorySegList){ + String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList); + if(Objects.nonNull(seqName)){ + seqNameList.add(seqName); + } + } + shop.setSeqNameList(seqNameList); + } + } + + return pageData; } @Override @@ -375,7 +409,7 @@ } @Async - private void dealCategoryDataBiz(List<CategoryImport> dataList, Date date, LoginUserInfo loginUserInfo) { + public void dealCategoryDataBiz(List<CategoryImport> dataList, Date date, LoginUserInfo loginUserInfo) { try { List<CategorySeg> categorySegList = new ArrayList<>(); List<Segments> segmentsList = new ArrayList<>(); @@ -841,10 +875,16 @@ s.setIdPath(s.getId()+"/"); shopMapper.updateById(s); }else{ + String idPath = StringUtils.defaultString(parent.getIdPath(),"")+ shop.getId()+"/"; + String namePath =StringUtils.defaultString(parent.getNamePath(),"")+"/"+shop.getName(); s.setParentId(parent.getId()); - s.setNamePath(parent.getNamePath()+"/"+s.getName()); - s.setIdPath(parent.getIdPath()+s.getId()+"/"); - shopMapper.updateById(s); + s.setNamePath(namePath); + s.setIdPath(idPath); + if(!(Constants.equalsLong(parent.getId(),shop.getParentId()) + && StringUtils.equals(idPath,shop.getIdPath()) + &&StringUtils.equals(namePath,shop.getNamePath())) ){ + shopMapper.updateById(s); + } } if(shop.getChildList()!=null && shop.getChildList().size()>0){ updateNamePath(s,shop.getChildList()); @@ -852,4 +892,104 @@ } } } + + + + @Override + public PageData<Shop> queryShopByLL(PageWrap<Shop> pageWrap) { + if(Objects.isNull(pageWrap.getModel()) + || Objects.isNull(pageWrap.getModel().getLatitude()) + || Objects.isNull(pageWrap.getModel().getLongitude())){ + return null; + } + IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); + MPJLambdaWrapper<Shop> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," + + " CONVERT (ST_Distance_Sphere (point ("+pageWrap.getModel().getLongitude()+", "+pageWrap.getModel().getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance ") + .eq("isdeleted",Constants.ZERO) + .isNotNull("LATITUDE") + .isNotNull("LONGITUDE") + .eq("ATTRIBUTE",Constants.ONE) + .orderByAsc(" distance "); + Utils.MP.blankToNull(pageWrap.getModel()); + PageData<Shop> pageData = PageData.from(shopMapper.selectPage(page, queryWrapper)); + String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) + + StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode()); + for (Shop shop:pageData.getRecords()) { + //鏌ヨ闂ㄥ簵涓嬪璐暟鎹� + List<Users> usersList =usersMapper.selectList(new QueryWrapper<Users>().lambda().eq(Users::getDepartmentId,shop.getId()) + .eq(Users::getIsdeleted,Constants.ZERO) + .eq(Users::getStatus,Constants.ONE) + .eq(Users::getType,Constants.ZERO) + ); + for (Users users:usersList) { + if(StringUtils.isNotBlank(users.getImgurl())){ + users.setImgurlFull(prefix + users.getImgurl()); + } + } + shop.setUsersList(usersList); + } + return pageData; + } + + @Override + public Shop shopDetail(Long id,Long memberId) { + QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>(); + if(Objects.nonNull(memberId)){ + Member member = memberMapper.selectById(memberId); + //濡傛灉浜哄憳娌℃湁缁忕含搴︿俊鎭紝鍒欎笉鏌ヨ璺濈 + if(Objects.nonNull(member)&&Objects.nonNull(member.getLatitude())&&Objects.nonNull(member.getLongitude())){ + queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," + + " CONVERT (ST_Distance_Sphere (point ("+member.getLongitude()+", "+member.getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance "); + } + } + queryWrapper.eq("id",id); + Shop shop = shopMapper.selectOne(queryWrapper); + if(Objects.isNull(shop)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String prefix = StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()) + + StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.USERS_FILE).getCode()); + List<Users> usersList =usersMapper.selectList(new QueryWrapper<Users>().lambda().eq(Users::getDepartmentId,shop.getId()) + .eq(Users::getIsdeleted,Constants.ZERO) + .eq(Users::getStatus,Constants.ONE) + .eq(Users::getType,Constants.ZERO) + ); + for (Users users:usersList) { + if(StringUtils.isNotBlank(users.getImgurl())){ + users.setImgurlFull(prefix + users.getImgurl()); + } + } + shop.setUsersList(usersList); + //鏌ヨ缁忚惀鑼冨洿淇℃伅 + List<CategorySeg> categorySegList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda().eq(CategorySeg::getOrgId,shop.getOrgId()).eq(CategorySeg::getIsdeleted,Constants.ZERO)); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegList)){ + List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList(); + List<String> seqNameList = new ArrayList<>(); + for(CategorySeg model : categorySegList){ + String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList); + if(Objects.nonNull(seqName)){ + seqNameList.add(seqName); + } + } + shop.setSeqNameList(seqNameList); + } + return shop; + } + + @Override + public void updShop(EditShopDTO editShopDTO) { + if(Objects.isNull(editShopDTO) + || Objects.isNull(editShopDTO.getId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Shop shop = shopMapper.selectById(editShopDTO.getId()); + if(Objects.isNull(shop)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + Shop updShop = new Shop(); + BeanUtils.copyProperties(editShopDTO,updShop); + shopMapper.updateById(updShop); + } + } -- Gitblit v1.9.3