Niushop是一款基于thinkphp5.0 MVC+service框架的开源软件,方便二次开发与集成,今天我就来分享一下,如何进行二次开发。我以替换短信接口为例,一步一步的手把手教大家开发过程,我们做演示的短信平台是短信宝(http://www.smsbao.com)短信平台,我们公司和短信宝平台合作好几年了,他们的平台非常稳定,而且快速,注册还送免费测试短信,大家可以在短信宝平台注册一个账号,进行测试。
首先,我们先更换后台的显示界面文件。打开模板文件,替换一下模板文件。打开项目/template/admin/Config/messageConfig.html,替换的代码从138行~160行,代码如下图所示:
<div class="set-style">
<dl>
<dt>是否开启:</dt>
<dd style="width:5%;">
<input id="sms_is_use" type="checkbox" class="checkbox" {if condition="$mobile_message.is_use=='1'"}checked="checked"{/if}/>
</dd>
<dd style="width:20%;color:#666;" class="showmessage">当前使用短信宝短信配置</dd>
</dl>
<dl>
<dt>短信宝帐号:</dt>
<dd>
<input id="app_key" type="text" value="{$mobile_message['value']['appKey']}" /> 立即<a href="http://www.smsbao.com" target="_blank">免费注册</a>短信宝账号
</dd>
</dl>
<dl>
<dt>短信宝密码:</dt>
<dd>
<input id="secret_key" type="password" value="{$mobile_message['value']['secretKey']}" />
</dd>
</dl>
<button class="edit_button" onclick="setConfigAjax();">提交</button>
</div>
打开项目/template/admin/Config/notifySmsTemplate.html,替换的代码从191行~203行,代码如下图所示:
<div class="right_main">
<div class="main-top">您正在编辑<a href="javascript:;" id="update_nameid"></a>通知模板</div>
<div class="qianming">
<div style="width:75px;float:left;">模板:
</div>
<input type="text" name="" id="template_titleid" value="{$template_select.template_title}" style="margin-right: 15px;"/></div>
<div class="qianming">
<input type="text" name="" id="signNameid" style="margin-right: 15px;" value="{$template_select.sign_name }"/>
</div>
<div class="bl">
<div style="width:75px;float:left;">可用变量:</div>
<div style="width:88%;float: left;font-size:13px;" id="user_variable">
{foreach name="template_item_list" item="item_obj"}
{$item_obj.replace_name}({$item_obj.item_name}),
{/foreach}
</div>
</div>
</div>
经过替换后,所有的显示都变成短信宝短信平台的了。第一步完成。接下来替换发送短信的业务代码。修改项目/data/extend/hook/Notify.php文件,代码如下:
<?php
namespace data\extend\hook;
use data\model\WebSiteModel;
use data\model\UserModel;
use data\model\ConfigModel;
use data\model\NoticeTemplateModel;
use data\model\NsOrderGoodsModel;
use data\model\NsOrderModel;
use phpDocumentor\Reflection\Types\This;
use data\model\NsOrderGoodsExpressModel;
class Notify
{
public $result=array(
"code"=>,
"message"=>"success",
"param"=>""
);
/**
* 邮件的配置信息
* @var unknown
*/
public $email_is_open=;
public $email_host="";
public $email_port="";
public $email_addr="";
public $email_id="";
public $email_pass="";
/**
* 短信的配置信息
* @var unknown
*/
public $mobile_is_open;
public $appKey="";
public $secretKey="";
public $freeSignName="";
public $shop_name;
public $ali_use_type=;
/**
* 得到系统通知的配置信息
* @param unknown $shop_id
*/
private function getShopNotifyInfo($shop_id){
$website_model=new WebSiteModel();
$website_obj=$website_model->getInfo("1=1", "title");
if(empty($website_obj)){
$this->shop_name="NiuShop开源商城";
}else{
$this->shop_name=$website_obj["title"];
}
$config_model=new ConfigModel();
#查看邮箱是否开启
$email_info=$config_model->getInfo(["instance_id"=>$shop_id, "`key`"=>"EMAILMESSAGE"], "*");
if(!empty($email_info)){
$this->email_is_open=$email_info["is_use"];
$value=$email_info["value"];
if(!empty($value)){
$email_array=json_decode($value, true);
$this->email_host=$email_array["email_host"];
$this->email_port=$email_array["email_port"];
$this->email_addr=$email_array["email_addr"];
$this->email_id=$email_array["email_id"];
$this->email_pass=$email_array["email_pass"];
}
}
$mobile_info=$config_model->getInfo(["instance_id"=>$shop_id, "`key`"=>"MOBILEMESSAGE"], "*");
if(!empty($mobile_info)){
$this->mobile_is_open=$mobile_info["is_use"];
$value=$mobile_info["value"];
if(!empty($value)){
$mobile_array=json_decode($value, true);
$this->appKey=$mobile_array["appKey"];
$this->secretKey=$mobile_array["secretKey"];
$this->freeSignName=$mobile_array["freeSignName"];
$this->ali_use_type=$mobile_array["user_type"];
if(empty($this->ali_use_type)){
$this->ali_use_type=;
}
}
}
}
public function sendSMS($appkey, $secret, $signName, $smsParam, $send_mobile, $template_code)
{
$content = strtr($template_code,$smsParam);//替换模板中的变量
$contents = '【'.$signName.'】'.$content;
$url = 'http://api.smsbao.com/sms?u='.$appkey.'&p='.md5($secret).'&m='.$send_mobile.'&c='.$contents;
$result = file_get_contents($url);
return $result;
}
/**
* 查询模板的信息
* @param unknown $shop_id
* @param unknown $template_code
* @param unknown $type
* @return unknown
*/
private function getTemplateDetail($shop_id, $template_code, $type){
$template_model=new NoticeTemplateModel();
$template_obj=$template_model->getInfo(["instance_id"=>$shop_id, "template_type"=>$type, "template_code"=>$template_code]);
return $template_obj;
}
/**
* 处理阿里大于 的返回数据
* @param unknown $result
*/
private function dealAliSmsResult($result){
$deal_result=array();
try {
if($this->ali_use_type==){
#旧用户发送
if(!empty($result)){
if(!isset($result->result)){
$result=json_decode(json_encode($result), true);
#发送失败
$deal_result["code"]=$result["code"];
$deal_result["message"]=$result["msg"];
}else{
#发送成功
$deal_result["code"]=;
$deal_result["message"]="发送成功";
}
}
}else{
#新用户发送
if(!empty($result)){
if($result->Code=="OK"){
#发送成功
$deal_result["code"]=;
$deal_result["message"]="发送成功";
}else{
#发送失败
$deal_result["code"]=-;
$deal_result["message"]=$result->Message;
}
}
}
} catch (\Exception $e) {
$deal_result["code"]=-;
$deal_result["message"]="发送失败!";
}
return $deal_result;
}
/**
* 用户注册成功后
* @param string $params
*/
public function registAfter($params=null){
/**
* 店铺id
*/
$shop_id=$params["shop_id"];
#查询系统配置信息
$this->getShopNotifyInfo();
/**
* 用户id
*/
$user_id=$params["user_id"];
$user_model=new UserModel();
$user_obj=$user_model->get($user_id);
$mobile="";
$user_name="";
$email="";
if(empty($user_obj)){
$user_name="用户";
}else{
$user_name=$user_obj["user_name"];
$mobile=$user_obj["user_tel"];
$email=$user_obj["user_email"];
}
#短信验证
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "after_register", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$sms_params=array(
"shop_name"=>$this->shop_name,
"user_name"=>$user_name
);
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
$this->result["code"]=$result->code;
$this->result["message"]=$result->msg;
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启短信模板!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启短信模板!";
}
#邮箱验证
if(!empty($email) && $this->email_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "after_register", "email");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$content=$template_obj["template_content"];
$content=str_replace("{商场名称}", $this->shop_name, $content);
$content=str_replace("{用户名称}", $user_name, $content);
$result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
if($result == '0'){
$this->result["code"]=;
$this->result["message"]="发送成功!";
}else{
$this->result["code"]=$result;
$this->result["message"]="发送失败!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启邮箱验证";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启邮箱验证";
}
return $this->result;
}
/**
* 注册短信验证
* @param string $params
*/
public function registBefor($params=null){
$rand = rand(,);
$mobile=$params["mobile"];
$shop_id=$params["shop_id"];
#查询系统配置信息
$this->getShopNotifyInfo($shop_id);
$result="";
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "register_validate", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$sms_params=array(
);
$this->result["param"]=$rand;
if(!empty($this->appKey) && !empty($this->secretKey) && !empty($template_obj["sign_name"]) && !empty($template_obj["template_title"])){
$sms_params=array(
"number"=>$rand."",
);
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
if ($result == '0') {
$this->result["code"]=;
$this->result["message"]="发送成功!";
$this->result["param"]=$rand;
}else{
$this->result["code"]= $result;
$this->result["message"]="发送失败!";
$this->result["param"]=$rand;
}
}else{
$this->result["code"]=-;
$this->result["message"]="短信配置信息有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="短信通知模板有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="店家没有开启短信验证";
}
return $this->result;
}
/**
* 注册邮箱验证
* 已测试
* @param string $params
*/
public function registEmailValidation($params=null){
$rand = rand(,);
$email=$params["email"];
$shop_id=$params["shop_id"];
#查询系统配置信息
$this->getShopNotifyInfo($shop_id);
if(!empty($email) && $this->email_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "register_validate", "email");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$content=$template_obj["template_content"];
$content=str_replace("{验证码}", $rand, $content);
if(!empty($this->email_host) && !empty($this->email_id) && !empty($this->email_pass) && !empty($this->email_addr)){
$result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
$this->result["param"]=$rand;
if($result){
$this->result["code"]=;
$this->result["message"]="发送成功!";
}else{
$this->result["code"]=-;
$this->result["message"]="发送失败!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="邮箱配置信息有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="配置邮箱注册验证模板有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="店家没有开启邮箱验证";
}
return $this->result;
}
/**
* 订单发货
* @param string $params
*/
public function orderDelivery($params=null){
#查询系统配置信息
$this->getShopNotifyInfo();
$order_goods_ids=$params["order_goods_ids"];
$order_goods_str=explode(",", $order_goods_ids);
$result="";
$user_name="";
if(count($order_goods_str)>){
$order_goods_id=$order_goods_str[];
$order_goods_model=new NsOrderGoodsModel();
$order_goods_obj=$order_goods_model->get($order_goods_id);
$shop_id=$order_goods_obj["shop_id"];
$order_id=$order_goods_obj["order_id"];
$order_model=new NsOrderModel();
$order_obj=$order_model->get($order_id);
$user_name=$order_obj["receiver_name"];
$buyer_id=$order_obj["buyer_id"];
$goods_name=$order_goods_obj["goods_name"];
$goods_sku=$order_goods_obj["sku_name"];
$order_no=$order_obj["out_trade_no"];
$order_money=$order_obj["pay_money"];
$goods_money=$order_goods_obj["goods_money"];
$mobile=$order_obj["receiver_mobile"];
$goods_express_model=new NsOrderGoodsExpressModel();
$express_obj=$goods_express_model->getInfo(["order_id"=>$order_id, "order_goods_id_array"=>$order_goods_ids], "*");
$sms_params=array(
"shop_name"=>$this->shop_name,
"user_name"=>$user_name,
"goods_name"=>$goods_name,
"goods_sku"=>$goods_sku,
"order_no"=>$order_no,
"order_money"=>$order_money,
"goods_money"=>$goods_money,
"express_company"=>$express_obj["express_name"],
"express_no"=>$express_obj["express_no"]
);
#短信发送
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "order_deliver", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$result=$this->sendSMS($this->appKey, $this->secretKey, $template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
}
}
// 邮件发送
$user_model = new UserModel();
$user_obj = $user_model->get($buyer_id);
if (! empty($user_obj)) {
$email = $user_obj["user_email"];
if (! empty($email) && $this->email_is_open == ) {
$template_obj = $this->getTemplateDetail($shop_id, "order_deliver", "email");
if (! empty($template_obj) && $template_obj["is_enable"] == ) {
$content = $template_obj["template_content"];
$content = str_replace("{商场名称}", $this->shop_name, $content);
$content = str_replace("{用户名称}", $user_name, $content);
$content = str_replace("{商品名称}", $goods_name, $content);
$content = str_replace("{商品规格}", $goods_sku, $content);
$content = str_replace("{主订单号}", $order_no, $content);
$content = str_replace("{订单金额}", $order_money, $content);
$content = str_replace("{商品金额}", $goods_money, $content);
$content = str_replace("{物流公司}", $express_obj["express_name"], $content);
$content = str_replace("{快递编号}", $express_obj["express_no"], $content);
$result=emailSend($this->email_host, $this->email_id,
$this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
}
}
}
}
}
/**
* 订单确认
* @param string $params
*/
public function orderComplete($params=null){
#查询系统配置信息
$this->getShopNotifyInfo();
$order_id=$params["order_id"];
$order_model=new NsOrderModel();
$order_obj=$order_model->get($order_id);
$shop_id=$order_obj["shop_id"];
$buyer_id=$order_obj["buyer_id"];
$user_name=$order_obj["receiver_name"];
$order_no=$order_obj["out_trade_no"];
$order_money=$order_obj["pay_money"];
$mobile=$order_obj["receiver_mobile"];
$sms_params=array(
"shop_name"=>$this->shop_name,
"user_name"=>$user_name,
"order_no"=>$order_no,
"order_money"=>$order_money
);
// 短信发送
if (! empty($mobile) && $this->mobile_is_open == ) {
$template_obj = $this->getTemplateDetail($shop_id, "confirm_order", "sms");
if (! empty($template_obj) && $template_obj["is_enable"] == ) {
$result = $this->sendSMS($this->appKey, $this->secretKey, $template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
}
}
// 邮件发送
$user_model = new UserModel();
$user_obj = $user_model->get($buyer_id);
if (! empty($user_obj)) {
$email = $user_obj["user_email"];
if (! empty($email) && $this->email_is_open == ) {
$template_obj = $this->getTemplateDetail($shop_id, "confirm_order", "email");
if (! empty($template_obj) && $template_obj["is_enable"] == ) {
$content = $template_obj["template_content"];
$content = str_replace("{商场名称}", $this->shop_name, $content);
$content=str_replace("{用户名称}", $user_name, $content);
$content=str_replace("{主订单号}", $order_no, $content);
$content=str_replace("{订单金额}", $order_money, $content);
$result=emailSend($this->email_host, $this->email_id,
$this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
}
}
}
}
/**
* 订单付款成功
* @param string $params
*/
public function orderPay($params=null){
#查询系统配置信息
$this->getShopNotifyInfo();
$order_id=$params["order_id"];
$order_model=new NsOrderModel();
$order_obj=$order_model->get($order_id);
$shop_id=$order_obj["shop_id"];
$buyer_id=$order_obj["buyer_id"];
$user_name=$order_obj["receiver_name"];
$order_no=$order_obj["out_trade_no"];
$order_money=$order_obj["pay_money"];
$mobile=$order_obj["receiver_mobile"];
$goods_money=$order_obj["goods_money"];
$sms_params=array(
"shop_name"=>$this->shop_name,
"user_name"=>$user_name,
"order_no"=>$order_no,
"order_money"=>$order_money,
"goods_money"=>$goods_money
);
#短信发送
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "pay_success", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
}
}
#邮件发送
$user_model=new UserModel();
$user_obj=$user_model->get($buyer_id);
if(!empty($user_obj)){
$email=$user_obj["user_email"];
if(!empty($email) && $this->email_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "pay_success", "email");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$content=$template_obj["template_content"];
$content=str_replace("{商场名称}", $this->shop_name, $content);
$content=str_replace("{用户名称}", $user_name, $content);
$content=str_replace("{主订单号}", $order_no, $content);
$content=str_replace("{订单金额}", $order_money, $content);
$content=str_replace("{商品金额}", $goods_money, $content);
$result=emailSend($this->email_host, $this->email_id,
$this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
}
}
}
}
/**
* 订单创建成功
* @param string $params
*/
public function orderCreate($params=null){
#查询系统配置信息
$this->getShopNotifyInfo();
$order_id=$params["order_id"];
$order_model=new NsOrderModel();
$order_obj=$order_model->get($order_id);
$shop_id=$order_obj["shop_id"];
$buyer_id=$order_obj["buyer_id"];
$user_name=$order_obj["receiver_name"];
$order_no=$order_obj["out_trade_no"];
$order_money=$order_obj["pay_money"];
$mobile=$order_obj["receiver_mobile"];
$goods_money=$order_obj["goods_money"];
$sms_params= array(
"shop_name"=>$this->shop_name,
"user_name"=>$user_name,
"order_no"=>$order_no,
"order_money"=>$order_money,
"goods_money"=>$goods_money
);
#短信发送
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "create_order", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);
}
}
// 邮件发送
$user_model = new UserModel();
$user_obj = $user_model->get($buyer_id);
if (! empty($user_obj)) {
$email = $user_obj["user_email"];
if (! empty($email) && $this->email_is_open == ) {
$template_obj = $this->getTemplateDetail($shop_id, "create_order", "email");
if (! empty($template_obj) && $template_obj["is_enable"] == ) {
$content = $template_obj["template_content"];
$content = str_replace("{商场名称}", $this->shop_name, $content);
$content = str_replace("{用户名称}", $user_name, $content);
$content = str_replace("{主订单号}", $order_no, $content);
$content = str_replace("{订单金额}", $order_money, $content);
$content = str_replace("{商品金额}", $goods_money, $content);
$result = emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
}
}
}
}
/**
* 找回密码
* @param string $params
* @return multitype:number string
*/
public function forgotPassword($params=null){
$send_type=$params["send_type"];
$send_param=$params["send_param"];
$shop_id=$params["shop_id"];
$this->getShopNotifyInfo($shop_id);
$rand = rand(,);
$template_obj=$this->getTemplateDetail($shop_id, "forgot_password", $send_type);
if($send_type=="email"){
#邮箱验证
if($this->email_is_open==){
if(!empty($template_obj) && $template_obj["is_enable"]==){
#发送
$content=$template_obj["template_content"];
$content=str_replace("{验证码}", $rand, $content);
$result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $send_param, $template_obj["template_title"], $content);
$this->result["param"]=$rand;
if($result){
$this->result["code"]=;
$this->result["message"]="发送成功!";
}else{
$this->result["code"]=-;
$this->result["message"]="发送失败!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没有设置找回密码的模板!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启邮箱验证!";
}
}else{
#短信验证
if($this->mobile_is_open==){
if(!empty($template_obj) && $template_obj["is_enable"]==){
#发送
$sms_params=array(
"number"=>$rand.""
);
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"],$sms_params, $send_param, $template_obj["template_title"], $this->ali_use_type);
if ($result == '0') {
$this->result["code"]=;
$this->result["message"]="发送成功!";
$this->result["param"]=$rand;
}else{
$this->result["code"]= $result;
$this->result["message"]="发送失败!";
$this->result["param"]=$rand;
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没有设置找回密码的短信模板!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="商家没开启短信验证!";
}
}
return $this->result;
}
/**
* 用户绑定手机号
* @param string $params
*/
public function bindMobile($params=null){
$rand = rand(,);
$mobile=$params["mobile"];
$shop_id=$params["shop_id"];
$user_id=$params["user_id"];
#查询系统配置信息
$this->getShopNotifyInfo($shop_id);
if(!empty($mobile) && $this->mobile_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "bind_mobile", "sms");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$user_model=new UserModel();
$user_obj=$user_model->get($user_id);
$sms_params=array(
"number"=>$rand."",
"user_name"=>$user_obj["user_name"]
);
$this->result["param"]=$rand;
if(!empty($this->appKey) && !empty($this->secretKey) && !empty($template_obj["sign_name"]) && !empty($template_obj["template_title"])){
$result=$this->sendSMS($this->appKey, $this->secretKey,
$template_obj["sign_name"], json_encode($sms_params), $mobile, $template_obj["template_title"], $this->ali_use_type);
if ($result == '0') {
$this->result["code"]=;
$this->result["message"]="发送成功!";
$this->result["param"]=$rand;
}else{
$this->result["code"]= $result;
$this->result["message"]="发送失败!";
$this->result["param"]=$rand;
}
}else{
$this->result["code"]=-;
$this->result["message"]="短信配置信息有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="短信通知模板有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="店家没有开启短信验证";
}
return $this->result;
}
/**
* 用户绑定邮箱
* @param string $params
*/
public function bindEmail($params=null){
$rand = rand(,);
$email=$params["email"];
$shop_id=$params["shop_id"];
$user_id=$params["user_id"];
#查询系统配置信息
$this->getShopNotifyInfo($shop_id);
if(!empty($email) && $this->email_is_open==){
$template_obj=$this->getTemplateDetail($shop_id, "bind_email", "email");
if(!empty($template_obj) && $template_obj["is_enable"]==){
$user_model=new UserModel();
$user_obj=$user_model->get($user_id);
$content=$template_obj["template_content"];
$content=str_replace("{验证码}", $rand, $content);
$content=str_replace("{用户名称}", $user_obj["user_name"], $content);
$this->result["param"]=$rand;
if(!empty($this->email_host) && !empty($this->email_id) && !empty($this->email_pass) && !empty($this->email_addr)){
$result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);
if($result){
$this->result["code"]=;
$this->result["message"]="发送成功!";
}else{
$this->result["code"]=-;
$this->result["message"]="发送失败!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="邮箱配置信息有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="邮箱通知模板有误!";
}
}else{
$this->result["code"]=-;
$this->result["message"]="店家没有开启邮箱验证";
}
return $this->result;
}
}
?>
修改完成之后,短信宝的接口替换完成了,但是niushop1.05这个版本用户注册成功后发送短信失败这个BUG在此次演示中也修复了,只需要修改项目/data/service/Member.php中的registerMember方法,代码如下:
public function registerMember($user_name, $password, $email, $mobile, $user_qq_id, $qq_info, $wx_openid, $wx_info, $wx_unionid)
{
if(trim($user_name) != ""){
$is_false = $this->verifyValue($user_name, $password, "plain");
}else{
if($mobile != "" && $email ==""){
$is_false = $this->verifyValue($user_name, $password, "mobile");
}else{
$is_false = $this->verifyValue($user_name, $password, "email");
}
}
if(!$is_false){
return USER_WORDS_ERROR;
}
$res = parent::add($user_name, $password, $email, $mobile, , $user_qq_id, $qq_info, $wx_openid, $wx_info, $wx_unionid, );
if ($res > ) {
if ($mobile) {
$params['shop_id'] = ;
$params['user_id'] = $res;
$result = runhook('Notify', 'registAfter', $params);
}
//获取默认会员等级id
$member_level = new NsMemberLevelModel();
$level_info = $member_level->getInfo(['is_default' => ], 'level_id');
$member_level = $level_info['level_id'];
$member = new NsMemberModel();
$data = array(
'uid' => $res,
'member_name' => $user_name,
'member_level'=>$member_level,
'reg_time' => date("Y-m-d H:i:s", time())
);
$retval = $member->save($data);
// 注册会员送积分
$promote_reward_rule = new PromoteRewardRule();
// 添加关注
switch (NS_VERSION) {
case NS_VER_B2C:
break;
case NS_VER_B2C_FX:
if (! empty($_SESSION['source_uid'])) {
// 判断当前版本
$nfx_user = new NfxUser();
$nfx_user->userAssociateShop($res, , $_SESSION['source_uid']);
} else {
// 判断当前版本
$nfx_user = new NfxUser();
$nfx_user->userAssociateShop($res, , );
}
break;
}
// 平台赠送积分
$promote_reward_rule->RegisterMemberSendPoint(, $res);
// 直接登录
if (! empty($user_name)) {
$this->login($user_name, $password);
} elseif (! empty($mobile)) {
$this->login($mobile, $password);
} elseif (! empty($user_qq_id)) {
$this->qqLogin($user_qq_id);
} elseif (! empty($wx_openid)) {
$this->wchatLogin($wx_openid);
} elseif (! empty($wx_unionid)) {
$this->wchatUnionLogin($wx_unionid);
}
}
return $res;
}
这样用户注册成功后也可以发送短信通知了,我们在添加短信模版的时候,会发现超过50个字符后的文字是没有的,这是因为在数据库中限制了模版的长度为50,我们只需要修改一下字段长度就可以了。在项目/application/shop/controller创建一个Smsbao.php文件,代码如下:
<?php
/**
* Smsbao.php
* 短信宝插件安装,修改模板字段长度
*/
namespace app\shop\controller;
use think\Controller;
use think\Db;
class Smsbao extends Controller
{
/**
* 修改长度为255
*/
public function index()
{
Db::query("alter table sys_notice_template modify column template_title varchar(255) not null");
echo '短信宝插件安装成功';
}
}
我们只需要访问 域名/shop/Smsbao.php看到短信宝插件安装成功就证明字段修改成功。
经过以上的替换,短信宝的短信平台已经替换成功了,可以正常使用了。
给大家几个示例模版:
注册成功:恭喜你成功注册为shop_name的会员,会员名称为:user_tel。
注:注册成功发送短信仅限手机注册,手机注册会员名称为手机号,不能填写user_name.
注册验证:您的验证码为:number,请不要告诉他人。
充值成功:user_name你好,恭喜你在shop_name充值成功,充值金额为:recharge_money。
确认订单:user_name你好,恭喜你在shop_name购物成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。
付款成功:user_name你好,恭喜你在shop_name付款成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。
下单成功:user_name你好,恭喜你在shop_name下单成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。