| | |
| | | import static org.apache.commons.lang3.StringUtils.isNotBlank; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | |
| | | import com.panzhihua.common.exceptions.ServiceException; |
| | | import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.ExportMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.PageClassifyMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.PageConvenientMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.PagePopularMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.PageSearchDTO; |
| | | import com.panzhihua.common.model.dtos.community.convenient.ResetPasswordConvenientMerchantDTO; |
| | | import com.panzhihua.common.model.dtos.grid.EventGridMemberPassResetDTO; |
| | | import com.panzhihua.common.model.vos.LoginUserInfoVO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientConsultationStatisticsVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientProductSpecificationVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientProductVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientViewStatisticsVO; |
| | | import com.panzhihua.common.model.vos.community.convenient.ExportMerchantVO; |
| | | import com.panzhihua.common.service.user.UserService; |
| | | import com.panzhihua.service_community.dao.ComActDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientConsultationStatisticsDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientMerchantDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientProductDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientServiceCategoryDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientViewStatisticsDAO; |
| | | import com.panzhihua.service_community.model.dos.ComActDO; |
| | | import com.panzhihua.service_community.model.dos.ConvenientConsultationStatisticsDO; |
| | | import com.panzhihua.service_community.model.dos.ConvenientMerchantDO; |
| | | import com.panzhihua.service_community.model.dos.ConvenientServiceCategoryDO; |
| | | import com.panzhihua.service_community.model.dos.ConvenientViewStatisticsDO; |
| | | import com.panzhihua.service_community.service.ConvenientMerchantService; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * @title: ConvenientMerchantServiceImpl |
| | |
| | | * @date: 2021/09/16 16:14 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class ConvenientMerchantServiceImpl extends ServiceImpl<ConvenientMerchantDAO, ConvenientMerchantDO> implements ConvenientMerchantService { |
| | | |
| | | @Resource |
| | |
| | | private ConvenientServiceCategoryDAO convenientServiceCategoryDAO; |
| | | @Resource |
| | | private ComActDAO comActDAO; |
| | | @Resource |
| | | private ConvenientProductDAO convenientProductDAO; |
| | | @Resource |
| | | private ConvenientConsultationStatisticsDAO convenientConsultationStatisticsDAO; |
| | | @Resource |
| | | private ConvenientViewStatisticsDAO convenientViewStatisticsDAO; |
| | | |
| | | private static final String DQ="510402"; |
| | | private static final String RHQ="510411"; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R addMerchant(ConvenientMerchantDTO convenientMerchantDTO) { |
| | | ComActDO comActDO = comActDAO.selectById(convenientMerchantDTO.getCommunityId()); |
| | | ConvenientMerchantDO convenientMerchantDO = new ConvenientMerchantDO(); |
| | | BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO); |
| | | if(convenientMerchantDTO.getCommunityId()==0){ |
| | | if(DQ.equals(convenientMerchantDTO.getAreaCode())){ |
| | | convenientMerchantDO.setCommunityName("东区社区"); |
| | | }else if(RHQ.equals(convenientMerchantDTO.getAreaCode())){ |
| | | convenientMerchantDO.setCommunityName("仁和区社区"); |
| | | }else{ |
| | | convenientMerchantDO.setCommunityName("西区社区"); |
| | | } |
| | | } |
| | | else { |
| | | ComActDO comActDO = comActDAO.selectById(convenientMerchantDTO.getCommunityId()); |
| | | convenientMerchantDO.setCommunityName(comActDO.getName()); |
| | | } |
| | | convenientMerchantDO.setUserId(0L); |
| | | convenientMerchantDO.setCommunityName(comActDO.getName()); |
| | | convenientMerchantDO.setCreatedAt(new Date()); |
| | | int insertResult = this.baseMapper.insert(convenientMerchantDO); |
| | | if (insertResult > 0) { |
| | |
| | | Long communityId = convenientMerchantDTO.getCommunityId(); |
| | | if (nonNull(communityId)) { |
| | | ComActDO comActDO = comActDAO.selectById(communityId); |
| | | convenientMerchantDO.setCommunityName(comActDO.getName()); |
| | | if(comActDO!=null){ |
| | | convenientMerchantDO.setCommunityName(comActDO.getName()); |
| | | } |
| | | else { |
| | | convenientMerchantDO.setCommunityName("西区社区"); |
| | | } |
| | | } |
| | | String account = convenientMerchantDTO.getAccount(); |
| | | if (isNotBlank(account)) { |
| | |
| | | convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy()); |
| | | }); |
| | | } |
| | | BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO); |
| | | convenientMerchantDO.setIntroduction(convenientMerchantDTO.getIntroduction()); |
| | | this.baseMapper.updateById(convenientMerchantDO); |
| | | return R.ok(); |
| | | } |
| | |
| | | page.setSize(pageConvenientMerchantDTO.getPageSize()); |
| | | page.setCurrent(pageConvenientMerchantDTO.getPageNum()); |
| | | IPage<ConvenientMerchantVO> iPage = this.baseMapper.pageMerchant(page, pageConvenientMerchantDTO); |
| | | //填充服务范围 |
| | | List<ConvenientMerchantVO> records = iPage.getRecords(); |
| | | if (!records.isEmpty()) { |
| | | records.forEach(record -> { |
| | | String serviceScope = convenientServiceCategoryDAO.selectServiceScopeByMerchantId(record.getId()); |
| | | record.setServiceScope(serviceScope); |
| | | }); |
| | | if (nonNull(pageConvenientMerchantDTO.getServiceId())) { |
| | | List<ConvenientMerchantVO> records = iPage.getRecords(); |
| | | if (!records.isEmpty()) { |
| | | records.forEach(record -> { |
| | | String serviceScope = convenientServiceCategoryDAO.selectServiceScopeByMerchantId(record.getId()); |
| | | record.setServiceScope(serviceScope); |
| | | }); |
| | | } |
| | | } |
| | | return R.ok(iPage); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public R disableOrEnableMerchant(DisableOrEnableConvenientMerchantDTO disableOrEnableConvenientMerchantDTO) { |
| | | List<ConvenientMerchantDO> convenientMerchantDOList = this.baseMapper.selectList(new QueryWrapper<ConvenientMerchantDO>() |
| | | .lambda().in(ConvenientMerchantDO::getId, disableOrEnableConvenientMerchantDTO.getIds())); |
| | | List<Long> userIds = convenientMerchantDOList.stream().map(ConvenientMerchantDO::getUserId).collect(Collectors.toList()); |
| | | disableOrEnableConvenientMerchantDTO.setUserIds(userIds); |
| | | R result = userService.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO); |
| | | int type = disableOrEnableConvenientMerchantDTO.getType().intValue(); |
| | | if (type == 2) { |
| | | this.baseMapper.batchUpdateBusinessStatus(convenientMerchantDOList, 0); |
| | | } |
| | | if (R.isOk(result)) { |
| | | return R.ok(); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public R resetPasswordMerchant(ResetPasswordConvenientMerchantDTO resetPasswordConvenientMerchantDTO) { |
| | | List<ConvenientMerchantDO> convenientMerchantDOList = this.baseMapper.selectList(new QueryWrapper<ConvenientMerchantDO>() |
| | | .lambda().in(ConvenientMerchantDO::getId, resetPasswordConvenientMerchantDTO.getIds())); |
| | | List<Long> userIds = convenientMerchantDOList.stream().map(ConvenientMerchantDO::getUserId).collect(Collectors.toList()); |
| | | EventGridMemberPassResetDTO eventGridMemberPassResetDTO = new EventGridMemberPassResetDTO(); |
| | | eventGridMemberPassResetDTO.setPassword(resetPasswordConvenientMerchantDTO.getPassword()); |
| | | eventGridMemberPassResetDTO.setIds(resetPasswordConvenientMerchantDTO.getIds()); |
| | | eventGridMemberPassResetDTO.setIds(userIds); |
| | | return userService.gridMemberPassReset(eventGridMemberPassResetDTO); |
| | | } |
| | | |
| | |
| | | if (isNull(merchantDO)) { |
| | | return R.fail("商家不存在"); |
| | | } |
| | | Long merchantId = merchantDO.getId(); |
| | | ConvenientMerchantVO convenientMerchantVO = new ConvenientMerchantVO(); |
| | | BeanUtils.copyProperties(merchantDO, convenientMerchantVO); |
| | | List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantDO.getId()); |
| | | List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId); |
| | | convenientMerchantVO.setServiceIds(serviceIds); |
| | | Date nowDate = new Date(); |
| | | SimpleDateFormat mothFormat = new SimpleDateFormat("yyyy-MM"); |
| | | SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String moth = mothFormat.format(nowDate); |
| | | String day = dayFormat.format(nowDate); |
| | | int consultationCount = convenientConsultationStatisticsDAO.selectTotalConsultationVolume(merchantId); |
| | | int monthConsultationVolume = convenientConsultationStatisticsDAO.selectMonthConsultationVolume(merchantId, moth); |
| | | int dayConsultationVolume = convenientConsultationStatisticsDAO.selectDayConsultationVolume(merchantId, day); |
| | | Integer viewCount = convenientViewStatisticsDAO.selectTotalViewNum(merchantId); |
| | | int monthViewNum = convenientViewStatisticsDAO.selectMonthViewNum(merchantId, moth); |
| | | int dayViewNum = convenientViewStatisticsDAO.selectDayViewNum(merchantId, day); |
| | | convenientMerchantVO.setConsultationVolume(consultationCount); |
| | | convenientMerchantVO.setViewNum(viewCount); |
| | | convenientMerchantVO.setMonthConsultationVolume(monthConsultationVolume); |
| | | convenientMerchantVO.setDayConsultationVolume(dayConsultationVolume); |
| | | convenientMerchantVO.setMonthViewNum(monthViewNum); |
| | | convenientMerchantVO.setDayViewNum(dayViewNum); |
| | | return R.ok(convenientMerchantVO); |
| | | } |
| | | |
| | |
| | | Page page = new Page<>(); |
| | | page.setSize(pagePopularMerchantDTO.getPageSize()); |
| | | page.setCurrent(pagePopularMerchantDTO.getPageNum()); |
| | | IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getPopularMerchants(page, pagePopularMerchantDTO.getCommunityId(), currentMon); |
| | | IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getPopularMerchants(page, pagePopularMerchantDTO.getCommunityId(), currentMon,pagePopularMerchantDTO.getAreaCode()); |
| | | if(pagePopularMerchantDTO.getPageNum().equals(1L)){ |
| | | //第一页默认把犇师傅维修中心加载到第一个 |
| | | List<ConvenientMerchantVO> merchantList = this.baseMapper.selectMerchantByName(pagePopularMerchantDTO.getCommunityId(), currentMon); |
| | | if(merchantList != null && merchantList.size() > 0){ |
| | | merchantList.addAll(merchantVOList.getRecords()); |
| | | merchantVOList.setRecords(merchantList); |
| | | } |
| | | |
| | | } |
| | | return R.ok(merchantVOList); |
| | | } |
| | | |
| | |
| | | page.setSize(pageClassifyMerchantDTO.getPageSize()); |
| | | page.setCurrent(pageClassifyMerchantDTO.getPageNum()); |
| | | IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getClassifyMerchants(page, pageClassifyMerchantDTO, currentMon); |
| | | List<ConvenientMerchantVO> records = merchantVOList.getRecords(); |
| | | if (!records.isEmpty()) { |
| | | records.forEach(record -> { |
| | | String serviceScope = convenientServiceCategoryDAO.selectServiceScopeByMerchantId(record.getId()); |
| | | record.setServiceScope(serviceScope); |
| | | }); |
| | | } |
| | | return R.ok(merchantVOList); |
| | | } |
| | | |
| | | /** |
| | | * 小程序获取商家详情 |
| | | * @param merchantId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R getMerchantDetail(Long merchantId) { |
| | | Date nowDate = new Date(); |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); |
| | | String currentMon = simpleDateFormat.format(nowDate).concat("%"); |
| | | return R.ok(this.baseMapper.getMerchantDetail(merchantId, currentMon)); |
| | | } |
| | | |
| | | @Override |
| | | public R pageSearchMerchant(PageSearchDTO pageSearchDTO) { |
| | | Date nowDate = new Date(); |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); |
| | | String currentMon = simpleDateFormat.format(nowDate).concat("%"); |
| | | Page page = new Page<>(); |
| | | page.setSize(pageSearchDTO.getPageSize()); |
| | | page.setCurrent(pageSearchDTO.getPageNum()); |
| | | IPage<ConvenientMerchantVO> merchantVOIPage = this.baseMapper.pageSearchMerchant(page, pageSearchDTO, currentMon); |
| | | List<ConvenientMerchantVO> records = merchantVOIPage.getRecords(); |
| | | if (!records.isEmpty()) { |
| | | records.forEach(record -> { |
| | | List<ConvenientProductVO> merchantProduct = convenientProductDAO.getMerchantProduct(record.getId()); |
| | | List<ConvenientProductSpecificationVO> productSpecifications = convenientProductDAO.getProductSpecifications(record.getId()); |
| | | if (!merchantProduct.isEmpty()) { |
| | | if (merchantProduct.size() > 2) { |
| | | merchantProduct = merchantProduct.subList(0, 2); |
| | | } |
| | | merchantProduct.forEach(product -> { |
| | | List<ConvenientProductSpecificationVO> list = new ArrayList<>(); |
| | | productSpecifications.forEach(specification -> { |
| | | if (product.getId().equals(specification.getProductId())) { |
| | | list.add(specification); |
| | | } |
| | | }); |
| | | product.setProductSpecificationVOList(list); |
| | | }); |
| | | } |
| | | record.setProductVOList(merchantProduct); |
| | | }); |
| | | } |
| | | return R.ok(merchantVOIPage); |
| | | } |
| | | |
| | | @Override |
| | | public R consultMerchant(Long merchantId) { |
| | | ConvenientMerchantDO merchantDO = this.baseMapper.selectById(merchantId); |
| | | if (isNull(merchantDO)) { |
| | | return R.fail("商家不存在"); |
| | | } |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String nowDate = simpleDateFormat.format(new Date()); |
| | | ConvenientConsultationStatisticsDO statisticsDO = convenientConsultationStatisticsDAO.selectOne(new LambdaQueryWrapper<ConvenientConsultationStatisticsDO>() |
| | | .eq(ConvenientConsultationStatisticsDO::getMerchantId, merchantId).eq(ConvenientConsultationStatisticsDO::getStatisticDate, nowDate)); |
| | | if (isNull(statisticsDO)) { |
| | | convenientConsultationStatisticsDAO.createTodayStatistic(merchantId); |
| | | } else { |
| | | convenientConsultationStatisticsDAO.incrConsultationNum(merchantId, nowDate); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R incrMerchantView(Long merchantId) { |
| | | ConvenientMerchantDO merchantDO = this.baseMapper.selectById(merchantId); |
| | | if (isNull(merchantDO)) { |
| | | return R.fail("商家不存在"); |
| | | } |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String nowDate = simpleDateFormat.format(new Date()); |
| | | ConvenientViewStatisticsDO statisticsDO = convenientViewStatisticsDAO.selectOne(new LambdaQueryWrapper<ConvenientViewStatisticsDO>() |
| | | .eq(ConvenientViewStatisticsDO::getMerchantId, merchantId).eq(ConvenientViewStatisticsDO::getStatisticDate, nowDate)); |
| | | if (isNull(statisticsDO)) { |
| | | convenientViewStatisticsDAO.createTodayStatistic(merchantId); |
| | | } else { |
| | | convenientViewStatisticsDAO.incrViewNum(merchantId, nowDate); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R exportMerchant(ExportMerchantDTO exportMerchantDTO) { |
| | | List<Long> needExportIds = exportMerchantDTO.getIds(); |
| | | if (nonNull(needExportIds) && !needExportIds.isEmpty()) { |
| | | //根据id导出 |
| | | return R.ok(this.baseMapper.exportMerchantByIds(needExportIds)); |
| | | } |
| | | List<ExportMerchantVO> exportMerchantVOList = this.baseMapper.exportMerchantBySearch(exportMerchantDTO); |
| | | if (nonNull(exportMerchantDTO.getServiceId()) && !exportMerchantVOList.isEmpty()) { |
| | | exportMerchantVOList.forEach(merchant -> { |
| | | String serviceScope = convenientServiceCategoryDAO.selectServiceScopeByMerchantId(merchant.getId()); |
| | | merchant.setServiceScope(serviceScope); |
| | | }); |
| | | } |
| | | return R.ok(exportMerchantVOList); |
| | | } |
| | | |
| | | /** |
| | | * 定时任务每隔半小时将商家浏览量和咨询量总值计入指定商家数据中 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R timedTaskWriteDataToMerchantJobHandler() { |
| | | List<ConvenientConsultationStatisticsVO> consultationVOList = convenientConsultationStatisticsDAO.selectSumForConsultationNum(); |
| | | List<ConvenientViewStatisticsVO> viewVOList = convenientViewStatisticsDAO.selectSumForViewNum(); |
| | | this.baseMapper.batchUpdateMerchantConsultationNum(consultationVOList); |
| | | this.baseMapper.batchUpdateMerchantViewNum(viewVOList); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * check商家/店铺是否有效 |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean checkStoreIsValid(Long userId) { |
| | | R<LoginUserInfoVO> loginUserInfo = userService.getUserInfoByUserId(userId.toString()); |
| | | LoginUserInfoVO loginUserInfoVO = |
| | | JSONObject.parseObject(JSONObject.toJSONString(loginUserInfo.getData()), LoginUserInfoVO.class); |
| | | if (isNull(loginUserInfoVO) || !loginUserInfoVO.getType().equals(10) || loginUserInfoVO.getStatus() != 1) { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | } |