移动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

移动1099存储过程

上一篇:没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活


下一篇:springboot-SpringApplication