123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- <?php
- /**
- * chat
- *
- *
- *
- *
-
- */
- defined('InShopNC') or exit('Access Invalid!');
- class web_chatModel extends Model{
- /**
- * get chat msg
- *
- * @param
- * @return array
- */
- public function getMsgList($condition = array(),$page = 10) {
- $result = $this->table('chat_msg')->where($condition)->page($page)->order('m_id')->select();
- return $result;
- }
- /**
- * add chat msg
- *
- * @param
- * @return array
- */
- public function addMsg($msg) {
- $msg['f_ip'] = getIp();
- $msg['r_state'] = '2';//state:1--read ,2--unread
- $msg['add_time'] = time();
- $m_id = $this->table('chat_msg')->insert($msg);
- if ($m_id > 0) {
- $msg['m_id'] = $m_id;
- unset($msg['r_state']);
- $this->table('chat_log')->insert($msg);
- $msg['m_id'] = $m_id;
- $msg['add_time'] = date('Y-m-d H:i:s',$msg['add_time']);
- $t_msg = $msg['t_msg'];
- $goods_id = 0;
- $goods_info = array();
- $pattern = '#'.SHOP_SITE_URL.'/index.php\?act=goods&op=index&goods_id=(\d+)$#';
- preg_match($pattern, $t_msg, $matches);
- if (intval($matches[1]) < 1) {//伪静态
- $pattern = '#'.SHOP_SITE_URL.'/item-(\d+)\.html$#';
- preg_match($pattern, $t_msg, $matches);
- }
- $goods_id = intval($matches[1]);
- if ($goods_id >= 1) {
- $goods_info = $this->getGoodsInfo($goods_id);
- $goods_id = intval($goods_info['goods_id']);
- }
- $msg['goods_id'] = $goods_id;
- $msg['goods_info'] = $goods_info;
- return $msg;
- } else {
- return 0;
- }
- }
- /**
- * member info
- *
- * @param
- * @return array
- */
- public function getMember($member_id) {
- if (intval($member_id) < 1) {
- return false;
- }
- $member = $this->getMemberInfo(array('member_id'=> $member_id));
- return $member;
- }
- /**
- * update chat msg
- *
- * @param
- * @return bool
- */
- public function updateMsg($condition,$data) {
- $m_id = $condition['m_id'];
- if (intval($m_id) < 1) {
- return false;
- }
- if (is_array($data)) {
- $result = $this->table('chat_msg')->where($condition)->update($data);
- return $result;
- } else {
- return false;
- }
- }
- /**
- * get chat log
- *
- * @param
- * @return array
- */
- public function getLogList($condition = array(),$page = 10) {
- $list = $this->table('chat_log')->where($condition)->page($page)->order('m_id desc')->select();
- if(!empty($list) && is_array($list)) {
- foreach($list as $k => $v) {
- $v['time'] = date("Y-m-d H:i:s",$v['add_time']);
- $list[$k] = $v;
- }
- }
- return $list;
- }
- /**
- * get friends
- *
- * @param
- * @return array
- */
- public function getFriendList($condition = array(),$page = 50,$member_list = array()) {
- $list = $this->table('sns_friend')->where($condition)->page($page)->order('friend_addtime desc')->select();
- if(!empty($list) && is_array($list)) {
- foreach($list as $k => $v) {
- $member = array();
- $u_id = $v['friend_tomid'];
- $member['u_id'] = $u_id;
- $member['u_name'] = $v['friend_tomname'];
- $member['avatar'] = getMemberAvatarForID($u_id);
- $member['friend'] = 1;
- $member_list[$u_id] = $member;
- }
- }
- return $member_list;
- }
- /**
- * 商家客服
- *
- * @param
- * @return array
- */
- public function getSellerList($condition = array(),$page = 50,$member_list = array()) {
- $model_seller = Model('seller');
- $list = $model_seller->getSellerList($condition,$page,'seller_id desc');
- if(!empty($list) && is_array($list)) {
- $member_ids = array();//会员编号数组
- foreach($list as $k => $v) {
- $member = array();
- $u_id = $v['member_id'];
- $member_ids[] = $u_id;
- $member['u_id'] = $u_id;
- $member['u_name'] = '';
- $member['seller_id'] = $v['seller_id'];
- $member['seller_name'] = $v['seller_name'];
- $member['avatar'] = getMemberAvatarForID($u_id);
- $member['seller'] = 1;
- $member_list[$u_id] = $member;
- }
- $model_member = Model('member');
- $condition = array();
- $condition['member_id'] = array('in', $member_ids);
- $m_list = $model_member->getMemberList($condition);
- if (!empty($m_list) && is_array($m_list)) {
- foreach ($m_list as $key => $value) {
- $u_id = $value['member_id'];//会员编号
- $member_list[$u_id]['u_name'] = $value['member_name'];
- }
- }
- }
- return $member_list;
- }
- /**
- * get recent msg
- *
- * @param
- * @return array
- */
- public function getRecentList($condition = array(),$limit = 5,$member_list = array()) {
- $list = $this->getMemberRecentList($condition, '', $limit);
- if(!empty($list) && is_array($list)) {
- foreach($list as $k => $v) {
- $member = array();
- $u_id = $v['t_id'];
- $member['u_id'] = $u_id;
- $member['u_name'] = $v['t_name'];
- $member['avatar'] = getMemberAvatarForID($u_id);
- $member['recent'] = 1;
- $member['time'] = date("Y-m-d H:i:s",$v['addtime']);
- if(empty($member_list[$u_id])) {
- $member_list[$u_id] = $member;
- } else {
- $member_list[$u_id]['recent'] = 1;
- $member_list[$u_id]['time'] = date("Y-m-d H:i:s",$v['addtime']);
- }
- }
- }
- return $member_list;
- }
- /**
- * get recent from msg
- *
- * @param
- * @return array
- */
- public function getRecentFromList($condition = array(),$limit = 5,$member_list = array()) {
- $list = $this->getMemberFromList($condition, '', $limit);
- if(!empty($list) && is_array($list)) {
- foreach($list as $k => $v) {
- $member = array();
- $u_id = $v['f_id'];
- $member['u_id'] = $u_id;
- $member['u_name'] = $v['f_name'];
- $member['avatar'] = getMemberAvatarForID($u_id);
- $member['recent'] = 1;
- $member['time'] = date("Y-m-d H:i:s",$v['addtime']);
- if(empty($member_list[$u_id])) {
- $member_list[$u_id] = $member;
- } else {
- $member_list[$u_id]['recent'] = 1;
- $member_list[$u_id]['time'] = date("Y-m-d H:i:s",$v['addtime']);
- }
- }
- }
- return $member_list;
- }
- /**
- * 收到消息的会员记录
- *
- * @param
- * @return array
- */
- public function getMemberRecentList($condition = array(), $page = '', $limit = '') {
- $list = array();
- $msg = $this->table('chat_msg')->field('count(DISTINCT t_id) as count')->where($condition)->find();
- if ($msg['count'] > 0) {
- $count = intval($msg['count']);
- $list = $this->table('chat_msg')->field('t_id,t_name,max(add_time) as addtime')->group('t_id')->where($condition)->limit($limit)->page($page, $count)->order('addtime desc')->select();
- }
- return $list;
- }
- /**
- * 发出消息的会员记录
- *
- * @param
- * @return array
- */
- public function getMemberFromList($condition = array(), $page = '', $limit = '') {
- $list = array();
- $msg = $this->table('chat_msg')->field('count(DISTINCT f_id) as count')->where($condition)->find();
- if ($msg['count'] > 0) {
- $count = intval($msg['count']);
- $list = $this->table('chat_msg')->field('f_id,f_name,max(add_time) as addtime')->group('f_id')->where($condition)->limit($limit)->page($page, $count)->order('addtime desc')->select();
- }
- return $list;
- }
- /**
- * 单个会员的消息记录
- *
- * @param
- * @return array
- */
- public function getLogFromList($condition = array(),$page = 10) {
- $list = array();
- $f_id = intval($condition['f_id']);
- if ($f_id > 0) {
- $t_id = intval($condition['t_id']);
- if ($t_id > 0) {
- $condition_sql = " ((f_id = '".$f_id."' and t_id = '".$t_id."') or (f_id = '".$t_id."' and t_id = '".$f_id."'))";
- } else {
- $condition_sql = " (f_id = '".$f_id."' or t_id = '".$f_id."')";
- }
- $add_time_from = trim($condition['add_time_from']);
- if (!empty($add_time_from)) {
- $add_time_from = strtotime($add_time_from);
- $condition_sql .= " and add_time >= '".$add_time_from."'";
- }
- $add_time_to = trim($condition['add_time_to']);
- if (!empty($add_time_to)) {
- $add_time_to = strtotime($add_time_to)+60*60*24;
- $condition_sql .= " and add_time <= '".$add_time_to."'";
- }
- $t_msg = trim($condition['t_msg']);
- if (!empty($t_msg)) {
- $condition_sql .= " and t_msg like '%".$t_msg."%'";
- }
- $list = $this->getLogList($condition_sql,$page);
- }
- return $list;
- }
- /**
- * 会员相关的信息
- *
- * @param
- * @return array
- */
- public function getMemberInfo($condition) {
- $model_member = Model('member');
- $member = $model_member->getMemberInfo($condition,'member_id,member_name,member_avatar');
- $member['store_name'] = '';
- $member['grade_id'] = '';
- $member['member_avatar'] = getMemberAvatar($member['member_avatar']);
- $model_seller = Model('seller');
- $seller = $model_seller->getSellerInfo(array('member_id'=> $member['member_id']));
- if (!empty($seller) && $seller['store_id'] > 0) {
- $store_info = $this->table('store')->field('store_id,store_name,grade_id')->where(array('store_id'=> $seller['store_id']))->find();
- if (is_array($store_info) && !empty($store_info)) {
- $member['store_id'] = $store_info['store_id'];
- $member['store_name'] = $store_info['store_name'];
- $member['seller_name'] = $seller['seller_name'];
- $member['grade_id'] = $store_info['grade_id'];
- }
- }
- return $member;
- }
- /**
- * 商品相关的信息
- *
- * @param
- * @return array
- */
- public function getGoodsInfo($goods_id) {
- $goods = array();
- $model_goods = Model('goods');
- $goods_id = intval($goods_id);
- $field = 'goods_id,store_id,goods_commonid,goods_name,goods_image,goods_price,goods_marketprice,goods_promotion_price';
- $goods = $model_goods->getGoodsInfoByID($goods_id,$field);
- if (is_array($goods) && !empty($goods)) {
- $goods['url'] = urlShop('goods','index',array('goods_id'=> $goods['goods_id']));
- $goods['pic'] = thumb($goods,60);
- }
- return $goods;
- }
- }
|