All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fastchar.extjs.appshare.entity.FinalAppAndroidEntity Maven / Gradle / Ivy

Go to download

FastChar-ExtJs-AppShare is a FastChar-ExtJs plugin.Used for APP application distribution download, support android and ios

The newest version!
package com.fastchar.extjs.appshare.entity;

import com.fastchar.core.FastChar;
import com.fastchar.extjs.core.FastExtEntity;
import com.fastchar.database.FastPage;
import com.fastchar.database.info.FastSqlInfo;
import com.fastchar.utils.FastDateUtils;

import java.util.*;

import com.fastchar.utils.FastNumberUtils;
import com.fastchar.utils.FastStringUtils;

public class FinalAppAndroidEntity extends FastExtEntity {
    private static final long serialVersionUID = 1L;

    public static FinalAppAndroidEntity dao() {
        return FastChar.getOverrides().singleInstance(FinalAppAndroidEntity.class);
    }

    public static FinalAppAndroidEntity newInstance() {
        return FastChar.getOverrides().newInstance(FinalAppAndroidEntity.class);
    }

    @Override
    public String getTableName() {
        return "final_app_android";
    }

    @Override
    public String getTableDetails() {
        return "安卓版本管理";
    }

    @Override
    public String getEntityCode() {
        return this.getClass().getSimpleName();
    }

    @Override
    public FastPage showList(int page, int pageSize) {


        String sqlStr = "select t.*,a.appName as a__appName" +
                " from final_app_android as t" +
                " left join final_app as a on a.appId=t.appId";
        FastSqlInfo sqlInfo = toSelectSql(sqlStr);
        return selectBySql(page, pageSize, sqlInfo.getSql(), sqlInfo.toParams());
    }

    @Override
    public void setDefaultValue() {
        set("appId", 0);
        set("versionBuild", 0);
        set("fileSize", 0);
        set("versionState", 0);
        set("versionImportant", 0);
        set("versionDesc", "发现新版本,建议您立即更新!");
        set("countDownload", 0);
        set("versionDateTime", FastDateUtils.getDateString());
    }

    @Override
    public void convertValue() {
        super.convertValue();
        Enum versionState = getEnum("versionState", FinalAppEntity.FinalVersionStateEnum.class);
        if (versionState != null) {
            put("versionStateStr", versionState.name());
        }

        Enum versionImportant = getEnum("versionImportant", FinalAppEntity.FinalVersionImportantEnum.class);
        if (versionImportant != null) {
            put("versionImportantStr", versionImportant.name());
        }

        int fileSize = getInt("fileSize");
        if (fileSize >= 1024 * 1024) {
            put("fileSizeStr", FastNumberUtils.formatToDouble(fileSize / 1024.0 / 1024.0, 2) + "M");
        }else  if (fileSize >= 1024) {
            put("fileSizeStr", FastNumberUtils.formatToDouble(fileSize / 1024.0, 2) + "KB");
        }else{
            put("fileSizeStr", fileSize + "B");
        }
    }

    public boolean isBeta() {
        return getString("versionName", "none").toLowerCase().contains("beta");
    }


    /**
     * 获得数据详情
     */
    public FinalAppAndroidEntity getDetails(int versionId) {
        List linkColumns = new ArrayList<>();
        linkColumns.addAll(FinalAppEntity.dao().toSelectColumns("a"));
        String sqlStr = "select t.*," + FastStringUtils.join(linkColumns, ",") + " from final_app_android as t" +
                " left join final_app as a on a.appId=t.appId" +
                " where t.versionId = ?  ";
        FinalAppAndroidEntity entity = selectFirstBySql(sqlStr, versionId);
        if (entity != null) {
            FinalAppEntity app = entity.toEntity("a", FinalAppEntity.class);
            entity.put("app", app);
        }
        return entity;
    }

    /**
     * 根据appId获得本实体集合
     *
     * @return 分页数据
     */
    public FastPage getListByAppId(int page, int appId) {

        List linkColumns = new ArrayList<>();
        linkColumns.addAll(FinalAppEntity.dao().toSelectColumns("a"));

        String sqlStr = "select t.*," + FastStringUtils.join(linkColumns, ",") + " from final_app_android as t" +
                " left join final_app as a on a.appId=t.appId" +
                " where t.appId=? ";
        FastPage pageList = selectBySql(page, 10, sqlStr, appId);
        for (FinalAppAndroidEntity entity : pageList.getList()) {
            FinalAppEntity app = entity.toEntity("a", FinalAppEntity.class);
            entity.put("app", app);
        }
        return pageList;
    }

    /**
     * 根据appIds批量查询数据,并整理成Map对应关系
     *
     * @return Map集合,key:appId value: List
     */
    public Map> getMapListByAppIds(Object... appIds) {
        List placeHolder = new ArrayList<>();
        List values = new ArrayList<>();
        for (Object appId : appIds) {
            placeHolder.add("?");
            values.add(appId);
        }
        Map> map = new HashMap<>();
        if (appIds.length == 0) {
            return map;
        }
        List linkColumns = new ArrayList<>();
        linkColumns.addAll(FinalAppEntity.dao().toSelectColumns("a"));

        String sqlStr = "select t.*," + FastStringUtils.join(linkColumns, ",") + " from final_app_android as t" +
                " left join final_app as a on a.appId=t.appId" +
                " where t.appId in (" + FastStringUtils.join(placeHolder, ",") + ") ";
        List result = selectBySql(sqlStr, values.toArray());
        for (FinalAppAndroidEntity entity : result) {
            FinalAppEntity app = entity.toEntity("a", FinalAppEntity.class);
            entity.put("app", app);
            Object appId = entity.get("appId");
            if (!map.containsKey(appId)) {
                map.put(appId, new ArrayList());
            }
            map.get(appId).add(entity);
        }
        return map;
    }


    public int updateState(int appId, int state) {
        String sqlStr = "update final_app_android set versionState = ? where appId = ? ";
        return updateBySql(sqlStr, state, appId);
    }


    public FinalAppAndroidEntity getLastVersion(int appId,boolean beta) {
        String sqlStr = "select * from final_app_android where appId = ?  " +
                " and versionState = " + FinalAppEntity.FinalVersionStateEnum.正常.ordinal();
        if (beta) {
            sqlStr += " and lower(versionName) like '%beta%' ";
        }else{
            sqlStr += " and lower(versionName) not like '%beta%' ";
        }
        sqlStr += " order by versionDateTime desc ";

        return selectFirstBySql(sqlStr, appId);
    }

}