基于javaweb的SpringBoot在线拍卖竞价系统(java+springboot+freemarker+mysql+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

200023102402

210023102402

220023102402

230023102402

240023102402

基于javaweb的SpringBoot在线拍卖竞价系统(java+springboot+freemarker+mysql+maven)

超级管理员:系统管理、用户管理(冻结等)、审批竞拍标的物管理、竞标类型管理、审批机构、个人提现管理(审核)、企业提现管理(审批)等。

普通用户:注册登录、个人信息管理(个人资料、密码修改等)、留言管理、竞价管理、竞拍收藏、订单查询(物流信息查询)、银行卡管理、提现管理等、竞拍物品展示查询(列表搜索、详情展示、报名记录、竞价记录)。

企业用户:注册登录、发布竞拍、竞拍管理、充值订单、银行卡管理、提现记录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

@Autowired
private AccountService accountService;

@Autowired
private OperaterLogService operaterLogService;

/**
* 前台用户列表
* @param model
* @param account
* @param pageBean
* @return
*/
@GetMapping("/list")
public String list(Model model,Account account,PageBean<Account> pageBean){
model.addAttribute("title", "前台用户列表");
model.addAttribute("username", account.getUsername());
model.addAttribute("pageBean", accountService.findList(account, pageBean));
return "admin/account/list";
}


/**
* 前台用户添加
* @param model
* @return
*/
@GetMapping("/add")
public String add(Model model){
return "admin/account/add";
}

/**
* 前台用户添加操作
* @param account
* @return
*/
@ResponseBody
@PostMapping("/add")
public Result<Boolean> add(Account account){
CodeMsg validate = ValidateEntityUtil.validate(account);
if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
return Result.error(validate);
}
if(StringUtils.isEmpty(account.getPmPwd())){
return Result.error(CodeMsg.ADMIN_ACCOUNT_PMPWD_ERROR);
}
Account byUsername = accountService.findByUsername(account.getUsername());
if(byUsername!=null){
return Result.error(CodeMsg.HOME_ACCOUNT_USERNAME_EXIST);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 * 确认支付操作
*
* @param pid
* @return
*/
@ResponseBody
@PostMapping("/payment")
public Result<Boolean> thePayment(@RequestParam(name = "id") Long pid) {
BiddingRecord biddingRecord = biddingRecordService.find(pid);
if (biddingRecord == null) {
return Result.error(CodeMsg.ADMIN_PROJECT_BIDDINGRECORD_NOT_EXIST);
}
Account account = SessionUtil.getAccount();
int bid = biddingRecord.getBid();
BigDecimal balance = account.getBalance();
//用余额减去竞价价格
BigDecimal bids = new BigDecimal(bid);
BigDecimal subtract = balance.subtract(bids);
if (subtract.compareTo(BigDecimal.ZERO) == -1) {
return Result.error(CodeMsg.HOME_ACCOUNT_PROFILE_RECORD_PAYMENT_ERROR);
}
//更新竞价记录状态和用户余额
return biddingRecordService.updateBalanceAndRecordStatus(biddingRecord, account, subtract);
}

/**
* 用户评价商品操作
*
* @param score
* @param content
* @return
*/
@ResponseBody
@PostMapping("/evaluate_save")
public Result<Boolean> evaluateSave(@RequestParam(name = "score") Double score, @RequestParam(name = "content") String content, @RequestParam(name = "recordId") Long recordId) {
Account account = SessionUtil.getAccount();
BiddingRecord biddingRecord = biddingRecordService.find(recordId);
BiddingProject biddingProject = biddingRecord.getBiddingProject();
Organization organization = biddingProject.getOrganization();
ProjectEvaluate projectEvaluate = new ProjectEvaluate();
projectEvaluate.setAccount(account);
projectEvaluate.setBiddingProject(biddingProject);
projectEvaluate.setRate(score.intValue());
projectEvaluate.setContent(content);
if (projectEvaluateService.save(projectEvaluate) == null) {
return Result.error(CodeMsg.HOME_ACCOUNT_PROJECT_EVALUATE_ADD_ERROR);
}
//更新竞价记录的状态
if (biddingRecordService.updateBiddingStatus(biddingRecord.getId(), BiddingRecord.BIDDING_STATUS_EVALUATED) <= 0) {
return Result.error(CodeMsg.ADMIN_ORGANIZATION_STATUS_EDIT_ERROR);
}
//更新拍卖者的信用分
organization.setRate(score);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        return Result.error(validate);
}
//报名时间和当前时间比较
if(biddingProject.getStartTime().before(new Date())){
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_SIGNUP_TIME_ERROR);
}
//报名日期比较
if (!biddingProject.getStartTime().before(biddingProject.getEndTime())) {
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_SIGNUP_DATE_ERROR);
}
//竞拍日期比较
if (!biddingProject.getBiddingStartTime().before(biddingProject.getBiddingEndTime())) {
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_BIDDING_DATE_ERROR);
}
//竞拍日期和报名日期比较
if(!biddingProject.getStartTime().before(biddingProject.getBiddingStartTime())){
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_BIDDING_SIGNUP_ERROR);
}
if(!biddingProject.getEndTime().before(biddingProject.getBiddingEndTime())){
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_BIDDING_SIGNUP_ERROR);
}
//报名开始时间和竞拍结束时间比较
if(!biddingProject.getStartTime().before(biddingProject.getBiddingEndTime())){
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_BIDDING_END_DATE_ERROR);
}
String describes = biddingProject.getDescribes();
biddingProject.setDescribes(describes.trim());
BeanUtils.copyProperties(biddingProject, currentProject, "id", "createTime", "updateTime", "projectNumber", "transactionPrice", "applicantsNumber","auctionTimes","account","organization","rate","viewsNumber");
if (projectService.save(currentProject) == null) {
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_EDIT_ERROR);
}
operaterLogService.add("编辑商品,商品名称:" + biddingProject.getName());
return Result.success(true);
}

/**
* 删除竞拍商品操作
*
* @param id
* @return
*/
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@ResponseBody
public Result<Boolean> delete(@RequestParam(name = "id", required = true) Long id) {
try {
projectService.delete(id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * @param id
* @return
*/
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@ResponseBody
public Result<Boolean> delete(@RequestParam(name = "id", required = true) Long id) {
try {
projectService.delete(id);
} catch (Exception e) {
return Result.error(CodeMsg.ADMIN_BIDDING_PROJECT_DELETE_ERROR);
}
operaterLogService.add("删除竞拍商品,竞拍商品ID:" + id);
return Result.success(true);
}


/**
* 查看商品详情页面
* @param id
* @param model
* @return
*/
@GetMapping("/project_detail")
public String projectDetail(@RequestParam("id")Long id,Model model){
BiddingProject biddingProject = projectService.find(id);
if (biddingProject == null) {
model.addAttribute("msg", "不要搞破坏哦,乖!");
return "/error/404";
}
model.addAttribute("biddingProject", biddingProject);
return "/admin/project/project_detail";
}

/**
* 管理员商品审核
* @param type
* @param id
* @return
*/
@ResponseBody
@PostMapping("/examine")
public Result<Boolean> approved(@RequestParam("type")String type,@RequestParam(name = "id")Long id,@RequestParam(name = "reason")String reason){
BiddingProject biddingProject = projectService.find(id);
if(biddingProject==null){
return Result.error(CodeMsg.ADMIN_PROJECT_SHOPING_NOT_EXIST);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


/**
* 公用的上传类
*
*/
@RequestMapping("/upload")
@Controller
public class UploadController {

private String uploadPhotoSufix = ".jpg,.png,.gif,.jpeg";

private long uploadPhotoMaxSize = 10240;

private String uploadPhotoPath = System.getProperty("user.dir") + "/src/main/resources/upload/";//文件保存位置

private Logger log = LoggerFactory.getLogger(UploadController.class);

/**
* 图片统一上传类
*
* @param photo
* @return
*/
@RequestMapping(value = "/upload_photo", method = RequestMethod.POST)
@ResponseBody
public Result<String> uploadPhoto(@RequestParam(name = "photo", required = true) MultipartFile photo) {
//判断文件类型是否是图片
String originalFilename = photo.getOriginalFilename();
//获取文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."), originalFilename.length());
if (!uploadPhotoSufix.contains(suffix.toLowerCase())) {
return Result.error(CodeMsg.UPLOAD_PHOTO_SUFFIX_ERROR);
}
if (photo.getSize() / 1024 > uploadPhotoMaxSize) {
CodeMsg codeMsg = CodeMsg.UPLOAD_PHOTO_ERROR;


项目链接:
https://javayms.github.io?id=541422272105200bw
https://javayms.pages.dev?id=541422272105200bw