package com.mm.android.deviceaddmodule.service; import android.text.TextUtils; import com.mm.android.deviceaddmodule.LCDeviceEngine; import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.BusinessException; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceAddInfo; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceBindResult; import com.mm.android.deviceaddmodule.mobilecommon.entity.deviceadd.DeviceIntroductionInfo; import com.mm.android.deviceaddmodule.openapi.DeviceAddOpenApiManager; import com.mm.android.deviceaddmodule.openapi.data.AddDevicePolicyData; import com.mm.android.deviceaddmodule.openapi.data.BindDeviceData; import com.mm.android.deviceaddmodule.openapi.data.DeviceInfoBeforeBindData; import com.mm.android.deviceaddmodule.openapi.data.DeviceLeadingInfoData; import com.mm.android.deviceaddmodule.openapi.data.DeviceModelOrLeadingInfoCheckData; import com.mm.android.deviceaddmodule.openapi.data.ModifyDeviceNameData; import com.mm.android.deviceaddmodule.openapi.data.PolicyData; import java.util.ArrayList; import java.util.List; /** * è®¾å¤‡æ·»åŠ æ¨¡å—网络åè®®æ ˆ */ public class DeviceAddService{ private static final String TAG = "DeviceAddService"; /** * openApi * * 绑定设备å‰ï¼ŒèŽ·å–è®¾å¤‡ä¿¡æ¯ * * @param deviceId String å¿…é¡» 设备åºåˆ—å· * @param deviceCodeModel String å¿…é¡» 二维ç åž‹å· * @param deviceModelName String å¿…é¡» APP展示的设备型å·åç§°(产å“称之为市场型å·,用户自己选择设备类型时选的是市场型å·) * @param ncCode String å¿…é¡» ç”¨äºŽæ ‡è¯†è®¾å¤‡é…网能力 * @param timeout * @return * @throws BusinessException */ public DeviceAddInfo deviceInfoBeforeBind( String deviceId, String deviceCodeModel, String deviceModelName, String ncCode, int timeout) throws BusinessException { DeviceInfoBeforeBindData beforeBindData=new DeviceInfoBeforeBindData(); beforeBindData.data.token= LCDeviceEngine.newInstance().accessToken; beforeBindData.data.deviceId=deviceId; beforeBindData.data.deviceCodeModel=deviceCodeModel; beforeBindData.data.deviceModelName=deviceModelName; beforeBindData.data.ncCode=ncCode; DeviceInfoBeforeBindData.Response response = DeviceAddOpenApiManager.deviceInfoBeforeBind(beforeBindData); return DeviceAddEntityChangeHelper.parse2DeviceAddInfo(response.data); } /** * openApi * * æ ¡éªŒè®¾å¤‡åž‹å·æˆ–者设备引导信æ¯é…ç½®ä¿¡æ¯æ˜¯å¦æ›´æ–° * * @param checkType String å¿…é¡» è¦æ ¡éªŒçš„类型,DEVICE_MODEL:设备产å“åž‹å·ä¿¡æ¯ï¼›DEVICE_LEADING_INFO:è®¾å¤‡å¼•å¯¼ä¿¡æ¯ * @param deviceModelName String å¯é€‰ 设备市场型å·ï¼ŒcheckType为DEVICE_LEADING_INFOæ—¶è¦ä¼ * @param updateTime String å¿…é¡» APP本地缓å˜äº†é…ç½®åŽï¼Œè¯·æ±‚使用上次请求é…ç½®æœåŠ¡è¿”å›žçš„æ—¶é—´ï¼Œæ£€æŸ¥æ˜¯å¦éœ€è¦æ›´æ–°é…ç½® * @param timeout * @return * @throws BusinessException */ public String deviceModelOrLeadingInfoCheck(String checkType, String deviceModelName, String updateTime, int timeout) throws BusinessException { DeviceModelOrLeadingInfoCheckData req=new DeviceModelOrLeadingInfoCheckData(); req.data.token = LCDeviceEngine.newInstance().accessToken; req.data.deviceModelName = deviceModelName; req.data.updateTime = updateTime; DeviceModelOrLeadingInfoCheckData.Response response = DeviceAddOpenApiManager.deviceModelOrLeadingInfoCheck(req); return response.data.isUpdated + ""; } /** * openApi * * æ ¹æ®è®¾å¤‡å¸‚场型å·èŽ·å–è®¾å¤‡æ·»åŠ æµç¨‹å¼•导页é…ç½®ä¿¡æ¯ ä»¥deviceModel_è¯è¨€ä¸ºç´¢å¼• * * @param deviceModel String å¿…é¡» è®¾å¤‡å¸‚åœºåž‹å· * @param timeout * @return * @throws BusinessException */ public DeviceIntroductionInfo deviceLeadingInfo(String deviceModel, int timeout) throws BusinessException { DeviceLeadingInfoData req=new DeviceLeadingInfoData(); req.data.token = LCDeviceEngine.newInstance().accessToken; req.data.deviceModelName = deviceModel; DeviceLeadingInfoData.Response response = DeviceAddOpenApiManager.deviceLeadingInfo(req); FileSaveHelper.saveToJsonInfo(response.body, deviceModel + "_" + "zh_CN" + "_" + FileSaveHelper.INTRODUCTION_INFO_NAME); return DeviceAddEntityChangeHelper.parse2DeviceIntroductionInfo(response.data); } /** * æ ¹æ®è®¾å¤‡å¸‚场型å·èŽ·å–è®¾å¤‡æ·»åŠ æµç¨‹å¼•导页é…置信æ¯ï¼Œä»Žæœ¬åœ°ç¼“å˜èŽ·å– è¿™ä¸ªæŽ¥å£ä¸å±žäºŽç½‘络交互,需è¦ç§»å‡ºåŽ»ï¼Œæ”¾åˆ°Modelé‡Œé¢ * * @param deviceModel * @return * @throws BusinessException */ public DeviceIntroductionInfo introductionInfosGetCache(String deviceModel) throws BusinessException { return FileSaveHelper.getIntroductionInfoCache(deviceModel, "zh_CN"); } /** * openApi * * @param deviceId String å¿…é¡» 设备åºåˆ—å· * @param code å¿…é¡» 设备验è¯ç * code统称为设备验è¯ç ,但是针对ä¸åŒçš„è®¾å¤‡ä¼ çš„code值也会ä¸ä¸€æ ·ã€‚需è¦åˆ¤æ–æ‰€éœ€ç»‘å®šè®¾å¤‡æ˜¯å¦æœ‰auth能力级: * 1.如果该设备有auth能力级,codeå€¼ä¼ è®¾å¤‡åˆå§‹åŒ–åŽçš„设备密ç ï¼› * 2.如果该设备没有authèƒ½åŠ›çº§ä½†æ˜¯è®¾å¤‡åº•éƒ¨æ ‡ç¾ä¸ï¼ˆæˆ–二维ç ä¸ï¼‰æœ‰6为数å—的安全ç ,codeå€¼ä¼ è¯¥6使•°å—ï¼› * 3.如果该设备没有authèƒ½åŠ›çº§å¹¶ä¸”è®¾å¤‡åº•éƒ¨æ ‡ç¾ä¸ï¼ˆæˆ–二维ç ä¸ï¼‰æ²¡æœ‰6为数å—的安全ç ,则codeå€¼ä¼ ç©ºå³å¯ï¼› * åªæ”¯æŒç»‘定paas设备,故codeåªä¼šä¼ è®¾å¤‡å¯†ç æˆ–者SCç * @param timeout * @return * @throws BusinessException */ public DeviceBindResult userDeviceBind(String deviceId, String code, int timeout) throws BusinessException { BindDeviceData req=new BindDeviceData(); req.data.token= LCDeviceEngine.newInstance().accessToken; req.data.deviceId = deviceId; req.data.code = code; BindDeviceData.Response response = DeviceAddOpenApiManager.userDeviceBind(req); DeviceBindResult deviceBindResult = new DeviceBindResult(); deviceBindResult.setBindStatus(response.data.bindStatus); deviceBindResult.setDeviceName(response.data.deviceName); deviceBindResult.setUserAccount(response.data.userAccount); return deviceBindResult; } public DeviceBindResult hdlUserDeviceBind(String deviceId, String code, int timeout) throws BusinessException { BindDeviceData req=new BindDeviceData(); req.data.deviceId = deviceId; req.data.code = code; BindDeviceData.Response response = DeviceAddOpenApiManager.hdlUserDeviceBind(req); DeviceBindResult deviceBindResult = new DeviceBindResult(); deviceBindResult.setBindStatus(response.data.bindStatus); deviceBindResult.setDeviceName(response.data.deviceName); deviceBindResult.setUserAccount(response.data.userAccount); return deviceBindResult; } /** * openApi * 修改设备或者通é“å,channelId为空则为修改设备å,ä¸ä¸ºç©ºä¸ºä¿®æ”¹é€šé“å * * @param deviceId String å¿…é¡» 设备åºåˆ—å· * @param channelId String å¯é€‰ 设备通é“å· * @param name String å¿…é¡» 设备åç§° * @param timeout * @return * @throws BusinessException */ public boolean modifyDeviceName(String deviceId, String channelId, String name, int timeout) throws BusinessException { ModifyDeviceNameData req=new ModifyDeviceNameData(); req.data.token = LCDeviceEngine.newInstance().subAccessToken; req.data.deviceId = deviceId; if (!TextUtils.isEmpty(channelId)) { req.data.channelId = channelId; } req.data.name = name; ModifyDeviceNameData.Response response = DeviceAddOpenApiManager.modifyDeviceName(req); return response != null; } public boolean addPolicyDevice(String deviceId,int timeout) throws BusinessException{ AddDevicePolicyData req = new AddDevicePolicyData(); req.params.openid = LCDeviceEngine.newInstance().openid; req.params.token = LCDeviceEngine.newInstance().accessToken; PolicyData.StateMent stateMent = new PolicyData.StateMent(); stateMent.permission="DevControl"; StringBuffer paramStr = new StringBuffer(); paramStr.append("dev:").append(deviceId); stateMent.resource.add(paramStr.toString()); req.params.policy.statement.add(stateMent); boolean result = DeviceAddOpenApiManager.addPolicy(req); return result; } }