Commit 836ff546 authored by DESKTOP-FI5PFC1\tevir's avatar DESKTOP-FI5PFC1\tevir

一覧表示処理追加

parent ecd78aef
import org.springframework.web.multipart.MultipartFile;
import lombok.Getter;
import lombok.Setter;
//靴新規登録用フォーム
@Getter
@Setter
public class ShoesForm {
private String name;
private Integer price;
private Integer stock;
private Integer size;
private Integer product_status;
//画像を受け取る変数
private MultipartFile multipartFile;
}
......@@ -29,5 +29,5 @@ public class Shoes {
@Column(nullable=false)
private Integer productStatus;
@Column(nullable=false)
private String path;
private String photo;
}
package com.example.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Getter;
import lombok.Setter;
//ユーザーウォレットのエンティティ
@Getter
@Setter
@Table(name="user_wallets")
@Entity
public class Wallets {
@Id
@GeneratedValue
private Integer Id;
private Integer userId;
private Integer amount;
}
......@@ -4,6 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import com.example.domain.Shoes;
//靴データ取得用
public interface ShoesRepository extends JpaRepository<Shoes, Integer>{
}
package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.domain.Wallets;
//ウォレット情報をDBから取得
@Repository
public interface WalletsRepository extends JpaRepository<Wallets, Integer> {
}
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
......@@ -33,4 +35,8 @@ public class LoginUserDetailsService implements UserDetailsService {
public User create(User user) {
return userRepository.save(user);
}
public List<User> findAll(){
return userRepository.findAll();
}
}
package com.example.service;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -8,13 +9,18 @@ import org.springframework.stereotype.Service;
import com.example.domain.Shoes;
import com.example.repository.ShoesRepository;
//靴用サービス
@Service
public class ShoesService {
@Autowired
ShoesRepository shoesRepository;
public List<Shoes> findAll(){
return shoesRepository.findAll();
List<Shoes> list = shoesRepository. findAll();
//並べ替え処理
Collections.sort(list, Collections.reverseOrder());
//並べ替えたものを返す。
return list;
}
public Shoes findOne(Integer id){
......
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.domain.Wallets;
import com.example.repository.WalletsRepository;
//ユーザウォレットのサービス
@Service
public class WalletsService {
@Autowired
WalletsRepository walletsRepository;
public List<Wallets> findAll(){
return walletsRepository.findAll();
}
public Wallets findOne(Integer id){
return walletsRepository.findOne(id);
}
public Wallets create(Wallets wallet){
return walletsRepository.save(wallet);
}
public Wallets update(Wallets wallet){
return walletsRepository.save(wallet);
}
}
package com.example.web;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import com.example.domain.Shoes;
import com.example.domain.User;
import com.example.service.LoginUser;
import com.example.service.ShoesService;
@Controller
@RequestMapping("limited")
public class EcsiteController {
@Autowired
ShoesService shoesService;
//写真の表示用メソッド
public String photoView(String Photo) {
// 画像を検索してbyteとしてViewへ受け渡す
String uploadPath = "src/main/resources/static/upload/" + Photo;
// 画像データストリームを取得する
try (FileInputStream fis = new FileInputStream(uploadPath);) {
StringBuffer data = new StringBuffer();
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
// バイト配列に変換
while (true) {
int len = fis.read(buffer);
if (len < 0) {
break;
}
os.write(buffer, 0, len);
}
// 画像データをbaseにエンコード
String base64 = new String(
org.apache.tomcat.util.codec.binary.Base64.encodeBase64(os.toByteArray()),"ASCII");
// 画像タイプはJPEG
// Viewへの受け渡し。
data.append("data:image/jpeg;base64,");
data.append(base64);
return data.toString();
} catch (Exception e) { e.printStackTrace();
return null;
}
}
//トップ画面遷移(現在のログインユーザーデータもmodelに格納済み)
@GetMapping("top")
public String top(Model model, @AuthenticationPrincipal LoginUser userDetails) {
User user = userDetails.getUser();
model.addAttribute("user", user);
//遷移先 設定済み
return "index";
}
//一覧画面遷移(靴の情報と画像を一緒にmodelにあげることが出来ない為、分けてある)
@GetMapping("list")
public String list() {
public String list(Model model) {
//靴の情報をすべて取得
List<Shoes> shoes = shoesService.findAll();
//靴の情報を一括で取得するmodel(Idでの降順表示設定済み)
model.addAttribute("shoes", shoes);
//靴を表示するための処理を全画像にかける
List <String> shoesPhoto = new ArrayList<String> ();
for(int i = 0; i < shoes.size(); i++) {
shoesPhoto.add((shoes.get(i)).getPhoto());
}
//靴の処理した画像を一括で取得する
model.addAttribute("shoesPhoto", shoesPhoto);
//遷移先 未設定
return "Hello world";
}
//画像登録用
// @PostMapping("admin/management/shoes")
// public String CreateShoes(@Validated,
// MultipartFile multipartFile) throws Exception {
//
// if (!multipartFile.isEmpty()) {
// try {
// // ファイル名をリネイム
// File oldFileName = new File(multipartFile.getOriginalFilename());
// File newFileName = new File(oldFileName + ".jpg");
// oldFileName.renameTo(newFileName);
//
// // 保存先を定義
// String uploadPath = "src/main/resources/static/upload/";
// byte[] bytes = multipartFile.getBytes();
//
// // 指定ファイルへ読み込みファイルを書き込み
// BufferedOutputStream stream = new BufferedOutputStream(
// new FileOutputStream(new File(uploadPath + newFileName)));
// stream.write(bytes);
// stream.close();
//
// // 圧縮
// File input = new File(uploadPath + newFileName);
// BufferedImage image = ImageIO.read(input);
// OutputStream os = new FileOutputStream(input);
// Iterator<ImageWriter> writers = ImageIO
// .getImageWritersByFormatName("jpg");
// ImageWriter writer = (ImageWriter) writers.next();
// ImageOutputStream ios = ImageIO.createImageOutputStream(os);
// writer.setOutput(ios);
// ImageWriteParam param = new JPEGImageWriteParam(null);
// param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
// param.setCompressionQuality(0.30f);
// writer.write(null, new IIOImage(image, null, null), param);
// os.close();
// ios.close();
// writer.dispose();
//
// // DBに写真の名前を格納する
// service.updatePhoto(account.getUsername(), newFileName.toString());
//
// } catch (Exception e) {
// System.out.println(e);
// }
// }
// return "forward:/top";
// }
}
package com.example.web;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import com.example.domain.Shoes;
import com.example.domain.User;
import com.example.service.LoginUserDetailsService;
import com.example.service.ShoesService;
//管理画面用
@Controller
@RequestMapping("limited/admin/management/")
public class ManagementController {
@Autowired
ShoesService shoesService;
@Autowired
LoginUserDetailsService loginUserDetailsService;
//管理画面表示(靴もユーザ情報も一覧で取得できるようになっている)
@GetMapping()
public String management(Model model) {
List<Shoes>shoes = shoesService. findAll();
model.addAttribute("shoes", shoes);
List<User> user = loginUserDetailsService.findAll();
model.addAttribute("user", user);
//遷移先 未設定
return "Hello World";
}
//靴の登録処理
@PostMapping("addShoes")
public String CreateShoes(@Validated ShoesForm form, BindingResult result, MultipartFile multipartFile) throws Exception {
if(result.hasErrors()) {
return "management";
}
multipartFile = form.getMultipartFile();
Shoes shoes = new Shoes();
if (!multipartFile.isEmpty()) {
try {
// ファイル名をリネイム
File oldFileName = new File(multipartFile.getOriginalFilename());
File newFileName = new File(oldFileName + ".jpg");
oldFileName.renameTo(newFileName);
// 保存先を定義
String uploadPath = "src/main/resources/static/upload/";
byte[] bytes = multipartFile.getBytes();
// 指定ファイルへ読み込みファイルを書き込み
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(new File(uploadPath + newFileName)));
stream.write(bytes);
stream.close();
// 圧縮
File input = new File(uploadPath + newFileName);
BufferedImage image = ImageIO.read(input);
OutputStream os = new FileOutputStream(input);
Iterator<ImageWriter> writers = ImageIO
.getImageWritersByFormatName("jpg");
ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam param = new JPEGImageWriteParam(null);
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.30f);
writer.write(null, new IIOImage(image, null, null), param);
os.close();
ios.close();
writer.dispose();
// shoes entity に写真の名前を格納する
shoes.setPhoto(newFileName.toString());
} catch (Exception e) {
System.out.println(e);
}
}
shoes.setName(form.getName());
shoes.setPrice(form.getPrice());
shoes.setStock(form.getStock());
shoes.setSize(form.getSize());
shoes.setProductStatus(form.getProduct_status());
shoesService.update(shoes);
//遷移先 未設定
return "Hello World";
}
}
package com.example.web;
import org.springframework.web.multipart.MultipartFile;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ShoesForm {
private String name;
private Integer price;
private Integer stock;
private Integer size;
private Integer product_status;
private MultipartFile multipartFile;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment