19年畢業時做的一個基于SSM框架+微信小程序的校園二手商城系統,工作以后一直沒抽出時間來整理一下,現在有時間了,專門寫一篇文章匯總整理一下。
首先介紹一下用到的技術:
前臺:微信小程序
后臺:采用Spring+SpringMVC+Mybatis框架進行開發,使用Spring的攔截器功能進行未登錄攔截,或其他信息攔截,極大提高了系統被攻擊的危險系數,保證了系統的安全性。
開發工具:Eclipse
數據庫:采用MySQL,只有超級管理員以及指定了操作權限的用戶才有權限進行表的數據操作,保證了數據存儲的安全性。
服務器:該系統部署在騰訊云服務器上,由騰訊云提供的服務器和數據庫環境可以增強系統的穩定性。服務器采用Tomcat9,通過配置部署描述器(web.xml)來對某些內容進行訪問控制,只有通過身份驗證的用戶才能查看想要訪問的servlet資源。
正式演示我是用的騰訊云試用30天,前期開發的話使用本地Tomcat服務器完全夠用。
介紹一下核心功能:
我給我的校園二手商城系統起名叫“小二郎”,取的二手商品的“二”字,圖標如下:
【圖標】
系統的總體結構設計如下:
截圖了系統的幾個核心界面:
1.“信息統計”
統計最近一周的用戶新增和商品增減情況,采用百度Echarts插件來實現。主要包括新增用戶數量統計,統計每日新增登錄系統的人數;商品出售發布數量統計,統計每日用戶發布二手商品數量;商品求購發布數量統計,統計每日二手商品求購數量;商品成交數量統計,統計每日商品交易成功數量。以上這幾種數量統計我采用折線圖的方式進行展示,直觀清晰,可以直觀的反映出用戶增加以及商品增減數量的變化情況。
2.“用戶信息管理”
3.“出售商品信息管理”
4.“違規投訴管理”
違規投訴管理界面,主要負責展示用戶提交的違規投訴信息。主要包括商品編號,投訴用戶,違規用戶,違規次數,投訴理由,投訴狀態等。還可以查看違規用戶查看違規商品,確認違規后點擊“確認違規”按鈕,則后臺自動記錄用戶違規次數,累計達到三次進行賬戶凍結操作,若無違規現象點擊“無違規”按鈕。
5.“訂單管理”
6.“個人資料編輯”
7.“出售商品編輯”
8.小程序端“商品列表”
9.小程序端“我買到的”
微信小程序端的我買到的界面,主要負責展示用戶購買的二手商品的訂單信息,并且可以動態展示訂單的狀態信息。
10.小程序端“商品出售發布”
項目文件夾:
后端,微信端,數據庫(有11個表~)
//獲取用戶信息app.requestFun(app.globalData.apiConfig.getUserInfoById,'GET',{'id': userInfo.mid},function (res) {if (!that.data.isPullDownRefresh) {//初步加載wx.hideLoading();} else {//下拉刷新that.setData({'isPullDownRefresh': false})wx.hideNavigationBarLoading() //完成停止加載wx.stopPullDownRefresh() //停止下拉刷新}if (res.statusCode == 200) {wx.hideLoading();if (res.data.code == 1) {res.data.data.avatarUrl = res.data.data.headimg;var imgArr = [];if (res.data.data.idCardImg!=null){for (var i = 0; i < res.data.data.idCardImg.split(",").length; i++) {imgArr.push(res.data.data.idCardImg.split(",")[i])}}if (res.data.data.status == '1011'){//已認證that.setData({closeStyle:'display:none'})}that.setData({userInfo: res.data.data,photos: imgArr})}}})
/*** 處理登錄請求*/@RequestMapping(value = "/getOpenid")@ResponseBodypublic Map getOpenid(String encryptedData, String iv, String code) {Map map = new HashMap();//登錄憑證不能為空if (code == null || code.length() == 0) {map.put("code", 0);map.put("msg", "code 不能為空");return map;}//小程序唯一標識 (在微信小程序管理后臺獲取)String wxspAppid = appID;//小程序的 app secret (在微信小程序管理后臺獲取)String wxspSecret = appSecret;//授權(必填)String grant_type = "authorization_code";String grant_type2 = "client_credential";1、向微信服務器 使用登錄憑證 code 獲取 session_key 和 openid //請求參數String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type;String params2 = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&grant_type=" + grant_type2;//發送請求String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);String sr2 = HttpRequest.sendGet("https://api.weixin.qq.com/cgi-bin/token", params2);//解析相應內容(轉換成json對象)JSONObject json = JSONObject.fromObject(sr);JSONObject json2 = JSONObject.fromObject(sr2);//獲取會話密鑰(session_key)String session_key = json.get("session_key").toString();String access_token = json2.get("access_token").toString();//用戶的唯一標識(openid)String openid = (String) json.get("openid");2、對encryptedData加密數據進行AES解密 try {String result = AesCbcUtil.decrypt(encryptedData, session_key, iv, "UTF-8");if (null != result && result.length() > 0) {map.put("code", 1);map.put("msg", "解密成功");JSONObject userInfoJSON = JSONObject.fromObject(result);User user = new User();user.setNickName((String)userInfoJSON.get("nickName"));user.setHeadimg((String)userInfoJSON.get("avatarUrl"));user.setOpenId((String) userInfoJSON.get("openId"));user.setGender((int)userInfoJSON.get("gender"));User user1=userService.selectUserByOpenId(user.getOpenId());if(user1!=null) {userService.updateUserInfo(user);user.setId(user1.getId());}else {userService.addWXUserInfo(user);}Map userInfo = new HashMap();userInfo.put("openId", userInfoJSON.get("openId"));userInfo.put("nickName", userInfoJSON.get("nickName"));userInfo.put("gender", userInfoJSON.get("gender"));userInfo.put("city", userInfoJSON.get("city"));userInfo.put("province", userInfoJSON.get("province"));userInfo.put("country", userInfoJSON.get("country"));userInfo.put("avatarUrl", userInfoJSON.get("avatarUrl"));userInfo.put("unionId", userInfoJSON.get("unionId"));userInfo.put("accessToken",access_token);userInfo.put("id",user.getId());if(user1!=null) {userInfo.put("qq",user1.getQq());userInfo.put("email",user1.getEmail());userInfo.put("phone",user1.getPhone());userInfo.put("schoolId",user1.getSchoolId());userInfo.put("schoolName",user1.getSchoolName());userInfo.put("deptId",user1.getDeptId());userInfo.put("deptName",user1.getDeptName());userInfo.put("majorId",user1.getMajorId());userInfo.put("majorName",user1.getMajorName());userInfo.put("addr",user1.getAddr());userInfo.put("remark",user1.getRemark());userInfo.put("userName",user1.getUserName());userInfo.put("idNum,",user1.getIdNum());userInfo.put("status,",user1.getStatus());}map.put("userInfo", userInfo);return map;}} catch (Exception e) {e.printStackTrace();}map.put("code", 0);map.put("msg", "解密失敗");return map;}
總結
以上是生活随笔為你收集整理的基于SSM和微信小程序的校园二手商城源码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。