Ver código fonte

用户地址与发票

chao 3 anos atrás
pai
commit
3f874a76d5

+ 30 - 2
src/main/java/com/caimei365/order/controller/AddressApi.java

@@ -70,6 +70,15 @@ public class AddressApi {
         return addressService.getSelectAddress(type, parentId);
     }
 
+    /**
+     * 所有地址下拉完整数据
+     */
+    @ApiOperation("所有地址完整数据(旧:/club/address)")
+    @GetMapping("/select/all")
+    public ResponseJson<List<AddressSelectVo>> getAllSelectAddress() {
+        return addressService.getAllSelectAddress();
+    }
+
     /**
      * 保存收货地址
      *
@@ -78,7 +87,7 @@ public class AddressApi {
      *                   addressId    用户地址Id
      *                   townId       区ID
      *                   address      详细地址
-     *                   receiver         收货人
+     *                   receiver     收货人
      *                   mobile       手机
      *                   defaultFlag  是否默认收货地址(0 不是默认,1 默认)
      */
@@ -111,7 +120,7 @@ public class AddressApi {
      *                   addressId    用户地址Id
      */
     @ApiOperation("删除收货地址(旧:/personalCenter/deleteAddress)")
-    @PostMapping("/cart/delete")
+    @PostMapping("/delete")
     public ResponseJson<Integer> deleteUserAddress(AddressDto addressDto){
         if (null == addressDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
@@ -122,4 +131,23 @@ public class AddressApi {
         return addressService.deleteUserAddress(addressDto);
     }
 
+    /**
+     * 设为默认地址
+     *
+     * @param addressDto {
+     *                   userId       用户ID
+     *                   addressId    用户地址Id
+     */
+    @ApiOperation("保存收货地址(旧:/personalCenter/defaultAddress)")
+    @PostMapping("/set/default")
+    public ResponseJson<Integer> setDefaultAddress(AddressDto addressDto){
+        if (null == addressDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (null == addressDto.getAddressId()) {
+            return ResponseJson.error("用户地址Id不能为空!", null);
+        }
+        return addressService.setDefaultAddress(addressDto.getUserId(), addressDto.getAddressId());
+    }
+
 }

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

@@ -2,6 +2,8 @@ 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.vo.InvoiceVo;
 import com.caimei365.order.service.CartClubService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -194,6 +196,40 @@ public class CartClubApi {
         }
         return cartClubService.getProductsPostage(userId, productIds, townId);
     }
+    /**
+     * 获取用户发票信息
+     */
+    @ApiOperation("获取用户发票信息(旧:/personalCenter/findInvoice)")
+    @ApiImplicitParam(required = false, name = "userId", value = "用户Id")
+    @GetMapping("/invoice")
+    public ResponseJson<InvoiceVo> getUserInvoice(Integer userId) {
+        if (null == userId) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        return cartClubService.getUserInvoice(userId);
+    }
 
+    /**
+     * 更新用户发票
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    @ApiOperation("更新用户发票(旧:/personalCenter/invoice)")
+    @PostMapping("/invoice/update")
+    public ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto){
+        if (null == invoiceDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        return cartClubService.updateUserInvoice(invoiceDto);
+    }
 
 }

+ 1 - 1
src/main/java/com/caimei365/order/controller/CartSellerApi.java

@@ -182,7 +182,7 @@ public class CartSellerApi {
     /**
      * 协销二手商品立即购买
      */
-    @ApiOperation("立即购买(旧:/seller/settlementBySencondProduct)")
+    @ApiOperation("协销二手商品立即购买(旧:/seller/settlementBySencondProduct)")
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "clubId", value = "机构Id"),

+ 18 - 4
src/main/java/com/caimei365/order/mapper/CartClubMapper.java

@@ -1,11 +1,9 @@
 package com.caimei365.order.mapper;
 
 import com.caimei365.order.model.dto.CartDto;
+import com.caimei365.order.model.dto.InvoiceDto;
 import com.caimei365.order.model.po.CartPo;
-import com.caimei365.order.model.vo.CartItemVo;
-import com.caimei365.order.model.vo.CartShopVo;
-import com.caimei365.order.model.vo.CouponVo;
-import com.caimei365.order.model.vo.PromotionsVo;
+import com.caimei365.order.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -66,4 +64,20 @@ public interface CartClubMapper {
      * @param userId 用户Id
      */
     List<CartItemVo> getCartProductsByShopIdAndProductIds(@Param("userId") Integer userId,@Param("shopId")  Integer shopId, @Param("productIds") List<String> productIds);
+    /**
+     * 删除用户发票信息
+     */
+    void deleteUserInvoice(Integer userId);
+    /**
+     * 新增用户发票信息
+     */
+    void insertUserInvoice(InvoiceDto invoiceDto);
+    /**
+     * 更新用户发票信息
+     */
+    void updateUserInvoice(InvoiceDto invoiceDto);
+    /**
+     * 获取用户发票信息
+     */
+    InvoiceVo getUserInvoice(Integer userId);
 }

+ 54 - 0
src/main/java/com/caimei365/order/model/dto/InvoiceDto.java

@@ -0,0 +1,54 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/8/31
+ */
+@Data
+public class InvoiceDto {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 用户Id
+     */
+    private Integer userId;
+    /**
+     * id
+     */
+    @ApiModelProperty("id")
+    private Integer id;
+    /**
+     * 单位名,发票抬头
+     */
+    @ApiModelProperty("单位名,发票抬头")
+    private String invoiceTitle;
+    /**
+     * 企业税号、纳税人识别号
+     */
+    @ApiModelProperty("企业税号、纳税人识别号")
+    private String corporationTaxNum;
+    /**
+     * 注册地址
+     */
+    @ApiModelProperty("注册地址")
+    private String registeredAddress;
+    /**
+     * 注册电话
+     */
+    @ApiModelProperty("注册电话")
+    private String registeredPhone;
+    /**
+     * 开户银行账户
+     */
+    @ApiModelProperty("开户银行账户")
+    private String bankAccountNo;
+    /**
+     * 开户银行
+     */
+    @ApiModelProperty("开户银行")
+    private String openBank;
+}

+ 5 - 0
src/main/java/com/caimei365/order/model/vo/AddressSelectVo.java

@@ -3,6 +3,7 @@ package com.caimei365.order.model.vo;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 选择地址下拉框列表 数据
@@ -25,4 +26,8 @@ public class AddressSelectVo implements Serializable {
      * 父级ID
      */
     private Integer parentId;
+    /**
+     * 子级列表
+     */
+    private List<AddressSelectVo> children;
 }

+ 12 - 0
src/main/java/com/caimei365/order/service/AddressService.java

@@ -29,6 +29,11 @@ public interface AddressService {
      */
     ResponseJson<List<AddressSelectVo>> getSelectAddress(Integer type, Integer parentId);
 
+    /**
+     * 所有地址下拉完整数据
+     */
+    ResponseJson<List<AddressSelectVo>> getAllSelectAddress();
+
     /**
      * 添加收货地址
      *
@@ -51,4 +56,11 @@ public interface AddressService {
      *                   addressId    用户地址Id
      */
     ResponseJson<Integer> deleteUserAddress(AddressDto addressDto);
+
+    /**
+     * 设为默认地址
+     * @param userId    用户ID
+     * @param addressId 用户地址Id
+     */
+    ResponseJson<Integer> setDefaultAddress(Integer userId, Integer addressId);
 }

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

@@ -2,6 +2,8 @@ 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.vo.InvoiceVo;
 
 import java.util.Map;
 
@@ -86,4 +88,27 @@ public interface CartClubService {
      * @param townId        地区Id
      */
     ResponseJson<Map<String, Object>> getProductsPostage(Integer userId, String productIds, Integer townId);
+
+    /**
+     * 获取用户发票信息
+     * @param userId 用户Id
+     */
+    ResponseJson<InvoiceVo> getUserInvoice(Integer userId);
+
+    /**
+     * 更新用户发票
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto);
+
 }

+ 42 - 0
src/main/java/com/caimei365/order/service/impl/AddressServiceImpl.java

@@ -68,6 +68,23 @@ public class AddressServiceImpl implements AddressService {
         return ResponseJson.error("地址选项类型错误!", null);
     }
 
+    @Override
+    public ResponseJson<List<AddressSelectVo>> getAllSelectAddress() {
+        // 获取所有省份列表
+        List<AddressSelectVo> provinceList = addressMapper.getAllProvinceList();
+        provinceList.forEach(province -> {
+            // 获取当前省份下的所有城市列表
+            List<AddressSelectVo> cityList = addressMapper.getCityListByProvinceId(province.getId());
+            cityList.forEach(city -> {
+                // 获取当前城市下的所有地区列表
+                List<AddressSelectVo> townList = addressMapper.getTownListByCityId(city.getId());
+                city.setChildren(townList);
+            });
+            province.setChildren(cityList);
+        });
+        return ResponseJson.success(provinceList);
+    }
+
     /**
      * 添加收货地址
      *
@@ -133,4 +150,29 @@ public class AddressServiceImpl implements AddressService {
         addressMapper.deleteAddress(addressDto.getAddressId(), addressDto.getUserId());
         return ResponseJson.success(1);
     }
+
+    /**
+     * 设为默认地址
+     * @param userId    用户ID
+     * @param addressId 用户地址Id
+     */
+    @Override
+    public ResponseJson<Integer> setDefaultAddress(Integer userId, Integer addressId) {
+        // 获取默认地址Id
+        Integer defaultId = addressMapper.getDefaultAddressId(userId);
+        // 当前地址非默认地址
+        if (!addressId.equals(defaultId)) {
+            // 设取消之前默认
+            addressMapper.updateAddressDefault(defaultId, 0);
+            AddressPo address = addressMapper.getAddressById(addressId);
+            if (null == address) {
+                return ResponseJson.error("地址有误!", null);
+            }
+            // 设置当前地址默认
+            address.setDefaultFlag(1);
+            // 更新地址
+            addressMapper.updateAddress(address);
+        }
+        return ResponseJson.success(1);
+    }
 }

+ 36 - 2
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -6,6 +6,7 @@ import com.caimei365.order.mapper.CartClubMapper;
 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.po.CartPo;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.CartClubService;
@@ -946,9 +947,42 @@ public class CartClubServiceImpl implements CartClubService {
         return ResponseJson.success(resultMap);
     }
 
+    /**
+     * 获取用户发票信息
+     *
+     * @param userId 用户Id
+     */
+    @Override
+    public ResponseJson<InvoiceVo> getUserInvoice(Integer userId) {
+        InvoiceVo invoice = cartClubMapper.getUserInvoice(userId);
+        return ResponseJson.success(invoice);
+    }
 
-
-
+    /**
+     * 更新用户发票
+     *
+     * @param invoiceDto {
+     *                   userId:用户Id
+     *                   id:id
+     *                   invoiceTitle:单位名,发票抬头
+     *                   corporationTaxNum: 企业税号、纳税人识别号
+     *                   registeredAddress:注册地址
+     *                   registeredPhone:注册电话
+     *                   bankAccountNo:开户银行账户
+     *                   openBank:开户银行
+     *                   }
+     */
+    @Override
+    public ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto) {
+        if (null == invoiceDto.getId()) {
+            // 只保留一份用户发票信息
+            cartClubMapper.deleteUserInvoice(invoiceDto.getUserId());
+            cartClubMapper.insertUserInvoice(invoiceDto);
+        } else {
+            cartClubMapper.updateUserInvoice(invoiceDto);
+        }
+        return ResponseJson.success(1);
+    }
 
 
 }

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

@@ -138,4 +138,29 @@
             #{productId}
         </foreach>
     </delete>
+    <delete id="deleteUserInvoice">
+        delete from cm_user_invoiceinfo where userId = #{userId}
+    </delete>
+    <insert id="insertUserInvoice">
+        INSERT INTO cm_user_invoiceinfo (userId, invoiceTitle, corporationTaxNum,
+            registeredAddress, registeredPhone,bankAccountNo, openBank)
+        VALUES (#{userId}, #{invoiceTitle}, #{corporationTaxNum},
+             #{registeredAddress}, #{registeredPhone},  #{bankAccountNo}, #{openBank})
+    </insert>
+    <update id="updateUserInvoice">
+        UPDATE cm_user_invoiceinfo
+        SET 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, userId, invoiceTitle, corporationTaxNum, registeredAddress, registeredPhone,bankAccountNo, openBank
+        FROM cm_user_invoiceinfo
+        WHERE userId = #{userId}
+        order by id desc limit 1
+    </select>
 </mapper>