|
@@ -52,15 +52,15 @@ class UnicomComboView(View):
|
|
|
return HttpResponse('SUCCESS')
|
|
|
elif operation == 'device-queue-monitoring':
|
|
|
return self.device_queue_monitoring_push(request_dict, request)
|
|
|
- elif operation == 'device-status-change':
|
|
|
+ elif operation == 'device-status-change': # SIM卡修改状态,异步通知接口
|
|
|
return self.device_status_change_push(request_dict, request)
|
|
|
- elif operation == 'device-bind':
|
|
|
+ elif operation == 'device-bind': # 服务器保存设备的ICCID
|
|
|
return self.device_add(request_dict, response)
|
|
|
- elif operation == 'device-status':
|
|
|
+ elif operation == 'device-status': # PC调用解绑SIM卡用户,清除套餐数据
|
|
|
return self.update_device_status(request_dict, response)
|
|
|
- elif operation == 'update-card':
|
|
|
+ elif operation == 'update-card': # 更新SIM类型
|
|
|
return self.update_device_card_type(request_dict, response)
|
|
|
- elif operation == 'xxx-sign':
|
|
|
+ elif operation == 'xxx-sign': # 获取签名用于测试
|
|
|
return self.get_test_sign(request_dict, response)
|
|
|
else:
|
|
|
token = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
@@ -69,16 +69,18 @@ class UnicomComboView(View):
|
|
|
if token.code != 0:
|
|
|
return response.json(token.code)
|
|
|
user_id = token.userID
|
|
|
- if operation == 'combo-save':
|
|
|
+ if operation == 'combo-save': # 创建套餐
|
|
|
return self.save_unicom_combo(request_dict, response)
|
|
|
- elif operation == 'combo-pay':
|
|
|
+ elif operation == 'combo-pay': # 套餐支付
|
|
|
return self.buy_unicom_combo(user_id, request_dict, request, response)
|
|
|
- elif operation == 'combo-list':
|
|
|
+ elif operation == 'combo-list': # 获取套餐列表
|
|
|
return self.query_package_list(response)
|
|
|
- elif operation == 'get-device-info':
|
|
|
+ elif operation == 'get-device-info': # 获取SIM卡信息
|
|
|
return self.get_device_info(request_dict, response)
|
|
|
- elif operation == 'user-combo-query':
|
|
|
+ elif operation == 'user-combo-query': # 用户套餐信息查询
|
|
|
return self.user_combo_query(user_id, request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(0)
|
|
|
|
|
|
@classmethod
|
|
|
def user_combo_query(cls, user_id, request_dict, response):
|
|
@@ -96,9 +98,9 @@ class UnicomComboView(View):
|
|
|
unicom_device_info_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
|
|
|
if not unicom_device_info_qs.exists():
|
|
|
return response.json(173)
|
|
|
- now_time = int(time.time())
|
|
|
- if not unicom_device_info_qs[0].user_id:
|
|
|
- unicom_device_info_qs.update(user_id=user_id, updated_time=now_time)
|
|
|
+ if not unicom_device_info_qs[0].user_id: # 用户SIM卡未绑定用户则进行自动绑定
|
|
|
+ serial_no = unicom_device_info_qs[0].serial_no
|
|
|
+ cls.experience_order_4G(iccid, serial_no, user_id) # 生成4G体验订单
|
|
|
unicom_api = UnicomObjeect()
|
|
|
combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid, status=1, is_del=False) \
|
|
|
.values('iccid', 'status', 'combo__status', 'combo__combo_name', 'combo__combo_type',
|
|
@@ -141,10 +143,54 @@ class UnicomComboView(View):
|
|
|
cls.update_combo_order_sort(iccid)
|
|
|
return response.json(0, flow_details)
|
|
|
except Exception as e:
|
|
|
- print(e.args)
|
|
|
- ex = traceback.format_exc()
|
|
|
- print(ex)
|
|
|
- return response.json(177, ex)
|
|
|
+ logging.info('异常错误,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(177, e)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def experience_order_4G(cls, icc_id, serial_no, user_id):
|
|
|
+ """
|
|
|
+ 保存订单信息
|
|
|
+ @param icc_id: SIM卡20位iccid
|
|
|
+ @param serial_no: 序列号
|
|
|
+ @param user_id: userID
|
|
|
+ @return: True | False
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ while transaction.atomic():
|
|
|
+ n_time = int(time.time())
|
|
|
+ # 获取套餐信息
|
|
|
+ combo_info_qs = UnicomCombo.objects.filter(combo_type=1, status=0, is_del=False) \
|
|
|
+ .values('id', 'combo_name', 'price', 'virtual_price', 'remark').order_by('sort')
|
|
|
+ if not combo_info_qs.exists():
|
|
|
+ return False
|
|
|
+ combo_info_vo = combo_info_qs[0]
|
|
|
+ # 获取套餐订单信息
|
|
|
+ combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=icc_id, combo_id=combo_info_vo['id'])
|
|
|
+ if not combo_order_qs.exists():
|
|
|
+ return False
|
|
|
+ c_time = combo_order_qs[0].created_time
|
|
|
+ # 根据序列号获取UID
|
|
|
+ uid = CommonService.query_uid_with_serial(serial_no)
|
|
|
+ order_id = CommonService.createOrderID()
|
|
|
+ rank_id, ai_rank_id = cls.get_cloud_or_ai_combo() # 生成订单必须添加该字段
|
|
|
+ order_dict = {'orderID': order_id, 'UID': uid, 'rank_id': rank_id, 'ai_rank_id': ai_rank_id,
|
|
|
+ 'userID_id': user_id, 'desc': combo_info_vo['combo_name'], 'payType': 10,
|
|
|
+ 'payTime': c_time, 'price': combo_info_vo['price'], 'addTime': c_time,
|
|
|
+ 'updTime': c_time, 'status': 1,
|
|
|
+ 'unify_combo_id': str(combo_info_vo['id']), 'order_type': 2,
|
|
|
+ 'store_meal_name': combo_info_vo['combo_name']
|
|
|
+ }
|
|
|
+ order_qs = Order_Model.objects.filter(UID=uid, userID=user_id, order_type=2,
|
|
|
+ unify_combo_id=str(combo_info_vo['id']))
|
|
|
+ if not order_qs.exists():
|
|
|
+ Order_Model.objects.create(**order_dict)
|
|
|
+ combo_order_qs.update(order_id=order_id)
|
|
|
+ UnicomDeviceInfo.objects.filter(iccid=icc_id).update(user_id=user_id, updated_time=n_time)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ print('生成4G体验订单异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ logging.info('生成4G体验订单异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return False
|
|
|
|
|
|
@classmethod
|
|
|
def get_combo_order_list(cls, iccid):
|
|
@@ -196,19 +242,15 @@ class UnicomComboView(View):
|
|
|
@classmethod
|
|
|
def update_device_status(cls, request_dict, response):
|
|
|
"""
|
|
|
- 修改绑定设备状态,如产生免费套餐用量则删除
|
|
|
- @param request_dict:
|
|
|
- @param response:
|
|
|
- @return:
|
|
|
+ 重置SIM卡绑定状态修改为测试完成,以及重置流量,删除订单信息、删除系统消息
|
|
|
"""
|
|
|
logger = logging.getLogger('info')
|
|
|
-
|
|
|
serial_no = request_dict.get('serialNo', None)
|
|
|
time_stamp = request_dict.get('timeStamp', None)
|
|
|
sign = request_dict.get('sign', None)
|
|
|
if not all([serial_no, sign, time_stamp]):
|
|
|
return response.json(444)
|
|
|
- logger.info('PC工具进入重置ICCID{}'.format(serial_no))
|
|
|
+ logger.info('PC工具进入重置SIM卡{}'.format(serial_no))
|
|
|
try:
|
|
|
if not CommonService.check_time_stamp_token(sign, time_stamp):
|
|
|
return response.json(13)
|
|
@@ -216,7 +258,7 @@ class UnicomComboView(View):
|
|
|
redis = RedisObject()
|
|
|
with transaction.atomic():
|
|
|
device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_no)
|
|
|
- if device_info_qs.exists():
|
|
|
+ if device_info_qs.exists(): # 首先查询SIM卡绑定信息是否存在
|
|
|
iccid = device_info_qs.first().iccid
|
|
|
if device_info_qs.first().card_type == 1:
|
|
|
cls.reset_telecom_user(serial_no)
|
|
@@ -224,19 +266,25 @@ class UnicomComboView(View):
|
|
|
return response.json(0)
|
|
|
key = 'ASJ:UNICOM:RESET:{}'.format(serial_no)
|
|
|
flow_push_qs = UnicomFlowPush.objects.filter(serial_no=serial_no)
|
|
|
- if flow_push_qs.exists():
|
|
|
+ if flow_push_qs.exists(): # 删除流量预警推送
|
|
|
flow_push_qs.delete()
|
|
|
sys_msg_qs = SysMsgModel.objects.filter(uid=serial_no)
|
|
|
- if sys_msg_qs.exists():
|
|
|
+ if sys_msg_qs.exists(): # 删除有关系统消息数据
|
|
|
sys_msg_qs.delete()
|
|
|
device_info_qs.update(status=1, updated_time=now_time, user_id='')
|
|
|
combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
|
|
|
+ order_list = []
|
|
|
if combo_order_qs.exists():
|
|
|
+ for item in combo_order_qs:
|
|
|
+ if item.order_id:
|
|
|
+ order_list.append(item.order_id)
|
|
|
combo_order_qs.delete()
|
|
|
combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
|
|
|
if combo_experience_history_qs.exists():
|
|
|
combo_experience_history_qs.delete()
|
|
|
- redis.set_data(key, iccid, 60 * 30)
|
|
|
+ # 删除4G套餐订单
|
|
|
+ Order_Model.objects.filter(orderID__in=order_list).delete()
|
|
|
+ redis.set_data(key, iccid, 60 * 30) # 缓存当前SIM卡,记录为半个小时内无法赠送免费流量套餐。
|
|
|
UnicomObjeect().change_device_to_activate(iccid)
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|