Quellcode durchsuchen

添加上传银行卡身份证等信息

薛晓波 vor 6 Jahren
Ursprung
Commit
981221817a
16 geänderte Dateien mit 409 neuen und 27 gelöschten Zeilen
  1. 13 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/Application.java
  2. 1 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/BankAccountInfo.java
  3. 13 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/BankAccountInfoService.java
  4. 29 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/BankAccountInfoServiceImpl.java
  5. 200 11
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/OSSUtil.java
  6. 21 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/PageController.java
  7. 11 2
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/TestController.java
  8. 16 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java
  9. 22 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/BankAccountInfoVO.java
  10. 41 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/wrapper/BankAccountInfoVOWrapper.java
  11. 2 1
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/wrapper/UserVOWrapper.java
  12. 3 0
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java
  13. 31 6
      mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java
  14. BIN
      mooctest-user-server/src/main/resources/static/images/back_sample.jpg
  15. BIN
      mooctest-user-server/src/main/resources/static/images/front_sample.jpg
  16. 6 6
      mooctest-user-server/src/main/resources/templates/upload_card_info.html

+ 13 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/Application.java

@@ -45,6 +45,10 @@ import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration;
 import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
 import org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration;
 import org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration;
+import org.springframework.boot.context.embedded.MultipartConfigFactory;
+import org.springframework.context.annotation.Bean;
+
+import javax.servlet.MultipartConfigElement;
 
 /**
  * @Author ROKG
@@ -104,4 +108,13 @@ public class Application {
         application.setWebEnvironment(true);
         application.run(args);
     }
+    @Bean
+    public MultipartConfigElement multipartConfigElement() {
+        MultipartConfigFactory factory = new MultipartConfigFactory();
+        //单个文件最大
+        factory.setMaxFileSize("10240KB"); //KB,MB
+        /// 设置总上传数据总大小
+        factory.setMaxRequestSize("102400KB");
+        return factory.createMultipartConfig();
+    }
 }

+ 1 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/model/BankAccountInfo.java

@@ -19,7 +19,7 @@ public class BankAccountInfo {
     private Long id;
 
     @Column(name = "user_id")
-    private Long userId;
+    private Long userId ;
 
     @Column(name = "real_name")
     private String realName;

+ 13 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/BankAccountInfoService.java

@@ -0,0 +1,13 @@
+package cn.iselab.mooctest.user.service;
+
+import cn.iselab.mooctest.user.model.BankAccountInfo;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.2.26 14:56
+ */
+public interface BankAccountInfoService {
+
+    BankAccountInfo setBankAccountInfo(BankAccountInfo info);
+}
+

+ 29 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/service/impl/BankAccountInfoServiceImpl.java

@@ -0,0 +1,29 @@
+package cn.iselab.mooctest.user.service.impl;
+
+import cn.iselab.mooctest.user.mapper.BankAccountInfoDao;
+import cn.iselab.mooctest.user.model.BankAccountInfo;
+import cn.iselab.mooctest.user.service.BankAccountInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.2.26 14:57
+ */
+@Service
+public class BankAccountInfoServiceImpl implements BankAccountInfoService {
+
+    @Autowired
+    BankAccountInfoDao bankAccountInfoDao;
+
+    @Override
+    public BankAccountInfo setBankAccountInfo(BankAccountInfo info) {
+        BankAccountInfo bankAccountInfo = bankAccountInfoDao.findBankAccountInfoByUserId(info.getUserId());
+        if(bankAccountInfo!=null){
+            info.setId(bankAccountInfo.getId());
+            return bankAccountInfoDao.save(info);
+        }else{
+            return bankAccountInfoDao.save(info);
+        }
+    }
+}

+ 200 - 11
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/util/OSSUtil.java

@@ -1,24 +1,213 @@
 package cn.iselab.mooctest.user.util;
 
+import com.aliyun.oss.ClientException;
 import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.OSSException;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectResult;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.time.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Date;
+import java.util.UUID;
 
-/**
- * @Description: 作用描述
- * @Author: xuexb
- * @CreateDate: 19-2-24$ 下午11:58$
- */
+@Component
 public class OSSUtil {
+    private static OSSClient instance;
+
+    private OSSUtil() {
+    }
+
+    /**
+     * 单例
+     * @return  OSS工具类实例
+     */
+    private OSSClient getOSSClient() {
+        if (instance == null) {
+            synchronized (OSSUtil.class) {
+                if (instance == null) {
+                    instance = new OSSClient(OSS_END_POINT, OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET);
+                }
+            }
+        }
+        return instance;
+    }
+
+    //定义日志
+    private static Logger logger = LoggerFactory.getLogger(OSSUtil.class);
+
+    //OSS 的地址
     @Value("${oss.endPoint}")
-    private String endPoint;
+    private String OSS_END_POINT;
+
+    //OSS 的key值
     @Value("${oss.accessKeyId}")
-    private String accessKeyId;
+    private String OSS_ACCESS_KEY_ID;
+
+    //OSS 的secret值
     @Value("${oss.accessKeySecret}")
-    private String accessKeySecret;
+    private String OSS_ACCESS_KEY_SECRET;
+
+    //OSS 的bucket名字
+    @Value("${oss.bucketName}")
+    private String OSS_BUCKET_NAME;
+
+    //设置URL过期时间为10年
+    private Date OSS_URL_EXPIRATION = DateUtils.addDays(new Date(), 365 * 10);
 
-    private static OSSClient ossClient;
+    //文件路径的枚举
+    public enum FileDirType {
+        BANKINFO("bankinfo/");
+        private String dir;
+
+        FileDirType(String dir) {
+            this.dir = dir;
+        }
+
+        @JsonValue
+        public String getDir() {
+            return dir;
+        }
+    }
+
+    /**
+     * 上传文件---去除URL中的?后的时间戳
+     * @param file 文件
+     * @param fileDir 上传到OSS上文件的路径
+     * @return 文件的访问地址
+     */
+    public String upload(MultipartFile file, FileDirType fileDir) {
+        this.createBucket();
+        String fileName = this.uploadFile(file, fileDir);
+        String fileOssURL = this.getImgUrl(fileName, fileDir);
+        int firstChar = fileOssURL.indexOf("?");
+        if (firstChar > 0) {
+            fileOssURL = fileOssURL.substring(0, firstChar);
+        }
+        return fileOssURL;
+    }
+
+
+    /**
+     * 当Bucket不存在时创建Bucket
+     *
+     * @throws OSSException 异常
+     * @throws ClientException Bucket命名规则:
+     *                         1.只能包含小写字母、数字和短横线,
+     *                         2.必须以小写字母和数字开头和结尾
+     *                         3.长度在3-63之间
+     */
+    private void createBucket() {
+        try {
+            logger.info("\n\n"+OSS_BUCKET_NAME+"\n\n");
+            if (!this.getOSSClient().doesBucketExist(OSS_BUCKET_NAME)) {//判断是否存在该Bucket,不存在时再重新创建
+                this.getOSSClient().createBucket(OSS_BUCKET_NAME);
+            }
+        } catch (Exception e) {
+            logger.error("{}", "创建Bucket失败,请核对Bucket名称(规则:只能包含小写字母、数字和短横线,必须以小写字母和数字开头和结尾,长度在3-63之间)");
+            throw new RuntimeException("创建Bucket失败,请核对Bucket名称(规则:只能包含小写字母、数字和短横线,必须以小写字母和数字开头和结尾,长度在3-63之间)");
+        }
+    }
+
+
+    /**
+     * 上传到OSS服务器  如果同名文件会覆盖服务器上的
+     * @param file 文件
+     * @param fileDir  上传到OSS上文件的路径
+     * @return 文件的访问地址
+     */
+    private String uploadFile(MultipartFile file, FileDirType fileDir) {
+        String fileName = String.format(
+                "%s.%s",
+                UUID.randomUUID().toString(),
+                FilenameUtils.getExtension(file.getOriginalFilename()));
+        try (InputStream inputStream = file.getInputStream()) {
+            //创建上传Object的Metadata
+            ObjectMetadata objectMetadata = new ObjectMetadata();
+            objectMetadata.setContentLength(inputStream.available());
+            objectMetadata.setCacheControl("no-cache");
+            objectMetadata.setHeader("Pragma", "no-cache");
+            objectMetadata.setContentType(getContentType(FilenameUtils.getExtension("." + file.getOriginalFilename())));
+            objectMetadata.setContentDisposition("inline;filename=" + fileName);
+            //上传文件
+            logger.info("\n\n"+OSS_BUCKET_NAME+"\n\n");
+            PutObjectResult putResult = this.getOSSClient().putObject(OSS_BUCKET_NAME, fileDir.getDir() + fileName, inputStream, objectMetadata);
+            return fileName;
+        } catch (Exception e) {
+            logger.error("{}", "上传文件失败");
+            throw new RuntimeException("上传文件失败");
+        }
+    }
+
+
+    /**
+     * 获得文件路径
+     * @param fileUrl  文件的URL
+     * @param fileDir  文件在OSS上的路径
+     * @return 文件的路径
+     */
+    private String getImgUrl(String fileUrl, FileDirType fileDir) {
+        if (StringUtils.isEmpty(fileUrl)) {
+            logger.error("{}", "文件地址为空");
+            throw new RuntimeException("文件地址为空");
+        }
+        String[] split = fileUrl.split("/");
+
+        //获取oss图片URL失败
+        URL url = this.getOSSClient().generatePresignedUrl(OSS_BUCKET_NAME, fileDir.getDir() + split[split.length - 1], OSS_URL_EXPIRATION);
+        if (url == null) {
+            logger.error("{}", "获取oss文件URL失败");
+            throw new RuntimeException("获取oss文件URL失败");
+        }
+        return url.toString();
+    }
 
-    public void destory() {
-        ossClient.shutdown();
+    /**
+     * 判断OSS服务文件上传时文件的contentType
+     *
+     * @param FilenameExtension 文件后缀
+     * @return 后缀
+     */
+    private String getContentType(String FilenameExtension) {
+        if (FilenameExtension.equalsIgnoreCase("bmp")) {
+            return "image/bmp";
+        }
+        if (FilenameExtension.equalsIgnoreCase("gif")) {
+            return "image/gif";
+        }
+        if (FilenameExtension.equalsIgnoreCase("jpeg") ||
+                FilenameExtension.equalsIgnoreCase("jpg") ||
+                FilenameExtension.equalsIgnoreCase("png")) {
+            return "image/jpeg";
+        }
+        if (FilenameExtension.equalsIgnoreCase("html")) {
+            return "text/html";
+        }
+        if (FilenameExtension.equalsIgnoreCase("txt")) {
+            return "text/plain";
+        }
+        if (FilenameExtension.equalsIgnoreCase("vsd")) {
+            return "application/vnd.visio";
+        }
+        if (FilenameExtension.equalsIgnoreCase("pptx") ||
+                FilenameExtension.equalsIgnoreCase("ppt")) {
+            return "application/vnd.ms-powerpoint";
+        }
+        if (FilenameExtension.equalsIgnoreCase("docx") ||
+                FilenameExtension.equalsIgnoreCase("doc")) {
+            return "application/msword";
+        }
+        if (FilenameExtension.equalsIgnoreCase("xml")) {
+            return "text/xml";
+        }
+        return "image/jpeg";
     }
 }

+ 21 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/PageController.java

@@ -239,6 +239,27 @@ public class PageController extends BaseController{
         return "redirect:"+redirectUrl;
     }
 
+    @RequestMapping(value = UrlConstants.PAGE + "uploadBankInfo", method = RequestMethod.GET)
+    public String uploadBankInfo(@RequestParam(value = "redirect", required = false)String redirect, Model model, HttpServletRequest request){
+        if (request.getSession().getAttribute("userId")==null){
+            model.addAttribute("message", "请登录后再进行操作!");
+            return "error_page";
+        }
+        if (redirect==null){
+            redirect = request.getSession().getAttribute("redirectURL")==null ?
+                    UrlConstants.DFAULT_GOTO : (String) request.getSession().getAttribute("redirectURL");
+        } else{
+            try {
+                redirect = URLDecoder.decode(redirect, "UTF-8");
+            } catch (Exception e) {
+                LOG.error("redirectUrl 解码出错", e);
+                redirect = UrlConstants.DFAULT_GOTO;
+            }
+        }
+        request.getSession().setAttribute("redirectURL", redirect);
+        return "upload_card_info";
+    }
+
     @RequestMapping(value = UrlConstants.PAGE + "forgetPassword/mobile", method = RequestMethod.GET)
     public String forgetPassword(){
         return "forget_password_mobile";

+ 11 - 2
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/TestController.java

@@ -5,14 +5,18 @@ import cn.iselab.mooctest.user.configure.ThirdPartyAuthConfiguration;
 import cn.iselab.mooctest.user.constants.ResponseStatus;
 import cn.iselab.mooctest.user.data.Callback;
 import cn.iselab.mooctest.user.data.ResponseResult;
+import cn.iselab.mooctest.user.model.BankAccountInfo;
 import cn.iselab.mooctest.user.model.VerifyCode;
 import cn.iselab.mooctest.user.service.MailService;
 import cn.iselab.mooctest.user.service.VerifyCodeService;
+import cn.iselab.mooctest.user.util.OSSUtil;
+import cn.iselab.mooctest.user.web.data.BankAccountInfoVO;
 import cn.iselab.mooctest.user.web.data.UserVO;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.mail.MessagingException;
@@ -40,6 +44,9 @@ public class TestController extends BaseController{
     @Autowired
     ThirdPartyAuthConfiguration authConfiguration;
 
+    @Autowired
+    OSSUtil ossUtil;
+
     @RequestMapping(value = "/test/first", method = RequestMethod.GET)
     public Map<String, Object> firstResp(HttpServletRequest request){
         Map<String, Object> map = new HashMap<>();
@@ -148,8 +155,10 @@ public class TestController extends BaseController{
     }
 
     @RequestMapping(value = "/test/upload/bankinfo", method = RequestMethod.POST)
-    public String doUpload(@RequestParam("real_name") String name){
-        return name;
+    public String doUpload(BankAccountInfoVO infoVO){
+        System.out.println("info: "+infoVO.getBank_card_number()+","+infoVO.getBank_info());
+        String str = ossUtil.upload(infoVO.getID_card_back(), OSSUtil.FileDirType.BANKINFO);
+        return str;
     }
 
 }

+ 16 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/ctrl/UserController.java

@@ -6,6 +6,8 @@ import cn.iselab.mooctest.user.constants.UrlConstants;
 import cn.iselab.mooctest.user.data.ResponseResult;
 import cn.iselab.mooctest.user.model.User;
 import cn.iselab.mooctest.user.util.EncryptionUtil;
+import cn.iselab.mooctest.user.util.OSSUtil;
+import cn.iselab.mooctest.user.web.data.BankAccountInfoVO;
 import cn.iselab.mooctest.user.web.data.UserVO;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,9 @@ public class UserController extends BaseController {
     @Autowired
     private UserLogic userLogic;
 
+    @Autowired
+    private OSSUtil ossUtil;
+
     @RequestMapping(value = UrlConstants.API + "user/{id:\\d+}", method = RequestMethod.GET)
     public UserDTO getUserById(@PathVariable("id") Long id) {
         return userLogic.getUserById(id);
@@ -115,4 +120,15 @@ public class UserController extends BaseController {
     public ResponseResult<UserVO> updateMobile(@RequestBody UserVO userVO, HttpServletRequest request){
         return userLogic.updateUserMobile(userVO, request);
     }
+
+    @RequestMapping(value = UrlConstants.API + "bankInfo", method = RequestMethod.POST)
+    public ModelAndView setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request){
+        ResponseResult<Object> result = userLogic.setBankInfo(infoVO, request);
+        if (result.getStatus()==ResponseStatus.SUCCESS){
+            return new ModelAndView("redirect:"+(String) request.getSession().getAttribute("redirectURL"));
+        }
+        ModelAndView modelAndView = new ModelAndView("error_page");
+        modelAndView.addObject("message", result.getMsg());
+        return modelAndView;
+    }
 }

+ 22 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/BankAccountInfoVO.java

@@ -0,0 +1,22 @@
+package cn.iselab.mooctest.user.web.data;
+
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.2.26 11:28
+ */
+@Data
+public class BankAccountInfoVO {
+    private String real_name;
+    private Long user_id;
+    private String id_number;
+    private String bank_info;
+    private String bank_card_number;
+    private String id_card_front_url;
+    private String id_card_back_url;
+
+    private MultipartFile ID_card_front;
+    private MultipartFile ID_card_back;
+}

+ 41 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/wrapper/BankAccountInfoVOWrapper.java

@@ -0,0 +1,41 @@
+package cn.iselab.mooctest.user.web.data.wrapper;
+
+import cn.iselab.mooctest.user.model.BankAccountInfo;
+import cn.iselab.mooctest.user.web.data.BankAccountInfoVO;
+import cn.iselab.mooctest.user.web.wrapper.BaseWrapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.2.26 11:28
+ */
+@Service
+public class BankAccountInfoVOWrapper extends BaseWrapper<BankAccountInfoVO, BankAccountInfo> {
+    @Override
+    public BankAccountInfoVO wrap(BankAccountInfo info) {
+        BankAccountInfoVO bankAccountInfoVO = new BankAccountInfoVO();
+
+        bankAccountInfoVO.setUser_id(info.getUserId());
+        bankAccountInfoVO.setBank_card_number(info.getBankCardNumber());
+        bankAccountInfoVO.setBank_info(info.getBankInfo());
+        bankAccountInfoVO.setId_number(info.getIDNumber());
+        bankAccountInfoVO.setReal_name(info.getRealName());
+        bankAccountInfoVO.setId_card_front_url(info.getIDCardFrontUrl());
+        bankAccountInfoVO.setId_card_back_url(info.getIDCardBackUrl());
+        return bankAccountInfoVO;
+    }
+
+    @Override
+    public BankAccountInfo unwrap(BankAccountInfoVO data) {
+        BankAccountInfo bankAccountInfo = new BankAccountInfo();
+
+        bankAccountInfo.setBankCardNumber(data.getBank_card_number());
+        bankAccountInfo.setBankInfo(data.getBank_card_number());
+        bankAccountInfo.setIDCardBackUrl(data.getId_card_back_url());
+        bankAccountInfo.setIDCardFrontUrl(data.getId_card_front_url());
+        bankAccountInfo.setIDNumber(data.getId_number());
+        bankAccountInfo.setRealName(data.getReal_name());
+        bankAccountInfo.setUserId(data.getUser_id());
+        return bankAccountInfo;
+    }
+}

+ 2 - 1
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/UserVOWrapper.java → mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/data/wrapper/UserVOWrapper.java

@@ -1,6 +1,7 @@
-package cn.iselab.mooctest.user.web.data;
+package cn.iselab.mooctest.user.web.data.wrapper;
 
 import cn.iselab.mooctest.user.model.User;
+import cn.iselab.mooctest.user.web.data.UserVO;
 import cn.iselab.mooctest.user.web.wrapper.BaseWrapper;
 import org.springframework.stereotype.Service;
 

+ 3 - 0
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/UserLogic.java

@@ -3,6 +3,7 @@ package cn.iselab.mooctest.user.web.logic;
 import cn.iselab.mooctest.rpc.user.data.UserDTO;
 import cn.iselab.mooctest.user.constants.ResponseStatus;
 import cn.iselab.mooctest.user.data.ResponseResult;
+import cn.iselab.mooctest.user.web.data.BankAccountInfoVO;
 import cn.iselab.mooctest.user.web.data.UserVO;
 
 import javax.servlet.http.HttpServletRequest;
@@ -56,5 +57,7 @@ public interface UserLogic {
 
     ResponseResult<UserVO> updateUserMobile(UserVO userVO, HttpServletRequest request);
 
+    ResponseResult<Object> setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request);
+
 
 }

+ 31 - 6
mooctest-user-server/src/main/java/cn/iselab/mooctest/user/web/logic/impl/UserLogicImpl.java

@@ -5,22 +5,22 @@ import cn.iselab.mooctest.user.configure.MailProperties;
 import cn.iselab.mooctest.user.constants.VerifyConstants;
 import cn.iselab.mooctest.user.constants.ResponseStatus;
 import cn.iselab.mooctest.user.data.ResponseResult;
+import cn.iselab.mooctest.user.model.BankAccountInfo;
 import cn.iselab.mooctest.user.model.User;
 import cn.iselab.mooctest.user.model.UserIntegral;
 import cn.iselab.mooctest.user.model.VerifyCode;
-import cn.iselab.mooctest.user.service.IntegralService;
-import cn.iselab.mooctest.user.service.MailService;
-import cn.iselab.mooctest.user.service.UserService;
-import cn.iselab.mooctest.user.service.VerifyCodeService;
+import cn.iselab.mooctest.user.service.*;
 import cn.iselab.mooctest.user.util.EncryptionUtil;
 import cn.iselab.mooctest.user.util.MSUtil;
+import cn.iselab.mooctest.user.util.OSSUtil;
+import cn.iselab.mooctest.user.web.data.BankAccountInfoVO;
 import cn.iselab.mooctest.user.web.data.UserVO;
-import cn.iselab.mooctest.user.web.data.UserVOWrapper;
+import cn.iselab.mooctest.user.web.data.wrapper.BankAccountInfoVOWrapper;
+import cn.iselab.mooctest.user.web.data.wrapper.UserVOWrapper;
 import cn.iselab.mooctest.user.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.user.web.logic.BaseLogic;
 import cn.iselab.mooctest.user.web.logic.UserLogic;
 import cn.iselab.mooctest.user.web.wrapper.UserWrapper;
-import com.alibaba.dubbo.rpc.filter.EchoFilter;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.validator.routines.EmailValidator;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,6 +59,15 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
     @Autowired
     private UserVOWrapper userVOWrapper;
 
+    @Autowired
+    private BankAccountInfoVOWrapper bankAccountInfoVOWrapper;
+
+    @Autowired
+    private OSSUtil ossUtil;
+
+    @Autowired
+    private BankAccountInfoService bankAccountInfoService;
+
     @Override
     public UserDTO getUserByEmail(String s) {
         User user = userService.findByEmail(s);
@@ -613,5 +622,21 @@ public class UserLogicImpl extends BaseLogic implements UserLogic {
         return result;
     }
 
+    @Override
+    public ResponseResult<Object> setBankInfo(BankAccountInfoVO infoVO, HttpServletRequest request) {
+        try {
+            infoVO.setId_card_front_url(ossUtil.upload(infoVO.getID_card_front(), OSSUtil.FileDirType.BANKINFO));
+            infoVO.setId_card_back_url(ossUtil.upload(infoVO.getID_card_back(), OSSUtil.FileDirType.BANKINFO));
+        }catch (Exception e){
+            return new ResponseResult<Object>(ResponseStatus.FAILED, "上传失败,请稍后再试",null);
+        }
+        infoVO.setUser_id((Long) request.getSession().getAttribute("userId"));
+        BankAccountInfo info = bankAccountInfoService.setBankAccountInfo(bankAccountInfoVOWrapper.unwrap(infoVO));
+        if (info==null){
+            return new ResponseResult<Object>(ResponseStatus.FAILED, "上传出错,请稍后再试",null);
+        }
+        return new ResponseResult<Object>(ResponseStatus.SUCCESS, "上传成功", null);
+    }
+
 
 }

BIN
mooctest-user-server/src/main/resources/static/images/back_sample.jpg


BIN
mooctest-user-server/src/main/resources/static/images/front_sample.jpg


+ 6 - 6
mooctest-user-server/src/main/resources/templates/upload_card_info.html

@@ -21,7 +21,7 @@
 <div class="limiter">
     <div class="container-login100" th:style="'background-image:url(/images/bg.jpg);'">
         <div class="wrap-login100 p-l-40 p-r-40 p-t-30 p-b-25" style="width: 800px">
-            <form th:action="@{/test/upload/bankinfo}" enctype="multipart/form-data" method="post" class="login100-form validate-form" style="align-content: center; padding-left: 40px; padding-right: 40px;">
+            <form th:action="@{/api/bankInfo}" enctype="multipart/form-data" method="post" class="login100-form validate-form" style="align-content: center; padding-left: 40px; padding-right: 40px;">
 
                 <div id="login-logo" class="p-b-15" style="text-align: center;">
                     <img style="width: 80px;" th:src="@{/images/mooctest.png}" >
@@ -32,22 +32,22 @@
                 </div>
                 <div class="wrap-input100 validate-input m-b-25">
                     <span class="label-input100" style="font-size: medium; font-weight: bold">身份证号码:</span>
-                    <input id="ID_number" name="ID_number" type="text" maxlength="18" minlength="18" placeholder="请输入18位身份证号" required="不可为空">
+                    <input id="id_number" name="id_number" type="text" maxlength="18" minlength="18" placeholder="请输入18位身份证号" required="不可为空">
                 </div>
                 <div class="wrap-input100 validate-input m-b-25">
                     <span class="label-input100" style="font-size: medium; font-weight: bold">银行卡号:</span>
-                    <input id="bank_card" name="bank_card" type="text" placeholder="请填写银行卡号" required="不可为空">
+                    <input id="bank_card_number" name="bank_card_number" type="text" placeholder="请填写银行卡号" required="不可为空">
                 </div>
                 <div class="wrap-input100 validate-input m-b-25">
                     <span class="label-input100" style="font-size: medium; font-weight: bold">开户行信息:</span>
-                    <input id="bank_name" name="bank_name" type="text" placeholder="具体到支行" required="不可为空">
+                    <input id="bank_info" name="bank_info" type="text" placeholder="具体到支行" required="不可为空">
                 </div>
                 <div class="wrap-input100 validate-input m-b-25">
                     <span class="label-input100" style="font-size: medium; font-weight: bold">身份证正面:</span>
                     <div class="m-t-5" style="position: relative;">
                         <input id="ID_card_front" style="position: absolute;opacity: 0;" name="ID_card_front" type="file" accept="image/png" onchange="changeFrontPic()" required="不可为空">
                         <label for="ID_card_front">
-                            <img id="frontImg" src="/images/mooctest.png" style="width: 214px; height: 135px">
+                            <img id="frontImg" src="/images/front_sample.jpg" style="width: 214px; height: 135px">
                         </label>
                     </div>
                 </div>
@@ -56,7 +56,7 @@
                     <div class="m-t-5" style="position: relative;">
                         <input id="ID_card_back" style="position: absolute;opacity: 0;" name="ID_card_back" type="file" accept="image/png" onchange="changeBackPic()" required="不可为空">
                         <label for="ID_card_back">
-                            <img id="backImg" src="/images/mooctest.png" style="width: 214px; height: 135px">
+                            <img id="backImg" src="/images/back_sample.jpg" style="width: 214px; height: 135px">
                         </label>
                     </div>
                 </div>