'店铺推荐人', self::TYPE_CURRENCY_AWARD => '币种奖励', self::TYPE_SUPRISE_RED => '惊喜红包', self::TYPE_BRAND_USER_STORE_REFERRER => '商城用户推荐人', // self::TYPE_STORE_PARTNER => '合伙人', self::TYPE_STORE_USER_AFFILIATED => '会员所属门店', self::TYPE_STORE_USER_REFERRER => '联盟推荐人', self::TYPE_STORE_RED_PACKET => '串码红包', self::TYPE_BRAND_REFERRER => '店铺推荐人', self::TYPE_BRAND_TEAM_PARTNER => '品牌团队合伙人', self::TYPE_STORE_TEAM_PARTNER => '店铺团队合伙人', // self::TYPE_BRAND_PARTNER => '合伙人', self::TYPE_BRAND_USER_AFFILIATED => '会员所属品牌', self::TYPE_BRAND_USER_REFERRER => '用户推荐人', self::TYPE_BRAND_RED_PACKET => '串码红包', self::TYPE_PARTNER => '合伙人', self::TYPE_STRING_CODE_STORE_DISTRICT_AGENT_DIVVY => '授权区县代理商', self::TYPE_STRING_CODE_STORE_STREET_AGENT_DIVVY => '街道代理商', self::TYPE_STRING_CODE_STORE_ALL_DISTRICT_AGENT_DIVVY => '所有区县代理商分红', self::TYPE_STRING_CODE_BRAND_MAKE_DONCESSIONS => '商城让利合伙人', self::TYPE_STORE_UNION => '联盟商家', self::TYPE_UNIT_FOUNDER => '联合创始人', self::TYPE_EXPAND_MANAGER => '拓展经理', self::TYPE_BD_AGENT => '广告推流推广代理', self::TYPE_AD_HOT => '授权广告推流', self::TYPE_BRAND_DISTRICT_AGENT => '品牌区县代理', self::TYPE_BRAND_CITY_AGENT => '品牌市代理', self::TYPE_BRAND_PROVINCE_AGENT => '品牌省代理', self::TYPE_APPOINT_AWARD => '指定账户', self::TYPE_AREA_AWARD => '区域代理', self::TYPE_CONFIG_POOL_AWARD => '分红池分红', self::TYPE_LEAGUE_POOL_AWARD => '联盟券分红池分红', self::TYPE_ORDER_FLOW_CANCEL => '订单取消', ]; const TYPE_LEAGUE_PRICE = [ self::TYPE_STORE_REFERRER => 9, self::TYPE_CURRENCY_AWARD => 34, self::TYPE_SUPRISE_RED => 10, self::TYPE_BRAND_USER_STORE_REFERRER => 11, // self::TYPE_STORE_PARTNER => '合伙人', self::TYPE_STORE_USER_AFFILIATED => 12, self::TYPE_STORE_USER_REFERRER => 13, self::TYPE_STORE_RED_PACKET => 8, self::TYPE_BRAND_REFERRER => 14, self::TYPE_BRAND_TEAM_PARTNER => 15, self::TYPE_STORE_TEAM_PARTNER => 16, // self::TYPE_BRAND_PARTNER => '合伙人', self::TYPE_BRAND_USER_AFFILIATED => 17, self::TYPE_BRAND_USER_REFERRER => 18, self::TYPE_BRAND_RED_PACKET => 8, self::TYPE_PARTNER => 19, self::TYPE_STRING_CODE_STORE_DISTRICT_AGENT_DIVVY => 20, self::TYPE_STRING_CODE_STORE_STREET_AGENT_DIVVY => 21, self::TYPE_STRING_CODE_STORE_ALL_DISTRICT_AGENT_DIVVY => 22, self::TYPE_STRING_CODE_BRAND_MAKE_DONCESSIONS => 23, self::TYPE_STORE_UNION => 24, self::TYPE_UNIT_FOUNDER => 25, self::TYPE_EXPAND_MANAGER => 26, self::TYPE_BD_AGENT => 27, self::TYPE_AD_HOT => 28, self::TYPE_BRAND_DISTRICT_AGENT => 29, self::TYPE_BRAND_CITY_AGENT => 30, self::TYPE_BRAND_PROVINCE_AGENT => 31, self::TYPE_APPOINT_AWARD => 32, self::TYPE_AREA_AWARD => 33, self::TYPE_CONFIG_POOL_AWARD => 7, self::TYPE_LEAGUE_POOL_AWARD => 35, self::TYPE_ORDER_FLOW_CANCEL => 36, ]; const STORE_DIRECT_REFERRAL_REWARD = 'store_direct_referral_reward'; const STORE_PROFIT_POOL_DIVIDEND = 'store_profit_pool_dividend'; const STORE_DESIGNATED_PROFIT_SHARING = 'store_designated_profit_sharing'; const STORE_PEER_LEVEL_PROFIT_SHARING = 'store_peer_level_profit_sharing'; const STORE_P_PROFIT_SHARING = 'store_province_regional_profit_sharing'; const STORE_C_PROFIT_SHARING = 'store_city_regional_profit_sharing'; const STORE_A_PROFIT_SHARING = 'store_district_regional_profit_sharing'; const STORE_T_PROFIT_SHARING = 'store_town_regional_profit_sharing'; const STATUS_LIST = [ self::STATUS_WAIT => '待结算', self::STATUS_SUCCESS => '已结算', ]; /** * @inheritdoc */ public static function tableName() { return '{{%user_string_code_order}}'; } 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', 'status', 'model_val' ], 'integer' ], [['title'], 'string', 'max' => 100], [['type'], 'string', 'max' => 50], [['logo', 'order_no'], 'string', 'max' => 255], [['money'], 'number'], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'store_id' => '店铺id', 'user_id' => '用户id', 'saas_id' => '联盟用户id', 'is_scan' => '订单id', 'order_id' => '金额', 'money' => '金额', 'status' => '状态', 'title' => '标题', 'order_no' => '订单号', 'logo' => 'Logo', 'type' => '类型', 'model_val' => '模型', 'created_at' => '创建时间', 'updated_at' => '更新时间', ]; } public static function set($store_id, $user_id, $saas_id, $is_scan, $order_id, $money, $status, $title, $order_no, $type, $model_val, $source_store_id = 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->money = $money; $model->status = $status; $model->title = $title; $model->order_no = $order_no; $model->logo = "https://mall.kcyp.net/web/uploads/images/store_6/2024-11-28/8d6f1d4abbdb46c4a493a9306ebd7c188280e32c.png"; $model->type = $type; $model->model_val = $model_val; $model->source_store_id = $source_store_id; //debug_log([__METHOD__, __LINE__, "====================" . $user_id], "app_debug.log"); return $model->save(); } // $isSurplus 是否剩余让利用户 public static function transferAddUserWallet($order, $saas_id, $money, $type, $model_val, $isSurplus = false) { $order_id = $order->id; $order_no = $order->order_no; $is_scan = $order instanceof ScanOrder ? 1 : 0; //改为大模型下 $store_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? UserStringCodePlus::ALLIANCE_STORE_ID : $order->store_id; // $store_id = UserStringCodePlus::ALLIANCE_STORE_ID; // $user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? 0 : SaasUser::findUserIdByStoreIdAndSaasId($store_id, $saas_id); $user_id = SaasUser::findUserIdByStoreIdAndSaasId($order->store_id, $saas_id); $desc = self::TYPE_LIST[$type]; if (!$saas_id) { $setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, $store_id, OptionSetting::SHARE_GROUP_NAME, '{}'); $setting = $setting ? Json::decode($setting['value']) : []; $user_id = $setting['string_code_transfer_user_id'] ?? 0; $saas_id = $setting['string_code_transfer_saas_id'] ?? 0; if ($saas_id) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 受益人不存在,发放给特殊联盟用户:【{$saas_id}】"], "app_debug.log"); } else { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 受益人不存在,特殊联盟用户也不存在"], "app_debug.log"); return false; } } if (bccomp($money, 0, 6) <= 0) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 有误"], "app_debug.log"); return false; } if ($isSurplus) { $s_order_log = UserStringCodeOrder::TYPE_LIST[$type] . '剩余让利用户'; } else { $s_order_log = UserStringCodePlus::MODEL_NAME_LIST[$model_val] . " " . UserStringCodeOrder::TYPE_LIST[$type]; } $award_type = PluginPoolConfig::getAwardType($order->store_id, $is_scan); if ($award_type == 2) { SaaSLeaguePriceLog::addLog($saas_id, $order->store_id, $money, UserStringCodeOrder::TYPE_LEAGUE_PRICE[$type], $order_id, $is_scan, 0, $s_order_log); } else { $wallet_user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? $saas_id : $user_id; if (!$wallet_user_id && $model_val != UserStringCodePlus::MODEL_ALLIANCE) { $saasUser = SaasUser::findOne($saas_id); $wallet_user_id = User::findUserByStore($store_id, $saasUser->mobile, $saasUser->name, $saasUser->avatar); if (!$wallet_user_id) return false; } $log_type = $is_scan ? UserWallet::TYPE_SCAN : UserWallet::TYPE_ORDER; $log_desc = UserWallet::TYPE_NAME_LIST[$log_type] . "【{$order_no}】 发放【{$s_order_log}】红包"; $source_table = $is_scan ? "\app\plugins\scanCodePay\models\Order" : "app\models\Order"; $currency = Currency::findOne(['code' => Currency::CURRENCY_STRING_CODE]); UserWallet::addLog($currency, $store_id, $wallet_user_id, $money, $log_desc, $log_type, $source_table, $order_id, $store_id, $type); UserStringCodeOrder::set( $store_id, $user_id, $saas_id, $is_scan, $order_id, $money, UserStringCodeOrder::STATUS_SUCCESS, $s_order_log, $order_no, $type, $model_val, $order->store_id ); } return true; } public static function configAddUserWallet($order, $saas_id, $money, $type, $model_val, $desc, $isSurplus = false) { $order_id = $order->id; $order_no = $order->order_no; $is_scan = $order instanceof ScanOrder ? 1 : 0; //改为大模型下 $store_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? UserStringCodePlus::ALLIANCE_STORE_ID : $order->store_id; // $store_id = UserStringCodePlus::ALLIANCE_STORE_ID; // $user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? 0 : SaasUser::findUserIdByStoreIdAndSaasId($store_id, $saas_id); $user_id = SaasUser::findUserIdByStoreIdAndSaasId($order->store_id, $saas_id); if (!$saas_id) { $setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, $store_id, OptionSetting::SHARE_GROUP_NAME, '{}'); $setting = $setting ? Json::decode($setting['value']) : []; $user_id = $setting['string_code_transfer_user_id'] ?? 0; $saas_id = $setting['string_code_transfer_saas_id'] ?? 0; if ($saas_id) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 受益人不存在,发放给特殊联盟用户:【{$saas_id}】"], "app_debug.log"); } else { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 受益人不存在,特殊联盟用户也不存在"], "app_debug.log"); return false; } } if (bccomp($money, 0, 6) <= 0) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 有误"], "app_debug.log"); return false; } if ($isSurplus) { $s_order_log = UserStringCodeOrder::TYPE_LIST[$type] . " " . $desc . '剩余让利用户'; } else { $s_order_log = UserStringCodePlus::MODEL_NAME_LIST[$model_val] . " " . $desc; } $award_type = PluginPoolConfig::getAwardType($order->store_id, $is_scan); if ($award_type == 2) { SaaSLeaguePriceLog::addLog($saas_id, $order->store_id, $money, UserStringCodeOrder::TYPE_LEAGUE_PRICE[$type], $order_id, $is_scan, 0, $desc); } else { $log_type = $is_scan ? UserWallet::TYPE_SCAN : UserWallet::TYPE_ORDER; $log_desc = UserWallet::TYPE_NAME_LIST[$log_type] . "【{$order_no}】 发放【{$s_order_log}】红包"; $wallet_user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? $saas_id : $user_id; if (!$wallet_user_id && $model_val != UserStringCodePlus::MODEL_ALLIANCE) { $saasUser = SaasUser::findOne($saas_id); $wallet_user_id = User::findUserByStore($store_id, $saasUser->mobile, $saasUser->name, $saasUser->avatar); if (!$wallet_user_id) return false; } $source_table = $is_scan ? "\app\plugins\scanCodePay\models\Order" : "app\models\Order"; $currency = Currency::findOne(['code' => Currency::CURRENCY_STRING_CODE]); UserWallet::addLog($currency, $store_id, $wallet_user_id, $money, $log_desc, $log_type, $source_table, $order_id, $store_id, $type); UserStringCodeOrder::set( $store_id, $user_id, $saas_id, $is_scan, $order_id, $money, UserStringCodeOrder::STATUS_SUCCESS, $s_order_log, $order_no, $type, $model_val, $order->store_id ); } return true; } public static function goCouponAdd($store_id,$saas_id, $money, $type,$order = null) { $order_no = $order ? $order->order_no : ""; $is_scan = $order instanceof ScanOrder ? 1 : 0; $user = SaasUser::findOne($saas_id); if (!$user) return true; $mobile = $user->mobile; if (!$saas_id) { $setting = Option::get(OptionSetting::SHARE_STRING_CODE_DEFAULT_SETTING, $store_id, OptionSetting::SHARE_GROUP_NAME, '{}'); $setting = $setting ? Json::decode($setting['value']) : []; $saas_id = $setting['string_code_transfer_saas_id'] ?? 0; if (!$saas_id) { return true; } $user = SaasUser::findOne($saas_id); if (!$user) return true; $mobile = $user->mobile; } $shopCoupon = new GoShopCoupon(); $shopCoupon->order_no = $order_no; $shopCoupon->phone = $mobile; $shopCoupon->store_id = $store_id; $shopCoupon->amount = $money; $shopCoupon->is_scan = $is_scan; $shopCoupon->idempotent_type = $type; $shopCoupon->save(); return true; } public static function transferAddUserWalletAndStoreid($order, $saas_id, $money, $type, $model_val, $store_id, $isSurplus = false) { $order_id = $order->id; $order_no = $order->order_no; $is_scan = $order instanceof ScanOrder ? 1 : 0; //改为大模型下 // $store_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? UserStringCodePlus::ALLIANCE_STORE_ID : $order->store_id; // $store_id = UserStringCodePlus::ALLIANCE_STORE_ID; // $user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? 0 : SaasUser::findUserIdByStoreIdAndSaasId($store_id, $saas_id); $user_id = SaasUser::findUserIdByStoreIdAndSaasId($order->store_id, $saas_id); $desc = self::TYPE_LIST[$type]; if (!$saas_id) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 受益人不存在,特殊联盟用户也不存在"], "app_debug.log"); return false; } if (bccomp($money, 0, 6) <= 0) { //debug_log([__METHOD__, __LINE__, "串码让利 【{$model_val}】,{$desc}分账金额:{$money} 有误"], "app_debug.log"); return false; } if ($isSurplus) { $s_order_log = UserStringCodeOrder::TYPE_LIST[$type] . '剩余让利用户'; } else { $s_order_log = UserStringCodePlus::MODEL_NAME_LIST[$model_val] . " " . UserStringCodeOrder::TYPE_LIST[$type]; } $award_type = PluginPoolConfig::getAwardType($order->store_id, $is_scan); if ($award_type == 2) { SaaSLeaguePriceLog::addLog($saas_id, $order->store_id, $money, UserStringCodeOrder::TYPE_LEAGUE_PRICE[$type], $order_id, $is_scan, 0, $s_order_log); } else { UserStringCodeOrder::set( $store_id, $user_id, $saas_id, $is_scan, $order_id, $money, UserStringCodeOrder::STATUS_SUCCESS, $s_order_log, $order_no, $type, $model_val, $order->store_id ); $wallet_user_id = $model_val == UserStringCodePlus::MODEL_ALLIANCE ? $saas_id : $user_id; $log_type = $is_scan ? UserWallet::TYPE_SCAN : UserWallet::TYPE_ORDER; $log_desc = UserWallet::TYPE_NAME_LIST[$log_type] . "【{$order_no}】 发放【{$s_order_log}】红包"; $source_table = $is_scan ? "\app\plugins\scanCodePay\models\Order" : "app\models\Order"; $currency = Currency::findOne(['code' => Currency::CURRENCY_STRING_CODE]); UserWallet::addLog($currency, $store_id, $wallet_user_id, $money, $log_desc, $log_type, $source_table, $order_id, $store_id, $type); return true; } } public static function getAwardTypeByKey() { $data[0] = '商城转赠'; $data[1] = '平台修改'; $data[2] = '下单返利'; $data[3] = '订单取消退回'; $data[4] = '下单抵扣'; $data[5] = '充值'; $data[6] = '商城提现'; foreach (self::TYPE_LIST as $key => $value) { $data[self::TYPE_LEAGUE_PRICE[$key]] = $value; } return $data; } }