96443acfc0f5b830d49fdc5eff32eabde36109f9.svn-base 5.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.chinacreator.process.dao;
  2. import java.sql.SQLException;
  3. import org.apache.commons.lang.math.NumberUtils;
  4. import org.springframework.stereotype.Component;
  5. import com.chinacreator.cache.process.OrderInfo;
  6. import com.chinacreator.process.bean.DiscntInfo;
  7. import com.chinacreator.process.bean.EcbProductInfo;
  8. import com.chinacreator.process.bean.NetOrderBean;
  9. import com.chinacreator.process.util.JsonUtil;
  10. import com.frameworkset.common.poolman.SQLExecutor;
  11. @Component
  12. public class EcbDiscntDao {
  13. public void order(EcbProductInfo ecbProductInfo,NetOrderBean orderInfo) throws SQLException{
  14. DiscntInfo discntInfo = get(ecbProductInfo,orderInfo);
  15. String sql = "merge into TD_DISCNT_INFO a using (select #[userid] userid, #[discntid] discntid,#[discnttype] discnttype from dual) b "+
  16. "on (a.userid = b.userid and a.discntid = b.discntid and a.discnttype = b.discnttype)"+
  17. "when matched then update set "+
  18. "ordertime=to_date(#[ordertime], 'yyyymmddhh24miss'), "+
  19. "endtime=to_date(#[endtime], 'yyyymmddhh24miss'), CANCELTIME='',"+
  20. " inserttime=sysdate,status=0,syncstatus=1,orderchannel=#[orderchannel] "+
  21. "when not matched then insert (userid,ordertime,endtime,status,orderchannel,discnttype,syncstatus,inserttime,discntid,discntfee,discntName,productId,productName,packageCode,packageName,discntOrderState) values ("+
  22. "#[userid],to_date(#[ordertime],'yyyyMMddhh24miss'),to_date(#[endtime],'yyyyMMddhh24miss'),0,#[orderchannel],#[discnttype],1,sysdate,#[discntid],#[discntfee],#[discntName],#[productId],#[productName],#[packageCode],#[packageName],#[discntOrderState]) ";
  23. SQLExecutor.insertBean("net3g", sql, discntInfo);
  24. }
  25. public DiscntInfo get(EcbProductInfo ecbProductInfo,NetOrderBean orderInfo){
  26. System.out.println(JsonUtil.objectToJson(ecbProductInfo));
  27. System.out.println(JsonUtil.objectToJson(orderInfo));
  28. DiscntInfo discntInfo = new DiscntInfo();
  29. discntInfo.setUserid(orderInfo.getUserid());
  30. discntInfo.setDiscntid(ecbProductInfo.getDiscntCode());
  31. discntInfo.setCancelchannel(orderInfo.getCancelchannel());
  32. discntInfo.setDiscnttype(ecbProductInfo.getDiscntValue());
  33. discntInfo.setOrderchannel(orderInfo.getOrderchannel());
  34. discntInfo.setOrdertime(ecbProductInfo.getDiscntStartDate());
  35. discntInfo.setEndtime(ecbProductInfo.getDiscntEndDate());
  36. discntInfo.setDiscntfee(ecbProductInfo.getDiscntFee());
  37. discntInfo.setDiscntName(ecbProductInfo.getDiscntName());
  38. discntInfo.setPackageCode(ecbProductInfo.getPackageCode());
  39. discntInfo.setPackageName(ecbProductInfo.getPackageName());
  40. discntInfo.setProductId(ecbProductInfo.getProductId());
  41. discntInfo.setProductName(ecbProductInfo.getProductName());
  42. discntInfo.setDiscntOrderState(ecbProductInfo.getDiscntOrderState());
  43. System.out.println(JsonUtil.objectToJson(discntInfo));
  44. return discntInfo;
  45. }
  46. public void cancel(EcbProductInfo ecbProductInfo,NetOrderBean orderInfo) throws SQLException{
  47. DiscntInfo discntInfo = get(ecbProductInfo,orderInfo);
  48. String sql = "merge into TD_DISCNT_INFO a using (select #[userid] userid, #[discntid] discntid,#[discnttype] discnttype from dual) b "+
  49. "on (a.userid = b.userid and a.discntid = b.discntid and a.discnttype = b.discnttype)"+
  50. "when matched then update set "+
  51. "ordertime=to_date(#[ordertime], 'yyyymmddhh24miss'), "+
  52. "endtime=to_date(#[endtime], 'yyyymmddhh24miss'),CANCELTIME=sysdate, "+
  53. "status=1,discntOrderState=#[discntOrderState],syncstatus=1,cancelchannel=#[cancelchannel] "+
  54. "when not matched then insert (userid,canceltime,ordertime,endtime,status,cancelchannel,discnttype,syncstatus,inserttime,discntid,discntfee,discntName,productId,productName,packageCode,packageName,discntOrderState) values ("+
  55. "#[userid],sysdate,to_date(#[ordertime],'yyyyMMddhh24miss'),to_date(#[endtime],'yyyyMMddhh24miss'),1,#[cancelchannel],#[discnttype],1,sysdate,#[discntid],#[discntfee],#[discntName],#[productId],#[productName],#[packageCode],#[packageName],#[discntOrderState]) ";
  56. SQLExecutor.updateBean("net3g", sql, discntInfo);
  57. }
  58. public boolean queryByDiscntid(String userid,String discntid,String discnttype,int status) throws SQLException{
  59. String sql ="select count(1) from TD_DISCNT_INFO where userid =? and discntid=? and discnttype= ? and status=?";
  60. return NumberUtils.toInt(SQLExecutor.queryFieldWithDBName("net3g", sql, userid,discntid,discnttype,status)) >0;
  61. }
  62. public DiscntInfo queryByUserid(String userid,String discnttype,int status) throws SQLException{
  63. String sql ="select to_char(ORDERTIME,'yyyymmddhh24miss') ORDERTIME,to_char(ENDTIME,'yyyymmddhh24miss') ENDTIME,DISCNTID,DISCNTTYPE,discntfee from TD_DISCNT_INFO where orderchannel='H5_ko' and userid =? and discnttype= ? and status=?";
  64. return SQLExecutor.queryObjectWithDBName(DiscntInfo.class, "net3g", sql, userid,discnttype,status);
  65. }
  66. public DiscntInfo queryByUserid(String userid,String discnttype) throws SQLException{
  67. String sql ="select to_char(ORDERTIME,'yyyymmddhh24miss') ORDERTIME,to_char(ENDTIME,'yyyymmddhh24miss') ENDTIME,DISCNTID,DISCNTTYPE,discntfee,discntOrderState,PACKAGECODE,PRODUCTID,DISCNTTYPE from TD_DISCNT_INFO where userid =? and discnttype= ? and (endtime is null or endtime > sysdate)";
  68. return SQLExecutor.queryObjectWithDBName(DiscntInfo.class, "net3g", sql, userid,discnttype);
  69. }
  70. public EcbProductInfo queryProduct(String userid,String discnttype) throws SQLException{
  71. String sql ="select to_char(ORDERTIME,'yyyymmddhh24miss') discntStartDate,to_char(ENDTIME,'yyyymmddhh24miss') discntEndDate,DISCNTID discntCode,DISCNTTYPE discntValue,decode(discnttype,'','1040','0','1040','1150') spid,"
  72. + "discntfee discntFee ,discntOrderState,DISCNTNAME,PRODUCTID,PRODUCTNAME,PACKAGECODE, PACKAGENAME from TD_DISCNT_INFO where userid =? and discnttype= ? and status=0";
  73. return SQLExecutor.queryObjectWithDBName(EcbProductInfo.class, "net3g", sql, userid,discnttype);
  74. }
  75. }