package com.mortals.xhx.module.hotword.web;

import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.hotword.model.HotwordEntity;
import com.mortals.xhx.module.hotword.model.HotwordQuery;
import com.mortals.xhx.module.hotword.service.HotwordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 热门词汇业务
 *
 * @author zxfei
 * @date 2022-12-08
 */
@RestController
@RequestMapping("hotword")
public class HotwordController extends BaseCRUDJsonBodyMappingController<HotwordService, HotwordEntity, Long> {

    @Autowired
    private ParamService paramService;

    public HotwordController() {
        super.setModuleDesc("热门词汇业务");
    }

    @Override
    protected void init(Map<String, Object> model, Context context) {
        this.addDict(model, "wordsSource", paramService.getParamBySecondOrganize("Hotword", "wordsSource"));
        super.init(model, context);
    }

    @Override
    protected void batchSaveBefore(List<HotwordEntity> list, Map<String, Object> model, Context context) throws AppException {
        //查询是否存在当前关键词，
        list.forEach(item -> {
            HotwordEntity hotwordEntity = this.service.selectOne(new HotwordQuery().siteId(item.getSiteId()).hotwords(item.getHotwords()));
            if (!ObjectUtils.isEmpty(hotwordEntity)) {
                item.setId(hotwordEntity.getId());
                item.setSearchCount(hotwordEntity.getSearchCount());
                item.setUpdateTime(new Date());
            }
        });
        super.batchSaveBefore(list, model, context);
    }

    @Override
    protected void saveBefore(HotwordEntity entity, Map<String, Object> model, Context context) throws AppException {
        HotwordEntity hotwordEntity = this.service.selectOne(new HotwordQuery().siteId(entity.getSiteId()));
        if(!ObjectUtils.isEmpty(hotwordEntity)){
            entity.setId(hotwordEntity.getId());
            entity.setSearchCount(hotwordEntity.getSearchCount());
            entity.setUpdateTime(new Date());
        }
        super.saveBefore(entity, model, context);
    }
}