Browse Source

二手发布新字段保存

zhijiezhao 3 years ago
parent
commit
adc1572066

+ 6 - 0
src/main/java/com/caimei365/commodity/controller/SecondHandApi.java

@@ -91,6 +91,12 @@ public class SecondHandApi {
      *                  ,"image" : 图片信息
      *                  ,"productDetails" : 商品详细信息
      *                  ,"source" : 信息来源 1网站  2CRM  3后台
+     *                  ,"publishIdentity" :  发布者身份  1个人身份,2公司身份
+     *                  ,"licenseImage" : 营业执照照片
+     *                  ,"fileType" : 商品包含的文件类型,1,仪器原始合同,2,仪器注册证,3,仪器发票,4,仪器报关单,5,无任何文件'
+     *                  (fileType字符串逗号拼接)
+     *                  ,"checkCode" : 验证码
+     *                  ,"authenticationBackImage" : 身份证背面照片
      *                  }
      * @param headers   HttpHeaders
      */

+ 2 - 0
src/main/java/com/caimei365/commodity/mapper/SecondHandMapper.java

@@ -94,4 +94,6 @@ public interface SecondHandMapper {
      * 二手商品-相关推荐
      */
     List<SecondListVo> getSecondRecommends(Integer productId);
+
+    void insertSecondFileType(String fileType,Integer secondId,Integer productId);
 }

+ 27 - 0
src/main/java/com/caimei365/commodity/model/dto/SecondDto.java

@@ -16,6 +16,33 @@ import java.io.Serializable;
 @Data
 public class SecondDto implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    /**
+     * 验证码
+     */
+    @ApiModelProperty("二手发布验证码")
+    private String checkCode;
+    /**
+     * 商品包含的文件类型,1,仪器原始合同,2,仪器注册证,3,仪器发票,4,仪器报关单,5,无任何文件'
+     *  (fileType字符串逗号拼接)
+     */
+    @ApiModelProperty("商品包含的文件类型,1,仪器原始合同,2,仪器注册证,3,仪器发票,4,仪器报关单,5,无任何文件;字符串逗号拼接")
+    private String fileType;
+    /**
+     * 发布者身份  1个人身份,2公司身份
+     */
+    @ApiModelProperty("发布者身份  1个人身份,2公司身份")
+    private Integer publishIdentity;
+    /**
+     * 身份证背面照片
+     */
+    @ApiModelProperty("身份证背面照片")
+    private String authenticationBackImage;
+    /**
+     * 营业执照照片
+     */
+    @ApiModelProperty("营业执照照片")
+    private String licenseImage;
     /**
      * 二手商品分类,1二手仪1器,2临期产品,3其他
      */

+ 15 - 0
src/main/java/com/caimei365/commodity/model/po/ProductSecondPo.java

@@ -180,5 +180,20 @@ public class ProductSecondPo implements Serializable {
      * 出让承诺函图片
      */
     private String commitmentImage;
+    /**
+     * 发布者身份  1个人身份,2公司身份
+     */
+    @ApiModelProperty("发布者身份  1个人身份,2公司身份")
+    private Integer publishIdentity;
+    /**
+     * 身份证背面照片
+     */
+    @ApiModelProperty("身份证背面照片")
+    private String authenticationBackImage;
+    /**
+     * 营业执照照片
+     */
+    @ApiModelProperty("营业执照照片")
+    private String licenseImage;
 
 }

+ 58 - 6
src/main/java/com/caimei365/commodity/service/impl/SecondHandServiceImpl.java

@@ -11,6 +11,7 @@ import com.caimei365.commodity.model.po.ProductSecondPo;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.service.SecondHandService;
 import com.caimei365.commodity.utils.ImageUtils;
+import com.caimei365.commodity.utils.ValidateUtil;
 import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -43,6 +44,8 @@ public class SecondHandServiceImpl implements SecondHandService {
     private RedisService redisService;
     @Resource
     private PriceMapper priceMapper;
+    @Value("${spring.cloud.config.profile}")
+    private String profile;
 
     /**
      * 二手商品列表
@@ -64,7 +67,7 @@ public class SecondHandServiceImpl implements SecondHandService {
             if (null != userIdentity && userIdentity == 2) {
                 // 会员机构类型:1医美,2生美
                 Integer clubType = priceMapper.getClubTypeById(userId);
-                if (null != clubType && clubType == 1){
+                if (null != clubType && clubType == 1) {
                     userIdentity = 5;
                 }
             }
@@ -201,11 +204,38 @@ public class SecondHandServiceImpl implements SecondHandService {
      *                  ,"image" : 图片信息
      *                  ,"productDetails" : 商品详细信息
      *                  ,"source" : 信息来源 1网站  2CRM  3后台
+     *                  ,"publishIdentity" :  发布者身份  1个人身份,2公司身份
+     *                  ,"licenseImage" : 营业执照照片
+     *                  ,"fileType" : 商品包含的文件类型,1,仪器原始合同,2,仪器注册证,3,仪器发票,4,仪器报关单,5,无任何文件'
+     *                  (fileType字符串逗号拼接)
+     *                  ,"checkCode" : 验证码
+     *                  ,"authenticationBackImage" : 身份证背面照片
      *                  }
      * @param headers   HttpHeaders
      */
     @Override
     public ResponseJson releaseSecondHand(SecondDto secondDto, HttpHeaders headers) {
+        //校验手机号
+        String contactMobile = secondDto.getContactMobile();
+        String result = ValidateUtil.validateMobile(contactMobile);
+        if (result != null) {
+            return ResponseJson.error("参数异常:联系方式不正确");
+        }
+        //校验验证码
+        String checkCode = secondDto.getCheckCode();
+        if (StringUtils.isBlank(checkCode)) {
+            return ResponseJson.error("参数异常:请输入验证码");
+        }
+        if (StringUtils.isNotBlank(checkCode)) {
+            String redisSmsCode = (String) redisService.get("code:" + contactMobile);
+            // 开发 和 测试环境 固定短信验证码 666666
+            if ("dev".equals(profile) || "beta".equals(profile)) {
+                redisSmsCode = (null != redisSmsCode && !"null".equals(redisSmsCode) ? redisSmsCode : "666666");
+            }
+            if (!checkCode.equals(redisSmsCode)) {
+                return ResponseJson.error("参数异常:手机验证码错误");
+            }
+        }
         // 打印IP
         String ip = headers.getFirst("X-CLIENT-IP");
         log.info("发布二手商品 X-CLIENT-IP : " + ip);
@@ -236,14 +266,24 @@ public class SecondHandServiceImpl implements SecondHandService {
         Integer stock = secondDto.getStock();
         String productQuality = secondDto.getProductQuality();
         String contactName = secondDto.getContactName();
-        String contactMobile = secondDto.getContactMobile();
         String source = secondDto.getSource();
         Integer townId = secondDto.getTownId();
         String address = secondDto.getAddress();
         // 此图片为逗号隔开的多张数据
         String image = secondDto.getImage();
         String maturityYears = secondDto.getMaturityYears();
-
+        Integer publishIdentity = secondDto.getPublishIdentity();
+        String companyName = secondDto.getCompanyName();
+        String fileType = secondDto.getFileType();
+        if (2 == publishIdentity && StringUtils.isBlank(companyName)) {
+            return ResponseJson.error("参数异常:发布身份为公司身份时,公司名称不能为空");
+        }
+        if (null == publishIdentity || publishIdentity <= 0) {
+            return ResponseJson.error("参数异常:请选择发布者身份");
+        }
+        if (StringUtils.isEmpty(fileType)) {
+            return ResponseJson.error("参数异常:请选择包含的文件类型");
+        }
         if (StringUtils.isEmpty(secondHandType)) {
             return ResponseJson.error("参数异常:请选择分类");
         } else if (StringUtils.equals("1", secondHandType)) {
@@ -277,9 +317,6 @@ public class SecondHandServiceImpl implements SecondHandService {
         if (StringUtils.isEmpty(contactName)) {
             return ResponseJson.error("参数异常:请输入联系人姓名");
         }
-        if (StringUtils.isEmpty(contactMobile)) {
-            return ResponseJson.error("参数异常:请输入联系方式");
-        }
         if (null == townId) {
             return ResponseJson.error("参数异常:请完善联系地址");
         }
@@ -458,8 +495,22 @@ public class SecondHandServiceImpl implements SecondHandService {
         secondPo.setOssName(secondDto.getOssName());
         secondPo.setAuthenticationImage(secondDto.getAuthenticationImage());
         secondPo.setCommitmentImage(secondDto.getCommitmentImage());
+        //新增字段,用户身份,营业执照,身份证背面
+        secondPo.setPublishIdentity(secondDto.getPublishIdentity());
+        secondPo.setLicenseImage(secondDto.getLicenseImage());
+        secondPo.setAuthenticationBackImage(secondDto.getAuthenticationBackImage());
         /* 保存商品二手附加详细信息 */
         secondHandMapper.saveSencondHandProduct(secondPo);
+        //保存商品包含文件
+        String fileTypes = secondDto.getFileType();
+        if (fileTypes.contains(",")) {
+            String[] split = fileTypes.split(",");
+            for (String fileType : split) {
+                secondHandMapper.insertSecondFileType(fileType, secondPo.getId(), product.getProductId());
+            }
+        } else {
+            secondHandMapper.insertSecondFileType(fileTypes, secondPo.getId(), product.getProductId());
+        }
         return ResponseJson.success(product.getProductId());
     }
 
@@ -490,6 +541,7 @@ public class SecondHandServiceImpl implements SecondHandService {
             return "时间未知";
         }
     }
+
     /**
      * 获取是否在固定天数以内
      *

+ 145 - 0
src/main/java/com/caimei365/commodity/utils/ValidateUtil.java

@@ -0,0 +1,145 @@
+package com.caimei365.commodity.utils;
+
+import org.apache.commons.lang.StringUtils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/3/5
+ */
+public class ValidateUtil {
+    /** 手机号码验证格式 */
+    private static final String MOBILE_PATTERN = "^1[1-9]\\d{9}$";
+    /** 邮箱验证格式 */
+    private static final String EMAIL_PATTERN = "^\\s*?(.+)@(.+?)\\s*$";
+    /** 密码验证格式 */
+    private static final String PASSWORD_PATTERN = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
+    /** 机构名称验证格式 */
+    private static final String CLUB_NAME_PATTERN = "^[a-zA-Z0-9\u4e00-\u9fa5]{1,200}$";
+    /** 统一社会信用代码验证格式 */
+    private static final String SOCIAL_CREDIT_CODE_PATTERN = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";
+
+    /**
+     * 验证手机号码格式
+     *
+     * @param mobile 手机号
+     */
+    public static String validateMobile(String mobile) {
+        if (StringUtils.isEmpty(mobile) || StringUtils.isBlank(mobile)) {
+            return "手机号不可为空";
+        } else {
+            Pattern pattern = Pattern.compile(MOBILE_PATTERN);
+            Matcher matcher = pattern.matcher(mobile);
+            if (matcher.matches()) {
+                return null;
+            } else {
+                return "手机号码格式不正确";
+            }
+        }
+    }
+
+    /**
+     * 验证简单的邮箱格式
+     *
+     * @param email 邮箱
+     */
+    public static boolean validateEmail(String email) {
+        if (StringUtils.isEmpty(email) || StringUtils.isBlank(email)) {
+            return false;
+        } else {
+            Pattern pattern = Pattern.compile(EMAIL_PATTERN);
+            Matcher matcher = pattern.matcher(email);
+            return matcher.matches();
+        }
+    }
+
+    /**
+     * 密码验证
+     */
+    public static String validatePassWord(String password) {
+        if (StringUtils.isEmpty(password) || StringUtils.isBlank(password)) {
+            return "密码不可为空";
+        }
+        if (password.length() > 16 || password.length() < 8) {
+            return "密码长度不正确(8-16)";
+        }
+        Pattern pattern = Pattern.compile(PASSWORD_PATTERN);
+        Matcher matcher = pattern.matcher(password);
+        if (matcher.matches()) {
+            return null;
+        } else {
+            return "请输入8-16位字符,需字母数字组合。";
+        }
+    }
+
+    /**
+     * 验证机构名称
+     */
+    public static String validateClubName(String name) {
+        if (StringUtils.isEmpty(name) || StringUtils.isBlank(name)) {
+            return "请填写美容机构名称";
+        } else {
+            Pattern pattern = Pattern.compile(CLUB_NAME_PATTERN);
+            Matcher matcher = pattern.matcher(name);
+            if (matcher.matches()) {
+                return null;
+            } else {
+                return "机构名称格式不正确";
+            }
+        }
+    }
+
+    /**
+     * 统一社会信用代码验证
+     */
+    public static String validateSocialCreditCode(String socialCreditCode) {
+        if (StringUtils.isEmpty(socialCreditCode) || StringUtils.isBlank(socialCreditCode)) {
+            return "请输入您的统一社会信用代码";
+        } else {
+            Pattern pattern = Pattern.compile(SOCIAL_CREDIT_CODE_PATTERN);
+            Matcher matcher = pattern.matcher(socialCreditCode);
+            if (matcher.matches()) {
+                return null;
+            } else {
+                return "统一社会信用代码格式不正确";
+            }
+        }
+    }
+
+    /**
+     * 名称(或联系人姓名)1个字的话,全部显示
+     * 名称(或联系人姓名)2个字的话,显示第二个字,第一个字打星号*
+     * 名称(或联系人姓名)3个字的话,显示后两个字,第一个字打星号*
+     * 名称(或联系人姓名)4个字话,显示前两个字和后一个字,中间的用一个星号*表示
+     * 名称(或联系人姓名)5个字及以上的话,显示前两个字和后一个字,中间的统一用3个星号*表示
+     *
+     * @param  name
+     * @return String
+     */
+    public static String nameConversion(String name){
+        char[] nameArr = name.toCharArray();
+        StringBuilder showName = new StringBuilder();
+        switch (nameArr.length) {
+            case 0:
+            case 1:
+                break;
+            case 2:
+                showName.append('*').append(nameArr[1]);
+                break;
+            case 3:
+                showName.append('*').append(nameArr[1]).append(nameArr[2]);
+                break;
+            case 4:
+                showName.append(nameArr[0]).append(nameArr[1]).append('*').append(nameArr[3]);
+                break;
+            default:
+                showName.append(nameArr[0]).append(nameArr[1]).append("***").append(nameArr[nameArr.length-1]);
+        }
+        return showName.toString();
+    }
+
+}

+ 5 - 0
src/main/resources/mapper/SecondHandMapper.xml

@@ -34,6 +34,11 @@
             #{visibility}, #{addTime}, #{updateTime}, #{onlineTime}, #{offlineTime}
         )
     </insert>
+    <insert id="insertSecondFileType">
+        insert into cm_second_file_type
+        (fileType,secondId,productId)
+        values (#{fileType},#{secondId},#{productId})
+    </insert>
     <update id="updateSecondHandViews">
         UPDATE cm_second_hand_detail SET viewingNum = #{viewingNum}
         WHERE productID = #{productId}