2025-03-28 09:49:56 +08:00

260 lines
13 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.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
}
}