package {0};

import {0}.model.{1};
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.station.core.mysql.model.IBaseDto;
import org.station.core.mysql.service.IntIdService;
import org.station.core.tool.api.PageQuery;
import org.station.core.tool.api.PageResult;
import tk.mybatis.mapper.entity.Condition;
import tk.mybatis.mapper.entity.Example;


@Service
public class {1}Service extends IntIdService<{1}> {

  public Integer create(@NonNull {1} data, String userId) {
    // todo 验证逻辑
    data.setCreateUser(userId);
    int ret = this.insertOne(data);
    Assert.isTrue(ret == 1, "新增数据失败");
    return data.getId();
  }

  public void modify(@NonNull {1} data, String userId) {
    Assert.notNull(data.getId(), "记录ID为空");
    // todo 其他验证逻辑
    data.setModifyUser(userId);
    int ret = this.update(data);
    Assert.isTrue(ret == 1, "修改数据失败");
  }

  private Condition buildQuery(@NonNull {1} query) {
    Condition condition = new Condition({1}.class);
    Example.Criteria criteria = condition.createCriteria();
    criteria.andEqualTo("status", IBaseDto.NORMAL);
    return condition;
  }

  public PageResult<{1}> pageList(@NonNull PageQuery<{1}> pageQuery) {
    {1} query = pageQuery.getOrDefaultQuery({1}::new);
    Condition condition = buildQuery(query);
    condition.orderBy("createTime").desc();
    return this.selectPage(condition, pageQuery);
  }

}
