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

com.fastchar.extjs.appshare.entity.FinalAppStoreEntity 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.database.FastPage;
import com.fastchar.database.info.FastSqlInfo;
import com.fastchar.extjs.core.FastExtEntity;
import com.fastchar.utils.FastDateUtils;
import com.fastchar.utils.FastNumberUtils;
import com.fastchar.utils.FastStringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 应用商店下载地址数据库实体类
 *
 * @author Janesen
 * @date 2021/09/23 15:49
 */
public class FinalAppStoreEntity extends FastExtEntity {
    private static final long serialVersionUID = 1L;

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

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

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

    @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_store 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("storeType", 0);
        set("storeDateTime", FastDateUtils.getDateString());
    }

    @Override
    public void convertValue() {
        super.convertValue();
        Enum storeType = getEnum("storeType", FinalStoreTypeEnum.class);
        if (storeType != null) {
            put("storeTypeStr", storeType.name());
        }
    }

    public enum FinalStoreTypeEnum {
        苹果应用商店("ios|iphone"),
        华为应用商店("huawei"),
        OPPO应用商店("oppo"),
        VIVO应用商店("vivo"),
        小米应用商店("xiaomi"),
        其他应用商店("other"),
        ;
        public String keys;

        FinalStoreTypeEnum(String keys) {
            this.keys = keys;
        }
    }

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


    /**
     * 获得本实体列表集合
     *
     * @return 分页数据
     */
    public FastPage getList(int page, int pageSize, Map where, Map sort) {

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

        StringBuilder sqlStr = new StringBuilder("select t.*," + FastStringUtils.join(linkColumns, ",") + " from final_app_store as t" +
                " left join final_app as a on a.appId=t.appId" +
                " where 1=1 ");

        List values = new ArrayList<>();

        if (where != null) {
            for (String key : where.keySet()) {
                if (key.startsWith("^")) {
                    continue;
                }
                Object value = where.get(key);
                if (FastNumberUtils.isNumber(value)) {
                    sqlStr.append(" and t.").append(key).append(" = ? ");
                    values.add(value);
                } else {
                    sqlStr.append(" and t.").append(key).append(" like ? ");
                    values.add("%" + value + "%");
                }
            }
        }

        if (sort != null) {
            List sortKeys = new ArrayList<>();
            for (String key : sort.keySet()) {
                if (key.startsWith("^")) {
                    continue;
                }
                sortKeys.add(" t." + key + " " + sort.get(key));
            }
            if (sortKeys.size() > 0) {
                sqlStr.append(" order by ").append(FastStringUtils.join(sortKeys, ","));
            }
        }

        FastPage pageList = selectBySql(page, pageSize, sqlStr.toString(), values);
        for (FinalAppStoreEntity entity : pageList.getList()) {
            FinalAppEntity app = entity.toEntity("a", FinalAppEntity.class);
            entity.put("app", app);
        }
        return pageList;
    }

    /**
     * 根据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_store as t" +
                " left join final_app as a on a.appId=t.appId" +
                " where t.appId=? ";
        FastPage pageList = selectBySql(page, 10, sqlStr, appId);
        for (FinalAppStoreEntity 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_store 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 (FinalAppStoreEntity 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 FinalAppStoreEntity getStoreInfo(int appId, String useAgent) {
        if (FastStringUtils.isEmpty(useAgent)) {
            return null;
        }
        FinalStoreTypeEnum storeType = null;
        for (FinalStoreTypeEnum value : FinalStoreTypeEnum.values()) {
            if (useAgent.toLowerCase().matches(".*(" + value.keys.toLowerCase() + ").*")) {
                storeType = value;
                break;
            }
        }
        if (storeType == null) {
            storeType = FinalStoreTypeEnum.其他应用商店;
        }
        String sqlStr = "select * from final_app_store where appId = ? " +
                " and storeType = " + storeType.ordinal() +
                " order by storeDateTime desc ";

        return selectFirstBySql(sqlStr, appId);
    }
}