可设置发送聊天前必须设置昵称

This commit is contained in:
aipaw 2021-12-21 01:22:05 +08:00
parent 75ac1e9770
commit a20222747d
5 changed files with 89 additions and 7 deletions

View File

@ -144,6 +144,14 @@ class DialogController extends AbstractController
{ {
$user = User::auth(); $user = User::auth();
// //
$chat_nickname = Base::settingFind('system', 'chat_nickname');
if ($chat_nickname == 'required') {
$nickname = User::select(['nickname as nickname_original'])->whereUserid($user->userid)->value('nickname_original');
if (empty($nickname)) {
return Base::retError('请设置昵称', [], -2);
}
}
//
$dialog_id = intval(Request::input('dialog_id')); $dialog_id = intval(Request::input('dialog_id'));
$text = trim(Request::input('text')); $text = trim(Request::input('text'));
// //

View File

@ -24,7 +24,7 @@ class SystemController extends AbstractController
* *
* @apiParam {String} type * @apiParam {String} type
* - get: 获取(默认) * - get: 获取(默认)
* - save: 保存设置参数reg、login_code、password_policy * - save: 保存设置参数reg、login_code、password_policy、chat_nickname
* @apiSuccess {Number} ret 返回状态码1正确、0错误 * @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述) * @apiSuccess {String} msg 返回信息(错误描述)
@ -40,7 +40,7 @@ class SystemController extends AbstractController
User::auth('admin'); User::auth('admin');
$all = Request::input(); $all = Request::input();
foreach ($all AS $key => $value) { foreach ($all AS $key => $value) {
if (!in_array($key, ['reg', 'login_code', 'password_policy'])) { if (!in_array($key, ['reg', 'login_code', 'password_policy', 'chat_nickname'])) {
unset($all[$key]); unset($all[$key]);
} }
} }
@ -52,6 +52,7 @@ class SystemController extends AbstractController
$setting['reg'] = $setting['reg'] ?: 'open'; $setting['reg'] = $setting['reg'] ?: 'open';
$setting['login_code'] = $setting['login_code'] ?: 'auto'; $setting['login_code'] = $setting['login_code'] ?: 'auto';
$setting['password_policy'] = $setting['password_policy'] ?: 'simple'; $setting['password_policy'] = $setting['password_policy'] ?: 'simple';
$setting['chat_nickname'] = $setting['chat_nickname'] ?: 'optional';
// //
return Base::retSuccess('success', $setting ?: json_decode('{}')); return Base::retSuccess('success', $setting ?: json_decode('{}'));
} }

View File

@ -54,7 +54,6 @@
}) })
]) ])
}, },
loading: true,
onOk: () => { onOk: () => {
if (typeof config.onOk === "function") { if (typeof config.onOk === "function") {
if (config.onOk(config.value, () => { if (config.onOk(config.value, () => {
@ -66,6 +65,14 @@
$A.Modal.remove(); $A.Modal.remove();
} }
}, },
onCancel: () => {
if (typeof config.onCancel === "function") {
config.onCancel();
}
},
loading: true,
okText: $A.L(config.okText || '确定'),
cancelText: $A.L(config.cancelText || '取消'),
}); });
setTimeout(() => { setTimeout(() => {
document.getElementById(inputId) && document.getElementById(inputId).focus(); document.getElementById(inputId) && document.getElementById(inputId).focus();

View File

@ -13,6 +13,7 @@
<Radio label="open">{{$L('开启')}}</Radio> <Radio label="open">{{$L('开启')}}</Radio>
<Radio label="close">{{$L('关闭')}}</Radio> <Radio label="close">{{$L('关闭')}}</Radio>
</RadioGroup> </RadioGroup>
<div v-if="formDatum.login_code == 'auto'" class="form-tip">{{$L('自动密码输入错误后必须添加验证码')}}</div>
</FormItem> </FormItem>
<FormItem :label="$L('密码策略')" prop="passwordPolicy"> <FormItem :label="$L('密码策略')" prop="passwordPolicy">
<RadioGroup v-model="formDatum.password_policy"> <RadioGroup v-model="formDatum.password_policy">
@ -22,6 +23,13 @@
<div v-if="formDatum.password_policy == 'simple'" class="form-tip">{{$L('简单大于或等于6个字符')}}</div> <div v-if="formDatum.password_policy == 'simple'" class="form-tip">{{$L('简单大于或等于6个字符')}}</div>
<div v-else-if="formDatum.password_policy == 'complex'" class="form-tip">{{$L('复杂大于或等于6个字符包含数字、字母大小写或者特殊字符。')}}</div> <div v-else-if="formDatum.password_policy == 'complex'" class="form-tip">{{$L('复杂大于或等于6个字符包含数字、字母大小写或者特殊字符。')}}</div>
</FormItem> </FormItem>
<FormItem :label="$L('聊天昵称')" prop="chatNickname">
<RadioGroup v-model="formDatum.chat_nickname">
<Radio label="optional">{{$L('可选')}}</Radio>
<Radio label="required">{{$L('必填')}}</Radio>
</RadioGroup>
<div v-if="formDatum.chat_nickname == 'required'" class="form-tip">{{$L('必填发送聊天内容前必须设置昵称')}}</div>
</FormItem>
</Form> </Form>
<div class="setting-footer"> <div class="setting-footer">
<Button :loading="loadIng > 0" type="primary" @click="submitForm">{{$L('提交')}}</Button> <Button :loading="loadIng > 0" type="primary" @click="submitForm">{{$L('提交')}}</Button>

View File

@ -18,24 +18,21 @@ export default {
params.header['token'] = state.userToken; params.header['token'] = state.userToken;
params.header['fd'] = state.method.getStorageString("userWsFd"); params.header['fd'] = state.method.getStorageString("userWsFd");
// //
const cloneParams = state.method.cloneJSON(params);
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
if (params.spinner === true) { if (params.spinner === true) {
const spinner = document.getElementById("common-spinner"); const spinner = document.getElementById("common-spinner");
if (spinner) { if (spinner) {
const beforeCall = params.before;
params.before = () => { params.before = () => {
state.ajaxLoadNum++; state.ajaxLoadNum++;
spinner.style.display = "block" spinner.style.display = "block"
typeof beforeCall == "function" && beforeCall();
}; };
// //
const completeCall = params.complete;
params.complete = () => { params.complete = () => {
state.ajaxLoadNum--; state.ajaxLoadNum--;
if (state.ajaxLoadNum <= 0) { if (state.ajaxLoadNum <= 0) {
spinner.style.display = "none" spinner.style.display = "none"
} }
typeof completeCall == "function" && completeCall();
}; };
} }
} }
@ -57,6 +54,17 @@ export default {
}); });
return; return;
} }
if (ret === -2 && params.checkNick !== false) {
// 需要昵称
dispatch("userNickNameInput").then(() => {
dispatch("call", Object.assign(cloneParams, {
checkNick: false
})).then(resolve).catch(reject);
}).catch(() => {
reject({data, msg: $A.L('请设置昵称!')})
});
return;
}
if (ret === 1) { if (ret === 1) {
resolve({data, msg}); resolve({data, msg});
} else { } else {
@ -307,6 +315,56 @@ export default {
}) })
}, },
/**
* 设置用户昵称
* @param dispatch
* @returns {Promise<unknown>}
*/
userNickNameInput({dispatch}) {
return new Promise(function (resolve, reject) {
let callback = (cb, success) => {
if (typeof cb === "function") {
cb();
}
if (success === true) {
setTimeout(resolve, 301)
} else {
setTimeout(reject, 301)
}
}
$A.modalInput({
title: "设置昵称",
placeholder: "请输入昵称",
okText: "保存",
onOk: (value, cb) => {
if (value) {
dispatch("call", {
url: 'users/editdata',
data: {
nickname: value,
},
checkNick: false,
}).then(() => {
dispatch('getUserInfo').then(() => {
callback(cb, true);
}).catch(() => {
callback(cb, false);
});
}).catch(({msg}) => {
$A.modalError(msg, 301);
callback(cb, false);
});
} else {
callback(cb, false);
}
},
onCancel: () => {
callback(null, false);
}
});
});
},
/** /**
* 登出打开登录页面 * 登出打开登录页面
* @param state * @param state