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 } }