如何把购买后自动增加积分的这个动作放到会员确认收货以后呢?

2016-07-07 15:06 来源:www.chinab4c.com 作者:ecshop专家

我发现一个逻辑上的不合理问题,可能是因为我不会设置吧?
大家谁能帮我解决呢-------如何把购买后自动增加积分的这个动作放到会员确认收货以后呢?

我在这里做了N个测试,出现了一个很危险的问题,如果设置每个物品都可以完全是用积分购买(或者使用积分上线过大)的话,如果一个心存不轨的会员首先购买一个4200块钱的商品(iphone),系统会赠给他4200积分,当订单生成的同时积分就已经给该会员增加上了,这个时候他还没有确认收货,这个时候他再用积分购买一个足够用4200积分就能购买的物品…………然后他再申请iphone退货,系统本来应该扣除他的4200积分,而会员已经使用了那些积分,ECSHOP也不会给任何提示,而且积分也不会变为负值(其实就是变负值也没用),这样的话大家觉得是不是存在一个很严重的问题呢?
当网站业务量很大的时候,可能就会出现这种问题~

还是说可以自定义增加积分的时间?请高手解决

回答:
大家明白我这个笨人的意思了么?

系统设置里没发现有定义增加积分动作触发条件的选项!

如果这真是个逻辑问题,希望能赶快升级解决之,或者有那个高手修改了源程序,弥补了这个不算漏洞的漏洞

重要!一直关注,请尽快解决!

顶一下,同求解决方案

json,能大概说一下是怎么改的么?我有在order.php里找到添加积分的那段代码,只是不知道如何放到订单“收获确认”那个状态再触发!
试了试,没用,郁闷的要死~~

能指点一下么?感激ING

我也是遇到,这个问题,json,我不知道你的联系方式,如果可以的话,你加我:qq:364636690,不胜感激,谢谢。

在flow.php elseif() 'done'这个判断里先做修改。然后 在后台在做修改。只能提供思路 具体代码还得自己来研究一下

我以为在order.php里面找线索呢?难道不是?
暂时在改模板状态中,回头再来解决这个问题!

如果小弟解决了的话就共享代码,如果没解决,希望高手多多指点!

激动的还没来得及看您发的代码就想先感谢您啊~

一会照着您的指示去修改一下!

PS:您没有QQ?呵呵,果然是高人啊,淡出凡世~

试了试,没成功~~是不是哪里出错了呢?唉~自己太菜鸟了

josn,我好好研究了一下你贴出来的代码,确实有点启发,你把后台修改“未发货”的情况也考虑进去了,我只是没找到订单没确认的情况下后台修改“退货”的情况下屏蔽积分减少!

呵呵,先不说上面的疑问,我按照你提供的方法试了试,还是没成功,不知道问题出在哪!

我估计问题出在修改文件user.php上面,能再提示一下么?

发现ECSHOP2.61认定为发货以后就结束了整个交易,这样不很合理!

我在订单列表里搜索订单状态,发现搜索“已完成”的结果就包涵了所有发货的订单,包括没有收货确认的订单…………

唉,希望下一个版本能更加的注重细节哟~期待

暂时还是没有完全修改成功,但是由于JsoN的提示,拓宽了思路
JSON提供的代码里,修改user.php文件的部分,少了几句代码,使得某些数组没初始化!
以下是小弟修改的那部分的代码:
在user.php文件里找到下面这段代码修改为:


  1. /* 确认收货 */
  2. elseif ($action == 'affirm_received')
  3. {
  4. include_once(ROOT_PATH . 'includes/lib_transaction.php');

  5. //-----------------------------------------------------------------------------------------------------
  6. include_once(ROOT_PATH . 'includes/lib_order.php');
  7. //-----------------------------------------------------------------------------------------------------

  8. $order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0;

  9. if (affirm_received($order_id, $user_id))
  10. {

  11. //------------------------------------------------------------------
  12. //获得该订单详细信息(包括积分情况)
  13. $order=get_order_detail($order_id,$user_id);

  14. //如果订单用户不为空,计算积分,并发给用户;发红包
  15. if($order['user_id'] > 0)
  16. {
  17. //取得用户信息
  18. $user = user_info($order['user_id']);
  19. // 计算并发放积分
  20. $integral = integral_to_give($order);
  21. log_account_change($order['user_id'], 0, 0, intval($integral['rank_points']), intval($integral['custom_points']), sprintf($_LANG['order_gift_integral'], $order['order_sn']));
  22. //发放红包
  23. send_order_bonus($order_id);
  24. }
  25. //------------------------------------------------------

  26. ecs_header("Location: user.php?act=order_list\n");
  27. exit;
  28. }
  29. else
  30. {
  31. $err->show($_LANG['order_list_lnk'], 'user.php?act=order_list');
  32. }
  33. }
复制代码


与源程序不一样的部分我已经用注释隔离起来了,希望大家能看的更清晰!

这样改的话用户点击“确认收货”的话积分就成功的增加了!

现在问题又出现了,管理员后台处理订单状态的修改,怎么做到完美的解决这个因为改变积分增加时间而带来的一系列改变!
例如管理员在处理退货的时候分两种情况对积分的回收处理,一种是用户没确认收货时(没加积分);另一种是用户已确认收货后(已加积分)…………类似的状况还出现在管理员修改订单的未发货,已收货等等涉及的积分的动作,所以这个问题仍不算解决,继续努力中!