441 lines
15 KiB
Java
441 lines
15 KiB
Java
package idc.service.command;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.sql.*;
|
|
|
|
import idc.model.*;
|
|
import utility.*;
|
|
|
|
public class IdcServiceAddHandleCmd implements IdcCmd{
|
|
|
|
IdcDAO dao = new IdcDAO();
|
|
|
|
//부가서비스 추가처리
|
|
public void execute(HttpServletRequest request, HttpServletResponse response)
|
|
{
|
|
//checkToken 값이 다르면 true반환.
|
|
if(dao.checkToken(request))
|
|
{
|
|
request.setAttribute("reError", dao.reError);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
//토큰이 같아서 등록성공이 될 경우 토큰을 삭제해 준다.
|
|
request.getSession().removeAttribute("token");
|
|
}
|
|
|
|
String client_code = request.getParameter("client_code");
|
|
String service_code = request.getParameter("service_code");
|
|
String server_code = request.getParameter("server_code");
|
|
String addDB_amount = request.getParameter("account1");
|
|
String addDB_payment = request.getParameter("account2");
|
|
String accountStatus = request.getParameter("accountStatus");
|
|
String addDB_case = request.getParameter("addDB_case");
|
|
String addDB_ip = request.getParameter("addDB_ip");
|
|
String str_request_date = request.getParameter("request_date");
|
|
String str_cancel_date = request.getParameter("cancel_date");
|
|
String result = request.getParameter("result");
|
|
String united = request.getParameter("united");
|
|
String addDB_note = request.getParameter("addDB_note");
|
|
String addDB_code = request.getParameter("addDB_code");
|
|
String addDB_comment = request.getParameter("addDB_comment");
|
|
String str_payment_date = request.getParameter("payment_date");
|
|
String service_defence = request.getParameter("service_defence");
|
|
|
|
//처리자
|
|
//String addDB_manager = "test";
|
|
IdcMemberDBDTO mdto = (IdcMemberDBDTO)request.getSession().getAttribute("member");
|
|
String addDB_manager = mdto.getId();
|
|
|
|
Date request_date;
|
|
StringToDate st = new StringToDate();
|
|
if(str_request_date == ""){
|
|
request_date = null;
|
|
}else{
|
|
request_date = st.stringToDate(str_request_date);
|
|
}
|
|
|
|
Date cancel_date;
|
|
if(str_cancel_date == ""){
|
|
cancel_date = null;
|
|
}else{
|
|
cancel_date = st.stringToDate(str_cancel_date);
|
|
}
|
|
Date payment_date;
|
|
if(str_payment_date == ""){
|
|
payment_date = getPayment_date(service_code);
|
|
}else{
|
|
payment_date = st.stringToDate(str_payment_date);
|
|
}
|
|
|
|
if(addDB_case == "defence" || addDB_case.equals("defence"))
|
|
{
|
|
updateDefence( client_code, service_code, server_code, addDB_case, addDB_ip,
|
|
request_date, cancel_date, addDB_amount, accountStatus, united, addDB_note,
|
|
addDB_code, addDB_comment, payment_date, addDB_manager, service_defence,
|
|
addDB_payment);
|
|
|
|
//Histroy에 등록(IdcSetHistory)는 static 클래스이다.
|
|
IdcSetHistory.setHistory(service_code, server_code, addDB_case+" 수정", addDB_ip, addDB_code,"",client_code);
|
|
// adddb service쪽 금액 업데이트.
|
|
}
|
|
else if(addDB_case =="ip" || addDB_case.equals("ip"))
|
|
{
|
|
insertAddDB(client_code, service_code, server_code, addDB_case, addDB_ip, request_date, cancel_date,
|
|
result, accountStatus, united, addDB_note, addDB_code, addDB_comment, payment_date, addDB_manager, addDB_amount, addDB_payment);
|
|
|
|
//ipDB에 addDB에 추가된ip 반영
|
|
updateIp("ip_sub", client_code, service_code, addDB_ip);
|
|
|
|
//Histroy에 등록(IdcSetHistory)는 static 클래스이다.
|
|
IdcSetHistory.setHistory(service_code, server_code, addDB_case+" 추가", addDB_ip, addDB_code,"",client_code);
|
|
}
|
|
else if(addDB_case == "cs" || addDB_case.equals("cs"))
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
//부가서비스 등록
|
|
public void insertAddDB(String client_code, String service_code, String server_code, String addDB_case, String addDB_ip,
|
|
Date request_date, Date cancel_date, String result, String accountStatus, String addDB_united, String addDB_note,
|
|
String addDB_code, String addDB_comment, Date payment_date, String addDB_manager, String addDB_amount, String addDB_payment){
|
|
Connection conn = null;
|
|
PreparedStatement pstmt = null,pstmt2=null, pstmt3=null, pstmt4=null;
|
|
ResultSet rs = null,rs2=null;
|
|
String sql;
|
|
int adddb_num=0;
|
|
int addDB_nonpayment = Integer.parseInt(addDB_amount) - Integer.parseInt(addDB_payment);
|
|
|
|
//String addDB_amount = result;
|
|
try {
|
|
conn = dao.getConn();
|
|
sql="SELECT max(adddb_num) as a FROM adddb";
|
|
pstmt2=conn.prepareStatement(sql);
|
|
rs2=pstmt2.executeQuery();
|
|
if(rs2.next())
|
|
adddb_num = rs2.getInt("a")+1;
|
|
sql = "INSERT INTO addDB (addDB_case, service_code, addDB_request_date, addDB_cancel_date, addDB_amount, "
|
|
+ "addDB_note, addDB_united, addDB_accountStatus, addDB_ip, addDB_code, "
|
|
+ "addDB_comment, addDB_payment_date, client_code, addDB_handle_date, "
|
|
+ "addDB_manager, adddb_nonpayment, adddb_payment, adddb_num, ";
|
|
sql+="adddb_original_date) ";
|
|
sql += "values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, curdate(), ?, ?, ?,?,?)";
|
|
|
|
pstmt = conn.prepareStatement(sql);
|
|
pstmt.setString(1, addDB_case);
|
|
pstmt.setString(2, service_code);
|
|
pstmt.setDate(3, request_date);
|
|
pstmt.setDate(4, cancel_date);
|
|
pstmt.setString(5, addDB_amount);
|
|
pstmt.setString(6, addDB_note);
|
|
pstmt.setString(7, addDB_united);
|
|
pstmt.setString(8, accountStatus);
|
|
pstmt.setString(9, addDB_ip);
|
|
pstmt.setString(10, addDB_code);
|
|
pstmt.setString(11, addDB_comment);
|
|
pstmt.setDate(12, payment_date);
|
|
pstmt.setString(13, client_code);
|
|
pstmt.setString(14, addDB_manager);
|
|
pstmt.setString(15, addDB_nonpayment+"");
|
|
pstmt.setString(16, addDB_payment);
|
|
pstmt.setInt(17, adddb_num);
|
|
pstmt.setDate(18, payment_date);
|
|
pstmt.executeUpdate();
|
|
|
|
sql = "UPDATE amountDB SET ";
|
|
sql+="amount_ip=amount_ip+?, service_amount=service_amount+? WHERE service_code=?";
|
|
pstmt3 = conn.prepareStatement(sql);
|
|
pstmt3.setString(1, addDB_amount);
|
|
pstmt3.setString(2, addDB_amount);
|
|
pstmt3.setString(3, service_code);
|
|
pstmt3.executeUpdate();
|
|
|
|
sql = "UPDATE serviceDB SET ";
|
|
sql+="service_amount=service_amount+?, service_nonpayment= service_nonpayment+? WHERE service_code=?";
|
|
pstmt4 = conn.prepareStatement(sql);
|
|
pstmt4.setString(1, addDB_amount);
|
|
pstmt4.setString(2, Integer.toString(addDB_nonpayment));
|
|
pstmt4.setString(3, service_code);
|
|
pstmt4.executeUpdate();
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
|
|
} finally{
|
|
try {
|
|
if(rs != null) rs.close();
|
|
if(pstmt != null) pstmt.close();
|
|
if(pstmt2 != null) pstmt2.close();
|
|
if(pstmt3 != null) pstmt3.close();
|
|
if(pstmt4 != null) pstmt4.close();
|
|
if(conn != null) conn.close();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//추가 아이피 업데이트
|
|
public void updateIp(String ip_case2, String client_code, String service_code, String ip_address){
|
|
Connection conn = null;
|
|
PreparedStatement pstmt = null,pstmt2=null;
|
|
ResultSet rs = null,rs2=null;
|
|
String sql = "";
|
|
String client_name = "";
|
|
|
|
try {
|
|
conn = dao.getConn();
|
|
|
|
sql = "SELECT client_name FROM clientDB WHERE client_code=?";
|
|
pstmt = conn.prepareStatement(sql);
|
|
pstmt.setString(1, client_code);
|
|
rs = pstmt.executeQuery();
|
|
|
|
if(rs.next()){
|
|
client_name = rs.getString("client_name");
|
|
}
|
|
|
|
sql = "UPDATE ipDB SET ip_case2=?, ip_user=?, ip_able='0', service_code=? WHERE ip_address=?";
|
|
pstmt2 = conn.prepareStatement(sql);
|
|
pstmt2.setString(1, ip_case2);
|
|
pstmt2.setString(2, client_name);
|
|
pstmt2.setString(3, service_code);
|
|
pstmt2.setString(4, ip_address);
|
|
|
|
pstmt2.executeUpdate();
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
} finally{
|
|
try {
|
|
if(rs != null) rs.close();
|
|
if(pstmt != null) pstmt.close();
|
|
if(rs2 != null) rs2.close();
|
|
if(pstmt2 != null) pstmt2.close();
|
|
if(conn != null) conn.close();
|
|
} catch (SQLException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
//방어서비스 일때 업데이트
|
|
public void updateDefence(String client_code, String service_code, String server_code, String addDB_case, String addDB_ip,
|
|
Date request_date, Date cancel_date, String addDB_amount, String accountStatus, String addDB_united, String addDB_note,
|
|
String addDB_code, String addDB_comment, Date payment_date, String addDB_manager, String service_defence,
|
|
String addDB_payment
|
|
)
|
|
{
|
|
Connection conn=null;
|
|
PreparedStatement pstmt=null, pstmt2=null, pstmt3=null, pstmt4=null, pstmt5=null, pstmt6=null, pstmt7=null, pstmt8=null,
|
|
pstmt9=null, pstmt10=null, pstmt11=null;
|
|
ResultSet rs=null, rs2=null, rs3=null, rs6=null, rs8=null, rs11=null;
|
|
boolean addDefence=true;
|
|
|
|
//defence, service를 제외한 모든 가격
|
|
//int sub_payment =0, sub_amount=0;
|
|
try
|
|
{
|
|
conn=dao.getConn();
|
|
//디펜스 있나없나 체크
|
|
String sql = "SELECT adddb_num FROM adddb WHERE service_code=? AND adddb_case='defence'";
|
|
pstmt6=conn.prepareStatement(sql);
|
|
pstmt6.setString(1, service_code);
|
|
rs6 = pstmt6.executeQuery();
|
|
if(rs6.next())
|
|
addDefence=false;
|
|
//디펜스 없을경우 새로 추가.
|
|
if(addDefence)
|
|
{
|
|
sql="INSERT INTO adddb (addDB_case, service_code, adddb_request_date, adddb_amount, adddb_accountStatus, ";
|
|
sql+="adddb_payment_date, adddb_ip, client_code, adddb_manager, adddb_nonpayment, adddb_payment, adddb_united, ";
|
|
sql+="adddb_handle_date, adddb_original_date, adddb_code) ";
|
|
sql+="values(?,?,curdate(),?,?,?,?,?,?,?,?,?,curdate(),?,?)";
|
|
pstmt7 =conn.prepareStatement(sql);
|
|
pstmt7.setString(1, "defence");
|
|
pstmt7.setString(2, service_code);
|
|
pstmt7.setString(3, addDB_amount);
|
|
pstmt7.setString(4, "incomplete");
|
|
pstmt7.setDate(5, payment_date);
|
|
pstmt7.setString(6, null);
|
|
pstmt7.setString(7, client_code);
|
|
pstmt7.setString(8, null);
|
|
pstmt7.setString(9, Integer.toString(Integer.parseInt(addDB_amount)-Integer.parseInt(addDB_payment)));
|
|
pstmt7.setString(10, addDB_payment);
|
|
pstmt7.setString(11, "o");
|
|
pstmt7.setDate(12, payment_date);
|
|
pstmt7.setString(13, addDB_code);
|
|
pstmt7.executeUpdate();
|
|
|
|
//서버 위치 받아오기.
|
|
String location="", service_line="";
|
|
sql="SELECT server_location, service_line FROM servicedb as sev, serverdb as ser ";
|
|
sql+="WHERE sev.service_code=? AND sev.server_code = ser.server_code";
|
|
pstmt4 = conn.prepareStatement(sql);
|
|
pstmt4.setString(1, service_code);
|
|
rs8 = pstmt4.executeQuery();
|
|
if(rs8.next())
|
|
{
|
|
location = rs8.getString("server_location");
|
|
service_line = rs8.getString("service_line");
|
|
}
|
|
if(location.equals("tokyo"))
|
|
location="_t";
|
|
else
|
|
location="_c";
|
|
int myreseller=0;
|
|
sql="SELECT amount_reseller FROM amountdb WHERE service_code=?";
|
|
pstmt11 = conn.prepareStatement(sql);
|
|
pstmt11.setString(1, service_code);
|
|
rs11 = pstmt11.executeQuery();
|
|
if(rs11.next())
|
|
myreseller = rs11.getInt("amount_reseller");
|
|
|
|
|
|
String before=service_line+location;
|
|
String defence="defence"+location;
|
|
sql="UPDATE havelist SET "+before+"="+before+"-1, "+defence+"="+defence+"+1 ";
|
|
if(myreseller>0)
|
|
sql+="WHERE client_code='"+client_code+"' ";
|
|
else
|
|
sql+="WHERE client_code='IDCJP' ";
|
|
pstmt9 = conn.prepareStatement(sql);
|
|
pstmt9.executeUpdate();
|
|
}
|
|
|
|
int amo=0, pay=0;
|
|
sql="SELECT * FROM adddb WHERE service_code=? AND adddb_case='defence'";
|
|
pstmt2 = conn.prepareStatement(sql);
|
|
pstmt2.setString(1, service_code);
|
|
rs2 = pstmt2.executeQuery();
|
|
if(rs2.next())
|
|
{
|
|
amo=rs2.getInt("adddb_amount");
|
|
pay=rs2.getInt("adddb_payment");
|
|
}
|
|
|
|
// amountdb 업데이트
|
|
sql="UPDATE amountdb SET amount_defence=?, service_amount=service_amount - ? + ? WHERE service_code=?";
|
|
pstmt3 = conn.prepareStatement(sql);
|
|
pstmt3.setString(1, addDB_amount);
|
|
pstmt3.setString(2,Integer.toString(amo));
|
|
pstmt3.setString(3,addDB_amount);
|
|
pstmt3.setString(4, service_code);
|
|
pstmt3.executeUpdate();
|
|
|
|
int nonpayment = 0;
|
|
if(Integer.parseInt(addDB_amount) < pay+Integer.parseInt(addDB_payment))
|
|
nonpayment = 0;
|
|
else
|
|
nonpayment = Integer.parseInt(addDB_amount) - (pay+Integer.parseInt(addDB_payment));
|
|
//service 변경
|
|
sql="UPDATE servicedb SET service_amount=service_amount+?, service_nonpayment=service_nonpayment + ?, ";
|
|
sql+="service_defence=?, service_line='defence' ";
|
|
sql+="WHERE service_code=?";
|
|
pstmt5=conn.prepareStatement(sql);
|
|
pstmt5.setString(1, addDB_amount);
|
|
pstmt5.setString(2, Integer.toString(nonpayment));
|
|
pstmt5.setString(3, service_defence);
|
|
pstmt5.setString(4, service_code);
|
|
pstmt5.executeUpdate();
|
|
|
|
|
|
String account = "incomplete";
|
|
//adddb 수정
|
|
sql="UPDATE adddb SET adddb_amount=?, adddb_nonpayment=?, adddb_payment=?, adddb_code=?, adddb_accountStatus=? ";
|
|
sql+="WHERE service_code=? AND adddb_case='defence' ";
|
|
pstmt10 = conn.prepareStatement(sql);
|
|
pstmt10.setString(1, addDB_amount);
|
|
pstmt10.setString(2, Integer.toString(nonpayment));
|
|
int payment = pay+Integer.parseInt(addDB_payment);
|
|
if(nonpayment==0)
|
|
{
|
|
payment = Integer.parseInt(addDB_amount);
|
|
account = "complete";
|
|
}
|
|
pstmt10.setString(3, Integer.toString(payment));
|
|
pstmt10.setString(4, addDB_code);
|
|
pstmt10.setString(5, account);
|
|
pstmt10.setString(6, service_code);
|
|
pstmt10.executeUpdate();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("IdcServiceAddHandleCmd - updateDefence 에서의 exception");
|
|
e.printStackTrace();
|
|
}
|
|
finally
|
|
{
|
|
try
|
|
{
|
|
if(conn!=null) conn.close();
|
|
if(pstmt!=null)pstmt.close();
|
|
if(pstmt2!=null)pstmt2.close();
|
|
if(pstmt3!=null)pstmt3.close();
|
|
if(pstmt4!=null)pstmt4.close();
|
|
if(pstmt5!=null)pstmt5.close();
|
|
if(pstmt6!=null)pstmt6.close();
|
|
if(pstmt7!=null)pstmt7.close();
|
|
if(pstmt8!=null)pstmt8.close();
|
|
if(pstmt9!=null)pstmt9.close();
|
|
if(pstmt10!=null)pstmt10.close();
|
|
if(pstmt11!=null)pstmt11.close();
|
|
if(rs!=null)rs.close();
|
|
if(rs3!=null)rs3.close();
|
|
if(rs6!=null)rs6.close();
|
|
if(rs8!=null)rs8.close();
|
|
if(rs11!=null)rs11.close();
|
|
}
|
|
catch (SQLException e)
|
|
{
|
|
System.out.println("IdcServiceAddHandleCmd - updateDefence 에서의 sqlexception");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
// 통합일 경우 결제일 동일하게
|
|
private Date getPayment_date(String service_code)
|
|
{
|
|
Date payment_date = null;
|
|
|
|
Connection conn=null;
|
|
PreparedStatement pstmt=null;
|
|
ResultSet rs=null;
|
|
try
|
|
{
|
|
conn=dao.getConn();
|
|
String sql="SELECT adddb_payment_date FROM adddb WHERE service_code=? AND adddb_case='service' ";
|
|
pstmt =conn.prepareStatement(sql);
|
|
pstmt.setString(1, service_code);
|
|
rs=pstmt.executeQuery();
|
|
if(rs.next())
|
|
payment_date = rs.getDate("adddb_payment_date");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println("IdcServiceAddHandleCmd 에서의 exception");
|
|
e.printStackTrace();
|
|
}
|
|
finally
|
|
{
|
|
try
|
|
{
|
|
if(conn!=null) conn.close();
|
|
if(pstmt!=null)pstmt.close();
|
|
if(rs!=null)rs.close();
|
|
}
|
|
catch (SQLException e)
|
|
{
|
|
System.out.println("IdcServiceAddHandleCmd 에서의 sqlexception");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
return payment_date;
|
|
}
|
|
} |