package com.czg.account.service;

import com.czg.product.dto.SyncNoticeReadDTO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.SyncNotice;

import java.util.List;

/**
 * 服务层。
 *
 * @author zs
 * @since 2025-04-07
 */
public interface SyncNoticeService extends IService<SyncNotice> {
    /**
     * 添加消息
     *
     * @param shopId    店铺id
     * @param sysUserId 操作用户id
     * @param name      商品/耗材名称
     * @param id        商品/耗材id
     * @param type      0 商品新增 1 商品编辑 2 耗材新增 3 耗材编辑
     */
    void addNotice(Long shopId, Long sysUserId, String name, Long id, Integer type);

    /**
     *
     * @param shopId 店铺ID
     * @param sysUserId 操作人Id
     * @param title  标题  数据同步/数据变动/库存预警
     * @param content 消息内容
     *    {
     *    	"title": "XX同步/变动",//商品 单位 规格 分组 耗材 耗材分组
     *    	"number": "XX个",
     *    	"map": [
     *    		        {
     *    			"id": 1,
     *    			"name": ""
     *           }
     *    	]
     *    }
     *    {
     *    	"title": "XX库存不足" //商品/耗材
     *    }
     *
     * @param extraJson 扩展数据
     */
    void addNotice(Long shopId, Long sysUserId, String title, String content, String extraJson);

    Page<SyncNotice> pageInfo(Long shopId, String name, String startTime, String endTime, String title, Integer isRead);

    Boolean read(Long shopId, SyncNoticeReadDTO syncNoticeReadDTO);

}
