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.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<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);
|
||||
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