123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- 'use strict';
- const {
- mpWxGetSessionKey,
- mpWxGetPhoneNo
- } = require('wx-auth')
- const moment = require('moment');
- const db = uniCloud.database();
- const dbCmd = db.command
- const $ = dbCmd.aggregate
- const cardCollection = db.collection('card')
- const visitorCollection = db.collection('visitor')
- const userCollection = db.collection('user');
- let uniID = require('uni-id')
- const createConfig = require('uni-config-center')
- const uniIdConfig = createConfig({
- pluginId: 'uni-id'
- }).config()
- exports.main = async (event, context) => {
- uniID = uniID.createInstance({
- context
- })
- console.log('event : ' + JSON.stringify(event))
- const {
- operation,
- data
- } = event;
- try {
- console.log('operation : ' + operation)
- switch (operation) {
- case "getInfo": {
- return true;
- }
- case "loginByWx": {
- return await loginByWx(data);
- }
- case "getWxConfigPart": {
- return await getWxConfigPart(data);
- }
- case "getPhoneByWeixin": {
- return await getPhoneByWeixin(data);
- }
- case "bindPhone": {
- return await bindPhone(data);
- }
- case "getCard": {
- return await getCard(data);
- }
- case "getMyCard": {
- return await getMyCard(data);
- }
- case "saveCard": {
- return await saveCard(data);
- }
- case "getVisitorList": {
- return await getVisitorList(data);
- }
- case "getMyVisitorList": {
- return await getMyVisitorList(data);
- }
- default: {
- throw new Error("未找到接口")
- }
- }
- } catch (e) {
- var msg = e.toString().replace("Error: ", "")
- console.log("出错了", msg)
- return {
- code: 50101,
- msg: msg
- };
- }
- };
- /**
- * 绑定手机
- */
- async function bindPhone() {
- var user = await userCollection.where({
- _id: data.user_id
- }).get();
- if (user.data.length == 0)
- throw new Error("用户不存在")
- await userCollection.doc(data.user_id).update({
- phone: data.phone
- });
- }
- /**
- * 获取名片
- */
- async function getCard(data) {
- var user = await userCollection.where({
- _id: data.uid
- }).get();
- if (user.data.length == 0)
- throw new Error("用户不存在")
- var card = await cardCollection.where({
- _id: data.id
- })
- .get();
- if (card.data.length == 0) {
- return {
- code: 200,
- data: {
- name: "",
- phone: "",
- job: "",
- company: "",
- head_img: "",
- address: "",
- phone: "",
- wechat: "",
- qq: "",
- email: "",
- intro: "",
- _id: ""
- }
- }
- }
-
- var visitors = await visitorCollection.where({
- uid: user.data[0]._id,
- card_id: data.id
- }).get();
- if (visitors.data.length == 0) {
- var visitor = {
- card_id: data.id,
- uid: user.data[0]._id,
- name: user.data[0].nickName,
- head_img: user.data[0].avatar,
- phone: user.data[0].phone
- };
- var res = await visitorCollection.add(visitor);
- }
- return {
- code: 200,
- data: card.data[0]
- };
- }
- /**
- * 获取名片
- */
- async function getMyCard(data) {
- var user = await userCollection.where({
- _id: data.uid
- }).get();
- if (user.data.length == 0) {
- throw new Error("用户不存在")
- }
- var card = await cardCollection.where({
- uid: data.uid
- })
- .get();
- if (card.data.length == 0) {
- return {
- code: 200,
- data: {
- name: "",
- phone: "",
- job: "",
- company: "",
- head_img: "",
- address: "",
- phone: "",
- wechat: "",
- qq: "",
- email: "",
- intro: "",
- _id: ""
- }
- }
- }
- return {
- code: 200,
- data: card.data[0]
- };
- }
- /**
- * 提交名片
- */
- async function saveCard(data) {
- const now = Date.now()
- if (data.length == 0) {
- throw new Error("请勿提交空内容");
- }
- var id = "";
- var user = await userCollection.where({
- _id: data.uid
- }).get();
- if (user.data.length == 0)
- throw new Error("用户不存在")
- var card = await cardCollection.where({
- uid: user.data[0]._id
- })
- .get();
- if (data.name == "") {
- throw new Error("请填写姓名");
- }
- if (data.phone == "") {
- throw new Error("请填写手机号");
- }
- if (card.data.length == 0) {
- data.uid = user.data[0]._id;
- data.create_time = now;
- var res = await cardCollection.add(data);
- console.log("cardCollection.add",res)
- id = res.id;
- } else {
- await cardCollection.doc(card.data[0]._id).update({
- name: data.name,
- phone: data.phone,
- job: data.job,
- company: data.company,
- head_img: data.head_img,
- address: data.address,
- phone: data.phone,
- wechat: data.wechat,
- qq: data.qq,
- email: data.email,
- intro: data.intro,
- create_time: now
- });
- id = card.data[0]._id;
- }
- return {
- code: 200,
- data: {
- id: id
- }
- };
- }
- /**
- * 获取浏览列表
- */
- async function getVisitorList(data, token, deviceId) {
- const now = Date.now()
- var total = await visitorCollection.where({
- card_id: dbCmd.eq(data.card_id)
- }).count();
- var res = await visitorCollection.where({
- card_id: dbCmd.eq(data.card_id)
- })
- .orderBy('create_time', 'desc')
- .skip(data.skip)
- .limit(data.limit)
- .get();
- return {
- code: 200,
- data: {
- total: total.total,
- items: res.data
- }
- };
- }
- /**
- * 获取浏览列表
- */
- async function getMyVisitorList(data, token, deviceId) {
- const now = Date.now()
- var total = await visitorCollection.where({
- card_id: dbCmd.eq(data.uid)
- }).count();
- var res = await visitorCollection.where({
- card_id: dbCmd.eq(data.uid)
- })
- .orderBy('create_time', 'desc')
- .skip(data.skip)
- .limit(data.limit)
- .get();
- return {
- code: 200,
- data: {
- total: total.total,
- items: res.data
- }
- };
- }
- // 通过微信登录
- async function loginByWx(data) {
- // 获取openid
- const wxUser = await mpWxGetSessionKey(data)
- console.log("wxUser", wxUser)
- if (wxUser.status == 0) {
- throw new Error(wxUser.msg)
- }
- // 通过openid查库里的数据
- const result = await userCollection.where({
- openId: wxUser.userInfo.openId
- }).get()
- let id = null;
- console.log("result", result.data[0])
- const now = moment().format('YYYY-MM-DD HH:mm:ss');
- // 如果已经有了,则更新库里的信息
- if (result.data.length > 0) {
- let user = result.data[0]
- const r = await userCollection.doc(user._id).update({
- nickName: wxUser.userInfo.nickName,
- gender: wxUser.userInfo.gender,
- avatar: wxUser.userInfo.avatar,
- city: wxUser.userInfo.city,
- language: wxUser.userInfo.language,
- updateTime: now
- })
- return {
- code: 200,
- data: {
- id: user._id,
- nickName: wxUser.userInfo.nickName,
- gender: wxUser.userInfo.gender,
- avatar: wxUser.userInfo.avatar,
- city: wxUser.userInfo.city,
- language: wxUser.userInfo.language,
- sessionKey: wxUser.session_key
- }
- };
- } else {
- // 若没有,则插入该用户数据
- const r = await userCollection.add({
- nickName: wxUser.userInfo.nickName,
- gender: wxUser.userInfo.gender,
- avatar: wxUser.userInfo.avatar,
- openId: wxUser.userInfo.openId,
- avatar: wxUser.userInfo.avatar,
- city: wxUser.userInfo.city,
- language: wxUser.userInfo.language,
- createTime: now,
- updateTime: now
- })
- return {
- code: 200,
- data: {
- id: r.id,
- nickName: wxUser.userInfo.nickName,
- openId: wxUser.userInfo.openId,
- gender: wxUser.userInfo.gender,
- avatar: wxUser.userInfo.avatar,
- city: wxUser.userInfo.city,
- language: wxUser.userInfo.language,
- sessionKey: wxUser.session_key
- }
- }
- }
- }
- //获取微信授权手机号码
- async function getPhoneByWeixin(data) {
- var res = await mpWxGetPhoneNo(data);
- return {
- code: 200,
- data: res
- }
- }
- async function getWxConfigPart(data) {
- var res = await getWxConfigPart(data);
- return {
- code: 200,
- data: res
- }
- }
|