Merge remote-tracking branch 'origin/zcc'

This commit is contained in:
wangjinlei
2024-07-22 09:22:46 +08:00

View File

@@ -2,8 +2,8 @@ package com.peanut.modules.job.task;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.sql.*;
import java.util.Date;
@@ -11,122 +11,141 @@ import java.util.Date;
@Component("userCourseBuyTask")
public class UserCourseBuyTask implements ITask{
@Value("${spring.profiles.active}")
private String active;
@Override
public void run(String params) {
try {
System.out.println("userCourseBuy同步开始-----");
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!");
String url = "jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book_test?rewriteBatchedStatements=true";
if ("prod".equals(active)){
url = "jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book?rewriteBatchedStatements=true";
}
Connection fzdsconn = DriverManager.getConnection(url , "nuttyreading", "Wu751019!");
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 classStatement = yljkconn.prepareStatement("select tc.superVIP,tctc.* from t_customer_taihu_class tctc " +
PreparedStatement classStatement = yljkconn.prepareStatement("select tc.superVIP,tc.cellPhone,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' ");
"where tctc.valid = 1 and tctc.status = '10' and DATE(tctc.createDate) > DATE('"+DateUtil.format(DateUtils.addDays(new Date(),-1),"yyyy-MM-dd")+"') and tc.superVIP = '0' ");
ResultSet classResultSet = classStatement.executeQuery();
System.out.println("userCourseBuy数据统计完成-----");
while (classResultSet.next()) {
//用户是否同步
PreparedStatement userStatement = yljkconn.prepareStatement("select * from user " +
"where del_flag = 0 and yljkoid = '"+classResultSet.getString("customerOid")+"' ");
PreparedStatement userStatement = fzdsconn.prepareStatement("select * from user " +
"where del_flag = 0 and yljk_oid = '"+classResultSet.getString("customerOid")+"' ");
ResultSet userResultSet = userStatement.executeQuery();
String userId = "";
if (userResultSet.next()) {
addUserCourseBuy(yljkconn,fzdsconn,userResultSet,classResultSet);
userId = userResultSet.getString("id");
addUserCourseBuy(yljkconn,fzdsconn,userId,classResultSet,addClassStatement);
}else {
//用户未同步
addUser(fzdsconn,classResultSet);
addUserCourseBuy(yljkconn,fzdsconn,userResultSet,classResultSet);
PreparedStatement userTelStatement = fzdsconn.prepareStatement("select * from user " +
"where del_flag = 0 and tel = '"+classResultSet.getString("cellPhone")+"' ");
ResultSet userTelResultSet = userTelStatement.executeQuery();
if (userTelResultSet.next()) {
userId = userTelResultSet.getString("id");
PreparedStatement oidUpdateStatement = fzdsconn.prepareStatement(
"update user set yljk_oid = '"+classResultSet.getString("customerOid")+"' " +
"where id = "+userTelResultSet.getInt("id"));
oidUpdateStatement.execute();
addUserCourseBuy(yljkconn,fzdsconn,userId,classResultSet,addClassStatement);
}else {
//用户未同步
userId = addUser(fzdsconn,yljkconn,classResultSet.getString("customerOid"));
addUserCourseBuy(yljkconn,fzdsconn,userId,classResultSet,addClassStatement);
}
}
}
classStatement.close();
classResultSet.close();
yljkconn.close();
fzdsconn.close();
System.out.println("userCourseBuy同步完成");
}catch (Exception e) {
System.out.println("---------");
System.out.println("Error: " + e.getMessage());
System.out.println("---------");
}
}
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();
private String addUser(Connection fzdsconn,Connection yljkconn,String customerOid) throws Exception{
PreparedStatement customerStatement = yljkconn.prepareStatement("select * from t_customer where oid = '"+customerOid+"' ");
ResultSet customerResultSet = customerStatement.executeQuery();
if (customerResultSet.next()) {
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,customerResultSet.getString("nameCN")==null?"":customerResultSet.getString("nameCN").toString());
addUserStatement.setString(2,customerResultSet.getString("icons")==null?"":customerResultSet.getString("icons").toString());
addUserStatement.setString(3,customerResultSet.getString("nickName")==null?"":customerResultSet.getString("nickName").toString());
addUserStatement.setString(4,customerResultSet.getString("cellPhone")==null?"":customerResultSet.getString("cellPhone").toString());
addUserStatement.setString(5,customerResultSet.getString("superVIP")==null?"":customerResultSet.getString("superVIP").toString());
addUserStatement.setBigDecimal(6,new BigDecimal(customerResultSet.getString("point").toString()));
addUserStatement.setBigDecimal(7,new BigDecimal(customerResultSet.getString("pointByJF").toString()));
addUserStatement.setString(8,customerResultSet.getString("oid")==null?"":customerResultSet.getString("oid").toString());
addUserStatement.execute();
ResultSet rs = addUserStatement.getGeneratedKeys();
if(rs.next()) {
Object id = rs.getObject(1);
return id.toString();
}
}
return "";
}
private void addUserCourseBuy(Connection yljkconn,Connection fzdsconn,String userId,ResultSet classResultSet,PreparedStatement addClassStatement) throws Exception{
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 del_flag = 0 and 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 catalogueId = coursecatalogueresultSet.getInt("id");
//查询是否已经开课
PreparedStatement userCourseBuyStatement = fzdsconn.prepareStatement("" +
"select * from user_course_buy where del_flag = 0 and user_id = "+userId+" " +
"and course_id = "+courseId+" and catalogue_id = "+catalogueId );
ResultSet userCourseBuyResultSet = userCourseBuyStatement.executeQuery();
if (!userCourseBuyResultSet.next()) {
addClassStatement.setString(1,userId);
addClassStatement.setInt(2,courseId);
addClassStatement.setInt(3,catalogueId);
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();
System.out.println(userId+"-"+courseId+"-"+catalogueId);
}
userCourseBuyStatement.close();
userCourseBuyResultSet.close();
}
coursecataloguestatement.close();
coursecatalogueresultSet.close();
}
coursestatement.close();
courseresultSet.close();
}
cataloguestatement.close();
catalogueresultSet.close();
}
}