six_003
This commit is contained in:
@@ -34,7 +34,6 @@ class 小程序用户的位置接口ViewSets(ViewSet):
|
||||
市 = pydash.get(obj=地图解析结果, path="result.address_component.city")
|
||||
区 = pydash.get(obj=地图解析结果, path="result.address_component.district")
|
||||
街道 = pydash.get(obj=地图解析结果, path="result.address_component.street_number")
|
||||
街道号码 = pydash.get(obj=地图解析结果, path="result.address_component.street")
|
||||
# 开始更新数据库
|
||||
six六果对象.user_区县 = 区
|
||||
six六果对象.user_省份 = 省
|
||||
@@ -47,9 +46,8 @@ class 小程序用户的位置接口ViewSets(ViewSet):
|
||||
@action(detail=False, methods=["post", ], url_path="ip")
|
||||
def 解析用户IP地址接口(self, request: Request):
|
||||
""" """
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR', False)
|
||||
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR', "")
|
||||
ip = pydash.head(x_forwarded_for.split(','))
|
||||
mini_unionid_user = weiuser.objects.get(unionid=self_mini_unionid, )
|
||||
if mini_unionid_user.user_省份 is None or mini_unionid_user.user_城市 is None:
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import jmespath
|
||||
import orjson
|
||||
import pydash
|
||||
from asgiref.sync import async_to_sync
|
||||
@@ -11,10 +10,8 @@ from rest_framework.response import Response
|
||||
from rest_framework.viewsets import ViewSet
|
||||
|
||||
from sixGuoDjango import BaseResponse, RedisClientManager, ResData
|
||||
from wechat_数据库.地图定位.用户定位数据库 import weiuser地图定位
|
||||
from wechat_数据库.用户数据库.小程序用户地址 import weiuser微信用户地址
|
||||
from wechat_数据库.用户数据库.小程序登陆用户 import weiuser
|
||||
from wechat_项目工具包.腾讯地图.腾讯地图工具 import OriginPointOptional, wei地图工具
|
||||
|
||||
redis_socked = RedisClientManager().get_client(db_name="redis_5")
|
||||
|
||||
@@ -22,7 +19,7 @@ example通道层实例: BaseChannelLayer = get_channel_layer(alias="default")
|
||||
|
||||
|
||||
class 用户配送地址ViewSets(ViewSet):
|
||||
def update更新用户头像事件(self, self_mini_unionid):
|
||||
def send前端发送最新用户数据(self, self_mini_unionid):
|
||||
channel_id = redis_socked.get(self_mini_unionid)
|
||||
user_obj = weiuser.objects.get(unionid=self_mini_unionid)
|
||||
user_data = model_to_dict(instance=user_obj, fields=None, exclude=None)
|
||||
@@ -33,17 +30,16 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
encoding="utf-8")
|
||||
})
|
||||
|
||||
def update更新用户手机号码方法(self, address, self_mini_openid, self_user_unionid):
|
||||
def update更新用户手机号码方法(self, address, self_user_unionid):
|
||||
pass
|
||||
print(address)
|
||||
用户手机号码 = pydash.get(obj=address, path="telNumber")
|
||||
用户昵称 = pydash.get(obj=address, path="userName")
|
||||
用户所在省 = pydash.get(obj=address, path="provinceName")
|
||||
用户所在市 = pydash.get(obj=address, path="cityName")
|
||||
用户所在区县 = pydash.get(obj=address, path="countyName")
|
||||
用户所在街道 = pydash.get(obj=address, path="detailInfo")
|
||||
weiuser.objects.filter(unionid=self_user_unionid).update(
|
||||
uesr_手机号码=用户手机号码, user_昵称=用户昵称,
|
||||
)
|
||||
weiuser.objects.filter(unionid=self_user_unionid).update(uesr_手机号码=用户手机号码, user_昵称=用户昵称, )
|
||||
six_user六果对象 = weiuser.objects.get(unionid=self_user_unionid)
|
||||
if not six_user六果对象.user_区县 or not six_user六果对象.user_城市 or not six_user六果对象.user_省份:
|
||||
six_user六果对象.user_省份 = 用户所在省
|
||||
@@ -58,17 +54,16 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
addressData = request.data.get("addressData", None)
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
self.update更新用户手机号码方法(address=addressData, self_mini_openid=self_mini_openid,
|
||||
self_user_unionid=self_mini_unionid)
|
||||
self.update更新用户头像事件(self_mini_unionid=self_mini_unionid)
|
||||
|
||||
a, b = weiuser微信用户地址.objects.update_or_create(
|
||||
# 调用: 更新手机号码的方法,
|
||||
self.update更新用户手机号码方法(address=addressData, self_user_unionid=self_mini_unionid)
|
||||
# 调用更新有户头像的方法 此方法: 就是通过channles将最新的数据返回给前端(以便前端用户即时更新)
|
||||
self.send前端发送最新用户数据(self_mini_unionid=self_mini_unionid)
|
||||
weiuser微信用户地址.objects.update_or_create(
|
||||
address=addressData, mini_unionid=self_mini_unionid, mini_openid=self_mini_openid,
|
||||
isDefaultAddress=weiuser微信用户地址.choicesAddress.是默认地址.value,
|
||||
)
|
||||
查询当前用户的全部地址 = weiuser微信用户地址.objects.filter(mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid, ).values(
|
||||
"id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
mini_openid=self_mini_openid, ).values("id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(
|
||||
resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
@@ -92,10 +87,8 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
addressData = request.data.get("addressData", None)
|
||||
self.update更新用户手机号码方法(address=addressData, self_mini_openid=self_mini_openid,
|
||||
self_user_unionid=self_mini_unionid)
|
||||
|
||||
self.update更新用户头像事件(self_mini_unionid=self_mini_unionid)
|
||||
self.update更新用户手机号码方法(address=addressData, self_user_unionid=self_mini_unionid)
|
||||
self.send前端发送最新用户数据(self_mini_unionid=self_mini_unionid)
|
||||
|
||||
是否新存在 = weiuser微信用户地址.objects.filter(address=addressData, mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).exists()
|
||||
@@ -118,7 +111,7 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
else:
|
||||
# 同时还需要将以前的地址全部更新为非默认地址,
|
||||
创建新对象, 是否首次创建 = weiuser微信用户地址.objects.update_or_create(
|
||||
weiuser微信用户地址.objects.update_or_create(
|
||||
address=addressData, mini_openid=self_mini_openid,
|
||||
mini_unionid=self_mini_unionid) # 在这里更新了所有的地址都不是 默认的地址
|
||||
(weiuser微信用户地址.objects.filter(mini_openid=self_mini_openid, mini_unionid=self_mini_unionid)
|
||||
@@ -143,7 +136,7 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
idKey = request.data.get("idKey", None)
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
a, b = weiuser微信用户地址.objects.filter(id_主键_配送地址=idKey).delete()
|
||||
weiuser微信用户地址.objects.filter(id_主键_配送地址=idKey).delete()
|
||||
查询当前用户的全部地址 = weiuser微信用户地址.objects.filter(mini_openid=self_mini_openid,
|
||||
mini_unionid=self_mini_unionid).values(
|
||||
"id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
@@ -170,23 +163,19 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
idKey = request.data.get("idKey", None)
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
print("这里没有拿值的是吗", self_mini_openid, self_mini_unionid, idKey)
|
||||
addressData = weiuser微信用户地址.objects.get(id_主键_配送地址=idKey).address
|
||||
self.update更新用户手机号码方法(address=addressData,
|
||||
self_mini_openid=self_mini_openid,
|
||||
self_user_unionid=self_mini_unionid)
|
||||
self.update更新用户头像事件(self_mini_unionid=self_mini_unionid)
|
||||
self.update更新用户手机号码方法(address=addressData, self_user_unionid=self_mini_unionid)
|
||||
self.send前端发送最新用户数据(self_mini_unionid=self_mini_unionid)
|
||||
|
||||
# 将所有的先更新为非默认地址
|
||||
weiuser微信用户地址.objects.filter(mini_unionid=self_mini_unionid, mini_openid=self_mini_openid).update(
|
||||
isDefaultAddress=weiuser微信用户地址.choicesAddress.不是默认地址.value)
|
||||
weiuser微信用户地址.objects.filter(id_主键_配送地址=idKey, mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).update(
|
||||
weiuser微信用户地址.objects.filter(id_主键_配送地址=idKey, mini_unionid=self_mini_unionid, mini_openid=self_mini_openid).update(
|
||||
isDefaultAddress=weiuser微信用户地址.choicesAddress.是默认地址.value)
|
||||
查询当前用户的全部地址 = weiuser微信用户地址.objects.filter(mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).values(
|
||||
"id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(
|
||||
resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
mini_openid=self_mini_openid).values("id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=["post"], url_path="update")
|
||||
@@ -201,51 +190,16 @@ class 用户配送地址ViewSets(ViewSet):
|
||||
对象是否存在 = weiuser微信用户地址.objects.filter(address=addressData,
|
||||
mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).exists()
|
||||
self.update更新用户头像事件(self_mini_unionid=self_mini_unionid)
|
||||
self.send前端发送最新用户数据(self_mini_unionid=self_mini_unionid)
|
||||
if 对象是否存在:
|
||||
# 说明用户当前是存在的啦(说明,addressData)是有相同的值存在的
|
||||
查询当前用户的全部地址 = weiuser微信用户地址.objects.filter(mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).values(
|
||||
"id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(
|
||||
resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "没有更新"}), ).model_dump()
|
||||
mini_openid=self_mini_openid).values("id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "没有更新"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
else:
|
||||
weiuser微信用户地址.objects.filter(id_主键_配送地址=idkey).update(address=addressData)
|
||||
查询当前用户的全部地址 = weiuser微信用户地址.objects.filter(mini_unionid=self_mini_unionid,
|
||||
mini_openid=self_mini_openid).values(
|
||||
"id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(
|
||||
resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
mini_openid=self_mini_openid).values("id_主键_配送地址", "id_str", "address", "isDefaultAddress")
|
||||
httpResData = BaseResponse(resData=ResData(listData=查询当前用户的全部地址, dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=["post"], url_path="locating")
|
||||
def 解析用户的定位(self, request: Request):
|
||||
""""""
|
||||
self_user_unionid = request.data.get("self_user_unionid", None)
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
result = request.data.get("result", None)
|
||||
errMsg = jmespath.search(data=result, expression="errMsg")
|
||||
latitude = jmespath.search(data=result, expression="latitude")
|
||||
longitude = jmespath.search(data=result, expression="longitude")
|
||||
speed = jmespath.search(data=result, expression="speed")
|
||||
accuracy = jmespath.search(data=result, expression="accuracy")
|
||||
altitude = jmespath.search(data=result, expression="altitude")
|
||||
verticalAccuracy = jmespath.search(data=result, expression="verticalAccuracy")
|
||||
horizontalAccuracy = jmespath.search(data=result, expression="horizontalAccuracy")
|
||||
res = wei地图工具.经纬度转换为地址(location=f"{latitude},{longitude}")
|
||||
standard_address = jmespath.search(data=res, expression="result.formatted_addresses.standard_address")
|
||||
省 = jmespath.search(data=res, expression="result.address_component.province")
|
||||
市 = jmespath.search(data=res, expression="result.address_component.city")
|
||||
区 = jmespath.search(data=res, expression="result.address_component.district")
|
||||
# 再计算一下距离
|
||||
起点数据: OriginPointOptional = {"经度": f"{longitude}", "纬度": f"{latitude}", }
|
||||
终点数据: OriginPointOptional = {"经度": str(longitude), "纬度": str(latitude)}
|
||||
两地相多少公里 = wei地图工具.腾讯地图计算二点之间的距离(toData终点=终点数据, fromData起点=起点数据)
|
||||
# print(f"两地相距了{两地相多少公里 / 1000}公里", type(两地相多少公里))
|
||||
weiuser地图定位.objects.update_or_create(
|
||||
map用户openid=self_mini_openid, map用户uniond=self_user_unionid, map两点距离=两地相多少公里,
|
||||
map原点经纬度=起点数据, map终点经纬度=终点数据, map纬度latitude=latitude, map经度longitude=longitude,
|
||||
map省=省, map市=市, map区=区)
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
Reference in New Issue
Block a user