diff --git a/service/Application/Admin/Controller/AlipayLifeMessageController.class.php b/service/Application/Admin/Controller/AlipayLifeMessageController.class.php index 5d08649d8..ed7195ce5 100644 --- a/service/Application/Admin/Controller/AlipayLifeMessageController.class.php +++ b/service/Application/Admin/Controller/AlipayLifeMessageController.class.php @@ -42,7 +42,7 @@ class AlipayLifeMessageController extends CommonController public function Index() { // 参数 - $param = array_merge($_POST, $_GET); + $params = array_merge($_POST, $_GET); // 模型对象 $m = M('AlipayLifeMessage'); @@ -55,7 +55,7 @@ class AlipayLifeMessageController extends CommonController $page_param = array( 'number' => $number, 'total' => $m->where($where)->count(), - 'where' => $param, + 'where' => $params, 'url' => U('Admin/AlipayLifeMessage/Index'), ); $page = new \Library\Page($page_param); @@ -65,7 +65,7 @@ class AlipayLifeMessageController extends CommonController $list = $this->SetDataHandle($list); // 参数 - $this->assign('param', $param); + $this->assign('params', $params); // 分页 $this->assign('page_html', $page->GetPageHtml()); @@ -74,7 +74,7 @@ class AlipayLifeMessageController extends CommonController $this->assign('common_send_status_list', L('common_send_status_list')); // 消息类型 - $this->assign('alipay_life_message_type_list', L('alipay_life_message_type_list')); + $this->assign('alipay_life_message_msg_type_list', L('alipay_life_message_msg_type_list')); // 发送类型 $this->assign('alipay_life_message_send_type_list', L('alipay_life_message_send_type_list')); @@ -98,7 +98,7 @@ class AlipayLifeMessageController extends CommonController if(!empty($data)) { $common_send_status_list = L('common_send_status_list'); - $alipay_life_message_type_list = L('alipay_life_message_type_list'); + $alipay_life_message_msg_type_list = L('alipay_life_message_msg_type_list'); $alipay_life_message_send_type_list = L('alipay_life_message_send_type_list'); foreach($data as &$v) { @@ -106,23 +106,16 @@ class AlipayLifeMessageController extends CommonController $v['status_name'] = $common_send_status_list[$v['status']]['name']; // 消息类型 - $v['type_name'] = $alipay_life_message_type_list[$v['type']]['name']; + $v['type_name'] = $alipay_life_message_msg_type_list[$v['msg_type']]['name']; // 发送状态 $v['send_type_name'] = $alipay_life_message_send_type_list[$v['send_type']]['name']; - // 分类名称 - $category_all = M('AlipayLifeMessageCategoryJoin')->where(['alipay_life_id'=>$v['id']])->getField('alipay_life_category_id', true); - $v['alipay_life_category_text'] = M('AlipayLifeMessageCategory')->where(['id'=>['in', $category_all]])->getField('name', true); - - // image_url - $v['image_url'] = empty($v['image_url']) ? '' : C('IMAGE_HOST').$v['image_url']; - - // 生活号分类 - $v['category_all'] = empty($v['alipay_life_category_id']) ? '' : M('AlipayLifeCategory')->where(['id'=>['in', json_decode($v['alipay_life_category_id'], true)]])->getField('name', true); - // 生活号 - $v['alipay_life_name'] = empty($v['alipay_life_id']) ? '' : M('AlipayLife')->where(['id'=>$v['alipay_life_id']])->getField('name'); + $v['alipay_life_all'] = empty($v['alipay_life_ids']) ? '' : M('AlipayLife')->where(['id'=>['in', json_decode($v['alipay_life_ids'], true)]])->getField('name', true); + + // 用户 + $v['alipay_openid'] = empty($v['user_id']) ? '' : M('User')->where(['id'=>$v['user_id']])->getField('alipay_openid'); // 时间 $v['send_startup_time'] = empty($v['send_startup_time']) ? '' : date('Y-m-d H:i:s', $v['send_startup_time']); @@ -160,7 +153,7 @@ class AlipayLifeMessageController extends CommonController } if(I('type', -1) > -1) { - $where['type'] = intval(I('type', 0)); + $where['msg_type'] = intval(I('type', 0)); } if(I('send_type', -1) > -1) { @@ -189,31 +182,56 @@ class AlipayLifeMessageController extends CommonController */ public function SaveInfo() { - // 轮播图片信息 + // 数据 $data = empty($_REQUEST['id']) ? array() : M('AlipayLifeMessage')->find(I('id')); $this->assign('data', $data); - // 发送状态 - $this->assign('common_send_status_list', L('common_send_status_list')); - // 消息类型 - $this->assign('alipay_life_message_type_list', L('alipay_life_message_type_list')); + $this->assign('alipay_life_message_msg_type_list', L('alipay_life_message_msg_type_list')); // 单用户发消息用户信息 - $alipay_openid = empty($_GET['user_id']) ? '' : M('User')->where(['id'=>intval(I('user_id'))])->getField('alipay_openid'); + $alipay_openid = ''; + $user_id = 0; + $alipay_life_user_id = 0; + if(!empty($_GET['user_id'])) + { + $user_id = intval(I('user_id')); + $alipay_life_user_id = intval(I('alipay_life_user_id')); + } + if(!empty($data)) + { + $user_id = $data['user_id']; + $alipay_life_user_id = $data['alipay_life_user_id']; + } + if(!empty($user_id)) + { + $alipay_openid = M('User')->where(['id'=>$user_id])->getField('alipay_openid'); + } + $this->assign('user_id', $user_id); + $this->assign('alipay_life_user_id', $alipay_life_user_id); $this->assign('alipay_openid', $alipay_openid); // 消息发送类型 $this->assign('alipay_life_message_send_type_list', L('alipay_life_message_send_type_list')); - $this->assign('send_type', empty($alipay_openid) ? 1 : 0); + $send_type = (isset($data['send_type']) && $data['send_type'] == 0) ? $data['send_type'] : (empty($alipay_openid) ? 1 : 0); + $this->assign('send_type', $send_type); // 生活号 + $alipay_life_list = []; + $alipay_life_ids_all = []; if(!empty($_GET['alipay_life_id'])) { - $alipay_life_list = M('AlipayLife')->field('id,name')->where(['id'=>intval(I('alipay_life_id'))])->select(); - } else { - $alipay_life_list = []; + $alipay_life_ids_all = [intval(I('alipay_life_id'))]; } + if(!empty($data['alipay_life_ids'])) + { + $alipay_life_ids_all = json_decode($data['alipay_life_ids'], true); + } + if(!empty($alipay_life_ids_all)) + { + $alipay_life_list = M('AlipayLife')->field('id,name')->where(['id'=>['in', $alipay_life_ids_all]])->select(); + } + $this->assign('alipay_life_ids_all', $alipay_life_ids_all); $this->assign('alipay_life_list', $alipay_life_list); // 生活号分类 @@ -227,10 +245,100 @@ class AlipayLifeMessageController extends CommonController // 参数 $this->assign('params', array_merge($_POST, $_GET)); - $this->assign('nav_type', I('nav_type', 0)); + $this->assign('msg_type', I('msg_type', 0)); $this->display('SaveInfo'); } + + /** + * [Index 消息内容列表] + * @author Devil + * @blog http://gong.gg/ + * @version 0.0.1 + * @datetime 2016-12-06T21:31:53+0800 + */ + public function ContentIndex() + { + // 参数 + $params = array_merge($_POST, $_GET); + + // 条件 + $where = ['alipay_life_message_id' => intval($params['message_id'])]; + + // 获取列表 + $list = M('AlipayLifeMessageContent')->where($where)->order('id desc')->select(); + $list = $this->SetDataHandleContent($list); + + // 消息主数据 + $data = empty($_REQUEST['message_id']) ? array() : M('AlipayLifeMessage')->find(I('message_id')); + $this->assign('data', $data); + $this->assign('msg_type', $data['msg_type']); + + // 参数 + $this->assign('params', $params); + + // 数据列表 + $this->assign('list', $list); + $this->assign('list_count', count($list)); + $this->display('ContentIndex'); + } + + /** + * 消息内容处理 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-29 + * @desc description + * @param [array] $data [轮播图片数据] + * @return [array] [处理好的数据] + */ + private function SetDataHandleContent($data) + { + if(!empty($data)) + { + $common_send_status_list = L('common_send_status_list'); + $alipay_life_message_msg_type_list = L('alipay_life_message_msg_type_list'); + $alipay_life_message_send_type_list = L('alipay_life_message_send_type_list'); + foreach($data as &$v) + { + // image_url + $v['image_url'] = empty($v['image_url']) ? '' : C('IMAGE_HOST').$v['image_url']; + + // 时间 + $v['add_time'] = date('Y-m-d H:i:s', $v['add_time']); + $v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']); + } + } + return $data; + } + + /** + * 内容添加/编辑页面 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-29 + * @desc description + */ + public function ContentSaveInfo() + { + // 主数据 + $message = empty($_REQUEST['message_id']) ? array() : M('AlipayLifeMessage')->find(I('message_id')); + + // 数据 + $data = empty($_REQUEST['id']) ? array() : M('AlipayLifeMessageContent')->find(I('id')); + $this->assign('data', $data); + + // 消息类型 + $this->assign('alipay_life_message_msg_type_list', L('alipay_life_message_msg_type_list')); + $this->assign('msg_type', $message['msg_type']); + + // 参数 + $this->assign('params', array_merge($_POST, $_GET)); + $this->display('ContentSaveInfo'); + } + /** * [Save 生活号消息保存] * @author Devil @@ -250,6 +358,25 @@ class AlipayLifeMessageController extends CommonController $this->ajaxReturn($ret['msg'], $ret['code'], $ret['data']); } + /** + * [ContentSave 生活号消息内容保存] + * @author Devil + * @blog http://gong.gg/ + * @version 0.0.1 + * @datetime 2016-12-25T22:36:12+0800 + */ + public function ContentSave() + { + // 是否ajax请求 + if(!IS_AJAX) + { + $this->error(L('common_unauthorized_access')); + } + + $ret = AlipayLifeService::MessageContentAdd($_POST); + $this->ajaxReturn($ret['msg'], $ret['code'], $ret['data']); + } + /** * [Delete 生活号消息删除] * @author Devil @@ -293,5 +420,25 @@ class AlipayLifeMessageController extends CommonController $ret = AlipayLifeService::MessageSubmit($_POST); $this->ajaxReturn($ret['msg'], $ret['code'], $ret['data']); } + + /** + * 生活号搜索 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-29 + * @desc description + */ + public function Search() + { + // 是否ajax请求 + if(!IS_AJAX) + { + $this->error(L('common_unauthorized_access')); + } + + $ret = AlipayLifeService::AlipayLifeSearch($_POST); + $this->ajaxReturn($ret['msg'], $ret['code'], $ret['data']); + } } ?> \ No newline at end of file diff --git a/service/Application/Admin/Lang/zh-cn/alipaylifemessage.php b/service/Application/Admin/Lang/zh-cn/alipaylifemessage.php index 3e988d5a4..ceb441433 100755 --- a/service/Application/Admin/Lang/zh-cn/alipaylifemessage.php +++ b/service/Application/Admin/Lang/zh-cn/alipaylifemessage.php @@ -10,6 +10,7 @@ return array( // 添加/编辑 'alipay_life_message_add_name' => '生活号消息创建', + 'alipay_life_message_content_title' => '生活号消息内容', 'alipay_life_message_life_text' => '生活号', 'alipay_life_message_life_format' => '请选择生活号', @@ -34,8 +35,9 @@ return array( 'alipay_life_message_keywords_text' => '标题', - 'alipay_life_message_type_text' => '消息类型', - 'alipay_life_message_type_list' => array( + 'alipay_life_message_msg_type_text' => '消息类型', + 'alipay_life_message_msg_type_format' => '请选择消息类型', + 'alipay_life_message_msg_type_list' => array( 0 => array('value' => 0, 'name' => '文本'), 1 => array('value' => 1, 'name' => '图文'), ), @@ -50,5 +52,10 @@ return array( 'alipay_life_message_user_text' => '给用户发送消息', 'alipay_life_message_startup_time_text' => '发送启动时间', 'alipay_life_message_success_time_text' => '发送完成时间', + + 'alipay_life_message_optional_text' => '可选', + 'alipay_life_message_selected_text' => '已选', + 'alipay_life_message_selected_all_text' => '全选', + 'alipay_life_message_content_text' => '内容', ); ?> \ No newline at end of file diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/ContentIndex.html b/service/Application/Admin/View/Default/AlipayLifeMessage/ContentIndex.html new file mode 100644 index 000000000..f3246030f --- /dev/null +++ b/service/Application/Admin/View/Default/AlipayLifeMessage/ContentIndex.html @@ -0,0 +1,127 @@ + + + +
+
+ + {{:L('alipay_life_message_content_title')}} + {{:L('common_operation_back')}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{:L('alipay_life_message_title_text')}}{{:L('alipay_life_message_content_text')}}{{:L('alipay_life_message_image_url_text')}}{{:L('alipay_life_message_url_text')}}{{:L('alipay_life_message_action_name_text')}}{{:L('common_more_name')}}{{:L('common_operation_name')}}
+ {{:L('common_on_fill_in_the_text')}}{{$v.title}} + + {{:L('common_on_fill_in_the_text')}}{{$v.content}} + + + + + + + {{:L('common_on_fill_in_images')}} + + + {{:L('common_on_fill_in_the_text')}}{{$v.url}} + + {{:L('common_on_fill_in_the_text')}}{{$v.action_name}} + + {{:L('common_see_more_name')}} +
+
+
+

{{:L('common_detail_content')}}

+ × +
+
+
+
{{:L('alipay_life_message_title_text')}}
+
{{:L('common_on_fill_in_the_text')}}{{$v.title}}
+ +
{{:L('alipay_life_message_content_text')}}
+
{{:L('common_on_fill_in_the_text')}}{{$v.content}}
+ +
{{:L('alipay_life_message_image_url_text')}}
+
+ + + + {{:L('common_on_fill_in_images')}} + +
+ +
{{:L('alipay_life_message_url_text')}}
+
{{:L('common_not_set_text')}}{{$v.url}}
+ +
{{:L('alipay_life_message_action_name_text')}}
+
{{:L('common_on_fill_in_the_text')}}{{$v.action_name}}
+ +
{{:L('common_create_time_name')}}
+
{{$v.add_time}}
+ +
{{:L('common_upd_time_name')}}
+
{{$v.upd_time}}
+
+
+
+
+
+ + + + + + + +
{{:L('common_not_data_tips')}}
+ + + + + {{$page_html}} + + +
+
+ + + + + \ No newline at end of file diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/ContentSaveInfo.html b/service/Application/Admin/View/Default/AlipayLifeMessage/ContentSaveInfo.html new file mode 100644 index 000000000..1147886d4 --- /dev/null +++ b/service/Application/Admin/View/Default/AlipayLifeMessage/ContentSaveInfo.html @@ -0,0 +1,63 @@ + + + +
+
+ +
+ + + {{:L('alipay_life_message_add_name')}} + {{:L('common_operation_back')}} + + +
+ + {{$data.title}}" required /> +
+ +
+ + +
+ + +
+ + + {{$data.image_url}}" required /> + +
+ + + + + + +
+ +
+ + {{$data.url}}" required /> +
+ +
+ + {{$data.action_name}}" /> +
+
+
+ + + +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/Index.html b/service/Application/Admin/View/Default/AlipayLifeMessage/Index.html index 8800c1757..94167b923 100755 --- a/service/Application/Admin/View/Default/AlipayLifeMessage/Index.html +++ b/service/Application/Admin/View/Default/AlipayLifeMessage/Index.html @@ -6,37 +6,37 @@
- value="{{$param.keyword}}" /> + value="{{$params.keyword}}" /> -
none"> +
none">
- value="{{$param.time_start}}"/> + value="{{$params.time_start}}"/> ~ - value="{{$param.time_end}}"/> + value="{{$params.time_end}}"/>
@@ -53,13 +53,8 @@ - + - - - - - @@ -71,27 +66,6 @@ - - - - - diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/Nav.html b/service/Application/Admin/View/Default/AlipayLifeMessage/Nav.html index feaf91458..b13a72aa1 100644 --- a/service/Application/Admin/View/Default/AlipayLifeMessage/Nav.html +++ b/service/Application/Admin/View/Default/AlipayLifeMessage/Nav.html @@ -1,7 +1,7 @@
    - -
  • class="am-active" data-type="{{$v.value}}"> - {{$v.name}} + +
  • class="am-active" data-type="{{$v.value}}"> + {{$v.name}}
\ No newline at end of file diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfo.html b/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfo.html index abad3fcbc..d104b3bcd 100755 --- a/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfo.html +++ b/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfo.html @@ -11,83 +11,86 @@ {{:L('common_operation_back')}} - - - +
+ + +
- - -
- - -
- - -
-
+ + + + + + +
+ + +
- -
- - -
-
-
- - + +
-
- - -
- -
- - -
- - -
- - - - -
- -
- -
- - -
- -
- - + + +
+ +
+ + + +
+
+ {{:implode(',', json_decode($data['alipay_life_ids'], true))}}" data-validation-message="{{:L('alipay_life_message_life_format')}}" required /> +
+
{{:L('alipay_life_message_optional_text')}}
+
    +
    {{:L('common_not_data_tips')}}
    +
+
+ +
+
{{:L('alipay_life_message_selected_text')}}
+
    +
    none">{{:L('common_not_data_tips')}}
    + +
  • + {{$v.name}} + +
  • +
    +
+
+
+
- + {{$params.id}}" />
diff --git a/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfoContent.html b/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfoContent.html deleted file mode 100644 index 7245ac9e1..000000000 --- a/service/Application/Admin/View/Default/AlipayLifeMessage/SaveInfoContent.html +++ /dev/null @@ -1,101 +0,0 @@ - - - -
-
- -
- - - {{:L('alipay_life_message_add_name')}} - {{:L('common_operation_back')}} - - - - - - -
- - -
- - -
- - -
-
- - -
- - -
-
- -
- - - - -
-
- -
- - -
- -
- - -
- - -
- - - - -
- -
- -
- - -
- -
- - -
-
-
- - -
- - -
-
- - - - - \ No newline at end of file diff --git a/service/Application/Admin/View/Default/AlipayLifeUser/Index.html b/service/Application/Admin/View/Default/AlipayLifeUser/Index.html index c01945c3c..bf02ad4bf 100755 --- a/service/Application/Admin/View/Default/AlipayLifeUser/Index.html +++ b/service/Application/Admin/View/Default/AlipayLifeUser/Index.html @@ -142,7 +142,7 @@
diff --git a/service/Application/Common/Common/function.php b/service/Application/Common/Common/function.php index eb2e0de64..48918cfc0 100755 --- a/service/Application/Common/Common/function.php +++ b/service/Application/Common/Common/function.php @@ -17,17 +17,17 @@ * @desc 异步运行url地址方法 * @param [string] $url [url地址 支持get参数] */ -function SyncJob($url) +function SyncJob($url, $port = 80, $time = 30) { $url_str = str_replace(array('http://', 'https://'), '', $url); $location = strpos($url_str, '/'); $host = substr($url_str, 0, $location); - header("Content-Type: text/html; charset=utf-8"); - $fp = fsockopen($host, 80, $errno, $errstr, 3); + $fp = fsockopen($host, $port, $errno, $errstr, $time); if($fp) { - $out = "GET $url HTTP/1.1\r\n"; - $out .= "Host: $host\r\n"; + $out = "GET ".str_replace($host, '', $url_str)." HTTP/1.1\r\n"; + $out .= "Host: ".$host."\r\n"; + $out .= "Content-type: application/x-www-form-urlencoded\r\n"; $out .= "Connection: Close\r\n\r\n"; fputs($fp, $out); fclose($fp); diff --git a/service/Application/Library/AlipayLife.class.php b/service/Application/Library/AlipayLife.class.php index 2b2d1d820..0fab1bf23 100644 --- a/service/Application/Library/AlipayLife.class.php +++ b/service/Application/Library/AlipayLife.class.php @@ -349,6 +349,84 @@ class AlipayLife ]; } + /** + * 消息发送 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-24 + * @desc description + * @param [array] $data [输入参数] + */ + public function MessageSend($params = []) + { + // 参数处理 + $p = $this->RequestCommonParams(); + $p['method'] = $params['method']; + $biz_content = [ + 'msg_type' => ($params['msg_type'] == 0) ? 'text' : 'image-text', + 'chat' => isset($params['chat']) ? intval($params['chat']) : 0, + ]; + + // 消息内容 + if(empty($params['content']) || !is_array($params['content'])) + { + return ['status'=>-1, 'msg'=>'消息内容有误']; + } + + // 发送类型 单条 + if($params['send_type'] == 0) + { + if(empty($params['alipay_openid'])) + { + return ['status'=>-1, 'msg'=>'指定用户openid不能为空']; + } + $biz_content['to_user_id'] = $params['alipay_openid']; + } + + // 消息类型 + if($params['msg_type'] == 1) + { + $biz_content['articles'] = []; + foreach($params['content'] as $k=>$v) + { + if($k < 10) + { + $biz_content['articles'][] = [ + 'title' => $v['title'], + 'desc' => $v['content'], + 'image_url' => $v['out_image_url'], + 'url' => $v['url'], + 'action_name' => $v['action_name'], + ]; + } + } + } else { + $biz_content['text'] = ['content'=>$params['content'][0]['content']]; + } + $p['biz_content'] = json_encode($biz_content, JSON_UNESCAPED_UNICODE); + + // 生成签名 + $p['sign'] = $this->MyRsaSign($this->ArrayToUrlString($p)); + + // 请求接口 + $result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $p); + $key = str_replace('.', '_', $p['method']).'_response'; + + // 验证签名 + if(!$this->SyncRsaVerify($result, $key)) + { + return ['status'=>-1, 'msg'=>'签名验证错误']; + } + + // 状态 + if(isset($result[$key]['code']) && $result[$key]['code'] == 10000) + { + return ['status'=>0, 'msg'=>'发送成功']; + } + return ['status'=>-100, 'msg'=>$result[$key]['sub_msg'].'['.$result[$key]['code'].']']; + } + /** * 单条消息发送 * @author Devil @@ -360,46 +438,8 @@ class AlipayLife */ public function CustomSend($params = []) { - // 参数处理 - $p = $this->RequestCommonParams(); - $p['method'] = 'alipay.open.public.message.custom.send'; - $biz_content = [ - 'to_user_id' => $params['alipay_openid'], - 'msg_type' => ($params['msg_type'] == 0) ? 'text' : 'image-text', - 'chat' => 0, - ]; - if($params['msg_type'] == 1) - { - $biz_content['articles'][] = [ - 'title' => isset($params['title']) ? $params['title'] : '', - 'desc' => $params['content'], - 'image_url' => $params['out_image_url'], - 'url' => $params['url'], - 'action_name' => isset($params['action_name']) ? $params['action_name'] : '', - ]; - } else { - $biz_content['text'] = ['content'=>$params['content']]; - } - $p['biz_content'] = json_encode($biz_content, JSON_UNESCAPED_UNICODE); - - // 生成签名 - $p['sign'] = $this->MyRsaSign($this->ArrayToUrlString($p)); - - // 请求接口 - $result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $p); - - // 验证签名 - if(!$this->SyncRsaVerify($result, 'alipay_open_public_message_custom_send_response')) - { - return ['status'=>-1, 'msg'=>'签名验证错误']; - } - - // 状态 - if(isset($result['alipay_open_public_message_custom_send_response']['code']) && $result['alipay_open_public_message_custom_send_response']['code'] == 10000) - { - return ['status'=>0, 'msg'=>'发送成功']; - } - return ['status'=>-100, 'msg'=>$result['alipay_open_public_message_custom_send_response']['sub_msg'].'['.$result['alipay_open_public_message_custom_send_response']['code'].']']; + $params['method'] = 'alipay.open.public.message.custom.send'; + return $this->MessageSend($params); } /** @@ -413,48 +453,8 @@ class AlipayLife */ public function GroupSend($params = []) { - // 参数处理 - $p = $this->RequestCommonParams(); - $p['method'] = 'alipay.open.public.message.total.send'; - $biz_content = [ - 'msg_type' => ($params['msg_type'] == 0) ? 'text' : 'image-text', - 'chat' => 0, - ]; - if($params['msg_type'] == 1) - { - $biz_content['articles'][] = [ - 'title' => $params['title'], - 'desc' => $params['content'], - 'image_url' => $params['out_image_url'], - 'url' => $params['url'], - 'action_name' => isset($params['action_name']) ? $params['action_name'] : '', - ]; - } else { - $biz_content['text'] = [ - 'content' => $params['content'], - 'title' => $params['title'], - ]; - } - $p['biz_content'] = json_encode($biz_content, JSON_UNESCAPED_UNICODE); - - // 生成签名 - $p['sign'] = $this->MyRsaSign($this->ArrayToUrlString($p)); - - // 请求接口 - $result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $p); - - // 验证签名 - if(!$this->SyncRsaVerify($result, 'alipay_open_public_message_total_send_response')) - { - return ['status'=>-1, 'msg'=>'签名验证错误']; - } - - // 状态 - if(isset($result['alipay_open_public_message_total_send_response']['code']) && $result['alipay_open_public_message_total_send_response']['code'] == 10000) - { - return ['status'=>0, 'msg'=>'发送成功']; - } - return ['status'=>-100, 'msg'=>$result['alipay_open_public_message_total_send_response']['sub_msg'].'['.$result['alipay_open_public_message_total_send_response']['code'].']']; + $params['method'] = 'alipay.open.public.message.total.send'; + return $this->MessageSend($params); } /** diff --git a/service/Application/Runtime/Temp/8cde93cbd070139d84f31d26f8ea8f4d.php b/service/Application/Runtime/Temp/8cde93cbd070139d84f31d26f8ea8f4d.php index a908931fa..b6f7ecd91 100644 --- a/service/Application/Runtime/Temp/8cde93cbd070139d84f31d26f8ea8f4d.php +++ b/service/Application/Runtime/Temp/8cde93cbd070139d84f31d26f8ea8f4d.php @@ -1,3 +1,3 @@ \ No newline at end of file diff --git a/service/Application/Runtime/Temp/a58f8070835be94249ea77f3601c6647.php b/service/Application/Runtime/Temp/a58f8070835be94249ea77f3601c6647.php index 863cdab25..754b0f684 100644 --- a/service/Application/Runtime/Temp/a58f8070835be94249ea77f3601c6647.php +++ b/service/Application/Runtime/Temp/a58f8070835be94249ea77f3601c6647.php @@ -1,3 +1,3 @@ \ No newline at end of file diff --git a/service/Application/Service/AlipayLifeService.class.php b/service/Application/Service/AlipayLifeService.class.php index f15bd6eb5..bdf6da61f 100644 --- a/service/Application/Service/AlipayLifeService.class.php +++ b/service/Application/Service/AlipayLifeService.class.php @@ -29,15 +29,64 @@ class AlipayLifeService return $ret; } - // 开始处理业务 + // 数据项 $data = [ 'user_id' => isset($params['user_id']) ? intval($params['user_id']) : 0, 'alipay_life_user_id' => isset($params['alipay_life_user_id']) ? intval($params['alipay_life_user_id']) : 0, - 'alipay_life_id' => empty($params['alipay_life_id']) ? 0 : intval($params['alipay_life_id']), - 'alipay_life_category_id' => empty($params['alipay_life_category_id']) ? '' : json_encode(explode(',', $params['alipay_life_category_id'])), - 'type' => intval($params['type']), + 'alipay_life_ids' => empty($params['alipay_life_ids']) ? 0 : json_encode(explode(',', $params['alipay_life_ids'])), + 'msg_type' => intval($params['msg_type']), 'send_type' => intval($params['send_type']), 'status' => 0, + ]; + + // 开始处理业务 + $status = false; + $m = M('AlipayLifeMessage'); + if(empty($params['id'])) + { + $data['add_time'] = time(); + if($m->add($data)) + { + $status = true; + $msg = L('common_operation_add_success'); + } else { + $msg = L('common_operation_add_error'); + } + } else { + $data['upd_time'] = time(); + if($m->where(array('id'=>intval(I('id'))))->save($data)) + { + $status = true; + $msg = L('common_operation_edit_success'); + } else { + $msg = L('common_operation_edit_error'); + } + } + + return DataReturn($msg, $status ? 0 : -100); + } + + /** + * 消息添加 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-24 + * @desc description + * @param [array] $params [输入参数] + */ + public static function MessageContentAdd($params = []) + { + // 参数校验 + $ret = self::MessageContentAddCheck($params); + if($ret['code'] != 0) + { + return $ret; + } + + // 开始处理业务 + $data = [ + 'alipay_life_message_id' => intval($params['message_id']), 'title' => I('title', '', null, $params), 'content' => I('content', '', null, $params), 'url' => I('url', '', null, $params), @@ -57,14 +106,15 @@ class AlipayLifeService $data['image_url'] = $ret['data']['url']; // 图片上传至支付宝 - $alipay_life_id = $data['alipay_life_id']; - if(empty($alipay_life_id)) + $alipay_life_message = M('AlipayLifeMessage')->find($data['alipay_life_message_id']); + if(!empty($alipay_life_message)) { - if($data['send_type'] == 1 && !empty($data['alipay_life_category_id'])) + if($alipay_life_message['send_type'] == 1 && !empty($alipay_life_message['alipay_life_ids'])) { - $alipay_life_id = M('AlipayLifeCategoryJoin')->where(['alipay_life_category_id'=>json_decode($data['alipay_life_category_id'], true)[0]])->getField('alipay_life_id'); + $alipay_life_ids = json_decode($alipay_life_message['alipay_life_ids'], true); + $$alipay_life_id = isset($alipay_life_ids[0]) ? $alipay_life_ids[0] : ''; } else { - $alipay_life_id = M('AlipayLifeUser')->where(['id'=>$data['alipay_life_user_id']])->getField('alipay_life_id'); + $alipay_life_id = M('AlipayLifeUser')->where(['id'=>$alipay_life_message['alipay_life_user_id']])->getField('alipay_life_id'); } } if(!empty($alipay_life_id)) @@ -76,11 +126,31 @@ class AlipayLifeService } } - if(M('AlipayLifeMessage')->add($data)) + // 开始处理业务 + $status = false; + $m = M('AlipayLifeMessageContent'); + if(empty($params['id'])) { - return DataReturn(L('common_operation_add_success'), 0); + $data['add_time'] = time(); + if($m->add($data)) + { + $status = true; + $msg = L('common_operation_add_success'); + } else { + $msg = L('common_operation_add_error'); + } + } else { + $data['upd_time'] = time(); + if($m->where(array('id'=>intval(I('id'))))->save($data)) + { + $status = true; + $msg = L('common_operation_edit_success'); + } else { + $msg = L('common_operation_edit_error'); + } } - return DataReturn(L('common_operation_add_error'), -100); + + return DataReturn($msg, $status ? 0 : -100); } /** @@ -98,7 +168,7 @@ class AlipayLifeService $p = [ [ 'checked_type' => 'in', - 'key_name' => 'type', + 'key_name' => 'msg_type', 'checked_data' => [0,1], 'error_msg' => '消息类型有误', ], @@ -108,6 +178,65 @@ class AlipayLifeService 'checked_data' => [0,1], 'error_msg' => '发送类型有误', ], + ]; + $ret = params_checked($params, $p); + if($ret !== true) + { + return DataReturn($ret, -1); + } + + // 发送类型 + $p = []; + if($params['send_type'] == 0) + { + $p[] = [ + 'checked_type' => 'empty', + 'key_name' => 'user_id', + 'error_msg' => '指定用户id有误', + ]; + $p[] = [ + 'checked_type' => 'empty', + 'key_name' => 'alipay_life_user_id', + 'error_msg' => '指定用户生活号关联id有误', + ]; + $p[] = [ + 'checked_type' => 'empty', + 'key_name' => 'alipay_life_ids', + 'error_msg' => '指定用户生活号id有误', + ]; + } + + // 验证 + if(!empty($p)) + { + $ret = params_checked($params, $p); + if($ret !== true) + { + return DataReturn($ret, -1); + } + } + + return DataReturn('验证成功', 0); + } + + /** + * 消息内容添加参数校验 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-24 + * @desc description + * @param [array] $params [输入参数] + */ + public static function MessageContentAddCheck($params = []) + { + // 基础参数 + $p = [ + [ + 'checked_type' => 'empty', + 'key_name' => 'message_id', + 'error_msg' => '消息id有误', + ], [ 'checked_type' => 'empty', 'key_name' => 'title', @@ -125,35 +254,8 @@ class AlipayLifeService return DataReturn($ret, -1); } - // 发送类型 - $p = []; - switch($params['send_type']) - { - // 单条 - case 0 : - $p[] = [ - 'checked_type' => 'empty', - 'key_name' => 'user_id', - 'error_msg' => '指定用户id有误', - ]; - $p[] = [ - 'checked_type' => 'empty', - 'key_name' => 'alipay_life_user_id', - 'error_msg' => '指定生活号用户id有误', - ]; - break; - - // 批量 - case 1 : - if(empty($params['alipay_life_category_id']) && empty($params['alipay_life_id'])) - { - return DataReturn('批量id有误', -1); - } - break; - - } - // 图文 + $p = []; if($params['type'] == 1) { // 图片 @@ -317,13 +419,7 @@ class AlipayLifeService $data = []; if($message['send_type'] == 1) { - if(!empty($message['alipay_life_category_id'])) - { - $category_all = json_decode($message['alipay_life_category_id'], true); - $alipay_life_all = M('AlipayLifeCategoryJoin')->where(['alipay_life_category_id'=>['in', $category_all]])->group('alipay_life_id')->getField('alipay_life_id', true); - } else { - $alipay_life_all = [$message['alipay_life_id']]; - } + $alipay_life_all = json_decode($message['alipay_life_ids'], true); foreach($alipay_life_all as $alipay_life_id) { $data[] = [ @@ -352,8 +448,8 @@ class AlipayLifeService { if($m->where(['id'=>$message['id']])->save(['status'=>1, 'send_startup_time'=>time(), 'upd_time'=>time()]) !== false) { - self::SyncJobSend($message['id']); $m->commit(); + self::SyncJobSend($message['id']); return DataReturn(L('common_submit_success'), 0); } } @@ -410,19 +506,17 @@ class AlipayLifeService // 发送消息类型 if($message['send_type'] == 1) { - if(!empty($message['alipay_life_category_id'])) - { - $category_all = json_decode($message['alipay_life_category_id'], true); - $alipay_life_all = M('AlipayLifeCategoryJoin')->where(['alipay_life_category_id'=>['in', $category_all]])->group('alipay_life_id')->getField('alipay_life_id', true); - } else { - $alipay_life_all = [$message['alipay_life_id']]; - } + $alipay_life_all = json_decode($message['alipay_life_ids'], true); } else { $alipay_life_all = [M('AlipayLifeUser')->where(['id'=>$message['alipay_life_user_id']])->getField('alipay_life_id')]; } - // 消息类型 - $message['msg_type'] = $message['type']; + // 消息内容 + $message['content'] = M('AlipayLifeMessageContent')->field('id,title,content,out_image_url,url,action_name')->where(['alipay_life_message_id'=>$message['id']])->select(); + if(empty($message['content'])) + { + die('[time:'.date('Y-m-d H:i:s')."][msg:{$message['id']}消息内容为空]\n\n"); + } // 生活号循环处理 $detail_m = M('AlipayLifeMessageDetail'); @@ -475,5 +569,41 @@ class AlipayLifeService // end die('[end_time:'.date('Y-m-d H:i:s')."][msg:处理结束]\n\n"); } + + /** + * 生活号搜索 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2018-10-29 + * @desc description + * @param array $params [description] + */ + public static function AlipayLifeSearch($params = []) + { + $where = ['l.is_shelves'=>1]; + + // 分类 + if(!empty($params['category_id'])) + { + $where['lc.alipay_life_category_id'] = intval($params['category_id']); + } + + // 关键字 + if(!empty($params['keywords'])) + { + $where['l.name'] = ['like', '%'.I('keywords', '', '', $params).'%']; + } + + // 查询数据 + $data = M('AlipayLife')->alias('l')->join(' INNER JOIN __ALIPAY_LIFE_CATEGORY_JOIN__ AS lc ON l.id=lc.alipay_life_id')->field('l.id,l.name')->group('l.id')->where($where)->select(); + + if(empty($data)) + { + return DataReturn(L('common_not_data_tips'), -100); + } else { + return DataReturn(L('common_operation_success'), 0, $data); + } + } } ?> \ No newline at end of file diff --git a/service/Public/Admin/Default/Css/AlipayLifeMessage.css b/service/Public/Admin/Default/Css/AlipayLifeMessage.css index 150222433..27a346e6e 100755 --- a/service/Public/Admin/Default/Css/AlipayLifeMessage.css +++ b/service/Public/Admin/Default/Css/AlipayLifeMessage.css @@ -15,4 +15,78 @@ } @media only screen and (max-width: 321px) { .view-operation button { margin: 2px 0px; } +} + +/** + * 详情 + */ +.life-container .life-form-category, .life-container .chosen-container, .life-container .life-form-keywords { + width: 30% !important; +} +.life-container .chosen-container, .life-container .life-form-keywords { + display: -webkit-inline-box !important; +} +.life-container .chosen-single { + width: 100%; +} +.life-container .life-form { + margin-bottom: 2px; +} +.life-list { + overflow: hidden; + margin-bottom: 20px; + position: relative; +} +.life-list .life-items { + width: calc(50% - 50px); + height: 300px; +} +.life-list .life-items .title { + text-align: center; +} +.life-list .life-items .life-content { + border: 1px solid #eee; + height: calc(100% - 25px); + overflow-y: scroll; + overflow-x: hidden; + border-radius: 2px; +} +.life-list .life-items .life-content li { + padding: 5px; + border-style: dotted; + border-color: #eaeaea; + border-width: 1px 0; +} +.life-list .life-items .life-content li:nth-child(2) { + border-top: 0; +} +.life-list .life-items .life-content li i { + cursor: pointer; + padding: 0 10px 0 5px; +} +.life-list .selected-all { + position: absolute; + top: 50%; + left: calc(50% - 30px); +} +.life-container input[name="alipay_life_ids"] { + position: absolute; + left: -1000000px; + top: -1000000px; +} +.life-list i { + color: #888 !important; +} +.am-form-error .life-items .life-content { + border-color: #dd514c; +} +@media only screen and (max-width: 641px) { + .life-container .life-form-category, .life-container .life-form-keywords + { + width: calc(55% - 60px) !important; + display: -webkit-inline-box !important; + } + .life-container .chosen-container { + display: none !important; + } } \ No newline at end of file diff --git a/service/Public/Admin/Default/Js/AlipayLifeMessage.js b/service/Public/Admin/Default/Js/AlipayLifeMessage.js index b13ff9b87..5bdf77088 100644 --- a/service/Public/Admin/Default/Js/AlipayLifeMessage.js +++ b/service/Public/Admin/Default/Js/AlipayLifeMessage.js @@ -5,18 +5,47 @@ $(function() { if($('ul.ul-right').find('.items-li-'+value).length == 0) { - var html = '
  • '+name+'
  • '; + var html = '
  • '+name+'
  • '; $('ul.ul-right').append(html); } + + // 右侧数据同步 + RightElementAlipayLife(); + + // 左侧是否还有内容 + if($('ul.ul-left li').length == 0) + { + $('ul.ul-left .table-no').removeClass('none'); + } else { + $('ul.ul-left .table-no').addClass('none'); + } + } + + // 批量-生活号id同步 + function RightElementAlipayLife() + { + var value_all = []; + $('ul.ul-right li').each(function(k, v) + { + value_all[k] = $(this).find('span.name').data('value'); + }); + $('.life-container input[name="alipay_life_ids"]').val(value_all.join(',')).blur(); + + // 右侧是否还有数据 + if($('ul.ul-right li').length == 0) + { + $('ul.ul-right .table-no').removeClass('none'); + } else { + $('ul.ul-right .table-no').addClass('none'); + } } // 左侧点击到右侧 - $('ul.ul-left i.am-icon-angle-right').on('click', function() + $('ul.ul-left').on('click', 'i.am-icon-angle-right', function() { var value = $(this).prev().data('value'); var name = $(this).prev().text(); - RightElementAdd(value, name); $(this).parent().remove(); - return false; + RightElementAdd(value, name); }); // 左侧全部移动到右侧 @@ -26,16 +55,53 @@ $(function() { var value = $(this).find('span.name').data('value'); var name = $(this).find('span.name').text(); - RightElementAdd(value, name); $(this).remove(); + RightElementAdd(value, name); }); }); // 右侧删除 - $('ul.ul-right i.am-icon-trash-o').on('click', function() + $('ul.ul-right').on('click', 'i.am-icon-trash-o', function() { $(this).parent().remove(); - return false; + RightElementAlipayLife(); + }); + + // 生活号搜索 + $('.life-form .search-submit').on('click', function() + { + var category_id = $('.life-form .life-form-category').val(); + var keywords = $('.life-form .life-form-keywords').val(); + console.log(category_id, keywords) + + // ajax请求 + $.ajax({ + url:$('.life-form').data('search-url'), + type:'POST', + dataType:"json", + timeout:10000, + data:{"category_id": category_id, "keywords": keywords}, + success:function(result) + { + if(result.code == 0) + { + var html = ''; + for(var i in result.data) + { + html += '
  • '+result['data'][i]['name']+'
  • '; + } + $('ul.ul-left .table-no').addClass('none'); + $('ul.ul-left li').remove(); + $('ul.ul-left').append(html); + } else { + Prompt(result.msg); + } + }, + error:function() + { + Prompt('网络异常错误'); + } + }); }); }); \ No newline at end of file diff --git a/service/Public/Upload/alipay_life_message/2018/10/29/2018102918192237114.png b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918192237114.png new file mode 100644 index 000000000..41127360e Binary files /dev/null and b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918192237114.png differ diff --git a/service/Public/Upload/alipay_life_message/2018/10/29/2018102918193238310.png b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918193238310.png new file mode 100644 index 000000000..4d0f502d8 Binary files /dev/null and b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918193238310.png differ diff --git a/service/Public/Upload/alipay_life_message/2018/10/29/2018102918194343693.png b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918194343693.png new file mode 100644 index 000000000..352e294c5 Binary files /dev/null and b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918194343693.png differ diff --git a/service/Public/Upload/alipay_life_message/2018/10/29/2018102918195581164.png b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918195581164.png new file mode 100644 index 000000000..f62967f17 Binary files /dev/null and b/service/Public/Upload/alipay_life_message/2018/10/29/2018102918195581164.png differ
    {{:L('alipay_life_message_type_text')}}{{:L('alipay_life_message_msg_type_text')}} {{:L('alipay_life_message_send_type_text')}}{{:L('alipay_life_message_title_text')}}{{:L('alipay_life_message_content_text')}}{{:L('alipay_life_message_image_url_text')}}{{:L('alipay_life_message_url_text')}}{{:L('alipay_life_message_action_name_text')}} {{:L('common_view_status_title')}} {{:L('common_more_name')}} {{:L('common_operation_name')}}
    {{$v.type_name}} {{$v.send_type_name}} - {{:L('common_on_fill_in_the_text')}}{{$v.title}} - - {{:L('common_on_fill_in_the_text')}}{{$v.content}} - - - - - - - {{:L('common_on_fill_in_images')}} - - - {{:L('common_on_fill_in_the_text')}}{{$v.url}} - - {{:L('common_on_fill_in_the_text')}}{{$v.action_name}} - {{$v.status_name}} {{:L('common_see_more_name')}} @@ -103,38 +77,17 @@
    -
    {{:L('alipay_life_message_type_text')}}
    +
    {{:L('alipay_life_message_msg_type_text')}}
    {{:L('common_on_fill_in_the_text')}}{{$v.type_name}}
    {{:L('alipay_life_message_send_type_text')}}
    {{:L('common_on_fill_in_the_text')}}{{$v.send_type_name}}
    -
    {{:L('alipay_life_message_title_text')}}
    -
    {{:L('common_on_fill_in_the_text')}}{{$v.title}}
    - -
    {{:L('alipay_life_message_content_text')}}
    -
    {{:L('common_on_fill_in_the_text')}}{{$v.content}}
    - -
    {{:L('alipay_life_message_category_text')}}
    -
    {{:L('common_on_fill_in_the_text')}}{{:implode(',', $v['category_all'])}}
    -
    {{:L('alipay_life_message_life_text')}}
    -
    {{:L('common_on_fill_in_the_text')}}{{$v.alipay_life_name}}
    +
    {{:L('common_on_fill_in_the_text')}}{{:implode(',', $v['alipay_life_all'])}}
    -
    {{:L('alipay_life_message_image_url_text')}}
    -
    - - - - {{:L('common_on_fill_in_images')}} - -
    - -
    {{:L('alipay_life_message_url_text')}}
    -
    {{:L('common_not_set_text')}}{{$v.url}}
    - -
    {{:L('alipay_life_message_action_name_text')}}
    -
    {{:L('common_on_fill_in_the_text')}}{{$v.action_name}}
    +
    {{:L('alipay_life_message_user_text')}}
    +
    {{:L('common_on_fill_in_the_text')}}{{$v.alipay_openid}}
    {{:L('common_view_status_title')}}
    {{:L('common_on_fill_in_the_text')}}{{$v.status_name}}
    @@ -158,6 +111,15 @@
    + + + + + + + + + - +