开课定时任务

This commit is contained in:
wuchunlei
2024-07-12 10:07:48 +08:00
parent 5d3629f9a3
commit 64702a8184

View File

@@ -0,0 +1,132 @@
package com.peanut.modules.job.task;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.sql.*;
import java.util.Date;
@Component("userCourseBuyTask")
public class UserCourseBuyTask implements ITask{
@Override
public void run(String params) {
try {
Connection yljkconn = DriverManager.getConnection(
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
"yljkmaster", "Wu751019!@");
Connection fzdsconn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
//查询前一天新开的课
PreparedStatement classStatement = yljkconn.prepareStatement("select tc.superVIP,tctc.* from t_customer_taihu_class tctc " +
"left join t_customer tc on tc.oid = tctc.customerOid " +
"where tctc.valid = 1 and tctc.status = '10' and tctc.createDate > '2024-05-20' and tc.superVIP = '0' ");
ResultSet classResultSet = classStatement.executeQuery();
while (classResultSet.next()) {
//用户是否同步
PreparedStatement userStatement = yljkconn.prepareStatement("select * from user " +
"where del_flag = 0 and yljkoid = '"+classResultSet.getString("customerOid")+"' ");
ResultSet userResultSet = userStatement.executeQuery();
if (userResultSet.next()) {
addUserCourseBuy(yljkconn,fzdsconn,userResultSet,classResultSet);
}else {
//用户未同步
addUser(fzdsconn,classResultSet);
addUserCourseBuy(yljkconn,fzdsconn,userResultSet,classResultSet);
}
}
classStatement.close();
classResultSet.close();
yljkconn.close();
fzdsconn.close();
}catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
private void addUser(Connection fzdsconn,ResultSet classResultSet) throws Exception{
PreparedStatement addUserStatement = fzdsconn.prepareStatement(
"INSERT INTO user (name,avatar,nickname,tel,vip,peanut_coin,jf,yljk_oid) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?)",PreparedStatement.RETURN_GENERATED_KEYS);
addUserStatement.setString(1,classResultSet.getString("nameCN")==null?"":classResultSet.getString("nameCN").toString());
addUserStatement.setString(2,classResultSet.getString("icons")==null?"":classResultSet.getString("icons").toString());
addUserStatement.setString(3,classResultSet.getString("nickName")==null?"":classResultSet.getString("nickName").toString());
addUserStatement.setString(4,classResultSet.getString("cellPhone")==null?"":classResultSet.getString("cellPhone").toString());
addUserStatement.setString(5,"0");
addUserStatement.setBigDecimal(6,new BigDecimal(classResultSet.getString("point").toString()));
addUserStatement.setBigDecimal(7,new BigDecimal(classResultSet.getString("pointByJF").toString()));
addUserStatement.setString(8,classResultSet.getString("oid")==null?"":classResultSet.getString("oid").toString());
addUserStatement.execute();
addUserStatement.close();
}
private void addUserCourseBuy(Connection yljkconn,Connection fzdsconn,ResultSet userResultSet,ResultSet classResultSet) throws Exception{
//导入的用户是否是会员,不是会员导入开课记录,是会员不处理
if ("0".equals(userResultSet.getString("vip"))||
"3".equals(userResultSet.getString("vip"))){
//判断一路健康是否为会员
if ("0".equals(classResultSet.getString("superVIP"))) {
//都不是会员直接导入开课
PreparedStatement addClassStatement = fzdsconn.prepareStatement(
"INSERT ignore INTO user_course_buy (user_id,course_id,catalogue_id,create_time,days,start_time,end_time) " +
"VALUES (?, ?, ?, ?, ?, ?, ?)");
PreparedStatement cataloguestatement = yljkconn.prepareStatement("" +
"select * from t_curriculum_catalogue where valid = 1 and oid = '"+classResultSet.getString("taiHuClassOid")+"'");
ResultSet catalogueresultSet = cataloguestatement.executeQuery();
if (catalogueresultSet.next()) {
PreparedStatement coursestatement = fzdsconn.prepareStatement("" +
"select * from course where uid = '"+catalogueresultSet.getString("poid")+"'");
ResultSet courseresultSet = coursestatement.executeQuery();
if (courseresultSet.next()) {
int courseId = courseresultSet.getInt("id");
PreparedStatement coursecataloguestatement = fzdsconn.prepareStatement("" +
"select * from course_catalogue where del_flag = 0 and course_id = "+courseId+" and title = '"+catalogueresultSet.getString("title")+"'");
ResultSet coursecatalogueresultSet = coursecataloguestatement.executeQuery();
if (coursecatalogueresultSet.next()) {
int courseCatalogueId = coursecatalogueresultSet.getInt("id");
addClassStatement.setInt(1,userResultSet.getInt("id"));
addClassStatement.setInt(2,courseId);
addClassStatement.setInt(3,courseCatalogueId);
addClassStatement.setTimestamp(4,classResultSet.getTimestamp("createDate"));
addClassStatement.setInt(5,classResultSet.getInt("studyDays"));
addClassStatement.setTimestamp(6,classResultSet.getTimestamp("startDate"));
if (classResultSet.getTimestamp("startDate")==null){
addClassStatement.setString(7, null);
}else {
Date endDate = DateUtils.addDays(classResultSet.getTimestamp("startDate"),classResultSet.getInt("studyDays"));
addClassStatement.setTimestamp(7,Timestamp.valueOf(DateUtil.format(endDate,"yyyy-MM-dd HH:mm:ss")));
}
addClassStatement.execute();
}
}
}
}else {
//user不是会员t_customer是会员修改user为会员并导入user_vip
String sql = "update user set vip= '"+classResultSet.getString("superVIP")+"' " +
"where yljk_oid = '"+classResultSet.getString("oid")+"'";
PreparedStatement oidUpdateStatement = fzdsconn.prepareStatement(sql);
oidUpdateStatement.execute();
PreparedStatement userVipStatement = fzdsconn.prepareStatement(
"INSERT ignore INTO user_vip (user_id,type,start_time,end_time,state) VALUES (?, ?, ?, ?, ?)");
userVipStatement.setInt(1,userResultSet.getInt("id"));
userVipStatement.setString(2,classResultSet.getString("superVIP"));
userVipStatement.setString(3,classResultSet.getString("paydate"));
userVipStatement.setString(4,classResultSet.getString("payValidDate"));
if (cn.hutool.core.date.DateUtil.compare(DateUtil.parseDate(classResultSet.getString("payValidDate")),new Date())>0){
userVipStatement.setString(5,"0");
}else {
userVipStatement.setString(5,"1");
}
userVipStatement.execute();
userVipStatement.close();
}
}
}
}