WIN-2308041133\Administrator hai 4 meses
pai
achega
2d4a1d2a4f

+ 4 - 0
app/common/repositories/user/UserBillRepository.php

@@ -95,6 +95,8 @@ class UserBillRepository extends BaseRepository
 //            'award/unclaimed_range' =>'下单商品获得冻结份额',
             'award/thaw_range' =>'下级下单解冻份额',
             'award/thaw_brokerage' =>'解冻冻结奖金',
+            'award_range/sys_dec_range' => '系统减少分红额度',
+            'award_range/sys_inc_range' => '系统增加分红额度',
         ],
         'award_integral' =>[
             'award/spread_oil_integral' =>'下级节能油订单获得分红积分',
@@ -104,6 +106,8 @@ class UserBillRepository extends BaseRepository
             'award/pack_integral' =>'礼包分红积分',
             'award/confirm_oil_integral' =>'核销节能油获得积分',
             'award/freeze_integral' =>'解冻奖金为分红积分',
+            'award_integral/sys_dec_integral' => '系统减少分红积分',
+            'award_integral/sys_inc_integral' => '系统增加分红积分',
         ],
         'award_unclaimed_range' =>[
             'award/unclaimed_range' =>'下单商品获得冻结份额',

+ 146 - 0
app/common/repositories/user/UserRepository.php

@@ -664,6 +664,54 @@ class UserRepository extends BaseRepository
             Elm::number('now_money', '金额')->required()->min(0)->max(999999)
         ])->setTitle('修改用户余额');
     }
+    /**
+     * 创建一个表单来修改当前用户的分红积分
+     *
+     * 该方法通过Elm组件库创建一个表单,用于系统后台修改用户余额。表单包含两个字段:
+     * 1. 修改类型:通过单选按钮(radio)选择是增加还是减少余额;
+     * 2. 修改金额:通过数字输入框(number)输入具体的金额。
+     * 表单提交的URL是根据给定的用户ID动态生成的,确保了表单操作的特定性。
+     *
+     * @param int $id 用户ID,用于构建表单提交的URL,确保操作针对特定用户。
+     * @return \Encore\Admin\Widgets\Form|Form
+     */
+    public function changeAwardIntegralForm($id)
+    {
+        // 创建表单,并设置表单提交的URL
+        return Elm::createForm(Route::buildUrl('systemUserChangeAwardIntegral', compact('id'))->build(), [
+            // 创建单选按钮字段,用于选择增加或减少余额
+            Elm::radio('type', '修改分红积分:', 1)->options([
+                ['label' => '增加', 'value' => 1],
+                ['label' => '减少', 'value' => 0],
+            ])->requiredNum(),
+            // 创建数字输入框字段,用于输入修改的金额
+            Elm::number('award_integral', '分红积分')->required()->min(0)->max(999999)
+        ])->setTitle('修改用户分红积分');
+    }
+    /**
+     * 创建一个表单来修改当前用户的分红积分
+     *
+     * 该方法通过Elm组件库创建一个表单,用于系统后台修改用户余额。表单包含两个字段:
+     * 1. 修改类型:通过单选按钮(radio)选择是增加还是减少余额;
+     * 2. 修改金额:通过数字输入框(number)输入具体的金额。
+     * 表单提交的URL是根据给定的用户ID动态生成的,确保了表单操作的特定性。
+     *
+     * @param int $id 用户ID,用于构建表单提交的URL,确保操作针对特定用户。
+     * @return \Encore\Admin\Widgets\Form|Form
+     */
+    public function changeAwardRangeForm($id)
+    {
+        // 创建表单,并设置表单提交的URL
+        return Elm::createForm(Route::buildUrl('systemUserChangeAwardIntegral', compact('id'))->build(), [
+            // 创建单选按钮字段,用于选择增加或减少余额
+            Elm::radio('type', '修改分红额度:', 1)->options([
+                ['label' => '增加', 'value' => 1],
+                ['label' => '减少', 'value' => 0],
+            ])->requiredNum(),
+            // 创建数字输入框字段,用于输入修改的金额
+            Elm::number('award_integral', '分红额度')->required()->min(0)->max(999999)
+        ])->setTitle('修改用户分红额度');
+    }
 
 
     /**
@@ -738,6 +786,104 @@ class UserRepository extends BaseRepository
             }
         });
     }
+    /**
+     * 修改用户分红积分
+     *
+     * 本函数用于根据类型增加或减少用户的余额,并在数据库中记录相应的操作。
+     * 通过事务处理确保操作的原子性,防止数据不一致。
+     *
+     * @param int $id 用户ID
+     * @param int $adminId 操作管理员ID
+     * @param int $type 操作类型,1表示增加,其他表示减少
+     * @param float $awardIntegral 修改的分红积分数量
+     */
+    public function changeAwardIntegral($id, $adminId, $type, $awardIntegral)
+    {
+        // 根据用户ID获取用户信息
+        $user = $this->dao->get($id);
+        // 使用事务处理来确保操作的原子性
+        Db::transaction(function () use ($id, $adminId, $user, $type, $awardIntegral) {
+            // 根据操作类型计算新的余额
+            $balance = $type == 1 ? bcadd($user->award_integral, $awardIntegral, 2) : bcsub($user->award_integral, $awardIntegral, 2);
+            // 保存用户的新余额
+            $user->save(['award_integral' => $balance]);
+
+            // 创建用户账单记录对象
+            /** @var UserBillRepository $make */
+            $make = app()->make(UserBillRepository::class);
+            // 根据操作类型增加或减少用户的账单记录
+            if ($type == 1) {
+                // 增加余额时的操作
+                $make->incBill($id, 'award_integral', 'sys_inc_integral', [
+                    'link_id' => $adminId,
+                    'status' => 1,
+                    'title' => '系统增加分红积分',
+                    'number' => $awardIntegral,
+                    'mark' => '系统增加了' . floatval($awardIntegral) . '分红积分',
+                    'balance' => $balance
+                ]);
+            } else {
+                // 减少余额时的操作
+                $make->decBill($id, 'award_integral', 'sys_dec_integral', [
+                    'link_id' => $adminId,
+                    'status' => 1,
+                    'title' => '系统减少分红积分',
+                    'number' => $awardIntegral,
+                    'mark' => '系统减少了' . floatval($awardIntegral) . '分红积分',
+                    'balance' => $balance
+                ]);
+            }
+        });
+    }
+    /**
+     * 修改用户分红额度
+     *
+     * 本函数用于根据类型增加或减少用户的额度,并在数据库中记录相应的操作。
+     * 通过事务处理确保操作的原子性,防止数据不一致。
+     *
+     * @param int $id 用户ID
+     * @param int $adminId 操作管理员ID
+     * @param int $type 操作类型,1表示增加,其他表示减少
+     * @param float $awardRange 修改的分红额度数量
+     */
+    public function changeAwardRange($id, $adminId, $type, $awardRange)
+    {
+        // 根据用户ID获取用户信息
+        $user = $this->dao->get($id);
+        // 使用事务处理来确保操作的原子性
+        Db::transaction(function () use ($id, $adminId, $user, $type, $awardRange) {
+            // 根据操作类型计算新的余额
+            $balance = $type == 1 ? bcadd($user->award_range, $awardRange, 2) : bcsub($user->award_range, $awardRange, 2);
+            // 保存用户的新余额
+            $user->save(['award_range' => $balance]);
+
+            // 创建用户账单记录对象
+            /** @var UserBillRepository $make */
+            $make = app()->make(UserBillRepository::class);
+            // 根据操作类型增加或减少用户的账单记录
+            if ($type == 1) {
+                // 增加余额时的操作
+                $make->incBill($id, 'award_range', 'sys_inc_range', [
+                    'link_id' => $adminId,
+                    'status' => 1,
+                    'title' => '系统增加分红额度',
+                    'number' => $awardRange,
+                    'mark' => '系统增加了' . floatval($awardRange) . '分红额度',
+                    'balance' => $balance
+                ]);
+            } else {
+                // 减少余额时的操作
+                $make->decBill($id, 'award_range', 'sys_dec_range', [
+                    'link_id' => $adminId,
+                    'status' => 1,
+                    'title' => '系统减少分红额度',
+                    'number' => $awardRange,
+                    'mark' => '系统减少了' . floatval($awardRange) . '分红额度',
+                    'balance' => $balance
+                ]);
+            }
+        });
+    }
 
     /**
      * 修改用户积分

+ 69 - 2
app/controller/admin/user/User.php

@@ -504,7 +504,34 @@ class User extends BaseController
             return app('json')->fail('数据不存在');
         return app('json')->success(formToData($this->repository->changeNowMoneyForm($id)));
     }
-
+    /**
+     * 修改用户分红积分表单
+     * @param $id
+     * @return mixed
+     * @throws FormBuilderException
+     * @author xaboy
+     * @day 2020-05-07
+     */
+    public function changeAwardIntegralForm($id)
+    {
+        if (!$this->repository->exists($id))
+            return app('json')->fail('数据不存在');
+        return app('json')->success(formToData($this->repository->changeAwardIntegralForm($id)));
+    }
+    /**
+     * 修改用户分红额度表单
+     * @param $id
+     * @return mixed
+     * @throws FormBuilderException
+     * @author xaboy
+     * @day 2020-05-07
+     */
+    public function changeAwardRangeForm($id)
+    {
+        if (!$this->repository->exists($id))
+            return app('json')->fail('数据不存在');
+        return app('json')->success(formToData($this->repository->changeAwardRangeForm($id)));
+    }
     /**
      * 修改用户积分表单
      * @param $id
@@ -541,7 +568,48 @@ class User extends BaseController
 
         return app('json')->success('修改成功');
     }
+    /**
+     * 修改用户分红积分
+     * @param $id
+     * @param UserNowMoneyValidate $validate
+     * @return mixed
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     * @author xaboy
+     * @day 2020-05-07
+     */
+    public function changeAwardIntegral($id, UserNowMoneyValidate $validate)
+    {
+        $data = $this->request->params(['now_money', 'type']);
+        $validate->check($data);
+        if (!$this->repository->exists($id))
+            return app('json')->fail('数据不存在');
+        $this->repository->changeAwardIntegral($id, $this->request->adminId(), $data['type'], $data['award_integral']);
 
+        return app('json')->success('修改成功');
+    }
+    /**
+     * 修改用户分红额度
+     * @param $id
+     * @param UserNowMoneyValidate $validate
+     * @return mixed
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     * @author xaboy
+     * @day 2020-05-07
+     */
+    public function changeAwardRange($id, UserNowMoneyValidate $validate)
+    {
+        $data = $this->request->params(['now_money', 'type']);
+        $validate->check($data);
+        if (!$this->repository->exists($id))
+            return app('json')->fail('数据不存在');
+        $this->repository->changeAwardRange($id, $this->request->adminId(), $data['type'], $data['award_range']);
+
+        return app('json')->success('修改成功');
+    }
     /**
      * 修改用户积分
      * @param $id
@@ -563,7 +631,6 @@ class User extends BaseController
 
         return app('json')->success('修改成功');
     }
-
     /**
      * 发送微信消息
      * @param WechatNewsRepository $wechatNewsRepository

+ 18 - 0
route/admin/user.php

@@ -139,6 +139,24 @@ Route::group(function () {
         Route::post('change_integral/:id', '/changeIntegral')->name('systemUserChangeIntegral')->option([
             '_alias' => '用户修改积分',
         ]);
+        //修改用户分红积分
+        Route::get('change_award_integral/form/:id', '/changeAwardIntegralForm')->name('systemUserChangeAwardIntegralForm')->option([
+            '_alias' => '用户修改分红积分表单',
+            '_auth' => false,
+            '_form' => 'systemUserChangeAwardIntegral',
+        ]);
+        Route::post('change_award_integral/:id', '/changeAwardIntegral')->name('systemUserChangeAwardIntegral')->option([
+            '_alias' => '用户修改分红积分',
+        ]);
+        //修改用户分红份额
+        Route::get('change_award_range/form/:id', '/changeAwardRangeForm')->name('systemUserChangeAwardRangeForm')->option([
+            '_alias' => '用户修改分红份额表单',
+            '_auth' => false,
+            '_form' => 'systemUserChangeAwardRange',
+        ]);
+        Route::post('change_award_range/:id', '/changeAwardRange')->name('systemUserChangeAwardRange')->option([
+            '_alias' => '用户修改分红份额',
+        ]);
         //微信图文群发
         Route::post('news/push', '/sendNews')->name('systemWechatUserSendNews')->option([
             '_alias' => '用户发送图文',