| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import static java.util.Objects.isNull; |
| | | import static java.util.Objects.nonNull; |
| | | 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 javax.annotation.Resource; |
| | | |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | 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.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 org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import static java.util.Objects.isNull; |
| | | import static java.util.Objects.nonNull; |
| | | import static org.apache.commons.lang3.StringUtils.isNotBlank; |
| | | |
| | | /** |
| | | * @title: ConvenientMerchantServiceImpl |
| | |
| | | private ConvenientServiceCategoryDAO convenientServiceCategoryDAO; |
| | | @Resource |
| | | private ComActDAO comActDAO; |
| | | @Resource |
| | | private ConvenientProductDAO convenientProductDAO; |
| | | @Resource |
| | | private ConvenientConsultationStatisticsDAO convenientConsultationStatisticsDAO; |
| | | @Resource |
| | | private ConvenientViewStatisticsDAO convenientViewStatisticsDAO; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy()); |
| | | }); |
| | | } |
| | | BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO); |
| | | 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); |
| | | }); |
| | | } |
| | | return R.ok(iPage); |
| | | } |
| | | |
| | |
| | | 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 monthConsultationVolume = convenientConsultationStatisticsDAO.selectMonthConsultationVolume(merchantId, moth); |
| | | int dayConsultationVolume = convenientConsultationStatisticsDAO.selectDayConsultationVolume(merchantId, day); |
| | | int monthViewNum = convenientViewStatisticsDAO.selectMonthViewNum(merchantId, moth); |
| | | int dayViewNum = convenientViewStatisticsDAO.selectDayViewNum(merchantId, day); |
| | | convenientMerchantVO.setMonthConsultationVolume(monthConsultationVolume); |
| | | convenientMerchantVO.setDayConsultationVolume(dayConsultationVolume); |
| | | convenientMerchantVO.setMonthViewNum(monthViewNum); |
| | | convenientMerchantVO.setDayViewNum(dayViewNum); |
| | | return R.ok(convenientMerchantVO); |
| | | } |
| | | |
| | |
| | | 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) { |
| | | 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) { |
| | | 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) { |
| | | return R.ok(this.baseMapper.exportMerchant(exportMerchantDTO)); |
| | | } |
| | | |
| | | /** |
| | | * 定时任务每隔半小时将商家浏览量和咨询量总值计入指定商家数据中 |
| | | * @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(); |
| | | } |
| | | } |