diff --git a/server/app/adminapi/controller/user/UserController.php b/server/app/adminapi/controller/user/UserController.php index dde858bf1b94bdaa6d4144a63452c093108b9c89..3d120a87044e0f89742f0c10f4a024d068a89a68 100644 --- a/server/app/adminapi/controller/user/UserController.php +++ b/server/app/adminapi/controller/user/UserController.php @@ -7,6 +7,7 @@ namespace app\adminapi\controller\user; use app\adminapi\controller\BaseAdminController; use app\adminapi\lists\user\UserLists; use app\adminapi\logic\user\UserLogic; +use app\adminapi\validate\user\AdjustUserMoney; use app\adminapi\validate\user\UserValidate; class UserController extends BaseAdminController @@ -46,4 +47,20 @@ class UserController extends BaseAdminController UserLogic::setUserInfo($params); return $this->success('操作成功', [], 1, 1); } + + /** + * @notes 调整用户余额 + * @return \support\Response + * @author bingo + * @date 2023/2/23 14:33 + */ + public function adjustMoney() + { + $params = (new AdjustUserMoney())->post()->goCheck(); + $res = UserLogic::adjustUserMoney($params); + if (true === $res) { + return $this->success('操作成功', [], 1, 1); + } + return $this->fail($res); + } } \ No newline at end of file diff --git a/server/app/adminapi/logic/user/UserLogic.php b/server/app/adminapi/logic/user/UserLogic.php index f30109a23cc52dd14866494bcd9c57c1bf01969b..ec6e319a37bca01f576af1566bbb75a39ccaaa59 100644 --- a/server/app/adminapi/logic/user/UserLogic.php +++ b/server/app/adminapi/logic/user/UserLogic.php @@ -13,9 +13,12 @@ // +---------------------------------------------------------------------- namespace app\adminapi\logic\user; +use app\common\enum\user\AccountLogEnum; use app\common\enum\user\UserTerminalEnum; +use app\common\logic\AccountLogLogic; use app\common\logic\BaseLogic; use app\common\model\user\User; +use think\facade\Db; /** * 用户逻辑层 @@ -36,7 +39,8 @@ class UserLogic extends BaseLogic { $field = [ 'id', 'sn', 'account', 'nickname', 'avatar', 'real_name', - 'sex', 'mobile', 'create_time', 'login_time', 'channel' + 'sex', 'mobile', 'create_time', 'login_time', 'channel', + 'user_money', ]; $user = User::where(['id' => $userId])->field($field) @@ -63,4 +67,53 @@ class UserLogic extends BaseLogic ]); } + + /** + * @notes 调整用户余额 + * @param array $params + * @return bool|string + * @author bingo + * @date 2023/2/23 14:25 + */ + public static function adjustUserMoney(array $params) + { + Db::startTrans(); + try { + $user = User::find($params['user_id']); + if (AccountLogEnum::INC == $params['action']) { + //调整可用余额 + $user->user_money += $params['num']; + $user->save(); + //记录日志 + AccountLogLogic::add( + $user->id, + AccountLogEnum::UM_INC_ADMIN, + AccountLogEnum::INC, + $params['num'], + '', + $params['remark'] ?? '' + ); + } else { + $user->user_money -= $params['num']; + $user->save(); + //记录日志 + AccountLogLogic::add( + $user->id, + AccountLogEnum::UM_DEC_ADMIN, + AccountLogEnum::DEC, + $params['num'], + '', + $params['remark'] ?? '' + ); + } + + Db::commit(); + return true; + + } catch (\Exception $e) { + Db::rollback(); + return $e->getMessage(); + } + } + } \ No newline at end of file diff --git a/server/app/adminapi/validate/user/AdjustUserMoney.php b/server/app/adminapi/validate/user/AdjustUserMoney.php new file mode 100644 index 0000000000000000000000000000000000000000..69a58d4c0865b5503d615780bbb4ac430778aabf --- /dev/null +++ b/server/app/adminapi/validate/user/AdjustUserMoney.php @@ -0,0 +1,55 @@ + 'require', + 'action' => 'require|in:' . AccountLogEnum::INC . ',' .AccountLogEnum::DEC, + 'num' => 'require|gt:0|checkMoney', + 'remark' => 'max:128', + ]; + + protected $message = [ + 'id.require' => '请选择用户', + 'action.require' => '请选择调整类型', + 'action.in' => '调整类型错误', + 'num.require' => '请输入调整数量', + 'num.gt' => '调整余额必须大于零', + 'remark' => '备注不可超过128个符号', + ]; + + + protected function checkMoney($vaule, $rule, $data) + { + $user = User::find($data['user_id']); + if (empty($user)) { + return '用户不存在'; + } + + if (1 == $data['action']) { + return true; + } + + $surplusMoeny = $user->user_money - $vaule; + if ($surplusMoeny < 0) { + return '用户可用余额仅剩' . $user->user_money; + } + + return true; + } + + +} \ No newline at end of file diff --git a/server/app/api/service/WechatUserService.php b/server/app/api/service/WechatUserService.php index 59b3c98ac085e40089ddb3f93d8f956102767b82..6f1e8bc6a7bec2a45cccb230b77f43bc839395c4 100644 --- a/server/app/api/service/WechatUserService.php +++ b/server/app/api/service/WechatUserService.php @@ -145,7 +145,7 @@ class WechatUserService $userSn = User::createUserSn(); $this->user->sn = $userSn; $this->user->account = 'u' . $userSn; - $this->user->nickname = "用户" . $userSn; + $this->user->nickname = $this->nickname; $this->user->avatar = $avatar; $this->user->channel = $this->terminal; $this->user->is_new_user = YesNoEnum::YES; @@ -189,6 +189,7 @@ class WechatUserService $userAuth->openid = $this->openid; $userAuth->unionid = $this->unionid; $userAuth->terminal = $this->terminal; + $userAuth->nickname = $this->nickname; $userAuth->save(); } }