From eed4a097fd18f505f270fee18f0b6b4d6b94850f Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Wed, 19 Jun 2024 16:59:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=9A=E5=BC=80=E9=80=9A?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E8=82=A1=E4=B8=9C=20=20=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E9=A4=90=E8=B4=B9=E7=A7=AF=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MerchantShareholderIntegralDao.php | 48 +++++++++++ .../merchant/MerchantShareholderIntegral.php | 23 ++++++ .../MerchantShareholderIntegralRepository.php | 29 +++++++ .../MerchantShareholderLevelRepository.php | 80 ++++++++++++++++--- .../MerchantShareholderRepository.php | 65 +++++++++++++-- .../system/merchant/ShareholderLevel.php | 6 ++ 6 files changed, 236 insertions(+), 15 deletions(-) create mode 100644 app/common/dao/system/merchant/MerchantShareholderIntegralDao.php create mode 100644 app/common/model/system/merchant/MerchantShareholderIntegral.php create mode 100644 app/common/repositories/system/merchant/MerchantShareholderIntegralRepository.php diff --git a/app/common/dao/system/merchant/MerchantShareholderIntegralDao.php b/app/common/dao/system/merchant/MerchantShareholderIntegralDao.php new file mode 100644 index 0000000..02a365e --- /dev/null +++ b/app/common/dao/system/merchant/MerchantShareholderIntegralDao.php @@ -0,0 +1,48 @@ +when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){ + $query->where('id', (int)$params['id']); + }) + ->when(isset($params['uid']) && $params['uid'] !== '',function($query) use ($params){ + $query->where('uid', (int)$params['uid']); + }) + ->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){ + $query->where('mer_id', (int)$params['mer_id']); + }) + ->when(isset($params['level_id']) && $params['level_id'] !== '',function($query) use ($params){ + $query->where('level_id', (int)$params['level_id']); + }) + ->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){ + $query->where('status', (int)$params['status']); + }) + ->order('create_time DESC,id DESC'); + } + + + + + + + + + +} diff --git a/app/common/model/system/merchant/MerchantShareholderIntegral.php b/app/common/model/system/merchant/MerchantShareholderIntegral.php new file mode 100644 index 0000000..8eb930d --- /dev/null +++ b/app/common/model/system/merchant/MerchantShareholderIntegral.php @@ -0,0 +1,23 @@ +dao = $dao; + } + + /** + * Common: 公共查询模型 + * Author: wu-hui + * Time: 2024/06/19 16:04 + * @param $search + * @return \app\common\model\system\merchant\MerchantShareholderIntegral + */ + public function getSearchModel($search){ + return $this->dao->searchModel($search); + } + + + + +} diff --git a/app/common/repositories/system/merchant/MerchantShareholderLevelRepository.php b/app/common/repositories/system/merchant/MerchantShareholderLevelRepository.php index 209479d..b68c1c8 100644 --- a/app/common/repositories/system/merchant/MerchantShareholderLevelRepository.php +++ b/app/common/repositories/system/merchant/MerchantShareholderLevelRepository.php @@ -86,6 +86,60 @@ class MerchantShareholderLevelRepository extends BaseRepository{ ->getSearch(['mer_id' => request()->merId(), 'status' => 1, 'is_del' => 0]) ->column('title as label,coupon_id as value'); })->col(24)->multiple(true)->filterable(true), + // 餐费积分 + Elm::radio('integral_switch','是否赠送餐费积分',0) + ->setOptions([['value' => 0,'label' => '关闭'],['value' => 1,'label' => '开启']]) + ->control([ + [ + 'value' => 1, + 'rule' => [ + Elm::radio('integral_give_type','赠送方式',0) + ->setOptions([['value' => 0,'label' => '一次性全部赠送'],['value' => 1,'label' => '周期赠送']]) + ->control([ + [ + 'value' => 0, + 'rule' => [ + Elm::number('integral_give_num','赠送数量')->required()->min(0)->step(0.01)->precision(2)->col(24), + Elm::number('integral_overdue_day','过期时间(天)')->required()->min(0)->max(50000)->col(24)->appendRule('suffix',[ + 'type' => 'div', + 'style' => ['color' => '#999999'], + 'domProps' => [ + 'innerHTML' => '赠送后多少天过期!为0则永不过期', + ] + ]), + ] + ], + [ + 'value' => 1, + 'rule' => [ + Elm::number('integral_cycle_num','周期数量')->required()->min(1)->max(100)->col(12), + Elm::number('integral_give_num','每期赠送数量')->required()->min(0)->step(0.01)->precision(2)->col(12)->appendRule('suffix',[ + 'type' => 'div', + 'style' => ['color' => '#999999'], + 'domProps' => [ + 'innerHTML' => '每个周期赠送的数量!', + ] + ]), + Elm::number('integral_give_day','周期间隔(天)')->required()->min(0)->max(100)->col(24)->appendRule('suffix',[ + 'type' => 'div', + 'style' => ['color' => '#999999'], + 'domProps' => [ + 'innerHTML' => '多少天为一个周期;例:填写10,则10天为一个周期;7月1日12时12分成为共创股东并且支付成功,则在7月11日12时12分解冻第二笔餐费积分', + ] + ]), + Elm::number('integral_overdue_day','过期时间')->required()->min(0)->max(50000)->col(24)->appendRule('suffix',[ + 'type' => 'div', + 'style' => ['color' => '#999999'], + 'domProps' => [ + 'innerHTML' => '每个周期解冻后多少天过期!为0则永不过期', + ] + ]), + ] + ], + ]), + ] + ], + ]), ]; $form->setRule($rules); @@ -106,16 +160,22 @@ class MerchantShareholderLevelRepository extends BaseRepository{ if($params['weight'] <= 0) throw new ValidateException('等级权重必须大于0!'); // 数据生成 $data = [ - 'title' => $params['title'], - 'weight' => $params['weight'], - 'mer_quota' => $params['mer_quota'] ?? 0, - 'price' => $params['price'] ?? 0, - 'quota' => $params['quota'], - 'vegetable_quota' => $params['vegetable_quota'], - 'oil_quota' => $params['oil_quota'], - 'wine_quota' => $params['wine_quota'], - 'coupon_ids' => is_array($params['coupon_ids']) ? implode(',',$params['coupon_ids']) : $params['coupon_ids'], - 'merchant_type' => $params['merchant_type'], + 'title' => $params['title'], + 'weight' => $params['weight'], + 'mer_quota' => $params['mer_quota'] ?? 0, + 'price' => $params['price'] ?? 0, + 'quota' => $params['quota'], + 'vegetable_quota' => $params['vegetable_quota'], + 'oil_quota' => $params['oil_quota'], + 'wine_quota' => $params['wine_quota'], + 'coupon_ids' => is_array($params['coupon_ids']) ? implode(',',$params['coupon_ids']) : $params['coupon_ids'], + 'merchant_type' => $params['merchant_type'], + 'integral_switch' => $params['integral_switch'], + 'integral_give_type' => $params['integral_give_type'], + 'integral_give_num' => $params['integral_give_num'], + 'integral_give_day' => $params['integral_give_day'], + 'integral_overdue_day' => $params['integral_overdue_day'], + 'integral_cycle_num' => $params['integral_cycle_num'] ]; // 判断:权重值是否已经存在 $isHas = $this->getSearchModel(['merchant_type' => $params['merchant_type'],'weight' => $params['weight']]) diff --git a/app/common/repositories/system/merchant/MerchantShareholderRepository.php b/app/common/repositories/system/merchant/MerchantShareholderRepository.php index 0f09c24..ab6f90e 100644 --- a/app/common/repositories/system/merchant/MerchantShareholderRepository.php +++ b/app/common/repositories/system/merchant/MerchantShareholderRepository.php @@ -5,6 +5,7 @@ namespace app\common\repositories\system\merchant; use app\common\dao\system\merchant\MerchantShareholderDao; use app\common\model\marketing\activity\Activity; use app\common\model\system\merchant\MerchantShareholder; +use app\common\model\system\merchant\MerchantShareholderIntegral; use app\common\model\user\ExchangeQuotaRecord; use app\common\repositories\BaseRepository; use app\common\repositories\store\coupon\StoreCouponRepository; @@ -205,9 +206,9 @@ class MerchantShareholderRepository extends BaseRepository{ app()->make(StoreCouponRepository::class)->sendCoupon($coupon, $uid,StoreCouponUserRepository::SEND_TYPE_BUY, $params); } } - - - // 修改信息 + // 是否赠送餐费积分 + if((int)$levelInfo['integral_switch'] == 1) $this->giveIntegral($info,$levelInfo); + // 修改信息加入信息 MerchantShareholder::update([ 'price' => $levelInfo['price'], 'quota' => $levelInfo['quota'], @@ -218,16 +219,70 @@ class MerchantShareholderRepository extends BaseRepository{ 'status' => 1, ],['id' => $id]); - Db::commit(); }catch(\Exception $e){ Db::rollback(); - Log::info('支付成功处理加入成功后的信息 - 错误: '.var_export([ + Log::info('共创股东支付成功 - 处理加入成功后的信息 - 错误: '.var_export([ 'id' => $id, 'msg' => $e->getMessage() ],1)); } } + /** + * Common: 赠送餐费积分 + * Author: wu-hui + * Time: 2024/06/19 16:48 + * @param array $info + * @param array $levelInfo + * @return bool + */ + public function giveIntegral(array $info,array $levelInfo){ + $giveType = $levelInfo['integral_give_type'] ?? 0;// 赠送方式:0=一次性赠送,1=周期赠送 + $giveNum = $levelInfo['integral_give_num'] ?? 0;// 赠送数量 + $giveDay = $levelInfo['integral_give_day'] ?? 0;// 周期间隔(天) + $giveOverdueDay = $levelInfo['integral_overdue_day'] ?? 0;// 领取(解冻)后多少天过期 + $cycleNum = $levelInfo['integral_cycle_num'] ?? 1;// 周期数量 + // 根据赠送方式赠送积分;赠送方式:0=一次性赠送,1=周期赠送 + $insertData = [];// 赠送记录新增列表 + if($giveType == 1){ + // 周期赠送 + $expectThawTime = date("Y-m-d H:i:s",time());// 第一期预计解冻时间 + $expectOverdueTime = date("Y-m-d H:i:s",strtotime("+{$giveOverdueDay} day"));// 第一期预计过期时间 + // 循环处理 + for($i = 1;$i <= $cycleNum;$i++){ + $insertData[] = [ + 'uid' => $info['uid'], + 'mer_id' => $info['mer_id'], + 'level_id' => $info['level_id'], + 'integral_total' => $giveNum, + 'status' => $i == 1 ? 1 : 0,// 第一期默认直接解冻 + 'expect_thaw_time' => $expectThawTime, + 'real_thaw_time' => $i == 1 ? $expectThawTime : null,// 第一期默认直接解冻, + 'expect_overdue_time' => $expectOverdueTime, + ]; + // 预计解冻和过期时间增加 + $expectThawTime = date("Y-m-d H:i:s",strtotime($expectThawTime." +{$giveDay} day"));// 第一期预计解冻时间 + $expectOverdueTime = date("Y-m-d H:i:s",strtotime($expectOverdueTime." +{$giveOverdueDay} day"));// 第一期预计过期时间 + } + }else{ + // 一次性全部赠送 + $insertData[] = [ + 'uid' => $info['uid'], + 'mer_id' => $info['mer_id'], + 'level_id' => $info['level_id'], + 'integral_total' => $giveNum, + 'status' => 1, + 'expect_thaw_time' => date("Y-m-d H:i:s",time()), + 'real_thaw_time' => date("Y-m-d H:i:s",time()), + 'expect_overdue_time' => $giveOverdueDay > 0 ? date("Y-m-d H:i:s",strtotime("+{$giveOverdueDay} day")) : '', + ]; + } + + // 记录 + if(count($insertData) > 0) MerchantShareholderIntegral::insertAll($insertData); + + return true; + } /** * Common: 各种额度变更(赠送变更) * Author: wu-hui diff --git a/app/controller/admin/system/merchant/ShareholderLevel.php b/app/controller/admin/system/merchant/ShareholderLevel.php index fb40524..c86cf50 100644 --- a/app/controller/admin/system/merchant/ShareholderLevel.php +++ b/app/controller/admin/system/merchant/ShareholderLevel.php @@ -67,6 +67,12 @@ class ShareholderLevel extends BaseController{ 'wine_quota', 'coupon_ids', 'merchant_type', + 'integral_switch', + 'integral_give_type', + 'integral_give_num', + 'integral_give_day', + 'integral_overdue_day', + 'integral_cycle_num' ]); $this->repository->submitEditFormData($params);