package com.xinelu.applet.service.patientcenter;

import com.xinelu.applet.dto.nursingstationgoods.GoodsList;
import com.xinelu.applet.dto.nursingstationgoods.GoodsOrderStationDTO;
import com.xinelu.applet.dto.patientcenter.PatientCenterCouponDTO;
import com.xinelu.applet.vo.coupon.CouponVO;
import com.xinelu.applet.vo.patientcenter.PatientCenterCouponVO;
import com.xinelu.applet.vo.patientcenter.PatientSignInfoVO;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.manage.domain.subscribemessagerecord.SubscribeMessageRecord;

import java.util.List;

/**
 * @Description 会员APP和小程序个人中心业务层
 * @Author 纪寒
 * @Date 2023-02-24 14:45:11
 * @Version 1.0
 */
public interface PatientCenterService {

    /**
     * 会员app和微信小程序-签到方法
     *
     * @param patientId     会员用户id
     * @param signInChannel 签到来源，微信小程序、会员APP
     * @return 签到结果
     */
    AjaxResult patientSignIn(Long patientId, String signInChannel);

    /**
     * 个人中心优惠券
     *
     * @param patientCenterCouponVO 用户信息及优惠券状态
     * @return List<CouponVO>
     */
    List<CouponVO> selectCouponByUseStatus(PatientCenterCouponVO patientCenterCouponVO);

    /**
     * 个人中心积分兑换 - 查询积分兑换商品
     *
     * @return AjaxResult
     */
    List<GoodsList> selectExchangeGoods();

    /**
     * 获取积分返回规则
     *
     * @param patientId 用户id
     * @return com.xinyilu.nurseapplet.domain.vo.patientcenter.PatientSignInfoVO
     **/
    PatientSignInfoVO selectPatientSignIn(Long patientId);

    /**
     * 新人福利优惠券
     *
     * @param patientCenterCouponVO 用户信息及优惠券状态
     * @return List<CouponVO>
     */
    TableDataInfo getCouponByUseStatus(PatientCenterCouponDTO patientCenterCouponVO);

    /**
     * 新人福利-优惠券领取
     *
     * @param patientId 用户id
     * @param couponId  优惠券id
     * @return AjaxResult
     */
    AjaxResult insertCouponReceive(Long patientId, Long couponId);

    /**
     * 微信小程序-邀请好友接口
     *
     * @param inviteId 邀请人id
     * @return 邀请码图片地址
     */
    AjaxResult inviteFriends(Long inviteId);

    /**
     * 新增积分兑换商品订单以及详细信息
     *
     * @param goodsOrder 商品订单
     * @return 结果
     */
    AjaxResult insertIntegralGoodsOrder(GoodsOrderStationDTO goodsOrder);

    /**
     * 新增订阅微信小程序订阅消息记录
     *
     * @param subscribeMessageRecord 订阅微信小程序订阅消息记录
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    AjaxResult insertSubscribeMessageRecord(List<SubscribeMessageRecord> subscribeMessageRecord);
}
