member_message.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: james
  5. * Date: 2017/4/21
  6. * Time: 上午10:23
  7. */
  8. class message_formater
  9. {
  10. public function format($param)
  11. {
  12. $result = [];
  13. $result['message_id'] = intval($param['message_id']);
  14. $result['message_parent_id'] = intval($param['message_parent_id']);
  15. $result['from_member_id'] = intval($param['from_member_id']);
  16. $result['to_member_id'] = strval($param['to_member_id']);
  17. $result['message_title'] = strval($param['message_title']);
  18. $result['message_body'] = strval($param['message_body']);
  19. $result['message_time'] = strval($param['message_time']);
  20. $result['message_update_time'] = strval($param['message_update_time']);
  21. $result['message_open'] = intval($param['message_open']);
  22. $result['message_state'] = intval($param['message_state']);
  23. $result['message_type'] = intval($param['message_type']);
  24. $result['read_member_id'] = strval($param['read_member_id']);
  25. $result['del_member_id'] = strval($param['del_member_id']);
  26. $result['message_ismore'] = intval($param['message_ismore']);
  27. $result['read_member_id'] = strval($param['read_member_id']);
  28. $result['from_member_name'] = strval($param['from_member_name']);
  29. $result['to_member_name'] = strval($param['to_member_name']);
  30. return $result;
  31. }
  32. }
  33. class member_messageControl extends mbMemberControl
  34. {
  35. public function indexOp()
  36. {
  37. }
  38. public function listOp()
  39. {
  40. $mod_message = Model('message');
  41. $items = $mod_message->listMessage(array('message_type'=>'1','to_member_id_common'=>$_SESSION['member_id'],'no_message_state'=>'2'));
  42. if (empty($items)) {
  43. return self::outsuccess(null, 'nomessage');
  44. }
  45. else
  46. {
  47. $messages = [];
  48. $messager = new message_formater();
  49. foreach ($items as $item)
  50. {
  51. $messages[] = $messager->format($item);
  52. }
  53. $newnum = $this->countnewnum();
  54. return self::outsuccess(array('newnum'=>$newnum, 'message_array'=>$messages));
  55. }
  56. }
  57. public function systemmsgOp()
  58. {
  59. $model_message = Model('message');
  60. $message_array = $model_message->listMessage(array('from_member_id'=>'0','message_type'=>'1','to_member_id'=>$_SESSION['member_id'],'no_del_member_id'=>$_SESSION['member_id']));
  61. if (!empty($message_array) && is_array($message_array))
  62. {
  63. foreach ($message_array as $k=>$v)
  64. {
  65. $v['message_open'] = '0';
  66. if (!empty($v['read_member_id'])){
  67. $tmp_readid_arr = explode(',',$v['read_member_id']);
  68. if (in_array($_SESSION['member_id'],$tmp_readid_arr)){
  69. $v['message_open'] = '1';
  70. }
  71. }
  72. $v['from_member_name'] = Language::get('home_message_system_message');
  73. $message_array[$k] = $v;
  74. }
  75. $message_array = array_slice($message_array, 0, 20);
  76. $messages = [];
  77. foreach ($message_array as $item)
  78. {
  79. $messager = new message_formater($item);
  80. $message = $messager->format();
  81. $messages[] = $message;
  82. }
  83. $newnum = intval($model_message->countNewMessage($_SESSION['member_id']));
  84. return self::outsuccess($messages);
  85. } else {
  86. return self::outsuccess(null, 'nomessage');
  87. }
  88. }
  89. public function showmsgbatchOp()
  90. {
  91. $model_message = Model('message');
  92. $message_id = intval($_GET['message_id']);
  93. $drop_type = trim($_GET['drop_type']);
  94. $referer_url = getReferer();
  95. if(!in_array($drop_type,array('msg_system','msg_seller')) || $message_id<=0){
  96. // showMessage(Language::get('wrong_argument'),$referer_url,'html','error');
  97. }
  98. //查询站内信
  99. $param = array();
  100. $param['message_id'] = "$message_id";
  101. $param['to_member_id'] = "{$_SESSION['member_id']}";
  102. $param['no_del_member_id'] = "{$_SESSION['member_id']}";
  103. $message_info = $model_message->getRowMessage($param);
  104. if (empty($message_info)){
  105. // showMessage(Language::get('home_message_no_record'),$referer_url,'html','error');
  106. }
  107. if ($drop_type == 'msg_system'){
  108. $message_info['from_member_name'] = Language::get('home_message_system_message');
  109. }
  110. // if ($drop_type == 'msg_seller'){
  111. // //查询店铺信息
  112. // $model_store = Model('store');
  113. // $store_info = $model_store->getStoreInfo(array('member_id'=>"{$message_info['from_member_id']}"));
  114. // $message_info['from_member_name'] = $store_info['store_name'];
  115. // $message_info['store_id'] = $store_info['store_id'];
  116. // }
  117. $message_list[0] = $message_info;
  118. // Tpl::output('message_list',$message_list);//站内信列表
  119. //更新为已读信息
  120. $tmp_readid_str = '';
  121. if (!empty($message_info['read_member_id'])){
  122. $tmp_readid_arr = explode(',',$message_info['read_member_id']);
  123. if (!in_array($_SESSION['member_id'],$tmp_readid_arr)){
  124. $tmp_readid_arr[] = $_SESSION['member_id'];
  125. }
  126. foreach ($tmp_readid_arr as $readid_k=>$readid_v){
  127. if ($readid_v == ''){
  128. unset($tmp_readid_arr[$readid_k]);
  129. }
  130. }
  131. $tmp_readid_arr = array_unique ($tmp_readid_arr);//去除相同
  132. sort($tmp_readid_arr);//排序
  133. $tmp_readid_str = ",".implode(',',$tmp_readid_arr).",";
  134. }else {
  135. $tmp_readid_str = ",{$_SESSION['member_id']},";
  136. }
  137. $model_message->updateCommonMessage(array('read_member_id'=>$tmp_readid_str),array('message_id'=>"{$message_id}"));
  138. //更新未读站内信数量cookie值
  139. // $cookie_name = 'msgnewnum'.$_SESSION['member_id'];
  140. // $countnum = $model_message->countNewMessage($_SESSION['member_id']);
  141. // setNcCookie($cookie_name,$countnum,2*3600);//保存2小时
  142. // Tpl::output('message_num',$countnum);
  143. // 新消息数量
  144. $newnum = $this->countnewnum();
  145. return self::outsuccess(array('message_list'=>$message_list, 'newnum' => $newnum));
  146. // Tpl::output('drop_type',$drop_type);
  147. // $this->profile_menu('showmsg');
  148. // Tpl::showpage('member_message.view');
  149. }
  150. /**
  151. * 删除普通信
  152. */
  153. public function dropcommonmsgOp() {
  154. $message_id = trim($_GET['message_id']);
  155. $drop_type = trim($_GET['drop_type']);
  156. if(!in_array($drop_type,array('msg_private','msg_list','sns_msg')) || empty($message_id)) {
  157. showMessage(Language::get('wrong_argument'),'','html','error');
  158. }
  159. $messageid_arr = explode(',',$message_id);
  160. $messageid_str = '';
  161. if (!empty($messageid_arr)){
  162. $messageid_str = "'".implode("','",$messageid_arr)."'";
  163. }
  164. $model_message = Model('message');
  165. $param = array('message_id_in'=>$messageid_str);
  166. if($drop_type == 'msg_private'){
  167. $param['from_member_id'] = "{$_SESSION['member_id']}";
  168. }elseif($drop_type == 'msg_list'){
  169. $param['to_member_id_common'] = "{$_SESSION['member_id']}";
  170. }elseif($drop_type == 'sns_msg'){
  171. $param['from_to_member_id'] = $_SESSION['member_id'];
  172. }
  173. $drop_state = $model_message->dropCommonMessage($param,$drop_type);
  174. if ($drop_state){
  175. //更新未读站内信数量cookie值
  176. $cookie_name = 'msgnewnum'.$_SESSION['member_id'];
  177. $countnum = $model_message->countNewMessage($_SESSION['member_id']);
  178. setNcCookie($cookie_name,$countnum,2*3600);//保存2小时
  179. showDialog(Language::get('home_message_delete_success'),'reload','succ');
  180. }else {
  181. showDialog(Language::get('home_message_delete_fail'),'','error');
  182. }
  183. }
  184. /**
  185. * 删除批量站内信
  186. */
  187. public function dropbatchmsgOp() {
  188. $message_id = trim($_GET['message_id']);
  189. $drop_type = trim($_GET['drop_type']);
  190. if(!in_array($drop_type,array('msg_system','msg_seller')) || empty($message_id)){
  191. // showDialog(Language::get('home_message_delete_request_wrong'));
  192. self::outerr('home_message_delete_request_wrong');
  193. }
  194. $messageid_arr = explode(',',$message_id);
  195. $messageid_str = '';
  196. if (!empty($messageid_arr)){
  197. $messageid_str = "'".implode("','",$messageid_arr)."'";
  198. }
  199. $model_message = Model('message');
  200. $param = array('message_id_in'=>$messageid_str);
  201. if($drop_type == 'msg_system'){
  202. $param['message_type'] = '1';
  203. $param['from_member_id'] = '0';
  204. }
  205. if($drop_type == 'msg_seller'){
  206. $param['message_type'] = '2';
  207. }
  208. $drop_state = $model_message->dropBatchMessage($param,$_SESSION['member_id']);
  209. if ($drop_state){
  210. //更新未读站内信数量cookie值
  211. // $cookie_name = 'msgnewnum'.$_SESSION['member_id'];
  212. $countnum = $model_message->countNewMessage($_SESSION['member_id']);
  213. return self::outsuccess(array('drop_state'=>true, 'newnum' => $countnum));
  214. // setNcCookie($cookie_name,$countnum,2*3600);//保存2小时
  215. // showDialog(Language::get('home_message_delete_success'),'reload','succ');
  216. }else {
  217. return self::outerr(array('drop_state' => false));
  218. }
  219. }
  220. public function settingOp() {
  221. $model_membermsgsetting = Model('member_msg_setting');
  222. if (chksubmit())
  223. {
  224. $insert = array(
  225. // 付款成功提醒
  226. array( 'mmt_code' => 'order_payment_success', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['order_payment_success']) ),
  227. // 商品出库提醒
  228. array( 'mmt_code' => 'order_deliver_success', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['order_deliver_success']) ),
  229. // 余额变动提醒
  230. array( 'mmt_code' => 'predeposit_change', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['predeposit_change']) ),
  231. // 充值卡余额变动提醒
  232. array( 'mmt_code' => 'recharge_card_balance_change', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['recharge_card_balance_change']) ),
  233. // 代金券使用提醒
  234. array( 'mmt_code' => 'voucher_use', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['voucher_use']) ),
  235. // 退款退货提醒
  236. array( 'mmt_code' => 'refund_return_notice', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['refund_return_notice']) ),
  237. // 到货通知提醒
  238. array( 'mmt_code' => 'arrival_notice', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['arrival_notice']) ),
  239. // 商品咨询回复提醒
  240. array( 'mmt_code' => 'consult_goods_reply', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['consult_goods_reply']) ),
  241. // 平台客服回复提醒
  242. array( 'mmt_code' => 'consult_mall_reply', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['consult_mall_reply']) ),
  243. // 代金券即将到期
  244. array( 'mmt_code' => 'voucher_will_expire', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['voucher_will_expire'])),
  245. // 兑换码即将到期提醒
  246. array( 'mmt_code' => 'vr_code_will_expire', 'member_id' => $_SESSION['member_id'], 'is_receive' => intval($_POST['vr_code_will_expire'])),
  247. );
  248. $result = $model_membermsgsetting->addMemberMsgSettingAll($insert);
  249. if ($result) {
  250. self::outsuccess(array('set_mess' => true));
  251. } else {
  252. self::outerr(array('set_mess'=>false));
  253. }
  254. }
  255. // 新消息数量
  256. $newnum = $this->countnewnum();
  257. $setting_list = $model_membermsgsetting->getMemberMsgSettingList(array('member_id' => $_SESSION['member_id']));
  258. $setting_array = array();
  259. if (!empty($setting_list)) {
  260. foreach ($setting_list as $val) {
  261. $setting_array[$val['mmt_code']] = intval($val['is_receive']);
  262. }
  263. }
  264. return self::outsuccess(array('setting_array'=>$setting_array, 'newnum'=>$newnum));
  265. }
  266. private function countnewnum()
  267. {
  268. $num = [];
  269. $num['system'] = $this->countNsystem();
  270. return $num;
  271. }
  272. private function countNsystem()
  273. {
  274. $mod = Model('message');
  275. $con = [];
  276. $con['message_type'] = '1';
  277. $con['to_member_id'] = $_SESSION['member_id'];
  278. $con['no_del_member_id'] = $_SESSION['member_id'];
  279. $con['no_read_member_id'] = $_SESSION['member_id'];
  280. $countnum = $mod->countMessage($con);
  281. return $countnum;
  282. }
  283. }