| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\models\Level;
- use app\models\RcCommissionLog;
- use app\models\Recharge;
- use app\models\ReOrder;
- use app\models\SaasUser;
- use app\models\User;
- use yii\base\Model;
- class RechargeForm extends Model
- {
- public $id;
- public $store_id;
- public $pay_price;
- public $send_price;
- public $name;
- public $order_no;
- public $sort;
- public $user_id;
- public $is_delete;
- public $phone;
- public $send_integral;
- //搜索
- public $search_key;
- public $search_is_show;
- public $referral_commission;
- public $level_one_bonus;
- public $level_two_bonus;
- public $level_up;
- public $assign_member;
- public $target_type;
- const SCENARIO_ADD = 'add';
- const SCENARIO_EDIT = 'edit';
- const SCENARIO_DEL = 'del';
- const SCENARIO_LIST = 'list';
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['store_id', 'is_delete', 'sort', 'send_integral', 'level_up'], 'integer'],
- [['pay_price', 'send_price', 'level_one_bonus', 'level_two_bonus'], 'number'],
- [['name',], 'string', 'max' => 255],
- [['referral_commission',], 'string'],
- ['pay_price', 'compare', 'compareValue' => 0.01, 'operator' => '>='],
- ['is_delete', 'default', 'value'=> Recharge::IS_DELETE_NO],
- [['name', 'pay_price', 'send_price', 'sort'],'required', 'on'=> [self::SCENARIO_ADD, self::SCENARIO_EDIT]],
- [['id'],'required', 'on'=> [self::SCENARIO_DEL, self::SCENARIO_EDIT]],
- ['search_key', 'string', 'on' => self::SCENARIO_LIST]
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'store_id' => 'Store ID',
- 'pay_price' => '支付金额',
- 'send_price' => '赠送金额',
- 'name' => '充值名称',
- 'is_delete' => 'Is Delete',
- 'sort' => '权重',
- 'send_integral' => '赠送积分',
- ];
- }
- public function scenarios()
- {
- $scenarios = parent::scenarios();
- return $scenarios;
- }
- public function saveRecharge()
- {
- if ($this->validate()) {
- $t = \Yii::$app->db->beginTransaction();
- if ($this->scenario == self::SCENARIO_EDIT) {
- $model = Recharge::findOne(['id' => $this->id]);
- } else {
- $model = new Recharge();
- }
- $model->attributes = $this->attributes;
- if (!$model->save()) {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => $model->getErrorSummary(false)[0]
- ];
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '保存成功'
- ];
- } else {
- // 验证失败:$errors 是一个包含错误信息的数组
- return [
- 'code' => 1,
- "msg" => $this->getErrorSummary(false)[0]
- ];
- }
- }
- public function searchRecharge()
- {
- $levelType = Level::find()->where(['store_id' => get_store_id(), 'is_delete' => Level::NOT_DELETE])->asArray()->all();
- $query = Recharge::find();
- $query->where(['is_delete' => Recharge::IS_DELETE_NO, 'store_id' => $this->store_id])->orderBy("sort desc,id desc");
- // 搜索
- if ($this->search_key) {
- $query->andWhere(['like', 'name', $this->search_key]);
- }
- $list = pagination_make($query);
- foreach ($list['list'] as &$val) {
- $val['created_at'] = date('Y-m-d H:i:s', $val['created_at']);
- $referral_commission = json_decode($val['referral_commission'], true);
- if (is_array($referral_commission) && !empty($referral_commission)) {
- $combined_values = '';
- foreach ($referral_commission as $commission) {
- $combined_values .= $commission['value'] . ',';
- }
- $combined_values = rtrim($combined_values, ',');
- $val['referral_commission_number'] = $combined_values;
- }
- $assignMembers = [];
- $members = (json_decode($val['assign_member'], true));
- foreach ((array)$members as $memberId) {
- foreach ($levelType as $type) {
- if ($memberId == $type['level']) {
- $assignMembers[] = $type['name'];
- break;
- } else if ($memberId == 0) {
- $assignMembers[] = '所有人';
- break;
- }
- }
- }
- $val['assign_member_names'] = implode(', ', $assignMembers);
- foreach ($levelType as $type) {
- if ($val['level_up'] == $type['level']) {
- $val['level_up_name'] = $type['name'];
- break;
- }
- if ($val['level_up'] == 0) {
- $val['level_up_name'] = '无';
- break;
- }
- }
- }
- $recharge_setting = RechargeSettingForm::getRechargeSettingList();
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'data' => $list['list'],
- 'recharge_setting' => $recharge_setting,
- 'pageNo' => $list['pageNo'],
- 'level_type' => $levelType,
- 'totalCount' => $list['totalCount']
- ]
- ];
- }
- public function delRecharge()
- {
- if ($this->validate()) {
- $t = \Yii::$app->db->beginTransaction();
- if ($this->scenario !== self::SCENARIO_DEL) {
- return [
- 'code' => 1,
- 'msg' => '删除失败'
- ];
- }
- $model = Recharge::findOne(['id' => $this->id]);
- $model->is_delete = Recharge::IS_DELETE_YES;
- if (!$model || !$model->save()) {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => $model->getErrorSummary(false)[0]
- ];
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '删除成功'
- ];
- // 所有输入数据都有效 all inputs are valid
- } else {
- // 验证失败:$errors 是一个包含错误信息的数组
- return [
- 'code' => 1,
- "msg" => $this->getErrorSummary(false)[0]
- ];
- }
- }
- public static function getRechargeList()
- {
- return Recharge::find()->where(['is_delete' => Recharge::IS_DELETE_NO])->orderBy(['sort desc,id desc'])->select('*')->asArray()->all();
- }
- public function search()
- {
- $query = RcCommissionLog::find()
- ->alias('l')
- ->leftJoin(['u' => User::tableName()], 'l.user_id = u.id')
- ->leftJoin(['ro' => ReOrder::tableName()], 'l.order_id = ro.id')
- ->select([
- 'l.*',
- 'u.avatar_url',
- 'u.binding',
- 'u.nickname',
- 'ro.order_no',
- 'ro.pay_price',
- 'ro.send_price',
- ])
- ->andWhere(['ro.is_delete' => 0])
- ->orderBy(['l.id' => SORT_DESC]);
- if ($this->store_id > 0) {
- $query->andWhere(['ro.store_id' => $this->store_id]);
- }
- if ($this->user_id > 0) {
- $query->andWhere(['ro.user_id' => $this->user_id]);
- }
- if ($this->name) {
- $query->andWhere(['like', 'u.nickname', $this->name]);
- }
- if ($this->phone) {
- $query->andWhere(['like', 'u.binding', $this->phone]);
- }
- if ($this->order_no) {
- $query->andWhere(['like', 'ro.order_no', $this->order_no]);
- }
- $data = pagination_make($query);
- $data['data'] = $data['list'];
- unset($data['list']);
- $rechargeMap = Recharge::find()->where(['store_id' => $this->store_id])->indexBy('id')->all();
- foreach ($data['data'] as &$item) {
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- if (isset($rechargeMap[$item['recharge_id']])) {
- $item['recharge_name'] = $rechargeMap[$item['recharge_id']]['name'];
- }
- if ($item['bind_type'] == 2) {
- $item['parent_id_two'] = $item['parent_id'];
- $item['amount_two'] = $item['amount'];
- }
- if (!empty($item['parent_id']) && $item['bind_type'] == 1) {
- $user = User::findOne($item['parent_id']);
- if ($user && !empty($user['binding'])) {
- $saasUser = SaasUser::findOne(['mobile' => $user['binding']]);
- if ($saasUser) {
- $item['superior_nickname'] = $saasUser['name'];
- }
- }
- $userTwo = User::findOne($user['parent_id']);
- if ($userTwo && !empty($userTwo['binding'])) {
- $saasUser = SaasUser::findOne(['mobile' => $userTwo['binding']]);
- if ($saasUser) {
- $item['superior_nickname_two'] = $saasUser['name'];
- }
- }
- }
- if (!empty($item['parent_id_two']) && $item['bind_type'] == 2) {
- $userTwo = User::findOne($item['parent_id_two']);
- if ($userTwo && !empty($userTwo['binding'])) {
- $saasUser = SaasUser::findOne(['mobile' => $userTwo['binding']]);
- if ($saasUser) {
- $item['superior_nickname_two'] = $saasUser['name'];
- }
- }
- $find = RcCommissionLog::findOne(['order_id' => $item['order_id'], 'user_id' => $item['user_id'], 'bind_type' => 1]);
- $user = User::findOne($find['parent_id']);
- if ($user && !empty($user['binding'])) {
- $saasUser = SaasUser::findOne(['mobile' => $user['binding']]);
- if ($saasUser) {
- $item['superior_nickname'] = $saasUser['name'];
- }
- }
- }
- $item['level_one_bonus'] = ($item['bind_type'] == 1 && $item['type'] != 21) ? $item['amount'] : 0;
- $item['level_two_bonus'] = ($item['bind_type'] == 2) ? $item['amount_two'] : 0;
- $item['referral_commission'] = ($item['type'] == 21) ? $item['amount'] : 0;
- }
- return [
- 'code' => 0,
- 'data' => $data,
- 'sql' => $query->createCommand()->getRawSql(),
- ];
- }
- }
|