| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- <?php
- /**
- * 厦门云联储网络科技有限公司
- * https://www.baokuaiyun.com
- * Copyright (c) 2023 爆块云 All rights reserved.
- */
- namespace app\models;
- use app\constants\OptionSetting;
- use Yii;
- use yii\behaviors\TimestampBehavior;
- use yii\db\ActiveRecord;
- use yii\db\Expression;
- use yii\helpers\ArrayHelper;
- use yii\helpers\Json;
- /**
- * This is the model class for table "{{%user_string_code_order_history}}".
- *
- * @property integer $id
- * @property integer $store_id
- * @property integer $user_id
- * @property integer $saas_id
- * @property integer $is_scan
- * @property integer $order_id
- * @property integer $order_pv
- * @property string $order_no
- * @property integer $is_send
- * @property integer $model_val
- * @property integer $created_at
- * @property integer $updated_at
- */
- class UserStringCodeOrderHistory extends \yii\db\ActiveRecord
- {
- const SEND_STATUS_WAIT = 0;
- const SEND_STATUS_SUCCESS = 1;
- const STATUS_LIST = [
- self::SEND_STATUS_WAIT => '未发放',
- self::SEND_STATUS_SUCCESS => '已发放',
- ];
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return '{{%user_string_code_order_history}}';
- }
- public function behaviors()
- {
- return [
- [
- 'class' => TimestampBehavior::class,
- 'attributes' => [
- ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'],
- ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at']
- ]
- ]
- ];
- }
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [
- [
- 'store_id',
- 'user_id',
- 'saas_id',
- 'order_id',
- 'created_at',
- 'is_scan',
- 'updated_at',
- 'is_send',
- 'model_val'
- ],
- 'integer'
- ],
- [['order_pv'], 'number'],
- ];
- }
- /**
- * @inheritdoc
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'store_id' => '店铺id',
- 'user_id' => '用户id',
- 'saas_id' => '联盟用户id',
- 'is_scan' => '是否当面付',
- 'order_id' => '订单id',
- 'order_no' => '订单号',
- 'order_pv' => '订单PV',
- 'is_send' => '状态',
- 'created_at' => '创建时间',
- 'updated_at' => '更新时间',
- ];
- }
- public static function set($store_id, $user_id, $saas_id, $is_scan, $order_id, $order_no, $order_pv, $model_val, $is_send = 0)
- {
- $model = new self();
- $model->store_id = $store_id;
- $model->user_id = $user_id;
- $model->saas_id = $saas_id;
- $model->is_scan = $is_scan;
- $model->order_id = $order_id;
- $model->order_pv = $order_pv;
- $model->model_val = $model_val;
- $model->is_send = $is_send;
- $model->order_no = $order_no;
- return $model->save();
- }
- public static function sendRedPacket($store_id, $user_id, $model_val, $order_id = 0, $order_no = '', $is_scan = 0)
- {
- $store = Store::findOne($store_id);
- $saas_id = SaasUser::findSaasIdByUserId($user_id);
- $saas_user = SaasUser::findOne($saas_id);
- $oldSaasId = $saas_id;
- $model_name = UserStringCodePlus::MODEL_NAME_LIST[$model_val];
- if ($model_val == UserStringCodePlus::MODEL_SHOP) {
- $to_store_id = $store_id;
- $to_user_id = $user_id;
- } else {
- $to_store_id = UserStringCodePlus::ALLIANCE_STORE_ID;
- $to_user_id = SaasUser::findSaasIdByUserId($user_id);
- }
- $order_pv = UserStringCodeOrderHistory::find()
- ->where(['store_id' => $store_id, 'model_val' => $model_val, 'saas_id' => $saas_id, 'order_id' => $order_id, 'is_send' => self::SEND_STATUS_WAIT])
- ->select(['sum(order_pv) as total'])->scalar();
- // if (bccomp($order_pv, 0, 2) <= 0) {
- if (bccomp($order_pv, 0, 6) <= 0) {
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】,店铺:【{$store_id}】,订单总PV值【{$order_pv}】:有误"], "app_debug.log");
- return false;
- }
- // 获取所有上层节点
- $parent_list = UserStringCodePlus::getAllParentNodeIds($to_store_id, $to_user_id);
- if (!$parent_list) {
- return false;
- }
- $parent_list_desc = array_reverse($parent_list);
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】节点列表:" . json_encode($parent_list_desc)], "app_debug.log");
- $sys_setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, UserStringCodePlus::ALLIANCE_STORE_ID, OptionSetting::SHARE_GROUP_NAME, '{}');
- $sys_setting = $sys_setting ? Json::decode($sys_setting['value']) : [];
- $setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, $store_id, OptionSetting::SHARE_GROUP_NAME, '{}');
- $setting = $setting ? Json::decode($setting['value']) : [];
- $sale_setting = Option::get(OptionSetting::SHARE_STRING_CODE_SALE_SETTING, UserStringCodePlus::ALLIANCE_STORE_ID, OptionSetting::SHARE_GROUP_NAME, '{}');
- $sale_setting = $sale_setting ? Json::decode($sale_setting['value']) : [];
- $string_code_pv_scale = $model_val == UserStringCodePlus::MODEL_SHOP ? $setting['string_code_pv_scale_0'] : $setting['string_code_pv_scale_1'];
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】PV比例:{$string_code_pv_scale}"], "app_debug.log");
- // 总待分账金额
- $transfer_money = bcmul($order_pv, $string_code_pv_scale / 100, 2);
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】总待分账金额:{$transfer_money}"], "app_debug.log");
- //debug_log([__METHOD__, __LINE__, "串码红包JOB 【{$model_name}】门店:{$sale_setting['string_code_store_red_packet']} 品牌:{$sale_setting['string_code_brand_red_packet']}"], "app_debug.log");
- if ($store->store_type == Store::TYPE_STORE) {
- $transfer_money = bcmul($transfer_money, $sale_setting['string_code_store_red_packet'] / 100, 2);
- } else {
- $transfer_money = bcmul($transfer_money, $sale_setting['string_code_brand_red_packet'] / 100, 2);
- }
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】红包分账金额:{$transfer_money}"], "app_debug.log");
- $alliance_setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, UserStringCodePlus::ALLIANCE_STORE_ID, OptionSetting::SHARE_GROUP_NAME, '{}');
- $alliance_setting = $alliance_setting ? Json::decode($alliance_setting['value']) : [];
- if ($model_val == UserStringCodePlus::MODEL_SHOP) {
- $max_layer = $setting['string_code_max_layer'];
- } else {
- $max_layer = $alliance_setting['string_code_max_layer'];
- }
- $bonus_money = bcdiv($transfer_money, $max_layer, 2);
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】节点红包金额:{$bonus_money},最大层级:{$max_layer}"], "app_debug.log");
- if (bccomp($bonus_money, 0, 6) <= 0) {
- //debug_log([__METHOD__, __LINE__, "用户第一次加入节点红包发放 【{$model_name}】节点红包金额:{$bonus_money} 错误"], "app_debug.log");
- return false;
- }
- for ($i = 0; $i < $max_layer; $i++) {
- $parent_id = $parent_list_desc[$i];
- if ($parent_id) {
- if ($store->store_type == Store::TYPE_STORE) {
- $s_order_log_type = UserStringCodeOrder::TYPE_STORE_RED_PACKET;
- } else {
- $s_order_log_type = UserStringCodeOrder::TYPE_BRAND_RED_PACKET;
- }
- if ($model_val == UserStringCodePlus::MODEL_ALLIANCE) {
- $user_id = SaasUser::findUserIdByStoreIdAndSaasId(-1, $parent_id);
- $saas_id = $parent_id;
- } else {
- $parent_saas_id = SaasUser::findSaasIdByUserId($parent_id);
- $user_id = $parent_id;
- $saas_id = $parent_saas_id;
- }
- $s_order_log = "串码红包 【{$saas_user['name']}】加入节点奖励";
- UserStringCodeOrder::set(
- $to_store_id,
- $user_id,
- $saas_id,
- $is_scan,
- $order_id,
- $bonus_money,
- UserStringCodeOrder::STATUS_SUCCESS,
- $s_order_log,
- $order_no,
- $s_order_log_type,
- $model_val,
- $store_id
- );
- $wallet_store_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? UserStringCodePlus::ALLIANCE_STORE_ID : $store_id;
- $wallet_user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? $saas_id : $user_id;
- $log_desc = "串码用户:【{$saas_user['name']}】 第一次加入节点发放红包";
- $currency = Currency::findOne(['code' => Currency::CURRENCY_STRING_CODE]);
- UserWallet::addLog($currency, $wallet_store_id, $wallet_user_id, $bonus_money, $log_desc, UserWallet::TYPE_RED_PACKET,$store_id,UserWallet::TYPE_RED_PACKET);
- } else {
- // 多余的都发根结点用户
- if ($model_val == UserStringCodePlus::MODEL_ALLIANCE) {
- // $string_code_transfer_user_id=isset($sys_setting['string_code_transfer_user_id']) && $sys_setting['string_code_transfer_user_id'] > 0 ? $sys_setting['string_code_transfer_user_id'] : 0;
- // $string_code_transfer_saas_id=$string_code_transfer_user_id;
- // $store=SaasUser::findOne($string_code_transfer_saas_id);
- // $string_code_transfer_user_id=SaasUser::findUserIdByStoreIdAndSaasId($store->id,$string_code_transfer_user_id);
- $string_code_transfer_user_id = isset($sys_setting['string_code_transfer_user_id']) && $sys_setting['string_code_transfer_user_id'] > 0 ? $sys_setting['string_code_transfer_user_id'] : 0;
- $string_code_transfer_saas_id = isset($sys_setting['string_code_transfer_saas_id']) && $sys_setting['string_code_transfer_saas_id'] > 0 ? $sys_setting['string_code_transfer_saas_id'] : 0;
- } else {
- // $string_code_transfer_user_id=isset($setting['string_code_transfer_user_id']) && $setting['string_code_transfer_user_id'] > 0 ? $setting['string_code_transfer_user_id'] : 0;
- // $string_code_transfer_saas_id=$string_code_transfer_user_id;
- // $store=SaasUser::findOne($string_code_transfer_saas_id);
- // $string_code_transfer_user_id=SaasUser::findUserIdByStoreIdAndSaasId($store->id,$string_code_transfer_user_id);
- $string_code_transfer_user_id = isset($setting['string_code_transfer_user_id']) && $setting['string_code_transfer_user_id'] > 0 ? $setting['string_code_transfer_user_id'] : 0;
- $string_code_transfer_saas_id = isset($setting['string_code_transfer_saas_id']) && $setting['string_code_transfer_saas_id'] > 0 ? $setting['string_code_transfer_saas_id'] : 0;
- }
- //debug_log([__METHOD__, __LINE__, "串码红包JOB 【{$model_name}】店铺id{$store_id} 默认让利人user:{$string_code_transfer_user_id},默认让利人saas:{$string_code_transfer_saas_id}"], "app_debug.log");
- if ($string_code_transfer_user_id > 0) {
- if ($store->store_type == Store::TYPE_STORE) {
- $s_order_log_type = UserStringCodeOrder::TYPE_STORE_RED_PACKET;
- } else {
- $s_order_log_type = UserStringCodeOrder::TYPE_BRAND_RED_PACKET;
- }
- $s_order_log = "串码红包 【{$saas_user['name']}】加入节点奖励";
- UserStringCodeOrder::set(
- UserStringCodePlus::ALLIANCE_STORE_ID,
- $string_code_transfer_user_id,
- $string_code_transfer_saas_id,
- $is_scan,
- $order_id,
- $bonus_money,
- UserStringCodeOrder::STATUS_SUCCESS,
- $s_order_log,
- $order_no,
- $s_order_log_type,
- $model_val,
- $store_id
- );
- $wallet_store_id = UserStringCodePlus::ALLIANCE_STORE_ID;
- $wallet_user_id = $string_code_transfer_user_id;
- $log_desc = "串码用户:【{$saas_user['name']}】 第一次加入节点发放红包";
- $currency = Currency::findOne(['code' => Currency::CURRENCY_STRING_CODE]);
- UserWallet::addLog($currency, $wallet_store_id, $wallet_user_id, $bonus_money, $log_desc, UserWallet::TYPE_RED_PACKET,$store_id,UserWallet::TYPE_RED_PACKET);
- }
- }
- }
- //store_user_referrer store_user_affiliated store_referrer
- $UserStringCodeOrderlist = UserStringCodeOrder::findAll([
- 'order_id' => $order_id,
- 'is_scan' => $is_scan,
- 'type' => [UserStringCodeOrder::TYPE_STORE_RED_PACKET,UserStringCodeOrder::TYPE_BRAND_RED_PACKET]
- ]);
- if (count($UserStringCodeOrderlist) > 0) {
- UserStringCodeOrderHistory::updateAll(
- ['is_send' => self::SEND_STATUS_SUCCESS],
- ['store_id' => $store_id, 'model_val' => $model_val, 'saas_id' => $oldSaasId, 'order_id' => $order_id, 'is_send' => self::SEND_STATUS_WAIT]
- );
- }
-
- }
- }
|