From d784c030cf812c3e7933ef05e129ebdb12ab83a2 Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Tue, 17 Oct 2023 09:53:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=9A=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E7=BB=8F=E9=94=80=E5=95=86=E8=B5=A0=E9=80=81=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/admin/IndexController.php | 7 ++ .../src/models/CollectionRoomModel.php | 77 +++++++++++++++---- .../src/models/CollectionRoomRecordModel.php | 53 +++++++++++++ .../team-dividend/src/jobs/NewUpgrateJob.php | 2 +- .../src/observers/DealerObserver.php | 9 +-- 5 files changed, 128 insertions(+), 20 deletions(-) create mode 100644 plugins/collection-room/src/models/CollectionRoomRecordModel.php diff --git a/plugins/collection-room/src/admin/IndexController.php b/plugins/collection-room/src/admin/IndexController.php index a14cb03f..eb3fdcac 100644 --- a/plugins/collection-room/src/admin/IndexController.php +++ b/plugins/collection-room/src/admin/IndexController.php @@ -106,5 +106,12 @@ class IndexController extends BaseController{ } + public function test(){ + CollectionRoomModel::addInfo(1,2); + + + + + } } diff --git a/plugins/collection-room/src/models/CollectionRoomModel.php b/plugins/collection-room/src/models/CollectionRoomModel.php index 850d330d..a583d541 100644 --- a/plugins/collection-room/src/models/CollectionRoomModel.php +++ b/plugins/collection-room/src/models/CollectionRoomModel.php @@ -10,6 +10,8 @@ namespace Yunshop\CollectionRoom\models; use app\common\models\BaseModel; use app\common\models\Member; +use Illuminate\Support\Facades\DB; +use Yunshop\TeamDividend\models\TeamDividendLevelModel; class CollectionRoomModel extends BaseModel{ @@ -64,27 +66,76 @@ class CollectionRoomModel extends BaseModel{ return $list ? $list->toArray() : []; } /** - * Common: 给指定用户添加一幅画 + * Common: 给指定用户添加指定数量的画 * Author: wu-hui - * Time: 2023/09/27 18:57 - * @param $memberId + * Time: 2023/10/17 9:51 + * @param int $memberId + * @param int $sourceId + * @param int $source + * @param int $num + * @param int $type */ - public static function addInfo($memberId){ - // 判断:当前用户是否已经持有 未持有赠送 持有则不管 - $isHas = (int)self::uniacid()->where('member_id',$memberId)->value('id'); - \Log::debug('给指定用户添加一幅画 - 查询结果 - 典藏室id:',$isHas); - if($isHas <= 0){ - self::insert([ - 'uniacid' => \YunShop::app()->uniacid, - 'member_id' => $memberId, - 'created_at' => time() - ]); + public static function addInfo(int $memberId,int $sourceId,int $source = 0,int $num = 1,int $type=0){ + \Log::debug('添加画 - 开始处理:',[ + 'member_id' => $memberId, + 'sourceId' => $sourceId, + 'source' => $source, + 'num' => $num, + 'type' => $type, + ]); + DB::beginTransaction(); + try{ + $uniacid = \YunShop::app()->uniacid; + // 判断:当来源为【成为经销商赠送】时 判断当前等级是否已经赠送,已经赠送则不在重复赠送 + if($source == 0){ + $isHas = CollectionRoomRecordModel::getFirst([ + 'member_id' => $memberId, + 'source_id' => $sourceId, + 'source' => $source, + 'type' => 0 + ]); + if($isHas) throw new \Exception("经销商升级奖励已经发放,不在重复发放!"); + // 未领取 可以赠送,获取当前等级赠送的数量 + $num = (int)TeamDividendLevelModel::uniacid()->where('id',$sourceId)->value('upgrade_reward_draw'); + if($num <= 0) throw new \Exception('当前经销商等级不赠送数藏画'); + } + // 添加对应数量的画及其变更记录 + $recordData = []; + for($i = 1;$i <= $num;$i++){ + // 添加画 + $id = self::insertGetId([ + 'uniacid' => $uniacid, + 'member_id' => $memberId, + 'created_at' => time() + ]); + // 添加画变更记录 + $recordData[] = [ + 'uniacid' => $uniacid, + 'member_id' => $memberId, + 'collection_room_id' => $id, + 'type' => $type, + 'source' => $source, + 'source_id' => $sourceId, + 'created_at' => time(), + ]; + } + CollectionRoomRecordModel::insert($recordData); + + DB::commit(); + }catch(\Exception $e){ + \Log::debug('添加画 - 成为:',$e->getMessage()); + DB::rollBack(); } return; } + + + + + /** * Common: 一对一关联 - 用户信息表 * Author: wu-hui diff --git a/plugins/collection-room/src/models/CollectionRoomRecordModel.php b/plugins/collection-room/src/models/CollectionRoomRecordModel.php new file mode 100644 index 00000000..f4019188 --- /dev/null +++ b/plugins/collection-room/src/models/CollectionRoomRecordModel.php @@ -0,0 +1,53 @@ + 'datetime:Y-m-d H:i:s' + ]; + protected $fillable = [ + 'uniacid', + 'member_id', + 'collection_room_id', + 'type', + 'source', + 'source_id', + 'created_at', + ]; + + + /** + * Common: 根据条件获取一条数据 + * Author: wu-hui + * Time: 2023/10/17 9:23 + * @param $where + * @return array + */ + public static function getFirst($where){ + $first = self::uniacid()->where($where)->first(); + + return $first ? $first->toArray() : []; + } + + + + + + + + + +} \ No newline at end of file diff --git a/plugins/team-dividend/src/jobs/NewUpgrateJob.php b/plugins/team-dividend/src/jobs/NewUpgrateJob.php index 5158c9ef..77632555 100644 --- a/plugins/team-dividend/src/jobs/NewUpgrateJob.php +++ b/plugins/team-dividend/src/jobs/NewUpgrateJob.php @@ -431,7 +431,7 @@ class NewUpgrateJob implements ShouldQueue // 升级赠送权重值 (new WeightValue())->upgradeGiveInit($uid,(int)$level->id); // 升级赠送画 - // CollectionRoomModel::addInfo($member->uid); + CollectionRoomModel::addInfo($uid,(int)$level->id); } /** diff --git a/plugins/team-dividend/src/observers/DealerObserver.php b/plugins/team-dividend/src/observers/DealerObserver.php index b7317ac4..acb24559 100644 --- a/plugins/team-dividend/src/observers/DealerObserver.php +++ b/plugins/team-dividend/src/observers/DealerObserver.php @@ -46,12 +46,9 @@ class DealerObserver extends BaseObserver{ // 经销商等级变更 if((int)$model->uid > 0 && (int)$model->getOriginal('level') != (int)$model->level){ // 经销商升级赠送权重值处理 - (new WeightValue())->upgradeGiveInit($model->uid,(int)$model->level); - - - - // 会员升级经销商 赠送一幅画 - // CollectionRoomModel::addInfo((int)$model->uid); + (new WeightValue())->upgradeGiveInit((int)$model->uid,(int)$model->level); + // 会员升级经销商 赠送画 + CollectionRoomModel::addInfo((int)$model->uid,(int)$model->level); } }