260 lines
13 KiB
C#
260 lines
13 KiB
C#
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 方法 -> 推送订单核销通知
|
||
/// <summary>
|
||
/// 推送订单核销通知给用户
|
||
/// 主订单或子订单二选一
|
||
/// </summary>
|
||
/// <param name="transaction">事务对象</param>
|
||
/// <param name="salebillChild">子订单信息
|
||
/// 与主订单信息二选一</param>
|
||
/// <param name="salebill">主订单信息
|
||
/// 与子订单信息二选一</param>
|
||
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<MSPB.RTWECHATPUSH> 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 方法 -> 代金券核销结果推送
|
||
/// <summary>
|
||
/// 代金券核销结果推送
|
||
/// </summary>
|
||
/// <param name="transaction"></param>
|
||
/// <param name="couponSend"></param>
|
||
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<MSPB.RTWECHATPUSH> 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
|
||
}
|
||
} |