From a8e83d12274b776b215895273e7021c4eb2ba789 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期四, 05 六月 2025 09:54:07 +0800 Subject: [PATCH] 小程序接口 发布优化 首页放行 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java | 253 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 251 insertions(+), 2 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java index 3a1f1e0..48bd695 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbCompanyServiceImpl.java @@ -1,11 +1,29 @@ package com.ruoyi.system.service.impl; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.dto.EditCompanyDto; +import com.ruoyi.system.dto.PushCompanyDto; import com.ruoyi.system.mapper.TbCompanyMapper; -import com.ruoyi.system.model.TbCompany; -import com.ruoyi.system.service.TbCompanyService; +import com.ruoyi.system.model.*; +import com.ruoyi.system.query.CompanyListQuery; +import com.ruoyi.system.query.MyPushCompanyListQuery; +import com.ruoyi.system.service.*; +import com.ruoyi.system.vo.*; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -18,4 +36,235 @@ @Service public class TbCompanyServiceImpl extends ServiceImpl<TbCompanyMapper, TbCompany> implements TbCompanyService { + @Autowired + private TbPermitService permitService; + + @Autowired + private TbIndustryService industryService; + + @Autowired + private TbOpeningBankService openingBankService; + + @Autowired + private TbOrderService orderService; + + @Autowired + private TbScheduleService scheduleService; + + @Autowired + private TbBuyerCompanyInfoService buyerCompanyInfoService; + + @Autowired + private TbUserService userService; + + @Autowired + private TbCompanyTypeService companyTypeService; + + @Autowired + private RedisCache redisCache; + + @Override + public Page<IndexCompanyListVo> getCompanyList(CompanyListQuery query, Long userId) { + Page<TbCompany> page = new Page<>(query.getPageNum(), query.getPageSize()); + Page<IndexCompanyListVo> page1 = new Page<>(); + LambdaQueryWrapper<TbCompany> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TbCompany::getIsDelete, 0); + queryWrapper.eq(TbCompany::getStatus, 1); + if (query.getCertificateNames() != null && query.getCertificateNames().size() > 0) { + List<TbPermit> tbPermits = permitService.list(new LambdaQueryWrapper<TbPermit>().in(TbPermit::getName, query.getCertificateNames())); + if (tbPermits.isEmpty()) { + return page1; + } + queryWrapper.in(TbCompany::getId, tbPermits.stream().map(TbPermit::getCompanyId).collect(Collectors.toList())); + } + queryWrapper.eq(TbCompany::getCityCode, query.getCityCode()); + queryWrapper.eq(TbCompany::getAreaCode, query.getAreaCode()); + queryWrapper.like(StringUtils.isNotEmpty(query.getCompanyName()),TbCompany::getCompanyName, query.getCompanyName()); + + if (query.getCompanyCategorys() != null && query.getCompanyCategorys().size() > 0) { + queryWrapper.in(TbCompany::getCompanyCategory, query.getCompanyCategorys()); + } + + if (query.getRegisteredCapitals() != null && query.getRegisteredCapitals().size() > 0) { + queryWrapper.in(TbCompany::getRegisteredCapital, query.getRegisteredCapitals()); + } + + if (query.getCompanyIndustryIds() != null && query.getCompanyIndustryIds().size() > 0) { + queryWrapper.in(TbCompany::getCompanyIndustryId, query.getCompanyIndustryIds()); + } + + if (query.getTaxpayerTypes() != null && query.getTaxpayerTypes().size() > 0) { + queryWrapper.in(TbCompany::getTaxpayerType, query.getTaxpayerTypes()); + } + if (query.getTaxCredits() != null && query.getTaxCredits().size() > 0) { + queryWrapper.in(TbCompany::getTaxCredit, query.getTaxCredits()); + } + + if (query.getHighTechEnterpriseTechnology() != null) { + queryWrapper.eq(TbCompany::getHighTechEnterpriseTechnology, query.getHighTechEnterpriseTechnology()); + } + if (query.getSocialSecurity() != null) { + queryWrapper.eq(TbCompany::getSocialSecurity, query.getSocialSecurity()); + } + if (query.getTendering() != null) { + queryWrapper.eq(TbCompany::getTendering, query.getTendering()); + } + if (query.getHaveTrademark() != null) { + queryWrapper.eq(TbCompany::getHaveTrademark, query.getHaveTrademark()); + } + if (query.getHavePatent() != null) { + queryWrapper.eq(TbCompany::getHavePatent, query.getHavePatent()); + } + if (query.getHaveSoftWorks() != null) { + queryWrapper.eq(TbCompany::getHaveSoftWorks, query.getHaveSoftWorks()); + } + if (query.getMoneySort() != null && query.getMoneySort() == 1) { + queryWrapper.orderByDesc(TbCompany::getSaleMoney); + } else if (query.getMoneySort() != null && query.getMoneySort() == 2) { + queryWrapper.orderByAsc(TbCompany::getSaleMoney); + } else { + queryWrapper.orderByDesc(TbCompany::getCreateTime); + } + Page<TbCompany> companyPage = this.baseMapper.selectPage(page, queryWrapper); + if (companyPage.getRecords().isEmpty()) { + return page1; + } + List<Integer> ids = companyPage.getRecords().stream().map(TbCompany::getCompanyIndustryId).collect(Collectors.toList()); + List<TbIndustry> tbIndustries = industryService.list(new LambdaQueryWrapper<TbIndustry>().in(TbIndustry::getId, ids)); + ArrayList<IndexCompanyListVo> list = new ArrayList<>(); + for (TbCompany record : companyPage.getRecords()) { + IndexCompanyListVo indexCompanyListVo = new IndexCompanyListVo(); + indexCompanyListVo.setId(record.getId()); + indexCompanyListVo.setCompanyName(record.getCompanyName()); + TbIndustry tbIndustry = tbIndustries.stream().filter(e -> e.getId().equals(record.getCompanyIndustryId())).findFirst().orElse(null); + indexCompanyListVo.setIndustryName(tbIndustry.getName()); + indexCompanyListVo.setEstablishTime(record.getEstablishTime()); + indexCompanyListVo.setTaxpayerType(record.getTaxpayerType()); + indexCompanyListVo.setTaxCredit(record.getTaxCredit()); + indexCompanyListVo.setCompanyCategory(record.getCompanyCategory()); + indexCompanyListVo.setHighTechEnterpriseTechnology(record.getHighTechEnterpriseTechnology()); + indexCompanyListVo.setPaidInFunds(record.getPaidInFunds()); + indexCompanyListVo.setRegisteredCapital(record.getRegisteredCapital()); + indexCompanyListVo.setSaleMoney(record.getSaleMoney()); + if (record.getUserId().equals(userId.toString())) { + indexCompanyListVo.setIsMyself(1); + } + list.add(indexCompanyListVo); + + } + BeanUtils.copyProperties(companyPage, page1); + page1.setRecords(list); + return page1; + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public void pushCompany(PushCompanyDto dto, Long userId) { + TbCompany tbCompany = new TbCompany(); + BeanUtils.copyProperties(dto, tbCompany); + tbCompany.setUserId(userId.toString()); + this.save(tbCompany); + + List<TbPermit> permits = dto.getPermits(); + for (TbPermit permit : permits) { + permit.setCompanyId(tbCompany.getId()); + permitService.save(permit); + } + List<TbOpeningBank> openingBanks = dto.getOpeningBanks(); + for (TbOpeningBank openingBank : openingBanks) { + openingBank.setCompanyId(tbCompany.getId()); + openingBankService.save(openingBank); + } + + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public void editCompany(EditCompanyDto dto, TbCompany company, Long userId) { + BeanUtils.copyProperties(dto, company); + company.setUserId(userId.toString()); + this.updateById(company); + permitService.remove(new LambdaQueryWrapper<TbPermit>().eq(TbPermit::getCompanyId, dto.getId())); + openingBankService.remove(new LambdaQueryWrapper<TbOpeningBank>().eq(TbOpeningBank::getCompanyId, dto.getId())); + List<TbPermit> permits = dto.getPermits(); + for (TbPermit permit : permits) { + permit.setCompanyId(company.getId()); + permitService.save(permit); + } + List<TbOpeningBank> openingBanks = dto.getOpeningBanks(); + for (TbOpeningBank openingBank : openingBanks) { + openingBank.setCompanyId(company.getId()); + openingBankService.save(openingBank); + } + + } + + @Override + public Page<MyPushCompanyListVo> getMyPushCompanyList(MyPushCompanyListQuery query, Long userId) { + Page<MyPushCompanyListVo> page = new Page<>(query.getPageNum(), query.getPageSize()); + return this.baseMapper.getMyPushCompanyList(page, query, userId); + } + + @Override + public CompanyDetailVo companyDetail(String companyId, Long userId) { + CompanyDetailVo companyDetailVo = new CompanyDetailVo(); + TbCompany tbCompany = this.baseMapper.selectById(companyId); + BeanUtils.copyProperties(tbCompany, companyDetailVo); + + TbIndustry industry = industryService.getById(tbCompany.getCompanyIndustryId()); + companyDetailVo.setCompanyIndustryName(industry.getName()); + + List<TbPermit> list = permitService.list(new LambdaQueryWrapper<TbPermit>().eq(TbPermit::getCompanyId, companyId)); + companyDetailVo.setPermits(list); + + List<TbOpeningBank> list1 = openingBankService.list(new LambdaQueryWrapper<TbOpeningBank>().eq(TbOpeningBank::getCompanyId, companyId)); + companyDetailVo.setOpeningBanks(list1); + + Integer companyCategory = tbCompany.getCompanyCategory(); + TbCompanyType byId = companyTypeService.getById(companyCategory); + companyDetailVo.setCompanyCategoryName(byId.getName()); + + // 当前未产生订单 + if (tbCompany.getStatus() == 1) { + companyDetailVo.setStatus(1); + return companyDetailVo; + } + + TbOrder order = orderService.getOne(new LambdaQueryWrapper<TbOrder>().eq(TbOrder::getCompanyId, companyId).gt(TbOrder::getStatus, 0).orderByDesc(TbOrder::getCreateTime).last("limit 1")); + companyDetailVo.setStatus(order.getStatus()); + + List<TbSchedule> list2 = scheduleService.list(new LambdaQueryWrapper<TbSchedule>().eq(TbSchedule::getOrderId, order.getId()).orderByDesc(TbSchedule::getCreateTime)); + List<TbSchedule> collect = list2.stream().filter(e -> StringUtils.isEmpty(e.getParentId())).collect(Collectors.toList()); + for (TbSchedule tbSchedule : collect) { + List<TbSchedule> collect1 = list2.stream().filter(e -> StringUtils.isNotEmpty(e.getParentId()) && e.getParentId().equals(tbSchedule.getId())).collect(Collectors.toList()); + tbSchedule.setSchedules(collect1); + } + companyDetailVo.setSchedules(collect); + companyDetailVo.setPayTime(order.getPayTime()); + companyDetailVo.setConfirmTime(order.getConfirmTime()); + + TbBuyerCompanyInfo one = buyerCompanyInfoService.getOne(new LambdaQueryWrapper<TbBuyerCompanyInfo>().eq(TbBuyerCompanyInfo::getOrderId, order.getId())); + CustomerInfoVo customerInfoVo = new CustomerInfoVo(); + BeanUtils.copyProperties(one, customerInfoVo); + companyDetailVo.setCustomerInfoVo(customerInfoVo); + companyDetailVo.setEstimatedRevenue(order.getPrice().subtract(order.getCommissionPrice()).subtract(order.getCommissionPlatform())); + + TbUser user = userService.getById(order.getUserId()); + companyDetailVo.setCustomerName(user.getUserName()); + + // 异常原因 + List<Object> cacheList = redisCache.getCacheList("abnormal_" + companyId); + if (cacheList.isEmpty()) { + ArrayList<AbnormalVo> abnormalVos = new ArrayList<>(); + for (Object o : cacheList) { + AbnormalVo abnormalVo = JSONObject.parseObject(o.toString(), AbnormalVo.class); + abnormalVos.add(abnormalVo); + } + companyDetailVo.setAbnormalVos(abnormalVos); + }else { + // TODO 企查查 次数查询加数据库 并加入缓存1天过期 + } + + return companyDetailVo; + } } -- Gitblit v1.7.1