//package com.tourism.webadmin.strategy.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.tourism.common.core.object.MyRelationParam;
//import com.tourism.common.core.util.MyModelUtil;
//import com.tourism.webadmin.back.dto.TourFansDto;
//import com.tourism.webadmin.back.model.TourUser;
//import com.tourism.webadmin.back.model.constant.NoticeType;
//import com.tourism.webadmin.back.service.TourUserService;
//import com.tourism.webadmin.back.vo.TourUserVo;
//import com.tourism.webadmin.enums.SystemDefault;
//import com.tourism.webadmin.strategy.NotificationStrategy;
//import com.tourism.webadmin.strategy.dto.FocusDTO;
//import org.springframework.context.ApplicationContext;
//
//import java.util.Date;
//import java.util.Map;
//
///**
// * FollowNotificationStrategy 类。
// * <p>
// * 描述：关注
// *
// * @author huangwenwen
// * @date 2025/1/6
// */
//
//public class FocusNotificationStrategy implements NotificationStrategy {
//
//    private ApplicationContext applicationContext;
//
//    private TourUserService tourUserService;
//    public FocusNotificationStrategy(ApplicationContext applicationContext) {
//        this.applicationContext = applicationContext;
//        this.tourUserService = applicationContext.getBean(TourUserService.class);
//    }
//
//
//    @Override
//    public String   buildMessage(Map<String, Object> params) {
//        // 获取方法参数
//        Object[] methodArgs = (Object[]) params.get("methodArgs");
//        // 至少一个参数并且该参数是 TourFansDto 类型
//        if (methodArgs != null && methodArgs.length > 0) {
//            // 获取第一个参数
//            Object arg = methodArgs[0];
//            // 如果参数是 TourFansDto 类型，则转换
//            if (arg instanceof TourFansDto tourFansDto) {
//
//                //发起关注人id
//                Long userId = tourFansDto.getCreateUserId();
//                TourUser tourUser = tourUserService.getByIdWithRelation(userId, MyRelationParam.normal());
//                if (tourUser != null) return null;
//
//                TourUserVo tourUserVo = MyModelUtil.copyTo(tourUser, TourUserVo.class);
//                // 构建消息体
//                FocusDTO focusDto = new FocusDTO();
//                focusDto.setNoticeType(NoticeType.NOTICE_FOCUS);
//                focusDto.setGroupId(SystemDefault.FOCUS_USERID_OR_GROUPID.toString());//群组id
//                focusDto.setGetUserId(tourFansDto.getAttentionId().toString());//被关注人
//                //发送人
//                focusDto.setSendUserId(SystemDefault.FOCUS_USERID_OR_GROUPID+"");//发送人
//                focusDto.setMessageContent(JSON.toJSONString(tourUserVo));//发起关注用户信息
//                focusDto.setCreateTime(new Date().toString());
//                String jsonString = JSON.toJSONString(focusDto);
//                return jsonString;
//            }
//        }
//        // 如果没有正确的参数，返回空的消息体
//        return "";
//    }
//}
