用户发表评论,自动给予积分

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



最近对网站改了很多的功能,有增加商品自定义单位,然后价格后面可以5元/斤这样的显示方式,还有就是积分这块,以及销售统计查询.修改积分这块相对简单点,就共享下给需要的人.
1.找到comment.php文件,用DW打开
$result = $GLOBALS['db']->query($sql);后面增加代码

// 统计同一个商品评论的次数
$sql = "select count(*) as count from".$GLOBALS['ecs']->table('comment')."where id_value=".$cmt->id;
$point1=$GLOBALS['db']->getOne($sql);
//统计同一个商品同一个人评论的次数
$sql = "select count(*) as count from".$GLOBALS['ecs']->table('comment')."where id_value=".$cmt->id." and "."user_id =".$user_id;
$point2=$GLOBALS['db']->getOne($sql);
/* 同一个商品评论前10个人给予11到15的积分,10到30的给予6到10积分,30到100给予3到5积分,100以上给1到2的积分,同一个商品同一个人第一次按正常给积分,第二次按最低给金粉,也就是第二次*只给1到2积分*/

if($point1<=10 && $point2<2)
{$add_point=rand(11,15);
$sql='UPDATE '. $GLOBALS['ecs']->table('users') . ' SET pay_points=pay_points+'.$add_point. ' WHERE user_id = ' . $user_id;
$GLOBALS['db']->query($sql);}
else if ($point1>10 && $point1<=30 && $point2<2)
{$add_point=rand(6,10);
$sql='UPDATE '. $GLOBALS['ecs']->table('users') . ' SET pay_points=pay_points+'.$add_point. ' WHERE user_id = ' . $user_id;
$GLOBALS['db']->query($sql);}
else if($point1>30 && $point1<=100 && $point2<2)
{$add_point=rand(3,5);
$sql='UPDATE '. $GLOBALS['ecs']->table('users') . ' SET pay_points=pay_points+'.$add_point. ' WHERE user_id = ' . $user_id;
$GLOBALS['db']->query($sql);}
else
{$add_point=rand(1,2);
$sql='UPDATE '. $GLOBALS['ecs']->table('users') . ' SET pay_points=pay_points+'.$add_point. ' WHERE user_id = ' . $user_id;
$GLOBALS['db']->query($sql);}

大家也可以修改成自己给的积分条件,$add_point=rand()这个是随机函数,可以设成固定的.我是设成随机,自己设定好了.
测试发现有些购买的商品可以评论,有些商品却不能评论,提示只有购买的商品才可以评论,后来在论坛上找到解决的办法.
分别是206,177,116,87行改成
" AND (o.order_status = '" . OS_CONFIRMED . "' OR o.order_status = '".OS_SPLITED . "') ".

这样 就可以了,因为订单完成的时候有些操作跳过了,直接完成了,造成订单状态不一致,导致购买了不能评论的结果.

回答:
那个高手可以做一个订单详细页面,增加一列"我要评论",点击可以直接进入评论页面,这样子会更好,我有试着去调用comment.lbi,但会提示没有购买记录,不能评论,应该是值没有传递给comment.php造成的.,我现在是采用直接跳转到相应商品页面去评论,但不是很方便,也不专业.

可以直接跳转到商品页面里的锚链接

直接跳转到商品页面,我现在就做了,不过不是很好.希望有更好的

给楼主顶上去!!

测试过,积分是加上了,但后台—会员帐户变动明细,这里没有记录啊,咋解决呢?

过来看看




没做后台呢,自动加的,还要后台看明细啊,而且很难做到呢,毕竟只随机加的积分,除非还要做个跟踪,你可以试着再评论那边增加一个字段为积分,把每次的积分变动加入进去,然后去调用应该可以。我自己的网站就算了,不想加这个功能。




明细我加进去了,总算搞定了,我这个比较简单,就评价前5自动加10分

// 统计同一个商品评论的次数
$sql = "select count(*) as count from".$GLOBALS['ecs']->table('comment')."where id_value=".$cmt->id;
$point1=$GLOBALS['db']->getOne($sql);
//统计同一个商品同一个人评论的次数
$sql = "select count(*) as count from".$GLOBALS['ecs']->table('comment')."where id_value=".$cmt->id." and "."user_id =".$user_id;
$point2=$GLOBALS['db']->getOne($sql);
/* 同一个商品评论前5个人给予10积分同一个商品同一个人第一次按正常给积分,第二次不给分*/
if($point1<=5 && $point2<2)
{$add_points=10;
$change_desc = '评价得积分';
log_account_change($user_id, $user_money, $frozen_money, $rank_points, $add_points, $change_desc, ACT_ADJUSTING);
}

来看看!支持下!


恩啦,昨晚我也回去看了下代码,积分变动的表格是account_log,只需要在积分增加的下面增加更新这个表格的变动到account_log表格就可以了。
我是菜鸟呢,ecshop里的很多函数不会用,都是直接写的,呵呵。
log_account_change()是一个sql变动函数吗?

回复babytutu
恩啦,昨晚我也回去看了下代码,积分变动的表格是account_log,只需要在积分增加的下面增加 ...
lenesony 发表于 2011-12-2 19:16


呵呵,函数基本都在include/lib_clips.php这个文件里,其实也就是写了句SQL,把值调用出来,用的时候方便点而已

感到不错,牡丹鲜切花,支撑了

这个还是不错的·········