package cn.pluss.platform.appletStore.impl;

import cn.pluss.platform.appletStore.AppletStoreService;
import cn.pluss.platform.entity.AppletStore;
import cn.pluss.platform.entity.AppletStoreUser;
import cn.pluss.platform.entity.MerchantStore;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.mapper.AppletStoreMapper;
import cn.pluss.platform.mapper.AppletStoreUserMapper;
import cn.pluss.platform.merchantStore.MerchantStoreService;
import cn.pluss.platform.userApp.UserAppService;
import cn.pluss.platform.util.BeanUtils;
import cn.pluss.platform.vo.AppletStoreVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * @author lyf
 */
@Service
public class AppletStoreServiceImpl extends ServiceImpl<AppletStoreMapper, AppletStore> implements AppletStoreService {

    @Resource
    private AppletStoreUserMapper appletStoreUserMapper;
    @Resource
    private UserAppService userAppService;
    @Resource
    private MerchantStoreService merchantStoreService;

    @Override
    public List<AppletStoreVO> getList(Integer userId) {
        QueryWrapper<AppletStore> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("type", 1);
        queryWrapper.orderByAsc("sort");
        List<AppletStore> appletStores = getBaseMapper().selectList(queryWrapper);

        UserApp userApp = userAppService.queryUserAppByToken();
        userApp.getMerchantCode();
        MerchantStore storeByMerchantCode = merchantStoreService.getStoreByMerchantCode(userApp.getMerchantCode());
        //组装数据
        return menuList(appletStores,userId, storeByMerchantCode.getId());
    }
    private List<AppletStoreVO> menuList(List<AppletStore> appletStores, Integer userId, Integer storeId){
        List<AppletStoreUser> appletStoreByUser = appletStoreUserMapper.getAppletStoreByUser(userId);
        ArrayList<AppletStoreVO> appletStoreVOList = new ArrayList<>();
        for (AppletStore appletStore : appletStores) {
            AppletStoreVO appletStoreVO = new AppletStoreVO();
            for (AppletStoreUser value : appletStoreByUser) {
                if (value.getAppleStoreId().equals(appletStore.getId())){
                    appletStoreVO.setIsOpen(1);
                    appletStoreVO.setAppletStoreId(value.getId());
                }
            }
            if ("餐饮商超".equals(appletStore.getStoreName())){
                appletStoreVO.setIsOpen(1);
                appletStoreVO.setAppletStoreId(storeId);
            }
            appletStoreVO.setId(appletStore.getId());
            appletStoreVO.setStoreName(appletStore.getStoreName());
            appletStoreVO.setIcon(appletStore.getIcon());
            appletStoreVO.setPath(appletStore.getUrl());
            appletStoreVO.setGhappId(appletStore.getAppId());
            appletStoreVO.setWxType(appletStore.getWxType() == null?0:appletStore.getWxType());
            appletStoreVOList.add(appletStoreVO);
        }
        return appletStoreVOList;
    }
}
