超级管理员:系统管理、用户管理(冻结等)、审批竞拍标的物管理、竞标类型管理、审批机构、个人提现管理(审核)、企业提现管理(审批)等等。
普通用户:注册登录、个人信息管理(个人资料、密码修改等)、留言管理、竞价管理、竞拍收藏、订单查询(物流信息查询)、银行卡管理、提现管理等、竞拍物品展示查询(列表搜索、详情展示、报名记录、竞价记录)。
企业用户:注册登录、发布竞拍、竞拍管理、充值订单、银行卡管理、提现记录。
运行环境:windows/Linux均可、jdk1.8、mysql5.7、redis3.0、idea/eclipse均可。
后台菜单管理控制器:
/**
* 后台菜单管理控制器
*
*/
@RequestMapping("/menu")
@Controller
public class MenuController {
@Autowired
private MenuService menuService;
@Autowired
private OperaterLogService operaterLogService;
/**
* 菜单列表展示页面
* @param model
* @return
*/
@RequestMapping(value="/list")
public String list(Model model){
List
系统验证码公用控制器:
/**
* 系统验证码公用控制器
*
*/
@Controller
@RequestMapping("/cpacha")
public class CpachaController {
private Logger log = LoggerFactory.getLogger(CpachaController.class);
/**
* 通用验证码生成器
* @param vcodeLength
* @param fontSize
* @param width
* @param height
* @param method
* @param request
* @param response
*/
@RequestMapping(value="/generate_cpacha",method=RequestMethod.GET)
public void generateCpacha(
@RequestParam(name="vl",defaultValue="4")Integer vcodeLength,//vcodeLength,验证码长度
@RequestParam(name="fs",defaultValue="21")Integer fontSize,//fontSize,验证码字体大小
@RequestParam(name="w",defaultValue="98")Integer width,//width,图片宽度
@RequestParam(name="h",defaultValue="33")Integer height,//height,图片高度
@RequestParam(name="method",defaultValue="admin_login")String method,//用来调用此方法的名称,以此名称为键,存入到session中
HttpServletRequest request,
HttpServletResponse response){
CpachaUtil cpachaUtil = new CpachaUtil(vcodeLength,fontSize,width,height);
String generatorVCode = cpachaUtil.generatorVCode();
//将生成的验证码放入session,以供放后面程序的验证使用
request.getSession().setAttribute(method, generatorVCode);
log.info("验证码成功生成,method=" + method + ",value=" + generatorVCode);
try {
ImageIO.write(cpachaUtil.generatorRotateVCodeImage(generatorVCode, true), "gif", response.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
公用的上传类:
/**
* 公用的上传类
*
*/
@RequestMapping("/upload")
@Controller
public class UploadController {
@Value("${ylrc.upload.photo.sufix}")
private String uploadPhotoSufix;
@Value("${ylrc.upload.photo.maxsize}")
private long uploadPhotoMaxSize;
@Value("${ylrc.upload.photo.path}")
private String uploadPhotoPath;//文件保存位置
private Logger log = LoggerFactory.getLogger(UploadController.class);
/**
* 图片统一上传类
* @param photo
* @return
*/
@RequestMapping(value="/upload_photo",method=RequestMethod.POST)
@ResponseBody
public Result 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;
codeMsg.setMsg("图片大小不能超过" + (uploadPhotoMaxSize/1024) + "M");
return Result.error(codeMsg);
}
//准备保存文件
File filePath = new File(uploadPhotoPath);
if(!filePath.exists()){
//若不存在文件夹,则创建一个文件夹
filePath.mkdir();
}
filePath = new File(uploadPhotoPath + "/" + StringUtil.getFormatterDate(new Date(), "yyyyMMdd"));
//判断当天日期的文件夹是否存在,若不存在,则创建
if(!filePath.exists()){
//若不存在文件夹,则创建一个文件夹
filePath.mkdir();
}
String filename = StringUtil.getFormatterDate(new Date(), "yyyyMMdd") + "/" + System.currentTimeMillis() + suffix;
try {
photo.transferTo(new File(uploadPhotoPath+"/"+filename));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
log.info("图片上传成功,保存位置:" + uploadPhotoPath + filename);
return Result.success(filename);
}
}