脚本宝典收集整理的这篇文章主要介绍了Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等。
/**
* 后台管理-账户页
* @author yy
*/
@Controller
public class AccountController extends BaseController{
@Resource(name = "adminService")
private AdminService adminService;
//转到后台管理-账户页-ajax
@RequestMapping(value = "admin/account", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map){
logger.info("获取管理员信息");
Object adminId = checkAdmin(session);
if(adminId == null){
return "admin/include/loginMessage";
}
logger.info("获取目前登录的管理员信息,管理员ID:{}",adminId);
Admin admin = adminService.get(null,Integer.parseInt(adminId.toString()));
map.put("admin",admin);
logger.info("转到后台管理-账户页-ajax方式");
return "admin/accountManagePage";
}
//退出当前账号
@RequestMapping(value = "admin/account/logout", method = RequestMethod.GET)
public String logout(HttpSession session) {
Object o = session.getAttribute("adminId");
if (o == null) {
logger.info("无相关信息,返回管理员登陆页");
} else {
session.removeAttribute("adminId");
session.invalidate();
logger.info("登录信息已清除,返回管理员登陆页");
}
return "redirect:/admin/login";
}
//管理员头像上传
@ResponseBody
@RequestMapping(value = "admin/uploadAdminHeadImage", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
public String uploadAdminHeadImage(@RequestParam MultipartFile file, HttpSession session) {
String originalFileName = file.getOriginalFilename();
logger.info("获取图片原始文件名:{}", originalFileName);
assert originalFileName != null;
String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));
//生成随机名
String fileName = UUID.randomUUID() + extension;
//获取上传路径
String filePath = session.getServletContext().getRealPath("/") + "res/images/item/adminProfilePicture/" + fileName;
logger.info("文件上传路径:{}", filePath);
JSONObject jsonObject = new JSONObject();
try {
logger.info("文件上传中...");
file.transferTo(new File(filePath));
logger.info("文件上传成功!");
jsonObject.put("success", true);
jsonObject.put("fileName", fileName);
} catch (IOException e) {
logger.warn("文件上传失败!");
e.printStackTrace();
jsonObject.put("success", false);
}
return jsonObject.toJSONString();
}
//更新管理员信息
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@ResponseBody
@RequestMapping(value = "admin/account/{admin_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
public String updateAdmin(HttpSession session, @RequestParam String admin_nickname/*管理员昵称*/,
@RequestParam(required = false) String admin_password/*管理员当前密码*/,
@RequestParam(required = false) String admin_newPassword/*管理员新密码*/,
@RequestParam(required = false) String admin_profile_picture_src/*管理员头像路径*/,
@PathVariable("admin_id") String admin_id/*管理员编号*/) {
logger.info("获取管理员信息");
Object adminId = checkAdmin(session);
if (adminId == null) {
return "admin/include/loginMessage";
}
JSONObject jsonObject = new JSONObject();
Admin putAdmin = new Admin();
putAdmin.setAdmin_id(Integer.valueOf(admin_id));
putAdmin.setAdmin_nickname(admin_nickname);
if (admin_password != null && !"".equals(admin_password) && admin_newPassword != null && !"".equals(admin_newPassword)) {
logger.info("获取需要修改的管理员信息");
Admin admin = adminService.get(null, Integer.valueOf(adminId.toString()));
if (adminService.login(admin.getAdmin_name(), admin_password) != null) {
logger.info("原密码正确");
putAdmin.setAdmin_password(admin_newPassword);
} else {
logger.info("原密码错误,返回错误信息");
jsonObject.put("success", false);
jsonObject.put("message", "原密码输入有误!");
return jsonObject.toJSONString();
}
}
if (admin_profile_picture_src != null && !"".equals(admin_profile_picture_src)) {
logger.info("管理员头像路径为{}", admin_profile_picture_src);
putAdmin.setAdmin_profile_picture_src(admin_profile_picture_src.substring(admin_profile_picture_src.lastIndexOf("/") + 1));
}
logger.info("更新管理员信息,管理员ID值为:{}", admin_id);
Boolean yn = adminService.update(putAdmin);
if (yn) {
logger.info("更新成功!");
jsonObject.put("success", true);
session.removeAttribute("adminId");
session.invalidate();
logger.info("登录信息已清除");
} else {
jsonObject.put("success", false);
logger.warn("更新失败!事务回滚");
throw new RuntimeException();
}
return jsonObject.toJSONString();
}
}
/**
* 后台管理-主页
*/
@Controller
public class AdminHomeController extends BaseController {
@Resource(name = "adminService")
private AdminService adminService;
@Resource(name = "productOrderService")
private ProductOrderService productOrderService;
@Resource(name = "productService")
private ProductService productService;
@Resource(name = "userService")
private UserService userService;
/**
* 转到后台管理-主页
* @param session session对象
* @param map 前台传入的Map
* @return 响应数据
* @throws ParseException 转换异常
*/
@RequestMapping(value = "admin", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map) throws ParseException {
logger.info("获取管理员信息");
Object adminId = checkAdmin(session);
if (adminId == null) {
return "redirect:/admin/login";
}
Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));
map.put("admin", admin);
logger.info("获取统计信息");
//产品总数
Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});
//用户总数
Integer userTotal = userService.getTotal(null);
//订单总数
Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});
logger.info("获取图表信息");
map.put("jsonObject", getChartData(null,null,7));
map.put("productTotal", productTotal);
map.put("userTotal", userTotal);
map.put("orderTotal", orderTotal);
logger.info("转到后台管理-主页");
return "admin/homePage";
}
/**
* 转到后台管理-主页(ajax方式)
* @param session session对象
* @param map 前台传入的Map
* @return 响应数据
* @throws ParseException 转换异常
*/
@RequestMapping(value = "admin/home", method = RequestMethod.GET)
public String goToPageByAjax(HttpSession session, Map<String, Object> map) throws ParseException {
logger.info("获取管理员信息");
Object adminId = checkAdmin(session);
if (adminId == null) {
return "admin/include/loginMessage";
}
Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));
map.put("admin", admin);
logger.info("获取统计信息");
Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});
Integer userTotal = userService.getTotal(null);
Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});
logger.info("获取图表信息");
map.put("jsonObject", getChartData(null, null,7));
logger.info("获取图表信息");
map.put("jsonObject", getChartData(null,null,7));
map.put("productTotal", productTotal);
map.put("userTotal", userTotal);
map.put("orderTotal", orderTotal);
logger.info("转到后台管理-主页-ajax方式");
return "admin/homeManagePage";
}
/**
* 按日期查询图表数据(ajax方式)
* @param beginDate 开始日期
* @param endDate 结束日期
* @return 响应数据
* @throws ParseException 转换异常
*/
@ResponseBody
@RequestMapping(value = "admin/home/charts", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String getChartDataByDate(@RequestParam(required = false) String beginDate, @RequestParam(required = false) String endDate) throws ParseException {
if (beginDate != null && endDate != null) {
//转换日期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return getChartData(simpleDateFormat.parse(beginDate), simpleDateFormat.parse(endDate),7).toJSONString();
} else {
return getChartData(null, null,7).toJSONString();
}
}
/**
* 按日期获取图表数据
* @param beginDate 开始日期
* @param endDate 结束日期
* @param days 天数
* @return 图表数据的JSON对象
* @throws ParseException 转换异常
*/
private JSONObject getChartData(Date beginDate,Date endDate,int days) throws ParseException {
JSONObject jsonObject = new JSONObject();
SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd", Locale.UK);
SimpleDateFormat time2 = new SimpleDateFormat("MM/dd", Locale.UK);
SimpleDateFormat timeSpecial = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.UK);
//如果没有指定开始和结束日期
if (beginDate == null || endDate == null) {
//指定一周前的日期为开始日期
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1-days);
beginDate = time.parse(time.format(cal.getTime()));
//指定当前日期为结束日期
cal = Calendar.getInstance();
endDate = cal.getTime();
} else {
beginDate = time.parse(time.format(beginDate));
endDate = timeSpecial.parse(time.format(endDate) + " 23:59:59");
}
logger.info("根据订单状态分类");
//未付款订单数统计数组
int[] orderUnpaidArray = new int[7];
//未发货订单数统计叔祖
int[] orderNotShippedArray = new int[7];
//未确认订单数统计数组
int[] orderUnconfirmedArray = new int[7];
//交易成功订单数统计数组
int[] orderSuccessArray = new int[7];
//总交易订单数统计数组
int[] orderTotalArray = new int[7];
logger.info("从数据库中获取统计的订单集合数据");
List<OrderGroup> orderGroupList = productOrderService.getTotalByDate(beginDate, endDate);
//初始化日期数组
JSONArray dateStr = new JSONArray(days);
//按指定的天数进行循环
for (int i = 0; i < days; i++) {
//格式化日期串(MM/dd)并放入日期数组中
Calendar cal = Calendar.getInstance();
cal.setTime(beginDate);
cal.add(Calendar.DATE, i);
String formatDate = time2.format(cal.getTime());
dateStr.add(formatDate);
//该天的订单总数
int orderCount = 0;
//循环订单集合数据的结果集
for(int j = 0; j < orderGroupList.size(); j++){
OrderGroup orderGroup = orderGroupList.get(j);
//如果该订单日期与当前日期一致
if(orderGroup.getProductOrder_pay_date().equals(formatDate)){
//从结果集中移除数据
orderGroupList.remove(j);
//根据订单状态将统计结果存入对应的订单状态数组中
switch (orderGroup.getProductOrder_status()) {
case 0:
//未付款订单
orderUnpaidArray[i] = orderGroup.getProductOrder_count();
break;
case 1:
//未发货订单
orderNotShippedArray[i] = orderGroup.getProductOrder_count();
break;
case 2:
//未确认订单
orderUnconfirmedArray[i] = orderGroup.getProductOrder_count();
break;
case 3:
//交易成功订单
orderSuccessArray[i] = orderGroup.getProductOrder_count();
break;
}
//累加当前日期的订单总数
orderCount += orderGroup.getProductOrder_count();
}
}
//将统计的订单总数存入总交易订单数统计数组
orderTotalArray[i] = orderCount;
}
logger.info("返回结果集map");
jsonObject.put("orderTotalArray", orderTotalArray);
jsonObject.put("orderUnpaidArray", orderUnpaidArray);
jsonObject.put("orderNotShippedArray", orderNotShippedArray);
jsonObject.put("orderUnconfirmedArray", orderUnconfirmedArray);
jsonObject.put("orderSuccessArray", orderSuccessArray);
jsonObject.put("dateStr",dateStr);
return jsonObject;
}
}
/**
* 后台管理-订单页
*/
@Controller
public class
OrderController extends BaseController{
@Resource(name="productOrderService")
private ProductOrderService productOrderService;
@Resource(name = "addressService")
private AddressService addressService;
@Resource(name="userService")
private UserService userService;
@Resource(name = "productOrderItemService")
private ProductOrderItemService productOrderItemService;
@Resource(name = "productService")
private ProductService productService;
@Resource(name = "productImageService")
private ProductImageService productImageService;
@Resource(name = "lastIDService")
private LastIDService lastIDService;
//转到后台管理-订单页-ajax
@RequestMapping(value = "admin/order", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map){
logger.info("获取前10条订单列表");
PageUtil pageUtil = new PageUtil(0, 10);
List<ProductOrder> productOrderList =
productOrderService.getList(
null,
null,
new OrderUtil("productOrder_id",
true), pageUtil);
map.put("productOrderList",productOrderList);
logger.info("获取订单总数量");
Integer productOrderCount = productOrderService.getTotal(null, null);
map.put("productOrderCount", productOrderCount);
logger.info("获取分页信息");
pageUtil.setTotal(productOrderCount);
map.put("pageUtil", pageUtil);
logger.info("转到后台管理-订单页-ajax方式");
return "admin/orderManagePage";
}
//转到后台管理-订单详情页-ajax
@RequestMapping(value = "admin/order/{oid}", method = RequestMethod.GET)
public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer oid/* 订单ID */) {
logger.info("获取order_id为{}的订单信息",oid);
ProductOrder order = productOrderService.get(oid);
logger.info("获取订单详情-地址信息");
Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());
Stack<String> addressStack = new Stack<>();
//详细地址
addressStack.push(order.getProductOrder_detail_address());
//最后一级地址
addressStack.push(address.getAddress_name() + " ");
//如果不是第一级地址,循环拼接地址信息
while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {
address = addressService.get(address.getAddress_regionId().getAddress_areaId());
addressStack.push(address.getAddress_name() + " ");
}
StringBuilder builder = new StringBuilder();
while (!addressStack.empty()) {
builder.append(addressStack.pop());
}
logger.info("订单地址字符串:{}", builder);
order.setProductOrder_detail_address(builder.toString());
logger.info("获取订单详情-用户信息");
order.setProductOrder_user(userService.get(order.getProductOrder_user().getUser_id()));
logger.info("获取订单详情-订单项信息");
List<ProductOrderItem> productOrderItemList = productOrderItemService.getListByOrderId(oid, null);
if (productOrderItemList != null) {
logger.info("获取订单详情-订单项对应的产品信息");
for (ProductOrderItem productOrderItem : productOrderItemList) {
Integer productId = productOrderItem.getProductOrderItem_product().getProduct_id();
logger.info("获取产品ID为{}的产品信息", productId);
Product product = productService.get(productId);
if (product != null) {
logger.info("获取产品ID为{}的第一张预览图片信息", productId);
product.setSingleProductImageList(productImageService.getList(productId, (byte) 0, new PageUtil(0, 1)));
}
productOrderItem.setProductOrderItem_product(product);
}
}
order.setProductOrderItemList(productOrderItemList);
map.put("order", order);
logger.info("转到后台管理-订单详情页-ajax方式");
return "admin/include/orderDetails";
}
//更新订单信息-ajax
@ResponseBody
@RequestMapping(value = "admin/order/{order_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
public String updateOrder(@PathVariable("order_id") String order_id) {
JSONObject jsonObject = new JSONObject();
logger.info("整合订单信息");
ProductOrder productOrder = new ProductOrder()
.setProductOrder_id(Integer.valueOf(order_id))
.setProductOrder_status((byte) 2)
.setProductOrder_delivery_date(new Date());
logger.info("更新订单信息,订单ID值为:{}", order_id);
boolean yn = productOrderService.update(productOrder);
if (yn) {
logger.info("更新成功!");
jsonObject.put("success", true);
} else {
logger.info("更新失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
jsonObject.put("order_id", order_id);
return jsonObject.toJSONString();
}
//按条件查询订单-ajax
@ResponseBody
@RequestMapping(value = "admin/order/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
public String getOrderBySearch(@RequestParam(required = false) String productOrder_code/* 订单号 */,
@RequestParam(required = false) String productOrder_post/* 订单邮政编码 */,
@RequestParam(required = false) Byte[] productOrder_status_array/* 订单状态数组 */,
@RequestParam(required = false) String orderBy/* 排序字段 */,
@RequestParam(required = false,defaultValue = "true") Boolean isDesc/* 是否倒序 */,
@PathVariable Integer index/* 页数 */,
@PathVariable Integer count/* 行数 */){
//移除不必要条件
if (productOrder_status_array != null && (productOrder_status_array.length <= 0 || productOrder_status_array.length >=5)) {
productOrder_status_array = null;
}
if (productOrder_code != null){
productOrder_code = "".equals(productOrder_code) ? null : productOrder_code;
}
if(productOrder_post != null){
productOrder_post = "".equals(productOrder_post) ? null : productOrder_post;
}
if (orderBy != null && "".equals(orderBy)) {
orderBy = null;
}
//封装查询条件
ProductOrder productOrder = new ProductOrder()
.setProductOrder_code(productOrder_code)
.setProductOrder_post(productOrder_post);
OrderUtil orderUtil = null;
if (orderBy != null) {
logger.info("根据{}排序,是否倒序:{}",orderBy,isDesc);
orderUtil = new OrderUtil(orderBy, isDesc);
} else {
orderUtil = new OrderUtil("productOrder_id",
true);
}
JSONObject object = new JSONObject();
logger.info("按条件获取第{}页的{}条订单", index + 1, count);
PageUtil pageUtil = new PageUtil(index, count);
List<ProductOrder> productOrderList = productOrderService.getList(productOrder, productOrder_status_array, orderUtil, pageUtil);
object.put("productOrderList", JSONArray.parseArray(JSON.toJSONString(productOrderList)));
logger.info("按条件获取订单总数量");
Integer productOrderCount = productOrderService.getTotal(productOrder, productOrder_status_array);
object.put("productOrderCount", productOrderCount);
logger.info("获取分页信息");
pageUtil.setTotal(productOrderCount);
object.put("totalPage", pageUtil.getTotalPage());
object.put("pageUtil", pageUtil);
return object.toJSONString();
}
}
/**
* 后台管理-产品页
*/
@Controller
public class ProductController extends BaseController{
@Resource(name = "categoryService")
private CategoryService categoryService;
@Resource(name = "productService")
private ProductService productService;
@Resource(name = "productImageService")
private ProductImageService productImageService;
@Resource(name = "propertyService")
private PropertyService propertyService;
@Resource(name = "propertyValueService")
private PropertyValueService propertyValueService;
@Resource(name = "lastIDService")
private LastIDService lastIDService;
//转到后台管理-产品页-ajax
@RequestMapping(value = "admin/product",method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map) {
logger.info("获取产品分类列表");
List<Category> categoryList = categoryService.getList(null, null);
map.put("categoryList", categoryList);
logger.info("获取前10条产品列表");
PageUtil pageUtil = new PageUtil(0, 10);
List<Product> productList = productService.getList(null, null, null, pageUtil);
map.put("productList", productList);
logger.info("获取产品总数量");
Integer productCount = productService.getTotal(null, null);
map.put("productCount", productCount);
logger.info("获取分页信息");
pageUtil.setTotal(productCount);
map.put("pageUtil", pageUtil);
logger.info("转到后台管理-产品页-ajax方式");
return "admin/productManagePage";
}
//转到后台管理-产品详情页-ajax
@RequestMapping(value="admin/product/{pid}",method = RequestMethod.GET)
public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer pid/* 产品ID */) {
logger.info("获取product_id为{}的产品信息",pid);
Product product = productService.get(pid);
Integer product_id =product.getProduct_id();
logger.info("获取产品预览图片信息");
List<ProductImage> singleProductImageList = productImageService.getList(product_id, (byte) 0, null);
product.setSingleProductImageList(singleProductImageList);
logger.info("获取产品详情图片信息");
List<ProductImage> detailsProductImageList = productImageService.getList(product_id, (byte) 1, null);
product.setDetailProductImageList(detailsProductImageList);
map.put("product",product);
logger.info("获取产品详情-属性值信息");
List<PropertyValue> propertyValueList = propertyValueService.getList(
new PropertyValue().setPropertyValue_product(product),null
);
logger.info("获取产品详情-分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(
new Property().setProperty_category(product.getProduct_category()),null
);
logger.info("属性列表和属性值列表信息合并");
for(Property property : propertyList){
for(PropertyValue propertyValue : propertyValueList){
if(property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())){
List<PropertyValue> property_value_item = new ArrayList<>(1);
property_value_item.add(propertyValue);
property.setPropertyValueList(property_value_item);
break;
}
}
}
map.put("propertyList",propertyList);
logger.info("获取分类列表");
List<Category> categoryList = categoryService.getList(null,null);
map.put("categoryList",categoryList);
logger.info("转到后台管理-产品详情页-ajax方式");
return "admin/include/productDetails";
}
//转到后台管理-产品添加页-ajax
@RequestMapping(value = "admin/product/new",method = RequestMethod.GET)
public String goToAddPage(HttpSession session,Map<String, Object> map){
logger.info("获取分类列表");
List<Category> categoryList = categoryService.getList(null,null);
map.put("categoryList",categoryList);
logger.info("获取第一个分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(
new Property().setProperty_category(categoryList.get(0)),null
);
map.put("propertyList",propertyList);
logger.info("转到后台管理-产品添加页-ajax方式");
return "admin/include/productDetails";
}
//添加产品信息-ajax.
@ResponseBody
@RequestMapping(value = "admin/product", method = RequestMethod.POST,produces = "application/json;charset=utf-8")
public String addProduct(@RequestParam String product_name/* 产品名称 */,
@RequestParam String product_title/* 产品标题 */,
@RequestParam Integer product_category_id/* 产品类型ID */,
@RequestParam Double product_sale_price/* 产品促销价 */,
@RequestParam Double product_price/* 产品原价 */,
@RequestParam Byte product_isEnabled/* 产品状态 */,
@RequestParam String propertyJson/* 产品属性JSON */,
@RequestParam Integer product_stock_count/* 产品库存 */,
@RequestParam(required = false) String[] productSingleImageList/*产品预览图片名称数组*/,
@RequestParam(required = false) String[] productDetailsImageList/*产品详情图片名称数组*/) {
JSONObject jsonObject = new JSONObject();
logger.info("整合产品信息");
Product product = new Product()
.setProduct_name(product_name)
.setProduct_title(product_title)
.setProduct_category(new Category().setCategory_id(product_category_id))
.setProduct_sale_price(product_sale_price)
.setProduct_price(product_price)
.setProduct_isEnabled(product_isEnabled)
.setProduct_create_date(new Date());
product.setProduct_stock_count(product_stock_count);
logger.info("添加产品信息");
boolean yn = productService.add(product);
if (!yn) {
logger.warn("产品添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
int product_id = lastIDService.selectLastID();
logger.info("添加成功!,新增产品的ID值为:{}", product_id);
JSONObject object = JSON.parseObject(propertyJson);
Set<String> propertyIdSet = object.keySet();
if (propertyIdSet.size() > 0) {
logger.info("整合产品子信息-产品属性");
List<PropertyValue> propertyValueList = new ArrayList<>(5);
for (String key : propertyIdSet) {
String value = object.getString(key);
PropertyValue propertyValue = new PropertyValue()
.setPropertyValue_value(value)
.setPropertyValue_property(new Property().setProperty_id(Integer.valueOf(key)))
.setPropertyValue_product(new Product().setProduct_id(product_id));
propertyValueList.add(propertyValue);
}
logger.info("共有{}条产品属性数据", propertyValueList.size());
yn = propertyValueService.addList(propertyValueList);
if (yn) {
logger.info("产品属性添加成功!");
} else {
logger.warn("产品属性添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productSingleImageList != null && productSingleImageList.length > 0) {
logger.info("整合产品子信息-产品预览图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productSingleImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 0)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(new Product().setProduct_id(product_id))
);
}
logger.info("共有{}条产品预览图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品预览图片添加成功!");
} else {
logger.warn("产品预览图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productDetailsImageList != null && productDetailsImageList.length > 0) {
logger.info("整合产品子信息-产品详情图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productDetailsImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 1)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(new Product().setProduct_id(product_id))
);
}
logger.info("共有{}条产品详情图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品详情图片添加成功!");
} else {
logger.warn("产品详情图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
logger.info("产品信息及其子信息添加成功!");
jsonObject.put("success", true);
jsonObject.put("product_id", product_id);
return jsonObject.toJSONString();
}
//更新产品信息-ajax
@ResponseBody
@RequestMapping(value = "admin/product/{product_id}", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")
public String updateProduct(@RequestParam String product_name/* 产品名称 */,
@RequestParam String product_title/* 产品标题 */,
@RequestParam Integer product_category_id/* 产品类型ID */,
@RequestParam Double product_sale_price/* 产品促销价 */,
@RequestParam Double product_price/* 产品原价 */,
@RequestParam Byte product_isEnabled/* 产品状态 */,
@RequestParam String propertyAddJson/* 产品添加属性JSON */,
@RequestParam String propertyUpdateJson/* 产品更新属性JSON */,
@RequestParam Integer product_stock_count/* 产品库存 */,
@RequestParam(required = false) Integer[] propertyDeleteList/* 产品删除属性ID数组 */,
@RequestParam(required = false) String[] productSingleImageList/*产品预览图片名称数组*/,
@RequestParam(required = false) String[] productDetailsImageList/*产品详情图片名称数组*/,
@PathVariable("product_id") Integer product_id/* 产品ID */) {
JSONObject jsonObject = new JSONObject();
logger.info("整合产品信息");
Product product = new Product()
.setProduct_id(product_id)
.setProduct_name(product_name)
.setProduct_title(product_title)
.setProduct_category(new Category().setCategory_id(product_category_id))
.setProduct_sale_price(product_sale_price)
.setProduct_price(product_price)
.setProduct_isEnabled(product_isEnabled)
.setProduct_create_date(new Date());
product.setProduct_stock_count(product_stock_count);
logger.info("更新产品信息,产品ID值为:{}", product_id);
boolean yn = productService.update(product);
if (!yn) {
logger.info("产品信息更新失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
logger.info("产品信息更新成功!");
JSONObject object = JSON.parseObject(propertyAddJson);
Set<String> propertyIdSet = object.keySet();
if (propertyIdSet.size() > 0) {
logger.info("整合产品子信息-需要添加的产品属性");
List<PropertyValue> propertyValueList = new ArrayList<>(5);
for (String key : propertyIdSet) {
String value = object.getString(key);
PropertyValue propertyValue = new PropertyValue()
.setPropertyValue_value(value)
.setPropertyValue_property(new Property().setProperty_id(Integer.valueOf(key)))
.setPropertyValue_product(product);
propertyValueList.add(propertyValue);
}
logger.info("共有{}条需要添加的产品属性数据", propertyValueList.size());
yn = propertyValueService.addList(propertyValueList);
if (yn) {
logger.info("产品属性添加成功!");
} else {
logger.warn("产品属性添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
object = JSON.parseObject(propertyUpdateJson);
propertyIdSet = object.keySet();
if (propertyIdSet.size() > 0) {
logger.info("整合产品子信息-需要更新的产品属性");
List<PropertyValue> propertyValueList = new ArrayList<>(5);
for (String key : propertyIdSet) {
String value = object.getString(key);
PropertyValue propertyValue = new PropertyValue()
.setPropertyValue_value(value)
.setPropertyValue_id(Integer.valueOf(key));
propertyValueList.add(propertyValue);
}
logger.info("共有{}条需要更新的产品属性数据", propertyValueList.size());
for (int i = 0; i < propertyValueList.size(); i++) {
logger.info("正在更新第{}条,共{}条", i + 1, propertyValueList.size());
yn = propertyValueService.update(propertyValueList.get(i));
if (yn) {
logger.info("产品属性更新成功!");
} else {
logger.warn("产品属性更新失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
}
if (propertyDeleteList != null && propertyDeleteList.length > 0) {
logger.info("整合产品子信息-需要删除的产品属性");
logger.info("共有{}条需要删除的产品属性数据", propertyDeleteList.length);
yn = propertyValueService.deleteList(propertyDeleteList);
if (yn) {
logger.info("产品属性删除成功!");
} else {
logger.warn("产品属性删除失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productSingleImageList != null && productSingleImageList.length > 0) {
logger.info("整合产品子信息-产品预览图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productSingleImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 0)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品预览图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品预览图片添加成功!");
} else {
logger.warn("产品预览图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productDetailsImageList != null && productDetailsImageList.length > 0) {
logger.info("整合产品子信息-产品详情图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productDetailsImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 1)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品详情图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品详情图片添加成功!");
} else {
logger.warn("产品详情图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
jsonObject.put("success", true);
jsonObject.put("product_id", product_id);
return jsonObject.toJSONString();
}
//按条件查询产品-ajax
@ResponseBody
@RequestMapping(value = "admin/product/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String getProductBySearch(@RequestParam(required = false) String product_name/* 产品名称 */,
@RequestParam(required = false) Integer category_id/* 产品类型ID */,
@RequestParam(required = false) Double product_sale_price/* 产品促销价 */,
@RequestParam(required = false) Double product_price/* 产品原价 */,
@RequestParam(required = false) Byte[] product_isEnabled_array/* 产品状态数组 */,
@RequestParam(required = false) String orderBy/* 排序字段 */,
@RequestParam(required = false,defaultValue = "true") Boolean isDesc/* 是否倒序 */,
@PathVariable Integer index/* 页数 */,
@PathVariable Integer count/* 行数 */) throws UnsupportedEncodingException {
//移除不必要条件
if (product_isEnabled_array != null && (product_isEnabled_array.length <= 0 || product_isEnabled_array.length >=3)) {
product_isEnabled_array = null;
}
if (category_id != null && category_id == 0) {
category_id = null;
}
if (product_name != null) {
//如果为非空字符串则解决中文乱码:URLDecoder.decode(String,"UTF-8");
product_name = "".equals(product_name) ? null : URLDecoder.decode(product_name, "UTF-8");
}
if (orderBy != null && "".equals(orderBy)) {
orderBy = null;
}
//封装查询条件
Product product = new Product()
.setProduct_name(product_name)
.setProduct_category(new Category().setCategory_id(category_id))
.setProduct_price(product_price)
.setProduct_sale_price(product_sale_price);
OrderUtil orderUtil = null;
if (orderBy != null) {
logger.info("根据{}排序,是否倒序:{}",orderBy,isDesc);
orderUtil = new OrderUtil(orderBy, isDesc);
}
JSONObject object = new JSONObject();
logger.info("按条件获取第{}页的{}条产品", index + 1, count);
PageUtil pageUtil = new PageUtil(index, count);
List<Product> productList = productService.getList(product, product_isEnabled_array, orderUtil, pageUtil);
object.put("productList", JSONArray.parseArray(JSON.toJSONString(productList)));
logger.info("按条件获取产品总数量");
Integer productCount = productService.getTotal(product, product_isEnabled_array);
object.put("productCount", productCount);
logger.info("获取分页信息");
pageUtil.setTotal(productCount);
object.put("totalPage", pageUtil.getTotalPage());
object.put("pageUtil", pageUtil);
return object.toJSONString();
}
//按类型ID查询属性-ajax
@ResponseBody
@RequestMapping(value = "admin/property/type/{property_category_id}", method = RequestMethod.GET,produces = "application/json;charset=utf-8")
public String getPropertyByCategoryId(@PathVariable Integer property_category_id/* 属性所属类型ID*/){
//封装查询条件
Category category = new Category()
.setCategory_id(property_category_id);
JSONObject object = new JSONObject();
logger.info("按类型获取属性列表,类型ID:{}",property_category_id);
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(category),null);
object.put("propertyList",JSONArray.parseArray(JSON.toJSONString(propertyList)));
return object.toJSONString();
}
//按ID删除产品图片并返回最新结果-ajax
@ResponseBody
@RequestMapping(value = "admin/productImage/{productImage_id}",method = RequestMethod.DELETE,produces = "application/json;charset=utf-8")
public String deleteProductImageById(@PathVariable Integer productImage_id/* 产品图片ID */){
JSONObject object = new JSONObject();
logger.info("获取productImage_id为{}的产品图片信息",productImage_id);
ProductImage productImage = productImageService.get(productImage_id);
logger.info("删除产品图片");
Boolean yn = productImageService.deleteList(new Integer[]{productImage_id});
if (yn) {
logger.info("删除图片成功!");
object.put("success", true);
} else {
logger.warn("删除图片失败!事务回滚");
object.put("success", false);
throw new RuntimeException();
}
return object.toJSONString();
}
//上传产品图片-ajax
@ResponseBody
@RequestMapping(value = "admin/uploadProductImage", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
public String uploadProductImage(@RequestParam MultipartFile file, @RequestParam String imageType, HttpSession session) {
String originalFileName = file.getOriginalFilename();
logger.info("获取图片原始文件名:{}", originalFileName);
String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));
String filePath;
String fileName = UUID.randomUUID() + extension;
if ("single".equals(imageType)) {
filePath = session.getServletContext().getRealPath("/") + "res/images/item/productSinglePicture/" + fileName;
} else {
filePath = session.getServletContext().getRealPath("/") + "res/images/item/productDetailsPicture/" + fileName;
}
logger.info("文件上传路径:{}", filePath);
JSONObject object = new JSONObject();
try {
logger.info("文件上传中...");
file.transferTo(new File(filePath));
logger.info("文件上传完成");
object.put("success", true);
object.put("fileName", fileName);
} catch (IOException e) {
logger.warn("文件上传失败!");
e.printStackTrace();
object.put("success", false);
}
return object.toJSONString();
}
}
以上是脚本宝典为你收集整理的Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)全部内容,希望文章能够帮你解决Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。