|
|
@@ -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
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 修改用户积分
|