代码拉取完成,页面将自动刷新
一直想做一款基于若依后台管理系统的微信小程序,最近比较闲了,所以想做个简单的东西。主要为了学习,走一遍整个过程,也是为像我这种小白提供些简单的学习内容。
喜欢的话可以给个赞赏,谢谢~
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
*此处忽略了你环境搭建以及若依框架下载部署
CREATE TABLE `ruoyi_abucoder_uniappwx`.`abucoder_banners` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`banner_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '轮播图标题',
`banner_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '轮播图连接',
`banner_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '轮播图表' ROW_FORMAT = Dynamic;
CREATE TABLE `ruoyi_abucoder_uniappwx`.`abucoder_items` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`item_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称',
`item_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目介绍',
`item_content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目内容',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '推荐项目表' ROW_FORMAT = Dynamic;
CREATE TABLE `ruoyi_abucoder_uniappwx`.`abucoder_programs` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`program_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目名称',
`program_tag` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签',
`program_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片',
`program_content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目介绍',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '推荐开源项目表' ROW_FORMAT = Dynamic;
CREATE TABLE `ruoyi_abucoder_uniappwx`.`abucoder_wxuser` (
`id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`nickname` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信名称',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
`openid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '微信唯一标识符',
`gender` int(1) NULL DEFAULT NULL COMMENT '性别',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信用户表' ROW_FORMAT = Dynamic;
filterChainDefinitionMap.put("/wxapi/**", "anon");//放行微信请求的所有接口地址
filterChainDefinitionMap.put("/profile/**", "anon");//放行微信请求的所有图片接口地址
2. 编写我们的微信登录授权接口
/**
* author:AbuCoder QQ:932696181
* 微信小程序登录授权接口
* Gitee:https://gitee.com/rahman
*/
@RestController
@RequestMapping("/wxapi")
public class WxloginController {
@Autowired
IAbucoderWxuserService iAbucoderWxuserService;
/**
* 你自己的微信小程序APPID
*/
<<<<<<< HEAD
private final static String AppID = "";
/**
* 你自己的微信APP密钥
*/
private final static String AppSecret = "";
=======
private final static String AppID = "你自己的appid";
/**
* 你自己的微信APP密钥
*/
private final static String AppSecret = "你自己的密钥";
>>>>>>> f34851bf2ab2f8b25f1d381c3949a3b7246d68d9
/**
* 登录时获取的 code(微信官方提供的临时凭证)
* @param object
* @return
*/
@PostMapping("/wxlogin")
public AjaxResult wxLogin(@RequestBody JSONObject object){
//微信官方提供的微信小程序登录授权时使用的URL地址
String url = "https://api.weixin.qq.com/sns/jscode2session";
System.out.println(object);
/**
* 拼接需要的参数
* appid = AppID 你自己的微信小程序APPID
* js_code = AppSecret 你自己的微信APP密钥
* grant_type=authorization_code = code 微信官方提供的临时凭证
*/
String params = StrUtil.format("appid={}&secret={}&js_code={}&grant_type=authorization_code", AppID, AppSecret, object.get("code"));
//开始发起网络请求,若依管理系统自带网络请求工具,直接使用即可
String res = HttpUtils.sendGet(url,params);
System.out.println("输出请求到的结果");
System.out.println(res);
JSONObject jsonObject = JSON.parseObject(res);
String session_key = (String) jsonObject.get("session_key");
String openid = (String) jsonObject.get("openid");
if (StrUtil.isEmpty(openid)) {
return AjaxResult.error("未获取到openid");
}
String token = UUID.randomUUID().toString();
Map<String, Object> data = new HashMap<>();
data.put("token", token);
data.put("session_key", session_key);
data.put("openid", openid);
data.put("state",true);
data.put("nickName",object.get("nickName"));
data.put("avatarUrl",object.get("avatarUrl"));
/**先通过openid来查询是否存在*/
AbucoderWxuser abucoderWxuser = iAbucoderWxuserService.selectAbucoderWxuserOpenID(openid);
if (abucoderWxuser == null){
/**如果不存在就插入到我们的数据库里*/
AbucoderWxuser wxuser = new AbucoderWxuser();
wxuser.setNickname(String.valueOf(object.get("nickName")));
wxuser.setGender((Integer) object.get("gender"));
wxuser.setAvatar(String.valueOf(object.get("avatarUrl")));
wxuser.setOpenid(openid);
wxuser.setCreateTime(DateUtils.getNowDate());
wxuser.setCreateBy("Abu");
iAbucoderWxuserService.insertAbucoderWxuser(wxuser);
}else {
/**如果存在就更新数据库里原有的数据*/
abucoderWxuser.setNickname(String.valueOf(object.get("nickName")));
abucoderWxuser.setGender((Integer) object.get("gender"));
abucoderWxuser.setAvatar(String.valueOf(object.get("avatarUrl")));
abucoderWxuser.setUpdateTime(DateUtils.getNowDate());
abucoderWxuser.setUpdateBy("Abu");
iAbucoderWxuserService.updateAbucoderWxuser(abucoderWxuser);
}
/**返回结果集到前段*/
return AjaxResult.success(data);
}
}
login(){
var that = this;
uni.getUserProfile({
desc: '获取您的微信信息以授权小程序',
lang: 'zh_CN',
success: UserProfileRes => {
uni.showLoading({title:"登录中....",mask:true})
console.log(UserProfileRes)
uni.login({
provider: 'weixin',
success: function(loginRes) {
let form = {};
form.code = loginRes.code; //用户code 注:用户的code每次登录都是随机的,所以不需要进行存储
form.avatarUrl = UserProfileRes.userInfo.avatarUrl; //用户头像
form.nickName = UserProfileRes.userInfo.nickName; //用户微信名
form.gender = UserProfileRes.userInfo.gender;//性别
that.request('wxlogin', form, 'POST').then(wxloginres=>{
console.log("wxloginres: ", wxloginres)
if(wxloginres.data.state){
setTimeout(function () {
uni.hideLoading();
}, 2000);
that.userinfo = wxloginres.data
setToken(wxloginres.data.openid)
setUserInfo(wxloginres.data); //模拟存储用户信息
}else{
uni.showToast({
icon:"none",
title: "登录失败,请稍后试试!",
duration:2000
})
}
})
},
fail(err) {
console.log(err)
}
});
},
fail:err=>{
console.log(err)
}
})
}
/**
* author:AbuCoder QQ:932696181
* 微信小程序获取轮播图接口
* Gitee:https://gitee.com/rahman
*/
@RestController
@RequestMapping("/wxapi")
public class WxBannerController {
@Autowired
IAbucoderBannersService iAbucoderBannersService;
@GetMapping("/loadBaneer")
public AjaxResult loadBaneer(AbucoderBanners abucoderBanners){
List<AbucoderBanners> bannerslist = iAbucoderBannersService.selectAbucoderBannersList(abucoderBanners);
return AjaxResult.success(bannerslist);
}
}
getBannerlist(){
this.request('loadBaneer', 'GET').then(res=>{
console.log("res:",res)
if(res){
this.bannerList = res.data
}
})
},
/**
* author:AbuCoder QQ:932696181
* 微信小程序获取通知公告接口
* Gitee:https://gitee.com/rahman
*/
@RestController
@RequestMapping("/wxapi")
public class WxNoticeController {
@Autowired
INoticeService iNoticeService;
@GetMapping("/loadNotice")
public AjaxResult loadNotice(){
List<Notice> notices = iNoticeService.selectAllNotice();
return AjaxResult.success(notices);
}
}
getNoticelist(){
this.request('loadNotice', 'GET').then(res=>{
console.log("res:",res)
if(res){
this.messageData = res.data
}
})
},
/**
* author:AbuCoder QQ:932696181
* 微信小程序获取推荐小程序接口
* Gitee:https://gitee.com/rahman
*/
@RestController
@RequestMapping("/wxapi")
public class WxItemsController {
@Autowired
IAbucoderItemsService iAbucoderItemsService;
@GetMapping("/loadItems")
public AjaxResult loadItems(AbucoderItems abucoderItems){
List<AbucoderItems> itemslist = iAbucoderItemsService.selectAbucoderItemsList(abucoderItems);
return AjaxResult.success(itemslist);
}
}
getItemslist(){
this.request('loadItems', 'GET').then(res=>{
console.log("res:",res)
if(res){
this.curriculum = res.data
}
})
},
/**
* author:AbuCoder QQ:932696181
* 微信小程序获取推荐项目接口
* Gitee:https://gitee.com/rahman
*/
@RestController
@RequestMapping("/wxapi")
public class WxProgramController {
@Autowired
IAbucoderProgramsService iAbucoderProgramsService;
@GetMapping("/loadProgramms")
public AjaxResult loadProgramms(AbucoderPrograms abucoderPrograms){
List<AbucoderPrograms> programmslist = iAbucoderProgramsService.selectAbucoderProgramsList(abucoderPrograms);
return AjaxResult.success(programmslist);
}
}
getProgrammslist(){
this.request('loadProgramms', 'GET').then(res=>{
console.log("res:",res)
if(res){
this.projectList = res.data
}
})
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。