2020-10-12 14:39:23 +09:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
using NP.Model;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using NP.Dao.MyBatis;
|
2025-04-14 13:24:33 +09:00
|
|
|
|
using MySql.Data.MySqlClient;
|
2020-10-12 14:39:23 +09:00
|
|
|
|
namespace NP.Dao
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class CommonDao : BaseDao
|
|
|
|
|
|
{
|
|
|
|
|
|
public IList<File> GetFiles(Int64 FGNo)
|
|
|
|
|
|
{
|
|
|
|
|
|
return base.Get<File>("sys.file.getbygroup", new Hashtable() { { "fgno", FGNo } });
|
|
|
|
|
|
}
|
|
|
|
|
|
public IList<File> GetFiles(string FGNos)
|
|
|
|
|
|
{
|
|
|
|
|
|
return base.Get<File>("sys.file.getbygroup", new Hashtable() { { "fgnos", FGNos } });
|
|
|
|
|
|
}
|
|
|
|
|
|
public IList<File> GetFilesByKey(Int64 FileNo)
|
|
|
|
|
|
{
|
|
|
|
|
|
return base.Get<File>("sys.file.getbyfileno", FileNo);
|
|
|
|
|
|
}
|
|
|
|
|
|
public Int64 SaveExam(CMEX e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.exno < 1) { base.Insert<CMEX>("cm.cmex.in", e); if (e.exno < 1) { RollBack(); return 0; } }
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (base.Save("cm.cmex.up", e) < 1) { RollBack(); return 0; }
|
|
|
|
|
|
//현재 저장하려는 문항 이회의 기존 저장된 문항풀 삭제
|
|
|
|
|
|
if (e.cmexqs.Count() < 1 || e.cmexqs.Where(w => w.eqno > 0).Count() < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Save("cm.cmexq.deleteall", e.exno);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (e.cmexqs.Where(w => w.eqno > 0).Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Save("cm.cmexq.delete", new Hashtable() { { "exno", e.exno }, { "eqnos", string.Join(",", e.cmexqs.Where(w => w.eqno > 0).Select(s => s.eqno)) } });
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (e.eqtype == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Save("cm.cmexlayer.del", e.exno);
|
|
|
|
|
|
if (e.cmexlayers.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Save("cm.cmexlayer.in", e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (e.cmexqs.Where(w => w.eqno > 0).Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var e2 = new CMEX() { exno = e.exno, uip = e.uip, uno = e.uno, cmexqs = e.cmexqs.Where(w => w.eqno > 0).ToList() };
|
|
|
|
|
|
base.Save("cm.cmexq.up", e2);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (e.cmexqs.Where(w => w.eqno < 1).Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var e2 = new CMEX() { exno = e.exno, uip = e.uip, uno = e.uno, cmexqs = e.cmexqs.Where(w => w.eqno < 1).ToList() };
|
|
|
|
|
|
base.Save("cm.cmexq.in", e2);
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return e.exno;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public IList<T> Get<T>(string v)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public int SaveQuestionBatch(IList<Question> data, Int64 UNo, String UIP)
|
|
|
|
|
|
{
|
|
|
|
|
|
int rtn = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
Question q = new Question() { };
|
|
|
|
|
|
q.Qs = new List<Question>();
|
|
|
|
|
|
q.uno = UNo;
|
|
|
|
|
|
q.uip = UIP;
|
|
|
|
|
|
foreach (var d in data.ToList())
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((d.atype == 0 && d.QIs.Count() > 0) || d.atype != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
base.Insert<Question>("cm.question.in", d);
|
|
|
|
|
|
|
|
|
|
|
|
if (d.qno > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (d.QIs.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (base.Save("cm.questionitem.in", d) < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
rtn++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return rtn;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public long SaveQuestion(Question q, int multicode)
|
|
|
|
|
|
{
|
|
|
|
|
|
var newQ = new Question();
|
|
|
|
|
|
if (q.qno > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
newQ.qno = q.qno;
|
|
|
|
|
|
newQ.uno = q.uno;
|
|
|
|
|
|
newQ.uip = q.uip;
|
|
|
|
|
|
newQ.QIs = new List<QuestionItem>();
|
|
|
|
|
|
foreach (var nqi in q.QIs.Where(w => w.qino < 1).ToList())
|
|
|
|
|
|
{
|
|
|
|
|
|
newQ.QIs.Add(new QuestionItem() { qno = q.qno, fgno = nqi.fgno, isright = nqi.isright, qitext = nqi.qitext });
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (q.qno < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Insert<Question>("cm.question.in", q);
|
|
|
|
|
|
if (q.qno > 0 && q.QIs.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (base.Save("cm.questionitem.in", q) == q.QIs.Count())
|
|
|
|
|
|
{
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return q.qno;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return q.qno;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var isMapped = base.Get<int>("cm.questionusings", q.qno).First() > 0;
|
|
|
|
|
|
if (base.Save("cm.question.up" + (isMapped ? "top" : ""), q) > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int upCount = 0;
|
|
|
|
|
|
foreach (var qi in q.QIs.Where(w => w.qino > 0).ToList())
|
|
|
|
|
|
{
|
|
|
|
|
|
qi.uno = q.uno;
|
|
|
|
|
|
qi.uip = q.uip;
|
|
|
|
|
|
upCount += base.Save("cm.questionitem.up", qi);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (newQ.QIs != null && newQ.QIs.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
upCount += base.Save("cm.questionitem.in", newQ);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (upCount == q.QIs.Count())
|
|
|
|
|
|
{
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return upCount;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public int CMCopy(int cmno, int uno, String uip, List<Data> datas, int ismaster, int? tmno, String cname)
|
|
|
|
|
|
{
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var cm = new CM() { orgcmno = cmno, uno = uno, uip = uip, tmno = tmno, cname = cname, ismaster = ismaster };
|
|
|
|
|
|
//전체 복사
|
|
|
|
|
|
Insert<CM>("cm.cmcopy0", cm);
|
|
|
|
|
|
//추가테이블 복사
|
|
|
|
|
|
Save("cm.cmcopy", cm);
|
|
|
|
|
|
//시험데이터 복사
|
|
|
|
|
|
foreach(var d in datas.Where(w=>w.dtype == 0))
|
|
|
|
|
|
{
|
|
|
|
|
|
var ex = new CMEX() { orgexno = d.intval, cmno = cm.cmno, uno = uno, uip = uip };
|
|
|
|
|
|
Insert<CMEX>("cm.cmcopy.ex0", ex);
|
|
|
|
|
|
Save("cm.cmcopy.ex", ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
//파일복제데이터 파일그룹번호 치환
|
|
|
|
|
|
foreach(var d in datas.Where(w=>w.dtype == 1 && w.longval3 > 0))
|
|
|
|
|
|
{
|
|
|
|
|
|
Save("cm.cmsd.fgnoup", new Hashtable() { {"cmno", cm.cmno }, {"orgsdno", d.intval },{ "fgno", d.longval3} });
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var d in datas.Where(w => w.dtype == 2 && w.longval3 > 0))
|
|
|
|
|
|
{
|
|
|
|
|
|
Save("cm.cminning.fgnoup", new Hashtable() { { "cmno", cm.cmno }, { "orgcmino", d.longval4 }, { "fgno", d.longval3 } });
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var d in datas.Where(w => w.dtype == 3 && w.longval3 > 0))
|
|
|
|
|
|
{
|
|
|
|
|
|
Save("cm.cm.fgnocmup", new Hashtable() { { "cmno", cm.cmno }, { "fgnocm", d.longval3 } });
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return cm.cmno;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
try { Save("sys.error", new System.Collections.Hashtable() { { "err", ex.Message + ex.StackTrace }, { "userno", uno } }); }
|
|
|
|
|
|
catch (Exception ex2)
|
|
|
|
|
|
{
|
|
|
|
|
|
Logger.TryError(ex.Message, ex2);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public int SaveContentsBatch(IList<CT> data)
|
|
|
|
|
|
{
|
|
|
|
|
|
int rtn = 0;
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var d in data)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Insert<CT>("cm.ct.in", d);
|
|
|
|
|
|
if (d.ctno > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (base.Save("cm.ctpage.in", d) < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
rtn++;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return rtn;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2025-04-14 13:24:33 +09:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 접속로그 등록
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="log"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2020-10-12 14:39:23 +09:00
|
|
|
|
public async Task<int> Log(PageLog log)
|
|
|
|
|
|
{
|
|
|
|
|
|
int rtn = 0;
|
2025-04-14 13:24:33 +09:00
|
|
|
|
|
|
|
|
|
|
using (var conn = new MySqlConnection(Frame.DaoFactory.Instance.DataSource.ConnectionString))
|
2020-10-12 14:39:23 +09:00
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
2025-04-14 13:24:33 +09:00
|
|
|
|
await conn.OpenAsync();
|
|
|
|
|
|
using (var command = new MySqlCommand("insert into pagelog(logsite, userno, menuno, pno, loginfo, cdt, cno, udt, uno, uip) values (@logsite, @uno, @menuno, @pno, @loginfo, now(), @uno, now(), @uno, @uip)", conn))
|
|
|
|
|
|
{
|
|
|
|
|
|
command.Parameters.AddWithValue("@logsite", log.logsite);
|
|
|
|
|
|
command.Parameters.AddWithValue("@uno", log.uno);
|
|
|
|
|
|
command.Parameters.AddWithValue("@menuno", log.menuno ?? (object)DBNull.Value);
|
|
|
|
|
|
command.Parameters.AddWithValue("@pno", log.pno ?? (object)DBNull.Value);
|
|
|
|
|
|
command.Parameters.AddWithValue("@loginfo", log.loginfo ?? "");
|
|
|
|
|
|
command.Parameters.AddWithValue("@uip", log.uip);
|
|
|
|
|
|
|
|
|
|
|
|
rtn = await command.ExecuteNonQueryAsync();
|
|
|
|
|
|
}
|
2020-10-12 14:39:23 +09:00
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
2025-04-14 13:24:33 +09:00
|
|
|
|
Console.WriteLine(ex.Message);
|
2020-10-12 14:39:23 +09:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-04-14 13:24:33 +09:00
|
|
|
|
|
2020-10-12 14:39:23 +09:00
|
|
|
|
return rtn;
|
|
|
|
|
|
}
|
2025-04-14 13:24:33 +09:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-07 11:06:55 +09:00
|
|
|
|
public int SavePay(Pay p, bool inlect, bool inlectsedate = false)
|
2020-10-12 14:39:23 +09:00
|
|
|
|
{
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
//결제헤더
|
|
|
|
|
|
base.Insert("pay.pay.in", p);
|
|
|
|
|
|
foreach (var pi in p.PIs)
|
|
|
|
|
|
{
|
|
|
|
|
|
pi.payno = p.payno;
|
|
|
|
|
|
//결제상세
|
|
|
|
|
|
base.Insert("pay.payitem.in", pi);
|
|
|
|
|
|
if (inlect)
|
|
|
|
|
|
{
|
|
|
|
|
|
//수강데이터
|
|
|
|
|
|
base.Insert("pay.lect.in", pi);
|
2021-06-07 11:06:55 +09:00
|
|
|
|
if (inlectsedate)
|
|
|
|
|
|
{
|
|
|
|
|
|
//온라인강좌 수강시작일, 수강종료일 수정
|
|
|
|
|
|
base.Save("pay.lect.sedate.save", p);
|
|
|
|
|
|
}
|
2020-10-12 14:39:23 +09:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public int SavePayBatch(String datas, int uno, String uip)
|
|
|
|
|
|
{
|
|
|
|
|
|
var pis = new List<PayItem>() { };
|
|
|
|
|
|
var pispc = new List<PayItem>() { };
|
|
|
|
|
|
var usernos = "";
|
|
|
|
|
|
foreach (var s in datas.Split(';'))
|
|
|
|
|
|
{
|
|
|
|
|
|
var v = s.Split(':');
|
|
|
|
|
|
usernos += "," + v[2];
|
|
|
|
|
|
var pi = new PayItem() {
|
|
|
|
|
|
ptype = string.IsNullOrEmpty(v[0]) ? 0 : 1,
|
|
|
|
|
|
pcno = string.IsNullOrEmpty(v[0]) ? (int?)null : Convert.ToInt32(v[0]),
|
|
|
|
|
|
itemno = Convert.ToInt32(v[1]),
|
|
|
|
|
|
userno = Convert.ToInt32(v[2]),
|
|
|
|
|
|
pptype = Convert.ToInt32(v[3]),
|
|
|
|
|
|
status = 1,
|
|
|
|
|
|
ispc = string.IsNullOrEmpty(v[0])?0:1,
|
|
|
|
|
|
pstatus = 1,
|
|
|
|
|
|
pcnt = 1,
|
|
|
|
|
|
payamt = Convert.ToInt32(v[4]),
|
|
|
|
|
|
payamtcash = v[3] == "5" ? Convert.ToInt32(v[5]) : 0,
|
|
|
|
|
|
payamtcard = v[3] == "5" ? Convert.ToInt32(v[6]) : 0,
|
|
|
|
|
|
uno = uno,
|
|
|
|
|
|
uip = uip
|
|
|
|
|
|
};
|
|
|
|
|
|
if (pi.ptype == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
pis.Add(pi);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pispc.Add(pi);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pispc = pispc.OrderBy(o => o.pcno).ThenBy(t => t.userno).ToList();
|
|
|
|
|
|
//정가 가져오기
|
|
|
|
|
|
var cmfees = new List<CM>() { };
|
|
|
|
|
|
var cmfeespc = new List<CM>() { };
|
|
|
|
|
|
if (pis.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
cmfees = base.Get<CM>("cm.cms.forpay2", string.Join(",", pis.Select(s => s.itemno).Distinct())).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pispc.Count() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
cmfeespc = base.Get<CM>("cm.cms.forpaypc2", string.Join(",", pispc.Select(s => s.pcno.Value).Distinct())).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
//사용자 소속 회원여부가져오기
|
|
|
|
|
|
var users = base.Get<Users>("users.byusernos", usernos.Substring(1));
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
int pcno = 0;
|
|
|
|
|
|
int userno = 0;
|
|
|
|
|
|
foreach (var pi in pispc)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pcno != pi.pcno.Value || userno != pi.userno.Value)
|
|
|
|
|
|
{
|
|
|
|
|
|
pcno = Convert.ToInt32(pi.pcno.Value);
|
|
|
|
|
|
userno = pi.userno.Value;
|
|
|
|
|
|
var user = users.Where(w => w.userno == userno).First();
|
|
|
|
|
|
//결제헤더
|
|
|
|
|
|
var pay = new Pay()
|
|
|
|
|
|
{
|
|
|
|
|
|
ptype = pi.pptype,
|
|
|
|
|
|
userno = pi.userno.Value,
|
|
|
|
|
|
pstatus = 1,
|
|
|
|
|
|
rstatus = 0,
|
|
|
|
|
|
refunding = 0,
|
|
|
|
|
|
orgamt = cmfeespc.Where(w => w.pcno == pcno).Sum(s => user.isjoin == 1 ? s.infee : s.outfee),
|
|
|
|
|
|
isinmoney = 1,
|
|
|
|
|
|
payamt = pispc.Where(w => w.pcno == pcno && w.userno == userno).Sum(s => s.payamt),
|
|
|
|
|
|
PIs = pispc.Where(w => w.pcno == pcno && w.userno == userno).ToList(),
|
|
|
|
|
|
uno = userno,
|
|
|
|
|
|
uip = uip };
|
|
|
|
|
|
base.Insert("pay.pay.in", pay);
|
|
|
|
|
|
foreach (var pi2 in pay.PIs)
|
|
|
|
|
|
{
|
|
|
|
|
|
pi2.isjoin = user.isjoin;
|
|
|
|
|
|
pi2.payno = pay.payno;
|
|
|
|
|
|
pi2.orgamt = cmfeespc.Where(w => w.pcno == pcno && w.cmno == pi2.itemno).Select(s => user.isjoin == 1 ? s.infee : s.outfee).First();
|
|
|
|
|
|
//결제상세
|
|
|
|
|
|
base.Insert("pay.payitem.in", pi2);
|
|
|
|
|
|
//수강데이터
|
|
|
|
|
|
base.Insert("pay.lect.in", pi2);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
var cmno = 0;
|
|
|
|
|
|
userno = 0;
|
|
|
|
|
|
foreach (var pi in pis)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (cmno != pi.itemno || userno != pi.userno.Value)
|
|
|
|
|
|
{
|
|
|
|
|
|
cmno = Convert.ToInt32(pi.itemno);
|
|
|
|
|
|
userno = pi.userno.Value;
|
|
|
|
|
|
var user = users.Where(w => w.userno == userno).First();
|
|
|
|
|
|
//결제헤더
|
|
|
|
|
|
var pay = new Pay()
|
|
|
|
|
|
{
|
|
|
|
|
|
ptype = pi.pptype,
|
|
|
|
|
|
userno = pi.userno.Value,
|
|
|
|
|
|
pstatus = 1,
|
|
|
|
|
|
rstatus = 0,
|
|
|
|
|
|
refunding = 0,
|
|
|
|
|
|
orgamt = cmfees.Where(w => w.cmno == cmno).Sum(s => user.isjoin == 1 ? s.infee : s.outfee),
|
|
|
|
|
|
isinmoney = 1,
|
|
|
|
|
|
payamt = pis.Where(w => w.itemno == cmno && w.userno == userno).First().payamt,
|
|
|
|
|
|
PIs = pis.Where(w => w.itemno == cmno && w.userno == userno).ToList(),
|
|
|
|
|
|
uno = userno,
|
|
|
|
|
|
uip = uip
|
|
|
|
|
|
};
|
|
|
|
|
|
base.Insert("pay.pay.in", pay);
|
|
|
|
|
|
foreach (var pi2 in pay.PIs)
|
|
|
|
|
|
{
|
|
|
|
|
|
pi2.isjoin = user.isjoin;
|
|
|
|
|
|
pi2.payno = pay.payno;
|
|
|
|
|
|
pi2.orgamt = cmfees.Where(w => w.cmno == pi2.itemno).Select(s => user.isjoin == 1 ? s.infee : s.outfee).First();
|
|
|
|
|
|
//결제상세
|
|
|
|
|
|
base.Insert("pay.payitem.in", pi2);
|
|
|
|
|
|
//수강데이터
|
|
|
|
|
|
base.Insert("pay.lect.in", pi2);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public Int64 PayIn(Pay pay)
|
|
|
|
|
|
{
|
|
|
|
|
|
Trans();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
Insert("pay.pay.pgin", pay);
|
|
|
|
|
|
if (pay.payno > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Save("pay.payitem.pgin", pay) == pay.PIs.Count())
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pay.isdvr == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
pay.PayDVR.payno = pay.payno;
|
|
|
|
|
|
pay.PayDVR.uno = pay.uno;
|
|
|
|
|
|
pay.PayDVR.uip = pay.uip;
|
|
|
|
|
|
Save("pay.paydvr.in", pay.PayDVR);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pay.ptype == 6)
|
|
|
|
|
|
{
|
|
|
|
|
|
//0원강좌는 바로 수강완료 처리
|
|
|
|
|
|
Save("pay.freeok", pay.payno);
|
|
|
|
|
|
}
|
|
|
|
|
|
Commit();
|
|
|
|
|
|
return pay.payno;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
RollBack();
|
|
|
|
|
|
Save("sys.error", new System.Collections.Hashtable() { { "err", ex.StackTrace }, { "userno", pay.uno } });
|
|
|
|
|
|
Logger.TryError(ex.Message, ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2020-10-28 10:06:43 +09:00
|
|
|
|
|
2020-10-12 14:39:23 +09:00
|
|
|
|
//private void logcompleted(IAsyncResult result)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// MySql.Data.MySqlClient.MySqlCommand command = (MySql.Data.MySqlClient.MySqlCommand)result.AsyncState;
|
|
|
|
|
|
// MySql.Data.MySqlClient.MySqlDataReader reader = command.EndExecuteReader(result);
|
|
|
|
|
|
// while (reader.Read())
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
// reader.Close();
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|