using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Com.Alipay;
using Com.Alipay.Business;
using Com.Alipay.Domain;
using Com.Alipay.Model;
using dccdc.BLL;
using dccdc.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using WxPayAPI;
namespace dccdc.Controllers
{
public class zzjController : Controller
{
BLL.zzjBLL zzj = new BLL.zzjBLL();
[AllowAnonymous]
public string getxgyyxx(string id)
{
var dal = new DAL.xgDal();
var yy= dal.getjryy(id);
OperationResult or = new OperationResult();
if(yy!=null)
{
or.State = 1;
or.Message = "成功!";
or.Tag = Newtonsoft.Json.JsonConvert.SerializeObject(yy);
}
else
{
or.State = 0;
or.Message = "没有找到你今日的核酸检测登记信息!";
}
return Newtonsoft.Json.JsonConvert.SerializeObject(or);
}
[AllowAnonymous]
public string getxgyyxxsjh(string id)
{
var dal = new DAL.xgDal();
var yy = dal.getjryysjh(id);
OperationResult or = new OperationResult();
if (yy .Count>0)
{
or.State = 1;
or.Message = "成功!";
or.Tag = Newtonsoft.Json.JsonConvert.SerializeObject(yy);
}
else
{
or.State = 0;
or.Message = "没有找到你今日的核酸检测登记信息!";
}
return Newtonsoft.Json.JsonConvert.SerializeObject(or);
}
///
/// 获取预约列表
///
/// 身份证号
///
///
[AllowAnonymous]
// GET: zzj
public string getYYXX(string id, int jgid = 49)
{
//return View();
var loger = log4net.LogManager.GetLogger(this.GetType());
loger.Info("id:" + id);
loger.Info("jgid:" + jgid);
var yylist = zzj.getYYList(id, jgid);
return Newtonsoft.Json.JsonConvert.SerializeObject(yylist);
}
[AllowAnonymous]
public string register(string id, string img, string csrq, string idcard, string jtzz, string xm, string regp)
{
var loger = log4net.LogManager.GetLogger(this.GetType());
loger.Info("登记人姓名:" + xm);
loger.Info("登记机器:" + regp);
loger.Info("ID:" + id);
loger.Info("img:" + img);
loger.Info("csrq:" + csrq);
loger.Info("idcard:" + idcard);
loger.Info("jtzz:" + jtzz);
loger.Info("xm:" + xm);
loger.Info("regp:" + regp);
img = ZWL.Common.ImgUtil.ConvertImg(img);
Models.OperationResult or = zzj.register(id, img, csrq, idcard, jtzz, xm, regp);
string sor= Newtonsoft.Json.JsonConvert.SerializeObject(or);
loger.Info("自助机登记结果:"+sor);
return sor;
}
[AllowAnonymous]
public string yyxm()
{
var xm = new MedicalSchemeMaintainBll().GetAllList();
return Newtonsoft.Json.JsonConvert.SerializeObject(xm);
}
[AllowAnonymous]
public string yydj(string sfz, string xm, string yyrq, string tjfa, string tjfaname, string sjh, string qyxx)
{
OperationResult or = new BLL.MedicalAppointmentBll().canYY(DateTime.Parse(yyrq), sfz, int.Parse(tjfa));
if (or.State == 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(or);
}
MedicalAppointment ma = new MedicalAppointment();
ma.xingMing = xm;
ma.IDCard = sfz;
ma.CYFA = int.Parse(tjfa);
ma.CYFAName = tjfaname;
ma.MType = 1;
ma.Mobile = sjh;
ma.QYXX = qyxx;
ma.ADate = DateTime.Parse(yyrq);
ma.ATime = DateTime.Now;
ma.jgid = 49;
ma = new BLL.MedicalAppointmentBll().WXYY(ma, 2);
return Newtonsoft.Json.JsonConvert.SerializeObject(new OperationResult { State = 1, Message = ma.id.ToString(), Tag = Newtonsoft.Json.JsonConvert.SerializeObject(ma) });
}
[AllowAnonymous]
public string getBGXX(string id)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new BLL.ProfessionalExamRegisterBll().getKDYBGXX(id));
}
[AllowAnonymous]
public string getBGXX2(string id)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new BLL.ProfessionalExamRegisterBll().getKDYBGXX2(id));
}
//职业--根据身份证获取体检编号
[AllowAnonymous]
public string getPhysicalNumByIDCard(string id, string enableReprint = "0")
{
return new BLL.ProfessionalExamRegisterBll().getPhysicalNumByIDCard(id,enableReprint);
}
///
/// 根据physical_num更新状态为“打印指引单”
///
///
[AllowAnonymous]
public void updateProcedureStatus(string physical_num)
{
new BLL.ProfessionalExamRegisterBll().updateProcedureStatus(physical_num);
}
[AllowAnonymous]
public string getYYJFXX(string id)
{
var x = new BLL.chargeBll().getYYJFXX(id);
if (x.id == 0)
return Newtonsoft.Json.JsonConvert.SerializeObject(x);
//NativePay nativePay = new NativePay();
Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
string zfid = WxPayApi.GenerateOutTradeNo();
x.zfid = zfid;
new BLL.chargeBll().UpdateZfCode(x.id.ToString(), zfid);
WxPayData data = new WxPayData();
data.SetValue("body", "疫苗缴费");//商品描述
data.SetValue("attach", x.xingming);//附加数据
data.SetValue("out_trade_no", zfid);//随机字符串
data.SetValue("total_fee", (int)(x.money * 100));//总金额
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
data.SetValue("goods_tag", x.id);//商品标记
data.SetValue("trade_type", "NATIVE");//交易类型
data.SetValue("notify_url", WxPayAPI.WxPayConfig.NOTIFY_URL_Charge);
data.SetValue("product_id", x.id);//商品ID
WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接
Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
x.zfurl = url;
#region 支付宝扫码支付
AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(x);
string out_trade_no = builder.out_trade_no;
IAlipayTradeService serviceClient = F2FBiz.CreateClientInstance(Com.Alipay.Config.serverUrl, Com.Alipay.Config.appId, Com.Alipay.Config.merchant_private_key, Com.Alipay.Config.version,
Com.Alipay.Config.sign_type, Com.Alipay.Config.alipay_public_key, Com.Alipay.Config.charset);
//如果需要接收扫码支付异步通知,那么请把下面两行注释代替本行。
//推荐使用轮询撤销机制,不推荐使用异步通知,避免单边账问题发生。
//AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder);
string notify_url = "http://dc.51csharp.com/dccdc/weixin/notify_alipay"; //商户接收异步通知的地址
AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder, notify_url);
//以下返回结果的处理供参考。
//payResponse.QrCode即二维码对于的链接
//将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。
string ali_result = "";
switch (precreateResult.Status)
{
case ResultEnum.SUCCESS:
x.zfurl_alipay = precreateResult.response.QrCode;
break;
case ResultEnum.FAILED:
ali_result = precreateResult.response.Body;
//Response.Redirect("result.aspx?Text=" + result);
x.State = 0;
x.Message = ali_result;
break;
case ResultEnum.UNKNOWN:
if (precreateResult.response == null)
{
ali_result = "配置或网络异常,请检查后重试";
}
else
{
ali_result = "系统异常,请更新外部订单后重新发起请求";
}
//Response.Redirect("result.aspx?Text=" + result);
x.State = 0;
x.Message = ali_result;
break;
}
#endregion
return Newtonsoft.Json.JsonConvert.SerializeObject(x);
}
[AllowAnonymous]
public string getTJJFXX(string id)
{
var x = new BLL.chargeBll().getTJJFXX(id);
if (x.id == 0)
return Newtonsoft.Json.JsonConvert.SerializeObject(x);
//NativePay nativePay = new NativePay();
Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
string zfid = WxPayApi.GenerateOutTradeNo();
x.zfid = zfid;
new BLL.chargeBll().UpdateZfCode(x.id.ToString(), zfid);
WxPayData data = new WxPayData();
data.SetValue("body", "体检缴费");//商品描述
data.SetValue("attach", x.xingming);//附加数据
data.SetValue("out_trade_no", zfid);//随机字符串
data.SetValue("total_fee", (int)(x.money * 100));//总金额
data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
data.SetValue("notify_url", WxPayAPI.WxPayConfig.NOTIFY_URL_Charge);
data.SetValue("trade_type", "NATIVE");//交易类型
data.SetValue("product_id", x.id);//商品ID
WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接
Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
x.zfurl = url;
#region 支付宝扫码支付
AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(x, "体检费用");
string out_trade_no = builder.out_trade_no;
IAlipayTradeService serviceClient = F2FBiz.CreateClientInstance(Com.Alipay.Config.serverUrl, Com.Alipay.Config.appId, Com.Alipay.Config.merchant_private_key, Com.Alipay.Config.version,
Com.Alipay.Config.sign_type, Com.Alipay.Config.alipay_public_key, Com.Alipay.Config.charset);
//如果需要接收扫码支付异步通知,那么请把下面两行注释代替本行。
//推荐使用轮询撤销机制,不推荐使用异步通知,避免单边账问题发生。
//AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder);
string notify_url = "http://dc.51csharp.com/dccdc/weixin/notify_alipay"; //商户接收异步通知的地址
AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder, notify_url);
//以下返回结果的处理供参考。
//payResponse.QrCode即二维码对于的链接
//将链接用二维码工具生成二维码打印出来,顾客可以用支付宝钱包扫码支付。
string ali_result = "";
switch (precreateResult.Status)
{
case ResultEnum.SUCCESS:
x.zfurl_alipay = precreateResult.response.QrCode;
break;
case ResultEnum.FAILED:
ali_result = precreateResult.response.Body;
//Response.Redirect("result.aspx?Text=" + result);
x.State = 0;
x.Message = ali_result;
break;
case ResultEnum.UNKNOWN:
if (precreateResult.response == null)
{
ali_result = "配置或网络异常,请检查后重试";
}
else
{
ali_result = "系统异常,请更新外部订单后重新发起请求";
}
//Response.Redirect("result.aspx?Text=" + result);
x.State = 0;
x.Message = ali_result;
break;
}
#endregion
return Newtonsoft.Json.JsonConvert.SerializeObject(x);
}
///
/// 构造支付请求数据
///
/// 请求数据集
private AlipayTradePrecreateContentBuilder BuildPrecreateContent(Models.DTO.YMJFXX x, string fy = "疫苗费用")
{
//线上联调时,请输入真实的外部订单号。
string out_trade_no = "";
out_trade_no = x.zfid;
AlipayTradePrecreateContentBuilder builder = new AlipayTradePrecreateContentBuilder();
//收款账号
builder.seller_id = Com.Alipay.Config.pid;
//订单编号
builder.out_trade_no = out_trade_no;
//订单总金额
builder.total_amount = x.money.ToString();
//参与优惠计算的金额
//builder.discountable_amount = "";
//不参与优惠计算的金额
//builder.undiscountable_amount = "";
//订单名称
builder.subject = fy + "-" + x.xingming;
//自定义超时时间
builder.timeout_express = "5m";
//订单描述
builder.body = "";
//门店编号,很重要的参数,可以用作之后的营销
builder.store_id = "自助机";
//操作员编号,很重要的参数,可以用作之后的营销
builder.operator_id = "自助机";
//传入商品信息详情
/*
List gList = new List();
GoodsInfo goods = new GoodsInfo();
goods.goods_id = "goods id";
goods.goods_name = "goods name";
goods.price = "0.01";
goods.quantity = "1";
gList.Add(goods);
builder.goods_detail = gList;
*/
//系统商接入可以填此参数用作返佣
//ExtendParams exParam = new ExtendParams();
//exParam.sysServiceProviderId = "20880000000000";
//builder.extendParams = exParam;
return builder;
}
[AllowAnonymous]
public string getzfstate(string id)
{
var cm = new BLL.chargeBll().getModel(id);
if (cm.status == "已缴费")
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 1, Message = "支付成功!" });
}
else
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "支付未成功!" });
}
}
public string test()
{
//MedicalAppointmentBll bll = new MedicalAppointmentBll();
//bll.UpdateZfzt("148549239220170912163153503");
register("1758", "", "1964-05-25", "372401196405251547", "", "", "");
return "OK! My is a tester!";
}
[AllowAnonymous]
public string getaccesstoken()
{
return Common.Global.getAccessTokenYM.access_token;
}
[AllowAnonymous]
public string omg()
{
#region 临时使用处理6000条数据
string dqtj = @"select * from professionalExam_register a where a.register_date<'2019-10-01' and trade_type_maintain_id in (1,2)
and not exists(
select 1 from professionalExam_register b where b.register_date>'2019-12-14' and a.card_number=b.card_number
)";
var dal = new DAL.ProfessionalExamRegisterDal();
List dqlist = dal.getdqlist(dqtj);
for (int i = 0; i < 4800; i++)
{
var m = dqlist[i];
List results = dal.getResult(m.physical_num);
List processlist = dal.getexamprocess(m.physical_num);
/*
* physical_num
age
register_date
printtimes
main_review_date
check_date
*/
var d = DateTime.Parse(m.register_date);
m.register_date = d.AddYears(DateTime.Now.Year - d.Year).ToString("yyyy-MM-dd");
m.physical_num = dal.physical_num(m.register_date);
m.person_age = (int)((d - DateTime.Parse(m.birth)).TotalDays / 365);
if (!string.IsNullOrEmpty(m.printtimes))
m.printtimes = DateTime.Now.ToString("yyyy") + m.printtimes.Substring(4);
if (!string.IsNullOrEmpty(m.check_date))
m.check_date = DateTime.Now.ToString("yyyy") + m.check_date.Substring(4);
if (!string.IsNullOrEmpty(m.main_review_date))
m.main_review_date = DateTime.Now.ToString("yyyy") + m.main_review_date.Substring(4);
m.id = dal.Add(m).ToString();
processlist.ForEach(pro => {
if (!string.IsNullOrEmpty(pro.entry_date))
pro.entry_date = DateTime.Now.ToString("yyyy") + pro.entry_date.Substring(4);
if (!string.IsNullOrEmpty(pro.complete_date))
pro.complete_date = DateTime.Now.ToString("yyyy") + pro.complete_date.Substring(4);
pro.person_id = int.Parse(m.id);
pro.physical_num = m.physical_num;
new DAL.examination_processDal().Add(pro);
});
results.ForEach(res => {
res.physical_num = m.physical_num;
res.person_id = int.Parse(m.id);
if (!string.IsNullOrEmpty(res.inspection_time))
res.inspection_time = DateTime.Now.ToString("yyyy") + res.inspection_time.Substring(4);
if (!string.IsNullOrEmpty(res.commit_date))
res.commit_date = DateTime.Now.ToString("yyyy") + res.commit_date.Substring(4);
new DAL.professionalExam_project_resultDal().Add(res);
});
}
#endregion
return "ok";
}
#region 疫苗接种相关自助机功能
[AllowAnonymous]
[HttpPost]
public string JiaoHao()
{
PaiDuiJiaoHaoBLL bll = new PaiDuiJiaoHaoBLL();
var state = bll.JiaoHao();
if (state.State == 1)
{
IConnection connection;
ISession session;
IMessageProducer prod;
string address = System.Configuration.ConfigurationManager.AppSettings["MQAddress"];
IConnectionFactory factory = new ConnectionFactory(address);
connection = factory.CreateConnection();
connection.ClientId = Dns.GetHostName() + "_gxpdrs";
connection.Start();
//Create the Session
session = connection.CreateSession();
//Create the Producer for the topic/queue
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("sxpdrs"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
var imesg = prod.CreateTextMessage();
imesg.Text = state.Message.Split('|')[2];
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("gxpdlb"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
imesg = prod.CreateTextMessage();
imesg.Text = "gxpdlb";
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("sxpdrs"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
imesg = prod.CreateTextMessage();
imesg.Text = "";
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
session.Close();
connection.Close();
}
return Newtonsoft.Json.JsonConvert.SerializeObject(state);
}
[AllowAnonymous]
[HttpPost]
public string getParm(string key)
{
return new BLL.Common().getParm_Value(key, "", "");
}
[AllowAnonymous]
[HttpPost]
public string getPdrs()
{
return new BLL.PaiDuiJiaoHaoBLL().getPdrs();
}
static readonly object jho = new object();
[AllowAnonymous]
[HttpPost]
public string hj(int ksid,string ksmc,string hm,bool gh=false)
{
var bll = new BLL.PaiDuiJiaoHaoBLL();
lock (jho)
{
var or= bll.hj(ksid, ksmc, hm,gh);
if(or.State==1)
{
IConnection connection;
ISession session;
IMessageProducer prod;
string address = System.Configuration.ConfigurationManager.AppSettings["MQAddress"];
IConnectionFactory factory = new ConnectionFactory(address);
connection = factory.CreateConnection();
connection.ClientId = Dns.GetHostName() + "_gxpdlb";
connection.Start();
//Create the Session
session = connection.CreateSession();
//Create the Producer for the topic/queue
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("gxpdlb"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
var imesg = prod.CreateTextMessage();
imesg.Text = "gxpdlb";
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
prod = null;
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("hujiao"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
imesg = prod.CreateTextMessage();
imesg.Text =or.Message;
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
prod = session.CreateProducer(
new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("sxpdrs"));
prod.DeliveryMode = MsgDeliveryMode.Persistent;
imesg = prod.CreateTextMessage();
imesg.Text = "";
//imesg.Properties.SetString("dept_code", ksbh);
prod.Send(imesg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
prod.Close();
session.Close();
connection.Close();
}
return Newtonsoft.Json.JsonConvert.SerializeObject(or);
}
}
[AllowAnonymous]
[HttpPost]
public string getPD_XX (string id)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new BLL.PaiDuiJiaoHaoBLL().getModel(id));
}
[AllowAnonymous]
[HttpPost]
public string getpdlb()
{
pdxx pd = new Controllers.pdxx();
var bll = new PaiDuiJiaoHaoBLL();
pd.jhs = bll.getYJH();
pd.dds = bll.getWJH();
return Newtonsoft.Json.JsonConvert.SerializeObject(pd);
}
#endregion
}
public class pdxx
{
public List jhs { get; set; }
public List dds { get; set; }
}
}