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