Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
my-yaf-project
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenchuanwen
my-yaf-project
Commits
d60c4e45
Commit
d60c4e45
authored
Nov 12, 2018
by
liuyuzhen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
地址命中规则修改
parent
daf366f9
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
18 deletions
+38
-18
AddressService.php
application/models/Business/User/AddressService.php
+38
-18
No files found.
application/models/Business/User/AddressService.php
View file @
d60c4e45
...
@@ -12,8 +12,7 @@ use Our\ApiConst;
...
@@ -12,8 +12,7 @@ use Our\ApiConst;
class
AddressServiceModel
extends
\Business\AbstractModel
{
class
AddressServiceModel
extends
\Business\AbstractModel
{
public
function
init
()
public
function
init
(){
{
}
}
...
@@ -215,29 +214,50 @@ class AddressServiceModel extends \Business\AbstractModel {
...
@@ -215,29 +214,50 @@ class AddressServiceModel extends \Business\AbstractModel {
$limit
=
\Our\ApiConst
::
defaultAddressCount
;
$limit
=
\Our\ApiConst
::
defaultAddressCount
;
//1、判断当前用户的地址列表中是否存在和当前经纬度坐标小于200的地址(当前经纬度是否存在对应收货地址)
//1、判断当前用户的地址列表中是否存在和当前经纬度坐标小于200的地址(当前经纬度是否存在对应收货地址)
$addressList
=
\Our\RedisHelper
::
cachedFunction
(
\Redis\Db8\AddressRedisModel
::
getInstance
(),
array
(
&
$addressDao
,
'selectByWhere'
),
array
(
$condition
,
$columns
),
\Our\ApiConst
::
oneHour
,
array
(
$memberId
));
$addressList
=
\Our\RedisHelper
::
cachedFunction
(
\Redis\Db8\AddressRedisModel
::
getInstance
(),
array
(
&
$addressDao
,
'selectByWhere'
),
array
(
$condition
,
$columns
),
\Our\ApiConst
::
oneHour
,
array
(
$memberId
));
$shootFlag
=
\Our\ApiConst
::
zero
;
//是否找到完全匹配地址
if
(
$addressList
){
if
(
$addressList
){
$newAddressList
=
array
();
$newAddressList
=
array
();
foreach
(
$addressList
as
$addr
){
foreach
(
$addressList
as
$addr
){
if
(
$tempLatLng
[
'lat'
]
==
$addr
[
'lat'
]
&&
$tempLatLng
[
'lng'
]
==
$addr
[
'lng'
]){
$address
=
array
();
$address
[
'addressId'
]
=
$addr
[
'address_id'
];
$address
[
'address'
]
=
$addr
[
'address'
];
$address
[
'name'
]
=
$addr
[
'name'
];
$address
[
'tagType'
]
=
$addr
[
'tag_type'
];
$address
[
'lng'
]
=
$addr
[
'lng'
];
$address
[
'lat'
]
=
$addr
[
'lat'
];
$address
[
'cityCode'
]
=
$addr
[
'citycode'
];
$choosedAddressId
=
$addr
[
'addressId'
];
$newAddress
=
$address
;
$newAddress
[
'chooseFlag'
]
=
\Our\ApiConst
::
one
;
$sess
[
'currentAddress'
]
=
$newAddress
;
$returnAddresses
[]
=
$address
;
$shootFlag
=
\Our\ApiConst
::
one
;
break
;
}
$newAddressList
[
$addr
[
'address_id'
]]
=
$addr
;
$newAddressList
[
$addr
[
'address_id'
]]
=
$addr
;
$distince
=
\Our\CommonExtension
::
getDistance
(
$tempLatLng
[
'lat'
],
$tempLatLng
[
'lng'
],
$addr
[
'lat'
],
$addr
[
'lng'
],
1
);
$distince
=
\Our\CommonExtension
::
getDistance
(
$tempLatLng
[
'lat'
],
$tempLatLng
[
'lng'
],
$addr
[
'lat'
],
$addr
[
'lng'
],
1
);
$distinceArray
[
$addr
[
'address_id'
]]
=
$distince
;
$distinceArray
[
$addr
[
'address_id'
]]
=
$distince
;
}
}
$pos
=
array_search
(
min
(
$distinceArray
),
$distinceArray
);
//如果没有找到完全匹配地址并且缓存里面的地址页没有命中则可以命中当前选择地址200米范围内的地址
$minDistince
=
$distinceArray
[
$pos
];
if
(
$shootFlag
==
\Our\ApiConst
::
zero
&&
$currentAddress
[
'chooseFlag'
]
==
\Our\ApiConst
::
zero
){
if
(
$minDistince
<
\Our\ApiConst
::
minDistanceForCurrentPosition
){
$pos
=
array_search
(
min
(
$distinceArray
),
$distinceArray
);
$address
=
array
();
$minDistince
=
$distinceArray
[
$pos
];
$address
[
'addressId'
]
=
$newAddressList
[
$pos
][
'address_id'
];
if
(
$minDistince
<
\Our\ApiConst
::
minDistanceForCurrentPosition
){
$address
[
'address'
]
=
$newAddressList
[
$pos
][
'address'
];
$address
=
array
();
$address
[
'name'
]
=
$newAddressList
[
$pos
][
'name'
];
$address
[
'addressId'
]
=
$newAddressList
[
$pos
][
'address_id'
];
$address
[
'tagType'
]
=
$newAddressList
[
$pos
][
'tag_type'
];
$address
[
'address'
]
=
$newAddressList
[
$pos
][
'address'
];
$address
[
'lng'
]
=
$newAddressList
[
$pos
][
'lng'
];
$address
[
'name'
]
=
$newAddressList
[
$pos
][
'name'
];
$address
[
'lat'
]
=
$newAddressList
[
$pos
][
'lat'
];
$address
[
'tagType'
]
=
$newAddressList
[
$pos
][
'tag_type'
];
$address
[
'cityCode'
]
=
$newAddressList
[
$pos
][
'citycode'
];
$address
[
'lng'
]
=
$newAddressList
[
$pos
][
'lng'
];
$choosedAddressId
=
$address
[
'addressId'
];
$address
[
'lat'
]
=
$newAddressList
[
$pos
][
'lat'
];
$newAddress
=
$address
;
$address
[
'cityCode'
]
=
$newAddressList
[
$pos
][
'citycode'
];
$newAddress
[
'chooseFlag'
]
=
\Our\ApiConst
::
one
;
$choosedAddressId
=
$address
[
'addressId'
];
$sess
[
'currentAddress'
]
=
$newAddress
;
$newAddress
=
$address
;
$returnAddresses
[]
=
$address
;
$newAddress
[
'chooseFlag'
]
=
\Our\ApiConst
::
one
;
$sess
[
'currentAddress'
]
=
$newAddress
;
$returnAddresses
[]
=
$address
;
}
}
}
}
}
//2、如果不存在,存入当前经纬度作为临时地址,并且取当前用户最近使用过的最多3条地址返回去
//2、如果不存在,存入当前经纬度作为临时地址,并且取当前用户最近使用过的最多3条地址返回去
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment