jinlin
2024-01-02 a38a1ac77bb6ac9ea8bf0cf5f5f6b68d0e6e6974
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/**
 * Copyright (c) 2018 人人开源 All rights reserved.
 *
 * https://www.renren.io
 *
 * 版权所有,侵权必究!
 */
 
package com.zt.modules.message.controller;
 
import java.util.List;
 
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import springfox.documentation.annotations.ApiIgnore;
 
import com.alibaba.fastjson.JSONObject;
import com.zt.common.annotation.LogOperation;
import com.zt.common.annotation.QueryParam;
import com.zt.common.constant.Constant;
import com.zt.common.db.query.QueryFilter;
import com.zt.common.servlet.PageResult;
import com.zt.common.servlet.Result;
import com.zt.common.validator.ValidatorUtils;
import com.zt.common.validator.group.AddGroup;
import com.zt.common.validator.group.DefaultGroup;
import com.zt.common.validator.group.UpdateGroup;
import com.zt.core.sys.service.ISysParamsService;
import com.zt.modules.message.channel.email.EmailConfig;
import com.zt.modules.message.channel.email.EmailUtils;
import com.zt.modules.message.model.SysMailTemplate;
import com.zt.modules.message.service.SysMailTemplateService;
 
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
 
/**
 * 邮件模板
 *
 * @author Mark sunlightcs@gmail.com
 */
@RestController
@RequestMapping("sys/mailtemplate")
@Api(tags = "邮件模板")
public class MailTemplateController {
    @Autowired
    private SysMailTemplateService sysMailTemplateService;
    @Autowired
    private ISysParamsService sysParamsService;
 
    @GetMapping("page")
    @ApiOperation("分页")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
            @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
            @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
            @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
            @ApiImplicitParam(name = "name", value = "name", dataType = Constant.QT.STRING, format = "name^EQ") })
    @RequiresPermissions("sys:mail:all")
    public PageResult<SysMailTemplate> page(@ApiIgnore @QueryParam QueryFilter queryFilter) {
        List<SysMailTemplate> list = sysMailTemplateService.page(queryFilter);
 
        return PageResult.ok(list);
    }
 
    @GetMapping("/config")
    @ApiOperation("获取配置信息")
    @RequiresPermissions("sys:mail:all")
    public Result<EmailConfig> config() {
        EmailConfig config = sysParamsService.getValueObject(EmailUtils.MAIL_CONFIG_KEY, EmailConfig.class);
 
        return Result.ok(config);
    }
 
    @PostMapping("/saveConfig")
    @ApiOperation("保存配置信息")
    @LogOperation("邮件模板--->保存配置信息")
    @RequiresPermissions("sys:mail:all")
    public Result saveConfig(@RequestBody EmailConfig config) {
        // 校验数据
        ValidatorUtils.validateEntity(config);
 
        sysParamsService.updateValueByCode(EmailUtils.MAIL_CONFIG_KEY, JSONObject.toJSONString(config));
 
        return Result.ok();
    }
 
    @GetMapping("{id}")
    @ApiOperation("信息")
    @RequiresPermissions("sys:mail:all")
    public Result<SysMailTemplate> info(@PathVariable("id") Long id) {
        SysMailTemplate sysMailTemplate = sysMailTemplateService.get(id);
 
        return Result.ok(sysMailTemplate);
    }
 
    @PostMapping
    @ApiOperation("新增")
    @LogOperation("系统邮件模板--->新增")
    @RequiresPermissions("sys:mail:all")
    public Result insert(SysMailTemplate entity) {
        // 校验类型
        ValidatorUtils.validateEntity(entity, AddGroup.class, DefaultGroup.class);
 
        sysMailTemplateService.insert(entity);
 
        return Result.ok();
    }
 
    @PutMapping
    @ApiOperation("修改")
    @LogOperation("系统邮件模板--->修改")
    @RequiresPermissions("sys:mail:all")
    public Result update(SysMailTemplate entity) {
        // 校验类型
        ValidatorUtils.validateEntity(entity, UpdateGroup.class, DefaultGroup.class);
 
        sysMailTemplateService.update(entity);
 
        return Result.ok();
    }
 
    @DeleteMapping
    @ApiOperation("删除")
    @LogOperation("系统邮件模板--->删除")
    @RequiresPermissions("sys:mail:all")
    public Result delete(@RequestBody Long[] ids) {
        sysMailTemplateService.deleteLogic(ids);
 
        return Result.ok();
    }
 
    @PostMapping("/send")
    @ApiOperation("发送邮件")
    @LogOperation("发送邮件")
    @RequiresPermissions("sys:mail:all")
    public Result send(Long id, String mailTo, String mailCc, String params) throws Exception {
        boolean flag = sysMailTemplateService.sendMail(id, mailTo, mailCc, params);
        if (flag) {
            return Result.ok();
        }
 
        return Result.ok().error("邮件发送失败");
    }
 
}