'推荐奖', // self::TYPE_DIVIDEND_AWARD => '分红奖', self::TYPE_GROUP_AWARD => '分红奖' ]; /** * 佣金状态:未发放 */ const STATUS_NOT_SEND = 0; /** * 佣金状态:已发放 */ const STATUS_SEND = 1; /** * @inheritdoc */ public static function tableName() { return '{{%super_sales_money}}'; } public function behaviors() { return [ [ 'class' => TimestampBehavior::class ] ]; } public function rules() { return [ [['id', 'store_id', 'sales_id', 'sales_sub_id', 'user_id', 'type', 'status', 'order_id'], 'integer'], [['money'], 'number'], [['created_at', 'updated_at', 'send_time'], 'string'] ]; } public function attributeLabels() { return [ 'id' => '', 'store_id' => '商城ID', 'order_id' => '订单ID', 'sales_id' => '开团ID', 'sales_sub_id' => '团员信息表ID(参与表ID)', 'user_id' => '奖金获取人用户ID', 'type' => '佣金类型:0=直推奖;1=分红奖;2=成团奖;', 'status' => '状态:0=未发放;1=已发放;', 'send_time' => '发放时间', 'money' => '金额', 'created_at' => '', 'updated_at' => '', ]; } public static function addMoney($store_id, $order_id, $sales_id, $sales_sub_id, $user_id, $money, $type) { $super_sales_money = self::findOne(['sales_sub_id' => $sales_sub_id, 'type' => $type]); if ($super_sales_money) { return [ 'code' => 1, 'msg' => '该奖金已经添加' ]; } $super_sales_money = new self(); $super_sales_money->user_id = $user_id; $super_sales_money->store_id = $store_id; $super_sales_money->order_id = $order_id; $super_sales_money->sales_id = $sales_id; $super_sales_money->sales_sub_id = $sales_sub_id; $super_sales_money->type = $type; $super_sales_money->status = self::STATUS_NOT_SEND; $super_sales_money->money = $money; if ($super_sales_money->save()) { return [ 'code' => 0, 'msg' => '添加成功' ]; } return [ 'code' => 1, 'msg' => implode(';', array_values($super_sales_money->firstErrors)) ]; } public static function sendMoney($order) { $t = \Yii::$app->db->beginTransaction(); try { //发放直推奖 $data = self::find()->where(['order_id' => $order->id, 'status' => self::STATUS_NOT_SEND, 'type' => self::TYPE_DIRECT_AWARD]) ->select('id, order_id, user_id, money, type')->asArray()->all(); foreach ($data as $item) { $order = Order::findOne($item['order_id']); if (!intval($order->is_sale)) { continue; } $user = User::findOne($item['user_id']); if (!$user) { continue; } $superSalesUser = SuperSalesUser::findOne(['user_id' => $item['user_id']]); if (!$superSalesUser) { continue; } // if (intval($item['type']) === self::TYPE_GROUP_AWARD) { // $superSalesUser->group_award = bcadd($superSalesUser->group_award, $item['money'], 2); // } else { // $superSalesUser->direct_award = bcadd($superSalesUser->group_award, $item['money'], 2); // } $superSalesUser->updateCounters(['price' => $item['money'], 'direct_award' => $item['money']]); // $superSalesUser->price = bcadd($superSalesUser->price, $item['money'], 2); // if (!$superSalesUser->save()) { // throw new \Exception(implode(';', array_values($superSalesUser->firstErrors))); // } // $result = AccountLog::saveLog($item['user_id'], $item['money'], AccountLog::TYPE_BALANCE, // AccountLog::LOG_TYPE_INCOME, AccountLog::TYPE_PLATFORM_ORDER, // $order->id, "商城订单超级卖货系统返佣收入, 订单号:{$order->order_no}"); // // if (!$result) { // throw new \Exception('用户账户打款失败'); // } // $user->price = bcadd($user->price, $item['money'], 2); // $user->total_price = bcadd($user->total_price, $item['money'], 2); // if (!$user->save()) { // throw new \Exception(json_encode($user->errors, JSON_UNESCAPED_UNICODE)); // } $user->updateCounters(['price' => $item['money'], 'total_price' => $item['money']]); $result = UserShareMoney::set($item['money'], $user->id, 0, 0, 13, $user->store_id, 0, "商城订单超级卖货系统返佣收入, 订单号:{$order->order_no}"); if (!$result) { throw new \Exception('保存失败'); } $superSalesMoney = self::findOne($item['id']); $superSalesMoney->status = self::STATUS_SEND; $superSalesMoney->send_time = (string)time(); if (!$superSalesMoney->save()) { throw new \Exception(implode(';', array_values($superSalesMoney->firstErrors))); } } //判断成团奖是否满足发放条件 并发放成团奖励 $groupMoney = self::findOne(['order_id' => $order->id, 'type' => self::TYPE_GROUP_AWARD, 'status' => self::STATUS_NOT_SEND]); if ($groupMoney) { $is_not_send_direct = self::findOne([ 'sales_id' => $groupMoney->sales_id, 'type' => self::TYPE_DIRECT_AWARD, 'status' => self::STATUS_NOT_SEND ]); //查询是否存在直推奖未发放的情况 未发放表示没有过售后期 if (!$is_not_send_direct) { $order = Order::findOne($groupMoney->order_id); if (intval($order->is_sale)) { $user = User::findOne($groupMoney->user_id); if ($user) { $superSalesUser = SuperSalesUser::findOne(['user_id' => $groupMoney->user_id]); if ($superSalesUser) { // $superSalesUser->group_award = bcadd($superSalesUser->group_award, $groupMoney->money, 2); // $superSalesUser->price = bcadd($superSalesUser->price, $groupMoney->money, 2); // if (!$superSalesUser->save()) { // throw new \Exception(implode(';', array_values($superSalesUser->firstErrors))); // } $superSalesUser->updateCounters(['group_award' => $groupMoney->money]);//'price' => $groupMoney->money 这个不要了 因为是打款到余额就不需要统计到总佣金了 $result = AccountLog::saveLog($groupMoney->user_id, $groupMoney->money, AccountLog::TYPE_BALANCE, AccountLog::LOG_TYPE_INCOME, AccountLog::TYPE_PLATFORM_ORDER, $order->id, "商城订单超级卖货系统成团奖返佣收入, 订单号:{$order->order_no}"); if (!$result) { throw new \Exception('用户账户打款失败'); } $groupMoney->status = self::STATUS_SEND; $groupMoney->send_time = (string)time(); if (!$groupMoney->save()) { throw new \Exception(implode(';', array_values($groupMoney->firstErrors))); } } } } } } $t->commit(); return [ 'code' => 0, 'msg' => '已发放完成' ]; } catch (\Exception $e) { $t->rollBack(); return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }