| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- declare (strict_types = 1);
- // +----------------------------------------------------------------------
- // | [ WE CAN DO IT MORE SIMPLE ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2018-2020 rights reserved.
- // +----------------------------------------------------------------------
- // | [ 用户荣誉管理 ]
- // +----------------------------------------------------------------------
- // | Date: 2026-05-22
- // +----------------------------------------------------------------------
- namespace app\system\controller;
- use app\BaseController;
- use app\model\api\UserHonor as HonorModel;
- use app\model\api\User as UserModel;
- use app\Request;
- use library\services\UtilService;
- class Honor extends BaseController
- {
- /**
- * 荣誉列表
- * @param Request $request
- * @return mixed
- */
- public function list(Request $request)
- {
- $post = UtilService::getMore([
- ['page', 1],
- ['pageSize', 50],
- ['name', ''],
- ['status', ''],
- ], $request);
- $data = (new HonorModel)->getList($post);
- return app('json')->success([
- 'list' => $data["list"],
- 'pageCount' => $data["totalCount"],
- 'pageSize' => $data["pageSize"],
- 'page' => $data["page"],
- ]);
- }
- /**
- * 荣誉添加/编辑
- * @param Request $request
- * @return mixed
- */
- public function save(Request $request)
- {
- $post = UtilService::getMore([
- ['id', '0'],
- ['name', '', 'empty', '请输入荣誉名称'],
- ['icon', '', 'empty', '请上传荣誉图标'],
- ['description', ''],
- ['sort', '0'],
- ['status', '1'],
- ], $request);
- $id = $post["id"];
- unset($post["id"]);
- $post["update_time"] = time();
- $r = 0;
- if (empty($id) || $id == "0") {
- $post["create_time"] = time();
- $r = (new HonorModel)->insert($post);
- } else {
- $r = (new HonorModel)->where("id", $id)->update($post);
- }
- if ($r) {
- return app('json')->success("数据保存成功");
- } else {
- return app('json')->fail("数据保存失败");
- }
- }
- /**
- * 荣誉删除
- * @param Request $request
- * @return mixed
- */
- public function del(Request $request)
- {
- [$id] = UtilService::getMore([
- ['id', 0, 'empty', '参数错误']
- ], $request, true);
- (new HonorModel)->where("id", $id)->delete();
- return app('json')->success("荣誉删除成功");
- }
- /**
- * 获取所有启用的荣誉列表(用于下拉选择)
- * @return mixed
- */
- public function allEnabled()
- {
- $data = (new HonorModel)->getAllEnabled();
- return app('json')->success($data);
- }
- /**
- * 修改用户荣誉标签
- * @param Request $request
- * @return mixed
- */
- public function userHonorSave(Request $request)
- {
- $post = UtilService::getMore([
- ['uid', '', 'empty', '请输入用户UID'],
- ['honor', ''],
- ], $request, true);
- $uid = (int)$post["uid"];
- if (empty($uid)) {
- return app('json')->fail("用户UID不能为空");
- }
- // 检查用户是否存在
- $userData = (new UserModel)->where("uid", $uid)->find();
- if (empty($userData)) {
- return app('json')->fail("用户不存在,请输入正确的用户UID");
- }
- // 处理荣誉ID字符串
- $honor = $post["honor"];
- if ($honor !== '') {
- // 清理格式:去除空格,过滤非数字和逗号字符
- $honor = trim($honor);
- $honorAr = $honor ? explode(',', $honor) : [];
- $validIds = [];
- foreach ($honorAr as $hid) {
- $hid = trim($hid);
- if (is_numeric($hid) && (int)$hid > 0) {
- $validIds[] = (int)$hid;
- }
- }
- // 去重并排序
- $validIds = array_unique($validIds);
- sort($validIds);
- $honor = implode(',', $validIds);
- // 验证明细Id是否存在
- if (!empty($validIds)) {
- $existCount = (new HonorModel)->where("id", "in", $validIds)->where("status", 1)->count();
- if ($existCount != count($validIds)) {
- return app('json')->fail("部分荣誉ID不存在或已禁用,请检查");
- }
- }
- }
- $r = (new UserModel)->where("uid", $uid)->update([
- "honor" => $honor
- ]);
- if ($r !== false) {
- return app('json')->success("用户荣誉标签修改成功");
- } else {
- return app('json')->fail("用户荣誉标签修改失败");
- }
- }
- /**
- * 获取用户荣誉详情
- * @param Request $request
- * @return mixed
- */
- public function getUserHonor(Request $request)
- {
- $post = UtilService::getMore([
- ['uid', '', 'empty', '请输入用户UID'],
- ], $request, true);
- $uid = (int)$post["uid"];
- if (empty($uid)) {
- return app('json')->fail("用户UID不能为空");
- }
- $userData = (new UserModel)->where("uid", $uid)->find();
- if (empty($userData)) {
- return app('json')->fail("用户不存在");
- }
- $honorIds = $userData["honor"] ? explode(',', $userData["honor"]) : [];
- $honorList = [];
- if (!empty($honorIds)) {
- $honorList = (new HonorModel)
- ->field("id,name,icon,description")
- ->where("id", "in", $honorIds)
- ->where("status", 1)
- ->order("sort", "desc")
- ->select();
- if (!empty($honorList)) {
- $honorList = $honorList->toArray();
- } else {
- $honorList = [];
- }
- }
- return app('json')->success([
- 'uid' => $uid,
- 'honor' => $userData["honor"],
- 'honor_list' => $honorList,
- ]);
- }
- }
|