【转载】DEDE与DISCUZ整合积分同步,积分extcredits1(积分),extcredits2(金钱)

PS:例如CI整合了DEDE或DISCUZ后,获取会员ID信息,即可再查询会员表(*_member)获取会员所有信息。

最近开发一个平台,使用的dede的cms已经discuz论坛.在整合后发现,uccenter里面的积分兑换功能没有调配成功,如何做到论坛和网站的会员积分是同步的呢?在两者的官网上找了很久也没有找到我想要的东西.只好自己想办法.
在不修改两者代码的基础上,我想到了mysql的触发器.使用触发器的功能不就可以解决了吗?但是后来想了想总觉得有点死循环的意思.dede的修改触发discuz的积分,反正得触发器不是又返回来触发dede了吗?这不是个死循环吗?要我mysql的触发器我可以说是第一次使用.死马当活马医.在本机见了一个测试数据库.试试吧.不试试怎么知道呢?  
表  1
bbs_members(论坛用户表)
字段
uid(用户id),extcredits1(积分),extcredits2(金钱)

pre_common_member_count

表  2
dede_member
字段
mid(用户id),scores(积分),money(金钱) 经过一顿调整,原本以为需要4个字段写4个触发器的.只写了2个触发器就解决了.不知道为什么.触发器不是针对字段的吗?怎么针对记录了?我不是很明白,如果你知道,可以告诉我.我保持学习的态度.
废话不说了,放出触发器的代码吧.
CREATE   TRIGGER   tr_bbs_dede   AFTER   update   ON  bbs_members  
FOR EACH ROW  
BEGIN  
    set @scores='0';
    set @money='0';
    select scores,money into @scores,@money from dede_member where mid=NEW.uid;
    if @scores!=NEW.extcredits1 then
        update dede_member set scores=NEW.extcredits1 where mid=NEW.uid;
   end if;
    if @money!=NEW.extcredits2 then
        update dede_member set money=NEW.extcredits2 where mid=NEW.uid;
   end if;
END;
CREATE TRIGGER te_dede_bbs AFTER UPDATE ON dede_member  
FOR EACH ROW  
BEGIN  
    set @extcredits1='0';
    set @extcredits2='0';
    select extcredits1,extcredits2 into @extcredits1,@extcredits2 from bbs_members where uid=NEW.mid;
    if @extcredits1!=NEW.scores then
        update bbs_members set extcredits1=NEW.scores where uid=NEW.mid;
    end if;
    if @extcredits2!=NEW.money then
        update bbs_members set extcredits2=NEW.money where uid=NEW.mid;
    end if;
END;
触发器建立后,发现能够实现同步了.不过此方法建议整合开始,双方积分都为0的时候.呵呵.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值