首页 > 其他分享 >微信储值卡订单过期存储过程_版本2

微信储值卡订单过期存储过程_版本2

时间:2022-10-31 18:14:18浏览次数:43  
标签:VCSTL 过期 微信 BID 储值卡 -- WU nvarchar 1000

 微信储值卡订单过期存储过程_版本2

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        <Author,,jankie>
-- Create date: <Create Date,,2017-09-12 10:26>
-- Description:    <Description,,查询订单是否过期>
--如果订单过期会自动设置IsDealWith为已处理。并且将Status设置为Closed_OutTime+'当时订单的状态'
-- =============================================

/*
exec [dbo].[IsClosedStoredCardOrders]  
@PageNumber=0,
@PageSize=10,
@BID=957,
@OpenIDWhere='  '  ,
@StatusWhere='  ',
@IsDealWithWhere=' ',
@CardIDWhere='  ', 
@TradeIdWhere='  ',
@CreateDateWhere='',
@OuterIDWhere='   ',
@NickNameWhere=''
*/

ALTER PROCEDURE [dbo].[IsClosedStoredCardOrders] 
@PageNumber nvarchar(1000),--当前页,从开始
@PageSize nvarchar(1000),
@BID nvarchar(1000),
@OpenIDWhere nvarchar(1000),--用户OpenID,后台不用分OpenID(所以前面传值得时候为空),手机端要分OpenID(要把值传过来)
@StatusWhere nvarchar(1000),--订单支付状态
@IsDealWithWhere nvarchar(1000),--订单处理状态
@CardIDWhere nvarchar(1000),--卡号
@TradeIdWhere nvarchar(1000),--订单号
@CreateDateWhere nvarchar(1000),--下单时间段
@OuterIDWhere nvarchar(1000),--微信交易号
@NickNameWhere nvarchar(1000)--微信昵称
AS
BEGIN
    declare /*声明标量*/
    @TradeID varchar(100),
    @TimeNow datetime,  --当前时间
    @Status varchar(100),
    @OutTime datetime,
    @OrderByWhere nvarchar(100),--排序条件
    @sqlRow nvarchar(3000)    
    set @TimeNow=getdate()
    set @OrderByWhere='2'---排序条件,1是CreateDate升序asc,是CreateDate降序desc


            set @sqlRow =N'          
            select Status,TradeID,OutTime from (
                select Row_number() over(order by CreateDate desc
                                ) as rownum,VCSTL.*,WU.NickName,WU.PicUrl,WU.RealName 
                from ValueCardSaveTradeLog as VCSTL    
                left join  WxUsers as WU 
                on VCSTL.CardID=WU.CardID and VCSTL.BID=WU.BID where VCSTL.TradeID=VCSTL.TradeID
                and VCSTL.BID=convert(int,'+@BID+')
                '+@StatusWhere+' '+@IsDealWithWhere+' '+@CardIDWhere+' '+@TradeIdWhere+' 
                '+@CreateDateWhere+' '+@OuterIDWhere+' '+@NickNameWhere+' '+@OpenIDWhere+'
            )as t1 where t1.rownum>=convert(int,'+@PageNumber+')*convert(int,'+@PageSize+')+1 
            and t1.rownum<=((convert(int,'+@PageNumber+')+1)*convert(int,'+@PageSize+'))  
            '
            --创建临时表
            Create Table #temp1(Status nvarchar(50),TradeID nvarchar(50),OutTime datetime)
            insert into #temp1  exec sp_executesql @sqlRow 

            begin transaction; --开始执行事务                
            
            --查询所有已经过期的订单,更新过期订单的字段
            declare updateOrder_Cursor cursor for  --声明游标
    
            select * from #temp1 --查询临时表数据,进行游标功能
                        
            OPEN updateOrder_Cursor   --打开游标
            FETCH NEXT FROM updateOrder_Cursor    --获取游标的下一行数据
            into 
            @Status,  --使变量获得当前游标指定行的订单状态
            @TradeID,   --使变量获得当前游标指定行的订单的单号
            @OutTime  --使变量获得当前游标指定行的订单的过期时间
            
            ----------------------外部游标(主订单)begin --------------------------
            WHILE (@@FETCH_STATUS = 0)    --FETCH语句执行成功            
            begin    
                if(@OutTime<=@TimeNow)
                  begin --outtime
                    --如果不是手动关闭或者还没关闭就开始执行语句,其他的就让游标跳过不更新
                    if(substring(ltrim(rtrim(@Status)),0,7)='NotPay' 
                        --or substring(ltrim(rtrim(@Status)),0,16)='HadPayNotInsert' --后面修改的需求,已付款待充值不能过期关闭,因为这是有问题的订单,只能手动关闭。
                        or substring(ltrim(rtrim(@Status)),0,10)='FinishPay')
                    begin  --substring 
                    --更新订单状态Status,IsDealWith
                    update ValueCardSaveTradeLog set Status='Closed_OutTime_'+@Status,IsDealWith='1' where TradeID=@TradeID
                    end --substring
                  end  --outtime
            FETCH NEXT FROM updateOrder_Cursor   --获取游标的下一行(主订单)
            into 
            @Status,  --使变量获得当前游标指定行的订单状态
            @TradeID,       --是变量获得当前指定行的订单单号
            @OutTime  --使变量获得当前指定行的过期时间
            end
            CLOSE updateOrder_Cursor   --关闭游标(主订单)
            DEALLOCATE updateOrder_Cursor   --释放游标(注订单)
            drop table #temp1 --释放临时表

            ----------------------外部游标(主订单)end --------------------------
            if(@@error>0)
             begin
              rollback transaction --事务回滚-4
              --print '-4'
              return -4
             end
            else
             begin
              commit transaction  --事务提交-3
              --print '-3'
              return -3
             end        
    
END
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

 

搜索

复制

标签:VCSTL,过期,微信,BID,储值卡,--,WU,nvarchar,1000
From: https://www.cnblogs.com/jankie1122/p/11118721.html

相关文章

  • charles抓不到ios微信小程序的包的原因!!
    如果其他配置全部都弄好了,能抓到网页和的app的包但是微信小程序抓不到,主要原因:  第二个问题,可能是没有允许应用:更改配置->允许其他应用->找到charles的路径 ......
  • 最全XCode 开发证书配置(证书过期后的恢复)教程
    3月底的时候,准备更新苹果版,却发现,几个月没有开发,XCode上证书都过期了。怎么弄全忘了,简直没有勇气面对。过了一个多月,今天终于有点空闲时间,打算更新下证书,又发现,苹果开发......
  • ShareSDK微信分享时的坑
    /****@paramcontext*@paramtitle标题*@paramtext标题下面右边文字*@paramimagePath标题下面左边图片*@paramtitleUrl整个消息的URL地址*/publicsta......
  • 微信小程序引入VantUI组件出错
    微信小程序引入VantUI组件出错使用微信小程序引入VantWeappUI组件今天我在用微信小程序时,想借助Vant-UI快速开发页面时,发现按照Vant-ui上的说明一步一步下来,竟然报错了,解......
  • Python接入微信公众号Token验证
    注意点官方示例是Pthon2版本的,如果是Python3版本需要有改动验证成功返回echostr要是数字格式的公众号侧配置(公众号后台-基本配置)服务器侧配置代码部分......
  • SoringCloud(四) - 微信获取用户信息
    1、项目介绍2、微信公众平台和微信开放文档2.1微信公众平台2.1.1网址链接https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index......
  • 手记系列之一 ----- 关于微信公众号和小程序的开发流程
    前言本篇文章主要介绍的调用微信公众号和小程序之后的开发流程,主要以实现步骤为主。前提准备已经申请了微信公众号和小程序(由于官方文档写的很详细,这里就不在进行说明......
  • SoringCloud(四) - 微信获取用户信息
    1、项目介绍2、微信公众平台和微信开放文档2.1微信公众平台2.1.1网址链接https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index......
  • C# 开发微信小程序 系列(1) 接入服务器 验证token
    目前官方小程序验证只有PHP的,暂未发现C#版本的 ,本人研究后贴出来大家分享下。有不懂的请留言,本人会尽快回复的:  废话不多说直接上代码:   ///<summary>//......
  • python调用微信公众号发布文章返回40097
    原因:data参数写法有误,应该将data参数包裹并json.dupms(data)处理;正确写法:importrequestsimportjsonurl="https://api.weixin.qq.com/cgi-bin/freepublish/batc......