This commit is contained in:
hodong13 2020-11-26 04:49:56 +00:00
parent 7b8a5050e1
commit bcb2ca2a21
13 changed files with 247 additions and 79 deletions

View File

@ -32,7 +32,6 @@ namespace NP.Base
//Response.Cache.SetExpires(DateTime.Now);
//Response.Cache.SetMaxAge(new TimeSpan(0, 0, 30));
ViewBag.IsHome = false;
ViewBag.SSUserNo = 0;
ViewBag.SSUserName = "";

View File

@ -158,6 +158,30 @@ namespace NP.Base.Controllers
{
return JsonOK(Dao.Save("cr.lectsdboardcmt.del", new Hashtable() { { "bcno", bcno }, { "cno", SUserInfo.UserNo }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult AttCertCheck(int lectno)
{
var data = Dao.Get<Data>("lect.attcert.check", new Hashtable() { { "lectno", lectno } }).FirstOrDefault();
if (data.intval2 == 1 || data.intval3 == 1)
{
return JsonBack(new JsonRtn() { code = 1000, obj = 1 });
}
else
{
if (data.intval == 1)
{
return JsonBack(new JsonRtn() { code = 1000, obj = 2 });
}
if (!string.IsNullOrEmpty(data.strval))
{
return JsonBack(new JsonRtn() { code = 1000, obj = 3, msg = data.strval });
}
else
{
return JsonBack(new JsonRtn() { code = -1 });
}
}
}
}

View File

@ -164,12 +164,90 @@ namespace NP.Base.Controllers
public JsonResult PayStart(VMPay vm)
{
vm.PPLog = Dao.Get<PPLog>("pay.pplogs", new Hashtable() { { "pplno", vm.pplno }, { "userno", SUserInfo.UserNo } }).First();
if (vm.payno > 0 && vm.PPLog.pstatus != 21)
{
return JsonBack(new JsonRtn() { code = 1000, msg = "승인된 승인대기신청데이터가 아닙니다.", obj = 0 });
}
vm.PayItems = new List<PayItem>() { };
if (vm.payno > 0)
{
//대기신청 결제시작
vm.Pay = new Pay()
{
payno = vm.payno,
ptype = vm.ptype,
uno = SUserInfo.UserNo,
uip = GetUserIP(),
ispg = 1,
userno = SUserInfo.UserNo,
orgamt = vm.PPLog.infee,
payamt = vm.PPLog.infee,
iscashrct = vm.ptype == 1 ? 0 : vm.iscashrct,
cashrcthp = vm.ptype == 1 ? null : vm.cashrcthp,
pplno = vm.pplno,
PIs = vm.PayItems
};
vm.PayItems.Add(new PayItem()
{
ptype = 0,
itemno = vm.cmno,
pcnt = 1,
userno = SUserInfo.UserNo,
orgamt = vm.PPLog.infee,
payamt = vm.PPLog.infee,
isrebate = vm.PPLog.isrebate??0,
rbank = vm.PPLog.rbankname,
rbankaccnum = vm.PPLog.rbankacc,
tbankuser = vm.PPLog.rbankowner
});
if (vm.Pay.ptype == 3 && vm.Pay.payamt > 0)
{
//0원 강좌는 제외
//가상계좌 결제 시 ?일동안만 입금가능 / 수강신청중 빠른 것
vm.Pay.paylimit = Convert.ToDateTime(DateTime.Now.AddDays(paylimitday).ToString("yyyy-MM-dd")).AddSeconds(-1);
//if (vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Count() > 0)
//{
// vm.Pay.paylimit = Convert.ToDateTime(vm.PayItems.Where(w => w.retime != null && w.retime < vm.Pay.paylimit).Min(m => m.retime).Value.AddDays(1).ToString("yyyy-MM-dd")).AddSeconds(-1);
//}
vm.Pay.acceptmethod = "vbank(" + vm.Pay.paylimit.Value.ToString("yyyyMMddHHmm") + ")";
}
if (vm.Pay.payamt < 1)
{
vm.Pay.ptype = 6;
}
else if (vm.Pay.ptype == 6 && vm.Pay.payamt > 0)
{
vm.Pay.ptype = 1;
}
if (Dao.Save("pay.paycert.paystart", vm.Pay) > 0)
{
var pginfos = GetConfig("pginfo").Split('|');
string timeTemp = "" + DateTime.UtcNow.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds;
vm.Pay.timestamp = timeTemp.Split('.')[0];
System.Security.Cryptography.SHA256Managed sha256Managed = new System.Security.Cryptography.SHA256Managed();
vm.Pay.signature = ComputeHash(string.Format("oid={0}&price={1}&timestamp={2}", GetConfig("PAYMENT_CLASSIFICATION") + vm.Pay.payno, vm.Pay.payamt, vm.Pay.timestamp));
vm.Pay.oid2 = GetConfig("PAYMENT_CLASSIFICATION");
return JsonBack(new JsonRtn() { code = 1000, obj = vm.Pay });
}
}
else
{
foreach (var d in vm.items.Split(';'))
{
var dd = d.Split(':');
vm.PayItems.Add(new PayItem() { ptype = GetInt(dd[0]), itemno = GetLong(dd[1]), pcnt = GetInt(dd[2]), userno = vm.isgroup == 0 || dd[0] == "2" ? SUserInfo.UserNo : GetInt(dd[3]), isrebate = GetInt(dd[4]), fgno = dd[5] == "0" ? (Int64?)null : GetLong(dd[5]),
rbank = vm.PPLog.rbankname, rbankaccnum = vm.PPLog.rbankacc, tbankuser = vm.PPLog.rbankowner });
vm.PayItems.Add(new PayItem()
{
ptype = GetInt(dd[0]),
itemno = GetLong(dd[1]),
pcnt = GetInt(dd[2]),
userno = vm.isgroup == 0 || dd[0] == "2" ? SUserInfo.UserNo : GetInt(dd[3]),
isrebate = GetInt(dd[4]),
fgno = dd[5] == "0" ? (Int64?)null : GetLong(dd[5]),
rbank = vm.PPLog.rbankname,
rbankaccnum = vm.PPLog.rbankacc,
tbankuser = vm.PPLog.rbankowner
});
}
}
if (vm.isgroup == 1)
{

View File

@ -1336,6 +1336,14 @@
,completetime=#completetime#
where lectno=#lectno# and iscomplete=1;
</update>
<select id="lect.attcert.check" parameterClass="hashtable" resultClass="data">
select ifnull(a.isattcheck,0) intval,b.ischkatt intval2,c.ischkatt intval3
,CAST(AES_DECRYPT(UNHEX(b.mobile), <include refid="sql.digest"></include>) AS char) strval
from lect a
inner join users b on b.userno = a.userno
inner join cm c on c.cmno = a.cmno
where a.lectno = #lectno#
</select>
<select id="lect.lecture.document" parameterClass="hashtable" resultClass="lect">
select a.*
from (

View File

@ -284,8 +284,12 @@
<update id="pay.paycert.paystart" parameterClass="pay">
update pay a
inner join users b on b.userno=a.userno
set a.ptype=#ptype#,a.paylimit=#paylimit#,a.deliamt=#deliamt#,a.payamt=a.payamt+#deliamt#,a.isdvr=#isdvr#
,a.username=b.username
set a.ptype=#ptype#,a.paylimit=#paylimit#,a.orgamt=#orgamt#,a.payamt=#payamt#
where a.payno=#payno# and a.userno=#userno# and a.pstatus=21;
update payitem a
inner join users b on b.userno=a.userno
set a.orgamt=#orgamt#,a.payamt=#payamt#
where a.payno=#payno# and a.userno=#userno# and a.pstatus=21;
</update>
<select id="pay.pay" parameterClass="hashtable" resultClass="pay">
@ -334,11 +338,12 @@
inner join users c on c.userno=b.userno
left outer join assign d on d.asno=c.asno
left outer join pplog e on e.pplno=b.pplno
where a.payno=#payno# and a.ptype=0;
left outer join lect f on f.payno=a.payno and f.pino=a.pino and f.status=4 and f.isready=1
where a.payno=#payno# and a.ptype=0 and f.lectno is null;
update lect a
inner join pay b on b.payno=a.payno and b.pstatus in (22,1)
inner join payitem c on c.payno=b.payno and c.ptype=4 and c.itemno=a.cmno and c.pstatus=b.pstatus
inner join payitem c on c.payno=b.payno and c.itemno=a.cmno and c.pstatus=b.pstatus
set a.status=case when b.pstatus=22 then 2 else 1 end,a.uno=#uno#,a.uip=#uip#
where a.payno=#payno# and a.status=4;
@ -863,7 +868,9 @@
<select id="pay.pplogs" parameterClass="hashtable" resultClass="pplog">
select a.pplno,a.isready,a.cmno,a.cmisno,a.isrebate,a.rbankname,a.rbankacc,a.rbankowner
,b.payno,b.pstatus
,a2.infee
from pplog a
inner join cm a2 on a2.cmno=a.cmno
left outer join pay b on b.pplno=a.pplno
<dynamic prepend="where">
<isNotNull property="pplno" prepend="and">a.pplno=#pplno#</isNotNull>
@ -882,6 +889,13 @@
from lect a
where a.cmno=#cmno# and a.isready=1 and a.status=6
</select>
<select id="pay.pplogs.bypay" parameterClass="hashtable" resultClass="pplog">
select a.pplno,a.isready,a.cmno,a.cmisno,a.isrebate,a.rbankname,a.rbankacc,a.rbankowner
,b.payno,b.pstatus
from pay b
inner join pplog a on a.pplno=b.pplno
where b.payno=#payno# and a.userno=#userno#
</select>
</statements>
</sqlMap>

View File

@ -833,6 +833,20 @@ namespace NP.FO.Controllers
}
public ActionResult ApplyPay(VMCourse vm)
{
if (vm.payno > 0)
{
//신청대기 => 승인 => 결제진입
//유효성 검증
vm.PPLog = Dao.Get<PPLog>("pay.pplogs.bypay", new Hashtable() { { "payno", vm.payno }, { "userno", SUserInfo.UserNo } }).FirstOrDefault();
if (vm.PPLog == null || vm.PPLog.pstatus != 21)
{
return Redirect("/");
}
vm.pplno = vm.PPLog.pplno;
vm.cmno = vm.PPLog.cmno;
}
else
{
if (vm.pplno < 1)
{
@ -843,7 +857,7 @@ namespace NP.FO.Controllers
{
return Redirect("/");
}
if (vm.PPLog.payno > 0 && vm.PPLog.pstatus > 0)
else if (vm.PPLog.payno > 0 && vm.PPLog.pstatus > 0)
{
//새로고침?
return RedirectPermanent("/Course/ApplyComplete?payno=" + vm.PPLog.payno);
@ -901,6 +915,7 @@ namespace NP.FO.Controllers
}
return Redirect("/");
}
}
vm.CM = Dao.Get<CM>("cm.cms", new System.Collections.Hashtable() { { "cmno", vm.PPLog.cmno } }).First();
vm.User = Dao.Get<Users>("users.users", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo } }).First();
vm.viewname4 = "/Course/OnPayReturn";

View File

@ -94,7 +94,7 @@
</div>
<a href="#" class="lgnBtn" onclick="login();">로그인</a>
<ul class="lgnFind">
@*<ul class="lgnFind">
<li><a href="/Account/FindMe">아이디/비밀번호찾기</a></li>
<li><a href="/Account/JoinTSel">회원가입</a></li>
</ul>
@ -103,7 +103,7 @@
<li><a href="#">네이버 아이디로 로그인</a></li>
<li><a href="#">카카오톡 아이디로 로그인</a></li>
<li><a href="#">구글 아이디로 로그인</a></li>
</ul>
</ul>*@
</div>
</form>

View File

@ -144,6 +144,7 @@
}
@section scripts{
<script>
var _cmino = 0;
$(document).ready(function () {
});
@ -155,8 +156,34 @@
} else if (notoverflag < 1) {
msg("일일 최대 학습회차는 6차시입니다.");
} else {
viewcontents(cmino, false, @Model.croomlectno);
_cmino = cmino;
chkcontent();
@*viewcontents(cmino, false, @Model.croomlectno);*@
}
}
function chkcontent() {
capp("/fcommon/attcertcheck", {lectno : @Model.croomlectno}, "cbchkcontent");
}
function cbchkcontent() {
if (capResult.code == 1000) {
if (capResult.obj == 1) {
viewcontents(_cmino, false,@Model.croomlectno);
} else if (capResult.obj == 2) {
viewcontents(_cmino, false,@Model.croomlectno);
} else {
@*confirmtoggle(true, "해당 과정의 학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?","mobilechkview("+@Model.croomlectno+")");*@
//confirmtoggle(true, "해당 과정의 학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?","showpop()");
//confirmtoggle(true, "해당 과정의 학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?","mobilechkview('MOBI')");
}
} else {
msg("휴대폰 번호가 공란입니다.<br/>정보수정을 통해 번호를 입력해주세요.");
}
}
function showpop() {
bglayer(false);
$("#pop3").show();
}
</script>
}

View File

@ -44,11 +44,11 @@ else
</li>
</ul>
<div class="apyCost">
총 결제@(Model.Pay.isready==1?"예상":"")금액 : <span class="red">@Model.CM.infee.ToString("#,0")</span> 원
총 결제@(Model.Pay.isready==1 && Model.Pay.pstatus != 1 && Model.Pay.pstatus != 22 ?"예상":"")금액 : <span class="red">@Model.CM.infee.ToString("#,0")</span> 원
</div>
</li>
</ul>
if (Model.Pay.isready == 0)
if (Model.Pay.isready == 0 || Model.Pay.pstatus == 1 || Model.Pay.pstatus == 22)
{
<h4 class="clsTitle">결제정보</h4>
<table class="clsTable">

View File

@ -1,5 +1,6 @@
@model NP.Model.VMCourse
<form id="mform" name="mform" method="post" action="/Course/XpayREQ">
@Html.HiddenFor(m=>m.payno)
<input type="hidden" name="cmno" id="cmno" value="@Model.cmno" /> @*강좌번호*@
<input type="hidden" name="stringval" id="stringval" value="@Model.stringval" /> @*법정교육/기타교육*@
<input type="hidden" name="stringval2" id="stringval2" value="@Model.stringval2" />@*교육유형*@
@ -30,7 +31,7 @@
</li>
</ul>
<div class="apyCost">
결제금액 : <span class="red">@Model.CM.infee</span> 원
결제금액 : <span class="red">@Model.CM.infee.ToString("#,0")</span> 원
</div>
</li>
</ul>

View File

@ -38,7 +38,7 @@
@Html.Raw(d.pstatus == 21 ? string.Format("<b><a href=\"#\" class=\"paybtn\" onclick=\"gopay({0})\">교육비납부</a></b>", d.payno) : "")
</h5>
<dl class="ltaDl">
<dt class="@(d.pstatus == 1 && d.rfdstatus < 1 ? "ltaDlbk":"ltaDlred")">@(d.pstatus == 55 ? "대기신청" : d.pstatus == 51 ? "심사중" : d.pstatus == 21 ? "결제대기" : d.pstatus == 22 ? "입금대기" : d.pstatus == 1 && d.rfdstatus > 0 ? "환불요청" : d.pstatus == 1 ? "결제완료" : d.rstatus == 1 ? "부분환불" : d.rstatus == 2 ? "전액환불" : "-")</dt>
<dt class="@(d.pstatus == 1 && d.rfdstatus < 1 ? "ltaDlbk":"ltaDlred")">@(d.pstatus == 55 ? "승인대기" : d.pstatus == 51 ? "심사중" : d.pstatus == 21 ? "결제대기" : d.pstatus == 22 ? "입금대기" : d.pstatus == 1 && d.rfdstatus > 0 ? "환불요청" : d.pstatus == 1 ? "결제완료" : d.rstatus == 1 ? "부분환불" : d.rstatus == 2 ? "전액환불" : "-")</dt>
<dd>
신청(교육)기간 : @d.rstime.Value.ToString("yy'/'MM'/'dd") ~ @d.retime.Value.ToString("yy'/'MM'/'dd") (@d.sstime.ToString("yy'/'MM'/'dd") ~ @d.setime.ToString("yy'/'MM'/'dd"))
@if (d.cshape == 2)

View File

@ -53,5 +53,6 @@ namespace NP.Model
public Int64 payno { get; set; }
public int pstatus { get; set; }
public int infee { get; set; }
}
}

View File

@ -8,6 +8,7 @@ namespace NP.Model
{
public class VMPay : VMBase
{
public int cmno { get; set; }
public int isgroup { get; set; }
public int ptype { get; set; }
public int isdvr { get; set; }