From e099d0cd93c26b44bc1c10e51944edfad0465b0c Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 05 三月 2026 17:44:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/java/com/ruoyi/basic/service/impl/CustomerReturnVisitServiceImpl.java | 139 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 139 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerReturnVisitServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerReturnVisitServiceImpl.java
new file mode 100644
index 0000000..0186349
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerReturnVisitServiceImpl.java
@@ -0,0 +1,139 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.CustomerReturnVisitDto;
+import com.ruoyi.basic.mapper.CustomerReturnVisitMapper;
+import com.ruoyi.basic.pojo.CustomerReturnVisit;
+import com.ruoyi.basic.service.CustomerReturnVisitService;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <br>
+ * 瀹㈡埛鍥炶鎻愰啋鎺ュ彛瀹炵幇绫�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/04 17:58
+ */
+@Service
+public class CustomerReturnVisitServiceImpl extends ServiceImpl<CustomerReturnVisitMapper, CustomerReturnVisit> implements CustomerReturnVisitService {
+
+ @Autowired
+ private ReturnVisitReminderService returnVisitReminderService;
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int saveOrUpdateReturnVisit(CustomerReturnVisit customerReturnVisit) {
+ validateReturnVisit(customerReturnVisit);
+ Long currentUserId = SecurityUtils.getUserId();
+ Long currentTenantId = SecurityUtils.getLoginUser().getTenantId();
+ if (customerReturnVisit.getId() != null) {
+ CustomerReturnVisit existing = baseMapper.selectById(customerReturnVisit.getId());
+ if (existing == null) {
+ throw new ServiceException("鍥炶鎻愰啋涓嶅瓨鍦�");
+ }
+ if (!existing.getTenantId().equals(currentTenantId)) {
+ throw new ServiceException("鏃犳潈闄愪慨鏀规鍥炶鎻愰啋");
+ }
+ customerReturnVisit.setUpdateUser(currentUserId);
+ customerReturnVisit.setUpdateTime(LocalDateTime.now());
+ int result = baseMapper.updateById(customerReturnVisit);
+
+ // 鏍规嵁鎻愰啋寮�鍏虫潵鍒ゆ柇闃熷垪淇℃伅鏂板鎴栧彇娑�
+ if (customerReturnVisit.getIsEnabled() == 1) {
+ returnVisitReminderService.scheduleReminder(customerReturnVisit.getId());
+ } else {
+ returnVisitReminderService.cancelReminder(customerReturnVisit.getId());
+ }
+ return result;
+ } else {
+ customerReturnVisit.setCreateUser(currentUserId);
+ customerReturnVisit.setCreateTime(LocalDateTime.now());
+ customerReturnVisit.setTenantId(currentTenantId);
+ int result = baseMapper.insert(customerReturnVisit);
+
+ if (customerReturnVisit.getIsEnabled() == 1) {
+ returnVisitReminderService.scheduleReminder(customerReturnVisit.getId());
+ }
+ return result;
+ }
+ }
+
+ @Override
+ public CustomerReturnVisitDto getByCustomerId(Integer customerId) {
+ if (customerId == null) {
+ throw new ServiceException("瀹㈡埛ID涓嶈兘涓虹┖");
+ }
+ LambdaQueryWrapper<CustomerReturnVisit> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(CustomerReturnVisit::getCustomerId, customerId);
+ CustomerReturnVisit returnVisit = baseMapper.selectOne(queryWrapper);
+
+ if (returnVisit == null) {
+ return null;
+ }
+
+ CustomerReturnVisitDto dto = new CustomerReturnVisitDto();
+ BeanUtils.copyProperties(returnVisit, dto);
+ return dto;
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteByCustomerId(Long customerId) {
+ if (customerId == null) {
+ throw new ServiceException("瀹㈡埛ID涓嶈兘涓虹┖");
+ }
+ LambdaQueryWrapper<CustomerReturnVisit> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(CustomerReturnVisit::getCustomerId, customerId);
+ List<CustomerReturnVisit> returnVisits = baseMapper.selectList(queryWrapper);
+
+ for (CustomerReturnVisit returnVisit : returnVisits) {
+ returnVisitReminderService.cancelReminder(returnVisit.getId());
+ }
+ baseMapper.delete(queryWrapper);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void markAsRead(Long id) {
+ if (id == null) {
+ throw new ServiceException("鍥炶鎻愰啋ID涓嶈兘涓虹┖");
+ }
+ CustomerReturnVisit returnVisit = baseMapper.selectById(id);
+ if (returnVisit == null) {
+ throw new ServiceException("鍥炶鎻愰啋涓嶅瓨鍦�");
+ }
+
+ CustomerReturnVisit updateObj = new CustomerReturnVisit();
+ updateObj.setId(id);
+ updateObj.setIsCompleted(1);
+ baseMapper.updateById(updateObj);
+ }
+
+ private void validateReturnVisit(CustomerReturnVisit returnVisit) {
+ if (returnVisit == null) {
+ throw new ServiceException("鍥炶鎻愰啋鏁版嵁涓嶈兘涓虹┖");
+ }
+ if (returnVisit.getCustomerId() == null) {
+ throw new ServiceException("瀹㈡埛ID涓嶈兘涓虹┖");
+ }
+ if (returnVisit.getReminderTime() == null) {
+ throw new ServiceException("鎻愰啋鏃堕棿涓嶈兘涓虹┖");
+ }
+ if (returnVisit.getIsEnabled() != null && returnVisit.getIsEnabled() == 1) {
+ if (returnVisit.getReminderTime().isBefore(LocalDateTime.now())) {
+ throw new ServiceException("鎻愰啋鏃堕棿涓嶈兘鏃╀簬褰撳墠鏃堕棿");
+ }
+ }
+ }
+}
--
Gitblit v1.9.3