| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.concurrent.Callable; |
| | | import java.util.concurrent.ExecutorService; |
| | |
| | | @Override |
| | | public void updateById(Shop shop) { |
| | | shopMapper.updateById(shop); |
| | | usersMapper.update(new UpdateWrapper<Users>().lambda() |
| | | .set(Users::getCardImg,null) |
| | | .isNotNull(Users::getCardImg) |
| | | .eq(Users::getDepartmentId,shop.getId()) |
| | | ); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @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; |
| | | // } |
| | | 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 ") |
| | | queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE ") |
| | | queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE " + |
| | | " , (6371 * ACOS(COS(RADIANS("+pageWrap.getModel().getLatitude()+")) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS("+pageWrap.getModel().getLongitude()+")) + SIN(RADIANS("+pageWrap.getModel().getLatitude()+")) * SIN(RADIANS(latitude)) ) ) as distance " ) |
| | | .eq("isdeleted",Constants.ZERO) |
| | | // .isNotNull("LATITUDE") |
| | | // .isNotNull("LONGITUDE") |
| | | .isNotNull("LATITUDE") |
| | | .isNotNull("LONGITUDE") |
| | | .eq("TYPE",Constants.TWO) |
| | | .eq("SECOND_TYPE",Constants.THREE) |
| | | .eq("STATUS",Constants.ONE); |
| | | // .orderByAsc(" distance ") |
| | | .eq("STATUS",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()) { |
| | | this.dealDistance(shop); |
| | | //查询门店下导购数据 |
| | | 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())){ |
| | |
| | | return pageData; |
| | | } |
| | | |
| | | /** |
| | | * 处理门店距离显示 |
| | | * @param shop |
| | | */ |
| | | public void dealDistance(Shop shop){ |
| | | if(Objects.isNull(shop.getDistance())){ |
| | | shop.setDistanceStr("-"); |
| | | }else{ |
| | | //距离小于1公里 显示米 |
| | | if(shop.getDistance().compareTo(BigDecimal.ONE)<Constants.ZERO){ |
| | | BigDecimal distanceM = shop.getDistance().multiply(new BigDecimal(1000).setScale(0)); |
| | | //100米之内 |
| | | if(distanceM.compareTo(new BigDecimal(100))<0){ |
| | | shop.setDistanceStr("<100米"); |
| | | }else{ |
| | | shop.setDistanceStr(distanceM.divide(BigDecimal.valueOf(1)).setScale(2,BigDecimal.ROUND_HALF_UP) + "m"); |
| | | } |
| | | }else{ |
| | | shop.setDistanceStr(shop.getDistance().divide(BigDecimal.valueOf(1)).setScale(2,BigDecimal.ROUND_HALF_UP) + "km"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Shop shopDetail(Long id,Long memberId) { |
| | | QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>(); |
| | |
| | | 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.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE " + |
| | | " , (6371 * ACOS(COS(RADIANS("+member.getLatitude()+")) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS("+member.getLongitude()+")) + SIN(RADIANS("+member.getLatitude()+")) * SIN(RADIANS(latitude)) ) ) as distance " ); |
| | | } |
| | | } |
| | | queryWrapper.eq("id",id); |
| | |
| | | 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) |
| | | ); |
| | | this.dealDistance(shop); |
| | | for (Users users:usersList) { |
| | | if(StringUtils.isNotBlank(users.getImgurl())){ |
| | | users.setImgurlFull(prefix + users.getImgurl()); |
| | |
| | | Shop updShop = new Shop(); |
| | | BeanUtils.copyProperties(editShopDTO,updShop); |
| | | shopMapper.updateById(updShop); |
| | | usersMapper.update(new UpdateWrapper<Users>().lambda() |
| | | .set(Users::getCardImg,null) |
| | | .isNotNull(Users::getCardImg) |
| | | .eq(Users::getDepartmentId,shop.getId()) |
| | | ); |
| | | } |
| | | |
| | | } |