著者について: Java、フロントエンド、Python は長年にわたって開発されており、エンジニア、プロジェクト マネージャー、アーキテクトとして働いてきました。
主な内容:Javaプロジェクト開発、Pythonプロジェクト開発、大学データ・AIプロジェクト開発、マイコンプロジェクト設計、インタビュー技術編纂、最新技術共有
集めて、いいねして、迷わないように、作者をフォローすると良いです。
記事の最後にあるソースコードを入手してください
プロジェクト番号: BS-XCX-024
1. 環境の紹介
ロケール: Java: jdk1.8
データベース: MySQL: mysql5.7
アプリケーションサーバー: Tomcat: tomcat8.5.31
開発ツール: IDEA または eclipse+WeChat 開発者ツール
開発技術: Springboot+vue+WeChat アプレット
2. プロジェクトの紹介
このプロジェクトは、Springboot+vue+WeChat アプレットに基づいたキャンパス中古品モール取引システムのみを実装します。システムのバックエンドは springboot+mybatis を使用して開発および実装され、バックエンド管理ページは Vue+ElementUI を使用して開発および実装され、クライアントは WeChat アプレットに基づいて開発および実装されています。フロントエンドユーザーはWeChatを利用してミニプログラムにログインすると、オンラインで中古品を閲覧、購入、注文、コメントすることができると同時に、対応する中古品を公開したり、自分の注文を管理したりすることもできる情報や販売情報など。管理者はバックエンド管理システムにログインして、担当者、製品カテゴリ、製品、注文、その他の関連情報を管理できます。詳細については以下を参照してください。
3. システム表示
フロントエンド アプレット
製品の詳細では、オンラインでメッセージを送信して発行者と通信したり、オンラインでコメントしたり、オンラインで注文したりできます。
製品分類クエリ
中古品を投稿する
オンラインでの情報交換
パーソナル センター: 自分の公開製品の管理、自分のコレクション記録の表示、自分の注文の表示、販売された注文の表示、コメントやメッセージ返信の表示などを行うことができます。
バックステージマネジメント
分類管理
製品管理
その他若干
4.コアコード表示
package com.spboot.tx.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.spboot.tx.mapper.*;
import com.spboot.tx.pojo.*;
import com.spboot.tx.service.*;
import com.spboot.tx.utils.*;
import io.swagger.annotations.*;
import java.io.*;
import java.util.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
@Api(tags = { "管理员控制器" })
@RestController
@RequestMapping("/api/admins")
public class AdminsController {
@Autowired
public AdminsService adminsService;
@Autowired
public AdminsMapper adminsMapper;
@Resource
private HttpServletRequest request;
@Resource
private HttpServletResponse response;
@ApiOperation(value = "获取全部管理员", httpMethod = "GET")
@RequestMapping("/selectAll")
public ResponseData<List<Admins>> selectAll() {
return adminsService.selectAll();
}
@ApiOperation(value = "根据条件筛选获取管理员列表,并分页", httpMethod = "POST")
@RequestMapping("/selectPages")
public ResponseData selectPages(@RequestBody Map<String, Object> req) {
return adminsService.selectPages(req);
}
@ApiOperation(value = "根据过滤信息获取相关数据", httpMethod = "POST")
@RequestMapping("/filter")
public ResponseData<List<Admins>> filter(@RequestBody Map<String, Object> req) {
return adminsService.filter(req);
}
@Autowired
private AuthenticationManager authenticationManager;
@ApiOperation(value = "修改密码", httpMethod = "POST")
@PostMapping("/editPassword")
public ResponseData<Object> editPassword(
@RequestParam(required = false) String oldPassword,
@RequestParam(required = false) String newPwd,
@RequestParam(required = false) String newPwd2
) {
Authentication authentication = null;
SessionUser user = Request.user();
if (!user.getCx().equals("小程序")) {
if (StrUtil.hasBlank(oldPassword) || StrUtil.hasBlank(newPwd) || StrUtil.hasBlank(newPwd2)) {
return JsonResult.error("请输入密码");
}
if (!newPwd.equals(newPwd2)) {
return JsonResult.error("确认密码不正确,请重试");
}
try {
//会自动调用loadUserByUsername方法,若查到用户,且用户名密码正确,则验证通过。
// 关于密码的解密,配置在WebSecurityConfig类中(与注册时的加密策略保持相同)
String pwd = oldPassword;
authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getUsername(), pwd));
} catch (Exception e) {
e.printStackTrace();
//当loadUserByUsername方法找不到用户时,会进入此异常
//若查到用户,且用户名密码不匹配,会进入此异常
return JsonResult.error("原密码错误");
}
Admins admins = adminsMapper.selectById(user.getId());
admins.setPwd(newPwd);
return adminsService.update(admins, new HashMap());
}
return JsonResult.error("此用户不支持修改密码");
}
@ApiOperation(value = "根据id获取信息", httpMethod = "GET")
@RequestMapping("/findById")
@ApiImplicitParam(name = "id", value = "管理员对应的id", dataType = "Integer")
public ResponseData findById(@RequestParam Integer id) {
return adminsService.findById(id);
}
@ApiOperation(value = "根据id更新数据", httpMethod = "POST")
@RequestMapping("/update")
@ApiImplicitParam(name = "data", value = "使用json数据提交", type = "json", dataTypeClass = Admins.class, paramType = "body")
public ResponseData update(@RequestBody Map data) {
Admins post = BeanUtil.mapToBean(data, Admins.class, true);
return adminsService.update(post, data);
}
@ApiOperation(value = "插入一行数据,返回插入后的管理员", httpMethod = "POST")
@RequestMapping("/insert")
@ApiImplicitParam(name = "data", value = "使用json数据提交", type = "json", dataTypeClass = Admins.class, paramType = "body")
public ResponseData insert(@RequestBody Map data) {
Admins post = BeanUtil.mapToBean(data, Admins.class, true);
return adminsService.insert(post, data);
}
@ApiOperation(value = "根据id列表删除数据", httpMethod = "POST")
@RequestMapping("/delete")
@ApiImplicitParam(name = "id", value = "管理员对应的id", type = "json", dataTypeClass = List.class)
public ResponseData delete(@RequestBody List<Integer> id) {
return adminsService.delete(id);
}
}
package com.spboot.tx.controller;
import cn.hutool.core.bean.BeanUtil;
import com.spboot.tx.mapper.*;
import com.spboot.tx.pojo.*;
import com.spboot.tx.service.*;
import com.spboot.tx.utils.*;
import io.swagger.annotations.*;
import java.io.*;
import java.util.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api(tags = { "地区控制器" })
@RestController
@RequestMapping("/api/diqu")
public class DiquController {
@Autowired
public DiquService diquService;
@Resource
private HttpServletRequest request;
@Resource
private HttpServletResponse response;
@ApiOperation(value = "获取全部地区", httpMethod = "GET")
@RequestMapping("/selectAll")
public ResponseData<List<Diqu>> selectAll() {
return diquService.selectAll();
}
@ApiOperation(value = "根据条件筛选获取地区列表,并分页", httpMethod = "POST")
@RequestMapping("/selectPages")
public ResponseData selectPages(@RequestBody Map<String, Object> req) {
return diquService.selectPages(req);
}
@ApiOperation(value = "根据过滤信息获取相关数据", httpMethod = "POST")
@RequestMapping("/filter")
public ResponseData<List<Diqu>> filter(@RequestBody Map<String, Object> req) {
return diquService.filter(req);
}
@ApiOperation(value = "根据id获取信息", httpMethod = "GET")
@RequestMapping("/findById")
@ApiImplicitParam(name = "id", value = "地区对应的id", dataType = "Integer")
public ResponseData findById(@RequestParam Integer id) {
return diquService.findById(id);
}
@ApiOperation(value = "根据id更新数据", httpMethod = "POST")
@RequestMapping("/update")
@ApiImplicitParam(name = "data", value = "使用json数据提交", type = "json", dataTypeClass = Diqu.class, paramType = "body")
public ResponseData update(@RequestBody Map data) {
Diqu post = BeanUtil.mapToBean(data, Diqu.class, true);
return diquService.update(post, data);
}
@ApiOperation(value = "插入一行数据,返回插入后的地区", httpMethod = "POST")
@RequestMapping("/insert")
@ApiImplicitParam(name = "data", value = "使用json数据提交", type = "json", dataTypeClass = Diqu.class, paramType = "body")
public ResponseData insert(@RequestBody Map data) {
Diqu post = BeanUtil.mapToBean(data, Diqu.class, true);
return diquService.insert(post, data);
}
@ApiOperation(value = "根据id列表删除数据", httpMethod = "POST")
@RequestMapping("/delete")
@ApiImplicitParam(name = "id", value = "地区对应的id", type = "json", dataTypeClass = List.class)
public ResponseData delete(@RequestBody List<Integer> id) {
return diquService.delete(id);
}
}
5. 関連作品の展示
Java開発、Python開発、PHP開発、C#開発、その他関連言語をベースにした実践的なプロジェクト
Nodejs、Vue等のフロントエンド技術をベースに開発されたフロントエンド実践プロジェクト
WeChatアプレットおよびAndroid APPアプリケーション開発に基づく関連作品
51 個のマイクロコントローラーおよびその他の組み込みデバイスに基づく組み込み型モノのインターネットの開発と応用
さまざまなアルゴリズムに基づく AI インテリジェント アプリケーション
ビッグデータを活用した各種データ管理・レコメンドシステム