|
|
@@ -24,6 +24,8 @@ use common\models\BaOrder;
|
|
|
use common\models\BaOrderGoods;
|
|
|
use common\models\BaReceiveAddress;
|
|
|
use common\models\BaUser;
|
|
|
+use common\models\Countries;
|
|
|
+use common\models\Currency;
|
|
|
use common\models\DecOrder;
|
|
|
use common\models\BaDecOrder;
|
|
|
use common\models\forms\ApproachOrderForm;
|
|
|
@@ -31,12 +33,14 @@ use common\models\forms\ApproachReconsumeOrderForm;
|
|
|
use common\models\forms\BaApproachOrderForm;
|
|
|
use common\models\forms\DeclarationForm;
|
|
|
use common\models\forms\OrderForm;
|
|
|
+use common\models\FreeTemplate;
|
|
|
use common\models\Instalment;
|
|
|
use common\models\Order;
|
|
|
use common\models\OrderGoods;
|
|
|
use common\models\ReceiveAddress;
|
|
|
use common\models\Region;
|
|
|
use common\models\ShopGoods;
|
|
|
+use common\models\ShopGoodsNature;
|
|
|
use common\models\User;
|
|
|
use common\models\UserBonus;
|
|
|
use common\models\UserWallet;
|
|
|
@@ -57,27 +61,29 @@ class ShopController extends BaseController {
|
|
|
public function actionIndex() {
|
|
|
// 商品分类
|
|
|
$categoryType = \Yii::$app->request->get('categoryType', 1);
|
|
|
+ // 会员信息
|
|
|
+ $user = User::getEnCodeInfo(\Yii::$app->user->id);
|
|
|
|
|
|
- $condition = ' AND STATUS=1 AND (FIND_IN_SET(2,GIFT_TYPE)>0';
|
|
|
- $isStudio = User::getEnCodeInfo(\Yii::$app->user->id)['IS_STUDIO'];
|
|
|
- if($isStudio==1){
|
|
|
+ $condition = ' AND S.STATUS=1 AND (FIND_IN_SET(2, S.GIFT_TYPE)>0';
|
|
|
+ if ($user['IS_STUDIO'] == 1) {
|
|
|
$condition.= " OR FIND_IN_SET(4,GIFT_TYPE)>0";
|
|
|
}
|
|
|
- $condition .= ") AND CATEGORY_TYPE = :CATEGORY_TYPE";
|
|
|
+ $condition .= ") AND S.CATEGORY_TYPE = :CATEGORY_TYPE";
|
|
|
$params[':CATEGORY_TYPE'] = intval($categoryType);
|
|
|
|
|
|
$data = ShopGoods::lists($condition, $params, [
|
|
|
- 'orderBy' => 'SORT ASC,CREATED_AT DESC',
|
|
|
- 'from' => ShopGoods::tableName(),
|
|
|
+ 'select' => 'S.*,N.MARKET_PRICE,N.SELL_PRICE,N.TAX_RATE,N.LOCAL_CURRENCY_ID,N.COUNTRY_ID',
|
|
|
+ 'from' => ShopGoods::tableName() . ' AS S',
|
|
|
+ 'join' => [
|
|
|
+ ['INNER JOIN', ShopGoodsNature::tableName() . ' AS N', 'N.GOODS_ID = S.ID AND N.COUNTRY_ID = ' . $user['COUNTRY_ID']],
|
|
|
+ ],
|
|
|
+ 'orderBy' => 'S.SORT ASC, S.CREATED_AT DESC',
|
|
|
]);
|
|
|
+
|
|
|
foreach ($data['list'] as $key => $value) {
|
|
|
- if ($value['TYPE'] == 1 || $value['TYPE'] == 2) {
|
|
|
- $data['list'][$key]['DISCOUNT'] = ShopGoods::getGoodType()[$value['TYPE']]['discount'];
|
|
|
- } else {
|
|
|
- $data['list'][$key]['DISCOUNT'] = $value['SELL_DISCOUNT']*100;
|
|
|
- }
|
|
|
- // $data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
|
|
|
+ $data['list'][$key]['DISCOUNT'] = in_array($value['TYPE'], [1, 2]) ? ShopGoods::getGoodType()[$value['TYPE']]['discount'] : $value['SELL_DISCOUNT'] * 100;
|
|
|
}
|
|
|
+
|
|
|
return static::notice($data);
|
|
|
}
|
|
|
|
|
|
@@ -100,9 +106,11 @@ class ShopController extends BaseController {
|
|
|
* @throws HttpException
|
|
|
*/
|
|
|
public function actionShowCart(){
|
|
|
- $userId = \Yii::$app->user->id;
|
|
|
+ // 会员信息
|
|
|
+ $user = User::getEnCodeInfo(\Yii::$app->user->id);
|
|
|
$payList = ShopGoods::payTypes();
|
|
|
- $allAddress = ReceiveAddress::findAllAsArray('USER_ID=:USER_ID', [':USER_ID'=>$userId]);
|
|
|
+ $allAddress = ReceiveAddress::findAllAsArray('USER_ID=:USER_ID AND COUNTRY_ID=:COUNTRY_ID',
|
|
|
+ [':USER_ID' => $user['ID'], ':COUNTRY_ID' => $user['COUNTRY_ID']]);
|
|
|
if($allAddress) {
|
|
|
foreach ($allAddress as $key => $row) {
|
|
|
$allAddress[$key]['PROVINCE_NAME'] = Region::getCnName($row['PROVINCE']);
|
|
|
@@ -118,23 +126,24 @@ class ShopController extends BaseController {
|
|
|
'garage_points' => 0,
|
|
|
'villa_points' => 0,
|
|
|
];
|
|
|
- if ($userBonusResult = UserBonus::findOneAsArray(['USER_ID' => $userId])) {
|
|
|
+ if ($userBonusResult = UserBonus::findOneAsArray(['USER_ID' => $user['ID']])) {
|
|
|
// $userBalance['points'] = $userBonusResult['RECONSUME_POINTS'];
|
|
|
// $userBalance['exchange'] = $userBonusResult['EXCHANGE_POINTS'];
|
|
|
$userBalance['tourism_points'] = $userBonusResult['TOURISM_POINTS'];
|
|
|
$userBalance['garage_points'] = $userBonusResult['GARAGE_POINTS'];
|
|
|
$userBalance['villa_points'] = $userBonusResult['VILLA_POINTS'];
|
|
|
}
|
|
|
- if ($userCashResult = UserWallet::findOneAsArray(['USER_ID' => $userId])) {
|
|
|
+ if ($userCashResult = UserWallet::findOneAsArray(['USER_ID' => $user['ID']])) {
|
|
|
$userBalance['cash'] = $userCashResult['CASH'];
|
|
|
}
|
|
|
|
|
|
- // 汇率
|
|
|
- $exchangeRate = floatval(Cache::getSystemConfig()['exchangeRate']['VALUE'] ?? 0);
|
|
|
- // 运费.奈拉
|
|
|
- $freight = floatval(Cache::getSystemConfig()['freight']['VALUE'] ?? 0);
|
|
|
- // 普通商品免运费阈值.奈拉
|
|
|
- $freeShipping = floatval(Cache::getSystemConfig()['freeShipping']['VALUE'] ?? 0);
|
|
|
+ // 运费模板
|
|
|
+ $freeTemplate = FreeTemplate::getByCountryId($user['COUNTRY_ID']);
|
|
|
+ // 运费
|
|
|
+ $freight = $freeTemplate['freight'] ?? 0;
|
|
|
+ // 普通商品免运费阈值
|
|
|
+ $freeShipping = $freeTemplate['free_shipping'] ?? 0;
|
|
|
+
|
|
|
$isDec = User::getEnCodeInfo(\Yii::$app->user->id)['IS_DEC'];
|
|
|
return static::notice(
|
|
|
[
|
|
|
@@ -479,7 +488,7 @@ class ShopController extends BaseController {
|
|
|
$orderQuery = Order::find()
|
|
|
->alias('O')
|
|
|
->where($condition, $params)
|
|
|
- ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME')
|
|
|
+ ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME,O.COUNTRY_ID,O.CURRENCY_ID')
|
|
|
->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID');
|
|
|
|
|
|
// 订单中间表只查询待支付和支付失败的订单
|
|
|
@@ -488,7 +497,7 @@ class ShopController extends BaseController {
|
|
|
$orderStandardQuery = ApproachOrder::find()
|
|
|
->alias('O')
|
|
|
->where($condition . ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)', $params)
|
|
|
- ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME')
|
|
|
+ ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME,O.COUNTRY_ID,O.CURRENCY_ID')
|
|
|
->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID');
|
|
|
|
|
|
$queryAll = $orderQuery->union($orderStandardQuery, true);
|
|
|
@@ -521,6 +530,8 @@ class ShopController extends BaseController {
|
|
|
$data['list'][$key]['STATUS'] = \Yii::$app->params['orderStatus'][$value['STATUS']]['label'] ?? '';
|
|
|
$data['list'][$key]['FULL_ADDRESS'] = trim(implode(', ', [$value['ADDRESS'], $value['CITY_NAME'], $value['LGA_NAME'], Region::getCnName($value['PROVINCE'])]), ', ');
|
|
|
$data['list'][$key]['SHOW_BV'] = !in_array($value['PAY_TYPE'], [5, 6]);
|
|
|
+ $data['list'][$key]['COUNTRY'] = Countries::getById($value['COUNTRY_ID'])['NAME'];
|
|
|
+ $data['list'][$key]['CURRENCY'] = Currency::getById($value['CURRENCY_ID'])['CODE'];
|
|
|
|
|
|
unset($data['list'][$key]['ADDRESS'], $data['list'][$key]['CITY_NAME'], $data['list'][$key]['LGA_NAME'], $data['list'][$key]['PROVINCE']);
|
|
|
}
|
|
|
@@ -541,7 +552,7 @@ class ShopController extends BaseController {
|
|
|
$orderQuery = Order::find()
|
|
|
->alias('O')
|
|
|
->where($condition, $params)
|
|
|
- ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME')
|
|
|
+ ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME,O.COUNTRY_ID,O.CURRENCY_ID')
|
|
|
->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID');
|
|
|
|
|
|
// 订单中间表只查询待支付和支付失败的订单
|
|
|
@@ -550,7 +561,7 @@ class ShopController extends BaseController {
|
|
|
$orderStandardQuery = ApproachOrder::find()
|
|
|
->alias('O')
|
|
|
->where($condition . ' AND (O.STATUS = :NOT_PAID OR O.STATUS = :FAIL_PAID)', $params)
|
|
|
- ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME')
|
|
|
+ ->select('O.ID,O.SN,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,U.REAL_NAME,O.COUNTRY_ID,O.CURRENCY_ID')
|
|
|
->join('LEFT JOIN', User::tableName() . ' AS U', 'U.ID=O.USER_ID');
|
|
|
|
|
|
$queryAll = $orderQuery->union($orderStandardQuery, true);
|
|
|
@@ -583,6 +594,8 @@ class ShopController extends BaseController {
|
|
|
$data['list'][$key]['STATUS'] = \Yii::$app->params['orderStatus'][$value['STATUS']]['label'] ?? '';
|
|
|
$data['list'][$key]['FULL_ADDRESS'] = trim(implode(', ', [$value['ADDRESS'], $value['CITY_NAME'], $value['LGA_NAME'], Region::getCnName($value['PROVINCE'])]), ', ');
|
|
|
$data['list'][$key]['SHOW_BV'] = !in_array($value['PAY_TYPE'], [5, 6]);
|
|
|
+ $data['list'][$key]['COUNTRY'] = Countries::getById($value['COUNTRY_ID'])['NAME'];
|
|
|
+ $data['list'][$key]['CURRENCY'] = Currency::getById($value['CURRENCY_ID'])['CODE'];
|
|
|
|
|
|
unset($data['list'][$key]['ADDRESS'], $data['list'][$key]['CITY_NAME'], $data['list'][$key]['LGA_NAME'], $data['list'][$key]['PROVINCE']);
|
|
|
}
|
|
|
@@ -594,19 +607,23 @@ class ShopController extends BaseController {
|
|
|
* 会员复消
|
|
|
*/
|
|
|
public function actionReconsume() {
|
|
|
+ // 会员信息
|
|
|
+ $user = User::getEnCodeInfo(\Yii::$app->user->id);
|
|
|
+
|
|
|
$condition = ' AND STATUS=1 AND (FIND_IN_SET(2,GIFT_TYPE)>0 OR FIND_IN_SET(4,GIFT_TYPE)>0)';
|
|
|
$data = ShopGoods::lists($condition, [], [
|
|
|
+ 'select' => 'S.*,N.MARKET_PRICE,N.SELL_PRICE,N.TAX_RATE,N.LOCAL_CURRENCY_ID,N.COUNTRY_ID',
|
|
|
+ 'from' => ShopGoods::tableName() . ' AS S',
|
|
|
+ 'join' => [
|
|
|
+ ['INNER JOIN', ShopGoodsNature::tableName() . ' AS N', 'N.GOODS_ID = S.ID AND N.COUNTRY_ID = ' . $user['COUNTRY_ID']],
|
|
|
+ ],
|
|
|
'orderBy' => 'SORT ASC,CREATED_AT DESC',
|
|
|
- 'from' => ShopGoods::tableName(),
|
|
|
]);
|
|
|
+
|
|
|
foreach ($data['list'] as $key => $value) {
|
|
|
- if ($value['TYPE'] == 1 || $value['TYPE'] == 2) {
|
|
|
- $data['list'][$key]['DISCOUNT'] = ShopGoods::getGoodType()[$value['TYPE']]['discount'];
|
|
|
- } else {
|
|
|
- $data['list'][$key]['DISCOUNT'] = $value['SELL_DISCOUNT']*100;
|
|
|
- }
|
|
|
- //$data['list'][$key]['DISCOUNT'] = ShopGoods::GOODS_TYPE[$value['TYPE']]['discount'];
|
|
|
+ $data['list'][$key]['DISCOUNT'] = in_array($value['TYPE'], [1, 2]) ? ShopGoods::getGoodType()[$value['TYPE']]['discount'] : $value['SELL_DISCOUNT'] * 100;
|
|
|
}
|
|
|
+
|
|
|
return static::notice($data);
|
|
|
}
|
|
|
|