|
@@ -0,0 +1,194 @@
|
|
|
|
|
+<?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,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|