| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- namespace addons\Mch\common\models;
- use common\enums\StatusEnum;
- use common\models\base\BaseActiveRecord;
- use Yii;
- /**
- * This is the model class for table "{{%addons_mch_settings}}".
- *
- * @property int $id
- * @property int $mall_id
- * @property int $mch_id
- * @property int $individual_fee_setting 独立手续费设置
- * @property int $store_service_fee 是否收取服务费,1:收取;0:不收取
- * @property float $store_service_ratio 门店服务费比例
- * @property int $store_settle_type 服务费计算方式,1:门店商品售价(分佣平台承担);2:订单实际支付金额(分佣平台承担);3:商品成本+运费(不包含服务费)(分佣平台承担);4:订单实际支付减去(分销商提成、经销商提成、区域代理、股东分红)
- * @property int $store_settle_scene 服务费计算触发场景,1:订单支付;2:订单完成
- * @property string|null $store_commission_authority 分销/营销权限,存 json,key 区别各个不同应用
- * @property float $cachier_service_ratio 收银台服务费比例
- * @property int $cashier_member_status 是否启用会员价,1:启用;0:不启用
- * @property string|null $cashier_member_settings 会员各个等级比例设置,存 json
- * @property int $cashier_distribution_is_enable 是否开启分销设置,1:是;0:否
- * @property string|null $cashier_distribution_settings 分销各个等级佣金比例设置,存 json
- * @property int $cashier_agent_is_enable 是否开启经销设置,1:是;0:否
- * @property string|null $cashier_agent_settings 经销各个等级佣金比例设置,存 json
- * @property int $status 状态,-1:已删除;0:禁用;1:正常
- * @property int $created_at
- * @property int $updated_at
- * @property int $is_balance_cash_service_fee 商户提现手续费独立设置,1:开启;0:关闭
- * @property float $balance_cash_service_fee 商户提现手续费
- */
- class MchSettings extends BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_mch_settings}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'mch_id'], 'required'],
- [['mall_id', 'mch_id', 'individual_fee_setting', 'store_service_fee', 'store_settle_type', 'store_settle_scene', 'cashier_member_status', 'cashier_distribution_is_enable', 'cashier_agent_is_enable', 'status', 'created_at', 'updated_at', 'is_balance_cash_service_fee'], 'integer'],
- [['store_service_ratio', 'cachier_service_ratio', 'balance_cash_service_fee'], 'number'],
- [['store_commission_authority', 'cashier_member_settings', 'cashier_distribution_settings', 'cashier_agent_settings'], 'string'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => '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;
- }
- }
|