更新用户数据
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
"userNameNoFund":-41,
|
||||
"userPassIncorrect":-42,
|
||||
"userCookieError":-44,
|
||||
"userCookieNotFund":-45,
|
||||
"userCookieExpired":-46
|
||||
"userCookieNotFund":-44,
|
||||
"userCookieExpired":-44
|
||||
|
||||
}
|
||||
+142
-32
@@ -65,17 +65,16 @@ type From_user_login struct {
|
||||
Remember bool `json:"remember"`
|
||||
}
|
||||
|
||||
func ApiUser(r *gin.RouterGroup) {
|
||||
type From_user_updateinfo struct {
|
||||
Username string `json:"username"`
|
||||
Remark string `json:"remark"`
|
||||
Birthday string `json:"birthday"`
|
||||
}
|
||||
|
||||
r.GET("/test", func(ctx *gin.Context) {
|
||||
ReturnJson(ctx, "apiOK", nil)
|
||||
})
|
||||
r.POST("/test", func(ctx *gin.Context) {
|
||||
ReturnJson(ctx, "apiOK", nil)
|
||||
})
|
||||
//通过cookie获取用户info
|
||||
r.POST("/getinfo", func(ctx *gin.Context) {
|
||||
_, cookieval := SeparateData(ctx)
|
||||
func AuthenticationAuthority(ctx *gin.Context) (bool, models.TabUser_, map[string]interface{}) {
|
||||
var user models.TabUser_
|
||||
|
||||
data, cookieval := SeparateData(ctx)
|
||||
//fmt.Println("cookieis" + cookieval)
|
||||
if cookieval != "" {
|
||||
cookie := models.TabCookie_{
|
||||
@@ -85,25 +84,99 @@ func ApiUser(r *gin.RouterGroup) {
|
||||
//找到cookie,验证cookie有效性,以及更新cookie
|
||||
if models.CheckCookiesAndUpdate(&cookie) {
|
||||
//cookie有效
|
||||
//返回最新cookie
|
||||
redata := map[string]interface{}{
|
||||
"cookie": cookie,
|
||||
}
|
||||
//载入用户info
|
||||
userInfo := models.TabFileInfo_{
|
||||
UserID: cookie.UserID,
|
||||
}
|
||||
if models.DB.Where(&userInfo).First(&userInfo).Error == nil {
|
||||
redata["userInfo"] = userInfo
|
||||
} else {
|
||||
redata["userInfo"] = nil
|
||||
}
|
||||
|
||||
//载入user
|
||||
user := models.TabUser_{
|
||||
ID: cookie.UserID,
|
||||
}
|
||||
models.DB.Where(&user).First(&user)
|
||||
|
||||
return true, user, data
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieExpired", nil)
|
||||
return false, user, nil
|
||||
}
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieNotFund", nil)
|
||||
return false, user, nil
|
||||
}
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieError", nil)
|
||||
return false, user, nil
|
||||
}
|
||||
|
||||
//return false, user
|
||||
}
|
||||
|
||||
func ApiUser(r *gin.RouterGroup) {
|
||||
|
||||
r.GET("/test", func(ctx *gin.Context) {
|
||||
ReturnJson(ctx, "apiOK", nil)
|
||||
})
|
||||
r.POST("/test", func(ctx *gin.Context) {
|
||||
ReturnJson(ctx, "apiOK", nil)
|
||||
})
|
||||
//更新用户info
|
||||
r.POST("/updateInfo", func(ctx *gin.Context) {
|
||||
isAuth, user, data := AuthenticationAuthority(ctx)
|
||||
if isAuth {
|
||||
var jsonData From_user_updateinfo
|
||||
|
||||
if err := mapstructure.Decode(data, &jsonData); err == nil {
|
||||
// fmt.Println("updateinfo data is", jsonData)
|
||||
// fmt.Println(user)
|
||||
t, err := time.Parse("2006-01-02", jsonData.Birthday)
|
||||
if err == nil {
|
||||
var userinfo models.TabUserInfo_
|
||||
userinfo.UserID = user.ID
|
||||
|
||||
var userinfoupdate models.TabUserInfo_
|
||||
userinfoupdate.UserID = user.ID
|
||||
userinfoupdate.CreatedAt = time.Now()
|
||||
userinfoupdate.Username = jsonData.Username
|
||||
userinfoupdate.Birthdate = t
|
||||
userinfoupdate.FirstName = jsonData.Remark
|
||||
|
||||
//先查找是否有记录
|
||||
if models.DB.Where(&userinfo).First(&userinfo).Error == nil {
|
||||
//有记录,更新
|
||||
models.DB.Model(&userinfo).Updates(&userinfoupdate)
|
||||
} else {
|
||||
//无记录,创建
|
||||
models.DB.Create(&userinfoupdate) // 传入指针
|
||||
|
||||
}
|
||||
|
||||
ReturnJson(ctx, "apiOK", nil)
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "jsonErr", nil)
|
||||
}
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "jsonErr", nil)
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
//通过cookie获取用户info
|
||||
r.POST("/getinfo", func(ctx *gin.Context) {
|
||||
isAuth, user, _ := AuthenticationAuthority(ctx)
|
||||
if isAuth {
|
||||
//载入用户info
|
||||
var userinfo models.TabUserInfo_
|
||||
userinfo.UserID = user.ID
|
||||
//fmt.Println(userInfo)
|
||||
var redata map[string]interface{} = make(map[string]interface{})
|
||||
if models.DB.Where(&userinfo).First(&userinfo).Error == nil {
|
||||
redata["userInfo"] = userinfo
|
||||
} else {
|
||||
redata["userInfo"] = nil
|
||||
}
|
||||
|
||||
user.Pass = ""
|
||||
user.Salt = ""
|
||||
|
||||
@@ -111,17 +184,54 @@ func ApiUser(r *gin.RouterGroup) {
|
||||
|
||||
ReturnJson(ctx, "apiOK", redata)
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieExpired", nil)
|
||||
}
|
||||
// _, cookieval := SeparateData(ctx)
|
||||
// //fmt.Println("cookieis" + cookieval)
|
||||
// if cookieval != "" {
|
||||
// cookie := models.TabCookie_{
|
||||
// Value: cookieval,
|
||||
// }
|
||||
// if models.DB.Where(&cookie).First(&cookie).Error == nil {
|
||||
// //找到cookie,验证cookie有效性,以及更新cookie
|
||||
// if models.CheckCookiesAndUpdate(&cookie) {
|
||||
// //cookie有效
|
||||
// //返回最新cookie
|
||||
// redata := map[string]interface{}{
|
||||
// "cookie": cookie,
|
||||
// }
|
||||
// //载入用户info
|
||||
// userInfo := models.TabFileInfo_{
|
||||
// UserID: cookie.UserID,
|
||||
// }
|
||||
// if models.DB.Where(&userInfo).First(&userInfo).Error == nil {
|
||||
// redata["userInfo"] = userInfo
|
||||
// } else {
|
||||
// redata["userInfo"] = nil
|
||||
// }
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieNotFund", nil)
|
||||
}
|
||||
// //载入user
|
||||
// user := models.TabUser_{
|
||||
// ID: cookie.UserID,
|
||||
// }
|
||||
// models.DB.Where(&user).First(&user)
|
||||
// user.Pass = ""
|
||||
// user.Salt = ""
|
||||
|
||||
} else {
|
||||
ReturnJson(ctx, "userCookieError", nil)
|
||||
}
|
||||
// redata["user"] = user
|
||||
|
||||
// ReturnJson(ctx, "apiOK", redata)
|
||||
|
||||
// } else {
|
||||
// ReturnJson(ctx, "userCookieExpired", nil)
|
||||
// }
|
||||
|
||||
// } else {
|
||||
// ReturnJson(ctx, "userCookieNotFund", nil)
|
||||
// }
|
||||
|
||||
// } else {
|
||||
// ReturnJson(ctx, "userCookieError", nil)
|
||||
// }
|
||||
|
||||
})
|
||||
//用户登陆
|
||||
|
||||
Generated
+923
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^6.0.1",
|
||||
"sass-embedded": "^1.93.3",
|
||||
"vite": "^7.1.11",
|
||||
"vite-plugin-vue-devtools": "^8.0.3"
|
||||
}
|
||||
|
||||
@@ -184,9 +184,7 @@ onMounted(() => {
|
||||
>
|
||||
<img
|
||||
:src="
|
||||
userStore.userInfo
|
||||
? userStore.userInfo.AvatarPath
|
||||
: '/ava.svg'
|
||||
userStore.getUserAvatarPath()
|
||||
"
|
||||
alt=""
|
||||
class="avatar avatar-sm"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import { onMounted, ref, watch } from "vue";
|
||||
import { onMounted, ref, watch ,defineProps} from "vue";
|
||||
import Litepicker from "litepicker";
|
||||
import { useI18n } from "vue-i18n";
|
||||
const { t, locale } = useI18n();
|
||||
@@ -11,6 +11,12 @@ watch(locale, () => {
|
||||
picker?.setOptions({ lang: locale.value });
|
||||
});
|
||||
|
||||
defineProps({
|
||||
setdef: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
})
|
||||
onMounted(() => {
|
||||
// @formatter:off
|
||||
|
||||
@@ -37,6 +43,7 @@ defineExpose({
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
<div class="input-icon">
|
||||
<span class="input-icon-addon"
|
||||
><!-- Download SVG icon from http://tabler-icons.io/i/calendar -->
|
||||
@@ -67,7 +74,7 @@ defineExpose({
|
||||
class="form-control"
|
||||
:placeholder="t('message.select_date')"
|
||||
ref="datepicker"
|
||||
value=""
|
||||
:value="setdef"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -46,7 +46,8 @@
|
||||
"user_settings": "Settings",
|
||||
"preferences": "Preferences",
|
||||
"administrator": "Administrator",
|
||||
"select_date":"Select a date"
|
||||
"select_date":"Select a date",
|
||||
"save_ok":"Saved successfully"
|
||||
},
|
||||
"settings": {
|
||||
"account_settings": "Account Settings",
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
"user_settings": "个人资料",
|
||||
"preferences": "偏好设置",
|
||||
"administrator": "管理员",
|
||||
"select_date":"选择日期"
|
||||
"select_date":"选择日期",
|
||||
"save_ok":"保存成功"
|
||||
},
|
||||
"settings": {
|
||||
"account_settings": "个人设置",
|
||||
|
||||
@@ -54,12 +54,12 @@ export const my_network_func = {
|
||||
{
|
||||
|
||||
if(response.data.err_code==0){
|
||||
if(response.data.return.cookie){
|
||||
// if(response.data.return.cookie){
|
||||
|
||||
userstore.cookieUpdata(response.data.return.cookie)
|
||||
}
|
||||
// userstore.cookieUpdata(response.data.return.cookie)
|
||||
// }
|
||||
|
||||
}else if(response.data.err_code==-46){
|
||||
}else if(response.data.err_code==-44){//后端返回的cookie错误码
|
||||
//userCookieExpired
|
||||
userstore.logout()
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import { my_network_func } from "@/my_network_func";
|
||||
export const useUserStore = defineStore("user", () => {
|
||||
// 状态 (State)
|
||||
const userInfo = ref(null);
|
||||
const user =ref(null)
|
||||
const user = ref(null);
|
||||
const userCookie = ref(null);
|
||||
const isLoggedIn = ref(false);
|
||||
|
||||
@@ -23,6 +23,30 @@ export const useUserStore = defineStore("user", () => {
|
||||
return userCookie.value;
|
||||
};
|
||||
|
||||
const getUserBirthday = () => {
|
||||
if (userInfo.value != null) {
|
||||
const date = new Date(userInfo.value.Birthdate);
|
||||
|
||||
// 获取年月日并格式化
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, "0");
|
||||
const day = String(date.getDate()).padStart(2, "0");
|
||||
|
||||
const formattedDate = `${year}-${month}-${day}`;
|
||||
return formattedDate;
|
||||
}
|
||||
return "";
|
||||
};
|
||||
|
||||
const getUserAvatarPath = () => {
|
||||
if (userInfo.value != null) {
|
||||
if (userInfo.value.AvatarPath != "") {
|
||||
return userInfo.value.AvatarPath;
|
||||
}
|
||||
}
|
||||
return "/ava.svg";
|
||||
};
|
||||
|
||||
const getUserInfoFromCookie = () => {
|
||||
my_network_func.postJson("/users/getinfo", {}, (r) => {
|
||||
//console.log(r);
|
||||
@@ -30,11 +54,11 @@ export const useUserStore = defineStore("user", () => {
|
||||
case 200:
|
||||
switch (r.data.err_code) {
|
||||
case 0:
|
||||
user.value=r.data.return.user
|
||||
if(r.data.return.userInfo){
|
||||
userInfo.value=r.data.return.userInfo
|
||||
}else{
|
||||
userInfo.value=null
|
||||
user.value = r.data.return.user;
|
||||
if (r.data.return.userInfo) {
|
||||
userInfo.value = r.data.return.userInfo;
|
||||
} else {
|
||||
userInfo.value = null;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -92,6 +116,8 @@ export const useUserStore = defineStore("user", () => {
|
||||
userInfo,
|
||||
userCookie,
|
||||
isLoggedIn,
|
||||
getUserAvatarPath,
|
||||
getUserBirthday,
|
||||
logout,
|
||||
login,
|
||||
loginFromStoreCookie,
|
||||
|
||||
@@ -4,15 +4,20 @@ import settingNavigation from "@/components/settingNavigation.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import datePicker from "@/components/datePicker.vue";
|
||||
import imageCropper from "@/components/imageCropper.vue";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { my_network_func } from "@/my_network_func";
|
||||
import MyOffcanvas from "@/components/MyOffcanvas.vue";
|
||||
const mos = ref();
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const birthday = ref();
|
||||
const username = ref();
|
||||
const userremark = ref();
|
||||
|
||||
const userStore = useUserStore();
|
||||
|
||||
function updataInfo() {
|
||||
|
||||
|
||||
let isDataErr = false;
|
||||
|
||||
let birthdayValue = birthday.value.datepicker.value;
|
||||
@@ -46,14 +51,43 @@ function updataInfo() {
|
||||
console.log("用户名:", usernameValue);
|
||||
console.log("备注:", userremarkValue);
|
||||
console.log("生日:", birthdayValue);
|
||||
my_network_func.postJson(
|
||||
"/users/updateInfo",
|
||||
{
|
||||
username: usernameValue,
|
||||
remark: userremarkValue,
|
||||
birthday: birthdayValue,
|
||||
},
|
||||
(r) => {
|
||||
console.log(r);
|
||||
switch (r.statusCode) {
|
||||
case 200:
|
||||
switch (r.data.err_code) {
|
||||
case 0:
|
||||
mos.value?.showAlert(
|
||||
"success",
|
||||
t("message.save_ok"),
|
||||
1000
|
||||
);
|
||||
break;
|
||||
default:
|
||||
mos.value?.showAlert("danger", t("message.server_error"), 5000);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
mos.value?.showAlert("danger", t("message.network_err"), 5000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
onMounted(() => {
|
||||
//console.log("account mounted");
|
||||
//username.value.value="Kevin";
|
||||
|
||||
})
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -77,12 +111,13 @@ onMounted(()=>{
|
||||
</h3>
|
||||
<div class="row align-items-center">
|
||||
<div class="col-auto">
|
||||
<span
|
||||
<img
|
||||
:src="userStore.getUserAvatarPath()"
|
||||
alt=""
|
||||
class="avatar avatar-xl"
|
||||
style="background-image: url(./static/avatars/000m.jpg)"
|
||||
></span>
|
||||
/>
|
||||
</div>
|
||||
<imageCropper />
|
||||
<!-- <imageCropper /> -->
|
||||
<div class="col-auto">
|
||||
<button class="btn">
|
||||
{{ t("settings.change_avatar") }}
|
||||
@@ -93,15 +128,29 @@ onMounted(()=>{
|
||||
<div class="row g-3">
|
||||
<div class="col-md">
|
||||
<div class="form-label">{{ t("settings.name") }}</div>
|
||||
<input ref="username" type="text" class="form-control" />
|
||||
<input
|
||||
ref="username"
|
||||
type="text"
|
||||
class="form-control"
|
||||
:value="
|
||||
userStore.userInfo ? userStore.userInfo.Username : ''
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-label">{{ t("settings.remark") }}</div>
|
||||
<input ref="userremark" type="text" class="form-control" />
|
||||
<input
|
||||
ref="userremark"
|
||||
type="text"
|
||||
class="form-control"
|
||||
:value="
|
||||
userStore.userInfo ? userStore.userInfo.FirstName : ''
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<div class="form-label">{{ t("settings.birthday") }}</div>
|
||||
<datePicker ref="birthday" />
|
||||
<datePicker ref="birthday" :setdef="userStore.getUserBirthday()"/>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn" @click="updataInfo">
|
||||
@@ -139,4 +188,5 @@ onMounted(()=>{
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<MyOffcanvas ref="mos" />
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user