Kaynağa Gözat

完成修改认证

steelwei 1 ay önce
ebeveyn
işleme
a21d6c15d3

+ 25 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java

@@ -19,7 +19,10 @@ import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.satoken.utils.LoginHelper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.dromara.fulfiller.domain.FlfAudit;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerVo;
+import org.dromara.fulfiller.mapper.FlfAuditMapper;
 import org.dromara.fulfiller.domain.bo.FlfFulfillerBo;
 import org.dromara.fulfiller.domain.bo.FlfRewardBo;
 import org.dromara.fulfiller.domain.bo.FlfAdjustPointsBo;
@@ -41,6 +44,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
 public class FlfFulfillerController extends BaseController {
 
     private final IFlfFulfillerService fulfillerService;
+    private final FlfAuditMapper auditMapper;
 
     /**
      * 获取当前登录履约者个人信息(App端,只需登录无需后台权限)
@@ -102,7 +106,27 @@ public class FlfFulfillerController extends BaseController {
     @GetMapping("/my/auth")
     public R<FlfFulfillerVo> getMyAuthInfo() {
         Long userId = LoginHelper.getUserId();
-        return R.ok(fulfillerService.queryByUserId(userId));
+        FlfFulfillerVo vo = fulfillerService.queryByUserId(userId);
+        if (vo != null) {
+            Long pendingCount = auditMapper.selectCount(
+                Wrappers.lambdaQuery(FlfAudit.class)
+                    .eq(FlfAudit::getFulfillerId, vo.getId())
+                    .eq(FlfAudit::getStatus, 0)
+            );
+            vo.setPendingAudit(pendingCount > 0);
+        }
+        return R.ok(vo);
+    }
+
+    /**
+     * 更新认证信息(App端)
+     * @author steelwei
+     */
+    @Log(title = "履约者-更新认证信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/my/auth")
+    public R<Void> updateMyAuthInfo(@RequestBody Map<String, String> params) {
+        Long userId = LoginHelper.getUserId();
+        return toAjax(fulfillerService.updateAuthInfoByUserId(userId, params));
     }
 
     /**

+ 2 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfFulfillerVo.java

@@ -70,6 +70,8 @@ public class FlfFulfillerVo implements Serializable {
     private Boolean hasPassword;
     /** 已注册天数 */
     private Long registerDays;
+    /** 是否有待审核的认证变更 */
+    private Boolean pendingAudit;
 
     /**
      * 关联标签列表

+ 6 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfFulfillerService.java

@@ -120,4 +120,10 @@ public interface IFlfFulfillerService {
      */
     Boolean deleteAccountByUserId(Long userId);
 
+    /**
+     * 更新认证信息(App端)
+     * @author steelwei
+     */
+    Boolean updateAuthInfoByUserId(Long userId, java.util.Map<String, String> params);
+
 }

+ 27 - 3
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAuditServiceImpl.java

@@ -174,12 +174,24 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
         baseMapper.updateById(update);
 
         // 创建或更新履约者信息
-        if ("register".equals(audit.getType())) {
+        if ("register".equals(audit.getType()) && audit.getFulfillerId() != null) {
+            // 已有履约者的修改认证重新审核:直接更新履约者信息
+            FlfFulfiller fulfiller = fulfillerMapper.selectById(audit.getFulfillerId());
+            if (fulfiller != null) {
+                fulfiller.setIdCardFront(audit.getIdCardFront());
+                fulfiller.setIdCardBack(audit.getIdCardBack());
+                fulfiller.setServiceTypes(audit.getServiceTypes());
+                fulfiller.setQualImages(audit.getQualifications());
+                fulfiller.setAuthId(true);
+                fulfiller.setAuthQual(StringUtils.isNotBlank(audit.getQualifications()));
+                fulfillerMapper.updateById(fulfiller);
+            }
+        } else if ("register".equals(audit.getType())) {
+            // 首次入驻审核通过:创建用户和履约者
             // 1. 创建 sys_user 记录(platformId=FULFILLER, userType=fulfiller_user)
             RemoteUserBo userBo = new RemoteUserBo();
             userBo.setUserName(audit.getPhone());
             userBo.setNickName(audit.getName());
-            // 密码已在submitApply时BCrypt加密,直接使用
             userBo.setPassword(audit.getPassword());
             userBo.setPhonenumber(audit.getPhone());
             userBo.setSex(audit.getGender());
@@ -195,7 +207,7 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
             fulfiller.setName(audit.getName());
             fulfiller.setRealName(audit.getRealName());
             fulfiller.setPhone(audit.getPhone());
-            fulfiller.setPassword(audit.getPassword()); // 已BCrypt加密
+            fulfiller.setPassword(audit.getPassword());
             fulfiller.setGender(audit.getGender());
             fulfiller.setBirthday(audit.getBirthday());
             fulfiller.setIdCard(audit.getIdCard());
@@ -220,6 +232,18 @@ public class FlfAuditServiceImpl implements IFlfAuditService {
             auditUpdate2.setId(id);
             auditUpdate2.setFulfillerId(fulfiller.getId());
             baseMapper.updateById(auditUpdate2);
+        } else if ("qualification".equals(audit.getType())) {
+            // 资质变更审核通过:更新现有履约者的认证信息
+            FlfFulfiller fulfiller = fulfillerMapper.selectById(audit.getFulfillerId());
+            if (fulfiller != null) {
+                fulfiller.setIdCardFront(audit.getIdCardFront());
+                fulfiller.setIdCardBack(audit.getIdCardBack());
+                fulfiller.setServiceTypes(audit.getServiceTypes());
+                fulfiller.setQualImages(audit.getQualifications());
+                fulfiller.setAuthId(true);
+                fulfiller.setAuthQual(StringUtils.isNotBlank(audit.getQualifications()));
+                fulfillerMapper.updateById(fulfiller);
+            }
         }
 
         return true;

+ 58 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -19,6 +19,7 @@ import org.dromara.system.api.RemoteUserService;
 import org.dromara.system.api.domain.bo.RemoteUserBo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.dromara.fulfiller.domain.FlfAudit;
 import org.dromara.fulfiller.domain.FlfFulfiller;
 import org.dromara.fulfiller.domain.FlfPointsLog;
 import org.dromara.fulfiller.domain.FlfBalanceLog;
@@ -31,6 +32,7 @@ import org.dromara.fulfiller.domain.bo.FlfAdjustPointsBo;
 import org.dromara.fulfiller.domain.bo.FlfRewardBo;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerVo;
 import org.dromara.fulfiller.domain.vo.SysTagVo;
+import org.dromara.fulfiller.mapper.FlfAuditMapper;
 import org.dromara.fulfiller.mapper.FlfFulfillerMapper;
 import org.dromara.fulfiller.mapper.FlfPointsLogMapper;
 import org.dromara.fulfiller.mapper.FlfBalanceLogMapper;
@@ -60,6 +62,7 @@ import java.util.stream.Collectors;
 public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
 
     private final FlfFulfillerMapper baseMapper;
+    private final FlfAuditMapper auditMapper;
     private final FlfPointsLogMapper pointsLogMapper;
     private final FlfBalanceLogMapper balanceLogMapper;
     private final FlfRewardLogMapper rewardLogMapper;
@@ -545,4 +548,59 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         return baseMapper.deleteById(fulfiller.getId()) > 0;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateAuthInfoByUserId(Long userId, java.util.Map<String, String> params) {
+        FlfFulfiller fulfiller = baseMapper.selectOne(
+            Wrappers.lambdaQuery(FlfFulfiller.class).eq(FlfFulfiller::getUserId, userId)
+        );
+        if (fulfiller == null) {
+            return false;
+        }
+        
+        // 检查是否已有待审核记录,避免重复提交
+        Long pendingCount = auditMapper.selectCount(
+            Wrappers.lambdaQuery(FlfAudit.class)
+                .eq(FlfAudit::getFulfillerId, fulfiller.getId())
+                .eq(FlfAudit::getStatus, 0)
+        );
+        if (pendingCount > 0) {
+            throw new RuntimeException("您的认证信息正在审核中,请等待审核完成后再修改");
+        }
+        
+        // 查找该履约者已有的审核记录(取最新一条)
+        FlfAudit audit = auditMapper.selectOne(
+            Wrappers.lambdaQuery(FlfAudit.class)
+                .eq(FlfAudit::getFulfillerId, fulfiller.getId())
+                .orderByDesc(FlfAudit::getCreateTime)
+                .last("LIMIT 1")
+        );
+        
+        if (audit == null) {
+            return false;
+        }
+        
+        // 在原有审核记录上更新信息和状态
+        if (params.containsKey("idCardFront")) {
+            audit.setIdCardFront(Long.parseLong(params.get("idCardFront")));
+        }
+        if (params.containsKey("idCardBack")) {
+            audit.setIdCardBack(Long.parseLong(params.get("idCardBack")));
+        }
+        if (params.containsKey("serviceTypes")) {
+            audit.setServiceTypes(params.get("serviceTypes"));
+        }
+        if (params.containsKey("qualifications")) {
+            audit.setQualifications(params.get("qualifications"));
+        }
+        
+        // 重置为待审核状态
+        audit.setStatus(0);
+        audit.setRejectReason(null);
+        audit.setAuditBy(null);
+        audit.setAuditTime(null);
+        
+        return auditMapper.updateById(audit) > 0;
+    }
+
 }