uniapp生活记账小程序

news2024/9/20 15:03:04

Springboot +vue +uniapp生活记账小程序,前端采用vue uni-app设计开发,后端采用 Springboot  开发前端对应的数据接口,首页显示生活账单信息,我的野蛮统计记账信息和微信登录状况。记账页面可以,根据不同类别的日常消费记账,数据库mysql  缓存redis ,

主页面如下:

记账页面如下:

微信登录前端的代码如下:

login(state, fun) {
			var data = {}
			//获取用户信息
			wx.getUserProfile({
				desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
				success: info => {
					data["nickName"] = info.userInfo.nickName;
					data["rawData"] = info.rawData;
					data["signature"] = info.signature;
					data["encryptedData"] = info.encryptedData;
					data["iv"] = info.iv;
					wx.login({
						success: res => {
							console.log("获取code:"+res.code)
							data["code"] = res.code;
							if (res.code) {
								//发起网络请求
								request("/sys-login/wxLogin",JSON.stringify(data),"post").then(res=>{
									uni.setStorageSync("token",res.token);
									state.userInfo = info;
									uni.$u.toast("登录成功")
									if(fun!=null && fun!=""){
										fun();
									}
								}).catch(err=>{
									uni.$u.toast(""+err.msg)
									//登录失败清楚token
									uni.removeStorageSync('token');
									uni.$u.toast(err.msg)
									//登录成功后回调
								})
							} else {
								uni.$u.toast('登录失败!' + res.errMsg)
							}

						}
					})

				}
			})
		},

后端登录控制类代码

 @ApiOperation("微信登录")
    @RequestMapping(value = "/wxLogin",method = RequestMethod.POST)
    @Transactional
    public JsonResult wxLogin(@RequestBody @Valid SysWxUser en){
        if(StringUtil.isEmpty(en.getCode())){
            return JsonResult.error("code不能为空");
        }
        //微信接口服务,通过调用微信接口服务中jscode2session接口获取到openid和session_key
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + secret + "&js_code=" + en.getCode() + "&grant_type=authorization_code";
        String str = com.bowei.officialwebsite.utils.WeChatUtil.httpRequest(url, "GET", null);
        JSONObject jsonObject= JSONObject.parseObject(str);
        //设置openID
        en.setOpenId(jsonObject.getString(AppletConstants.openId));
        en.setUnionId(jsonObject.getString(AppletConstants.unionId));
        //更新用户
        int i = sysWxUserMapper.update(
                en,
                new QueryWrapper<SysWxUser>()
                        .eq("open_id", en.getOpenId())
        );
        if(i==0){
            en.setCreateDate(LocalDateTime.now());
            //插入一个用户
            sysWxUserMapper.insert(en);
        }else{
            //查询出用户
            SysWxUser wxUser = sysWxUserMapper.selectOne(new QueryWrapper<SysWxUser>().eq("open_id", en.getOpenId()));
            en.setId(wxUser.getId());
        }
        HashMap<String, Object> jwtmap = new HashMap<>();
        jwtmap.put("id",en.getId());
        jwtmap.put("nickName",en.getNickName());
        //生成token
        String sign = JwtUtils.sign(jwtmap);
        //将token也加进去  先写个假的
        jsonObject.put("token",sign);

        //将用户信息存到redis
        redisUtil.set(RedisConstants.USER_INFOS_PREFIX+sign,jwtmap,EXPIRE_TIME);

        return JsonResult.success(jsonObject);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL集群技术4——MySQL路由

mysql-route MySQL 路由&#xff08;Routing&#xff09;通常指的是在 MySQL 架构中如何处理客户端请求和数据流向的问题。在 MySQL 中&#xff0c;路由可以涉及多种不同的场景和技术&#xff0c;包括但不限于反向代理、负载均衡、读写分离等。下面我将详细介绍这些场景和技术…

如何反射获取类的全部信息?(java代码)

什么是反射&#xff1f; 反射是 Java 提供的一种机制&#xff0c;允许在运行时动态地获取类的信息&#xff08;如类的名称、方法、字段等&#xff09;&#xff0c;以及创建对象和调用方法。反射利用了 java.lang.reflect 包中的类&#xff0c;如 Class、Method、Field 和 Cons…

仿BOSS招聘系统开发:构建高效、智能的在线招聘平台

在数字化时代&#xff0c;招聘行业正经历着前所未有的变革。BOSS直聘作为国内领先的招聘平台&#xff0c;以其高效的匹配机制、丰富的职位信息和便捷的用户体验&#xff0c;赢得了广泛的市场认可。本文将探讨如何开发一个仿照BOSS招聘系统的在线招聘平台&#xff0c;旨在为企业…

8月28复盘日记

8月28复盘日记 前言今日感恩今日知识今日反思今日名言 前言 今天早上是六点半起床嘻嘻&#xff0c;这两天因为生理期,皮质醇似乎有些高,入睡会有些困难。但是因为今天是开学第一天&#xff0c;意味着&#xff0c;健身房恢复晨练了&#xff01;我可太喜欢晨练时间安安静静的健身…

怎么又快又好制作流程图?试试这2款流程图制作神器,专业!

推荐2款简单好用的流程图制作软件&#xff0c;帮你轻松搞定各种流程图。 1、GitMind 点点击链接直达官网>>gitmind.cn GitMind是一个在线流程图制作工具&#xff0c;模板类型全&#xff0c;支持免费下载&#xff0c;由国内团队研发&#xff0c;操作简单&#xff0c;使用…

功率器件和滤波器件的选型及测试方法

目录 一、功率器件的选型及测试方法 1.1功率器件的选型 1.2功率器件的测试方法 二、滤波器件的选型及测试方法 2.1滤波器件的选型 2.2滤波器件的测试方法 三、表格总结 一、功率器件的选型及测试方法 1.1功率器件的选型 在电子电路设计中&#xff0c;功率器件的选择是…

c++异常处理(c++11版)与智能指针 SmartPtr 的应用(主讲shared_ptr浅实现)

引子&#xff1a;找C语言的异常时&#xff0c;你是否会被奇怪的错误码或程序终止报错而感到无奈&#xff0c;对找不到错误在哪的心烦&#xff1f;在害怕内存泄漏时&#xff0c;你是否每一步&#xff0c;每一句代码都要仔细分析&#xff0c;在用完之后进行资源空间的释放&#x…

用powermock编写单元测试

1、pom文件引入jar包 <!-- 单元测试 start --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency> <dependency>&…

Jenkins服务安装配置

什么是 Jenkins Jenkins 是一个开源的自动化服务器&#xff0c;主要用于持续集成&#xff08;CI&#xff0c;Continuous Integration&#xff09;和持续交付/持续部署&#xff08;CD/CD&#xff0c;Continuous Delivery/Continuous Deployment&#xff09;。它帮助开发团队自动…

48.【C语言】结构体补充

承接20.【C语言】初识结构体&#xff08;重要&#xff09;中的结构体成员的访问 目录&#xff1a; 1.结构体创建 2.利用函数控制结构体 3.使用“结构体指针变量-->结构体成员变量”来修改结构体的数据 4.传值还是传址&#xff1f; 1.结构体创建 依据第20篇&#xff0c;可以…

Kafka【三】Windows下安装Kafka集群

前文&#xff1a;Kafka【一】Windows下安装单节点Kafka ① 安装ZooKeeper 在D:\创建文件夹kafkacluster&#xff0c;将kafka安装包kafka_2.12-3.6.1解压缩到kafka文件夹。 修改文件夹名为kafkazk 因为kafka内置了ZooKeeper软件&#xff0c;所以此处将解压缩的文件作为ZooKeep…

Ubuntu20.04可以同时安装ROS(Noetic)和ROS2(Humble)

Ubuntu系统确实可以同时安装ROS&#xff08;Robot Operating System&#xff09;和ROS2&#xff0c;但需要注意一些关键步骤和配置以确保两者能够顺利共存并独立运行。以下是在Ubuntu上同时安装ROS和ROS2的详细步骤和注意事项&#xff1a; 安装前准备 检查Ubuntu版本&#xff…

CTFHub SSRF靶场通关攻略

内网访问 首先进入环境 在url后面输入 http://127.0.0.1/flag.php访问&#xff0c;得出flag 伪协议读取文件 进入环境后再url后面拼接 file:///var/www/html/flag.php 访问后是&#xff1f;&#xff1f;&#xff1f;&#xff0c;那么我们F12检查源码得出flag 端口扫描 我们进行…

【苍穹外卖】Day2 员工接口 分类接口

1 新增员工 1.1 设计 前端表单&#xff1a; 路径&#xff1a;/admin/employee 方法&#xff1a;POST 本项目约定: 管理端发出的请求&#xff0c;统一使用 /admin 作为前缀 用户端发出的请求&#xff0c;统一使用 /user 作为前缀 存在数据库中的实体类对象&#xff1a; pac…

73 OSPF图解LSA(华三)

71 OSPF多区域实验(华三)-CSDN博客文章浏览阅读166次,点赞8次,收藏3次。实操https://blog.csdn.net/qq_56248592/article/details/141563010?spm=1001.2014.3001.5501 一 基础配置省略 上次的原图基础上扩展

openGuass——表空间、数据库、Schema详解

目录 一、表空间 二、数据库 三、模式:Schema 四、database schema table之间的关系 五、表 六、分区表 七、索引 八、视图 九、序列 十、同义词 十一、约束 一、表空间 自带了两个表空间&#xff1a;pg_default和pg_global。查看命令&#xff1a;\db 默认表空间pg…

力扣刷题(2)

寻找两个正序数组的中位数 寻找两个正序数组的中位数-力扣 思路: 合并两个正序数组找中位数 double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {int arr[nums1Size nums2Size];int n1 0, n2 0;int m 0;int q;//合并两个正序数组w…

非阻塞轮询

目录 前言1.options 参数2. 非阻塞轮询3. 模拟非阻塞轮询4. 非阻塞轮询 执行其它任务 前言 继上一篇文章 详谈进程等待 讲到 waitpid 系统调用&#xff0c;在该系统调用接口中还有一个 options 参数&#xff0c;本篇文章介绍 watipid 系统调用中的options 参数 以及 什么是非…

numpy 中的降维与升维

升维&#xff08;Dimensionality Augmentation&#xff09;&#xff1a;增加数据的维度&#xff0c;通常用于提供更多信息或从不同的角度看待数据。 降维&#xff08;Dimensionality Reduction&#xff09;&#xff1a;减少数据的维度&#xff0c;通常用于简化数据或去除无关紧…

微信删除了好友如何恢复?试试这3种方法,赶紧收藏!shuju

推荐3种恢复微信聊天记录的方法&#xff0c;帮你找回微信好删除好友的聊天记录&#xff01; 操作简单&#xff0c;可用于iOS、安卓手机和PC电脑端 1、万兴数据管家 点击直达官网下载>>https://huifu.wondershare.cn 万兴数据管家是一款专业的微信数据恢复软件。 支持苹…