周任务想法总结-2020/08/21

一、周任务

工作任务

  • 分类Tab需求
  • 首页管理
1、分类Tab需求

在这里插入图片描述1)TAB新增版本灰度
        新增首页Tab灰度,默认隐藏Tab图标

	  /**
     * A版本(灰度版本):隐藏tab栏的图片
     * */
    public static final String HIDDEN_TABIMG = "AppTabText";
    /**
     * B版本(对照版本):正常显示tab栏的图片
     * */
    public static final String NORMAL_TABIMG = "AppTabIcon";
/**
 * @Author
 * @Date 2020/8/17-14:23
 */
public interface ITabImgABService {
    /**
     * tab栏去掉图标灰度
     *
    * @Author: 
    * @Date: 2020/8/17-14:23
    */
    String queryTabImgAB(Integer consumerId);

}
/*
* 实现同一个接口,分别为A和B方案
*/
@Service
public class AppTabIconImpl implements ITabImgABService {

    @ABMethod(defaultImpl = true)
    @Override
    public String queryTabImgAB(Integer consumerId) {
        return ABConstant.NORMAL_TABIMG;
    }
}

@Service
public class AppTabTextImpl implements ITabImgABService {

    @ABMethod(defaultImpl = false)
    @Override
    public String queryTabImgAB(Integer consumerId) {
        return ABConstant.HIDDEN_TABIMG;
    }
}

/**
 * 这里是调用模板,执行相应的方法
 * 识别方法:通过定义的资源名称必须和方法的名称相同
 * */
 * @Resource(name = "queryTabImgAB")//这里的名称需要和实现类的方法名称一样,要不然无法识别资源对象
    private ABService<String> queryTabImgAB;
    
		String tabImgGrayScale = queryTabImgAB.execute(sid, 0).getModel();
        result.put("tabImgGrayScale", tabImgGrayScale);

    
2)分类Tab排序
     分类排序的实现

 @Override
    public List<ChannelTabVo> queryByChannelTab(ChannelTabReq req) {
        String json = redisCache.get(Constants.TABSORT);
        List<Integer> list = new ArrayList<>();
        if (StringUtil.isNotEmpty(json)) {
            String[] split = json.split(",");
            //list存放用于置顶的tab
            for (int i = 0; i < split.length; i++) {
                if (!split[i].matches("^1[0,1][0-9]$")) {
                    continue;
                }
                list.add(Integer.parseInt(split[i]));
            }
        }
        //list是人工后台排序,getRecTab()是调用大数据传过来的排序,
        return queryByChannelTabNew(list, getRecTab(req.getConsumerId()), req.getStrVersion());

    }
    
   // 手动配置部分tab实现置顶操作
    
 public List<ChannelTabVo> queryByChannelTabNew(List<Integer> tabIds, List<Integer> bigDataIds, int version) {
        //默认排序(Diamond中的默认顺序),只是用来获取其顺序
        List<Integer> tabList = new ArrayList<>();
        String defaultTabList = ysDiamondInfo.getTabCollocation();
        List<ChannelTabVo> channelTabVos = JSON.parseArray(defaultTabList, ChannelTabVo.class);
        for (ChannelTabVo tab : channelTabVos) {
            tabList.add(tab.getTabId());
        }
        //大数据传过来为空
        if (CollectionUtils.isEmpty(bigDataIds)) {
            bigDataIds = tabList;
        }
        //.....略
     }

数据的来源有两块:
      1)由后台配置的tab栏顺序;
      2)大数据推送的排序

需求:如果后台配置平台配置了tab的顺序,则将其配置的进行置顶,如果后台没有配置则使用大数据推荐的顺序进行排列。
在解决这个需求的时候需要考虑数据来源为null的情况,如果传入为空,则使用Diamond默认的顺序。

3)分类文案
分类文案支持研发侧可配置:解决该功能主要是将tab的信息配置到后台,每次拿到这些tab的ID/名称都是从后台中读取的

 //默认排序(Diamond中的默认顺序),只是用来获取其顺序
        List<Integer> tabList = new ArrayList<>();
        String defaultTabList = ysDiamondInfo.getTabCollocation();
        List<ChannelTabVo> channelTabVos = JSON.parseArray(defaultTabList, ChannelTabVo.class);
        for (ChannelTabVo tab : channelTabVos) {
            tabList.add(tab.getTabId());
        }
//如果配置的信息返回为空,则使用默认的顺序
public String getTabCollocation() {
        if(StringUtils.isEmpty(tabCollocation)){
            return "[{\"tabId\":0,\"tabName\":\"特卖\"},{\"tabId\":104,\"tabName\":\"美妆\"},{\"tabId\":106,\"tabName\":\"食品\"},{\"tabId\":102,\"tabName\":\"服饰\"},{\"tabId\":109,\"tabName\":\"数码家电\"},{\"tabId\":103,\"tabName\":\"母婴\"},{\"tabId\":105,\"tabName\":\"家居\"},{\"tabId\":110,\"tabName\":\"进口\"},{\"tabId\":108,\"tabName\":\"保健\"},{\"tabId\":101,\"tabName\":\"水果\"},{\"tabId\":107,\"tabName\":\"图书教育\"}]";
        }
        return tabCollocation;
    }
    

在这里插入图片描述

2、首页管理

在这里插入图片描述这个是用于手工配置排序,之前的功能是必须完整配好所有的排序才能进行提交操作,现在是任意个数的值都行(按照规则),实现的逻辑挺简单:只是将文本框中的值提交到后台,保存到Redis中,查询操作也是从Redis中取对应的key,难度相对于较低。

总结

在实现这期的需求时,我发现了很多问题

  • 一部分是对于业务还不是很熟悉,所以在解决问题时不知道问题出现在哪里,不能很迅速的定位,容易在一个简单的问题上面一直深陷
  • 在写代码的时候,思维很容易受到环境的影响,这一次我是真的发现,当我思路文在问题的时候,我越是急着去解决越是解决不了,所以导致自己的思路很僵,后来不去思考这个东西,放松一下,结果问题就解决了,所以这个过程也是在不停的发现才能知道。
  • 还有一点,这周没有学习,定的目标都没有去完成,感觉自己很罪过!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值