magento 客户等级自动提升并且发送邮件
2013-07-29 15:32
405 查看
前几天遇到一个客户等级的需求,需要自动提升客户的等级,而且需要通知客户等级的提升。想了一下,大概的思路就是,当客户登陆、或者完成订单的时候,检测客户的ID,获得当前客户所属分组,然后根据客户的ID查询订单表,得到客户在网站上的消费额,最后判断是否达到了相应的客户等级,设置新的等级,并且发送邮件。
1、首先,我们可以监听客户登陆事件、或者重写用户登陆成功的方法,在这儿,因为本身站点的ajax登陆,监听了客户登陆事件,所以我选择了重写登陆成功的方法,如何重写不做多述,直接贴出控制器的代码部分
以上就是自己写的方法,这个方法获得当前登陆用户的信息,并且查出当前客户的消费额,判断客户是否符合了当前的客户等级提升条件,当然,事先要先新建好各个客户的等级,我这儿的客户等级是事先新建好,并且在后台知道了他的客户ID,然后在这儿判断的并提升的,至于如何发送自定义邮件,参考http://blog.csdn.net/shangxiaoxue/article/details/7835895,最后测试,实现了客户等级的自动提升,配合客户等级的价格规则,就可以做到一套客户等级的优惠了,这个客户等级价格优惠规则,下次有空再贴出来。
......不知道怎么上传自己的代码包。。。有需要的留言讲一下吧。。
1、首先,我们可以监听客户登陆事件、或者重写用户登陆成功的方法,在这儿,因为本身站点的ajax登陆,监听了客户登陆事件,所以我选择了重写登陆成功的方法,如何重写不做多述,直接贴出控制器的代码部分
/*重写用户登录方法*/ public function _loginPostRedirect() { $session = $this->_getSession(); if (!$session->getBeforeAuthUrl() || $session->getBeforeAuthUrl() == Mage::getBaseUrl()) { // Set default URL to redirect customer to $session->setBeforeAuthUrl(Mage::helper('customer')->getAccountUrl()); // Redirect customer to the last page visited after logging in if ($session->isLoggedIn()) { if (!Mage::getStoreConfigFlag( Mage_Customer_Helper_Data::XML_PATH_CUSTOMER_STARTUP_REDIRECT_TO_DASHBOARD )) { $referer = $this->getRequest()->getParam(Mage_Customer_Helper_Data::REFERER_QUERY_PARAM_NAME); if ($referer) { // Rebuild referer URL to handle the case when SID was changed $referer = Mage::getModel('core/url') ->getRebuiltUrl(Mage::helper('core')->urlDecode($referer)); if ($this->_isUrlInternal($referer)) { $session->setBeforeAuthUrl($referer); } } } else if ($session->getAfterAuthUrl()) { $session->setBeforeAuthUrl($session->getAfterAuthUrl(true)); } } else { $session->setBeforeAuthUrl(Mage::helper('customer')->getLoginUrl()); } } else if ($session->getBeforeAuthUrl() == Mage::helper('customer')->getLogoutUrl()) { $session->setBeforeAuthUrl(Mage::helper('customer')->getDashboardUrl()); } else { if (!$session->getAfterAuthUrl()) { $session->setAfterAuthUrl($session->getBeforeAuthUrl()); } if ($session->isLoggedIn()) { $session->setBeforeAuthUrl($session->getAfterAuthUrl(true)); } } $this->_redirectUrl($session->getBeforeAuthUrl(true)); $this->UpdateLive(); }上述方法其实也就是复制了客户登录成功的一个action,只是在最后一段加上了$this->UpdateLive() 方法,这个是客户等级提升的方法
/*客户等级提升的方法*/ public function UpdateLive() { //获得当前用户对象 $customer = Mage::getSingleton('customer/session')->getCustomer();/*->getCustomerGroupId();*/ //获得当前用户ID $customerId = $customer->getId(); //获得当前用户所在客户组 $GroupId = $customer->getGroup_id(); //提供用户信息,用于发送邮件 //获取当前用户的邮件 $Customer_email = $customer->getEmail(); //获取当前用户的fristname $Customer_fristname = $customer->getFirstname(); //print_r($customer); //exit; //获得当前客户等级 //执行sql查询出当前用户的总消费额 $read = Mage::getSingleton('core/resource')->getConnection('core_read'); $value = $read->query("SELECT SUM(grand_total) AS total FROM sales_flat_order WHERE customer_id ='$customerId'"); //AND STATUS IN ('trade_finishen', 'complete') //循环出总的消费额 $row = $value->fetch(); $total = $row['total']; if($total < 500) { $customer->setData( 'group_id', '3'); $customer->save(); $NowGroupId = $customer->getGroup_id(); } if(500 < $total && $total < 1000) { $customer->setData( 'group_id', '4'); $customer->save(); $NowGroupId = $customer->getGroup_id(); //如果当前客户的ID更新了,则发送邮件给客户 if($GroupId != $NowGroupId) { return $this->SendEmailToCustomer($Customer_email,$Customer_fristname,'500','3%'); }else { return false; } } if(1000 < $total && $total <1500) { $customer->setData( 'group_id', '5'); $customer->save(); $NowGroupId = $customer->getGroup_id(); //如果当前客户的ID更新了,则发送邮件给客户 if($GroupId != $NowGroupId) { return $this->SendEmailToCustomer($Customer_email,$Customer_fristname,'1000','6%'); }else { return false; } } if(1500 < $total && $total < 5000) { $customer->setData( 'group_id', '6'); $customer->save(); $NowGroupId = $customer->getGroup_id(); //如果当前客户的ID更新了,则发送邮件给客户 if($GroupId != $NowGroupId) { return $this->SendEmailToCustomer($Customer_email,$Customer_fristname,'1500','9%'); }else { return false; } } if(5000 < $total && $total <10000) { $customer->setData( 'group_id', '7'); $customer->save(); $NowGroupId = $customer->getGroup_id(); //如果当前客户的ID更新了,则发送邮件给客户 if($GroupId != $NowGroupId) { return $this->SendEmailToCustomer($Customer_email,$Customer_fristname,'5000','12%'); }else { return false; } } if($total >10000) { $customer->setData( 'group_id', '8'); $customer->save(); $NowGroupId = $customer->getGroup_id(); //如果当前客户的ID更新了,则发送邮件给客户 if($GroupId != $NowGroupId) { return $this->SendEmailToCustomer($Customer_email,$Customer_fristname,'10000','15%'); }else { return false; } } } /* *发送邮件告知客户等级的提升.参数传递 *customer/live/live_template */ public function SendEmailToCustomer($semail,$sfname,$mothan,$zhekou) { define('EMAIL_TEMPLATE', "customer/live/live_template"); $mailSubject = ''; $sender = Array('name' => 'Customer Service','email' => 'admin@eozy.com'); $to = array($semail); $storeId = Mage::app()->getStore()->getId(); $template = Mage::getStoreConfig(EMAIL_TEMPLATE); $mailConfirm = Mage::getModel('core/email_template'); $translate = Mage::getSingleton('core/translate'); $mailConfirm ->setTemplateSubject($mailSubject)->sendTransactional($template, $sender, $to, '',Array( 'subject'=>$mailSubject, 'customer'=>$customer, 'username' => $sfname, 'morethan' => $mothan, 'zhekou' => $zhekou ),$storeId); $translate->setTranslateInline(true); }
以上就是自己写的方法,这个方法获得当前登陆用户的信息,并且查出当前客户的消费额,判断客户是否符合了当前的客户等级提升条件,当然,事先要先新建好各个客户的等级,我这儿的客户等级是事先新建好,并且在后台知道了他的客户ID,然后在这儿判断的并提升的,至于如何发送自定义邮件,参考http://blog.csdn.net/shangxiaoxue/article/details/7835895,最后测试,实现了客户等级的自动提升,配合客户等级的价格规则,就可以做到一套客户等级的优惠了,这个客户等级价格优惠规则,下次有空再贴出来。
......不知道怎么上传自己的代码包。。。有需要的留言讲一下吧。。
相关文章推荐
- magento 如何在跳转到支付界面前自动发送邮件
- magento 如何在跳转到支付界面前自动发送邮件
- 在linux下自动备份数据库,并且发送邮件。
- linux 编写监测脚本,如果停掉自动执行重启操作,并且发送邮件通知
- Centos下mysql自动备份并且发送提醒邮件
- 解决magento1.6快速支付不能自动发送邮件的问题
- Magento 邮件模板以及发送邮件细节
- Android利用Java Mail实现自动发送邮件
- 命令完毕自动发送邮件提醒执行结果
- domino 代理发送邮件,并且邮件发件人是指定用户的实现方法
- Excel VBA开发自动发送邮件
- 提交订单系统自动发送邮件到收件人邮箱优化(邮件内容信息以月为单位)
- 提交订单系统自动发送邮件到收件人邮箱优化(邮件正文内容为当天数据,附件内容为当月数据)
- Redmine发布新闻,自动发送邮件功能失效恢复
- git 远程版本库,github提供服务原理,git自动更新发送邮件
- Javamail实现自动发送邮件
- Shell脚本实现自动发送邮件的例子
- 自动任务发送邮件
- UFT开发实例:QTP调用OutLook自动发送邮件
- kettle定时任务_第三方合作方有订单自动发送邮件通知_20161214