diff --git a/src/main/java/com/peanut/modules/job/task/UserCourseBuyTask.java b/src/main/java/com/peanut/modules/job/task/UserCourseBuyTask.java index b9f0ad7f..349cdff6 100644 --- a/src/main/java/com/peanut/modules/job/task/UserCourseBuyTask.java +++ b/src/main/java/com/peanut/modules/job/task/UserCourseBuyTask.java @@ -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(); + } }