From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 六月 2025 11:54:00 +0800
Subject: [PATCH] 6.9新增登录失败冻结逻辑

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java |  327 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 294 insertions(+), 33 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java
index 31ba566..9110be3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java
@@ -1,5 +1,7 @@
 package com.panzhihua.service_community.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -7,32 +9,28 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.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.ResetPasswordConvenientMerchantDTO;
+import com.panzhihua.common.model.dtos.community.convenient.*;
 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.ConvenientMerchantVO;
+import com.panzhihua.common.model.vos.community.convenient.*;
 import com.panzhihua.common.service.user.UserService;
-import com.panzhihua.service_community.dao.ComActDAO;
-import com.panzhihua.service_community.dao.ConvenientMerchantDAO;
-import com.panzhihua.service_community.dao.ConvenientServiceCategoryDAO;
-import com.panzhihua.service_community.model.dos.ComActDO;
-import com.panzhihua.service_community.model.dos.ConvenientMerchantDO;
-import com.panzhihua.service_community.model.dos.ConvenientServiceCategoryDO;
+import com.panzhihua.common.utlis.Snowflake;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
 import com.panzhihua.service_community.service.ConvenientMerchantService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static java.util.Objects.isNull;
 import static java.util.Objects.nonNull;
@@ -46,7 +44,9 @@
  * @date: 2021/09/16 16:14
  */
 @Service
-public class ConvenientMerchantServiceImpl extends ServiceImpl<ConvenientMerchantDAO, ConvenientMerchantDO> implements ConvenientMerchantService {
+@Slf4j
+public class ConvenientMerchantServiceImpl extends ServiceImpl<ConvenientMerchantDAO, ConvenientMerchantDO>
+        implements ConvenientMerchantService {
 
     @Resource
     private UserService userService;
@@ -54,15 +54,42 @@
     private ConvenientServiceCategoryDAO convenientServiceCategoryDAO;
     @Resource
     private ComActDAO comActDAO;
+    @Resource
+    private ConvenientProductDAO convenientProductDAO;
+    @Resource
+    private ConvenientConsultationStatisticsDAO convenientConsultationStatisticsDAO;
+    @Resource
+    private ConvenientViewStatisticsDAO convenientViewStatisticsDAO;
+    @Resource
+    private ComShopFlowerEvaluateDAO comShopFlowerEvaluateDAO;
+
+    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());
+        //校验微信手机号是否已使用
+        String mobilePhone = convenientMerchantDTO.getMobilePhone();
+        Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<ConvenientMerchantDO>().eq(ConvenientMerchantDO::getMobilePhone, mobilePhone));
+        if (count > 0) {
+            R.fail("该微信手机号:" + mobilePhone + "已被使用!请更换");
+        }
         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) {
@@ -72,7 +99,7 @@
                 List<Long> serviceIds = convenientMerchantDTO.getServiceIds();
                 serviceIds.forEach(serviceId -> {
                     ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
-                    convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
+                    convenientServiceCategoryDAO.createMerchantServiceRelation(Snowflake.getId(), merchantId, serviceId,
                             convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
                 });
             }
@@ -80,7 +107,7 @@
         //添加user
         R addUserResult = userService.addConvenientMerchantUser(convenientMerchantDTO);
         if (R.isOk(addUserResult)) {
-            Long merchantUserId = ((Integer) addUserResult.getData()).longValue();
+            Long merchantUserId = Long.parseLong(addUserResult.getData().toString());
             convenientMerchantDO.setUserId(merchantUserId);
             this.baseMapper.updateById(convenientMerchantDO);
         } else {
@@ -93,14 +120,25 @@
     @Transactional(rollbackFor = Exception.class)
     public R putMerchant(ConvenientMerchantDTO convenientMerchantDTO) {
         Long merchantId = convenientMerchantDTO.getId();
+        String mobilePhone = convenientMerchantDTO.getMobilePhone();
+        ConvenientMerchantDO merchantDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ConvenientMerchantDO>().eq(ConvenientMerchantDO::getMobilePhone, mobilePhone));
         ConvenientMerchantDO convenientMerchantDO = this.baseMapper.selectById(merchantId);
         if (isNull(convenientMerchantDO)) {
             return R.fail("商家不存在");
         }
+        Long createBy = convenientMerchantDO.getCreatedBy();
+        BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO);
+        if (nonNull(merchantDO) && !merchantDO.getId().equals(convenientMerchantDO.getId())) {
+            R.fail("该微信手机号:" + mobilePhone + "已被使用!请更换");
+        }
         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)) {
@@ -115,10 +153,12 @@
             convenientServiceCategoryDAO.deleteMerchantServiceRelation(merchantId);
             serviceIds.forEach(serviceId -> {
                 ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
-                convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
-                        convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
+                convenientServiceCategoryDAO.createMerchantServiceRelation(Snowflake.getId(), merchantId, serviceId,
+                        convenientServiceCategoryDO.getName(), createBy);
             });
         }
+
+        convenientMerchantDO.setIntroduction(convenientMerchantDTO.getIntroduction());
         this.baseMapper.updateById(convenientMerchantDO);
         return R.ok();
     }
@@ -138,13 +178,14 @@
         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);
     }
@@ -152,14 +193,22 @@
     @Override
     public R getMerchant(Long merchantId) {
         ConvenientMerchantVO convenientMerchantVO = this.baseMapper.selectMerchantById(merchantId);
-        List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId);
+        List<String> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId);
         convenientMerchantVO.setServiceIds(serviceIds);
         return R.ok(convenientMerchantVO);
     }
 
     @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();
         }
@@ -168,16 +217,19 @@
 
     @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);
     }
 
     @Override
     public R<ConvenientMerchantVO> getUserMerchantInfoByAccount(String account) {
         try {
-            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_10");
+            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_5");
             LoginUserInfoVO loginUserInfoVO =
                     JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class);
 
@@ -200,16 +252,48 @@
     }
 
     @Override
+    public R<ConvenientMerchantVO> getMerchantInfoByAccount(String account) {
+        try {
+            List<ConvenientMerchantVO> merchantDetailByAccount = this.baseMapper.getMerchantDetailByAccount(account);
+            if (CollUtil.isEmpty(merchantDetailByAccount)) {
+                return R.fail(500, "该账号不存在");
+            }
+            ConvenientMerchantVO convenientMerchantVO = merchantDetailByAccount.get(0);
+            return R.ok(convenientMerchantVO);
+        } catch (Exception e) {
+            return R.fail();
+        }
+    }
+
+    @Override
     public R<ConvenientMerchantVO> getUserConvenientMerchantInfo(Long userId) {
         ConvenientMerchantDO merchantDO = this.baseMapper.selectOne(new QueryWrapper<ConvenientMerchantDO>()
                 .lambda().eq(ConvenientMerchantDO::getUserId, userId));
         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<String> 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);
     }
 
@@ -221,7 +305,27 @@
         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> merchantVOS = new ArrayList<>();
+            ConvenientMerchantVO merchantVO = new ConvenientMerchantVO();
+            merchantVO.setName("金沙江智慧物流商贸城");
+            merchantVO.setLogo("https://www.psciio.com//idcard/0694d975ed4d4c49bcfb728a678518f2.jpg");
+            merchantVO.setIntroduction("农产直销、综合商贸、冷链储运、中央厨房、检验检疫、农博会展、总部商务、综合服务。");
+            merchantVO.setServiceScope("");
+            merchantVO.setConsultationVolume(0);
+            merchantVO.setMonthConsultationVolume(0);
+            merchantVOS.add(merchantVO);
+            //第一页默认把犇师傅维修中心加载到第一个
+            List<ConvenientMerchantVO> merchantList = this.baseMapper.selectMerchantByName(pagePopularMerchantDTO.getCommunityId(), currentMon);
+            if (merchantList != null && merchantList.size() > 0) {
+                merchantVOS.addAll(merchantList);
+                merchantVOS.addAll(merchantVOList.getRecords());
+                merchantVOList.setRecords(merchantVOS);
+            }
+
+        }
         return R.ok(merchantVOList);
     }
 
@@ -234,11 +338,19 @@
         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
      */
@@ -249,4 +361,153 @@
         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;
+    }
+
+    @Override
+    public R getMerchantByUserId(Long userId) {
+        ConvenientMerchantVO convenientMerchantVO = this.baseMapper.selectMerchantByUserId(userId);
+        if (isNull(convenientMerchantVO)) {
+            return R.fail("商家不存在");
+        }
+        Long merchantId = convenientMerchantVO.getId();
+        List<String> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId);
+        convenientMerchantVO.setServiceIds(serviceIds);
+        BigDecimal score = comShopFlowerEvaluateDAO.statisticsScore(merchantId);
+        convenientMerchantVO.setScore(null == score ? BigDecimal.ZERO : NumberUtil.round(score, 1));
+        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);
+    }
 }

--
Gitblit v1.7.1