From ed6a00a3124030d108c6345e605b80685aba6c31 Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Tue, 6 May 2025 10:28:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E9=82=AE=E7=AE=B1=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/email/EmailController.java | 103 ++++++++++++++++++ .../pay/service/impl/AliPayServiceImpl.java | 17 ++- .../java/com/mcwl/system/domain/SysEmail.java | 28 +++++ .../mcwl/system/domain/dto/AddEmailRes.java | 34 ++++++ .../mcwl/system/domain/dto/EditEmailRes.java | 39 +++++++ .../com/mcwl/system/domain/vo/EmailVo.java | 49 +++++++++ .../mcwl/system/mapper/SysEmailMapper.java | 14 +++ .../mcwl/system/service/ISysEmailService.java | 17 +++ .../service/impl/SysEmailServiceImpl.java | 27 +++++ 9 files changed, 325 insertions(+), 3 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/email/EmailController.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/SysEmail.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/dto/AddEmailRes.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/dto/EditEmailRes.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/domain/vo/EmailVo.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/mapper/SysEmailMapper.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/service/ISysEmailService.java create mode 100644 mcwl-system/src/main/java/com/mcwl/system/service/impl/SysEmailServiceImpl.java diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/email/EmailController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/email/EmailController.java new file mode 100644 index 0000000..692224c --- /dev/null +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/email/EmailController.java @@ -0,0 +1,103 @@ +package com.mcwl.web.controller.email; + + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.mcwl.common.constant.HttpStatus; +import com.mcwl.common.core.domain.R; +import com.mcwl.system.domain.SysEmail; +import com.mcwl.system.domain.dto.AddEmailRes; +import com.mcwl.system.domain.dto.EditEmailRes; +import com.mcwl.system.domain.vo.EmailVo; +import com.mcwl.system.service.ISysEmailService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +/*** + * 邮箱 + */ +@RestController +@RequestMapping("email") +@RequiredArgsConstructor +@Api(tags = "邮箱") +public class EmailController { + + private final ISysEmailService sysEmailService; + + /** + * 查询邮箱 + */ + @GetMapping("listEmail") + @ApiOperation(value = "查询邮箱列表") + public R> listEmail() { + + List sysEmailList = sysEmailService.list(new LambdaQueryWrapper().orderByDesc(SysEmail::getCreateTime)); + + return R.ok(BeanUtil.copyToList(sysEmailList, EmailVo.class)); + } + + @GetMapping("getEmail") + @ApiOperation(value = "查询邮箱") + public R getEmail(@Valid @NotNull(message = "邮箱id不能为空") Long emailId) { + + SysEmail sysEmail = sysEmailService.getById(emailId); + + return R.ok(BeanUtil.toBean(sysEmail, EmailVo.class)); + } + + /** + * 新建邮箱 + */ + @PostMapping("createEmail") + @ApiOperation(value = "新建邮箱") + public R createEmail(@RequestBody AddEmailRes addEmailRes) { + + sysEmailService.save(BeanUtil.toBean(addEmailRes, SysEmail.class)); + + return R.ok(); + } + + /** + * 删除邮箱 + */ + @GetMapping("deleteEmail") + @ApiOperation(value = "删除邮箱") + public R deleteEmail(@Valid @NotNull(message = "邮箱id不能为空") Long emailId) { + + List sysEmailList = sysEmailService.list(); + if (sysEmailList.size() == 1) { + return R.fail(HttpStatus.SHOW_ERROR_MSG, "至少需要一个邮箱"); + } + + SysEmail sysEmail = sysEmailService.getById(emailId); + if (Objects.isNull(sysEmail)) { + return R.fail(HttpStatus.SHOW_ERROR_MSG, "邮箱不存在"); + } + + sysEmailService.removeById(emailId); + return R.ok(); + } + + @PostMapping("updateEmail") + @ApiOperation(value = "修改邮箱") + public R updateEmail(@RequestBody EditEmailRes editEmailRes) { + + SysEmail sysEmail = sysEmailService.getById(editEmailRes.getId()); + if (Objects.isNull(sysEmail)) { + return R.fail(HttpStatus.SHOW_ERROR_MSG, "邮箱不存在"); + } + + sysEmailService.updateById(BeanUtil.toBean(editEmailRes, SysEmail.class)); + return R.ok(); + } + + +} diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java index 51e2b60..4f3bb8c 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java @@ -42,8 +42,10 @@ import com.mcwl.pay.domain.OrderTradeDto; import com.mcwl.pay.domain.vo.PayVo; import com.mcwl.pay.service.AliPayService; import com.mcwl.pay.service.OrderTradeService; +import com.mcwl.system.domain.SysEmail; import com.mcwl.system.domain.SysUserPayAccount; import com.mcwl.system.domain.SysUserPayAccountLog; +import com.mcwl.system.service.ISysEmailService; import com.mcwl.system.service.ISysUserPayAccountLogService; import com.mcwl.system.service.ISysUserPayAccountService; import com.mcwl.system.service.ISysUserService; @@ -99,6 +101,9 @@ public class AliPayServiceImpl implements AliPayService { @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; + @Autowired + private ISysEmailService sysEmailService; + private final int MAX_RETRY = 3; // 最大重试次数 @@ -360,10 +365,16 @@ public class AliPayServiceImpl implements AliPayService { } if (response.getSubCode().equals("BALANCE_IS_NOT_ENOUGH")) { - // 账户余额不足,发送邮件通知 - ArrayList tos = CollUtil.newArrayList("2119157836@qq.com"); - String content = String.format("账户余额不足:用户%s提现%s", sysUser.getNickName(), amount); + ArrayList tos = new ArrayList<>(); + for (SysEmail sysEmail : sysEmailService.list()) { + tos.add(sysEmail.getRecipientEmail()); + } + + // 账户余额不足,发送邮件通知 +// ArrayList tos = CollUtil.newArrayList("2119157836@qq.com"); + + String content = String.format("账户余额不足:用户%s提现:%s", sysUser.getNickName(), amount); MailUtil.send(tos, "魔创未来", content, false); throw new ServiceException("网络异常,请稍后再试", HttpStatus.SHOW_ERROR_MSG); } diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/SysEmail.java b/mcwl-system/src/main/java/com/mcwl/system/domain/SysEmail.java new file mode 100644 index 0000000..c41f3e0 --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/domain/SysEmail.java @@ -0,0 +1,28 @@ +package com.mcwl.system.domain; + + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.mcwl.common.core.domain.BaseEntity; +import lombok.*; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_email") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SysEmail extends BaseEntity { + + /** + * 邮箱id + */ + @TableId + private Long id; + + /** + * 收件人邮箱 + */ + private String recipientEmail; + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/dto/AddEmailRes.java b/mcwl-system/src/main/java/com/mcwl/system/domain/dto/AddEmailRes.java new file mode 100644 index 0000000..6595089 --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/domain/dto/AddEmailRes.java @@ -0,0 +1,34 @@ +package com.mcwl.system.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ApiModel(value = "新建邮箱请求对象") +public class AddEmailRes { + + /** + * 收件人邮箱 + */ + @ApiModelProperty(value = "收件人邮箱") + @Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$", message = "邮箱格式不正确") + @NotBlank(message = "邮箱不能为空") + private String recipientEmail; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/dto/EditEmailRes.java b/mcwl-system/src/main/java/com/mcwl/system/domain/dto/EditEmailRes.java new file mode 100644 index 0000000..17ed139 --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/domain/dto/EditEmailRes.java @@ -0,0 +1,39 @@ +package com.mcwl.system.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ApiModel(value = "修改邮箱请求对象") +public class EditEmailRes { + + @ApiModelProperty(value = "邮箱id") + @NotNull(message = "邮箱id不能为空") + private Long id; + + /** + * 收件人邮箱 + */ + @ApiModelProperty(value = "收件人邮箱") + @Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$", message = "邮箱格式不正确") + @NotBlank(message = "邮箱不能为空") + private String recipientEmail; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/domain/vo/EmailVo.java b/mcwl-system/src/main/java/com/mcwl/system/domain/vo/EmailVo.java new file mode 100644 index 0000000..8c20405 --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/domain/vo/EmailVo.java @@ -0,0 +1,49 @@ +package com.mcwl.system.domain.vo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ApiModel(value = "邮箱数据返回对象") +public class EmailVo { + + /** + * 邮件id + */ + @ApiModelProperty(value = "邮件id") + private Long id; + + /** + * 收件人邮箱 + */ + @ApiModelProperty(value = "收件人邮箱") + private String recipientEmail; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remark; + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/mapper/SysEmailMapper.java b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysEmailMapper.java new file mode 100644 index 0000000..c29980b --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/mapper/SysEmailMapper.java @@ -0,0 +1,14 @@ +package com.mcwl.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mcwl.system.domain.SysEmail; +import com.mcwl.system.domain.SysUserPayAccountLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户提现 + */ +@Mapper +public interface SysEmailMapper extends BaseMapper { + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/ISysEmailService.java b/mcwl-system/src/main/java/com/mcwl/system/service/ISysEmailService.java new file mode 100644 index 0000000..16a1c9e --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/service/ISysEmailService.java @@ -0,0 +1,17 @@ +package com.mcwl.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mcwl.common.core.page.TableDataInfo; +import com.mcwl.system.domain.SysEmail; +import com.mcwl.system.domain.SysUserPayAccountLog; +import com.mcwl.system.domain.dto.WithdrawalPageRes; + +/** + * 用户提现 服务层 + * + * @author mcwl + */ +public interface ISysEmailService extends IService { + + +} diff --git a/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysEmailServiceImpl.java b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysEmailServiceImpl.java new file mode 100644 index 0000000..1b24534 --- /dev/null +++ b/mcwl-system/src/main/java/com/mcwl/system/service/impl/SysEmailServiceImpl.java @@ -0,0 +1,27 @@ +package com.mcwl.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mcwl.common.constant.HttpStatus; +import com.mcwl.common.core.page.TableDataInfo; +import com.mcwl.common.utils.SecurityUtils; +import com.mcwl.system.domain.SysEmail; +import com.mcwl.system.domain.SysUserPayAccountLog; +import com.mcwl.system.domain.dto.WithdrawalPageRes; +import com.mcwl.system.mapper.SysEmailMapper; +import com.mcwl.system.mapper.SysUserPayAccountLogMapper; +import com.mcwl.system.service.ISysEmailService; +import com.mcwl.system.service.ISysUserPayAccountLogService; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * 用户提现 + */ +@Service +public class SysEmailServiceImpl extends ServiceImpl implements ISysEmailService { + + +}