refactor: 清理代码、优化结构

- 移除订阅消息相关代码(WxSubscribeMessageService、subscribeTemplateId配置)
- 提取Result类为独立公共类(common.Result)
- 拆分Controller: WxLoginController(登录) + AppointmentController(预约)
- 引入Lombok(@Data/@Slf4j/@RequiredArgsConstructor)消除样板代码
- 修正WxLoginResult字段命名(session_key->sessionKey+@JsonProperty)
- MySQL驱动升级mysql-connector-java->mysql-connector-j
- updateStatus SQL增加status='pending'校验防并发重复审批
- pom.xml配置spring-boot-maven-plugin排除lombok
This commit is contained in:
ws
2026-04-21 18:12:30 +08:00
parent ea1b13f054
commit d7da7d46a1
11 changed files with 353 additions and 272 deletions
@@ -2,35 +2,105 @@ package com.example.mini_program.service;
import com.example.mini_program.entity.VisitApplication;
import com.example.mini_program.mapper.VisitApplicationMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
public class AppointmentService {
import java.util.List;
import java.util.UUID;
private static final Logger logger = LoggerFactory.getLogger(AppointmentService.class);
@Slf4j
@Service
@RequiredArgsConstructor
public class AppointmentService {
private final VisitApplicationMapper visitApplicationMapper;
public AppointmentService(VisitApplicationMapper visitApplicationMapper) {
this.visitApplicationMapper = visitApplicationMapper;
}
/**
* 根据openid获取最新的一条预约记录
*
* @param openid 微信用户openid
* @return 最新的一条预约记录,没有则返回null
*/
public VisitApplication getLatest(String openid) {
logger.info("查询用户最新预约记录, openid: {}", openid);
log.info("查询用户最新预约记录, openid: {}", openid);
VisitApplication result = visitApplicationMapper.selectLatestByOpenid(openid);
if (result != null) {
logger.info("找到预约记录, id: {}", result.getId());
log.info("找到预约记录, id: {}", result.getId());
} else {
logger.info("未找到预约记录");
log.info("未找到预约记录");
}
return result;
}
/**
* 获取用户所有预约记录(按创建时间倒序)
*/
public List<VisitApplication> getList(String openid) {
log.info("查询用户预约列表, openid: {}", openid);
List<VisitApplication> list = visitApplicationMapper.selectListByOpenid(openid);
log.info("查询到 {} 条预约记录", list.size());
return list;
}
/**
* 创建预约记录
*/
public VisitApplication create(VisitApplication record) {
record.setId(UUID.randomUUID().toString().replace("-", ""));
record.setStatus("pending");
record.setStatusText("待审核");
visitApplicationMapper.insert(record);
log.info("创建预约记录成功, id: {}, openid: {}", record.getId(), record.getOpenid());
return record;
}
/**
* 取消预约(仅pending状态可取消,需校验openid
*/
public boolean cancel(String id, String openid) {
log.info("取消预约, id: {}, openid: {}", id, openid);
VisitApplication existing = visitApplicationMapper.selectByIdAndOpenid(id, openid);
if (existing == null) {
log.warn("预约记录不存在或不属于该用户, id: {}, openid: {}", id, openid);
return false;
}
if (!"pending".equals(existing.getStatus())) {
log.warn("预约状态不允许取消, id: {}, status: {}", id, existing.getStatus());
return false;
}
int rows = visitApplicationMapper.updateStatusToCancelled(id, openid);
if (rows > 0) {
log.info("取消预约成功, id: {}", id);
return true;
}
log.warn("取消预约失败, id: {}", id);
return false;
}
/**
* 审批预约(通过/拒绝)
*/
public boolean approve(String id, String status) {
log.info("审批预约, id: {}, status: {}", id, status);
VisitApplication existing = visitApplicationMapper.selectById(id);
if (existing == null) {
log.warn("预约记录不存在, id: {}", id);
return false;
}
if (!"pending".equals(existing.getStatus())) {
log.warn("预约状态不允许审批, id: {}, currentStatus: {}", id, existing.getStatus());
return false;
}
String statusText = "approved".equals(status) ? "已通过" : "已拒绝";
int rows = visitApplicationMapper.updateStatus(id, status, statusText);
if (rows <= 0) {
log.warn("审批更新失败, id: {}", id);
return false;
}
log.info("审批成功, id: {}, status: {}", id, statusText);
return true;
}
}