CRMEB商城系统是基于ThinkPhp6.0+Vue开发的一套新零售移动电商开源系统,包含商城、拼团、砍价、秒杀、优惠券、积分、分销等功能,更适合企业二次开发。今天小编就以新增短信接口为例,给大家讲解一下如何进行二次开发,使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台的接口非常稳定,发送速度快,注册就送测试短信,推荐大家使用。
1: 打开项目:\app\admin\controller\sms\SmsConfig.php 修改大概28行代码
|
1
2
3
4
5
6
7
8
9
10
|
public function index(){ $type = input('type')!=0?input('type'):0; $tab_id = input('tab_id'); if(!$tab_id) $tab_id = 1; $this->assign('tab_id',$tab_id); $list = ConfigModel::getAll($tab_id)->toArray(); $list[0]['info'] = '短信宝账号'; $list[0]['desc'] = '短信宝账号'; $list[1]['info'] = '短信宝密码'; $list[1]['desc'] = '短信宝密码'; |
2:打开项目:\app\admin\controller\sms\SmsTemplateApply.php 修改模板相关方法
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
<?phpnamespace app\admin\controller\sms;use app\admin\controller\AuthController;use crmeb\services\FormBuilder;use crmeb\services\JsonService;use crmeb\services\SMSService;use crmeb\services\UtilService;use think\facade\Route;use app\admin\model\routine\RoutineTemplate as RoutineModel;/** * 短信模板申请 * Class SmsTemplateApply * @package app\admin\controller\sms */class SmsTemplateApply extends AuthController{ /** * 显示资源列表 * * @return string */ public function index() {// $sms = new SMSService();// if(!$sms::$status) return $this->failed('请先填写短信配置'); return $this->fetch(); } /** * 异步获取模板列表 */ public function lst() { //重新获取模板 $tem = new RoutineModel(); $lst = $tem->where('status',0)->select()->toArray(); foreach($lst as $k=>$v) { $lst[$k]['id']= $v['id']; $lst[$k]['templateid']= $v['tempid']; $lst[$k]['title']= $v['name']; $lst[$k]['mark']= ""; $lst[$k]['type']= $v['tempkey']; $lst[$k]['status']= 1; $lst[$k]['content']= $v['content']; $lst[$k]['add_time']= date( "Y-m-d H:i", $v['add_time']); } return JsonService::successlayui('',$lst); } /** * 显示创建资源表单页. * * @return string * @throws \FormBuilder\exception\FormBuilderException */ public function create() { $field = [ FormBuilder::input('title','模板名称'), FormBuilder::textarea('text','模板内容示例','【您的短信签名】您的验证码是:{$code},有效期为{$time}分钟。如非本人操作,可不用理会。模板中的{$code}和{$time}需要替换成对应的变量,请开发者知晓。修改此项无效!'), FormBuilder::input('content','模板内容')->type('textarea'), FormBuilder::input('number','模板id'), FormBuilder::radio('type','模板类型',1)->options([['label'=>'验证码','value'=>1],['label'=>'通知','value'=>2],['label'=>'推广','value'=>3]]) ]; $form = FormBuilder::make_post_form('申请短信模板',$field,Route::buildUrl('save'),2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 保存新建的资源 */ public function save() { $tem = []; $data = UtilService::postMore([ ['title',''], ['content',''], ['type',0], ['number',''] ]); //组装数据 $tem = array( 'tempkey'=>$data['type'], 'name'=>$data['title'], 'content'=>$data['content'], 'tempid'=>$data['number'], 'add_time'=>time() ); if(!strlen(trim($data['title']))) return JsonService::fail('请输入模板名称'); if(!strlen(trim($data['content']))) return JsonService::fail('请输入模板内容'); if(!strlen(trim($data['number']))) return JsonService::fail('请输入模板id'); $id = RoutineModel::insert($tem); if ($id) return JsonService::success('申请成功') |
3:打开项目:\app\admin\model\sms\SmsRecord.php 修改84行左右
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public static function sendRecord($phone, $content, $template, $record_id){ ($record_id == '0')?($resultcode = 100):($resultcode = 130); $map = [ 'uid' => sys_config('sms_accounta'), 'phone' => $phone, 'content' => $content, 'add_time' => time(), 'template' => $template, 'resultcode'=>$resultcode, 'record_id' => $record_id, 'add_ip' => app()->request->ip(), ]; $msg = SmsRecord::create($map); if ($msg) return true; else return false;} |
4:打开项目:\app\admin\view\sms\sms_config\index.php 修改大概56行代码
|
1
2
3
4
5
6
7
8
|
<div class="ibox-content"> <div id="app"> <Alert type="success">如果还没有开通短信账号,可以<a target="_blank" href="https://www.smsbao.com/reg" style="color: #0000ff">立即注册</a> </Alert> </div> <div class="p-m m-t-sm" id="configboay"> </div> </div> |
5:打开项目:\app\admin\view\sms\sms_template_apply\index.php 修改大概45行代码
|
1
2
3
|
<div class="layui-btn-container"> <button type="button" class="layui-btn layui-btn-sm" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}')">添加模板</button> </div> |
6:打开项目:\crmeb\services\SMSService.php 修改发送方法
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public static function send($phone, $template, array $param) { $ret = []; self::auto(); $teModel = new RoutineTemplate(); $content = $teModel->where('tempid',$template)->find()['content']; foreach($param as $key => $value) { $content = str_replace('{$'."$key".'}',$value,$content); } $statusStr = array( "0" => "短信发送成功", "-1" => "参数不全", "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!", "30" => "密码错误", "40" => "账号不存在", "41" => "余额不足", "42" => "帐户已过期", "43" => "IP地址限制", "50" => "内容含有敏感词" ); $user = self::$SMSAccount; //短信平台帐号 $pass = md5(self::$SMSToken); //短信平台密码 $content = $content;//要发送的短信内容 $phone = $phone;//要发送短信的手机号码 $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content); $result = file_get_contents($sendurl) ; $ret["status"] = $result; $ret["msg"] = $statusStr[$result]; return $ret; } |
7:打开项目:\crmeb\services\sms\storage\Yunxin.php 修改发送方法
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public function send(string $phone, string $templateId, array $data = []){ if (!$phone) { return $this->setError('Mobile number cannot be empty'); } if (!$this->smsAccount) { return $this->setError('Account does not exist'); } if (!$this->smsToken) { return $this->setError('Access token does not exist'); } $formData['uid'] = $this->smsAccount; $formData['token'] = $this->smsToken; $formData['mobile'] = $phone; $formData['template'] = $this->getTemplateCode($templateId); if (is_null($formData['template'])) { return $this->setError('Missing template number'); } $tem = new RoutineModel(); $content = $tem->where('tempid',$formData['template'])->find()['content']; foreach($data as $key => $value) { $content = str_replace('{$'."$key".'}',$value,$content); } $statusStr = array( "0" => "短信发送成功", "-1" => "参数不全", "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!", "30" => "密码错误", "40" => "账号不存在", "41" => "余额不足", "42" => "帐户已过期", "43" => "IP地址限制", "50" => "内容含有敏感词" ); $user = $formData['uid']; //短信平台帐号 $pass = $formData['token']; //短信平台密码 $content = $content;//要发送的短信内容 $phone = $formData['mobile'];//要发送短信的手机号码 $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content); $result= file_get_contents($sendurl) ; if ($result == '0'){ $ret = []; $ret['data']["content"] = $content; $ret['data']["template"] = $formData['template']; $ret['data']["id"] = $result; return $ret; }else{ return false; } } |
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:

报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。
另外:我们已经开发好完整的CRMEB_V3.21系统短信宝插件,点击此链接 下载及查看安装流程。

