添加收货地址接口

This commit is contained in:
luofei 2024-02-19 13:35:41 +08:00
parent 60b50e7b88
commit 822fec6e64
7 changed files with 206 additions and 2 deletions

View File

@ -16,6 +16,12 @@ namespace app\common\dao\store;
use app\common\dao\BaseDao;
use app\common\model\BaseModel;
use app\common\model\store\CityArea;
use app\common\model\store\GeoArea;
use app\common\model\store\GeoBrigade;
use app\common\model\store\GeoCity;
use app\common\model\store\GeoProvince;
use app\common\model\store\GeoStreet;
use app\common\model\store\GeoVillage;
use think\exception\ValidateException;
class CityAreaDao extends BaseDao
@ -68,4 +74,28 @@ class CityAreaDao extends BaseDao
$lst[] = $city;
return $lst;
}
public function searchGeo(array $where)
{
if (!empty($where['street_code'])) {
return GeoVillage::getDB()->where('street_code', $where['street_code']);
}
if (!empty($where['area_code'])) {
return GeoStreet::getDB()->where('area_code', $where['area_code']);
}
if (!empty($where['city_code'])) {
return GeoArea::getDB()->where('city_code', $where['city_code']);
}
if (!empty($where['province_code'])) {
return GeoCity::getDB()->where('province_code', $where['province_code']);
} else {
return GeoProvince::getDB();
}
}
public function searchBrigade(array $where)
{
return GeoBrigade::getDB();
}
}

View File

@ -34,6 +34,16 @@ class CityAreaRepository extends BaseRepository
return $this->search(['pid' => $pid])->select();
}
public function getGeoChildren($where)
{
return $this->searchGeo($where)->select();
}
public function getBrigade($where)
{
return $this->searchBrigade($where)->select();
}
public function getList($where)
{
return $this->dao->getSearch($where)->with(['parent'])->order('id ASC')->select()->append(['children','hasChildren']);

View File

@ -54,6 +54,10 @@ class StoreCouponRepository extends BaseRepository
const TYPE_PLATFORM_CATE = 11;
//平台跨店券
const TYPE_PLATFORM_STORE = 12;
//平台购物卡,可全额抵扣,可结余
const TYPE_PLATFORM_CARD = 13;
//平台抵扣券,按比例部分抵扣,可结余
const TYPE_PLATFORM_COUPON = 14;
//获取方式
const GET_COUPON_TYPE_RECEIVE = 0;
@ -392,6 +396,8 @@ class StoreCouponRepository extends BaseRepository
['value' => self::TYPE_PLATFORM_ALL, 'label' => '通用券'],
['value' => self::TYPE_PLATFORM_CATE, 'label' => '品类券'],
['value' => self::TYPE_PLATFORM_STORE, 'label' => '跨店券'],
['value' => self::TYPE_PLATFORM_CARD, 'label' => '购物卡'],
['value' => self::TYPE_PLATFORM_COUPON, 'label' => '抵扣券'],
])->control([
[
'value' => self::TYPE_PLATFORM_CATE,

View File

@ -243,7 +243,7 @@ class Coupon extends BaseController
} else unset($data['use_start_time']);
unset($data['range_date']);
if ($data['is_limited'] == 0) $data['total_count'] = 0;
if (!in_array($data['type'], [10, 11, 12])) {
if (!in_array($data['type'], [10, 11, 12, 13, 14])) {
throw new ValidateException('请选择有效的优惠券类型');
}
$data['mer_id'] = $this->request->merId();

View File

@ -13,6 +13,7 @@
namespace app\controller\merchant\store\shipping;
use app\common\repositories\store\CityAreaRepository;
use Overtrue\Pinyin\Pinyin;
use think\App;
use crmeb\basic\BaseController;
use app\common\repositories\store\shipping\CityRepository as repository;
@ -72,4 +73,157 @@ class City extends BaseController
{
return app('json')->success($this->repository->getFormatList(['is_show' => 1]));
}
public function lstV3()
{
$provinceCode = $this->request->param('province_code') ?? '';
$cityCode = $this->request->param('city_code') ?? '';
$areaCode = $this->request->param('area_code') ?? '';
$streetCode = $this->request->param('street_code') ?? '';
$pinyin = $this->request->param('pinyin') ?? 0;
/** @var CityAreaRepository $repo */
$repo = app()->make(CityAreaRepository::class);
$list = $repo->getGeoChildren(['province_code' => $provinceCode, 'city_code' => $cityCode, 'area_code' => $areaCode, 'street_code' => $streetCode]);
$geoList = [];
$pyList = [];
foreach ($list as $v) {
$temp = [];
if (!empty($v['village_id'])) {
if ($pinyin == 1) {
$py = strtoupper((new Pinyin)->abbr($v['village_name'])[0] ?? '-');
$pyList[$py][] = [
'type' => 'village',
'id' => $v['village_id'],
'level' => 5,
'name' => $v['village_name'] ?? '',
'code' => $v['village_code'] ?? ''
];
} else {
$temp = [
'type' => 'village',
'id' => $v['village_id'],
'level' => 5,
'name' => $v['village_name'] ?? '',
'code' => $v['village_code'] ?? ''
];
$geoList[] = $temp;
}
}
if (!empty($v['street_id'])) {
if ($pinyin == 1) {
$py = strtoupper((new Pinyin)->abbr($v['street_name'])[0] ?? '-');
$pyList[$py][] = [
'type' => 'street',
'id' => $v['street_id'],
'level' => 4,
'name' => $v['street_name'] ?? '',
'code' => $v['street_code'] ?? ''
];
} else {
$temp = [
'type' => 'street',
'id' => $v['street_id'],
'level' => 4,
'name' => $v['street_name'] ?? '',
'code' => $v['street_code'] ?? ''
];
$geoList[] = $temp;
}
}
if (!empty($v['area_id'])) {
if ($pinyin == 1) {
$py = strtoupper((new Pinyin)->abbr($v['area_name'])[0] ?? '-');
$pyList[$py][] = [
'type' => 'area',
'id' => $v['area_id'],
'level' => 3,
'name' => $v['area_name'] ?? '',
'code' => $v['area_code'] ?? ''
];
} else {
$temp = [
'type' => 'area',
'id' => $v['area_id'],
'level' => 3,
'name' => $v['area_name'] ?? '',
'code' => $v['area_code'] ?? ''
];
$geoList[] = $temp;
}
}
if (!empty($v['city_id'])) {
if ($pinyin == 1) {
$py = strtoupper((new Pinyin)->abbr($v['city_name'])[0] ?? '-');
$pyList[$py][] = [
'type' => 'city',
'id' => $v['city_id'],
'level' => 2,
'name' => $v['city_name'] ?? '',
'code' => $v['city_code'] ?? ''
];
} else {
$temp = [
'type' => 'city',
'id' => $v['city_id'],
'level' => 2,
'name' => $v['city_name'] ?? '',
'code' => $v['city_code'] ?? '',
];
$geoList[] = $temp;
}
}
if (!empty($v['province_id'])) {
if ($pinyin == 1) {
$py = strtoupper((new Pinyin)->abbr($v['province_name'])[0] ?? '-');
$pyList[$py][] = [
'type' => 'province',
'id' => $v['province_id'],
'level' => 1,
'name' => $v['province_name'] ?? '',
'code' => $v['province_code'] ?? ''
];
} else {
$temp = [
'type' => 'province',
'id' => $v['province_id'],
'level' => 1,
'name' => $v['province_name'] ?? '',
'code' => $v['province_code'] ?? ''
];
$geoList[] = $temp;
}
}
}
if ($pinyin == 1) {
$geoList = [];
foreach($pyList as $k=>$v) {
$temp = [];
$temp['pinyin'] = $k;
$temp['data'] = $pyList[$k];
$geoList[] = $temp;
}
}
return app('json')->success($geoList);
}
public function brigade()
{
/** @var CityAreaRepository $repo */
$repo = app()->make(CityAreaRepository::class);
$list = $repo->getBrigade([]);
$geoList = [];
foreach ($list as $v) {
$temp = [
'type' => 'brigade',
'id' => $v['id'],
'level' => 6,
'name' => $v['brigade_name'] ?? '',
'code' => $v['brigade_name'] ?? ''
];
$geoList[] = $temp;
}
return app('json')->success($geoList);
}
}

View File

@ -29,7 +29,7 @@ class StoreCouponValidate extends Validate
'use_start_time|有效期限' => 'requireIf:coupon_type,1|array|>:2',
'sort|排序' => 'require|integer',
'status|状态' => 'require|in:0,1',
'type|优惠券类型' => 'require|in:0,1,10,11,12',
'type|优惠券类型' => 'require|in:0,1,10,11,12,13,14',
'product_id|商品' => 'requireIf:type,1|array|>:0',
'send_type|类型' => 'require|in:0,1,2,3,4,5',
'full_reduction|满赠金额' => 'requireIf:send_type,1|float|>=:0',

View File

@ -605,6 +605,10 @@ Route::group('api/', function () {
Route::get('system/city/lst', 'merchant.store.shipping.City/getlist');
Route::get('v2/system/city/lst/:pid', 'merchant.store.shipping.City/lstV2');
Route::get('v2/system/city', 'merchant.store.shipping.City/cityList');
//省市区县街道
Route::get('v2/system/geo/lst', 'merchant.store.shipping.City/lstV3');
//队列表
Route::get('v2/system/brigade', 'merchant.store.shipping.City/brigade');
//热门搜索
Route::get('common/hot_keyword', 'api.Common/hotKeyword')->append(['type' => 0]);