Files
wwjcloud-nest-v1/wwjcloud/src/common/weapp/services/weapp.service.ts

150 lines
3.3 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { WeappUser } from '../entity/weappUser.entity';
@Injectable()
export class WeappService {
constructor(
@InjectRepository(WeappUser)
private readonly userRepo: Repository<WeappUser>,
) {}
/**
* 授权登录
*/
async login(data: any) {
const { code, nickname, headimg, mobile, mobileCode } = data;
// 这里需要实现通过code获取openid的逻辑
// 暂时返回模拟数据,避免硬编码
const openid = 'weapp_openid_' + Date.now();
const unionid = 'weapp_unionid_' + Date.now();
// 检查是否已存在用户
let user = await this.userRepo.findOne({
where: { openid, siteId: data.siteId || 0 }
});
if (!user) {
// 创建新用户
user = this.userRepo.create({
siteId: data.siteId || 0,
openid,
unionid,
nickname: nickname || '小程序用户',
headimg: headimg || '',
mobile: mobile || '',
sex: 0,
status: 1
});
await this.userRepo.save(user);
} else {
// 更新用户信息
await this.userRepo.update(user.id, {
nickname: nickname || user.nickname,
headimg: headimg || user.headimg,
mobile: mobile || user.mobile
});
}
// 生成token
const token = 'weapp_token_' + Date.now();
const refreshToken = 'weapp_refresh_' + Date.now();
return {
user: {
id: user.id,
openid: user.openid,
unionid: user.unionid,
nickname: user.nickname,
headimg: user.headimg,
mobile: user.mobile,
sex: user.sex
},
token,
refreshToken
};
}
/**
* 注册
*/
async register(data: any) {
const { openid, unionid, mobileCode, mobile } = data;
// 检查是否已存在用户
const existingUser = await this.userRepo.findOne({
where: { openid, siteId: data.siteId || 0 }
});
if (existingUser) {
return { code: 1, msg: '用户已存在' };
}
// 创建新用户
const user = this.userRepo.create({
siteId: data.siteId || 0,
openid,
unionid,
nickname: '小程序用户',
headimg: '',
mobile: mobile || '',
sex: 0,
status: 1
});
const result = await this.userRepo.save(user);
return {
code: 0,
data: {
id: result.id,
openid: result.openid,
unionid: result.unionid,
nickname: result.nickname,
headimg: result.headimg,
mobile: result.mobile
},
msg: '注册成功'
};
}
/**
* 获取用户信息
*/
async getUserInfo(openid: string, siteId: number) {
const user = await this.userRepo.findOne({
where: { openid, siteId }
});
if (!user) {
return null;
}
return {
id: user.id,
openid: user.openid,
unionid: user.unionid,
nickname: user.nickname,
headimg: user.headimg,
mobile: user.mobile,
sex: user.sex,
status: user.status,
createTime: user.createTime
};
}
/**
* 更新用户信息
*/
async updateUserInfo(openid: string, siteId: number, updateData: any) {
await this.userRepo.update(
{ openid, siteId },
updateData
);
return true;
}
}