From 09e41d546b030b47661877d4b8141c88584d7598 Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期五, 24 九月 2021 16:03:52 +0800
Subject: [PATCH] Merge branch 'test' into 'four_member'

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java |  396 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 396 insertions(+), 0 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
new file mode 100644
index 0000000..f9576b7
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientMerchantServiceImpl.java
@@ -0,0 +1,396 @@
+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 com.panzhihua.common.model.vos.community.convenient.ExportMerchantVO;
+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.baomidou.mybatisplus.core.metadata.IPage;
+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.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;
+
+/**
+ * @title: ConvenientMerchantServiceImpl
+ * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
+ * @description: 便民服务商家服务实现类
+ * @author: hans
+ * @date: 2021/09/16 16:14
+ */
+@Service
+public class ConvenientMerchantServiceImpl extends ServiceImpl<ConvenientMerchantDAO, ConvenientMerchantDO> implements ConvenientMerchantService {
+
+    @Resource
+    private UserService userService;
+    @Resource
+    private ConvenientServiceCategoryDAO convenientServiceCategoryDAO;
+    @Resource
+    private ComActDAO comActDAO;
+    @Resource
+    private ConvenientProductDAO convenientProductDAO;
+    @Resource
+    private ConvenientConsultationStatisticsDAO convenientConsultationStatisticsDAO;
+    @Resource
+    private ConvenientViewStatisticsDAO convenientViewStatisticsDAO;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R addMerchant(ConvenientMerchantDTO convenientMerchantDTO) {
+        ComActDO comActDO = comActDAO.selectById(convenientMerchantDTO.getCommunityId());
+        ConvenientMerchantDO convenientMerchantDO = new ConvenientMerchantDO();
+        BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO);
+        convenientMerchantDO.setUserId(0L);
+        convenientMerchantDO.setCommunityName(comActDO.getName());
+        convenientMerchantDO.setCreatedAt(new Date());
+        int insertResult = this.baseMapper.insert(convenientMerchantDO);
+        if (insertResult > 0) {
+            Long merchantId = convenientMerchantDO.getId();
+            if (nonNull(merchantId)) {
+                //添加服务
+                List<Long> serviceIds = convenientMerchantDTO.getServiceIds();
+                serviceIds.forEach(serviceId -> {
+                    ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
+                    convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
+                            convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
+                });
+            }
+        }
+        //添加user
+        R addUserResult = userService.addConvenientMerchantUser(convenientMerchantDTO);
+        if (R.isOk(addUserResult)) {
+            Long merchantUserId = ((Integer) addUserResult.getData()).longValue();
+            convenientMerchantDO.setUserId(merchantUserId);
+            this.baseMapper.updateById(convenientMerchantDO);
+        } else {
+            throw new ServiceException("406", addUserResult.getMsg());
+        }
+        return R.ok();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R putMerchant(ConvenientMerchantDTO convenientMerchantDTO) {
+        Long merchantId = convenientMerchantDTO.getId();
+        ConvenientMerchantDO convenientMerchantDO = this.baseMapper.selectById(merchantId);
+        if (isNull(convenientMerchantDO)) {
+            return R.fail("商家不存在");
+        }
+        Long communityId = convenientMerchantDTO.getCommunityId();
+        if (nonNull(communityId)) {
+            ComActDO comActDO = comActDAO.selectById(communityId);
+            convenientMerchantDO.setCommunityName(comActDO.getName());
+        }
+        String account = convenientMerchantDTO.getAccount();
+        if (isNotBlank(account)) {
+            //修改商家绑定账户号
+            R putAccountResult = userService.putUserAccount(convenientMerchantDO.getUserId(), account);
+            if (!R.isOk(putAccountResult)) {
+                return putAccountResult;
+            }
+        }
+        List<Long> serviceIds = convenientMerchantDTO.getServiceIds();
+        if (!serviceIds.isEmpty()) {
+            convenientServiceCategoryDAO.deleteMerchantServiceRelation(merchantId);
+            serviceIds.forEach(serviceId -> {
+                ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
+                convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
+                        convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
+            });
+        }
+        BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO);
+        this.baseMapper.updateById(convenientMerchantDO);
+        return R.ok();
+    }
+
+    @Override
+    public R deleteMerchant(Long merchantId, Long operator) {
+        int result = this.baseMapper.deleteMerchantById(merchantId, operator);
+        if (result > 0) {
+            return R.ok();
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R pageMerchant(PageConvenientMerchantDTO pageConvenientMerchantDTO) {
+        Page page = new Page<>();
+        page.setSize(pageConvenientMerchantDTO.getPageSize());
+        page.setCurrent(pageConvenientMerchantDTO.getPageNum());
+        IPage<ConvenientMerchantVO> iPage = this.baseMapper.pageMerchant(page, pageConvenientMerchantDTO);
+        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 getMerchant(Long merchantId) {
+        ConvenientMerchantVO convenientMerchantVO = this.baseMapper.selectMerchantById(merchantId);
+        List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId);
+        convenientMerchantVO.setServiceIds(serviceIds);
+        return R.ok(convenientMerchantVO);
+    }
+
+    @Override
+    public R disableOrEnableMerchant(DisableOrEnableConvenientMerchantDTO disableOrEnableConvenientMerchantDTO) {
+        R result = userService.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO);
+        if (R.isOk(result)) {
+            return R.ok();
+        }
+        return R.fail("操作失败");
+    }
+
+    @Override
+    public R resetPasswordMerchant(ResetPasswordConvenientMerchantDTO resetPasswordConvenientMerchantDTO) {
+        EventGridMemberPassResetDTO eventGridMemberPassResetDTO = new EventGridMemberPassResetDTO();
+        eventGridMemberPassResetDTO.setPassword(resetPasswordConvenientMerchantDTO.getPassword());
+        eventGridMemberPassResetDTO.setIds(resetPasswordConvenientMerchantDTO.getIds());
+        return userService.gridMemberPassReset(eventGridMemberPassResetDTO);
+    }
+
+    @Override
+    public R<ConvenientMerchantVO> getUserMerchantInfoByAccount(String account) {
+        try {
+            R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_10");
+            LoginUserInfoVO loginUserInfoVO =
+                    JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class);
+
+            if (isNull(loginUserInfoVO)) {
+                return R.fail(500, "该账号不存在");
+            }
+            ConvenientMerchantDO merchantDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ConvenientMerchantDO>()
+                    .eq(ConvenientMerchantDO::getIsDel, false).eq(ConvenientMerchantDO::getUserId, loginUserInfoVO.getUserId()));
+            if (isNull(merchantDO)) {
+                return R.fail(500, "该账号不存在");
+            }
+            ConvenientMerchantVO merchantVO = new ConvenientMerchantVO();
+            BeanUtils.copyProperties(merchantDO, merchantVO);
+            merchantVO.setAccount(account);
+            merchantVO.setAccountStatus(loginUserInfoVO.getStatus());
+            return R.ok(merchantVO);
+        } 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(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);
+    }
+
+    @Override
+    public R getPopularMerchants(PagePopularMerchantDTO pagePopularMerchantDTO) {
+        Date nowDate = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+        String currentMon = simpleDateFormat.format(nowDate).concat("%");
+        Page page = new Page<>();
+        page.setSize(pagePopularMerchantDTO.getPageSize());
+        page.setCurrent(pagePopularMerchantDTO.getPageNum());
+        IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getPopularMerchants(page, pagePopularMerchantDTO.getCommunityId(), currentMon);
+        return R.ok(merchantVOList);
+    }
+
+    @Override
+    public R getClassifyMerchants(PageClassifyMerchantDTO pageClassifyMerchantDTO) {
+        Date nowDate = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+        String currentMon = simpleDateFormat.format(nowDate).concat("%");
+        Page page = new Page<>();
+        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();
+    }
+}

--
Gitblit v1.7.1