|
|
@@ -0,0 +1,89 @@
|
|
|
+package org.dromara.system.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.crypto.digest.BCrypt;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.dromara.common.core.exception.ServiceException;
|
|
|
+import org.dromara.common.core.utils.MapstructUtils;
|
|
|
+import org.dromara.common.platform.Platform;
|
|
|
+import org.dromara.common.tenant.helper.TenantHelper;
|
|
|
+import org.dromara.system.domain.SysMerchantAudit;
|
|
|
+import org.dromara.system.domain.SysTenant;
|
|
|
+import org.dromara.system.domain.SysUser;
|
|
|
+import org.dromara.system.domain.bo.SysMerchantAuditBo;
|
|
|
+import org.dromara.system.mapper.SysMerchantAuditMapper;
|
|
|
+import org.dromara.common.mybatis.helper.DataPermissionHelper;
|
|
|
+import org.dromara.system.mapper.SysTenantMapper;
|
|
|
+import org.dromara.system.mapper.SysUserMapper;
|
|
|
+import org.dromara.system.service.ISysMerchantAuditService;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 商家注册审核Service业务层处理
|
|
|
+ *
|
|
|
+ * @author Antigravity
|
|
|
+ */
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Service
|
|
|
+public class SysMerchantAuditServiceImpl implements ISysMerchantAuditService {
|
|
|
+
|
|
|
+ private final SysMerchantAuditMapper baseMapper;
|
|
|
+ private final SysUserMapper userMapper;
|
|
|
+ private final SysTenantMapper tenantMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提交商家入驻申请
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public Boolean submitApply(SysMerchantAuditBo bo) {
|
|
|
+ // 0. 校验密码是否一致
|
|
|
+ if (!bo.getPassword().equals(bo.getConfirmPassword())) {
|
|
|
+ throw new ServiceException("两次输入的密码不一致");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 校验商户名称是否已存在于租户表中
|
|
|
+ boolean tenantExist = tenantMapper.exists(new LambdaQueryWrapper<SysTenant>()
|
|
|
+ .eq(SysTenant::getCompanyName, bo.getCompanyName())
|
|
|
+ );
|
|
|
+ if (tenantExist) {
|
|
|
+ throw new ServiceException("企业名称已存在,请重新输入");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 校验用户账号是否已存在于系统用户表中
|
|
|
+ boolean userExist = TenantHelper.ignore(() ->
|
|
|
+ DataPermissionHelper.ignore(() ->
|
|
|
+ userMapper.exists(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getUserName, bo.getUsername())
|
|
|
+ .eq(SysUser::getPlatformId, Platform.MERCHANT.getId()))
|
|
|
+ )
|
|
|
+ );
|
|
|
+ if (userExist) {
|
|
|
+ throw new ServiceException("用户账号已注册,请重新输入");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 校验是否存在待审核的相同申请(企业名称)
|
|
|
+ boolean auditCompanyExist = baseMapper.exists(new LambdaQueryWrapper<SysMerchantAudit>()
|
|
|
+ .eq(SysMerchantAudit::getCompanyName, bo.getCompanyName())
|
|
|
+ .eq(SysMerchantAudit::getStatus, 0)
|
|
|
+ );
|
|
|
+ if (auditCompanyExist) {
|
|
|
+ throw new ServiceException("该企业入驻申请正在审核中,请勿重复提交");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 校验是否存在待审核的相同申请(用户账号)
|
|
|
+ boolean auditUsernameExist = baseMapper.exists(new LambdaQueryWrapper<SysMerchantAudit>()
|
|
|
+ .eq(SysMerchantAudit::getUsername, bo.getUsername())
|
|
|
+ .eq(SysMerchantAudit::getStatus, 0)
|
|
|
+ );
|
|
|
+ if (auditUsernameExist) {
|
|
|
+ throw new ServiceException("该用户账号的入驻申请正在审核中,请勿重复提交");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysMerchantAudit audit = MapstructUtils.convert(bo, SysMerchantAudit.class);
|
|
|
+ audit.setPassword(BCrypt.hashpw(bo.getPassword()));
|
|
|
+ audit.setStatus(0); // 待审核
|
|
|
+ return baseMapper.insert(audit) > 0;
|
|
|
+ }
|
|
|
+}
|