添加微信推送机制

This commit is contained in:
yangjun 2023-05-18 16:42:55 +08:00
parent 7bada91cf3
commit cc5047758f
9 changed files with 714 additions and 0 deletions

View File

@ -0,0 +1,176 @@
package org.jeecg.modules.kc.KcBdgxbcopy.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import org.jeecg.modules.kc.KcBdgxbcopy.service.IKcBdgxbcopyService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: 公众号推送openid
* @Author: jeecg-boot
* @Date: 2023-05-17
* @Version: V1.0
*/
@Api(tags="公众号推送openid")
@RestController
@RequestMapping("/KcBdgxbcopy/kcBdgxbcopy")
@Slf4j
public class KcBdgxbcopyController extends JeecgController<KcBdgxbcopy, IKcBdgxbcopyService> {
@Autowired
private IKcBdgxbcopyService kcBdgxbcopyService;
/**
* 分页列表查询
*
* @param kcBdgxbcopy
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "公众号推送openid-分页列表查询")
@ApiOperation(value="公众号推送openid-分页列表查询", notes="公众号推送openid-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<KcBdgxbcopy>> queryPageList(KcBdgxbcopy kcBdgxbcopy,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<KcBdgxbcopy> queryWrapper = QueryGenerator.initQueryWrapper(kcBdgxbcopy, req.getParameterMap());
Page<KcBdgxbcopy> page = new Page<KcBdgxbcopy>(pageNo, pageSize);
IPage<KcBdgxbcopy> pageList = kcBdgxbcopyService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param kcBdgxbcopy
* @return
*/
@AutoLog(value = "公众号推送openid-添加")
@ApiOperation(value="公众号推送openid-添加", notes="公众号推送openid-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody KcBdgxbcopy kcBdgxbcopy) {
kcBdgxbcopyService.save(kcBdgxbcopy);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param kcBdgxbcopy
* @return
*/
@AutoLog(value = "公众号推送openid-编辑")
@ApiOperation(value="公众号推送openid-编辑", notes="公众号推送openid-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody KcBdgxbcopy kcBdgxbcopy) {
kcBdgxbcopyService.updateById(kcBdgxbcopy);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "公众号推送openid-通过id删除")
@ApiOperation(value="公众号推送openid-通过id删除", notes="公众号推送openid-通过id删除")
@RequiresPermissions("KcBdgxbcopy:kc_bdgxbcopy:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
kcBdgxbcopyService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "公众号推送openid-批量删除")
@ApiOperation(value="公众号推送openid-批量删除", notes="公众号推送openid-批量删除")
@RequiresPermissions("KcBdgxbcopy:kc_bdgxbcopy:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.kcBdgxbcopyService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "公众号推送openid-通过id查询")
@ApiOperation(value="公众号推送openid-通过id查询", notes="公众号推送openid-通过id查询")
@GetMapping(value = "/queryById")
public Result<KcBdgxbcopy> queryById(@RequestParam(name="id",required=true) String id) {
KcBdgxbcopy kcBdgxbcopy = kcBdgxbcopyService.getById(id);
if(kcBdgxbcopy==null) {
return Result.error("未找到对应数据");
}
return Result.OK(kcBdgxbcopy);
}
/**
* 导出excel
*
* @param request
* @param kcBdgxbcopy
*/
@RequiresPermissions("KcBdgxbcopy:kc_bdgxbcopy:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, KcBdgxbcopy kcBdgxbcopy) {
return super.exportXls(request, kcBdgxbcopy, KcBdgxbcopy.class, "公众号推送openid");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("KcBdgxbcopy:kc_bdgxbcopy:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, KcBdgxbcopy.class);
}
}

View File

@ -0,0 +1,50 @@
package org.jeecg.modules.kc.KcBdgxbcopy.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 公众号推送openid
* @Author: jeecg-boot
* @Date: 2023-05-17
* @Version: V1.0
*/
@Data
@TableName("kc_bdgxbcopy")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="kc_bdgxbcopy对象", description="公众号推送openid")
public class KcBdgxbcopy implements Serializable {
private static final long serialVersionUID = 1L;
/**openid*/
@Excel(name = "openid", width = 15)
@ApiModelProperty(value = "openid")
private java.lang.String openid;
/**userid*/
@Excel(name = "userid", width = 15)
@ApiModelProperty(value = "userid")
private java.lang.String userid;
/**bdtime*/
@Excel(name = "bdtime", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "bdtime")
private java.util.Date bdtime;
@TableField(exist = false)
private String ywTime;
}

View File

@ -0,0 +1,24 @@
package org.jeecg.modules.kc.KcBdgxbcopy.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 公众号推送openid
* @Author: jeecg-boot
* @Date: 2023-05-17
* @Version: V1.0
*/
public interface KcBdgxbcopyMapper extends BaseMapper<KcBdgxbcopy> {
void saveStudentKqtx(KcBdgxbcopy kcBdgxbcopy);
void saveTeacherKqtx(KcBdgxbcopy kcBdgxbcopy);
void saveStudentMrtx(KcBdgxbcopy kcBdgxbcopy);
void saveTeacherMrtx(KcBdgxbcopy kcBdgxbcopy);
}

View File

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.kc.KcBdgxbcopy.mapper.KcBdgxbcopyMapper">
<insert id="saveStudentKqtx">
INSERT INTO kc_messagelistcopy ( id, touser, template_id, tourl, firstdata, remarkdata, keyword1, keyword2, keyword3, scheduleddatetime ) SELECT
0,-- id:
bd.openid,-- touser:oak6lwA02iVyBKrVSok4uUpzeBmY
'KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys',-- template_id:
'https://zxkccxwebvpnnenueducn/index',-- tourl:
CONCAT( xk.xm, '同学,您有课程即将开始:' ),-- firstdata:
'',-- remarkdata
kt.kcmc,-- keyword1:
CONCAT( skrq, ' 第', hh, '节' ),-- keyword2:
CASE-- keyword3
WHEN skxs = '0' THEN
zbfs
WHEN skxs = '1' THEN
skdd
WHEN skxs = '2' THEN
CONCAT( skdd, '以及', zbfs )
END,
CASE-- scheduleddatetime:
WHEN hh = '01、02' THEN
CONCAT( CURRENT_DATE, ' 07:00' )
WHEN hh = '03、04' THEN
CONCAT( CURRENT_DATE, ' 09:00' )
WHEN hh = '05、06' THEN
CONCAT( CURRENT_DATE, ' 13:00' )
WHEN hh = '07、08' THEN
CONCAT( CURRENT_DATE, ' 15:00' )
WHEN hh = '09、10' THEN
CONCAT( CURRENT_DATE, ' 17:00' )
WHEN hh = '11、12' THEN
CONCAT( CURRENT_DATE, ' 19:00' )
END
FROM
kc_xuekeduiyingbiao xk,
kc_ketangbiao kt,
kc_kechengtixingdingyue kd,
kc_bdgxbcopy bd
WHERE
xk.rwbh = kt.rwbh
AND xk.xh = kd.userid
AND xk.xh = bd.userid
AND kd.kqtx = 1
AND kt.skrq = #{ywTime}
</insert>
<insert id="saveTeacherKqtx">
INSERT INTO kc_messagelistcopy ( id, touser, template_id, tourl, firstdata, remarkdata,.keyword1, keyword2, keyword3, scheduleddatetime ) SELECT
0,
bd.openid,
'KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys',
'https://zxkccx.webvpn.nenu.edu.cn/index',
CONCAT( kt.skjs, '老师,您有课程即将开始:' ),
'',
kcmc,
CONCAT( skrq, ' 第', hh, '节' ),
CASE
WHEN skxs = '0' THEN
zbfs
WHEN skxs = '1' THEN
skdd
WHEN skxs = '2' THEN
CONCAT( skdd, '以及', zbfs )
END,
CASE
WHEN hh = '01、02' THEN
CONCAT( CURRENT_DATE, ' 07:00' )
WHEN hh = '03、04' THEN
CONCAT( CURRENT_DATE, ' 09:00' )
WHEN hh = '05、06' THEN
CONCAT( CURRENT_DATE, ' 13:00' )
WHEN hh = '07、08' THEN
CONCAT( CURRENT_DATE, ' 15:00' )
WHEN hh = '09、10' THEN
CONCAT( CURRENT_DATE, ' 17:00' )
WHEN hh = '11、12' THEN
CONCAT( CURRENT_DATE, ' 19:00' )
END
FROM
kc_kechengtixingdingyue kd,
kc_ketangbiao kt,
kc_bdgxbcopy bd
WHERE
kd.userid = kt.jgh
AND kd.userid = bd.userid
AND kd.kqtx = 1
AND skrq = #{ywTime}
</insert>
<insert id="saveStudentMrtx">
INSERT INTO kc_messagelistcopy ( id, touser, template_id, tourl, firstdata, remarkdata, keyword1, keyword2, keyword3, scheduleddatetime ) SELECT
0,-- id:
bd.openid,-- touser:oak6lwA02iVyBKrVSok4uUpzeBmY
'KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys',-- template_id:KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys
'https://zxkccx.webvpn.nenu.edu.cn/index',-- tourl:https://zxkccx.webvpn.nenu.edu.cn/index
CONCAT( xk.xm, '同学,您明天的课程安排如下:' ),-- firstdata:吴一凡同学,您明天的课程安排如下:
'',-- remarkdata:
concat(-- keyword1:2022-12-20 星期二
#{ywTime},-- [2022-12-20 明天日期]
CASE
WHEN kt.WEEK = '1' THEN
' 星期一'
WHEN kt.WEEK = '2' THEN
' 星期二'
WHEN kt.WEEK = '3' THEN
' 星期三'
WHEN kt.WEEK = '4' THEN
' 星期四'
WHEN kt.WEEK = '5' THEN
' 星期五'
WHEN kt.WEEK = '6' THEN
' 星期六'
WHEN kt.WEEK = '7' THEN
' 星期日'
END
),
GROUP_CONCAT( ' 第', hh, '节', kt.kcmc ),-- keyword2: 第07、08节传播统计学, 第01、02节灯光设计实验, 第09、10节传媒符号学, 第05、06节传媒伦理与法规
'',-- keyword3
concat(#{ywTime},' 16:00') -- scheduleddatetime:2022-12-19 16:00 [2022-12-19 当天日期]
FROM
kc_kechengtixingdingyue kd,
kc_xuekeduiyingbiao xk,
kc_ketangbiao kt,
kc_bdgxbcopy bd
WHERE
kd.userid = xk.xh
AND xk.rwbh = kt.rwbh
AND xk.xh = bd.userid
AND kd.mrkctx = 1
AND skrq = #{ywTime}
GROUP BY
bd.openid,
xk.xm,
WEEK
</insert>
<insert id="saveTeacherMrtx">
INSERT INTO kc_messagelistcopy ( id, touser, template_id, tourl, firstdata, remarkdata, keyword1, keyword2, keyword3, scheduleddatetime ) SELECT
0,-- id:
bd.openid,-- touser:oak6lwAa1epMAgwQziF2K9yBkiLE
'KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys',-- template_id:KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys
'https://zxkccx.webvpn.nenu.edu.cn/index',-- tourl:https://zxkccx.webvpn.nenu.edu.cn/index
CONCAT( kt.skjs, '老师,您明天的课程安排如下:' ),-- firstdata:张靖波老师,您明天的课程安排如下:
'',-- remarkdata:
concat(-- keyword1:2022-12-20 星期二
#{ywTime},-- [2022-12-20 明天日期]
CASE
WHEN WEEK = '1' THEN
' 星期一'
WHEN WEEK = '2' THEN
' 星期二'
WHEN WEEK = '3' THEN
' 星期三'
WHEN WEEK = '4' THEN
' 星期四'
WHEN WEEK = '5' THEN
' 星期五'
WHEN WEEK = '6' THEN
' 星期六'
WHEN WEEK = '7' THEN
' 星期日'
END
),
GROUP_CONCAT( ' 第', hh, '节', kt.kcmc ),-- keyword2: 第01、02节信息技术1计算机基础, 第03、04节信息技术1计算机基础
'',-- keyword3
concat(#{ywTime},' 16:00') -- scheduleddatetime:2022-12-19 16:00 [2022-12-19 当天日期]
FROM
kc_kechengtixingdingyue kd,
kc_ketangbiao kt,
kc_bdgxbcopy bd
WHERE
kd.userid = kt.jgh
AND kd.userid = bd.userid
AND kd.mrkctx = 1
AND skrq = #{ywTime}
GROUP BY
bd.openid,
kt.skjs,
WEEK
</insert>
</mapper>

View File

@ -0,0 +1,21 @@
package org.jeecg.modules.kc.KcBdgxbcopy.service;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 公众号推送openid
* @Author: jeecg-boot
* @Date: 2023-05-17
* @Version: V1.0
*/
public interface IKcBdgxbcopyService extends IService<KcBdgxbcopy> {
void saveStudentKqtx(KcBdgxbcopy kcBdgxbcopy);
void saveTeacherKqtx(KcBdgxbcopy kcBdgxbcopy);
void saveStudentMrtx(KcBdgxbcopy kcBdgxbcopy);
void saveTeacherMrtx(KcBdgxbcopy kcBdgxbcopy);
}

View File

@ -0,0 +1,38 @@
package org.jeecg.modules.kc.KcBdgxbcopy.service.impl;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import org.jeecg.modules.kc.KcBdgxbcopy.mapper.KcBdgxbcopyMapper;
import org.jeecg.modules.kc.KcBdgxbcopy.service.IKcBdgxbcopyService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 公众号推送openid
* @Author: jeecg-boot
* @Date: 2023-05-17
* @Version: V1.0
*/
@Service
public class KcBdgxbcopyServiceImpl extends ServiceImpl<KcBdgxbcopyMapper, KcBdgxbcopy> implements IKcBdgxbcopyService {
@Override
public void saveStudentKqtx(KcBdgxbcopy kcBdgxbcopy) {
baseMapper.saveStudentKqtx(kcBdgxbcopy);
}
@Override
public void saveTeacherKqtx(KcBdgxbcopy kcBdgxbcopy) {
baseMapper.saveTeacherKqtx(kcBdgxbcopy);
}
@Override
public void saveStudentMrtx(KcBdgxbcopy kcBdgxbcopy) {
baseMapper.saveStudentMrtx(kcBdgxbcopy);
}
@Override
public void saveTeacherMrtx(KcBdgxbcopy kcBdgxbcopy) {
baseMapper.saveTeacherMrtx(kcBdgxbcopy);
}
}

View File

@ -0,0 +1,72 @@
package org.jeecg.modules.kc.grab.SynchronizationService;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import org.jeecg.modules.kc.KcBdgxbcopy.service.IKcBdgxbcopyService;
import org.jeecg.modules.kc.grab.SynchronizationService.base.BaseSync;
import org.jeecg.modules.kc.grab.exports.entity.TFwdtBkjxtkpj;
import org.jeecg.modules.kc.grab.exports.service.ITFwdtBkjxtkpjService;
import org.jeecg.modules.kc.grab.imports.entity.Xxhbbkjxtkpj;
import org.jeecg.modules.kc.grab.imports.entity.Xxhbsynclog;
import org.jeecg.modules.kc.grab.imports.service.IXxhbbkjxtkpjService;
import org.jeecg.modules.kc.ktgl.service.IKcKetangbiaoService;
import org.jeecg.modules.kc.qa.service.IKcEvaluationService;
import org.jeecg.modules.kc.qa.service.IKcEvaluationsService;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 微信生成推送信息
*/
@Slf4j
public class SyncWechartDsrw extends BaseSync {
@Autowired
private IKcBdgxbcopyService kcBdgxbcopyService;
/**
* 若参数变量名修改 QuartzJobController中也需对应修改
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) {
start();
run(getParamMap());
end();
}
/**
* 有参定时任务实现
* @param param
*/
public void run(Map<String, Object> param){
KcBdgxbcopy kcBdgxbcopy = new KcBdgxbcopy();
kcBdgxbcopy.setYwTime(DateUtils.formatDate(new Date(),"yyyy-MM-dd"));
// 1写入学生课前提醒
kcBdgxbcopyService.saveStudentKqtx(kcBdgxbcopy);
// 2写入教师课前提醒
kcBdgxbcopyService.saveTeacherKqtx(kcBdgxbcopy);
// 3写入学生明日课程提醒
kcBdgxbcopyService.saveStudentMrtx(kcBdgxbcopy);
// 4写入教师明日课程提醒
kcBdgxbcopyService.saveTeacherMrtx(kcBdgxbcopy);
}
/**
* 无参定时任务实现
*/
public void run(){
run(null);
}
}

View File

@ -0,0 +1,124 @@
package org.jeecg.modules.kc.grab.SynchronizationService;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xkcoding.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import org.jeecg.modules.kc.KcBdgxbcopy.service.IKcBdgxbcopyService;
import org.jeecg.modules.kc.grab.SynchronizationService.base.BaseSync;
import org.jeecg.modules.kc.kcMessagelistcopy.entity.KcMessagelistcopy;
import org.jeecg.modules.kc.kcMessagelistcopy.service.IKcMessagelistcopyService;
import org.jeecg.modules.wxgzh.WeChatTemplateMsg;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 微信推送信息
*/
@Slf4j
public class SyncWechartTsxx extends BaseSync {
@Autowired
private IKcMessagelistcopyService kcMessagelistcopyService;
// appId
private static final String appId = "wx59920eb69d611d7f";
// appIdSecret
private static final String appIdSecret = "60b429xxxxxxxxxxxxxxx";
/**
* 若参数变量名修改 QuartzJobController中也需对应修改
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) {
start();
run(getParamMap());
end();
}
/**
* 有参定时任务实现
* @param param
*/
public void run(Map<String, Object> param){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar nowTime = Calendar.getInstance();
nowTime.add(Calendar.MINUTE, 30);//30分钟后的时间
Calendar nowTime2 = Calendar.getInstance();
nowTime2.add(Calendar.MINUTE, -30);//30分钟前的时间
QueryWrapper<KcMessagelistcopy> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("scheduleddatetime",DateUtils.formatDate(nowTime2,"yyyy-MM-dd HH:mm:ss"));
queryWrapper.le("scheduleddatetime",DateUtils.formatDate(nowTime,"yyyy-MM-dd HH:mm:ss"));
queryWrapper.eq("status","0");
List<KcMessagelistcopy> list =kcMessagelistcopyService.list();
for(KcMessagelistcopy KcMessagelistcopy:list){
// 模板参数
Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
// openId代表一个唯一微信用户即微信消息的接收人
String openId = KcMessagelistcopy.getTouser();
// 微信的基础accessToken
String urlToken = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ appId +"&secret=" + appIdSecret;
String res = HttpUtil.get(urlToken);
JSONObject jsonTokenObject = JSONObject.parseObject(res);
String accessToken = jsonTokenObject.getString("access_token");
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
/**
* 其他模板可以从模板库中自己添加
* 模板ID
* KtWw0lwQ8FOgJdKgrmya0eoafGkMfMN8ECdZs8oSJys
* 开发者调用模板消息接口时需提供模板ID
* 标题 上课提醒
* 行业 教育 - 院校
* 详细内容
* {{first.DATA}}
* 课程{{keyword1.DATA}}
* 时间{{keyword2.DATA}}
* 地点{{keyword3.DATA}}
* {{remark.DATA}}
*/
sendMag.put("first", new WeChatTemplateMsg(KcMessagelistcopy.getFirstdata()));
sendMag.put("keyword1", new WeChatTemplateMsg(KcMessagelistcopy.getKeyword1()));
sendMag.put("keyword2", new WeChatTemplateMsg(KcMessagelistcopy.getKeyword2()));
sendMag.put("keyword3", new WeChatTemplateMsg(KcMessagelistcopy.getKeyword3()));
sendMag.put("remark", new WeChatTemplateMsg(KcMessagelistcopy.getRemarkdata()));
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("touser", openId); // openId
sendBody.put("url", KcMessagelistcopy.getTourl()); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", KcMessagelistcopy.getTemplateId()); // 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(url, sendBody, String.class);
log.info("结果是: {}",forEntity.getBody());
JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
KcMessagelistcopy.setStatus("1");
kcMessagelistcopyService.updateById(KcMessagelistcopy);
}
}
/**
* 无参定时任务实现
*/
public void run(){
run(null);
}
}

View File

@ -22,6 +22,8 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.kc.KcBdgxbcopy.entity.KcBdgxbcopy;
import org.jeecg.modules.kc.KcBdgxbcopy.service.IKcBdgxbcopyService;
import org.jeecg.modules.kc.ktgl.entity.KcKetangbiao;
import org.jeecg.modules.kc.ktgl.service.IKcKetangbiaoService;
import org.springframework.beans.factory.annotation.Autowired;
@ -51,6 +53,8 @@ public class TencentUtils extends JeecgController<KcKetangbiao, IKcKetangbiaoS
private static final UserClient USER_CLIENT;
private static final Gson GSON = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
@Autowired
private IKcBdgxbcopyService kcBdgxbcopyService;
private static final String AppId = "214887356";
private static final String SdkId = "21830121448";
@ -233,6 +237,18 @@ public class TencentUtils extends JeecgController<KcKetangbiao, IKcKetangbiaoS
JSONObject json = JSONObject.parseObject(jsonString);
String openid = json.getString("openid");
System.out.println("openid###############"+openid);
QueryWrapper<KcBdgxbcopy> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("openid",openid);
List<KcBdgxbcopy> list = kcBdgxbcopyService.list(queryWrapper);
if(list == null || list.size() == 0){
KcBdgxbcopy kcBdgxbcopy = new KcBdgxbcopy();
kcBdgxbcopy.setOpenid(openid);
kcBdgxbcopy.setUserid(code);
kcBdgxbcopy.setBdtime(new Date());
kcBdgxbcopyService.save(kcBdgxbcopy);
}
return openid;
}
}