using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using SuperMap.RealEstate.ServiceModel;
using SuperMap.RealEstate.Web.UI.WebControls;
using COMB = SuperMap.RealEstate.Coop.Merchant.Business;
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
using HZQR.Common;
namespace YFBusinessApi.Helper
{
public class WeChatPushHelper
{
#region 方法 -> 推送订单核销通知
///
/// 推送订单核销通知给用户
/// 主订单或子订单二选一
///
/// 事务对象
/// 子订单信息
/// 与主订单信息二选一
/// 主订单信息
/// 与子订单信息二选一
public static void PushWechatMessage(Transaction transaction,
MSPB.SALEBILL_CHILD salebillChild = null, MSPB.SALEBILL salebill = null)
{
if (salebillChild == null && salebill == null)
{
LogUtil.WriteLog("订单推送失败:订单信息缺失!");
return;
}
int MEMBERSHIP_ID = 0;
int SALEBILL_ID = 0;
int SUPPLIER_ID = 0;
string _strOrderCode = "";
string WECHAT_UNIONID = "";
#region 推送参数初始化
if (salebillChild != null && salebillChild.MEMBERSHIP_ID != null)
{
MEMBERSHIP_ID = salebillChild.MEMBERSHIP_ID.Value;
}
else
{
if (salebill != null && salebill.MEMBERSHIP_ID != null)
{
MEMBERSHIP_ID = salebill.MEMBERSHIP_ID.Value;
}
}
if (salebillChild != null && salebillChild.SALEBILL_ID != null)
{
SALEBILL_ID = salebillChild.SALEBILL_ID.Value;
}
else
{
if (salebill != null && salebill.SALEBILL_ID != null)
{
SALEBILL_ID = salebill.SALEBILL_ID.Value;
}
}
if (salebillChild != null && salebillChild.SUPPLIER_ID != null)
{
SUPPLIER_ID = salebillChild.SUPPLIER_ID.Value;
}
if (salebillChild != null)
{
_strOrderCode = salebillChild.SALEBILL_CHILD_CODE;
}
else
{
if (salebill != null)
{
_strOrderCode = salebill.SALEBILL_CODE;
}
}
if (salebillChild != null)
{
WECHAT_UNIONID = salebillChild.WECHAT_UNIONID;
}
else
{
if (salebill != null)
{
WECHAT_UNIONID = salebill.WECHAT_UNIONID;
}
}
#endregion
try
{
LogUtil.WriteLog("订单发货开始推送!");
//会员ID、订单ID、微信unionid三者缺一不可
if (MEMBERSHIP_ID > 0 && SALEBILL_ID > 0 && !string.IsNullOrWhiteSpace(WECHAT_UNIONID))
{
MSPB.WECHATPUBLICSIGN _WECHATPUBLICSIGN = new MSPB.WECHATPUBLICSIGN(transaction);
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID = 1;
if (_WECHATPUBLICSIGN.Select())
{
TextBoxEx RefreshTime = new TextBoxEx();
TextBoxEx AcessToken = new TextBoxEx();
AcessToken.Text = MSPB.CommonHelper.GetAccess(RefreshTime,
_WECHATPUBLICSIGN.WECHAT_APPID, _WECHATPUBLICSIGN.WECHAT_APPSECRET);
DataTable PUSHMODULE = new MSPB.PUSHMODULE(transaction).FillDataTable(
"WHERE WECHATPUBLICSIGN_ID = " + _WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
DataTable SALEDETAILTable = new MSPB.SALEDETAIL(transaction).ExecuteDataTable(
$@"SELECT MAX(COMMODITY_NAME) AS COMMODITY_NAME,SUM(ORDER_COUNT) AS ORDER_COUNT,
SUM(ORDER_AMOUNT) AS ORDER_AMOUNT
FROM MOBILESERVICE_PLATFORM.T_SALEDETAIL WHERE SALEBILL_ID = {SALEBILL_ID}
{(SUPPLIER_ID > 0 ? $" AND MERCHANTS_ID = {SUPPLIER_ID}" : "")}");
string _PUSH_MODULE = PUSHMODULE.Select("PUSHMODULE_NUM = 'PickUpGoods'")[0]["PUSHMODULE_CODE"].ToString();
if (SALEDETAILTable.Rows.Count > 0)
{
DataRow SALEDETAILRow = SALEDETAILTable.Rows[0];
MSPB.GROUPPUSHDETAIL _GROUPPUSHDETAIL = new MSPB.GROUPPUSHDETAIL(transaction);
_GROUPPUSHDETAIL.PUSH_TITLE = "您的订单已发货,请注意查收。";
_GROUPPUSHDETAIL.PUSH_FIRSTCONTENT = SALEDETAILRow["ORDER_COUNT"].ToString() == "1" ?
SALEDETAILRow["COMMODITY_NAME"].ToString() : SALEDETAILRow["COMMODITY_NAME"].ToString() +
"等共" + SALEDETAILRow["ORDER_COUNT"].ToString() + "件商品";
_GROUPPUSHDETAIL.PUSH_SECONDCONTENT = _strOrderCode;
_GROUPPUSHDETAIL.PUSH_THIRDCONTENT = DateTime.Now.ToString();
_GROUPPUSHDETAIL.PUSH_LASTCONTENT = "感谢您的再次使用!";
MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction);
_MEMBERSHIP.MEMBERSHIP_ID = MEMBERSHIP_ID;
if (_MEMBERSHIP.Select())
{
List RTWECHATPUSHList = null;
if (!string.IsNullOrEmpty(_MEMBERSHIP.RTWECHATPUSH_ID))
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE RTWECHATPUSH_ID IN (" + _MEMBERSHIP.RTWECHATPUSH_ID + ") AND WECHATPUBLICSIGN_ID = " +
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
if (RTWECHATPUSHList.Count == 0)
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE VERIFICATION_CODE = '" + WECHAT_UNIONID + "' AND WECHATPUBLICSIGN_ID = " +
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
}
}
else
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE VERIFICATION_CODE = '" + WECHAT_UNIONID + "' AND WECHATPUBLICSIGN_ID = " +
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
}
foreach (MSPB.RTWECHATPUSH _RTWECHATPUSH in RTWECHATPUSHList)
{
MSPB.CommonHelper.StartToSend(_PUSH_MODULE, AcessToken, _RTWECHATPUSH, _GROUPPUSHDETAIL, 3,
RefreshTime, _WECHATPUBLICSIGN.WECHAT_APPID, _WECHATPUBLICSIGN.WECHAT_APPSECRET);
LogUtil.WriteLog((string.IsNullOrEmpty(_RTWECHATPUSH.USER_NAME) ?
_RTWECHATPUSH.NICK_NAME : _RTWECHATPUSH.USER_NAME) + "已推送!");
}
}
}
}
}
else
{
LogUtil.WriteLog($"核销订单推送失败【MEMBERSHIP_ID:{MEMBERSHIP_ID}、" +
$"SALEBILL_ID:{SALEBILL_ID}、WECHAT_UNIONID:{WECHAT_UNIONID}、" +
$"SUPPLIER_ID:{SUPPLIER_ID}】");
}
}
catch (Exception ex)
{
LogUtil.WriteLog($"核销订单【{_strOrderCode}】推送失败:{ex.Message}");
}
}
#endregion
#region 方法 -> 代金券核销结果推送
///
/// 代金券核销结果推送
///
///
///
public static void PushWechatMessage(Transaction transaction, COMB.COUPON_SEND couponSend)
{
try
{
if (couponSend.MEMBERSHIP_ID != null)
{
MSPB.WECHATPUBLICSIGN _WECHATPUBLICSIGN = new MSPB.WECHATPUBLICSIGN(transaction);
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID = 1;
if (_WECHATPUBLICSIGN.Select())
{
TextBoxEx RefreshTime = new TextBoxEx();
TextBoxEx AcessToken = new TextBoxEx();
AcessToken.Text = MSPB.CommonHelper.GetAccess(RefreshTime,
_WECHATPUBLICSIGN.WECHAT_APPID, _WECHATPUBLICSIGN.WECHAT_APPSECRET);
DataTable PUSHMODULE = new MSPB.PUSHMODULE(transaction).FillDataTable(
"WHERE WECHATPUBLICSIGN_ID = " + _WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
string _PUSH_MODULE = PUSHMODULE.Select("PUSHMODULE_NUM = 'WriteOff'")[0]["PUSHMODULE_CODE"].ToString();
MSPB.GROUPPUSHDETAIL _GROUPPUSHDETAIL = new MSPB.GROUPPUSHDETAIL(transaction);
_GROUPPUSHDETAIL.PUSH_TITLE = "您好!您已成功核销代金券一张!";
_GROUPPUSHDETAIL.PUSH_FIRSTCONTENT = couponSend.COUPON_NAME;
_GROUPPUSHDETAIL.PUSH_SECONDCONTENT = DateTime.Now.ToString();
DataTable dt = new COMB.COUPON(transaction).ExecuteDataTable(@"SELECT MERCHANTS_NAME
FROM COOP_MERCHANT.T_COUPON A
LEFT JOIN COOP_MERCHANT.T_MERCHANTS B
ON A.MERCHANTS_ID = B.MERCHANTS_ID
WHERE A.COUPON_ID = " + couponSend.COUPON_ID);
if (dt.Rows.Count > 0)
{
_GROUPPUSHDETAIL.PUSH_THIRDCONTENT = dt.Rows[0][0].ToString();
}
_GROUPPUSHDETAIL.PUSH_LASTCONTENT = "感谢您的再次使用!";
MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction);
_MEMBERSHIP.MEMBERSHIP_ID = couponSend.MEMBERSHIP_ID;
if (_MEMBERSHIP.Select())
{
List RTWECHATPUSHList = null;
if (!string.IsNullOrEmpty(_MEMBERSHIP.RTWECHATPUSH_ID))
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE RTWECHATPUSH_ID IN (" + _MEMBERSHIP.RTWECHATPUSH_ID + ") AND WECHATPUBLICSIGN_ID = " +
_WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
if (RTWECHATPUSHList.Count == 0)
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE MOBILEPHONE_NUMBER = '" + _MEMBERSHIP.MEMBERSHIP_MOBILEPHONE +
"' AND WECHATPUBLICSIGN_ID = " + _WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
}
}
else
{
RTWECHATPUSHList = new MSPB.RTWECHATPUSH(transaction).FillCollection(
"WHERE MOBILEPHONE_NUMBER = '" + _MEMBERSHIP.MEMBERSHIP_MOBILEPHONE +
"' AND WECHATPUBLICSIGN_ID = " + _WECHATPUBLICSIGN.WECHATPUBLICSIGN_ID);
}
foreach (MSPB.RTWECHATPUSH _RTWECHATPUSH in RTWECHATPUSHList)
{
MSPB.CommonHelper.StartToSend(_PUSH_MODULE, AcessToken, _RTWECHATPUSH, _GROUPPUSHDETAIL, 3,
RefreshTime, _WECHATPUBLICSIGN.WECHAT_APPID, _WECHATPUBLICSIGN.WECHAT_APPSECRET);
LogUtil.WriteLog((string.IsNullOrEmpty(_RTWECHATPUSH.USER_NAME) ?
_RTWECHATPUSH.NICK_NAME : _RTWECHATPUSH.USER_NAME) + "已推送!");
}
}
}
}
}
catch (Exception ex)
{
LogUtil.WriteLog(ex, "", DateTime.Now.ToString("yyyyMMdd") + "_errorlog");
}
}
#endregion
}
}