|
|
@@ -12,6 +12,7 @@ use common\helpers\user\Balance;
|
|
|
use common\helpers\user\Cash;
|
|
|
use common\helpers\user\Info;
|
|
|
use common\libs\logging\operate\AdminOperate;
|
|
|
+use common\models\AmpPeriod;
|
|
|
use common\models\ApproachDecOrder;
|
|
|
use common\models\ApproachOrder;
|
|
|
use common\models\ApproachOrderGoods;
|
|
|
@@ -338,6 +339,12 @@ class ApproachOrderForm extends Model
|
|
|
}
|
|
|
OrderGoods::batchInsert($approachOrderGoods);
|
|
|
|
|
|
+ // AMP订单
|
|
|
+ $order = Order::findOne($this->_model->ID);
|
|
|
+ if ($order['AUTO_MAINTENANCE'] == 1) {
|
|
|
+ $this->orderAutoMaintenance($order);
|
|
|
+ }
|
|
|
+
|
|
|
// 会员报单、BA升级
|
|
|
if (in_array($orderType, ['userDec', 'baUpgrade', 'userUpgrade'])) {
|
|
|
// 同步报单
|
|
|
@@ -354,14 +361,6 @@ class ApproachOrderForm extends Model
|
|
|
throw new Exception(Form::formatErrorsForApi(Yii::t('app', 'changeUserStatusError')));
|
|
|
}
|
|
|
}
|
|
|
- // 修改BA会员升级状态
|
|
|
-// if ($orderType === 'baUpgrade') {
|
|
|
-// // 查询BA会员名
|
|
|
-// $userInfo = User::findOneAsArray('ID=:USER_ID', [':USER_ID' => $approachDecOrder['TO_USER_ID']]);
|
|
|
-// if (!BaUser::updateAll(['WHETHER_UPGRADE' => 1, 'BA_UPGRADE_AT' => time()], 'USER_NAME=:USER_NAME', [':USER_NAME' => $userInfo['USER_NAME']])) {
|
|
|
-// throw new Exception(Form::formatErrorsForApi(Yii::t('app', 'brandAmbassadorUpgradeError')));
|
|
|
-// }
|
|
|
-// }
|
|
|
|
|
|
// 正式会员-升级单
|
|
|
if ($orderType === 'userUpgrade') {
|
|
|
@@ -663,4 +662,63 @@ class ApproachOrderForm extends Model
|
|
|
}
|
|
|
return $hash;
|
|
|
}
|
|
|
+
|
|
|
+ private function orderAutoMaintenance($order)
|
|
|
+ {
|
|
|
+ $nowPeriodNum = Period::instance()->getNowPeriodNum();
|
|
|
+
|
|
|
+ try {
|
|
|
+ $sysConfig = Cache::getSystemConfig();
|
|
|
+ $divideLine = (int)$sysConfig['monthPcsPvFxCondition']['VALUE'];
|
|
|
+
|
|
|
+ $orderTotalBv = $order->PV;
|
|
|
+
|
|
|
+ if ($orderTotalBv <= $divideLine) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $lastAmpPeriod = AmpPeriod::find()
|
|
|
+ ->where(['USER_ID' => $order->USER_ID])
|
|
|
+ ->orderBy(['PERIOD_NUM' => SORT_DESC])
|
|
|
+ ->one();
|
|
|
+
|
|
|
+ $startPeriodNum = $lastAmpPeriod ? $lastAmpPeriod->PERIOD_NUM + 1 : $nowPeriodNum;
|
|
|
+
|
|
|
+ if (!$lastAmpPeriod) {
|
|
|
+ $memberOrderBv = Order::find()
|
|
|
+ ->select('SUM(PV) AS total_pv')
|
|
|
+ ->where([
|
|
|
+ 'USER_ID' => $order->USER_ID,
|
|
|
+ 'IS_DELETE' => 0,
|
|
|
+ 'PERIOD_NUM' => $nowPeriodNum
|
|
|
+ ])
|
|
|
+ ->scalar();
|
|
|
+
|
|
|
+ if ($memberOrderBv >= $divideLine) {
|
|
|
+ $startPeriodNum = $nowPeriodNum + 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $periodCount = floor($orderTotalBv / $divideLine);
|
|
|
+ $remainderBv = $orderTotalBv % $divideLine;
|
|
|
+
|
|
|
+ $ampPeriods = [];
|
|
|
+ for ($i = 1; $i <= $periodCount; $i++) {
|
|
|
+ $currentBv = $i < $periodCount ? $divideLine : ($divideLine + $remainderBv);
|
|
|
+ $ampPeriods[] = [
|
|
|
+ 'USER_ID' => $order->USER_ID,
|
|
|
+ 'ORDER_SN' => $order->SN,
|
|
|
+ 'PERIOD_NUM' => $startPeriodNum + $i - 1,
|
|
|
+ 'BV' => $currentBv,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($ampPeriods)) {
|
|
|
+ AmpPeriod::batchInsert($ampPeriods);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ // 记录日志或进行错误处理
|
|
|
+ \Yii::error('Order auto maintenance failed: ' . $e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|