| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?php
- namespace app\models;
- use yii\behaviors\TimestampBehavior;
- use yii\db\ActiveRecord;
- /**
- * @property integer $id
- * @property integer $store_id
- * @property integer $order_id
- * @property integer $sales_id
- * @property integer $sales_sub_id
- * @property integer $user_id
- * @property integer $type
- * @property integer $status
- * @property float $money
- * @property string $send_time
- * @property string $created_at
- * @property string $updated_at
- */
- class SuperSalesMoney extends \yii\db\ActiveRecord
- {
- /**
- * 佣金类型:直推奖
- */
- const TYPE_DIRECT_AWARD = 0;//direct_award
- /**
- * 佣金类型:分红奖
- */
- const TYPE_DIVIDEND_AWARD = 1;
- /**
- * 佣金类型:成团奖
- */
- const TYPE_GROUP_AWARD = 2;//group_award
- public static array $typeMap = [
- self::TYPE_DIRECT_AWARD => '推荐奖',
- // 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()
- ];
- }
- }
- }
|