'ID', 'mall_id' => 'Mall ID', 'mch_id' => 'Mch ID', 'store_service_fee' => '是否收取服务费,1:收取;0:不收取', 'store_service_ratio' => '门店服务费比例', 'store_settle_type' => '服务费计算方式,1:门店商品售价(分佣平台承担);2:订单实际支付金额(分佣平台承担);3:商品成本+运费(不包含服务费)(分佣平台承担);4:订单实际支付减去(分销商提成、经销商提成、区域代理、股东分红)', 'store_settle_scene' => '服务费计算触发场景,1:订单支付;2:订单完成', 'store_commission_authority' => '分销/营销权限,存 json,key 区别各个不同应用', 'cachier_service_ratio' => '收银台服务费比例', 'cashier_member_status' => '是否启用会员价,1:启用;0:不启用', 'cashier_member_settings' => '会员各个等级比例设置,存 json', 'cashier_distribution_is_enable' => '是否开启分销设置,1:是;0:否', 'cashier_distribution_settings' => '分销各个等级佣金比例设置,存 json', 'cashier_agent_is_enable' => '是否开启经销设置,1:是;0:否', 'cashier_agent_settings' => '经销各个等级佣金比例设置,存 json', 'status' => '状态,-1:已删除;0:禁用;1:正常', 'created_at' => 'Created At', 'updated_at' => 'Updated At', 'balance_cash_service_fee' => '商户提现手续费%', 'is_balance_cash_service_fee' => '商户提现手续费独立设置,1:开启;0:关闭', ]; } public static function setData(int $mall_id, array $data) { $query = self::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED]); if (!empty($data['id'])) { $model = $query->andWhere(['id' => $data['id']])->one(); if (empty($model)) { self::$static_error = '数据异常'; return false; } } elseif (!empty($data['mch_id'])) { $model = $query->andWhere(['mch_id' => $data['mch_id']])->one(); if (empty($model)) { $model = new self(); $model->loadDefaultValues(); $model->mall_id = $mall_id; $model->status = StatusEnum::ENABLED; } unset($data['id']); } else { self::$static_error = '参数异常'; return false; } $json_keys = ['store_commission_authority', 'cashier_member_settings', 'cashier_distribution_settings', 'cashier_agent_settings']; foreach ($data as $key => $val) { if (in_array($key, $json_keys) && is_array($val)) { $val = json_encode($val); } $model->$key = $val; } $res = $model->save(); if (!$res) { self::$static_error = $model->getErrorMessage(); return false; } return $model; } public static function saveStoreSetting(int $mall_id, array $data) { $transaction = \Yii::$app->db->beginTransaction(); $store_info = [ 'shop_status' => $data['shop_status'], 'business_time_start' => $data['business_time_start'], 'business_time_end' => $data['business_time_end'], 'store_background' => $data['store_background']??'', 'id' => $data['mch_id'], 'mall_id' => $mall_id, ]; $store_res = Mch::setData($store_info); if (false === $store_res) { $transaction->rollBack(); self::$static_error = Mch::getStaticError(); return false; } $store_commission_authority = [ 'distribution' => 0, 'area' => 0, 'agent' => 0, 'boss' => 0, ]; $cashier_info = [ 'individual_fee_setting' => $data['individual_fee_setting'], 'store_service_fee' => $data['store_service_fee'], 'store_service_ratio' => $data['store_service_ratio'], 'store_settle_type' => $data['store_settle_type'], 'store_settle_scene' => $data['store_settle_scene'], 'is_balance_cash_service_fee' => $data['is_balance_cash_service_fee']??0, 'balance_cash_service_fee' => $data['balance_cash_service_fee']??0, 'store_commission_authority' => array_merge($store_commission_authority, $data['store_commission_authority'] ?? []), 'mch_id' => $data['mch_id'], ]; $setting_res = self::setData($mall_id, $cashier_info); if (false === $setting_res) { $transaction->rollBack(); return false; } if (!empty($data['password'])) { $admin_model = MchAdmin::findOne(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED, 'username' => $store_res->shop_mobile]); if (empty($admin_model)) { $transaction->rollBack(); self::$static_error = '多商户管理员账号不存在'; return false; } $admin_model->password = \Yii::$app->security->generatePasswordHash($data['password']); $admin_model->updated_at = time(); $admin_res = $admin_model->save(); if (empty($admin_model)) { $transaction->rollBack(); self::$static_error = $admin_model->getErrorMessage(); return false; } } $transaction->commit(); return true; } }