magento 客户等级自动提升并且发送邮件

      前几天遇到一个客户等级的需求,需要自动提升客户的等级,而且需要通知客户等级的提升。想了一下,大概的思路就是,当客户登陆、或者完成订单的时候,检测客户的ID,获得当前客户所属分组,然后根据客户的ID查询订单表,得到客户在网站上的消费额,最后判断是否达到了相应的客户等级,设置新的等级,并且发送邮件。

     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,最后测试,实现了客户等级的自动提升,配合客户等级的价格规则,就可以做到一套客户等级的优惠了,这个客户等级价格优惠规则,下次有空再贴出来。

......不知道怎么上传自己的代码包。。。有需要的留言讲一下吧。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值