Browse Source

联合丽格

huangzhiguo 2 years ago
parent
commit
cc0cfedbfa

+ 66 - 0
src/main/java/com/caimei365/order/controller/CartClubApi.java

@@ -3,6 +3,7 @@ package com.caimei365.order.controller;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.dto.CartDto;
 import com.caimei365.order.model.dto.InvoiceDto;
+import com.caimei365.order.model.dto.InvoiceOrganizeDto;
 import com.caimei365.order.model.vo.InvoiceVo;
 import com.caimei365.order.service.CartClubService;
 import io.swagger.annotations.Api;
@@ -320,6 +321,71 @@ public class CartClubApi {
         return cartClubService.updateUserInvoice(invoiceDto);
     }
 
+    /**
+     * 更新用户发票--组织
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    @ApiOperation("更新用户发票--组织")
+    @PostMapping("/invoice/updateOrganize")
+    public ResponseJson<Integer> updateOrganizeUserInvoice(InvoiceOrganizeDto invoiceDto) {
+        if (null == invoiceDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (null == invoiceDto.getType()) {
+            return ResponseJson.error("发票类型不能为空!", null);
+        }
+        if (1 == invoiceDto.getType()) {
+            if (null == invoiceDto.getHeadingType()) {
+                return ResponseJson.error("抬头类型不能为空!", null);
+            }
+            if (0 == invoiceDto.getHeadingType() && null == invoiceDto.getInvoiceTitle()) {
+                return ResponseJson.error("发票抬头不能为空!", null);
+            }
+            if (1 == invoiceDto.getHeadingType()) {
+                if  (null == invoiceDto.getInvoiceTitle()) {
+                    return ResponseJson.error("发票抬头不能为空!", null);
+                }
+                if  (null == invoiceDto.getCorporationTaxNum()) {
+                    return ResponseJson.error("企业税号不能为空!", null);
+                }
+            }
+
+        }
+        if (2 == invoiceDto.getType()) {
+            if  (null == invoiceDto.getInvoiceTitle()) {
+                return ResponseJson.error("发票抬头不能为空!", null);
+            }
+            if  (null == invoiceDto.getCorporationTaxNum()) {
+                return ResponseJson.error("企业税号不能为空!", null);
+            }
+            if  (null == invoiceDto.getRegisteredAddress()) {
+                return ResponseJson.error("注册地址不能为空!", null);
+            }
+            if  (null == invoiceDto.getRegisteredPhone()) {
+                return ResponseJson.error("注册电话不能为空!", null);
+            }
+            if  (null == invoiceDto.getBankAccountNo()) {
+                return ResponseJson.error("开户银行账户不能为空!", null);
+            }
+            if  (null == invoiceDto.getOpenBank()) {
+                return ResponseJson.error("开户银行不能为空!", null);
+            }
+            // 增值税专用发票 抬头为null
+            invoiceDto.setHeadingType(null);
+        }
+        return cartClubService.updateOrganizeUserInvoice(invoiceDto);
+    }
+
     /**
      * 供应商优惠券
      *

+ 9 - 0
src/main/java/com/caimei365/order/mapper/CartClubMapper.java

@@ -2,6 +2,7 @@ package com.caimei365.order.mapper;
 
 import com.caimei365.order.model.dto.CartDto;
 import com.caimei365.order.model.dto.InvoiceDto;
+import com.caimei365.order.model.dto.InvoiceOrganizeDto;
 import com.caimei365.order.model.po.CartPo;
 import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
@@ -114,10 +115,18 @@ public interface CartClubMapper {
      * 新增用户发票信息
      */
     void insertUserInvoice(InvoiceDto invoiceDto);
+    /**
+     * 新增用户发票信息 -- 组织
+     */
+    void insertOrganizeUserInvoice(InvoiceOrganizeDto invoiceDto);
     /**
      * 更新用户发票信息
      */
     void updateUserInvoice(InvoiceDto invoiceDto);
+    /**
+     * 更新用户发票信息 -- 组织
+     */
+    void updateOrganizeUserInvoice(InvoiceOrganizeDto invoiceDto);
     /**
      * 获取用户发票信息
      */

+ 64 - 0
src/main/java/com/caimei365/order/model/dto/InvoiceOrganizeDto.java

@@ -0,0 +1,64 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2023/5/25
+ */
+@Data
+public class InvoiceOrganizeDto {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 用户Id
+     */
+    private Integer userId;
+    /**
+     * id
+     */
+    @ApiModelProperty("id")
+    private Integer id;
+    /**
+     * 发票类型: 0不要发票 1 普通发票 2 增值税专用发票
+     */
+    @ApiModelProperty("发票类型: 0不要发票 1 普通发票 2 增值税专用发票")
+    private Integer type;
+    /**
+     * 抬头类型: 0 个人 1 单位
+     */
+    @ApiModelProperty("抬头类型: 0 个人 1 单位")
+    private Integer headingType;
+    /**
+     * 单位名,发票抬头
+     */
+    @ApiModelProperty("单位名,发票抬头")
+    private String invoiceTitle;
+    /**
+     * 企业税号、纳税人识别号
+     */
+    @ApiModelProperty("企业税号、纳税人识别号")
+    private String corporationTaxNum;
+    /**
+     * 注册地址
+     */
+    @ApiModelProperty("注册地址")
+    private String registeredAddress;
+    /**
+     * 注册电话
+     */
+    @ApiModelProperty("注册电话")
+    private String registeredPhone;
+    /**
+     * 开户银行账户
+     */
+    @ApiModelProperty("开户银行账户")
+    private String bankAccountNo;
+    /**
+     * 开户银行
+     */
+    @ApiModelProperty("开户银行")
+    private String openBank;
+}

+ 4 - 0
src/main/java/com/caimei365/order/model/po/InvoicePo.java

@@ -21,6 +21,10 @@ public class InvoicePo implements Serializable {
      * 发票类型 0不开发票 1普通发票 2增值税发票
      */
     private Integer type;
+    /**
+     * 抬头类型: 0 个人 1 单位
+     */
+    private Integer headingType;
     /**
      * 单位名,发票抬头
      */

+ 4 - 0
src/main/java/com/caimei365/order/model/po/OrderProductPo.java

@@ -18,6 +18,10 @@ public class OrderProductPo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private Integer skuId;
+    /**
+     * 外部商城skuId
+     */
+    private Integer organizeSkuId;
     /**
      * 不包含单品满减的商品金额
      */

+ 4 - 0
src/main/java/com/caimei365/order/model/vo/InvoiceVo.java

@@ -27,6 +27,10 @@ public class InvoiceVo implements Serializable {
      * 发票类型 0不开发票 1普通发票 2增值税发票
      */
     private Integer type;
+    /**
+     * 抬头类型: 0 个人 1 单位
+     */
+    private Integer headingType;
     /**
      * 发票抬头 个人名称或企业名称或者单位名
      */

+ 16 - 0
src/main/java/com/caimei365/order/service/CartClubService.java

@@ -3,6 +3,7 @@ package com.caimei365.order.service;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.dto.CartDto;
 import com.caimei365.order.model.dto.InvoiceDto;
+import com.caimei365.order.model.dto.InvoiceOrganizeDto;
 import com.caimei365.order.model.vo.InvoiceVo;
 
 import java.util.Map;
@@ -127,6 +128,21 @@ public interface CartClubService {
      *                   }
      */
     ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto);
+    /**
+     * 更新用户发票
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    ResponseJson<Integer> updateOrganizeUserInvoice(InvoiceOrganizeDto invoiceDto);
 
     /**
      * 供应商优惠券

+ 27 - 0
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -10,6 +10,7 @@ import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.dto.CartDto;
 import com.caimei365.order.model.dto.InvoiceDto;
+import com.caimei365.order.model.dto.InvoiceOrganizeDto;
 import com.caimei365.order.model.po.CartPo;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.CartClubService;
@@ -2132,6 +2133,32 @@ public class CartClubServiceImpl implements CartClubService {
         return ResponseJson.success(1);
     }
 
+    /**
+     * 更新用户发票
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    @Override
+    public ResponseJson<Integer> updateOrganizeUserInvoice(InvoiceOrganizeDto invoiceDto) {
+        if (null == invoiceDto.getId()) {
+            // 只保留一份用户发票信息
+            cartClubMapper.deleteUserInvoice(invoiceDto.getUserId());
+            cartClubMapper.insertOrganizeUserInvoice(invoiceDto);
+        } else {
+            cartClubMapper.updateOrganizeUserInvoice(invoiceDto);
+        }
+        return ResponseJson.success(1);
+    }
+
     /**
      * 供应商优惠券
      *

+ 90 - 34
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -182,6 +182,8 @@ public class SubmitServiceImpl implements SubmitService {
         if (null == clubUserId || clubUserId == 0) {
             return ResponseJson.error("机构用户信息异常!", null);
         }
+        // 用户组织Id
+        Integer organizeId = baseMapper.getOrganizeId(clubUserId);
         JSONArray orderInfo = null;
         JSONObject payInfo = null;
         JSONObject orderInvoice = null;
@@ -261,44 +263,97 @@ public class SubmitServiceImpl implements SubmitService {
             return ResponseJson.error("发票类型不能为空!", null);
         }
         orderParamBo.setInvoiceType(invoiceType);
-        if (1 == invoiceType || 2 == invoiceType) {
-            InvoicePo invoice = new InvoicePo();
-            String invoiceTitle = (String) orderInvoice.get("invoiceTitle");
-            if (StringUtils.isEmpty(invoiceTitle)) {
-                return ResponseJson.error("发票抬头信息不正确!", null);
-            }
-            String corporationTaxNum = (String) orderInvoice.get("corporationTaxNum");
-            if (StringUtils.isEmpty(corporationTaxNum)) {
-                return ResponseJson.error("纳税人识别号信息不正确!", null);
-            }
-            invoice.setType(invoiceType);
-            invoice.setInvoiceTitle(invoiceTitle);
-            invoice.setCorporationTaxNum(corporationTaxNum);
-            if (1 == invoiceType) {
-                // 普通发票:发票类型、发票内容(商品明细)、抬头(公司名称)、纳税人识别号[普通发票的公司]
-                String invoiceContent = (String) orderInvoice.get("invoiceContent");
-                Integer invoiceTitleType = (Integer) orderInvoice.get("invoiceTitleType");
-                if (StringUtils.isEmpty(invoiceContent) || null == invoiceTitleType) {
-                    return ResponseJson.error("发票信息不完整!", null);
+        if (organizeId == 0) {
+            // 采美
+            if (1 == invoiceType || 2 == invoiceType) {
+                InvoicePo invoice = new InvoicePo();
+                String invoiceTitle = (String) orderInvoice.get("invoiceTitle");
+                if (StringUtils.isEmpty(invoiceTitle)) {
+                    return ResponseJson.error("发票抬头信息不正确!", null);
+                }
+                String corporationTaxNum = (String) orderInvoice.get("corporationTaxNum");
+                if (StringUtils.isEmpty(corporationTaxNum)) {
+                    return ResponseJson.error("纳税人识别号信息不正确!", null);
+                }
+                invoice.setType(invoiceType);
+                invoice.setInvoiceTitle(invoiceTitle);
+                invoice.setCorporationTaxNum(corporationTaxNum);
+                if (1 == invoiceType) {
+                    // 普通发票:发票类型、发票内容(商品明细)、抬头(公司名称)、纳税人识别号[普通发票的公司]
+                    String invoiceContent = (String) orderInvoice.get("invoiceContent");
+                    Integer invoiceTitleType = (Integer) orderInvoice.get("invoiceTitleType");
+                    if (StringUtils.isEmpty(invoiceContent) || null == invoiceTitleType) {
+                        return ResponseJson.error("发票信息不完整!", null);
+                    }
+                    invoice.setInvoiceContent(invoiceContent);
+                    invoice.setInvoiceTitleType(invoiceTitleType);
+                }
+                if (2 == invoiceType) {
+                    // 增值税发票:发票类型、发票、抬头(公司名称)、纳税人识别号、注册地址、注册电话、开户银行、开户银行账户
+                    String registeredAddress = (String) orderInvoice.get("registeredAddress");
+                    String registeredPhone = (String) orderInvoice.get("registeredPhone");
+                    String openBank = (String) orderInvoice.get("openBank");
+                    String bankAccountNo = (String) orderInvoice.get("bankAccountNo");
+                    if (StringUtils.isEmpty(registeredAddress) || StringUtils.isEmpty(registeredPhone) || StringUtils.isEmpty(openBank) || StringUtils.isEmpty(bankAccountNo)) {
+                        return ResponseJson.error("发票信息不完整!", null);
+                    }
+                    invoice.setRegisteredAddress(registeredAddress);
+                    invoice.setRegisteredPhone(registeredPhone);
+                    invoice.setOpenBank(openBank);
+                    invoice.setBankAccountNo(bankAccountNo);
                 }
-                invoice.setInvoiceContent(invoiceContent);
-                invoice.setInvoiceTitleType(invoiceTitleType);
+                orderParamBo.setOrderInvoice(invoice);
             }
-            if (2 == invoiceType) {
-                // 增值税发票:发票类型、发票、抬头(公司名称)、纳税人识别号、注册地址、注册电话、开户银行、开户银行账户
-                String registeredAddress = (String) orderInvoice.get("registeredAddress");
-                String registeredPhone = (String) orderInvoice.get("registeredPhone");
-                String openBank = (String) orderInvoice.get("openBank");
-                String bankAccountNo = (String) orderInvoice.get("bankAccountNo");
-                if (StringUtils.isEmpty(registeredAddress) || StringUtils.isEmpty(registeredPhone) || StringUtils.isEmpty(openBank) || StringUtils.isEmpty(bankAccountNo)) {
-                    return ResponseJson.error("发票信息不完整!", null);
+        } else {
+            // 联合丽格
+            if (1 == invoiceType || 2 == invoiceType) {
+                InvoicePo invoice = new InvoicePo();
+                String invoiceTitle = (String) orderInvoice.get("invoiceTitle");
+                if (StringUtils.isEmpty(invoiceTitle)) {
+                    return ResponseJson.error("发票抬头信息不正确!", null);
+                }
+                invoice.setType(invoiceType);
+                invoice.setInvoiceTitle(invoiceTitle);
+                String corporationTaxNum = (String) orderInvoice.get("corporationTaxNum");
+                if (1 == invoiceType) {
+                    // 普通发票:发票类型、发票内容(商品明细)、抬头(公司名称)、纳税人识别号[普通发票的公司]
+                    Integer invoiceTitleType = (Integer) orderInvoice.get("invoiceTitleType");
+                    String registeredAddress = (String) orderInvoice.get("registeredAddress");
+                    String registeredPhone = (String) orderInvoice.get("registeredPhone");
+                    String openBank = (String) orderInvoice.get("openBank");
+                    String bankAccountNo = (String) orderInvoice.get("bankAccountNo");
+                    // 抬头类型
+                    Integer headingType = (Integer) orderInvoice.get("headingType");
+                    if (0 != headingType) {
+                        if (StringUtils.isEmpty(corporationTaxNum)) {
+                            return ResponseJson.error("纳税人识别号信息不正确!", null);
+                        }
+                    }
+                    invoice.setCorporationTaxNum(corporationTaxNum);
+                    invoice.setHeadingType(headingType);
+                    invoice.setInvoiceTitleType(invoiceTitleType);
+                    invoice.setRegisteredAddress(registeredAddress);
+                    invoice.setRegisteredPhone(registeredPhone);
+                    invoice.setOpenBank(openBank);
+                    invoice.setBankAccountNo(bankAccountNo);
+                }
+                if (2 == invoiceType) {
+                    // 增值税发票:发票类型、发票、抬头(公司名称)、纳税人识别号、注册地址、注册电话、开户银行、开户银行账户
+                    String registeredAddress = (String) orderInvoice.get("registeredAddress");
+                    String registeredPhone = (String) orderInvoice.get("registeredPhone");
+                    String openBank = (String) orderInvoice.get("openBank");
+                    String bankAccountNo = (String) orderInvoice.get("bankAccountNo");
+                    if (StringUtils.isEmpty(registeredAddress) || StringUtils.isEmpty(registeredPhone) || StringUtils.isEmpty(openBank) || StringUtils.isEmpty(bankAccountNo)) {
+                        return ResponseJson.error("发票信息不完整!", null);
+                    }
+                    invoice.setCorporationTaxNum(corporationTaxNum);
+                    invoice.setRegisteredAddress(registeredAddress);
+                    invoice.setRegisteredPhone(registeredPhone);
+                    invoice.setOpenBank(openBank);
+                    invoice.setBankAccountNo(bankAccountNo);
                 }
-                invoice.setRegisteredAddress(registeredAddress);
-                invoice.setRegisteredPhone(registeredPhone);
-                invoice.setOpenBank(openBank);
-                invoice.setBankAccountNo(bankAccountNo);
+                orderParamBo.setOrderInvoice(invoice);
             }
-            orderParamBo.setOrderInvoice(invoice);
         }
         // 返佣订单标识 0非返佣订单,1返佣订单,2普通订单含有返佣服务费
         Integer rebateFlag = (Integer) payInfo.get("rebateFlag");
@@ -903,6 +958,7 @@ public class SubmitServiceImpl implements SubmitService {
                 if (0 != organizeId) {
                     // 佣金比例  外部商城sku配置比例
                     CmOrganizeSkuPo organizeSkuInfo = submitMapper.getOrganizeSkuInfo(skuId);
+                    product.setOrganizeSkuId(organizeSkuInfo.getId());
                     product.setCmPercent(organizeSkuInfo.getCmPercent());
                     product.setOrganizePercent(organizeSkuInfo.getOrganizePercent());
                     product.setShopPercent(organizeSkuInfo.getShopPercent());

+ 20 - 0
src/main/resources/mapper/CartClubMapper.xml

@@ -384,6 +384,12 @@
         VALUES (#{userId}, #{invoiceTitle}, #{corporationTaxNum},
                 #{registeredAddress}, #{registeredPhone}, #{bankAccountNo}, #{openBank})
     </insert>
+    <insert id="insertOrganizeUserInvoice">
+        INSERT INTO cm_user_invoiceinfo (userId, type, headingType, invoiceTitle, corporationTaxNum,
+                                         registeredAddress, registeredPhone, bankAccountNo, openBank)
+        VALUES (#{userId}, #{type}, #{headingType}, #{invoiceTitle}, #{corporationTaxNum},
+                #{registeredAddress}, #{registeredPhone}, #{bankAccountNo}, #{openBank})
+    </insert>
     <update id="updateUserInvoice">
         UPDATE cm_user_invoiceinfo
         SET invoiceTitle      = #{invoiceTitle},
@@ -394,8 +400,22 @@
             openBank          = #{openBank}
         WHERE userId = #{userId}
     </update>
+    <update id="updateOrganizeUserInvoice">
+        UPDATE cm_user_invoiceinfo
+        SET type              = #{type},
+            headingType       = #{headingType},
+            invoiceTitle      = #{invoiceTitle},
+            corporationTaxNum = #{corporationTaxNum},
+            registeredAddress = #{registeredAddress},
+            registeredPhone   = #{registeredPhone},
+            bankAccountNo     = #{bankAccountNo},
+            openBank          = #{openBank}
+        WHERE userId = #{userId}
+    </update>
     <select id="getUserInvoice" resultType="com.caimei365.order.model.vo.InvoiceVo">
         SELECT id,
+               type,
+               headingType,
                userId,
                invoiceTitle,
                corporationTaxNum,

+ 1 - 0
src/main/resources/mapper/OrderCommonMapper.xml

@@ -575,6 +575,7 @@
     <select id="getOrderInvoice" resultType="com.caimei365.order.model.vo.InvoiceVo">
         SELECT id,
                type,
+               invoiceTitleType as headingType,
                orderId,
                invoiceTitle,
                corporationTaxNum,

+ 3 - 3
src/main/resources/mapper/SubmitMapper.xml

@@ -62,7 +62,7 @@
                                       cmFee,
                                       payStatus, buyAgainFlag, notOutStore, isActProduct, productType, svipPriceFlag,
                                       svipPriceType,
-                                      svipDiscount, svipReduction,skuID, cmPercent, organizePercent, shopPercent)
+                                      svipDiscount, svipReduction,skuID, organizeSkuId, cmPercent, organizePercent, shopPercent)
         VALUES (#{orderId}, #{orderNo}, #{shopOrderId}, #{shopOrderNo}, #{organizeProductId}, #{organizeId}, #{orderPromotionsId}, #{productId}, #{shopId},
                 #{name},
                 #{image}, #{price}, #{shopName}, #{costPrice}, #{normalPrice}, #{ladderPriceFlag},
@@ -74,7 +74,7 @@
                 #{shopProductAmount}, #{singleShopFee}, #{shopFee}, #{singleOtherFee}, #{otherFee}, #{singleCmFee},
                 #{cmFee},
                 #{payStatus}, #{buyAgainFlag}, #{notOutStore}, #{actProduct}, #{productType}, #{svipPriceFlag},
-                #{svipPriceType}, #{svipDiscount}, #{svipReduction},#{skuId}, #{cmPercent}, #{organizePercent}, #{shopPercent})
+                #{svipPriceType}, #{svipDiscount}, #{svipReduction},#{skuId}, #{organizeSkuId}, #{cmPercent}, #{organizePercent}, #{shopPercent})
     </insert>
     <insert id="insertOrderPromotions" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.vo.PromotionsVo" useGeneratedKeys="true">
@@ -96,7 +96,7 @@
     <insert id="insertOrderInvoice" parameterType="com.caimei365.order.model.po.InvoicePo">
         INSERT INTO bp_order_invoice (orderId, invoiceTitle, type, invoiceContent, invoiceTitleType, corporationTaxNum,
                                       registeredAddress, registeredPhone, bankAccountNo, openBank)
-        VALUES (#{orderId}, #{invoiceTitle}, #{type}, #{invoiceContent}, #{invoiceTitleType}, #{corporationTaxNum},
+        VALUES (#{orderId}, #{invoiceTitle}, #{type}, #{invoiceContent}, #{headingType}, #{corporationTaxNum},
                 #{registeredAddress}, #{registeredPhone}, #{bankAccountNo}, #{openBank})
     </insert>
     <insert id="insertOrderUserInfo" parameterType="com.caimei365.order.model.po.OrderUserInfoPo">