Commit 9011d217f8d95f36b37be7e4657d1ced3172ea02

Authored by luoyanshou
1 parent 46c419ee

【留言板】手机端获取留言列表实现

Showing 34 changed files with 185 additions and 2649 deletions
trunk/Message/Api/Controller/Message/MessInputController.class.php
... ... @@ -9,35 +9,63 @@
9 9 namespace Api\Controller\Message;
10 10  
11 11 use Common\Model\MessagesModel;
  12 +use Common\Model\AttachmentModel;
12 13  
13 14 class MessInputController extends \Api\Controller\AbstractController
14 15 {
15   - /**
16   - * 是否需要登录
17   - *
18   - * @var bool
19   - */
  16 + // 禁止系统自动登录
20 17 protected $_require_login = false;
21 18  
22   -
  19 + /**
  20 + * 发表留言
  21 + */
23 22 public function Index_post()
24 23 {
25   -
26 24 session_start();
27   -
28   - $data = $this->checkFields( I('post.') );
29   -
30   - if( !$data ){
  25 + $data = $this->checkFields(I('post.'));
  26 + if (!$data) {
31 27 $this->_result = "数据验证失败";
32 28 die;
33 29 }
34 30  
35 31 $messagesModel = new MessagesModel();
36 32  
37   - $messagesModel->m_uid = $_SESSION['userid'];
38   - $messagesModel->m_title = $data['title'];
39   - $messagesModel->m_content = $data['message'];
40   - $messagesModel->m_ip = $_SERVER['REMOTE_ADDR'];
  33 + $data['m_uid'] = $_SESSION['userid'];
  34 + $data['m_title'] = $data['title'];
  35 + $data['m_content'] = $data['message'];
  36 + $data['m_ip'] = $_SERVER['REMOTE_ADDR'];
  37 +
  38 + /*
  39 + * 上传图片 取得图片路径 $path_img
  40 + * $data['m_imgs'] = $path_img;
  41 + *
  42 + */
  43 + if ($_FILES['myImg']) {
  44 + // coding...
  45 + }
  46 +
  47 + $mid = $messagesModel->insert($data);
  48 + var_dump($mid);
  49 + die;
  50 +
  51 + if (($mid = $messagesModel->insert($data)) != null && $_FILES['myFile']) {
  52 + // 留言成功后开始上传附件
  53 + $attachmentModel = new AttachmentModel();
  54 + unset($data);
  55 + $data['a_mid'] = $mid;
  56 +
  57 + /**
  58 + * 附件上传实现 取得附件路径 $path_att
  59 + * $data['a_path'] = $path_att;
  60 + */
  61 + if (($aid = $attachmentModel->insert($data)) != null) {
  62 + $this->_result = "留言成功,上传附件成功。";
  63 + }else{
  64 + // 上传附件失败后 进行相应的处理
  65 + $this->_result = "上传附件失败。";
  66 + }
  67 +
  68 + }
41 69  
42 70 //$this->_result = "您已留言成功,请等待审核。";
43 71  
... ... @@ -54,19 +82,19 @@ class MessInputController extends \Api\Controller\AbstractController
54 82 $parrent = "/\ |\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\,|\.|\/|\;|\\' | \`|\-|\=|\\\|\|/";
55 83 $data = [];
56 84  
57   - if( empty($postData['title']) || strlen($postData['title'])>80 ){
  85 + if (empty($postData['title']) || strlen($postData['title'])>80) {
58 86 $this->_result = "标题不能为空且标题长度必须小于80。";
59 87 return false;
60 88  
61   - }else{
62   - $data['title'] = preg_replace( $parrent, "", $postData['title']);
  89 + } else {
  90 + $data['title'] = preg_replace($parrent, "", $postData['title']);
63 91 }
64 92  
65   - if( empty($postData['message']) || strlen($postData['message'])>500 ){
  93 + if (empty($postData['message']) || strlen($postData['message'])>500) {
66 94 $this->_result = "留言内容不能为空且长度必须小于500。";
67 95 return false;
68   - }else{
69   - $data['message'] = preg_replace( $parrent, "", $postData['message'] );
  96 + } else {
  97 + $data['message'] = preg_replace($parrent, "", $postData['message']);
70 98 }
71 99  
72 100 return $data;
... ...
trunk/Message/Api/Controller/Message/MessListController.class.php
... ... @@ -8,6 +8,7 @@
8 8  
9 9 namespace Api\Controller\Message;
10 10  
  11 +use Common\Model\MessagesModel;
11 12  
12 13 class MessListController extends \Api\Controller\AbstractController
13 14 {
... ... @@ -15,11 +16,13 @@ class MessListController extends \Api\Controller\AbstractController
15 16 protected $_require_login = false;
16 17  
17 18 /**
18   - * 构造方法
  19 + * 获取留言列表
19 20 */
20   - public function getList_post()
  21 + public function getList_get()
21 22 {
22   - $this->_result = '留言列表';
  23 + $messagesModel = new MessagesModel();
  24 +
  25 + $this->_result = $messagesModel->list_all_without_domain([intval(I('get.page'))*10,10]);
23 26 }
24 27  
25 28 }
... ...
trunk/Message/Apicp/Controller/Message/MessAuditController.class.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Dell
  5 + * Date: 2018/9/5
  6 + * Time: 14:22
  7 + */
  8 +
  9 +namespace Apicp\Controller\Message;
  10 +
  11 +use Common\Model\MessagesModel;
  12 +
  13 +/**
  14 + * 留言审核
  15 + * Class MessAuditController
  16 + * @package Apicp\Controller\Message
  17 + */
  18 +class MessAuditController extends \Apicp\Controller\AbstractController
  19 +{
  20 + public function Audit_post(){
  21 +
  22 + }
  23 +}
... ...
trunk/Message/Apicp/Controller/Message/MessDelController.class.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Dell
  5 + * Date: 2018/9/5
  6 + * Time: 14:25
  7 + */
  8 +
  9 +namespace Apicp\Controller\Message;
  10 +
  11 +use Common\Model\MessagesModel;
  12 +use Common\Model\AttachmentModel;
  13 +
  14 +/**
  15 + * 删除留言
  16 + * Class MessDelController
  17 + * @package Apicp\Controller\Message
  18 + */
  19 +class MessDelController extends \Apicp\Controller\AbstractController
  20 +{
  21 + public function Del_post()
  22 + {
  23 +
  24 + }
  25 +}
... ...
trunk/Message/Apicp/Controller/Message/MessDetailController.class.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Dell
  5 + * Date: 2018/9/5
  6 + * Time: 14:28
  7 + */
  8 +
  9 +namespace Apicp\Controller\Message;
  10 +
  11 +use Common\Model\MessagesModel;
  12 +use Common\Model\AttachmentModel;
  13 +
  14 +/**
  15 + * 获取留言详情
  16 + * Class MessDetailController
  17 + * @package Apicp\Controller\Message
  18 + */
  19 +class MessDetailController extends \Apicp\Controller\AbstractController
  20 +{
  21 + public function getDetail()
  22 + {
  23 +
  24 + }
  25 +}
... ...
trunk/Message/Apicp/Controller/Message/MessListController.class.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Dell
  5 + * Date: 2018/9/5
  6 + * Time: 14:15
  7 + */
  8 +
  9 +namespace Apicp\Controller\Message;
  10 +
  11 +use Common\Model\MessagesModel;
  12 +
  13 +/**
  14 + * 获取留言列表
  15 + * Class MessListController
  16 + * @package Apicp\Controller\Message
  17 + */
  18 +class MessListController extends \Apicp\Controller\AbstractController
  19 +{
  20 + public function getList()
  21 + {
  22 + $messagesModel = new MessagesModel();
  23 + $this->_result = $messagesModel->list_all([intval(I('get.page')*10),10]);
  24 + }
  25 +}
... ...
trunk/Message/Apicp/Controller/News/CommentController.class.php deleted 100644 → 0
1   -<?php
2   -namespace Apicp\Controller\News;
3   -
4   -use Common\Common\Comment;
5   -use Common\Service\ArticleService;
6   -
7   -class CommentController extends \Apicp\Controller\AbstractController
8   -{
9   -
10   - /**
11   -
12   - * DeleteComment
13   - *
14   - * @author tangxingguo
15   -
16   - * @desc 删除新闻
17   -
18   - * @param int data_id:true 数据标识
19   -
20   - * @return null
21   -
22   - */
23   - public function Index_post()
24   - {
25   - $data_id = I('post.data_id', 0, 'trim');
26   -
27   - // 数据标识不能为空
28   - if (empty($data_id)) {
29   - E('_ERR_ARTICLE_DATA_ID_NOT_FOUND');
30   - }
31   -
32   - $articleServ = new ArticleService();
33   - $article = $articleServ->get_by_conds(['data_id' => $data_id]);
34   - if (empty($article)) {
35   - E('_ERR_ARTICLE_NOT_FOUND');
36   - }
37   -
38   - // UC获取当前评论总数
39   - $commentServ = &Comment::instance();
40   - $commentList = $commentServ->listAll(['cmtObjid' => $data_id]);
41   -
42   - // 修改课程主表数据
43   - if (isset($commentList['cmttlNums'])) {
44   - $total = $commentList['cmttlNums'];
45   - $articleServ->update_by_conds(['data_id' => $data_id], ['comment_total' => $total]);
46   - }
47   - }
48   -}
trunk/Message/Apicp/Controller/News/CompanyQrcodeController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * 获取公司二维码
4   - * User: wangjiayu
5   - * Date: 2017-12-28
6   - */
7   -namespace Apicp\Controller\News;
8   -
9   -use Common\Common\CompanyQrcode;
10   -
11   -class CompanyQrcodeController extends \Apicp\Controller\AbstractController
12   -{
13   -
14   - // 免登录
15   - protected $_require_login = false;
16   -
17   - public function Index()
18   - {
19   - // 实例化类
20   - $CompanyQrcode = &CompanyQrcode::instance();
21   -
22   - // 获取二维码
23   - $qr_code = $CompanyQrcode->showCompanyQrcode();
24   -
25   - // 返回二维码
26   - $this->_result = $qr_code;
27   - }
28   -}
trunk/Message/Apicp/Controller/News/DeleteController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 18:24
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\AttachOperation;
12   -use Common\Common\DataCenter;
13   -use Common\Common\Constant;
14   -use Common\Common\RpcFavoriteHelper;
15   -use Common\Service\ArticleService;
16   -use Common\Service\TaskService;
17   -use Common\Service\AttachService;
18   -use VcySDK\Service;
19   -use VcySDK\Cron;
20   -
21   -class DeleteController extends \Apicp\Controller\AbstractController
22   -{
23   - /**
24   - * Delete
25   - * @author zhonglei
26   - * @desc 删除新闻
27   - * @param Array article_ids:true 新闻ID数组
28   - * @return mixed
29   - */
30   - public function Index_post()
31   - {
32   - // 验证规则
33   - $rules = [
34   - 'article_ids' => 'require|array',
35   - ];
36   -
37   - // 验证数据
38   - $validate = new PackageValidate($rules, [], array_keys($rules));
39   - $postData = $validate->postData;
40   - $article_ids = $postData['article_ids'];
41   -
42   - $artServ = new ArticleService();
43   - $list = $artServ->list_by_conds(['article_id' => $article_ids]);
44   -
45   - if (empty($list)) {
46   - return true;
47   - }
48   -
49   - // 删除首页推送
50   - foreach ($article_ids as $article_id) {
51   - $artServ->delNewsRpc($article_id);
52   - }
53   -
54   - // 删除新闻
55   - $artServ->delete_by_conds(['article_id' => $article_ids]);
56   -
57   - // 删除新闻附件
58   - $attachServ = new AttachService();
59   -
60   - // 从UC附件服务器删除
61   - $attach_serv = new AttachOperation();
62   - $attach_serv->delete_attach(
63   - APP_DIR,
64   - 'article',
65   - $article_ids
66   - );
67   -
68   - // 删除业务数据库附件
69   - $attachServ->delete_by_conds(['article_id' => $article_ids]);
70   -
71   - // 删除应用数据时,RPC同步收藏状态
72   - $rpcFavorite = &RpcFavoriteHelper::instance();
73   - $rpcFavorite->updateStatus($postData['article_ids']);
74   -
75   - // 数据中心删除点赞埋点
76   - $dataCenter = &DataCenter::instance();
77   - $dataCenter->delLike($article_ids);
78   - // 数据中心删除点赞埋点
79   -
80   - // 数据中心删除评论埋点
81   - $dataCenter->delComment($article_ids);
82   - // 数据中心删除评论埋点
83   -
84   - // 数据中心删除点击量埋点
85   - $dataCenter->delClick($article_ids);
86   - // 数据中心删除点击量埋点
87   -
88   - $taskServ = new TaskService();
89   - $task_list = $taskServ->list_by_conds(['article_id' => $article_ids]);
90   -
91   - if (empty($task_list)) {
92   - return true;
93   - }
94   -
95   - $cron_ids = array_filter(array_column($task_list, 'cron_id'));
96   - $cronSdk = new Cron(Service::instance());
97   -
98   - // 删除计划任务
99   - foreach ($cron_ids as $cron_id) {
100   - $cronSdk->delete($cron_id);
101   - }
102   -
103   - return true;
104   - }
105   -}
trunk/Message/Apicp/Controller/News/ExportLikeListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 18/7/6
6   - * Time: 10:53
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Com\PythonExcel;
12   -use Common\Common\ExportDownload;
13   -use Common\Common\NewsHelper;
14   -use Common\Common\User;
15   -use Common\Service\LikeService;
16   -use Common\Service\ArticleService;
17   -
18   -class ExportLikeListController extends \Apicp\Controller\AbstractController
19   -{
20   - /**
21   - * LikeList
22   - * @desc 导出点赞列表
23   - * @param int article_id:true 新闻ID
24   - * @return mixed
25   - */
26   - public function Index_post()
27   - {
28   - // 验证规则
29   - $rules = [
30   - 'article_id' => 'require|integer',
31   - ];
32   -
33   - // 验证数据
34   - $validate = new PackageValidate($rules, [], array_keys($rules));
35   - $postData = $validate->postData;
36   -
37   - // 取新闻信息
38   - $articleServ = new ArticleService();
39   - $article = $articleServ->get($postData['article_id']);
40   - if (empty($article)) {
41   - E('_ERR_ARTICLE_NOT_FOUND');
42   - }
43   -
44   - // 点赞列表
45   - $likeServ = new LikeService();
46   - $likeList = $likeServ->list_by_conds(['article_id' => $postData['article_id']]);
47   -
48   - if ($likeList) {
49   - // UC人员信息
50   - $uids = array_column($likeList, 'uid');
51   - $userServ = &User::instance();
52   - $userList = $userServ->listAll(['memUids' => $uids]);
53   - $userList = array_combine_by_key($userList, 'memUid');
54   -
55   - // Excel文件名前缀
56   - $titleSuffix = '_点赞人员';
57   -
58   - // Excel列名
59   - $columns = ['姓名', '组织', '岗位', '角色', '手机号'];
60   -
61   - // Excel行数据
62   - $rows = [];
63   - if ($userList) {
64   - $newsHelper = &NewsHelper::instance();
65   -
66   - foreach ($likeList as $k => $v) {
67   - $uid = $v['uid'];
68   - if (isset($userList[$uid])) {
69   - $user = $userList[$uid];
70   -
71   - $rows[] = [
72   - $user['memUsername'],
73   - $newsHelper->getDpPath($user),
74   - $user['memJob'],
75   - $user['memRole'],
76   - $user['memMobile'],
77   - ];
78   - }
79   - }
80   - }
81   -
82   - $title = $article['title'] . $titleSuffix . rgmdate(MILLI_TIME, '_ymdHis');
83   - $filename = ExportDownload::get_down_dir($this->_login->user['eaId']) . $title . '.xls';
84   - $result = PythonExcel::instance()->write($filename, $columns, $rows);
85   -
86   - if ($result === true) {
87   - // 写入数据到下载中心
88   - $conditon = [
89   - 'title' => $title,
90   - 'ea_id' => $this->_login->user['eaId'],
91   - 'type' => ExportDownload::EXCEL_TYPE,
92   - 'size' => filesize($filename),
93   - 'username' => $this->_login->user['eaRealname'],
94   - 'url' => $filename,
95   - 'app_dir' => APP_DIR
96   - ];
97   -
98   - ExportDownload::insert_down_load($conditon);
99   - }
100   - }
101   -
102   - return true;
103   - }
104   -}
trunk/Message/Apicp/Controller/News/ExportReadListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 18/7/5
6   - * Time: 11:22
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PythonExcel;
11   -use Common\Common\ExportDownload;
12   -use Common\Common\NewsHelper;
13   -use Com\PackageValidate;
14   -use Common\Common\Constant;
15   -use Common\Common\User;
16   -use Common\Service\ArticleService;
17   -use Common\Service\RightService;
18   -use Common\Service\ReadService;
19   -
20   -class ExportReadListController extends \Apicp\Controller\AbstractController
21   -{
22   - /**
23   - * ExportReadList
24   - * @desc 导出阅读列表
25   - * @param Int article_id:true 新闻ID
26   - * @param Int read_type:true:1 阅读类型(1=未读,2=已读)
27   - * @param String username 姓名
28   - * @param Array dp_ids 部门ID
29   - * @param Array job_ids 职位ID
30   - * @param Array role_ids 角色ID
31   - * @return mixed
32   - */
33   - public function Index_post()
34   - {
35   - // 验证规则
36   - $rules = [
37   - 'article_id' => 'require|integer',
38   - 'read_type' => 'require|integer',
39   - 'username' => 'max:64',
40   - 'dp_ids' => 'array',
41   - 'job_ids' => 'array',
42   - 'role_ids' => 'array',
43   - ];
44   -
45   - // 验证数据
46   - $validate = new PackageValidate($rules, [], array_keys($rules));
47   - $postData = $validate->postData;
48   -
49   - // 取新闻信息
50   - $articleServ = new ArticleService();
51   - $article = $articleServ->get($postData['article_id']);
52   - if (empty($article)) {
53   - E('_ERR_ARTICLE_NOT_FOUND');
54   - }
55   -
56   - // UC筛选uid
57   - $uidCond = $this->formatConds($postData);
58   -
59   - // 获取人员ID
60   - $newsHelper = &NewsHelper::instance();
61   - list(, $uids_study, $uids_unstudy) = $newsHelper->getReadData($article['article_id'], $uidCond);
62   -
63   - // Excel列名
64   - $columns = ['姓名', '组织', '岗位', '角色', '手机号'];
65   -
66   - // 实例化对象
67   - $userServ = &User::instance();
68   -
69   - $rows = [];
70   - if ($postData['read_type'] == Constant::READ_STATUS_IS_YES) {
71   - $titleSuffix = '_已学人员';
72   - $columns[] = '阅读时间';
73   -
74   - // 已读人员列表
75   - $readConds = [
76   - 'uid' => $uids_study,
77   - 'article_id' => $postData['article_id'],
78   - ];
79   - $readServ = new ReadService();
80   - $readList = $readServ->list_by_conds($readConds);
81   -
82   - // 人员详情列表
83   - $userList = $userServ->listByUid(array_column($readList, 'uid'));
84   - $userList = array_combine_by_key($userList, 'memUid');
85   - foreach ($readList as $item) {
86   - $uid = $item['uid'];
87   - $user = $userList[$uid];
88   -
89   - // Excel行数据
90   - $rows[] = [
91   - $user['memUsername'],
92   - $newsHelper->getDpPath($user),
93   - $user['memJob'],
94   - $user['memRole'],
95   - $user['memMobile'],
96   - rgmdate($item['created'], 'Y/m/d H:i'),
97   - ];
98   - }
99   -
100   - } else {
101   - $titleSuffix = '_未学人员';
102   -
103   - if ($uids_unstudy) {
104   - $userServ = &User::instance();
105   - $userList = $userServ->listUsersAll(['memUids' => $uids_unstudy]);
106   -
107   - if ($userList) {
108   - foreach ($userList as $user) {
109   - $rows[] = [
110   - $user['memUsername'],
111   - $newsHelper->getDpPath($user),
112   - $user['memJob'],
113   - $user['memRole'],
114   - $user['memMobile'],
115   - ];
116   - }
117   - }
118   - }
119   - }
120   -
121   - $title = $article['title'] . $titleSuffix . rgmdate(MILLI_TIME, '_ymdHis');
122   - $filename = ExportDownload::get_down_dir($this->_login->user['eaId']) . $title . '.xls';
123   - $result = PythonExcel::instance()->write($filename, $columns, $rows);
124   -
125   - if ($result === true) {
126   - // 写入数据到下载中心
127   - $conditon = [
128   - 'title' => $title,
129   - 'ea_id' => $this->_login->user['eaId'],
130   - 'type' => ExportDownload::EXCEL_TYPE,
131   - 'size' => filesize($filename),
132   - 'username' => $this->_login->user['eaRealname'],
133   - 'url' => $filename,
134   - 'app_dir' => APP_DIR
135   - ];
136   -
137   - ExportDownload::insert_down_load($conditon);
138   - }
139   -
140   - return true;
141   - }
142   -
143   - /**
144   - * 将搜索条件转化为用户UID
145   - * @author tangxingguo
146   - * @param array $postData 用户提交的数据
147   - * @return array|bool
148   - */
149   - private function formatConds($postData)
150   - {
151   - $condUids = [];
152   -
153   - $userServ = &User::instance();
154   - if (isset($postData['username'])) {
155   - // UC
156   - $userConds = ['memUsername' => $postData['username']];
157   - $list = $userServ->listAll($userConds);
158   - $condUids = array_column($list, 'memUid');
159   - }
160   -
161   - // 部门、岗位、角色搜索交集
162   - $right = array_intersect_key_reserved($postData, ['dp_ids', 'job_ids', 'role_ids'], true);
163   - if (!empty($right)) {
164   - $rightServ = new RightService();
165   - $rights = $rightServ->formatPostData($right);
166   - $unitUids = $rightServ->getUidsByRight($rights);
167   - if (!empty($condUids)) {
168   - // 筛选已经有值,取交集
169   - $condUids = array_intersect($condUids, $unitUids);
170   - } else {
171   - $condUids = $unitUids;
172   - }
173   - }
174   -
175   - // 如果有查询 并且 结果为空
176   - if ((!empty($right) || !empty($postData['username'])) && empty($condUids)) {
177   - return false;
178   - }
179   -
180   - return $condUids;
181   - }
182   -}
trunk/Message/Apicp/Controller/News/InfoController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 17:06
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Common\Service\ArticleService;
11   -use Common\Service\RightService;
12   -use Common\Service\AttachService;
13   -
14   -class InfoController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   - * Info
18   - * @author liyifei
19   - * @desc 新闻详情
20   - * @param int article_id:true 新闻公告ID
21   - * @return array 新闻详情
22   - * array(
23   - 'news_status' => 1, // 新闻状态(1=草稿,2=已发布,3=预发布)
24   - 'convert_status' => 1, // 转码状态(1=转码中,2=转码成功,3=转码失败)
25   - 'article_id' => 123, // 新闻ID
26   - 'title' => '重大新闻', // 新闻标题
27   - 'cover_id' => 'b3ddbc502e307665f346cbd6e52cc10d', // 封面图片ID
28   - 'cover_url' => 'http://qy.vchangyi.org', // 封面图片地址
29   - 'is_show_cover' => 1, // 是否正文显示封面图片(1=不显示,2=显示)
30   - 'summary' => '零食增加卫龙系列', // 摘要
31   - 'parent_id' => 1, // 父分类ID
32   - 'parent_name' => '一级分类', // 父分类名称
33   - 'class_id' => 2, // 分类ID
34   - 'class_name' => '内部公告', // 分类名称
35   - 'author' => '张三', // 作者
36   - 'at_video' => array( // 视频附件
37   - array(
38   - 'at_id' => 'b3ddbc502e307665f346cbd6e52cc10d', // 附件ID
39   - 'at_name' => '小视频.mp4', // 附件名
40   - 'at_time' => '123456543000', // 音、视频类型的播放时长(单位:毫秒)
41   - 'at_size' => 10240.12, // 附件尺寸(单位KB)
42   - 'at_url' => 'http://qy.vchangyi.com', // 附件地址
43   - 'at_convert_url' => 'http://qy.vchangyi.com', // 视频转码后url
44   - 'at_suffix' => '.xml', // 附件后缀
45   - 'convert_status' => 1, // 转码状态(1=转码中,2=转码成功,3=转码失败)
46   - ),
47   - ),
48   - 'at_audio' => array( // 音频附件
49   - array(
50   - 'at_id' => 'b3ddbc502e307665f346cbd6e52cc10d', // 附件ID
51   - 'at_name' => '音频.mp3', // 附件名
52   - 'at_time' => '123456543000', // 音、视频类型的播放时长(单位:毫秒)
53   - 'at_size' => 1024.12, // 附件尺寸(单位KB)
54   - 'at_url' => 'http://qy.vchangyi.com', // 附件地址
55   - 'at_convert_url' => '', // 转码后url,音频附件为空
56   - 'at_suffix' => '.txt', // 附件后缀
57   - 'convert_status' => 2, // 转码状态(1=转码中,2=转码成功,3=转码失败)
58   - ),
59   - ),
60   - 'at_file' => array( // 文件附件
61   - array(
62   - 'at_id' => 'b3ddbc502e307665f346cbd6e52cc10d', // 附件ID
63   - 'at_name' => '文档.doc', // 附件名
64   - 'at_size' => 123.12, // 附件大小(单位:字节)
65   - 'at_url' => 'http://qy.vchangyi.com', // 附件地址
66   - 'at_convert_url' => 'http://qy.vchangyi.com', // 文件转码后url
67   - 'at_suffix' => '.xml', // 附件后缀
68   - 'convert_status' => 3, // 转码状态(1=转码中,2=转码成功,3=转码失败)
69   - ),
70   - ),
71   - 'right' => array( // 新闻阅读权限
72   - 'is_all' => 1, // 是否全公司(1=否,2=是)
73   - 'tag_list' => array(
74   - array(
75   - 'tag_id' => '3CDBB2867F0000012C7F8D28432943BB',
76   - 'tag_name' => 'liyifei001'
77   - ),
78   - ),
79   - 'dp_list' => array(
80   - array(
81   - 'dp_id' => 'B65085507F0000017D3965FCB20CA747',
82   - 'dp_name' => '一飞冲天'
83   - ),
84   - ),
85   - 'user_list' => array(
86   - array(
87   - 'uid' => 'B4B3BA5B7F00000173E870DA6ADFEA2A',
88   - 'username' => '缘来素雅',
89   - 'face' => 'http://shp.qpic.cn/bizmp/gdZUibR6BHrmiar6pZ6pLfRyZSVaXJicn2CsvKRdI9gccXRfP2NrDvJ8A/'
90   - ),
91   - )
92   - 'job_list' => array(// 职位
93   - array(
94   - 'job_id' => '62C316437F0000017AE8E6ACC7EFAC22',// 职位ID
95   - 'job_name' => '攻城狮',// 职位名称
96   - ),
97   - ),
98   - 'role_list' => array(// 角色
99   - array(
100   - 'role_id' => '62C354B97F0000017AE8E6AC4FD6F429',// 角色ID
101   - 'role_name' => '国家元首',// 角色名称
102   - ),
103   - ),
104   - ),
105   - 'is_download' => 1, // 附件是否支持下载(1=不支持,2=支持)
106   - 'is_secret' => 1, // 是否保密(1=不保密,2=保密)
107   - 'is_share' => 1, // 允许分享(1=不允许,2=允许)
108   - 'is_notice' => 1, // 消息通知(1=不开启,2=开启)
109   - 'is_comment' => 1, // 评论功能(1=不开启,2=开启)
110   - 'is_like' => 1, // 点赞功能(1=不开启,2=开启)
111   - 'is_recommend' => 1, // 首页推荐(1=不开启,2=开启)
112   - 'content' => '语言是民族的重要特征之一', // 新闻内容
113   - 'strategy_setting' => 3, // 积分策略设置(1=启用默认策略;2=不启用策略;3=自定义策略)
114   - 'strategys' => array( // 自定义策略数据(积分策略设置=2时,返回空字符串)
115   - array(
116   - 'action_key' => 'one_learning', // 触发行为key
117   - 'strategy_id' => '123', // 策略ID
118   - ),
119   - ),
120   - 'credit_strategy_setting' => 3, // 学分策略设置(1=启用默认策略;2=不启用策略;3=自定义策略)
121   - 'credit_strategys' => array( // 自定义策略数据(学分策略设置=2时,返回空字符串)
122   - array(
123   - 'action_key' => 'one_learning', // 触发行为key
124   - 'strategy_id' => '123', // 策略ID
125   - ),
126   - ),
127   - )
128   - */
129   - public function Index_post()
130   - {
131   - $article_id = I('post.article_id', 0, 'intval');
132   - $articleServ = new ArticleService();
133   - $article = $articleServ->get($article_id);
134   - if (empty($article)) {
135   - E('_ERR_ARTICLE_NOT_FOUND');
136   - }
137   -
138   - // 格式化新闻数据
139   - $formatArticle = $articleServ->formatData($article);
140   -
141   - // 格式化附件数据
142   - $user = $this->_login->user;
143   - $attachServ = new AttachService();
144   - $formatAttach = $attachServ->formatData($article['article_id'], $user);
145   -
146   - // 将格式化后的附件数据格式,从对象转为数组
147   - $formatAttach['at_audio'] = isset($formatAttach['at_audio']) ? array_values($formatAttach['at_audio']) : [];
148   - $formatAttach['at_video'] = isset($formatAttach['at_video']) ? array_values($formatAttach['at_video']) : [];
149   - $formatAttach['at_file'] = isset($formatAttach['at_file']) ? array_values($formatAttach['at_file']) : [];
150   -
151   - // 格式化新闻权限数据
152   - $rightServ = new RightService();
153   - $formatRight['right'] = $rightServ->getData(['article_id' => $article_id]);
154   -
155   - // 组合数据
156   - $data = array_merge($formatArticle, $formatRight, $formatAttach);
157   -
158   - $this->_result = $data;
159   - }
160   -}
trunk/Message/Apicp/Controller/News/LikeListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 19:10
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\User;
12   -use Common\Service\LikeService;
13   -
14   -class LikeListController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   - * LikeList
18   - * @desc 点赞列表
19   - * @param int article_id:true 新闻ID
20   - * @return array 点赞列表
21   - * array(
22   - 'list' => array( // 点赞列表
23   - 'uid' => 'B4B3BAFE7F00000173E870DA83A9751E', // 人员ID
24   - 'username' => '张三', // 人员姓名
25   - 'face' => 'http://shp.qpic.cn/bizmp/gdZUibR6BHrkuqSjvCzX33qvZpCIOaYZiaFRnciae9WgxiaWXqxkqIOyeg/', // 头像
26   - 'created' => 1434567890000, // 点赞时间
27   - ),
28   - );
29   - */
30   -
31   - public function Index_post()
32   - {
33   - // 验证规则
34   - $rules = [
35   - 'article_id' => 'require|integer',
36   - 'page' => 'integer',
37   - 'limit' => 'integer',
38   - ];
39   -
40   - // 验证数据
41   - $validate = new PackageValidate($rules, [], array_keys($rules));
42   - $postData = $validate->postData;
43   -
44   - // 点赞列表
45   - $likeServ = new LikeService();
46   - list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
47   - $likeList = $likeServ->list_by_conds(['article_id' => $postData['article_id']], [$start, $perpage]);
48   - $total = $likeServ->count_by_conds(['article_id' => $postData['article_id']]);
49   -
50   - if ($likeList) {
51   - // 人员信息
52   - $uids = array_column($likeList, 'uid');
53   - $userServ = &User::instance();
54   - $userList = $userServ->listAll(['memUids' => $uids]);
55   - $userList = array_combine_by_key($userList, 'memUid');
56   -
57   - // 合并头像
58   - if ($userList) {
59   - foreach ($likeList as $k => $v) {
60   - if (isset($userList[$v['uid']])) {
61   - $likeList[$k]['username'] = isset($userList[$v['uid']]) ? $userList[$v['uid']]['memUsername'] : '';
62   - $likeList[$k]['face'] = isset($userList[$v['uid']]) ? $userList[$v['uid']]['memFace'] : '';
63   - }
64   - }
65   - }
66   -
67   - }
68   -
69   - $this->_result = [
70   - 'list' => $likeList,
71   - 'total' => $total,
72   - 'page' => $postData['page'],
73   - 'limit' => $postData['limit']
74   - ];
75   - }
76   -}
trunk/Message/Apicp/Controller/News/ListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 15:07
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Service\ArticleService;
13   -use Common\Service\ClassService;
14   -
15   -class ListController extends \Apicp\Controller\AbstractController
16   -{
17   - /**
18   - * List
19   - * @desc 新闻列表
20   - * @ahthor liyifei
21   - * @param Int page:1 当前页(默认第一页)
22   - * @param Int limit:20 当前页条数
23   - * @param string start_time 更新开始时间(毫秒级时间戳)
24   - * @param string end_time 更新结束时间(毫秒级时间戳)
25   - * @param string title 标题关键词
26   - * @param Int class_id 分类ID
27   - * @param Int news_status 发布状态(1=草稿;2=已发布;3=预发布)
28   - * @return array
29   - * array(
30   - * 'total' => 100, // 总条数
31   - * 'page' => 1, // 当前页
32   - * 'limit' => 20, // 当前页条数
33   - * 'list' => array( // 列表数据
34   - * 'article_id' => 1, // 新闻ID
35   - * 'title' => '电商冲击,实体店靠什么赢', // 标题
36   - * 'class_name' => '导购FM', // 栏目
37   - * 'is_secret' => 1, // 是否保密(1=不保密,2=保密)
38   - * 'read_total' => 1, // 已阅读人数
39   - * 'allow_read_total' => 30, // 可阅读人数
40   - * 'news_status' => 1, // 发布状态(1=草稿,2=已发布,3=预发布)
41   - * 'convert_status' => 1, // 转码状态(1=转码中,2=转码成功,3=转码失败)
42   - * 'like_total' => 12, // 点赞人数
43   - * 'comment_total' => 34, // 评论人数
44   - * 'send_time' => '1491897290000', // 最后更新时间(毫秒级时间戳)
45   - * 'top_time' => '1491897290000', // 置顶时间(毫秒级时间戳,0为未置顶)
46   - * 'qr_code' => 'awddwdad.awddadad?awdadwad=awdada', // 二维码链接
47   - * ),
48   - * )
49   - */
50   - public function Index_post()
51   - {
52   - // 验证规则
53   - $rules = [
54   - 'page' => 'integer',
55   - 'limit' => 'integer',
56   - 'start_time' => 'integer',
57   - 'end_time' => 'integer',
58   - 'title' => 'max:64',
59   - 'class_id' => 'integer',
60   - 'news_status' => 'integer',
61   - ];
62   -
63   - // 验证数据
64   - $validate = new PackageValidate($rules, [], array_keys($rules));
65   - $postData = $validate->postData;
66   -
67   - // 默认值
68   - $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
69   - $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
70   -
71   - // 组合条件
72   - $conds = [];
73   - if (isset($postData['start_time'])) {
74   - $conds['send_time > ?'] = $postData['start_time'];
75   - }
76   - if (isset($postData['end_time'])) {
77   - $conds['send_time < ?'] = $postData['end_time'];
78   - }
79   - if (isset($postData['title'])) {
80   - // 查询%化需要转义
81   - $postData['title'] = str_replace("%", '\%', $postData['title']);
82   - $conds['title like ?'] = '%' . $postData['title'] . '%';
83   - }
84   - if (isset($postData['class_id'])) {
85   - $classServ = new ClassService();
86   - $childList = $classServ->list_by_conds(['parent_id' => $postData['class_id']]);
87   - $class_ids = array_column($childList, 'class_id');
88   - $class_ids[] = $postData['class_id'];
89   - $conds['class_id in (?)'] = $class_ids;
90   - }
91   - if (isset($postData['news_status'])) {
92   - if ($postData['news_status'] == Constant::NEWS_STATUS_READY_SEND) {
93   - $conds['news_status in (?)'] = [Constant::NEWS_STATUS_READY_SEND, Constant::NEWS_STATUS_TIMING_RELEASE];
94   - } else {
95   - $conds['news_status = ?'] = $postData['news_status'];
96   - }
97   - }
98   -
99   - // 分页
100   - list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
101   -
102   - // 排序
103   - $order_option = ['top_time' => 'desc', 'send_time' => 'desc'];
104   -
105   - // 列表
106   - $articleServ = new ArticleService();
107   - $list = $articleServ->list_by_conds($conds, [$start, $perpage], $order_option);
108   - if ($list) {
109   - // 可阅读人数
110   - foreach ($list as $k => $v) {
111   - $list[$k]['allow_read_total'] = $v['read_total'] + $v['unread_total'];
112   - // 加入二维码链接
113   - $list[$k]['qr_code'] = oaUrl('Frontend/Index/NewsQrcode/index', ['article_id' => $v['article_id']]);
114   - }
115   - }
116   -
117   - // 数据总数
118   - $total = $articleServ->count_by_conds($conds);
119   -
120   - $this->_result = [
121   - 'page' => $postData['page'],
122   - 'limit' => $postData['limit'],
123   - 'total' => intval($total),
124   - 'list' => $list,
125   - ];
126   - }
127   -}
trunk/Message/Apicp/Controller/News/ReadListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/13
6   - * Time: 11:48
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Common\User;
13   -use Common\Service\ArticleService;
14   -use Common\Service\ReadService;
15   -use Common\Service\RightService;
16   -
17   -class ReadListController extends \Apicp\Controller\AbstractController
18   -{
19   -
20   - /**
21   - * ReadList
22   - * @desc 阅读列表
23   - * @param Int article_id:true 新闻ID
24   - * @param Int read_type:true 阅读类型(1=未读,2=已读)
25   - * @param Int page 页码
26   - * @param Int limit 每页数据条数
27   - * @return array 阅读列表
28   - * array(
29   - 'article_id' => 123, // 新闻ID
30   - 'read_type' => 1, // 阅读类型(1=未读,2=已读)
31   - 'title' => '', // 新闻标题
32   - 'send_time' => '', // 更新时间
33   - 'page' => '', // 页码
34   - 'limit' => '', // 每页数据条数
35   - 'read_total' => '', // 已读总数
36   - 'unread_total' => '', // 未读总数
37   - 'list' => array(
38   - 'username' => '张三', // 姓名
39   - 'dp_name' => array('技术部'), // 所属部门
40   - 'job' => 'PHP', // 职位
41   - 'mobile' => '15821392414', // 手机号码
42   - 'created' => '1234566898988', // 阅读时间(毫秒级时间戳)
43   - ),
44   - );
45   - */
46   - public function Index_post()
47   - {
48   - // 验证规则
49   - $rules = [
50   - 'article_id' => 'require|integer',
51   - 'read_type' => 'require|integer',
52   - 'page' => 'integer',
53   - 'limit' => 'integer',
54   - 'dp_ids' => 'array',
55   - 'job_ids' => 'array',
56   - 'role_ids' => 'array',
57   - 'username' => 'max:64',
58   - ];
59   -
60   - // 验证数据
61   - $validate = new PackageValidate($rules, [], array_keys($rules));
62   - $postData = $validate->postData;
63   -
64   - // 默认值
65   - $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
66   - $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
67   - // 查询条件
68   - $uidCond = $this->formatConds($postData);
69   -
70   - // 取新闻信息
71   - $articleServ = new ArticleService();
72   - $newsInfo = $articleServ->get($postData['article_id']);
73   - if (empty($newsInfo)) {
74   - E('_ERR_ARTICLE_NOT_FOUND');
75   - }
76   -
77   - $list = [];
78   - $total = 0;
79   - $readServ = new ReadService();
80   -
81   - $read_total = 0;
82   - $unread_total = 0;
83   - if ($uidCond !== false) {
84   - // 已读
85   - $readConds = ['article_id' => $postData['article_id']];
86   - $read_total = $readServ->count_by_conds($readConds);
87   -
88   - if (!empty($uidCond)) {
89   - $readConds['uid'] = $uidCond;
90   - }
91   - if ($postData['read_type'] == Constant::READ_STATUS_IS_YES) {
92   - list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
93   - $readList = $readServ->list_by_conds($readConds, [$start, $perpage]);
94   - $userServ = &User::instance();
95   - $userlist = $userServ->listByUid(array_column($readList, 'uid'));
96   - $userlist = array_combine_by_key($userlist, 'memUid');
97   - foreach ($readList as &$item) {
98   - $uid = $item['uid'];
99   - $list[] = [
100   - 'username' => $userlist[$uid]['memUsername'],
101   - 'dp_name' => empty($userlist[$uid]['dpName']) ?
102   - [] : array_column($userlist[$uid]['dpName'], 'dpName'),
103   - 'job' => $userlist[$uid]['memJob'],
104   - 'role' => $userlist[$uid]['memRole'],
105   - 'mobile' => $userlist[$uid]['memMobile'],
106   - 'created' => $item['created']
107   - ];
108   - }
109   -
110   - $total = $read_total;
111   - }
112   -
113   - // 未读
114   - list($uids_all, $uids_read, $uids_unread, $unread_total) =
115   - $this->getReadData($postData['article_id'], $uidCond);
116   -
117   - if ($postData['read_type'] == Constant::READ_STATUS_IS_NO) {
118   - $total = count($uids_unread);
119   - // 取未读人员信息
120   - if ($uids_unread) {
121   - $userServ = &User::instance();
122   - $userList = $userServ->listByConds(['memUids' => $uids_unread], $postData['page'], $postData['limit']);
123   - if ($userList) {
124   - foreach ($userList['list'] as $v) {
125   - $list[] = [
126   - 'uid' => $v['memUid'],
127   - 'username' => $v['memUsername'],
128   - 'dp_name' => empty($v['dpName']) ? [] : array_column($v['dpName'], 'dpName'),
129   - 'job' => $v['memJob'],
130   - 'role' => $v['memRole'],
131   - 'mobile' => $v['memMobile'],
132   - ];
133   - }
134   - }
135   -
136   - }
137   - }
138   - }
139   -
140   - $this->_result = [
141   - 'article_id' => $postData['article_id'],
142   - 'read_type' => $postData['read_type'],
143   - 'limit' => $postData['limit'],
144   - 'page' => $postData['page'],
145   - 'title' => $newsInfo['title'],
146   - 'send_time' => $newsInfo['send_time'],
147   - 'read_total' => $read_total,
148   - 'unread_total' => $unread_total,
149   - 'total' => $total,
150   - 'list' => $list,
151   - ];
152   - }
153   -
154   - /**
155   - * 将搜索条件转化为用户UID
156   - * @author tangxingguo
157   - * @param array $postData 用户提交的数据
158   - * @return array|bool
159   - */
160   - private function formatConds($postData)
161   - {
162   - $condUids = [];
163   -
164   - $userServ = &User::instance();
165   - if (isset($postData['username'])) {
166   - // UC
167   - $userConds = ['memUsername' => $postData['username']];
168   - $list = $userServ->listAll($userConds);
169   - $condUids = array_column($list, 'memUid');
170   - }
171   - // 部门、岗位、角色搜索交集
172   - $right = array_intersect_key_reserved($postData, ['dp_ids', 'job_ids', 'role_ids'], true);
173   -
174   - // 部门/岗位存在 名字存在
175   - if (!empty($right) && isset($postData['username'])) {
176   - $rightServ = new RightService();
177   - $rights = $rightServ->formatPostData($right);
178   - $unitUids = $rightServ->getUidsByRight($rights);
179   - if (!empty($condUids)) {
180   - // 筛选已经有值,取交集
181   - $condUids = array_intersect($condUids, $unitUids);
182   - } else {
183   - //$condUids = $unitUids;
184   - return false;
185   - }
186   - }
187   -
188   - // 部门/岗位存在 名字存在 人名不存在
189   - if (!empty($right) && !isset($postData['username'])) {
190   - $rightServ = new RightService();
191   - $rights = $rightServ->formatPostData($right);
192   - $unitUids = $rightServ->getUidsByRight($rights);
193   - $condUids = $unitUids;
194   - }
195   -
196   - // 如果有查询 并且 结果为空
197   - if ((!empty($right) || !empty($postData['username'])) && empty($condUids)) {
198   - return false;
199   - }
200   -
201   - return $condUids;
202   - }
203   -
204   - /**
205   - * 获取新闻可读、已读、未读人员ID数组
206   - * @author zhonglei
207   - * @param int $article_id 新闻ID
208   - * @return array [0 => 可读人员ID, 1 => 已读人员ID, 2 => 未读人员ID]
209   - */
210   - public function getReadData($article_id, $uidCond)
211   - {
212   - $uids_all = [];
213   - $uids_read = [];
214   - $uids_unread = [];
215   -
216   - // 查询条件
217   - $conds = ['article_id' => $article_id];
218   - // 获取权限数据
219   - $rightServ = new RightService();
220   - $right_list = $rightServ->list_by_conds($conds);
221   - $rights = $rightServ->formatDBData($right_list);
222   -
223   - if (empty($rights)) {
224   - return [$uids_all, $uids_read, $uids_unread];
225   - }
226   -
227   - // 获取可读数据
228   - $uids_all = $rightServ->getUidsByRight($rights);
229   - // 获取已读数据
230   - $readServ = new ReadService();
231   - if (!empty($uidCond)) {
232   - $conds['uid'] = $uidCond;
233   - }
234   - $study_list = $readServ->list_by_conds($conds);
235   - $uids_read = array_column($study_list, 'uid');
236   - $uids_unread = array_values(
237   - array_diff(
238   - // 如果外部传了条件
239   - !empty($uidCond) ? array_intersect($uids_all, $uidCond) : $uids_all,
240   - $uids_read
241   - )
242   - );
243   - // 已经学习人数 (跟传入条件无关)
244   - $studyListWithOutConds = $readServ->list_by_conds(['article_id' => $article_id]);
245   - $studyListWithOutConds = array_column($studyListWithOutConds, 'uid');
246   -
247   - // 未读数据
248   - return [$uids_all, $uids_read, $uids_unread, count(array_diff($uids_all, $studyListWithOutConds))];
249   - }
250   -}
trunk/Message/Apicp/Controller/News/ReleaseController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: 大熊
5   - * Date: 2018/5/17
6   - * Time: 15:05
7   - */
8   -
9   -namespace Apicp\Controller\News;
10   -
11   -use Apicp\Controller\AbstractController;
12   -use Common\Common\Constant;
13   -use Common\Common\NewsHelper;
14   -use Common\Service\ArticleService;
15   -use Common\Service\ClassService;
16   -use Think\Log;
17   -
18   -class ReleaseController extends AbstractController
19   -{
20   - public function index_post()
21   - {
22   - $param = I('post.');
23   -
24   - // 获取数据信息
25   - $service = new ArticleService();
26   - $data = $service->get($param['article_id']);
27   -
28   - // 不为定时发布时不做处理
29   - if ($data['news_status'] != Constant::NEWS_STATUS_TIMING_RELEASE) {
30   - $this->_result = ['state' => true];
31   - return true;
32   - }
33   -
34   - // 判断素材状态,若转码成功则为发布状态,否则为预发布状态
35   - $updateData = ['news_status' => Constant::NEWS_STATUS_SEND];
36   - if ($data['convert_status'] == Constant::FILE_STATUS_CONVERT) {
37   - $updateData['news_status'] = Constant::NEWS_STATUS_READY_SEND;
38   - }
39   -
40   - $service->update($param['article_id'], $updateData);
41   -
42   - // 当为发布时
43   - if ($updateData['news_status'] == Constant::NEWS_STATUS_SEND) {
44   - try {
45   - // 获取顶级分类名称
46   - $classServ = new ClassService();
47   - $class = $classServ->getTopClass($data['class_id']);
48   - $data['class_name'] = $class['class_name'];
49   -
50   - // 发送未读提醒
51   - if ($data['is_notice'] == Constant::NEWS_IS_NOTICE_TRUE) {
52   - $newsHelper = &NewsHelper::instance();
53   - list($uids_all, $uids_read, $uids_unread) = $newsHelper->getReadData($param['article_id']);
54   - $newsHelper->sendUnreadMsg($uids_unread, $data);
55   - }
56   -
57   - // RPC推送到运营中心
58   - if ($data['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE) {
59   - $service->addNewsRpc($param['article_id'], []);
60   - }
61   - } catch (\Exception $e) {
62   - Log::record('头条立即发布错误'.$e->getMessage());
63   - }
64   - }
65   -
66   - $this->_result = ['state' => true];
67   - return true;
68   - }
69   -}
70 0 \ No newline at end of file
trunk/Message/Apicp/Controller/News/RemindController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 18:20
7   - */
8   -
9   -namespace Apicp\Controller\News;
10   -
11   -use Com\PackageValidate;
12   -use Common\Common\Constant;
13   -use Common\Common\NewsHelper;
14   -use Common\Service\ClassService;
15   -use Common\Service\ArticleService;
16   -
17   -class RemindController extends \Apicp\Controller\AbstractController
18   -{
19   - /**
20   - * Remind
21   - * @author liyifei
22   - * @desc 未读提醒
23   - * @param Int article_id:true 新闻ID
24   - * @param array uids:false 用户UIDS集合格式(array[1,2,3])
25   - * @return array
26   - */
27   - public function Index_post()
28   - {
29   - $uids = I('post.uids');
30   - // 验证规则
31   - $rules = [
32   - 'article_id' => 'require|integer',
33   - ];
34   -
35   - // 验证数据
36   - $validate = new PackageValidate($rules, [], array_keys($rules));
37   - $postData = $validate->postData;
38   -
39   - // 获取新闻详情
40   - $articleServ = new ArticleService();
41   - $article = $articleServ->get($postData['article_id']);
42   -
43   - if (empty($article)) {
44   - E('_ERR_ARTICLE_NOT_FOUND');
45   - }
46   -
47   -
48   - // 草稿和预发布不允许发送提醒
49   - if (in_array($article['news_status'], [Constant::NEWS_STATUS_DRAFT, Constant::NEWS_STATUS_READY_SEND])) {
50   - E('_ERR_ARTICLE_STATUS_FAIL');
51   - }
52   -
53   - // 获取顶级分类名称
54   - $classServ = new ClassService();
55   - $class = $classServ->getTopClass($article['class_id']);
56   - $article['class_name'] = $class['class_name'];
57   -
58   - // 获取未读人员列表
59   - $newsHelper = &NewsHelper::instance();
60   - list($uids_all, $uids_read, $uids_unread) = $newsHelper->getReadData($postData['article_id']);
61   -
62   - // 提醒人员UID
63   - if (!empty($uids)) {
64   - $uids_unread = array_intersect($uids_unread, $uids);
65   - }
66   - // 发送未读提醒
67   - $newsHelper->sendUnreadMsg($uids_unread, $article);
68   - }
69   -}
trunk/Message/Apicp/Controller/News/SaveController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 18:33
7   - */
8   -
9   -namespace Apicp\Controller\News;
10   -
11   -use Common\Common\ArticleHelper;
12   -use Common\Common\Attach;
13   -use Com\PackageValidate;
14   -use Common\Common\Constant;
15   -use Common\Common\NewsHelper;
16   -use Common\Service\AttachService;
17   -use Common\Service\ClassService;
18   -use Common\Service\ReadService;
19   -use Common\Service\RightService;
20   -use Common\Service\ArticleService;
21   -use Common\Service\TaskService;
22   -use phpDocumentor\Reflection\Types\String_;
23   -use VcySDK\Cron;
24   -use VcySDK\Service;
25   -
26   -class SaveController extends \Apicp\Controller\AbstractController
27   -{
28   - /**
29   - * Save
30   - * @author liyifei
31   - * @desc 新闻保存(创建、修改)
32   - * @param Int article_id 新闻ID
33   - * @param String title:true 标题
34   - * @param Int class_id:true 分类ID
35   - * @param String author:true 作者
36   - * @param String content 内容
37   - * @param String cover_id:true 封面图片ID
38   - * @param String is_show_cover:true:2 是否正文显示封面图片(1=不显示,2=显示)
39   - * @param array file_at_ids 文件附件ID数组
40   - * @param array audio_at_ids 音频附件ID数组
41   - * @param array video_at_info 视频附件详情
42   - * @param String video_at_info[].at_id:true 视频附件ID
43   - * @param String video_at_info[].at_name:true 视频名称
44   - * @param String video_at_info[].at_size:true 视频大小(单位:字节)
45   - * @param String video_at_info[].at_time:true 视频时长
46   - * @param array is_download:true:1 附件是否支持下载(1=不支持,2=支持)
47   - * @param String summary:true 摘要(最多输入150字符)
48   - * @param array right:true 阅读范围
49   - * @param Int right.is_all 是否全公司(1=否;2=是)
50   - * @param array right.uids 人员ID
51   - * @param array right.dp_ids 部门ID
52   - * @param array right.tag_ids 标签ID
53   - * @param array right.job_ids 职位ID
54   - * @param array right.role_ids 角色ID
55   - * @param String link 外部链接
56   - * @param Int is_jump 是否直接跳转外链(1=不直接跳转,2=直接跳转)
57   - * @param Int is_secret:true:1 是否保密(1=不保密,2=保密)
58   - * @param Int is_share:true:1 允许分享(1=不允许,2=允许)
59   - * @param Int is_notice:true:2 消息通知(1=不开启,2=开启)
60   - * @param Int is_comment:true:2 评论功能(1=不开启,2=开启)
61   - * @param Int is_like:true:2 点赞功能(1=不开启,2=开启)
62   - * @param Int is_recommend:true:2 首页推荐(1=不开启,2=开启)
63   - * @param Int news_status:true:1 新闻状态(1=草稿与保存并预览,2=已发布)
64   - * @param Int strategy_setting:true:2 积分策略设置(1=启用默认策略;2=不启用策略;3=自定义策略)
65   - * @param array strategys 自定义策略数据
66   - * @param String strategys[].action_key 触发行为key
67   - * @param String strategys[].strategy_id 策略ID
68   - * @param Int credit_strategy_setting:true:2 学分策略设置(1=启用默认策略;2=不启用策略;3=自定义策略)
69   - * @param array credit_strategys 自定义策略数据
70   - * @param String credit_strategys[].action_key 触发行为key
71   - * @param String credit_strategys[].strategy_id 策略ID
72   - * @return array 二维码链接
73   - * array(
74   - * 'qr_code' => 'asdadsdasdad.asdsadasdsa?asdasdds=adasdadad',
75   - * )
76   - */
77   - public function Index_post()
78   - {
79   - // 验证规则
80   - $rules = [
81   - // 非必填
82   - 'article_id' => 'integer',
83   - 'summary' => 'max:120',
84   - 'audio_at_ids' => 'array',
85   - 'file_at_ids' => 'array',
86   - 'video_at_info' => 'array',
87   - 'link' => 'max:500',
88   - 'is_jump' => 'integer|in:1,2',
89   - 'strategys' => 'array',
90   - 'credit_strategys' => 'array',
91   - 'cron_time' => 'max:20',
92   - // 必填
93   - 'title' => 'require|max:64',
94   - 'class_id' => 'require|integer',
95   - 'author' => 'require|max:20',
96   - 'cover_id' => 'require',
97   - 'right' => 'require|array',
98   - 'is_show_cover' => 'require|integer|in:1,2',
99   - 'is_download' => 'require|integer|in:1,2',
100   - 'is_secret' => 'require|integer|in:1,2',
101   - 'is_share' => 'require|integer|in:1,2',
102   - 'is_notice' => 'require|integer|in:1,2',
103   - 'is_comment' => 'require|integer|in:1,2',
104   - 'comment_anonymous' => 'require|integer|in:1,2',
105   - 'is_like' => 'require|integer|in:1,2',
106   - 'is_recommend' => 'require|integer|in:1,2',
107   - 'news_status' => 'require|integer|in:1,2,4',
108   - 'strategy_setting' => 'require|integer|in:1,2,3',
109   - 'credit_strategy_setting' => 'require|integer|in:1,2,3',
110   - ];
111   -
112   - // 验证请求数据
113   - $validate = new PackageValidate($rules, [], array_keys($rules));
114   - $postData = $validate->postData;
115   -
116   - // 完整请求参数
117   - $postData['content'] = I('post.content', '', 'trim');
118   - $fixData = $this->_fixData($postData);
119   -
120   - // 格式化权限数据
121   - $rightServ = new RightService();
122   - $formatRights = $rightServ->formatPostData($postData['right']);
123   - if (empty($formatRights)) {
124   -
125   - E('_ERR_ARTICLE_RIGHT_PARAM');
126   - }
127   -
128   - // 校验传参(验证器无法验证的部分)
129   - $this->_checkData($fixData);
130   -
131   - // 组合写入article表的数据
132   - $sqlData = $this->_fixSqlData($fixData);
133   -
134   - // 保存新闻
135   - $articleServ = new ArticleService();
136   - if ($fixData['article_id'] == 0) {
137   - // 创建新闻
138   - $articleId = $articleServ->insert($sqlData);
139   - if (!$articleId) {
140   -
141   - E('_ERR_ARTICLE_SAVE_FAILED');
142   - }
143   -
144   - // 二维码的链接
145   - $qr_code = oaUrl('Frontend/Index/NewsQrcode/index', ['article_id' => $articleId]);
146   -
147   - // RPC推送到运营中心
148   - if ($sqlData['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE) {
149   -
150   - $articleServ->addNewsRpc($articleId, $postData['right']);
151   - }
152   -
153   - } else {
154   - // 修改前的新闻数据
155   - $articleOld = $articleServ->get($fixData['article_id']);
156   - $articleId = $articleOld['article_id'];
157   -
158   - // 如果存在定时发布,删除定时发布
159   - if ($articleOld['news_status'] == Constant::NEWS_STATUS_TIMING_RELEASE) {
160   - // 实例化定时任务类
161   - $cron_serv = new Cron(Service::instance());
162   - $cron_serv->delete($articleOld['release_crid']);
163   - }
164   -
165   - // 二维码的链接
166   - $qr_code = oaUrl('Frontend/Index/NewsQrcode/index', ['article_id' => $articleId]);
167   -
168   - if (!in_array($fixData['news_status'], [Constant::NEWS_STATUS_DRAFT, Constant::NEWS_STATUS_READY_SEND, Constant::NEWS_STATUS_TIMING_RELEASE])) {
169   - $this->_operationRpc($fixData['article_id'], $sqlData, $postData['right']);
170   - }
171   - // RPC推送到运营中心
172   -
173   -
174   - // 修改新闻
175   - $articleServ->update_by_conds(['article_id' => $fixData['article_id']], $sqlData);
176   - }
177   -
178   - // 定时发布, 增加定时任务
179   - if ($sqlData['news_status'] == Constant::NEWS_STATUS_TIMING_RELEASE) {
180   - $articleServ->cronAdd($articleId, $sqlData['cron_time']);
181   - }
182   -
183   - // 推送未读消息(草稿、预发布除外;新建已发布新闻、草稿新闻修改为已发布新闻时,也推送消息;)
184   - $newsHelper = &NewsHelper::instance();
185   - if (!in_array($sqlData['news_status'], [
186   - Constant::NEWS_STATUS_DRAFT,
187   - Constant::NEWS_STATUS_READY_SEND,
188   - Constant::NEWS_STATUS_TIMING_RELEASE
189   - ]) && $sqlData['is_notice'] == Constant::NEWS_IS_NOTICE_TRUE) {
190   - // 发布过就不推消息了
191   - if ($fixData['article_id'] == 0 || (isset($articleOld) && $articleOld['news_status'] == Constant::NEWS_STATUS_DRAFT && $sqlData['news_status'] == Constant::NEWS_STATUS_SEND)) {
192   - // 新闻所在顶级分类信息
193   - $classServ = new ClassService();
194   - $class = $classServ->getTopClass($sqlData['class_id']);
195   - $sqlData['class_name'] = $class['class_name'];
196   -
197   - $sqlData['article_id'] = $articleId;
198   - $newsHelper->sendNotice($sqlData, $formatRights);
199   - }
200   - }
201   -
202   - // 创建计划任务(预发布新闻:视频、文件附件) 添加定时任务
203   - if ($sqlData['news_status'] == Constant::NEWS_STATUS_READY_SEND || $sqlData['news_status'] == Constant::NEWS_STATUS_TIMING_RELEASE) {
204   -
205   - $taskServ = new TaskService();
206   - $taskServ->createCheckAttachTask($articleId);
207   - }
208   -
209   - // 保存阅读范围
210   - $rightServ->saveData(['article_id' => $articleId], $postData['right']);
211   -
212   - // 修改新闻未读人数
213   - list($uids_all, ,) = $newsHelper->getReadData($articleId);
214   - sort($uids_all);
215   - // 兼容多次编辑文章未读人数变化问题
216   - $readServ = new ReadService();
217   - $read_list = $readServ->list_by_conds([
218   - 'article_id' => $articleId,
219   - 'uid' => $uids_all,
220   - ]);
221   -
222   - // 如果存在已读取过的人员
223   - if (!empty($read_list)) {
224   - // 获取已读取人员的uids
225   - $read_uids = array_column($read_list, 'uid');
226   - $uids_all = array_diff($uids_all, $read_uids);
227   - }
228   -
229   - $articleServ->update($articleId, ['unread_total' => count($uids_all)]);
230   -
231   - // 保存附件(已发布、预发布的新闻,不可修改附件)
232   - if ($fixData['article_id'] == 0 || (isset($articleOld) && $articleOld['news_status'] == Constant::NEWS_STATUS_DRAFT)) {
233   -
234   - $attachServ = new AttachService();
235   - $attachServ->saveData($articleId, $fixData);
236   - }
237   -
238   - $this->_result = ['qr_code' => $qr_code];
239   - }
240   -
241   - /**
242   - * 补全请求数据
243   - * @param array $postData 请求数据
244   - * @return array
245   - */
246   - private function _fixData($postData)
247   - {
248   - // 非必填参数,补全默认值
249   - $postData['article_id'] = isset($postData['article_id']) ? $postData['article_id'] : 0;
250   - $postData['summary'] = isset($postData['summary']) ? $postData['summary'] : '';
251   - $postData['audio_at_ids'] = isset($postData['audio_at_ids']) ? $postData['audio_at_ids'] : '';
252   - $postData['file_at_ids'] = isset($postData['file_at_ids']) ? $postData['file_at_ids'] : [];
253   - $postData['video_at_info'] = isset($postData['video_at_info']) ? $postData['video_at_info'] : [];
254   - $postData['link'] = isset($postData['link']) ? $postData['link'] : '';
255   - $postData['is_jump'] = isset($postData['is_jump']) ? $postData['is_jump'] : Constant::NEWS_IS_JUMP_FALSE;
256   -
257   - return $postData;
258   - }
259   -
260   - /**
261   - * 校验传参
262   - * @author liyifei
263   - * @param array $fixData 补全后的请求参数
264   - * @return mixed
265   - */
266   - private function _checkData($fixData)
267   - {
268   - // 为定时发布时,定时发布时间不能为空且大于当前时间
269   - if ($fixData['news_status'] == Constant::NEWS_STATUS_TIMING_RELEASE) {
270   - if (!$fixData['cron_time'] || $fixData['cron_time'] <= MILLI_TIME) {
271   - E('_ERR_CREDIT_CRON_TIME_ERR');
272   - }
273   -
274   - }
275   - // 文件最多上传5个
276   - if (isset($fixData['file_at_ids']) && count($fixData['file_at_ids']) > Constant::UPLOAD_FILE_ATTACH_LIMIT) {
277   -
278   - E(L('_ERR_ARTICLE_FILE_ATTACH_MORE', ['at_type' => '文件']));
279   - }
280   -
281   - // 音频最多上传5个
282   - if (isset($fixData['audio_at_ids']) && count($fixData['audio_at_ids']) > Constant::UPLOAD_FILE_ATTACH_LIMIT) {
283   -
284   - E(L('_ERR_ARTICLE_FILE_ATTACH_MORE', ['at_type' => '音频']));
285   - }
286   -
287   - // 视频最多上传5个
288   - if (isset($fixData['video_at_info']) && count($fixData['video_at_info']) > Constant::UPLOAD_FILE_ATTACH_LIMIT) {
289   -
290   - E(L('_ERR_ARTICLE_FILE_ATTACH_MORE', ['at_type' => '视频']));
291   - }
292   -
293   - // 视频附件参数不正确
294   - if (!empty($fixData['video_at_info'])) {
295   - foreach ($fixData['video_at_info'] as $video) {
296   - if (!isset($video['at_id'], $video['at_name'], $video['at_size'], $video['at_time'])) {
297   -
298   - E('_ERR_ARTICLE_ATTACH_PARAM');
299   - }
300   - }
301   - }
302   -
303   - // 保存自定义积分策略时,策略数据必传
304   - $allow_key = [
305   - 'action_key',
306   - 'strategy_id',
307   - ];
308   - if ($fixData['strategy_setting'] == Constant::NEWS_STRATEGY_CUSTOM) {
309   - if (!isset($fixData['strategys']) || empty($fixData['strategys'])) {
310   - E('_ERR_ARTICLE_STRATEGY_ID_EMPTY');
311   - }
312   -
313   - foreach ($fixData['strategys'] as $strategys) {
314   - if (!is_array($strategys) || empty($strategys)) {
315   - E('_ERR_ARTICLE_STRATEGY_PARAM_FORMAT');
316   - }
317   -
318   - $strategy_key = array_keys($strategys);
319   - if (array_diff($allow_key, $strategy_key)) {
320   - E('_ERR_ARTICLE_STRATEGY_PARAM_LOSE');
321   - }
322   - }
323   - }
324   -
325   - // 保存自定义学分策略时,策略数据必传
326   - if ($fixData['credit_strategy_setting'] == Constant::NEWS_STRATEGY_CUSTOM) {
327   - if (!isset($fixData['credit_strategys']) || empty($fixData['credit_strategys'])) {
328   - E('_ERR_CREDIT_STRATEGY_ID_EMPTY');
329   - }
330   -
331   - foreach ($fixData['credit_strategys'] as $credit_strategys) {
332   - if (!is_array($credit_strategys) || empty($credit_strategys)) {
333   - E('_ERR_CREDIT_STRATEGY_PARAM_FORMAT');
334   - }
335   -
336   - $strategy_key = array_keys($credit_strategys);
337   - if (array_diff($allow_key, $strategy_key)) {
338   - E('_ERR_CREDIT_STRATEGY_PARAM_LOSE');
339   - }
340   - }
341   - }
342   -
343   - return true;
344   - }
345   -
346   - /**
347   - * 补全写入article表的数据
348   - * @author liyifei
349   - * @param array $fixData 补全后的请求参数
350   - * @return array
351   - */
352   - private function _fixSqlData($fixData)
353   - {
354   - // 补全data_id
355   - $articleServ = new ArticleService();
356   - if ($fixData['article_id'] == 0) {
357   -
358   - $fixData['data_id'] = $articleServ->buildDataID();
359   - }
360   -
361   - // 补全管理员信息
362   - $fixData['ea_id'] = $this->_login->user['eaId'];
363   - $fixData['ea_name'] = $this->_login->user['eaRealname'];
364   -
365   - // 补全class_name
366   - $classServ = new ClassService();
367   - $class = $classServ->get($fixData['class_id']);
368   - if (empty($class)) {
369   - E('_ERR_CLASS_DATA_NOT_FOUND');
370   - }
371   - $fixData['class_name'] = $class['class_name'];
372   -
373   - // 补全summary
374   - if (empty($fixData['summary']) && !empty($fixData['content'])) {
375   - // 去除html格式,自动从内容中抓取54个字符
376   - $content = htmlspecialchars(strip_tags($fixData['content']));
377   - $fixData['summary'] = mb_substr($content, 0, Constant::AUTO_SUMMARY_LENGTH, 'UTF-8');
378   - }
379   -
380   - // 补全cover_url
381   - $attachServ = &Attach::instance();
382   - $fixData['cover_url'] = $attachServ->getAttachUrl($fixData['cover_id']);
383   -
384   - // 补全send_time
385   - $fixData['send_time'] = MILLI_TIME;
386   -
387   - // 补全news_status、convert_status
388   - $fixData['convert_status'] = Constant::FILE_STATUS_NORMAL;
389   - if ($fixData['news_status'] == Constant::NEWS_STATUS_SEND) {
390   - if ($fixData['article_id'] == 0) {
391   - // 新建新闻,有附件(预发布、转码中)(视频现在必须转码完成后才能提交,因此不会在保存后进行转码)
392   - if (!empty($fixData['file_at_ids'])) {
393   - $fixData['news_status'] = Constant::NEWS_STATUS_READY_SEND;
394   - $fixData['convert_status'] = Constant::FILE_STATUS_CONVERT;
395   - }
396   -
397   - } else {
398   - $article = $articleServ->get($fixData['article_id']);
399   - if (empty($article)) {
400   - E('_ERR_ARTICLE_NOT_FOUND');
401   - }
402   - // 原草稿->现已发布,有附件(预发布、转码中)(视频现在必须转码完成后才能提交,因此不会在保存后进行转码)
403   - if ($article['news_status'] == Constant::NEWS_STATUS_DRAFT && (!empty($fixData['file_at_ids']))) {
404   - $fixData['news_status'] = Constant::NEWS_STATUS_READY_SEND;
405   - $fixData['convert_status'] = Constant::FILE_STATUS_CONVERT;
406   - }
407   - // 原已发布->现已发布(不修改附件)
408   - if ($article['news_status'] == Constant::NEWS_STATUS_SEND) {
409   - $fixData['news_status'] = Constant::NEWS_STATUS_SEND;
410   - $fixData['convert_status'] = Constant::FILE_STATUS_NORMAL;
411   - }
412   - }
413   - }
414   -
415   - // 序列化存储积分策略数据
416   - if ($fixData['strategy_setting'] == Constant::NEWS_STRATEGY_CUSTOM && !empty($fixData['strategys'])) {
417   - $strategys = [];
418   - foreach ($fixData['strategys'] as $v) {
419   - $action_key = $v['action_key'];
420   - $strategys[$action_key] = $v['strategy_id'];
421   - }
422   - $fixData['strategys'] = serialize($strategys);
423   - } else {
424   - $fixData['strategys'] = '';
425   - }
426   -
427   - // 序列化存储学分策略数据
428   - if ($fixData['credit_strategy_setting'] == Constant::NEWS_STRATEGY_CUSTOM && !empty($fixData['credit_strategys'])) {
429   - $strategys = [];
430   - foreach ($fixData['credit_strategys'] as $v) {
431   - $action_key = $v['action_key'];
432   - $strategys[$action_key] = $v['strategy_id'];
433   - }
434   - $fixData['credit_strategys'] = serialize($strategys);
435   - } else {
436   - $fixData['credit_strategys'] = '';
437   - }
438   -
439   - // 去掉postData请求参数中,不在article主表中的字段
440   - $removeKeys = [
441   - 'article_id',
442   - 'audio_at_ids',
443   - 'file_at_ids',
444   - 'video_at_info',
445   - 'right',
446   - ];
447   - foreach ($fixData as $k => $v) {
448   - if (in_array($k, $removeKeys)) {
449   - unset($fixData[$k]);
450   - }
451   - }
452   -
453   - return $fixData;
454   - }
455   -
456   - /**
457   - * @desc 更新数据时,数据库与提交数据对比,判断推送接口
458   - * @author tangxingguo
459   - * @param int $article_id 新闻ID
460   - * @param array $newInfo 更新的新闻数据
461   - * @param array $postRight 用户提交的权限数据
462   - */
463   - private function _operationRpc($article_id, $newInfo, $postRight)
464   - {
465   - $articleServ = new ArticleService();
466   - $articleDBInfo = $articleServ->get($article_id);
467   - if (($articleDBInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE && $newInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_FALSE) || ($articleDBInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE && $newInfo['news_status'] == Constant::NEWS_STATUS_READY_SEND)) {
468   - // 有推送过取消推送 或 计划任务,删除接口
469   - $articleServ->delNewsRpc($article_id);
470   - } elseif ($articleDBInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_FALSE && $newInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE) {
471   - // 第一次推送,添加接口
472   - $articleServ->addNewsRpc($article_id, $postRight);
473   - } elseif ($articleDBInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE && $newInfo['is_recommend'] == Constant::NEWS_IS_RECOMMEND_TRUE) {
474   - // 有推送过,更新接口
475   - $articleServ->updateNewsRpc($article_id, $newInfo, $postRight);
476   - }
477   - }
478   -}
trunk/Message/Apicp/Controller/News/TopController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 18:16
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Service\ArticleService;
12   -
13   -class TopController extends \Apicp\Controller\AbstractController
14   -{
15   - /**
16   -
17   - * Top
18   - *
19   - * @author zhonglei
20   -
21   - * @desc 新闻置顶/取消置顶
22   -
23   - * @param Int article_id:true 新闻ID
24   -
25   - * @return mixed
26   -
27   - */
28   - public function Index_post()
29   - {
30   - // 验证规则
31   - $rules = [
32   - 'article_id' => 'require|integer',
33   - ];
34   -
35   - // 验证数据
36   - $validate = new PackageValidate($rules, [], array_keys($rules));
37   - $postData = $validate->postData;
38   - $article_id = $postData['article_id'];
39   -
40   - $artServ = new ArticleService();
41   - $article = $artServ->get($article_id);
42   -
43   - if (empty($article)) {
44   - E('_ERR_ARTICLE_NOT_FOUND');
45   - }
46   -
47   - $top_time = $article['top_time'] > 0 ? 0 : MILLI_TIME;
48   - $artServ->update($article_id, ['top_time' => $top_time]);
49   - }
50   -}
trunk/Message/Apicp/Controller/News/UpdateUnreadController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 19:12
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Common\NewsHelper;
13   -use Common\Service\ArticleService;
14   -
15   -class UpdateUnreadController extends \Apicp\Controller\AbstractController
16   -{
17   - /**
18   - * UpdateUnread
19   - * @author zhonglei
20   - * @desc 更新未读总数
21   - * @param Array article_ids:true 新闻ID数组
22   - * @return mixed
23   - */
24   - public function Index_post()
25   - {
26   - // 验证规则
27   - $rules = [
28   - 'article_ids' => 'require|array',
29   - ];
30   -
31   - // 验证数据
32   - $validate = new PackageValidate($rules, [], array_keys($rules));
33   - $postData = $validate->postData;
34   - $article_ids = $postData['article_ids'];
35   -
36   - $artServ = new ArticleService();
37   - $list = $artServ->list_by_conds([
38   - 'article_id' => $article_ids,
39   - 'update_time < ?' => MILLI_TIME - Constant::NEWS_UNREAD_TIME,
40   - ]);
41   -
42   - if (empty($list)) {
43   - return true;
44   - }
45   -
46   - $newsHelper = &NewsHelper::instance();
47   -
48   - foreach ($list as $article) {
49   - list(, $uids_read, $uids_unread) = $newsHelper->getReadData($article['article_id']);
50   - $unread_total = count($uids_unread);
51   - $read_total = count($uids_read);
52   - if ($article['unread_total'] != $unread_total || $article['read_total'] != $read_total) {
53   - $artServ->update($article['article_id'], [
54   - 'unread_total' => $unread_total,
55   - 'read_total' => $read_total,
56   - 'update_time' => MILLI_TIME,
57   - ]);
58   - }
59   - }
60   - }
61   -}
trunk/Message/Apicp/Controller/News/VideoInfoController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/9/20
6   - * Time: 15:05
7   - */
8   -namespace Apicp\Controller\News;
9   -
10   -use VcySDK\Service;
11   -use VcySDK\FileConvert;
12   -
13   -class VideoInfoController extends \Apicp\Controller\AbstractController
14   -{
15   - /**
16   - * VideoInfo
17   - * @author liyifei
18   - * @desc 视频详情
19   - * @param String at_id 视频附件ID
20   - * @return array
21   - array(
22   - 'coverUrl' => 'http://1251064102.vod2.myqcloud.com/3f09017dvodtransgzp1251064102/a1c2a89f9031868223244026455/snapshot/1505805642_4281657565.100_0.jpg', // 封面地址(5秒内会生成)
23   - 'sd' =>'http://1251064102.vod2.myqcloud.com/3f09017dvodtransgzp1251064102/a1c2a89f9031868223244026455/v.f20.mp4', // 标清 (如果值为空,说明腾讯云后台还在转码中)
24   - 'default' =>'http://1251064102.vod2.myqcloud.com/8ae15ed5vodgzp1251064102/a1c2a89f9031868223244026455/f0.avi', // 原始视频 (实时,上传视频成功之后就会有)
25   - 'url' =>'http://1251064102.vod2.myqcloud.com/3f09017dvodtransgzp1251064102/a1c2a89f9031868223244026455/v.f20.mp4', // 播放地址 (如果值为空,说明腾讯云后台还在转码中, 下次迭代会删除此参数,建议使用sd代替)
26   - 'fileId' =>'9031868223244026455', // 视频fileId
27   - )
28   - */
29   - public function Index()
30   - {
31   - $atId = I('post.at_id', '', 'trim');
32   - if (empty($atId)) {
33   - E('_ERR_VIDEO_ID_IS_EMPTY');
34   - }
35   -
36   - $convertServ = new FileConvert(Service::instance());
37   - $videoInfo = $convertServ->getVodPlayUrl($atId);
38   -
39   - $videoInfo['sd'] = $videoInfo['sd'] ?? '';
40   - $videoInfo['hd'] = $videoInfo['hd'] ?? '';
41   - $videoInfo['coverUrl'] = $videoInfo['coverUrl'] ?? '';
42   -
43   - $this->_result = $videoInfo;
44   - }
45   -}
trunk/Message/Apicp/Controller/NewsClass/DeleteController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 18:36
7   - */
8   -namespace Apicp\Controller\NewsClass;
9   -
10   -use Com\PackageValidate;
11   -use Common\Service\ArticleService;
12   -use Common\Service\ClassService;
13   -
14   -class DeleteController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   - * Delete
18   - * @author tangxingguo
19   - * @desc 删除分类
20   - * @param int class_id:true 分类ID
21   - * @return null
22   - */
23   - public function Index_post()
24   - {
25   - // 验证规则
26   - $rules = [
27   - 'class_id' => 'require|integer',
28   - ];
29   -
30   - // 验证数据
31   - $validate = new PackageValidate($rules, [], array_keys($rules));
32   - $postData = $validate->postData;
33   -
34   - $classServ = new ClassService();
35   - $classInfo = $classServ->get($postData['class_id']);
36   - if (empty($classInfo)) {
37   - E('_ERR_CLASS_DATA_NOT_FOUND');
38   - }
39   -
40   - // 一级分类检查有无子分类
41   - if ($classInfo['parent_id'] == 0) {
42   - $child = $classServ->get_by_conds(['parent_id' => $classInfo['class_id']]);
43   - if ($child) {
44   - E('_ERR_CLASS_CONTAIN_CHILD');
45   - }
46   - }
47   -
48   - // 检查分类下有无新闻
49   - $articleServ = new ArticleService();
50   - $articleCount = $articleServ->count_by_conds(['class_id' => $postData['class_id']]);
51   - if ($articleCount > 0) {
52   - E('_ERR_CLASS_CONTAIN_ARTICLE');
53   - }
54   -
55   - // 删除分类
56   - $classServ->delete($postData['class_id']);
57   - }
58   -}
trunk/Message/Apicp/Controller/NewsClass/InfoController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/13
6   - * Time: 17:02
7   - */
8   -namespace Apicp\Controller\NewsClass;
9   -
10   -use Com\PackageValidate;
11   -use Common\Service\ClassService;
12   -use Common\Service\RightService;
13   -
14   -class InfoController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   - * Info
18   - * @author tangxingguo
19   - * @desc 分类详情
20   - * @param int class_id:true 分类ID
21   - * @return array 分类信息
22   - array (
23   - 'class_id' => 2 // 当前分类ID
24   - 'parent_id' => 1 // 这是父级分类ID(仅二级分类存在)
25   - 'parent_name' => 分类1 // 这是父级分类名称(仅二级分类存在)
26   - 'class_name' => 分类标题 // 这是分类标题
27   - 'description' => 分类描述 // 这是分类描述
28   - 'is_open' => 1 // 启用分类(1=禁用,2=启用)(仅二级分类存在)
29   - 'right' => array( // 权限详情
30   - 'is_all' => 1, // 是否全公司(1=否,2=是)
31   - 'tag_list' => array( // 标签信息(仅二级分类存在)
32   - 'tag_id' => '0E19B0B47F0000012652058BA42EEEDE', // 标签ID
33   - 'tag_name' => '吃货', // 标签名称
34   - ),
35   - 'dp_list' => array( // 部门信息(仅二级分类存在)
36   - 'dp_id' => '0E19B0B47F0000012652058BA42EEEDE', // 部门ID
37   - 'dp_name' => '技术部', // 部门名称
38   - ),
39   - 'user_list' => array( // 人员信息(仅二级分类存在)
40   - 'uid' => '0E19B0B47F0000012652058BA42EEEDE', // 人员ID
41   - 'username' => '张三', // 人员姓名
42   - 'face' => 'http://qy.vchangyi.com', // 人员姓名
43   - ),
44   - 'job_list' => array( // 职位(仅二级分类存在)
45   - array(
46   - 'job_id' => '62C316437F0000017AE8E6ACC7EFAC22', // 职位ID
47   - 'job_name' => '攻城狮', // 职位名称
48   - ),
49   - ),
50   - 'role_list' => array( // 角色(仅二级分类存在)
51   - array(
52   - 'role_id' => '62C354B97F0000017AE8E6AC4FD6F429', // 角色ID
53   - 'role_name' => '国家元首', // 角色名称
54   - ),
55   - ),
56   - ),
57   - );
58   - */
59   - public function Index_post()
60   - {
61   - // 验证规则
62   - $rules = [
63   - 'class_id' => 'require|integer',
64   - ];
65   -
66   - // 验证数据
67   - $validate = new PackageValidate($rules, [], array_keys($rules));
68   - $postData = $validate->postData;
69   -
70   - $classServ = new ClassService();
71   - $classInfo = $classServ->get($postData['class_id']);
72   - if (empty($classInfo)) {
73   - E('_ERR_CLASS_DATA_NOT_FOUND');
74   - }
75   - $info = [
76   - 'class_id' => $classInfo['class_id'],
77   - 'class_name' => $classInfo['class_name'],
78   - 'description' => $classInfo['description'],
79   - 'right' => [],
80   - ];
81   -
82   - // 二级分类
83   - $level = $classServ->classLevel($postData['class_id']);
84   - if ($level == 2) {
85   - $pInfo = $classServ->get($classInfo['parent_id']);
86   - if ($pInfo) {
87   - $info['parent_name'] = $pInfo['class_name'];
88   - $info['is_open'] = $classInfo['is_open'];
89   - }
90   -
91   - // 取权限
92   - $rightServ = new RightService();
93   - $right = $rightServ->getData(['class_id' => $postData['class_id']]);
94   - $info['right'] = $right;
95   - }
96   -
97   - $this->_result = $info;
98   - }
99   -}
trunk/Message/Apicp/Controller/NewsClass/ListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 16:31
7   - */
8   -namespace Apicp\Controller\NewsClass;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Service\ClassService;
13   -
14   -class ListController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   -
18   - * List
19   -
20   - * @desc 分类列表
21   -
22   - * @param int is_open 获取的分类启禁用类型(1=禁用,2=启用)
23   -
24   - * @return array
25   -
26   - * array(
27   -
28   - * 'list' => array(
29   -
30   - * array(
31   -
32   - * 'class_id' => 1, // 分类ID
33   -
34   - * 'class_name' => '分类1', // 分类名称
35   -
36   - * 'is_open' => 1, // 启用分类(1=禁用,2=启用)
37   -
38   - * 'order' => 1, // 排序
39   -
40   - * 'child' => array( // 子分类
41   -
42   - * array(
43   -
44   - * 'class_id' => 2, // 分类ID
45   -
46   - * 'class_name' => '分类2', // 分类名称
47   -
48   - * 'is_open' => 1, // 启用分类(1=禁用,2=启用)
49   -
50   - * 'order' => 1, // 排序
51   -
52   - * )
53   -
54   - * )
55   -
56   - * )
57   -
58   - * )
59   -
60   - * )
61   -
62   - */
63   - public function Index_post()
64   - {
65   - // 验证规则
66   - $rules = [
67   - 'is_open' => 'integer',
68   - ];
69   -
70   - // 验证数据
71   - $validate = new PackageValidate($rules, [], array_keys($rules));
72   - $postData = $validate->postData;
73   -
74   - $classServ = new ClassService();
75   -
76   - // 排序规则
77   - $order_option = ['`order`' => 'asc'];
78   -
79   - // 取一级分类
80   - $classList = $classServ->list_by_conds(['parent_id' => 0], [], $order_option);
81   - if (empty($classList)) {
82   - return $this->_result = ['list' => []];
83   - }
84   -
85   - // 取二级分类
86   - if (isset($postData['is_open']) && in_array($postData['is_open'], [Constant::CLASS_IS_OPEN_FALSE, Constant::CLASS_IS_OPEN_TRUE])) {
87   - $conds = [
88   - 'parent_id > ?' => 0,
89   - 'is_open' => $postData['is_open'],
90   - ];
91   - $childList = $classServ->list_by_conds($conds, [], $order_option);
92   - } else {
93   - $childList = $classServ->list_by_conds(['parent_id > ?' => 0], [], $order_option);
94   - }
95   -
96   -
97   - // 组合数据
98   - foreach ($classList as $k => $v) {
99   - if ($childList) {
100   - foreach ($childList as $index => $info) {
101   - if ($v['class_id'] == $info['parent_id']) {
102   - $classList[$k]['child'][] = $info;
103   - unset($childList[$index]);
104   - }
105   - }
106   - }
107   - }
108   - $this->_result = ['list' => $classList];
109   - }
110   -}
trunk/Message/Apicp/Controller/NewsClass/OpenController.class.php deleted 100644 → 0
1   -<?php
2   -
3   -namespace Apicp\Controller\NewsClass;
4   -
5   -use Com\PackageValidate;
6   -use Common\Service\ClassService;
7   -
8   -class OpenController extends \Apicp\Controller\AbstractController
9   -{
10   - /**
11   - * class_id int 分类ID
12   - * is_open bool 开关 1:禁用 2:启用
13   - * @return bool
14   - */
15   - public function index()
16   - {
17   - // 验证规则
18   - $rules = [
19   - 'class_id' => 'require|integer',
20   - 'is_open' => 'require|integer',
21   - ];
22   -
23   - // 验证数据
24   - $validate = new PackageValidate($rules, [
25   - 'class_id.require' => L('_ERR_PARAM_CAN_NOT_EMPTY', ['name' => '分类ID']),
26   - 'is_open.require' => L('_ERR_PARAM_CAN_NOT_EMPTY', ['name' => '开启禁用'])
27   - ], array_keys($rules));
28   - $postData = $validate->postData;
29   -
30   - // 修改
31   - $classServ = new ClassService();
32   - $classServ->update($postData['class_id'], [
33   - 'is_open' => $postData['is_open']
34   - ]);
35   -
36   - return true;
37   - }
38   -}
trunk/Message/Apicp/Controller/NewsClass/SaveController.class.php deleted 100644 → 0
1   -<?php
2   -
3   -namespace Apicp\Controller\NewsClass;
4   -
5   -use Com\PackageValidate;
6   -use Common\Service\ArticleService;
7   -use Common\Service\ClassService;
8   -
9   -class SaveController extends \Apicp\Controller\AbstractController
10   -{
11   - /**
12   - * Save
13   - * @author tangxingguo
14   - * @desc 保存分类
15   - * @param Int parent_id 上级分类ID(二级分类保存时必填)
16   - * @param Int class_id 分类ID
17   - * @param String class_name:true 分类标题
18   - * @param String description 分类描述
19   - * @return array
20   - */
21   - public function Index_post()
22   - {
23   - // 验证规则
24   - $rules = [
25   - 'parent_id' => 'integer',
26   - 'class_id' => 'integer',
27   - 'class_name' => 'require|max:20',
28   - 'description' => 'max:120',
29   - 'is_open' => 'in:1,2',
30   - ];
31   -
32   - // 验证数据
33   - $validate = new PackageValidate($rules, [], array_keys($rules));
34   - $postData = $validate->postData;
35   -
36   - // 分类信息初始化
37   - $classServ = new ClassService();
38   - $classInfo = [
39   - 'class_name' => $postData['class_name'],
40   - 'description' => isset($postData['description']) ? $postData['description'] : '',
41   - 'is_open' => $postData['is_open']
42   - ];
43   -
44   - // 唯一分类名检查
45   - if (!$classServ->uniqueName($classInfo['class_name'], $postData['class_id'])) {
46   - E('_ERR_CLASS_NAME_REPEAT');
47   - }
48   -
49   - // 二级分类操作
50   - if (isset($postData['parent_id'])) {
51   - if (!isset($postData['parent_id']) || empty($postData['parent_id'])) {
52   - E('_ERR_CLASS_PARENT_ID_EMPTY');
53   - }
54   - $classInfo['parent_id'] = $postData['parent_id'];
55   -
56   - // 分类名改变,修改article内分类名称
57   - if (isset($postData['class_id'])) {
58   - $class = $classServ->get($postData['class_id']);
59   - if ($class && $class['class_name'] != $postData['class_name']) {
60   - $articleServ = new ArticleService();
61   - $articleServ->update_by_conds(
62   - [
63   - 'class_id' => $postData['class_id']],
64   - [
65   - 'class_name' => $postData['class_name']
66   - ]
67   - );
68   - }
69   - }
70   - } else {
71   - // 一级分类 默认开启
72   - $classInfo['is_open'] = 2;
73   - }
74   -
75   - if (empty($postData['class_id'])) {
76   - // 保存
77   - $postData['class_id'] = $classServ->insert($classInfo);
78   - } else {
79   - // 修改
80   - $classServ->update($postData['class_id'], $classInfo);
81   - }
82   - }
83   -}
trunk/Message/Apicp/Controller/NewsClass/UpdateOrderController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: liyifei2012it
5   - * Date: 17/4/11
6   - * Time: 19:16
7   - */
8   -namespace Apicp\Controller\NewsClass;
9   -
10   -use Com\PackageValidate;
11   -use Common\Service\ClassService;
12   -
13   -class UpdateOrderController extends \Apicp\Controller\AbstractController
14   -{
15   - /**
16   - * UpdateOrder
17   - * @author tangxingguo
18   - * @desc 分类拖动排序
19   - * @param int list[].class_id:true 一级分类ID
20   - * @param int list[].child[].class_id:true 二级分类ID
21   - * @return array
22   - */
23   - public function Index_post()
24   - {
25   - // 验证规则
26   - $rules = [
27   - 'list' => 'require|array',
28   - ];
29   -
30   - // 验证数据
31   - $validate = new PackageValidate($rules, [], array_keys($rules));
32   - $postData = $validate->postData;
33   -
34   - // 入库
35   - $classServ = new ClassService();
36   - $order = 0;
37   - foreach ($postData['list'] as $k => $v) {
38   - $classServ->update($v['class_id'], ['`order`' => $order]);
39   - $order ++;
40   - if (isset($v['child'])) {
41   - foreach ($v['child'] as $child) {
42   - $classServ->update($child['class_id'], ['`order`' => $order]);
43   - $order ++;
44   - }
45   - }
46   - }
47   - }
48   -}
trunk/Message/Apicp/Controller/Operate/ClassListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 18:36
7   - */
8   -namespace Apicp\Controller\Operate;
9   -
10   -use Common\Service\ClassService;
11   -
12   -class ClassListController extends \Apicp\Controller\AbstractController
13   -{
14   - /**
15   - * Banner 分类选择接口
16   - * @desc 用于首页 Banner 展示的接口
17   - * @return array(
18   - * array(
19   - * 'id' => '分类 ID', // 分类 ID
20   - * 'name' => '分类名称', // 分类名称
21   - * 'upId' => '上级分类 ID,为 0 则表示顶级' // 上级分类 ID,为 0 则表示顶级
22   - * ),
23   - * array()
24   - * )
25   - */
26   - public function Index_post()
27   - {
28   - $classServ = new ClassService();
29   - $classList = $classServ->list_all();
30   -
31   - // 格式化数据
32   - $res = [];
33   - if (!empty($classList)) {
34   - foreach ($classList as $k => $v) {
35   - $res[] = [
36   - 'id' => $v['class_id'],
37   - 'name' => $v['class_name'],
38   - 'upId' => $v['parent_id'],
39   - ];
40   - }
41   - }
42   -
43   - $this->_result = $res;
44   - }
45   -}
trunk/Message/Apicp/Controller/Operate/IconApiController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 18:36
7   - */
8   -namespace Apicp\Controller\Operate;
9   -
10   -use Common\Service\ClassService;
11   -
12   -class IconApiController extends \Apicp\Controller\AbstractController
13   -{
14   - /**
15   - * 栏目接口
16   - * @desc 栏目接口
17   - * @return array(
18   - * array(
19   - * 'id' => '分类 ID', // 分类 ID
20   - * 'name' => '分类名称', // 分类名称
21   - * 'url' => '分类链接,如果为空,则表明该链接不可直接访问', // 分类链接,如果为空,则表明该链接不可直接访问
22   - * 'upId' => '上级分类 ID,为 0 则表示顶级' // 上级分类 ID,为 0 则表示顶级
23   - * ),
24   - * array()
25   - * )
26   - */
27   - public function Index_post()
28   - {
29   - $classServ = new ClassService();
30   - $classList = $classServ->list_all();
31   -
32   - // 格式化数据
33   - $res = [
34   - [
35   - 'id' => 0,
36   - 'name' => '全部',
37   - 'url' => 'News/Frontend/Index/NewsList/Index?class_id=0',
38   - 'upId' => 0,
39   - ]
40   - ];
41   - if (!empty($classList)) {
42   - foreach ($classList as $k => $v) {
43   - $res[] = [
44   - 'id' => $v['class_id'],
45   - 'name' => $v['class_name'],
46   - // 只有一级分类可以直接跳转
47   - 'url' => $v['parent_id'] == 0 ? 'News/Frontend/Index/NewsList/Index?class_id=' . $v['class_id'] : '',
48   - 'upId' => $v['parent_id'],
49   - ];
50   - }
51   - }
52   -
53   - $this->_result = $res;
54   - }
55   -}
trunk/Message/Apicp/Controller/Operate/NewsListController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 18:36
7   - */
8   -namespace Apicp\Controller\Operate;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Service\ArticleService;
13   -
14   -class NewsListController extends \Apicp\Controller\AbstractController
15   -{
16   - /**
17   - * Banner 新闻列表接口
18   - * @desc 用于首页 Banner 新闻列表的接口
19   - * @param integer categoryId:false 要列表的分类 Id,为空则请求全部
20   - * @param integer limit:false:20 每页显示的数据条数
21   - * @param integer page:false:1 当前请求的页码
22   - * @return array(
23   - array(
24   - 'limit' => 20, // 每页显示的数据条数
25   - 'page' => 1, // 当前请求的页码
26   - 'total' => 20, // 数据总数
27   - 'pages' => 1, // 页码总数
28   - 'categoryId' => 1, // 当前请求的分类 ID
29   - 'list' => array(
30   - 'id' => '新闻 ID', // 新闻ID
31   - 'subject' => '新闻标题', // 新闻标题
32   - 'time' => '发表时间', // 发表时间
33   - 'categoryName' => '所属分类名称', // 分类名称
34   - 'categoryId' => '所属分类 ID', // 分类ID
35   - 'author' => '作者名称', // 作者名称
36   - )
37   - );
38   - */
39   - public function Index_post()
40   - {
41   - // 验证规则
42   - $rules = [
43   - 'categoryId' => 'integer',
44   - 'limit' => 'integer',
45   - 'page' => 'integer',
46   - ];
47   -
48   - // 验证数据
49   - $validate = new PackageValidate($rules, [], array_keys($rules));
50   - $postData = $validate->postData;
51   -
52   - // 默认值
53   - $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
54   - $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
55   -
56   - // 组合条件
57   - $conds = ['news_status' => Constant::NEWS_STATUS_SEND];
58   - if (isset($postData['categoryId'])) {
59   - $conds['class_id'] = $postData['categoryId'];
60   - }
61   -
62   - // 分页
63   - list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
64   -
65   - // 排序
66   - $order_option = ['top_time' => 'desc', 'send_time' => 'desc'];
67   -
68   - // 列表
69   - $articleServ = new ArticleService();
70   - $list = $articleServ->list_by_conds($conds, [$start, $perpage], $order_option);
71   - $resList = [];
72   - if (!empty($list)) {
73   - foreach ($list as $v) {
74   - $resList[] = [
75   - 'id' => $v['article_id'],
76   - 'subject' => $v['title'],
77   - 'time' => $v['send_time'],
78   - 'categoryName' => $v['class_name'],
79   - 'categoryId' => $v['class_id'],
80   - 'author' => $v['author'],
81   - ];
82   - }
83   - }
84   -
85   - // 数据总数
86   - $total = $articleServ->count_by_conds($conds);
87   -
88   - $this->_result = [
89   - 'limit' => $postData['limit'],
90   - 'page' => $postData['page'],
91   - 'total' => intval($total),
92   - 'pages' => ceil($total/$postData['limit']),
93   - 'categoryId' => isset($postData['categoryId']) ? $postData['categoryId'] : 0,
94   - 'list' => $resList,
95   - ];
96   - }
97   -}
trunk/Message/Apicp/Controller/Operate/NewsSearchController.class.php deleted 100644 → 0
1   -<?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: tangxingguo
5   - * Date: 2017/4/11
6   - * Time: 18:36
7   - */
8   -namespace Apicp\Controller\Operate;
9   -
10   -use Com\PackageValidate;
11   -use Common\Common\Constant;
12   -use Common\Service\ArticleService;
13   -use Common\Service\ClassService;
14   -
15   -class NewsSearchController extends \Apicp\Controller\AbstractController
16   -{
17   - /**
18   - * Banner 搜索新闻接口
19   - * @desc 用于 Banner 选择器的新闻搜索接口
20   - * @param string kw:false 待搜索的关键词,为空则返回全部
21   - * @param integer categoryId:false 分类筛选
22   - * @param integer limit:false:15 每页显示的数据条数
23   - * @param integer page:false:1 当前请求的页码
24   - * @return array(
25   - array(
26   - 'limit' => 20, // 每页显示的数据条数
27   - 'page' => 1, // 当前请求的页码
28   - 'total' => 20, // 数据总数
29   - 'pages' => 1, // 页码总数
30   - 'categoryId' => 1, // 当前请求的分类 ID
31   - 'list' => array(
32   - 'id' => '新闻 ID', // 新闻ID
33   - 'subject' => '新闻标题', // 新闻标题
34   - 'time' => '发表时间', // 发表时间
35   - 'categoryName' => '所属分类名称', // 分类名称
36   - 'categoryId' => '所属分类 ID', // 分类ID
37   - 'author' => '作者名称', // 作者名称
38   - )
39   - );
40   - */
41   - public function Index_post()
42   - {
43   - // 验证规则
44   - $rules = [
45   - 'kw' => 'max:120',
46   - 'categoryId' => 'integer',
47   - 'limit' => 'integer',
48   - 'page' => 'integer',
49   - ];
50   -
51   - // 验证数据
52   - $validate = new PackageValidate($rules, [], array_keys($rules));
53   - $postData = $validate->postData;
54   -
55   - // 默认值
56   - $postData['page'] = isset($postData['page']) ? $postData['page'] : Constant::PAGING_DEFAULT_PAGE;
57   - $postData['limit'] = isset($postData['limit']) ? $postData['limit'] : Constant::PAGING_DEFAULT_LIMIT;
58   -
59   - // 组合条件
60   - $conds = ['news_status' => Constant::NEWS_STATUS_SEND];
61   - if (isset($postData['categoryId'])) {
62   - $conds['class_id'] = $postData['categoryId'];
63   - }
64   - if (isset($postData['kw'])) {
65   - $conds['title like ?'] = '%' . $postData['kw'] . '%';
66   - }
67   -
68   - // 分页
69   - list($start, $perpage) = page_limit($postData['page'], $postData['limit']);
70   -
71   - // 排序
72   - $order_option = ['top_time' => 'desc', 'send_time' => 'desc'];
73   -
74   - // 列表
75   - $articleServ = new ArticleService();
76   - $list = $articleServ->list_by_conds($conds, [$start, $perpage], $order_option);
77   - $resList = [];
78   - if (!empty($list)) {
79   - // 取分类
80   - $classServ = new ClassService();
81   - $classList = $classServ->list_all();
82   - if (!empty($classList)) {
83   - $classList = array_combine_by_key($classList, 'class_id');
84   - }
85   -
86   - // 格式化数据
87   - foreach ($list as $v) {
88   - $resList[] = [
89   - 'id' => $v['article_id'],
90   - 'subject' => $v['title'],
91   - 'time' => $v['send_time'],
92   - 'categoryName' => $v['class_name'],
93   - 'categoryId' => $v['class_id'],
94   - 'author' => $v['author'],
95   - 'attachId' => $v['cover_id'],
96   - 'url' => 'News/Frontend/Index/Detail/Index?article_id=' . $v['article_id'],
97   - 'category' => isset($classList) ? $this->_getCategory($v['class_id'], $classList) : [],
98   - ];
99   - }
100   - }
101   -
102   - // 数据总数
103   - $total = $articleServ->count_by_conds($conds);
104   -
105   - $this->_result = [
106   - 'limit' => $postData['limit'],
107   - 'page' => $postData['page'],
108   - 'total' => intval($total),
109   - 'pages' => ceil($total/$postData['limit']),
110   - 'categoryId' => isset($postData['categoryId']) ? $postData['categoryId'] : 0,
111   - 'list' => $resList,
112   - ];
113   - }
114   -
115   - /**
116   - * @desc 根据分类ID取出当前分类以及父级分类信息
117   - * @author tangxingguo
118   - * @param int $classId 分类ID
119   - * @param array $classList 分类列表
120   - * @return array
121   - */
122   - private function _getCategory($classId, $classList)
123   - {
124   - $category = [];
125   - while (isset($classList[$classId]) && $classId != 0) {
126   - $category[] = [
127   - 'id' => $classId,
128   - 'name' => $classList[$classId]['class_name'],
129   - 'upId' => $classList[$classId]['parent_id'],
130   - 'url' => $classList[$classId]['parent_id'] == 0 ? frontUrl('/app/page/news/list/list', ['class_id' => $classId]) : '',
131   - ];
132   - $classId = $classList[$classId]['parent_id'];
133   - }
134   - return $category;
135   - }
136   -}
trunk/Message/Common/Model/AttachmentModel.class.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Dell
  5 + * Date: 2018/9/5
  6 + * Time: 9:47
  7 + */
  8 +
  9 +namespace Common\Model;
  10 +
  11 +use Common\Common\Constant;
  12 +
  13 +class AttachmentModel extends AbstractModel
  14 +{
  15 + /**
  16 + * 构造方法
  17 + * AttachmentModel constructor.
  18 + */
  19 + public function __construct()
  20 + {
  21 + parent::__construct();
  22 + }
  23 +}
... ...
trunk/Message/Common/Model/MessagesModel.class.php
... ... @@ -13,9 +13,13 @@ use Common\Common\Constant;
13 13 class MessagesModel extends AbstractModel
14 14 {
15 15  
16   - // 构造方法
  16 + /**
  17 + * 构造方法
  18 + * MessagesModel constructor.
  19 + */
17 20 public function __construct()
18 21 {
  22 + $this->prefield = 'm_';
19 23 parent::__construct();
20 24 }
21 25  
... ...
trunk/Message/Common/Sql/structure.php
... ... @@ -26,6 +26,7 @@ m_imgs VARCHAR(1000) DEFAULT &#39;&#39; COMMENT &#39;图片路径&#39;,
26 26 m_ip varchar(20) DEFAULT '' COMMENT '留言IP',
27 27 m_status TINYINT UNSIGNED DEFAULT 1 COMMENT '1:未审核 2:已审核 3:已删除',
28 28 m_uid INT UNSIGNED NOT NULL COMMENT '用户ID',
  29 +m_domain VARCHAR(100) NULL DEFAULT '' COMMENT '企业标识',
29 30 ins_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP() COMMENT '留言时间',
30 31 upd_date TIMESTAMP NULL COMMENT '修改/删除时间',
31 32 PRIMARY KEY (`m_id`),
... ... @@ -35,12 +36,12 @@ FOREIGN KEY(`m_uid`) REFERENCES luoyanshou(`u_id`) ON DELETE CASCADE ON UPDATE C
35 36 CREATE TABLE IF NOT EXISTS luoyanshou_attachment(
36 37 a_mid INT UNSIGNED NOT NULL COMMENT '留言ID',
37 38 a_path VARCHAR(200) DEFAULT '' COMMENT '附件路径',
38   -a_status TINYINT UNSIGNED COMMENT '0:未删除 1:已删除',
  39 +a_status TINYINT UNSIGNED DEFAULT 0 COMMENT '0:未删除 1:已删除',
39 40 ins_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP() COMMENT '上传时间',
40 41 upd_date TIMESTAMP NULL COMMENT '修改/删除时间',
41 42 PRIMARY KEY(`a_mid`,`a_path`),
42 43 FOREIGN KEY(`a_mid`) REFERENCES luoyanshou_messages(`m_id`) ON DELETE CASCADE ON UPDATE CASCADE
43   -)ENGINE=INNODB DEFAULT charset=utf8
  44 +)ENGINE=INNODB DEFAULT charset=utf8;
44 45  
45 46 CREATE TABLE IF NOT EXISTS luoyanshou_comment(
46 47 c_uid INT UNSIGNED NOT NULL COMMENT '评论用户ID',
... ... @@ -50,7 +51,7 @@ ins_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP() COMMENT &#39;评论时间&#39;,
50 51 upd_date TIMESTAMP NULL COMMENT '修改时间',
51 52 FOREIGN KEY(`c_uid`) REFERENCES luoyanshou(`u_id`) ON DELETE CASCADE ON UPDATE CASCADE,
52 53 FOREIGN KEY(`c_mid`) REFERENCES luoyanshou_messages(`m_id`) ON DELETE CASCADE ON UPDATE CASCADE
53   -)ENGINE=INNODB DEFAULT charset=utf8
  54 +)ENGINE=INNODB DEFAULT charset=utf8;
54 55  
55 56  
56 57  
... ...