chore: align common layer to PHP; add addon/member account; fix addon schema; clean old tools; wire modules; build passes
This commit is contained in:
149
wwjcloud/src/common/weapp/services/weapp.service.ts
Normal file
149
wwjcloud/src/common/weapp/services/weapp.service.ts
Normal file
@@ -0,0 +1,149 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user