Ver código fonte

优化SIM查询

林轩 1 ano atrás
pai
commit
451da671a2
2 arquivos alterados com 100 adições e 8 exclusões
  1. 2 1
      apps/IOTCard/models.py
  2. 98 7
      utils/utils.py

+ 2 - 1
apps/IOTCard/models.py

@@ -7,7 +7,8 @@ class PlatSimInfo(models.Model):
     OPERATORS_CHOICE = [
         (1, "合宙"),
         (2, "SIMBoss"),  # 企朋和SIMBOSS是同一单位
-        (3, "未知")
+        (3, "未知"),
+        (4, "信金")
     ]
     TYPE_CHOICE = [
         (1, "机器录入"),

+ 98 - 7
utils/utils.py

@@ -309,6 +309,72 @@ class GetSIMInfo(object):
             data = {'code': 99999, 'msg': '接口调用异常异常'}
         return data
     
+    def xj_sim_info(self):
+        # 信金
+        xj_userid = 137
+        xj_now = int(time.time())
+        xj_apikey = "2ae46f82215a187ba22656db9a9848d8"
+        xj_params = f"userId={xj_userid}&apikey={xj_apikey}&times={xj_now}"
+        md5 = hashlib.md5()
+        md5.update(xj_params.encode('utf-8'))
+        xj_sign = (md5.hexdigest()).upper()
+        url = f"http://hywx.xjict.com:32040/api/v1/getChaxun?userId={xj_userid}&cardno={self.iccid}&times={xj_now}&sign={xj_sign}"
+        xj_ret = requests.get(
+            url,
+            timeout=(10,30)
+        )
+        xj_response = json.loads(xj_ret.text)
+        xj_code = xj_response.get("code")
+        if xj_code == 0:
+            xj_st_dict = {
+                "0":"未知",
+                "00":"正常",
+                "01":"单向停机",
+                "02":"停机",
+                "03":"预销号",
+                "04":"销号/拆机",
+                "05":"过户",
+                "06":"休眠",
+                "07":"待激",
+                "08":"已停用",
+                "09":"库存",
+                "10":"已失效",
+                "11":"违章停机",
+                "12":"挂失",
+                "13":"用户报停",
+                "14":"测试",
+                "99":"不存在"                  
+            }
+            xj_data = xj_response.get("data")
+            autoname = xj_data.get("autoname")
+            nub = None
+            nub = 0
+            if "M" in autoname:
+                nubs = autoname.split("M")
+                if nubs:
+                    nub = nubs[0]
+                    if nub and nub.isdigit():
+                        nub = int(nub)
+            if "G" in autoname:
+                nubs = autoname.split("G")
+                if nubs:
+                    nub = nubs[0]
+                    if nub and nub.isdigit():
+                        nub = int(nub) * 1024
+            return {
+                "created_at": xj_data.get("shouchong_time"),
+                "status": xj_st_dict.get(xj_data.get("state")),
+                "total": nub,
+                "used": int(xj_data.get("used")/1024) if xj_data.get("used") else 0,
+                "expire": xj_data.get("expired_at"),
+                "iccid": self.iccid,
+                "package": autoname,
+                "company": "信金",
+                "code": False
+            }
+        else:
+            return {}
+
     def get_sim_info(self):
         hz_data = self.hz_sim_info()
         if hz_data["code"] == 0:  # 合宙
@@ -348,11 +414,36 @@ class GetSIMInfo(object):
                     data_balance = "未激活"
                     expiry_date = "未激活"
             else:
-                sim_operators = 3
-                account_status = "未知"
-                active_date = "未知"
-                data_plan = "未知"
-                data_usage = "未知"
-                data_balance = "未知"
-                expiry_date = "未知"
+                try:
+                    # 增加信金厂商
+                    xj_data = self.xj_sim_info()
+                    if xj_data:
+                        sim_operators = 4
+                        account_status = xj_data.get("status")
+                        active_date = xj_data.get("created_at")
+                        data_plan = str(xj_data.get("total")) + "M"
+                        data_usage = str(xj_data.get("used")) + "M" 
+                        data_balance = str(xj_data.get("total") - xj_data.get("used")) + "M" 
+                        expiry_date = xj_data.get("expire")
+                    else:
+                        sim_operators = 3
+                        account_status = "未知"
+                        active_date = "未知"
+                        data_plan = "未知"
+                        data_usage = "未知"
+                        data_balance = "未知"
+                        expiry_date = "未知"
+                except Exception as e:
+                    sim_operators = 3
+                    account_status = "未知"
+                    active_date = "未知"
+                    data_plan = "未知"
+                    data_usage = "未知"
+                    data_balance = "未知"
+                    expiry_date = "未知"
         return sim_operators,account_status,active_date,data_plan,data_usage,data_balance,expiry_date
+
+
+if __name__ == "__main__":
+    sim_operators,account_status,active_date,data_plan,data_usage,data_balance,expiry_date = GetSIMInfo("898604F81623D0432214").get_sim_info()
+    print(sim_operators,account_status,active_date,data_plan,data_usage,data_balance,expiry_date)