| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- namespace addons\CloudStock\common\services;
- use addons\CloudStock\common\models\CloudStockPriceDifferenceUserTeamStatistics;
- use addons\ServeBonus\common\logic\ConditionUpgradeLogic;
- use addons\ServeBonus\common\models\ServeBonus;
- use addons\ServeBonus\common\models\ServeBonusLevel;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\helpers\FormatHelper;
- use common\models\mall\MallAddons;
- use common\models\user\User;
- use common\models\user\UserPartitionRelationship;
- use Exception;
- use Yii;
- class CloudStockPriceDifferenceUserTeamStatisticsService extends BaseService
- {
- /**
- * 云库存补货-扣平台库存,触发业绩奖励,同时触发异步,业绩统计
- * @param $data
- * @return void
- */
- public static function handleSync($data)
- {
- $mall_id = $data['mall_id'];
- $goods_price = $data['goods_price'];
- $user_id = $data['user_id'];
- $obj = new CloudStockPriceDifferenceUserTeamStatisticsService(['mall_id' => $mall_id]);
- $obj->triggerStatistics(['pay_money' => $goods_price, 'user_id' => $user_id]);
- //统计完业绩,触发服务商分红的条件升级
- if (MallAddons::isInstall($mall_id, 'ServeBonus')) {
- $cond_upgrade = new ConditionUpgradeLogic();
- $order = [
- 'id' => $data['order_id'],
- 'mall_id' => $data['mall_id'],
- 'user_id' => $data['user_id'],
- ];
- $cond_upgrade->execute(AddonsEnum::ADDONS_NAME_SERVEBONUS, (new ServeBonus()), (new ServeBonusLevel()), $order);
- }
- }
- public function triggerStatistics($params)
- {
- $obj = new CloudStockPriceDifferenceUserTeamStatisticsService(['mall_id' => $this->mall_id, 'user_id' => $params['user_id']]);
- $obj->incBatchParentDataByUid($params);
- $obj->incBatchSelfDataByUid($params);
- }
- public function incBatchParentDataByUid($params = null)
- {
- $trans = Yii::$app->db->beginTransaction();
- try {
- if (empty($params)) throw new Exception('传参有误');
- $user_id = $this->user_id;
- $mall_id = $this->mall_id;
- $pay_money = $params['pay_money'];
- // 查询此用户是否有上级
- $parent_list = UserPartitionRelationship::getParentIdArr($user_id);// 获取本人当前tree数据
- if (empty($parent_list)) {
- $trans->commit();
- return true;
- }
- $parent_list = array_reverse($parent_list);// 数组倒叙
- foreach ($parent_list as $key => $pid) {
- $model = CloudStockPriceDifferenceUserTeamStatistics::find()->where(['user_id' => $pid, 'status' => StatusEnum::ENABLED])->one();
- $emptyModel = empty($model);
- if ($emptyModel) {
- $model = new CloudStockPriceDifferenceUserTeamStatistics();
- $model->mall_id = $mall_id;
- $model->user_id = $pid;
- $model->loadDefaultValues();
- }
- // 上级团队
- $model->team_pay_selling_price = $model->team_pay_selling_price + $pay_money;
- if ($key == 0) {// 直推上级
- $model->user_direct_pay_selling_price = $model->user_direct_pay_selling_price + $pay_money;
- } elseif ($key == 1) {// 间推上级
- $model->user_indirect_pay_selling_price = $model->user_indirect_pay_selling_price + $pay_money;
- }
- if (!$model->save()) throw new Exception($model->getErrorMessage());
- }
- $trans->commit();
- return true;
- } catch (\Exception $e) {
- $trans->rollBack();
- $exception = FormatHelper::exception($e, "用户上级订单数据维护");
- echo $exception;
- return false;
- }
- }
- public function incBatchSelfDataByUid($params = null)
- {
- try {
- if (empty($params)) throw new Exception('传参有误');
- $pay_money = $params['pay_money'];
- $user_id = $this->user_id;
- $mall_id = $this->mall_id;
- $model = CloudStockPriceDifferenceUserTeamStatistics::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->one();
- $emptyModel = empty($model);
- if ($emptyModel) {
- $model = new CloudStockPriceDifferenceUserTeamStatistics();
- $model->mall_id = $mall_id;
- $model->user_id = $user_id;
- $model->loadDefaultValues();
- }
- $model->self_selling_price = $model->self_selling_price + $pay_money;
- if (!$model->save()) throw new Exception($model->getErrorMessage());
- return true;
- } catch (\Exception $e) {
- $exception = FormatHelper::exception($e, "用户订单数据维护");
- echo $exception;
- return false;
- }
- }
- }
|