diff --git a/src/main/java/com/rekoe/module/admin/AdminProjectGroupUsrAct.java b/src/main/java/com/rekoe/module/admin/AdminProjectGroupUsrAct.java index 6638648..cebb833 100644 --- a/src/main/java/com/rekoe/module/admin/AdminProjectGroupUsrAct.java +++ b/src/main/java/com/rekoe/module/admin/AdminProjectGroupUsrAct.java @@ -1,9 +1,14 @@ package com.rekoe.module.admin; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.aop.interceptor.async.Async; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.mvc.annotation.At; @@ -13,11 +18,18 @@ import org.nutz.mvc.annotation.Param; import com.rekoe.annotation.PermissionTag; import com.rekoe.common.Message; import com.rekoe.common.page.Pagination; +import com.rekoe.domain.Pj; import com.rekoe.domain.PjGrUsr; +import com.rekoe.domain.ProjectConfig; +import com.rekoe.domain.Usr; import com.rekoe.module.BaseAction; +import com.rekoe.service.EmailService; +import com.rekoe.service.ProjectConfigService; import com.rekoe.service.ProjectGroupUsrService; +import com.rekoe.service.ProjectService; import com.rekoe.service.SvnService; import com.rekoe.service.SvnUserService; +import com.rekoe.utils.EncryptUtil; @IocBean @At("/admin/project/group/usr") @@ -85,4 +97,60 @@ public class AdminProjectGroupUsrAct extends BaseAction { svnService.exportConfig(pj); return Message.success("ok", req); } + + @Inject + private EmailService emailService; + + @Inject + private ProjectService projectService; + + @Inject + private ProjectConfigService projectConfigService; + + @At + @Ok("json") + @RequiresPermissions("project.group:add") + @PermissionTag(name = "添加项目组用户", tag = "SVN账号管理", enable = false) + public Message all_email(@Param("pj") String pj, HttpServletRequest req) { + Pj project = projectService.get(pj); + ProjectConfig conf = projectConfigService.get(); + List getList = svnUserService.listSelected(pj); + sendProjectOpenEmail(project, conf, getList, emailService); + return Message.success("ok", req); + } + + @At + @Ok("json") + @RequiresPermissions("project.group:add") + @PermissionTag(name = "添加项目组用户", tag = "SVN账号管理", enable = false) + public Message email(@Param("pj") String pj, @Param("usr") String usr, HttpServletRequest req) { + Pj project = projectService.get(pj); + ProjectConfig conf = projectConfigService.get(); + sendProjectOpenEmail(project, conf, svnUserService.get(usr), emailService); + return Message.success("ok", req); + } + + @Async + public void sendProjectOpenEmail(Pj project, ProjectConfig conf, List getList, EmailService emailService) { + for (Usr usr : getList) { + Map root = new HashMap<>(); + root.put("usr", usr.getUsr()); + root.put("name", usr.getName()); + root.put("pwd", EncryptUtil.decrypt(usr.getPsw())); + root.put("project", project.getDes()); + root.put("url", conf.getDomainPath() + project.getPj()); + emailService.projectOpen(usr.getEmail(), root); + } + } + + @Async + public void sendProjectOpenEmail(Pj project, ProjectConfig conf, Usr usr, EmailService emailService) { + Map root = new HashMap<>(); + root.put("usr", usr.getUsr()); + root.put("name", usr.getName()); + root.put("pwd", EncryptUtil.decrypt(usr.getPsw())); + root.put("project", project.getDes()); + root.put("url", conf.getDomainPath() + project.getPj()); + emailService.projectOpen(usr.getEmail(), root); + } } diff --git a/src/main/java/com/rekoe/service/SvnUserService.java b/src/main/java/com/rekoe/service/SvnUserService.java index 543da40..58d0bdc 100644 --- a/src/main/java/com/rekoe/service/SvnUserService.java +++ b/src/main/java/com/rekoe/service/SvnUserService.java @@ -48,6 +48,9 @@ public class SvnUserService extends BaseService { return Lang.isEmpty(dao().fetch(getEntityClass(), Cnd.where("usr", "=", name))); } + public Usr get(String usr){ + return dao().fetch(getEntityClass(), Cnd.where("usr", "=", usr)); + } /** * 校验用户名 * @@ -85,12 +88,31 @@ public class SvnUserService extends BaseService { return list; } + public List listSelected(String pj) { + Sql sql = Sqls.create("select * from usr a where a.usr <> '*' " + " and exists (select usr from pj_gr_usr b where a.usr = b.usr and b.pj=@pj) order by a.usr"); + sql.setParam("pj", pj); + final List list = new ArrayList(); + sql.setCallback(new SqlCallback() { + + @Override + public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException { + while (rs.next()) { + list.add(readUsr(rs)); + } + return list; + } + }); + dao().execute(sql); + return list; + } + Usr readUsr(ResultSet rs) throws SQLException { Usr result = new Usr(); result.setUsr(rs.getString("usr")); result.setName(rs.getString("name")); result.setPsw(rs.getString("psw")); result.setRole(rs.getString("role")); + result.setEmail(rs.getString("email")); return result; } diff --git a/src/main/webapp/WEB-INF/template/admin/email/project_open.ftl b/src/main/webapp/WEB-INF/template/admin/email/project_open.ftl new file mode 100644 index 0000000..5b3cd6e --- /dev/null +++ b/src/main/webapp/WEB-INF/template/admin/email/project_open.ftl @@ -0,0 +1,61 @@ +

+

+${name}: 您好
+所属项目${project} +svn ${url} +   + 账号:${usr}
+ 密码:${pwd}

+     密码信息请妥善保管。系统邮件请勿回复 +

\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/template/admin/project/list.ftl b/src/main/webapp/WEB-INF/template/admin/project/list.ftl index 0e8dced..76ea32b 100644 --- a/src/main/webapp/WEB-INF/template/admin/project/list.ftl +++ b/src/main/webapp/WEB-INF/template/admin/project/list.ftl @@ -33,6 +33,27 @@ function init(pj){ }); return false; } +function all_email(pj){ + $.dialog({ + type: "warn", + content: '确定要执行?', + ok: 'Ok', + cancel: 'Cancel', + onOk: function() { + $.ajax({ + url: "${base}/admin/project/group/usr/all_email.rk", + type: "POST", + data: {"pj":pj}, + dataType: "json", + cache: false, + success: function(message) { + $.message(message); + } + }); + } + }); + return false; +} @@ -61,6 +82,9 @@ function init(pj){ 删除<#rt/> <#t/> + <@p.column title="发项目邀请邮件" align="center"> + 发送<#rt/> + <#t/> diff --git a/src/main/webapp/WEB-INF/template/admin/project_group_usr/list.ftl b/src/main/webapp/WEB-INF/template/admin/project_group_usr/list.ftl index fb568a6..3b457b6 100644 --- a/src/main/webapp/WEB-INF/template/admin/project_group_usr/list.ftl +++ b/src/main/webapp/WEB-INF/template/admin/project_group_usr/list.ftl @@ -33,6 +33,27 @@ function deleted(pj,gr,usr){ }); return false; } +function email(pj,usr){ + $.dialog({ + type: "warn", + content: '确定要执行?', + ok: 'Ok', + cancel: 'Cancel', + onOk: function() { + $.ajax({ + url: "${base}/admin/project/group/usr/email.rk", + type: "POST", + data: {"pj":pj,"usr":usr}, + dataType: "json", + cache: false, + success: function(message) { + $.message(message); + } + }); + } + }); + return false; +} @@ -59,6 +80,9 @@ function deleted(pj,gr,usr){ 删除<#rt/> <#t/> + <@p.column title="发项目邀请邮件" align="center"> + 发送<#rt/> + <#t/>