zoukankan      html  css  js  c++  java
  • 移动1099存储过程

    移动1099存储过程
     
    declare @phone_id as int
    declare @phone as varchar( 50)
    declare @province as varchar( 50) --号码归属省
    declare @price as decimal( 10, 2 )
     
    declare @cityareacode as varchar( 50) --号码归属市
    declare @callerid as int --拨号机
    declare @CenterId as int  --中心id
    declare @centerQueue as varchar( 1024) --中心队列
    declare @msgqueue as varchar( 1024) --信息队列
    declare @ccid as varchar( 50) --cid
    declare @yys int
    declare @owner_card_id as int --自己卡的ID
    declare @cardflag as varchar( 50) --卡类型
    declare @cardwantmoney as int  --卡面额
    declare @currentMinuteOfDay as int --已到账时间
    --wzhadd 如果时间小于60秒就返回空
    set @phone_id= 0
     
     
    set @owner_card_id= 0
    set @callerid= 0
     
    set @cardflag= ''
    set @phone = ''
    set @province= ''
    set @price = 0
    set @cityareacode= ''
    set @cardwantmoney= 0
     
    set @centerQueue = ''
    set @msgqueue = ''
    set @ccid= ''
     
    set @currentMinuteOfDay = DATEPART( hour, getdate())*60 +DATEPART( minute, getdate());
     
    -- -100 ,-200不走卡密的
    ----with(readpast):查询不到任何记录(记录被锁住将查询不到该记录);CROSS JOIN连接用于生成两张表的笛卡尔集。将两张表的情况全部列举出来
    --isEnable激活的
    select top 1 @yys=a .yys, @phone_id=a .id, @phone=phone ,@province= a.province ,
    @cityareacode=a .cityareacode, @cardflag=b .CardFlag, @cardwantmoney=b .cardwantmoney
    from do_phone a with (readpast)   cross join Setting_Card_Alloc b
    where a. id=118109241 and a. yys=0
    and a. currentmoney<a .wantmoney and a.dotype not in(- 100 ,-200 ) and a.isfinal =0
    and a. del_flag=0 and a. isowner=0 and a. maxendtime<dateadd (minute, 10,getdate ()) and b.isEnable =1
     
     
    --and dbo.isSTKCanProcess(a.province,a.cityareacode,a.yys,a.wantmoney-a.currentmoney)=0
    --关键词 DISTINCT 用于返回唯一不同的值。
    and b. cardflag in (select cardflag from Owner_CardFlag where cardmoney=b .cardwantmoney and isenable=1 and
    CardFlag in (select Distinct CardFlag from Owner_Card with( readpast) where state =0 and CardMoney=b. cardwantmoney))
    and a. yys=b .yys
    and ( a.Province =b. Province or b .Province is NULL)
    and ( a.cityareacode =b. city or b .city is NULL)
    and ( a.wantmoney -a. currentmoney>=cardwantmoney )
    and (
              (
                   a .wantmoney- a.currentmoney =b. doPhoneWantmoneyDecCurrentmoney and
                   (
                        (b. doPhoneWantmoneyLimit=1 and a. wantmoney=b .doPhoneWantmoneyDecCurrentmoney)
                        or
                        (b. doPhoneWantmoneyLimit=0 and a. wantmoney<>b .doPhoneWantmoneyDecCurrentmoney)
                        or
                        b .doPhoneWantmoneyLimit is NULL
                   )
              )    
              or
              b .doPhoneWantMoneyDecCurrentmoney is NULL
    )
     
     
    --15
    and ( a.province =b. Province or b .Province is null)
     
    and ( b.splitflag is NULL or b .splitflag like '%'+ cast(a .splitflag as varchar( 10))+',%' or b .splitflag like '%,'+cast (a. splitflag as varchar(10 ))+''
    or b. splitflag like '%,'+cast (a. splitflag as varchar(10 ))+',%')
    and (
         b .CardFlag<> 'chinaszx'
         or
         (
              b .CardFlag= 'chinaszx' and
              a .id not in
              (
              --DATEDIFF ( datepart , startdate , enddate )时间差
                   select phoneid from Setting_Card_PhoneDisable where datediff(s ,getdate(), MaxEnableTime)>0
              )
         )
    )
    and a. phone not in(SELECT phone FROM Do_Phone with (nolock) WHERE  state in( 1))
    --控制dbo.Setting_Card_Alloc中卡的可用时间段2010-11-29
    and ( datediff(minute ,CONVERT( varchar(100 ), GETDATE (), 23), getdate()) between b. TimeBegin and b.TimeEnd)
     
     
    --14.[dbo].[Setting_Disable_City] 里面的城市不处理 移动的表
    and   ( a.cityareacode not in( select city from [dbo].[Setting_Disable_City] where cardflag= 'chinaszx') or a.yys<> 0)
     
     
    --15 瀚鹏接口24小时内不准重复提交相同的号码
    --and ((b.cardflag='HP_V_CARD' and a.phone not in (select distinct phone from do_log with(nolock)
    -- where createtime>dateadd(n,-1450,getdate()) and cardflag='HP_V_CARD' and province in('天津','浙江','广东')))
    --or b.cardflag<>'HP_V_CARD')
    --错误次数大于0的不准走hp,jy,tl
    --and ((b.cardflag in ('HP_V_CARD','JY_YD_CARD','TL_YD_CARD') and a.errcount=0) or b.cardflag not in ('HP_V_CARD','JY_YD_CARD','TL_YD_CARD'))
    --dotype=-1003
    and (( b.cardflag in ( 'HP_V_CARD','JY_YD_CARD' ,'TL_YD_CARD', 'JY_DX_CARD','YX_YD_CARD' ) and a.errcount= 0)
    or ( b.cardflag not in ('HP_V_CARD' ,'JY_YD_CARD', 'TL_YD_CARD','JY_DX_CARD' ,'YX_YD_CARD'))
      or (b. cardflag in ('HP_V_CARD', 'JY_YD_CARD','TL_YD_CARD' ,'JY_DX_CARD', 'YX_YD_CARD')
       and (a. dotype=-1003 or a. WantMoney-a .CurrentMoney= 5)))
    --and ((b.cardflag in ('JY_YD_CARD','TL_YD_CARD') and a.errcount=0) or (b.cardflag not in ('JY_YD_CARD','TL_YD_CARD'))
    --or (b.cardflag in ('JY_YD_CARD','TL_YD_CARD') and a.dotype=-1003))
     
    --17
    --exists (sql 返回结果集为真)
    --not exists (sql 不返回结果集为真)
    and not exists(select 1 from dbo .Setting_CardFLag_Disable_PhoneChannel s where s.FromChannel= a.from_channel and s. FromChannelChild=a .from_channel_child and b.CardFlag =s. CardFlag and isEnable= 1)
    and not exists(select 1 from dbo .Setting_CardFLag_Disable_PhoneChannel s where s.FromChannel= a.from_channel and s. FromChannelChild is null and b.CardFlag =s. CardFlag and isEnable =1)
    and a. Province in
    (
                   SELECT PhoneProvince
                            FROM Setting_Caller_PhoneProvinceCityArea_OperateFlag_Relate c
                           WHERE (c .yys= a.yys ) and (c .isenable = 1) AND
                   (
                   (c. PhoneProvince + c .OperateFlag IN
                                (SELECT d .PhoneProvince + d.OperateFlag
                                FROM Setting_CardFlag_PhoneProvinceCityArea_OperateFlag_Relate d
                                WHERE (d .yys= a.yys ) and (d .CardFlag = b.CardFlag ) AND (d .PhoneProvince = a.province ) AND  ( d.ProvinceOrCityAreaCode = 0)
                        )
                   )
                   OR
                           (c. PhoneCityAreaCode + c .OperateFlag IN
                                (SELECT e .PhoneCityAreaCode + e.OperateFlag
                                FROM Setting_CardFlag_PhoneProvinceCityArea_OperateFlag_Relate e
                               WHERE  (e .yys= a.yys ) and( e.CardFlag = b. CardFlag) AND ( e.PhoneCityAreaCode = a.CityAreaCode) AND (e. ProvinceOrCityAreaCode = 1 )
                        )
                             )
                   )
                       
                   and c. callerid in (select callerid from Setting_Caller where isenable=1 and activestate= 0 )
                  
    )
    order by a.maxendtime ,b. Urgency desc
    print '@province=' +@province;
    print '@cardflag=' +@cardflag;
    print '@cardwantmoney=' +cast( @cardwantmoney as varchar(20 ));
    return;
     
    if(@phone_id <>0)
    begin
         select TOP 1 @callerid=CallerID, @msgqueue=msgqueue ,@CenterId= Centerid,@centerQueue =CenterQueue, @ccid=ccid
         from(
         SELECT TOP 1 CASE province WHEN @province THEN 0 ELSE 1 END AS isThisProvince, *
         FROM Setting_Caller z
         WHERE (z .ActiveState = 0)  and
              --(z.callerid<>1001) and
                (z. isEnable = 1 ) and
                (z. CallerID IN
                     (
                   SELECT CallerID
                            FROM Setting_Caller_PhoneProvinceCityArea_OperateFlag_Relate a
                           WHERE (a .yys= @yys) and ( a.isenable = 1) AND
                   (
                   (a. PhoneProvince + a .OperateFlag IN
                                (SELECT b .PhoneProvince + b.OperateFlag
                                FROM Setting_CardFlag_PhoneProvinceCityArea_OperateFlag_Relate b
                                WHERE  (b .yys= @yys) and ( b.CardFlag = @cardFlag) AND (b. PhoneProvince = @province) AND   (b .ProvinceOrCityAreaCode = 0)
                        )
                   )
                   OR
                           (a. PhoneCityAreaCode + a .OperateFlag IN
                                (SELECT c .PhoneCityAreaCode + c.OperateFlag
                                FROM Setting_CardFlag_PhoneProvinceCityArea_OperateFlag_Relate c
                               WHERE  (c .yys= @yys) and(c. CardFlag = @cardFlag ) AND (c .PhoneCityAreaCode = @cityareacode) AND (c .ProvinceOrCityAreaCode = 1)
                        )
                             )
                   )
                     )
                 )
                 and Centerid not in (
                        select distinct Centerid from setting_centerid_disable_phoneseg where @phone like phoneseg+'%'
                 )
         --ORDER BY CallerLevel,isThisProvince,ActiveTime
         --张明峰临时修改
         --ORDER BY case when callerid>=858 and callerid<866 then 1 else 2 end, CallerLevel,isThisProvince,ActiveTime
         --20110921修改,超时的号码有限走中心12拨号机
         ORDER BY case when Centerid= 3 then 1 else 2 end , CallerLevel, isThisProvince,ActiveTime
         ) as z
     
         if(@callerid <>0)
         begin
              if(@cardflag ='chinaszx')
                   begin
                   --取一个字符串的前若干位 select left('abcdefg', 3) 输出: abc 也可以用select left(FIELD, 3) from TABLE
                   --输出这个表中所有数据FIELD列的前三个字符
                        if(@cardwantmoney =20 and @yys=0 and left( @phone,2 )<>'15' and @province<> '青海' and @province<>'西藏' and @province<> '广东')
                        begin
                             select top 1 @owner_card_id=id ,@price= OurFeeMoney
                             from owner_card
                             where state =0 and cardflag=@cardflag and cardmoney= @cardwantmoney
                             --zmf update 20110501
                             --and left(cardpass,3)<>'151'
                             and dbo.[isCardCanChangePhoneWithProvinceAndCity_2](cardflag ,cardid, cardpass,@phone ,@province, @cityareacode)=1
                             and left( cardpass,2 ) not in
                             (
                                  select passwordleft2 FROM Setting_CardGroup_SZX_ProvinceDisable with(nolock ) WHERE MaxEnableTime > dateadd( hour,1 ,getdate()) and isEnable = 1 and Disable_Province=@Province
                             )
                        end
                        else
                        begin
                             select top 1 @owner_card_id=id ,@price= OurFeeMoney
                             from owner_card
                             where state =0 and cardflag=@cardflag and cardmoney= @cardwantmoney
                             and dbo.[isCardCanChangePhoneWithProvinceAndCity_2](cardflag ,cardid, cardpass,@phone ,@province, @cityareacode)=1
                             and left( cardpass,2 ) not in
                             (
                                  select passwordleft2 FROM Setting_CardGroup_SZX_ProvinceDisable with(nolock ) WHERE MaxEnableTime > dateadd( hour,1 ,getdate()) and isEnable = 1 and Disable_Province=@Province
                             )
                        end
                        --order by dbo.[isCardCanChangePhoneWithProvinceAndCity](cardpass,@phone,@province,@cityareacode) desc
                       
                       
                        -- order by PhoneId desc
                        if(@owner_card_id <=0)
                        begin
                             insert into Setting_Card_PhoneDisable( Phoneid,Phone ,MaxEnableTime, cardflag,cardwantmoney ) values (@phone_id, @phone,DATEADD ([minute], 1,GETDATE ()),'chinaszx', @cardwantmoney)
                        end
     
                   end
              else
                   begin
                        print ''
                        select top 1 @owner_card_id=id ,@price= OurFeeMoney from owner_card where state =0 and cardflag=@cardflag and cardmoney=@cardwantmoney
                  
     
                   end
         end
    end
     
    Print @phone_id
    Print @cardflag
    Print @cardwantmoney
    Print @callerid
    Print @owner_card_id
    Print @price
  • 相关阅读:
    flex,flashDevelop和gumbo编译器比较
    用侦听器的useCapture属性决定事件哪个阶段做处理
    关于显示对象的parent,stage属性的说明
    ASP.NET MVC 1.0 Result 几何?
    MVC Controller与ActionResult的返回值
    C# 可空类型和空接合运算符(??)
    C# 2.0新特性与C# 3.5新特性
    创建返回Excel的自定义ActionResult
    jQuery getJSON()函数及getScript()函数
    如何使用ASP.NET MVC的Filter
  • 原文地址:https://www.cnblogs.com/ComputerVip/p/11624734.html
Copyright © 2011-2022 走看看