package com.product.mobile.core.service; import com.product.admin.config.CmnConst; import com.product.admin.service.PublicService; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.module.sys.service.UserService; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Copyright © 6c * * @Date: 2022-03-18 08:41 * @Author: 6c * @Description: */ @Component public class SysMessageService extends AbstractBaseService { @Autowired private BaseDao baseDao; @Autowired private UserService userService; /** * 列表-已读消息 * @param fse * @return */ public DataTableEntity listReadMessage(FieldSetEntity fse) { ArrayList ps= new ArrayList(); ps.add(SpringMVCContextHolder.getCurrentUserId()); StringBuilder f=new StringBuilder(); if(fse.getString("type")!=null) { f.append(" and SUBSTRING(m.message_type,1,1)=?"); ps.add(fse.getString("type")); } if(fse.getString("key")!=null) { f.append( " and (title like concat('%',?,'%') or content like concat('%',?,'%') or user_name like concat('%',?,'%') ) "); ps.add(fse.getString("key")); ps.add(fse.getString("key")); ps.add(fse.getString("key")); } StringBuilder sql = new StringBuilder(); sql.append("\nselect m.uuid,m.title,m.content,m.send_user_id,mu.user_name send_user_name,m.send_time,m.message_type,ifnull(m.url,'') url,source_table,source_uuid,thumbnail_img "); sql.append("\nfrom product_sys_message m"); sql.append("\nleft join product_sys_users mu on mu.user_id=m.send_user_id "); sql.append("\ninner join product_sys_message_user u on u.message_uuid=m.uuid and u.read_type=1 and u.user_id=? ").append(f); sql.append("\norder by m.send_time desc"); DataTableEntity dte = baseDao.listTable(sql.toString(), ps.toArray(), fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); dte.getMeta().addAliasTable("product_sys_message", "m"); baseDao.loadPromptData(dte); // 头像 FieldSetEntity tempFse; for (int i = 0;i < dte.getRows();i++) { tempFse = dte.getFieldSetEntity(i); tempFse.setValue(com.product.core.websocket.config.CmnConst.SEND_THUMBNAIL_IMG, userService.getUserAvatar(tempFse.getString("send_user_id_save_value"))); } return dte; } /** * 统计分类型消息 * @param fse * @return */ public DataTableEntity getTypeMessage(Object type,int read) { ArrayList ps= new ArrayList(); ps.add(SpringMVCContextHolder.getCurrentUserId()); ps.add(read); String f=""; if(type!=null) { f=" and SUBSTRING(message_type,1,1)=?"; ps.add(type); } StringBuilder sql = new StringBuilder(); sql.append("\nselect SUBSTRING(message_type,1,1) message_type, count(*) num from product_sys_message m inner join product_sys_message_user u on u.message_uuid=m.uuid \r\n" + "and u.user_id=? and u.read_type=?").append(f).append(" group by SUBSTRING(message_type,1,1) "); DataTableEntity dte = baseDao.listTable(sql.toString(),ps.toArray(),Integer.MAX_VALUE, 1); return dte; } }