Browse Source

update: 主要更新-- 累计消费与会员等级

shizhongqi 4 months ago
parent
commit
0651c323d5

+ 9 - 1
server/帐号数据.md

@@ -1,3 +1,11 @@
+### 测试账号
+小米手机 ---- 17189513228
+vivo手机 ----  
+华为手机 ---- 17187822038    用户名:奥斯
+荣耀手机 ---- 17187822032    
+
+17189512989
+
 ### 配置
 
 小票机
@@ -9,4 +17,4 @@ daxht6jf
 nm6tczaf
 
 云喇叭
-5022107180012
+5022107180012

+ 1 - 0
server/有用的信息.md

@@ -18,6 +18,7 @@
 	[https://open.weixin.qq.com](https://open.weixin.qq.com/)微信开放平台
 
 
+### gitLab
 git.huaml.com
 zhh 
 xhb*2025

+ 122 - 1
任务小笔记/26年/03-05:累计消费与会员等级.md

@@ -10,4 +10,125 @@
 - 下图,更新累计消费的动作不会更新: 成长值growth与积分integral
 ![[Pasted image 20260305095930.png]]
 
- - 写个脚本,把所有客户的消费记录和成长值、积分刷新刷对一下(等级也要刷新对)
+ - 写个脚本,把所有客户的累计消费和成长值、积分刷新刷对一下(等级也要刷新对)
+
+#### 积分与成长记录表--重新设计
+```
+CREATE TABLE `xhUserGrowth` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `shopId` int(11) NOT NULL DEFAULT '0',
+  `userId` int(11) NOT NULL DEFAULT '0',
+  `userName` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名',
+  `event` varchar(200) NOT NULL DEFAULT '' COMMENT '原由,事项,解释',
+  `relateId` int(11) NOT NULL DEFAULT '0' COMMENT '关联id',
+  `relateType` tinyint NOT NULL DEFAULT 0 COMMENT '关联的表或类别:0.无关联 1.零售订单',
+  `num` float DEFAULT '0' COMMENT '增加或减少的成长值',
+  `growth` float DEFAULT NULL COMMENT '变动后的成长总值',
+  `operatorId` int(11) NOT NULL DEFAULT '0' COMMENT '操作人,adminId',
+  `remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
+  `createTime` datetime NOT NULL COMMENT '创建时间',
+  `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_s_u` (`shopId`,`userId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户成长值记录表';
+
+
+
+CREATE TABLE `xhUserIntegral` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `shopId` int(11) NOT NULL DEFAULT '0',
+  `userId` int(11) NOT NULL DEFAULT '0',
+  `userName` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名',
+  `event` varchar(200) NOT NULL DEFAULT '' COMMENT '原由,事项,解释',
+  `relateId` int(11) NOT NULL DEFAULT '0' COMMENT '关联id',
+  `relateType` tinyint NOT NULL DEFAULT 0 COMMENT '关联的表或类别:0.无关联 1.零售订单',
+  `num` float DEFAULT '0' COMMENT '增加或减少的积分',
+  `integral` float DEFAULT NULL COMMENT '变动后的积分总值',
+  `operatorId` int(11) NOT NULL DEFAULT '0' COMMENT '操作人,adminId',
+  `remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
+  `createTime` datetime NOT NULL COMMENT '创建时间',
+  `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+  PRIMARY KEY (`id`),
+  KEY `idx_s_u` (`shopId`,`userId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户积分记录表';
+```
+#### 积分与成长值字段修改为 浮点数
+```
+1. xhCustom 表
+ALTER TABLE xhCustom CHANGE integral integral float DEFAULT 0 COMMENT '积分';
+ALTER TABLE xhCustom CHANGE growth growth float DEFAULT 0 COMMENT '成长值';
+
+2. xhUserGrowth 表
+ALTER TABLE xhUserGrowth CHANGE growth growth float DEFAULT 0 COMMENT '成长值';
+xhUserGrowth -- num
+ALTER TABLE xhUserGrowth CHANGE num  num float DEFAULT 0 COMMENT '增加或减少的成长值';
+```
+
+
+#### 使用监听者模式来实现积分与成长值的记录
+Custom.php
+```
+<?php
+namespace bizHd\custom\models;
+use bizHd\base\models\Base;
+use bizHd\custom\observers\BuyAmountObserver;
+
+class Custom extends Base
+{
+	// 加上了 xhCustom 的 buyAmount 变动监听(观察者模式),并处理了联动增减逻 -- 该监听依赖 AR 事件触发(如 $model->save())。
+	// 若某处直接用 updateAll()/updateByCondition() 直接改 buyAmount,不会触发该观察者。
+	public function behaviors()
+	{
+		return [
+			BuyAmountObserver::class,
+		];
+	}
+
+	public static function tableName()
+	{
+		return 'xhCustom';
+	}
+
+}
+
+```
+
+
+BuyAmountObserver.php
+```
+<?php
+
+namespace bizHd\custom\observers;
+
+use yii\base\Behavior;
+use yii\db\ActiveRecord;
+use yii\db\AfterSaveEvent;
+
+class BuyAmountObserver extends Behavior
+{
+	public function events()
+	{
+		return [
+			ActiveRecord::EVENT_AFTER_INSERT => 'onAfterSave',
+			ActiveRecord::EVENT_AFTER_UPDATE => 'onAfterSave',
+		];
+	}
+
+	public function onAfterSave(AfterSaveEvent $event)
+	{
+		/** @var ActiveRecord $model */
+		$model = $this->owner;
+		$oldBuyAmount = isset($event->changedAttributes['buyAmount']) ? (string) $event->changedAttributes['buyAmount'] : '0';
+		$newBuyAmount = (string) $model->getAttribute('buyAmount');
+		$delta = bcsub($newBuyAmount, $oldBuyAmount, 2);
+		if (bccomp($delta, '0', 2) === 0) {
+			return;
+		}
+
+		$model::updateAllCounters([
+			'integral' => (float) $delta,
+			'growth' => (float) $delta,
+		], ['id' => $model->getPrimaryKey()]);
+	}
+}
+```

+ 9 - 0
任务小笔记/26年/03-13:预售自动结束.md

@@ -0,0 +1,9 @@
+### 表
+```
+# xhGhsItem -- 花材表
+
+`presell` tinyint(4) NOT NULL DEFAULT '0' COMMENT '预售 0未开启 1开启',
+`presellDate` varchar(800) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '预售日期',
+
+```
+