|
|
@@ -0,0 +1,215 @@
|
|
|
+package io.renren.modules.qyh.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import io.renren.common.enums.AuditCodeEnum;
|
|
|
+import io.renren.common.enums.AuditStatusEnum;
|
|
|
+import io.renren.common.enums.EnterpriseStatusEnum;
|
|
|
+import io.renren.common.enums.IsDeleteEnum;
|
|
|
+import io.renren.common.exception.RRException;
|
|
|
+import io.renren.common.utils.Constant;
|
|
|
+import io.renren.common.utils.PageUtils;
|
|
|
+import io.renren.modules.qmgj.entity.MemberInfoEntity;
|
|
|
+import io.renren.modules.qmjz.utils.BeanCopyUtils;
|
|
|
+import io.renren.modules.qyh.entity.AuditEntity;
|
|
|
+import io.renren.modules.qyh.entity.EnterpriseEntity;
|
|
|
+import io.renren.modules.qyh.mapper.EnterpriseMapper;
|
|
|
+import io.renren.modules.qyh.model.dto.AuditDTO;
|
|
|
+import io.renren.modules.qyh.model.dto.EnterpriseDTO;
|
|
|
+import io.renren.modules.qyh.model.vo.EnterpriseVO;
|
|
|
+import io.renren.modules.qyh.service.AuditService;
|
|
|
+import io.renren.modules.qyh.service.EnterpriseService;
|
|
|
+import io.renren.modules.qyh.service.LoginVerificationService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 企业表
|
|
|
+ */
|
|
|
+@Service("enterpriseService")
|
|
|
+public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, EnterpriseEntity>
|
|
|
+ implements EnterpriseService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AuditService auditService;
|
|
|
+ @Autowired
|
|
|
+ private LoginVerificationService loginVerificationService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageUtils queryPage(Map<String, Object> params) {
|
|
|
+ Integer page = MapUtil.getInt(params, Constant.PAGE);
|
|
|
+ Integer limit = MapUtil.getInt(params, Constant.LIMIT);
|
|
|
+ IPage<EnterpriseEntity> iPage = new Page<>(page, limit);
|
|
|
+ IPage<EnterpriseVO> enterprisePage = baseMapper.pageEnterprise(iPage, params);
|
|
|
+ return new PageUtils(enterprisePage);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EnterpriseVO info(Long id) {
|
|
|
+ EnterpriseEntity enterprise = this.loadById(id, true);
|
|
|
+ return getEnterpriseVO(enterprise.getId(), enterprise);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EnterpriseVO infoMemberId(Long id) {
|
|
|
+ EnterpriseEntity enterprise = this.loadByMemberId(id, true);
|
|
|
+ return getEnterpriseVO(enterprise.getId(), enterprise);
|
|
|
+ }
|
|
|
+
|
|
|
+ private EnterpriseVO getEnterpriseVO(Long id, EnterpriseEntity enterprise) {
|
|
|
+ EnterpriseVO enterpriseVO = new EnterpriseVO();
|
|
|
+ BeanCopyUtils.copyPropertiesIgnoreNull(enterprise, enterpriseVO);
|
|
|
+ AuditEntity auditEntity =
|
|
|
+ auditService.loadByBusinessId(id, AuditCodeEnum.ENTERPRISE_CERTIFICATION.code(), true);
|
|
|
+ enterpriseVO.setAuditId(auditEntity.getId());
|
|
|
+ enterpriseVO.setAuditStatus(auditEntity.getAuditStatus());
|
|
|
+ enterpriseVO.setAuditReason(auditEntity.getReason());
|
|
|
+ enterpriseVO.setAuditTime(auditEntity.getUpdateTime());
|
|
|
+ return enterpriseVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void saveEnterprise(EnterpriseDTO dto) {
|
|
|
+ validateEnterpriseExists(dto);
|
|
|
+ MemberInfoEntity memberInfoEntity = loginVerificationService.verificationMemberId(dto.getMemberId());
|
|
|
+ Long userId = memberInfoEntity.getId();
|
|
|
+
|
|
|
+ EnterpriseEntity entity = new EnterpriseEntity();
|
|
|
+ BeanCopyUtils.copyPropertiesIgnoreNull(dto, entity);
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ entity.setMemberId(userId);
|
|
|
+ entity.setCreateId(userId);
|
|
|
+ entity.setCreateTime(now);
|
|
|
+ entity.setUpdateId(userId);
|
|
|
+ entity.setUpdateTime(now);
|
|
|
+ baseMapper.insert(entity);
|
|
|
+
|
|
|
+ AuditDTO auditDTO = new AuditDTO();
|
|
|
+ auditDTO.setBusinessId(entity.getId());
|
|
|
+ auditDTO.setMemberId(userId);
|
|
|
+ auditDTO.setAuditStatus(AuditStatusEnum.PENDING_REVIEW.value());
|
|
|
+ auditDTO.setCreateId(dto.getCreateId());
|
|
|
+ auditDTO.setUpdateId(dto.getUpdateId());
|
|
|
+ auditDTO.setCode(AuditCodeEnum.ENTERPRISE_CERTIFICATION.code());
|
|
|
+ auditService.saveAudit(auditDTO);
|
|
|
+
|
|
|
+ entity.setAuditId(auditDTO.getId());
|
|
|
+ baseMapper.updateById(entity);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateEnterprise(EnterpriseDTO dto) {
|
|
|
+ MemberInfoEntity memberInfoEntity = loginVerificationService.verificationMemberId(dto.getMemberId());
|
|
|
+ Long userId = memberInfoEntity.getId();
|
|
|
+ AuditEntity auditEntity = auditService.loadByAuditId(dto.getAuditId(), true);
|
|
|
+ AuditStatusEnum statusEnum = AuditStatusEnum.getByCode(auditEntity.getAuditStatus());
|
|
|
+ if (statusEnum != null) {
|
|
|
+ if (statusEnum.value().equals(AuditStatusEnum.FAIL.value())) {
|
|
|
+ EnterpriseEntity entity = this.loadById(dto.getId(), true);
|
|
|
+ BeanCopyUtils.copyPropertiesIgnoreNull(dto, entity);
|
|
|
+ entity.setUpdateId(userId);
|
|
|
+ entity.setUpdateTime(LocalDateTime.now());
|
|
|
+ baseMapper.updateById(entity);
|
|
|
+
|
|
|
+ auditEntity.setAuditStatus(AuditStatusEnum.PENDING_REVIEW.value());
|
|
|
+ auditEntity.setReason(null);
|
|
|
+ auditService.updateById(auditEntity);
|
|
|
+ } else {
|
|
|
+ throw new RRException("企业认证不能修改");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EnterpriseEntity loadById(Long id, Boolean tw) {
|
|
|
+ EnterpriseEntity entity = baseMapper.selectById(id);
|
|
|
+ if (entity == null) {
|
|
|
+ if (tw) {
|
|
|
+ throw new RRException("企业认证不存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return entity;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EnterpriseEntity loadByMemberId(Long memberId, Boolean tw) {
|
|
|
+ EnterpriseEntity entity = baseMapper.selectOne(new LambdaQueryWrapper<EnterpriseEntity>().eq(EnterpriseEntity::getMemberId, memberId).last("limit 1"));
|
|
|
+ if (entity == null) {
|
|
|
+ if (tw) {
|
|
|
+ throw new RRException("此用户的企业不存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return entity;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void deleteEnterpriseByIds(Long[] ids) {
|
|
|
+ for (Long id : ids) {
|
|
|
+ EnterpriseEntity entity = loadById(id, true);
|
|
|
+ entity.setIsDelete(IsDeleteEnum.DELETE.value());
|
|
|
+ entity.setUpdateTime(LocalDateTime.now());
|
|
|
+ baseMapper.updateById(entity);
|
|
|
+ auditService.removeById(entity.getAuditId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void uploadEnterpriseInfo(EnterpriseDTO dto) {
|
|
|
+ loginVerificationService.verificationMemberId(dto.getMemberId());
|
|
|
+ EnterpriseEntity entity = this.loadById(dto.getId(), true);
|
|
|
+ if (!EnterpriseStatusEnum.PAID.value().equals(entity.getStatus())) {
|
|
|
+ throw new RRException("当前企业未缴费");
|
|
|
+ }
|
|
|
+ entity.setEnterpriseIntro(dto.getEnterpriseIntro());
|
|
|
+ entity.setEnterpriseAddress(dto.getEnterpriseAddress());
|
|
|
+ entity.setEnterprisePhone(dto.getEnterprisePhone());
|
|
|
+ entity.setEnterpriseLogo(dto.getEnterpriseLogo());
|
|
|
+ entity.setMainTags(dto.getMainTags());
|
|
|
+ entity.setEnterpriseEmail(dto.getEnterpriseEmail());
|
|
|
+ entity.setEnterprisePromoImages(dto.getEnterprisePromoImages());
|
|
|
+ entity.setUpdateId(dto.getMemberId());
|
|
|
+ entity.setUpdateTime(LocalDateTime.now());
|
|
|
+ baseMapper.updateById(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageUtils queryApiPage(Map<String, Object> params) {
|
|
|
+ Integer page = MapUtil.getInt(params, Constant.PAGE);
|
|
|
+ Integer limit = MapUtil.getInt(params, Constant.LIMIT);
|
|
|
+ IPage<EnterpriseEntity> iPage = new Page<>(page, limit);
|
|
|
+ IPage<EnterpriseVO> enterprisePage = baseMapper.pageApiEnterprise(iPage, params);
|
|
|
+ return new PageUtils(enterprisePage);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EnterpriseEntity apiInfo(Long id) {
|
|
|
+ EnterpriseEntity enterprise = loadById(id, true);
|
|
|
+ if (!EnterpriseStatusEnum.PAID.value().equals(enterprise.getStatus())) {
|
|
|
+ throw new RRException("当前企业暂时无法查看");
|
|
|
+ }
|
|
|
+ return enterprise;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void validateEnterpriseExists(EnterpriseDTO dto) {
|
|
|
+ Integer memberCount = baseMapper.selectCount(
|
|
|
+ new LambdaQueryWrapper<EnterpriseEntity>().eq(EnterpriseEntity::getMemberId, dto.getMemberId())
|
|
|
+ .eq(EnterpriseEntity::getIsDelete, IsDeleteEnum.NORMAL.value()));
|
|
|
+ if (NumberUtil.isGreater(NumberUtil.toBigDecimal(memberCount), BigDecimal.ZERO)) {
|
|
|
+ throw new RRException("当前微信用户已有企业认证记录");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|