ZhiYeJianKang_PeiXun/Song.Site/Mobile/LearningCard.ashx.cs
2025-02-20 15:41:53 +08:00

204 lines
7.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WeiSha.Common;
using Song.ServiceInterfaces;
using Song.Extend;
using System.IO;
namespace Song.Site.Mobile
{
/// <summary>
/// 学习卡使用界面
/// </summary>
public class LearningCard : BasePage
{
protected override void InitPageTemplate(HttpContext context)
{
if (Request.ServerVariables["REQUEST_METHOD"] == "GET")
{
//当前学员的学习卡数量
int accid = Extend.LoginState.Accounts.UserID;
if (accid > 0)
{
int cardcount = Business.Do<ILearningCard>().AccountCardOfCount(accid);
this.Document.SetValue("cardcount", cardcount);
int usecount = cardcount - Business.Do<ILearningCard>().AccountCardOfCount(accid, 0);
this.Document.SetValue("usecount", usecount);
//学习卡
Song.Entities.LearningCard[] cards = Business.Do<ILearningCard>().AccountCards(accid);
this.Document.SetValue("cards", cards);
}
this.Document.RegisterGlobalFunction(this.isExpire); //是否过期
}
//
//此页面的ajax提交全部采用了POST方式
if (Request.ServerVariables["REQUEST_METHOD"] == "POST")
{
string action = WeiSha.Common.Request.Form["action"].String;
switch (action)
{
//使用学习卡
case "useCode":
useCode(context);
break;
//领用学习卡
case "getCode":
getCode(context);
break;
case "decode_qrcode":
decode_qrcode(context);
break;
}
}
}
#region
/// <summary>
/// 是否快过期
/// </summary>
/// <param name="para"></param>
/// <returns></returns>
protected string isExpire(object[] para)
{
DateTime end = DateTime.Now.AddYears(-1);
if (para.Length > 0 && para[0] is DateTime)
DateTime.TryParse(para[0].ToString(), out end);
if (end < DateTime.Now.AddDays(-7)) return "1";
return "0";
}
#endregion
#region
/// <summary>
/// 解析二维码
/// </summary>
/// <param name="context"></param>
private void decode_qrcode(HttpContext context)
{
string ret = string.Empty;
if (context.Request.Files.Count > 0)
{
try
{
HttpPostedFile file = context.Request.Files[0];
//文件流转二进制
Stream stream = file.InputStream;
byte[] photo = new byte[file.ContentLength];
stream.Read(photo, 0, file.ContentLength);
stream.Close();
//二进制转图片对象
System.IO.MemoryStream ms = new System.IO.MemoryStream(photo);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
//解析二维码
ret = WeiSha.Common.QrcodeHepler.Decode(img);
}
catch
{
}
}
//
context.Response.Write(ret);
context.Response.End();
}
#endregion
#region
/// <summary>
/// 使用学习卡
/// </summary>
/// <param name="context"></param>
private void useCode(HttpContext context)
{
//学习卡的编码与密钥
string code = WeiSha.Common.Request.Form["card"].String;
string state = "\"state\":{0},\"info\":\"{1}\",";
string json = "\"items\":[";
//没有传入充值码
if (!string.IsNullOrWhiteSpace(code))
{
try
{
//开始验证
Song.Entities.LearningCard card = Business.Do<ILearningCard>().CardCheck(code);
if (card != null)
{
Song.Entities.Accounts st = Extend.LoginState.Accounts.CurrentUser;
if (st != null)
{
Business.Do<ILearningCard>().CardUse(card, st);
Extend.LoginState.Accounts.Refresh(st.Ac_ID);
//输出关联的课程
Song.Entities.Course[] courses = Business.Do<ILearningCard>().CoursesForCard(card.Lc_Code, card.Lc_Pw);
for (int i = 0; i < courses.Length; i++)
{
Song.Entities.Course c = courses[i];
json += c.ToJson("Cou_ID,Cou_Name", null, null) + ",";
}
if (json.EndsWith(",")) json = json.Substring(0, json.Length - 1);
}
}
state = string.Format(state, 1, "成功");
}
catch (Exception ex)
{
state = string.Format(state, 0, ex.Message);
}
}
json += "]";
Response.Write("({" + state + json + "})");
this.Response.End();
}
/// <summary>
/// 将学习卡暂存名下
/// </summary>
/// <param name="context"></param>
private void getCode(HttpContext context)
{
//学习卡的编码与密钥
string code = WeiSha.Common.Request.Form["card"].String;
string state = "\"state\":{0},\"info\":\"{1}\",";
string json = "\"items\":[";
//没有传入充值码
if (!string.IsNullOrWhiteSpace(code))
{
//开始验证
try
{
Song.Entities.LearningCard card = Business.Do<ILearningCard>().CardCheck(code);
if (card != null)
{
Song.Entities.Accounts st = Extend.LoginState.Accounts.CurrentUser;
if (st != null)
{
Business.Do<ILearningCard>().CardGet(card, st);
Extend.LoginState.Accounts.Refresh(st.Ac_ID);
state = string.Format(state, 1, "成功");
}
}
}
catch (Exception ex)
{
state = string.Format(state, 0, ex.Message);
}
}
json += "]";
Response.Write("({" + state + json + "})");
this.Response.End();
}
/// <summary>
/// 增加地址的参数
/// </summary>
/// <param name="url"></param>
/// <param name="para"></param>
/// <returns></returns>
private string addPara(string url, params string[] para)
{
return WeiSha.Common.Request.Page.AddPara(url, para);
}
#endregion
}
}