feat(system): 邮箱管理
parent
b3340340bd
commit
ed6a00a312
|
@ -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<List<EmailVo>> listEmail() {
|
||||||
|
|
||||||
|
List<SysEmail> sysEmailList = sysEmailService.list(new LambdaQueryWrapper<SysEmail>().orderByDesc(SysEmail::getCreateTime));
|
||||||
|
|
||||||
|
return R.ok(BeanUtil.copyToList(sysEmailList, EmailVo.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("getEmail")
|
||||||
|
@ApiOperation(value = "查询邮箱")
|
||||||
|
public R<EmailVo> 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<Object> createEmail(@RequestBody AddEmailRes addEmailRes) {
|
||||||
|
|
||||||
|
sysEmailService.save(BeanUtil.toBean(addEmailRes, SysEmail.class));
|
||||||
|
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除邮箱
|
||||||
|
*/
|
||||||
|
@GetMapping("deleteEmail")
|
||||||
|
@ApiOperation(value = "删除邮箱")
|
||||||
|
public R<Object> deleteEmail(@Valid @NotNull(message = "邮箱id不能为空") Long emailId) {
|
||||||
|
|
||||||
|
List<SysEmail> 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<Object> 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -42,8 +42,10 @@ import com.mcwl.pay.domain.OrderTradeDto;
|
||||||
import com.mcwl.pay.domain.vo.PayVo;
|
import com.mcwl.pay.domain.vo.PayVo;
|
||||||
import com.mcwl.pay.service.AliPayService;
|
import com.mcwl.pay.service.AliPayService;
|
||||||
import com.mcwl.pay.service.OrderTradeService;
|
import com.mcwl.pay.service.OrderTradeService;
|
||||||
|
import com.mcwl.system.domain.SysEmail;
|
||||||
import com.mcwl.system.domain.SysUserPayAccount;
|
import com.mcwl.system.domain.SysUserPayAccount;
|
||||||
import com.mcwl.system.domain.SysUserPayAccountLog;
|
import com.mcwl.system.domain.SysUserPayAccountLog;
|
||||||
|
import com.mcwl.system.service.ISysEmailService;
|
||||||
import com.mcwl.system.service.ISysUserPayAccountLogService;
|
import com.mcwl.system.service.ISysUserPayAccountLogService;
|
||||||
import com.mcwl.system.service.ISysUserPayAccountService;
|
import com.mcwl.system.service.ISysUserPayAccountService;
|
||||||
import com.mcwl.system.service.ISysUserService;
|
import com.mcwl.system.service.ISysUserService;
|
||||||
|
@ -99,6 +101,9 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysEmailService sysEmailService;
|
||||||
|
|
||||||
private final int MAX_RETRY = 3; // 最大重试次数
|
private final int MAX_RETRY = 3; // 最大重试次数
|
||||||
|
|
||||||
|
|
||||||
|
@ -360,10 +365,16 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response.getSubCode().equals("BALANCE_IS_NOT_ENOUGH")) {
|
if (response.getSubCode().equals("BALANCE_IS_NOT_ENOUGH")) {
|
||||||
// 账户余额不足,发送邮件通知
|
|
||||||
ArrayList<String> tos = CollUtil.newArrayList("2119157836@qq.com");
|
|
||||||
|
|
||||||
String content = String.format("账户余额不足:用户%s提现%s", sysUser.getNickName(), amount);
|
ArrayList<String> tos = new ArrayList<>();
|
||||||
|
for (SysEmail sysEmail : sysEmailService.list()) {
|
||||||
|
tos.add(sysEmail.getRecipientEmail());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 账户余额不足,发送邮件通知
|
||||||
|
// ArrayList<String> tos = CollUtil.newArrayList("2119157836@qq.com");
|
||||||
|
|
||||||
|
String content = String.format("账户余额不足:用户%s提现:%s", sysUser.getNickName(), amount);
|
||||||
MailUtil.send(tos, "魔创未来", content, false);
|
MailUtil.send(tos, "魔创未来", content, false);
|
||||||
throw new ServiceException("网络异常,请稍后再试", HttpStatus.SHOW_ERROR_MSG);
|
throw new ServiceException("网络异常,请稍后再试", HttpStatus.SHOW_ERROR_MSG);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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<SysEmail> {
|
||||||
|
|
||||||
|
}
|
|
@ -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<SysEmail> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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<SysEmailMapper, SysEmail> implements ISysEmailService {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue