如何使用服务中数据库中的信息呈现 Html 模板
How to render Html template with info from database in Services
我很难做到以下几点:
有一份不时运行的工作(完成)
正在该作业中从数据库中获取一些数据(完成)
下一步是将该数据与我已经创建的模板 (HTML) 一起使用,然后将其呈现为 PDF
然后发送一封电子邮件,附件中包含该 pdf 文件
这是我目前的工作:
def execute() {
println("Hi, I am a schedule Job triggering every half an hour from 7 AM to 22 PM that will never stop running until master jose tells me to :)")
EventService.updateOffersdwh()
EventService.getUncheckedOffers()
}
工作正常:)
这些是我在上一个作业中调用的服务方法:
def updateOffersdwh(){
def sql = Sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
sql.rows(" Select From bird_admin.updt_offerorders('2018-03-07','2018-03-07','" + database + "') ");
println('Updating Order and Offers datawarehouse...');
}
def getUncheckedOffers(){
def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
def offers = sql.rows(query)
println('DEBUG OFFERS FINAL:: '+offers)
}
任何人都可以在接下来的步骤中给我建议或指导吗?
如何使用我的 views\template 文件夹中已有的 html 中的模板?
使用数据库中的信息并使用该信息呈现 html 的最佳方法是什么?
我应该使用控制器吗?如果是这样,如何?我现在有点迷路了:|
我不是 100% 确定您是否要为电子邮件正文或附件使用模板,但要为电子邮件正文使用模板,您可以执行以下操作。
首先为Grails mail plugin添加依赖:
build.gradle
dependencies {
compile "org.grails.plugins:mail:2.0.0"
...
}
然后在您的服务中使用模板生成正文并像这样发送:
class YourService {
def groovyPageRenderer
def mailService
def getUncheckedOffers(){
def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
def offers = sql.rows(query)
def content = groovyPageRenderer.render( view: "/aViewDirectory/mail",
model:[offers : offers ] )
mailService.sendMail {
to 'anEmailRecipient@somewhere.com'
subject "Email subject"
html( content )
}
}
电子邮件插件文档中有一个部分 about attachments。
您可以按照上述步骤从模板生成 PDF 并按照文档附加。
我很难做到以下几点:
有一份不时运行的工作(完成)
正在该作业中从数据库中获取一些数据(完成)
下一步是将该数据与我已经创建的模板 (HTML) 一起使用,然后将其呈现为 PDF
然后发送一封电子邮件,附件中包含该 pdf 文件
这是我目前的工作:
def execute() {
println("Hi, I am a schedule Job triggering every half an hour from 7 AM to 22 PM that will never stop running until master jose tells me to :)")
EventService.updateOffersdwh()
EventService.getUncheckedOffers()
}
工作正常:)
这些是我在上一个作业中调用的服务方法:
def updateOffersdwh(){
def sql = Sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
sql.rows(" Select From bird_admin.updt_offerorders('2018-03-07','2018-03-07','" + database + "') ");
println('Updating Order and Offers datawarehouse...');
}
def getUncheckedOffers(){
def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
def offers = sql.rows(query)
println('DEBUG OFFERS FINAL:: '+offers)
}
任何人都可以在接下来的步骤中给我建议或指导吗?
如何使用我的 views\template 文件夹中已有的 html 中的模板?
使用数据库中的信息并使用该信息呈现 html 的最佳方法是什么?
我应该使用控制器吗?如果是这样,如何?我现在有点迷路了:|
我不是 100% 确定您是否要为电子邮件正文或附件使用模板,但要为电子邮件正文使用模板,您可以执行以下操作。
首先为Grails mail plugin添加依赖:
build.gradle
dependencies {
compile "org.grails.plugins:mail:2.0.0"
...
}
然后在您的服务中使用模板生成正文并像这样发送:
class YourService {
def groovyPageRenderer
def mailService
def getUncheckedOffers(){
def sql = sql.newInstance("jdbc:postgresql://"+hostname+":5432/xyz", username, password, "org.postgresql.Driver")
def query = "select id, poo_id, b.name, b.address_line1, b.address_line2, b.zipcode, event_date::date, task_name, sku_id, sku_name, column_type, column_value, instance_name,checked FROM bird_admin.ooisdwh a LEFT JOIN sd_bel.cfg_point_of_operation b ON a.poo_id = b.id WHERE checked = false"
def offers = sql.rows(query)
def content = groovyPageRenderer.render( view: "/aViewDirectory/mail",
model:[offers : offers ] )
mailService.sendMail {
to 'anEmailRecipient@somewhere.com'
subject "Email subject"
html( content )
}
}
电子邮件插件文档中有一个部分 about attachments。 您可以按照上述步骤从模板生成 PDF 并按照文档附加。