• 4422阅读
  • 91回复

2019年1月24日:修改“忠实会员”勋章颁发条件 [复制链接] [手机版]

上一主题 下一主题
离线zhangjingyu

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2019-01-24 12:20:56 星期四
关键词: 论坛莘祺网
之前修改过社区居民勋章的颁发条件,由原来的连续登录天数条件判断改为发帖数达到100。
2016年3月18日:莘祺网“社区居民”勋章重生记

这个忠实会员勋章和之前的社区居民勋章(现“居民”非彼“居民”)一样,自动颁发有点儿小问题。这个勋章是系统自带的,自动发放,自动回收,然而系统通知就有些让人莫名其妙了:

系统通知  (2019-01-24 14:53)
恭喜您获得新勋章
恭喜您获得了 忠实会员 勋章
颁发原因:您的连续登录天数达到了7,特发此勋章以兹鼓励。

系统通知  (2019-01-24 11:52)
勋章回收通知
您的 忠实会员 勋章被回收
回收原因:您的连续登录天数低于勋章设定值7

系统通知  (2019-01-24 10:13)
恭喜您获得新勋章
恭喜您获得了 忠实会员 勋章
颁发原因:您的连续登录天数达到了7,特发此勋章以兹鼓励。

系统通知  (2019-01-23 23:47)
勋章回收通知
您的 忠实会员 勋章被回收
回收原因:您的连续登录天数低于勋章设定值7

系统通知  (2019-01-23 22:05)
恭喜您获得新勋章
恭喜您获得了 忠实会员 勋章
颁发原因:您的连续登录天数达到了7,特发此勋章以兹鼓励。

删除系统通知  (2019-01-22 21:25)
勋章回收通知
您的 忠实会员 勋章被回收
回收原因:您的连续登录天数低于勋章设定值7

系统通知  (2019-01-21 11:07)
恭喜您获得新勋章
恭喜您获得了 忠实会员 勋章
颁发原因:您的连续登录天数达到了7,特发此勋章以兹鼓励。

每天不是回收,就是颁发,通知确实繁复了些(目前论坛运行在本机php环境中,不排除由于开关机而导致的所谓服务器时间问题而引起通知频繁发布的可能性)。后台明明显示勋章有效期为永久,却经常回收再颁发,真搞不懂什么逻辑。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 沙发  发表于: 2019-01-24 12:31:16 星期四  点亮(0)
apps/medal/action/behavior.php
  1. } else { //自动发放
  2.     $attention = $notice = $nowhave = '';
  3.     if (in_array($medalInfo['associate'], array('continue_login', 'continue_post', 'continue_thread_post'))) {
  4.         //获取用户行为信息
  5.         $behaviorService = L::loadClass('behaviorService', 'user'); /* @var $medalService PW_MedalService */
  6.         $behavior = $behaviorService->getBehaviorStatistic($winduid, $medalInfo['associate']);
  7.         $num = ($behavior) ? $behavior['num'] : 0;
  8.         $needNum = $medalInfo['confine'] - $num;
  9.         if ($medalInfo['associate'] == 'continue_login') {
  10.             $attention = '<p class="gray">注意:1天不登录,现有天数会减1</p>';
  11.             $notice = ($needNum > 0) ? '你还需连续登录'.$needNum.'天' : '重新登录一次即可获得此勋章';
  12.             $notice = $notice . '(现有天数:'.$num.')';
  13.             $nowhave = '(现有连续登录天数:'.$num.')';
  14.         } elseif ($medalInfo['associate'] == 'continue_thread_post') {
  15.             $attention = '<p class="gray">注意:1天不登录,现有连续登录天数会减1</p>';
  16.             $notice = ($needNum > 0) ? '你还需连续发主题'.$needNum.'天' : '再发1主题帖即可获得此勋章';
  17.             $notice = $notice . '(现有天数:'.$num.')';
  18.             $nowhave = '(现有连续主题天数:'.$num.')';
  19.         } elseif ($medalInfo['associate'] == 'continue_post') {
  20.             $attention = '<p class="gray">注意:1天不发帖,现有天数会减1</p>';
  21.             $notice = ($needNum > 0) ? '你还需连续发帖'.$needNum.'天' : '再发1帖即可获得此勋章';
  22.             $notice = $notice . '(现有天数:'.$num.')';
  23.             $nowhave = '(现有连续发帖天数:'.$num.')';
  24.         }
  25.     } else {

lib/medal/medalservice.class.php
  1. /**
  2.      * 获取自动勋章可以设置的相关类型
  3.      * @return array
  4.      */
  5.     function getAutoMedalType() {
  6.         return array(
  7.             'continue_login'=>'连续登录天数',
  8.             'continue_post'=>'连续发贴天数',
  9.             'continue_thread_post'=>'连续发主题天数',
  10.             'post'=>'发帖数',
  11.             //'thread_post'=>'主题数',
  12.             'shafa'=>'抢沙发数',
  13.             'fans'=>'粉丝数',
  14.         );
  15.     }


lib/user/behaviorservice.class.php
  1. /**
  2.      * 获取所有的类型
  3.      * @return array
  4.      */
  5.     function getBehaviorTypes() {
  6.         return array(
  7.             1=>'continue_login',        //'连续登录天数'
  8.             2=>'continue_post',            //'连续发贴天数'
  9.             3=>'continue_thread_post',    //'连续发主题天数'
  10.             4=>'continue_punch',        //'连续打卡天数'
  11.             5=>'continue_user_upgrade',    //'用户升级记录'
  12.             6=>'today_add_follow',        //'记录今日关注'
  13.             
  14.         );
  15.     }
相关数据表:pw_member_behavior_statistic
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 板凳  发表于: 2019-01-24 16:06:17 星期四  点亮(0)
没回帖,不表示没在思考。 今天一直在研究这个问题,看了几个相关文件,慢慢琢磨里面代码的意思,但还是看不懂啊,也没弄明白它是怎么自动回收的?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 地板  发表于: 2019-01-24 16:48:27 星期四  点亮(0)

这个忠实会员勋章和之前的社区居民勋章一样,都是通过连续登录天数进行自动发放、回收的,之前的社区居民勋章有问题,这个似乎也是同样的问题,所以,只好修改颁发条件了(没研究出来解决方法)。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 4楼 发表于: 2019-01-24 16:50:51 星期四  点亮(0)
就改为和社区劳模一样的连续发帖天数条件判断吧。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 5楼 发表于: 2019-01-24 16:58:33 星期四  点亮(0)
数据表pw_medal_info的associate字段由continue_login直接修改为continue_post,而不是像上次的社区居民删除后重新添加。

原社区劳模颁发条件“连续发帖7天即可获得此勋章.”改为20天,这个忠实会员为50天。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 6楼 发表于: 2019-01-24 17:03:59 星期四  点亮(0)
如此,需要修改会员信息表pw_members里面的medals字段(会员勋章),需要删除包含14(勋章id,忠实会员)和17(社区劳模)的数据。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 7楼 发表于: 2019-01-24 17:14:46 星期四  点亮(0)
为保险起见,先备份数据库,完成。 因为我准备用sql语句执行替换,原因是数据稍微有点儿多,手工修改太慢了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 8楼 发表于: 2019-01-24 17:16:42 星期四  点亮(0)
  1. UPDATE pw_members SET medals= replace (medals,'13','')

影响列数: 357 (查询花费 0.0155 秒)
SQL 查询:
UPDATE pw_members SET medals = REPLACE( medals,  '13',  '' )
这个勋章id为13的是什么勋章,不记得了,数据表里没有,已经删除了,就先拿这个试试吧(虽然勋章中心已经没有这个勋章了,但数据表里有已经获得该勋章的记录信息)。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 9楼 发表于: 2019-01-24 17:19:29 星期四  点亮(0)
继续:
影响列数: 21 (查询花费 0.0110 秒)
SQL 查询:
UPDATE pw_members SET medals = REPLACE( medals,  ',14',  '' )
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!