Quellcode durchsuchen

feat(order): 添加共富区订单幸福币发放和结算功能

- 新增 UserSignXfb 模型用于管理用户幸福币记录
- 新增 UserSignXfbDao 数据访问对象
- 新增 UserSignXfbRepository 仓库类实现幸福币创建和结算逻辑
- 在 StoreOrderRepository 中集成幸福币发放功能
- 实现订单结算时的幸福币结算处理
- 添加购买共富区商品获得幸福币的业务逻辑
shichen vor 3 Monaten
Ursprung
Commit
a4aa2386b6

+ 20 - 0
app/common/dao/user/UserSignXfbDao.php

@@ -0,0 +1,20 @@
1
+<?php
2
+
3
+namespace app\common\dao\user;
4
+
5
+use app\common\dao\BaseDao;
6
+use app\common\model\BaseModel;
7
+use app\common\model\user\UserSignVr;
8
+use app\entity\CommonEntity;
9
+use app\entity\data\user\UserSignVrEntity;
10
+
11
+class UserSignXfbDao extends BaseDao
12
+{
13
+    /**
14
+     * @return BaseModel
15
+     */
16
+    protected function getModel(): string
17
+    {
18
+        return UserSignVr::class;
19
+    }
20
+}

+ 19 - 0
app/common/model/user/UserSignXfb.php

@@ -0,0 +1,19 @@
1
+<?php
2
+
3
+namespace app\common\model\user;
4
+
5
+use app\common\model\BaseModel;
6
+
7
+class UserSignXfb extends BaseModel
8
+{
9
+
10
+    public static function tablePk(): string
11
+    {
12
+        return 'id';
13
+    }
14
+
15
+    public static function tableName(): string
16
+    {
17
+        return 'user_sign_xfb';
18
+    }
19
+}

+ 25 - 0
app/common/repositories/store/order/StoreOrderRepository.php

@@ -86,6 +86,7 @@ use app\common\repositories\user\UserSignHongbaoRepository;
86 86
 use app\common\repositories\user\UserSignJingdouRepository;
87 87
 use app\common\repositories\user\UserSignScoreRepository;
88 88
 use app\common\repositories\user\UserSignVrRepository;
89
+use app\common\repositories\user\UserSignXfbRepository;
89 90
 use app\common\repositories\user\UserThirdRepository;
90 91
 use app\common\repositories\user\UserWithdrawalLimitRecordRepository;
91 92
 use app\common\repositories\wechat\RoutineQrcodeRepository;
@@ -11735,6 +11736,24 @@ class StoreOrderRepository extends BaseRepository
11735 11736
                 '购买共富区商品获得PV'
11736 11737
             );
11737 11738
 
11739
+            // 发放幸福币
11740
+            $xfbData = [
11741
+                'uid' => $sharedProsperityUserEntity->getUserId(),
11742
+                'before' => 0,
11743
+                'number' => $storeOrderEntity->getPayPrice(),
11744
+                'after' => 0,
11745
+                'mark' => '购买共富区商品获得幸福币:' . $storeOrderEntity->getPayPrice(),
11746
+                'desc' => '购买共富区商品获得幸福币',
11747
+                'order_sn' => $storeOrderEntity->getOrderSn(),
11748
+                'order_type' => $storeOrderEntity->getOrderType(),
11749
+                'type' => 1,
11750
+                'addtime' => time()
11751
+            ];
11752
+            /** @var UserSignXfbRepository $xfbRepository */
11753
+            $xfbRepository = app()->make(UserSignXfbRepository::class);
11754
+            $xfbRepository->create($xfbData);
11755
+
11756
+
11738 11757
             if (!empty($sharedProsperityUserEntity->getParentId())) {
11739 11758
                 // 如果 共富区推荐人 不是平台,则为 推荐人发放 推荐奖励
11740 11759
                 $sharedProsperityUserEntityByParent = $sharedProsperityUserRepository->getSharedProsperityUserEntityByUserId($sharedProsperityUserEntity->getParentId());
@@ -12210,6 +12229,12 @@ class StoreOrderRepository extends BaseRepository
12210 12229
                     }, $userWithdrawalLimitRecordEntityList);
12211 12230
                     $userWithdrawalLimitRecordRepository->executeByIdList($userWithdrawalLimitRecordIdList);
12212 12231
                 }
12232
+
12233
+                // 结算幸福币
12234
+                /** @var UserSignXfbRepository $xfbRepository */
12235
+                $xfbRepository = app()->make(UserSignXfbRepository::class);
12236
+                // 结算
12237
+                $xfbRepository->settlement($unsettledOrderSnList);
12213 12238
             } catch (DbException $e) {
12214 12239
                 throw new ValidateException('订单结算失败');
12215 12240
             }

+ 49 - 0
app/common/repositories/user/UserSignXfbRepository.php

@@ -0,0 +1,49 @@
1
+<?php
2
+
3
+namespace app\common\repositories\user;
4
+
5
+use app\common\dao\user\UserDao;
6
+use app\common\dao\user\UserSignVrDao;
7
+use app\common\enum\user\UserSignVrEnum;
8
+use app\common\repositories\BaseRepository;
9
+use app\common\repositories\store\order\StoreOrderRepository;
10
+use app\entity\data\user\UserEntity;
11
+use app\entity\data\user\UserSignVrEntity;
12
+use think\db\exception\DbException;
13
+use think\exception\ValidateException;
14
+
15
+class UserSignXfbRepository extends BaseRepository
16
+{
17
+    public function __construct(UserSignVrDao $dao)
18
+    {
19
+        $this->dao = $dao;
20
+    }
21
+
22
+    public function create($data)
23
+    {
24
+        return $this->dao->create($data);
25
+    }
26
+
27
+    // 结算
28
+    public function settlement($orderSn)
29
+    {
30
+        foreach ($orderSn as $item) {
31
+            // 日志模型
32
+            $logModel = $this->dao->getWhere(['order_sn' => $item]);
33
+            // 用户模型
34
+            $userDao = new UserDao();
35
+            $userModel = $userDao->getWhere(['uid'=>$logModel->uid]);
36
+
37
+            // 修改日志表字段
38
+            $logModel->before = $userModel->xfb;
39
+            $logModel->after = $userModel->xfb + $logModel->number;;
40
+            $logModel->settlement_time = date('Y-m-d H:i:s');
41
+            $logModel->save();
42
+
43
+            // 修改用户表字段
44
+            $userModel->xfb = $userModel->xfb + $logModel->number;
45
+            $userModel->save();
46
+        }
47
+    }
48
+
49
+}