Browse Source

发票地址

plf 4 years ago
parent
commit
2e4a558c90

+ 122 - 0
src/main/java/com/caimei/controller/AddressApi.java

@@ -0,0 +1,122 @@
+package com.caimei.controller;
+
+import com.caimei.model.ResponseJson;
+import com.caimei.model.po.CmUserInvoiceInfoPo;
+import com.caimei.model.vo.AddressVo;
+import com.caimei.model.vo.ProvinceVo;
+import com.caimei.service.AddressService;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Api(tags = "地址发票")
+@RestController
+@RequestMapping("/other")
+public class AddressApi {
+    private AddressService addressService;
+
+    @Autowired
+    public void setAddressService(AddressService addressService) {
+        this.addressService = addressService;
+    }
+
+    /**
+     * 查询用户所有地址
+     */
+    @ApiOperation("查询用户所有地址")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", required = true, value = "机构用户id"),
+            @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
+            @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
+    })
+    @GetMapping("/findAddress")
+    public ResponseJson<PageInfo<AddressVo>> findAddress(Integer userId, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        if (userId == null) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return addressService.findAddress(userId, pageNum, pageSize);
+    }
+
+    /**
+     * 保存或编辑地址
+     */
+    @ApiOperation("保存或编辑地址")
+    @PostMapping("/saveAddress")
+    public ResponseJson<AddressVo> saveAddress(@RequestBody AddressVo address) {
+        return addressService.saveAddress(address);
+    }
+
+    /**
+     * 删除地址
+     */
+    @ApiOperation("删除地址")
+    @ApiImplicitParam(name = "addressId", value = "地址id", required = true)
+    @GetMapping("/deleteAddress")
+    public ResponseJson<String> deleteAddress(Integer addressId) {
+        if (addressId == null) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return addressService.deleteAddress(addressId);
+    }
+
+    /**
+     * 设为默认地址
+     */
+    @ApiOperation("设为默认地址")
+    @GetMapping("/defaultAddress")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", required = true, value = "机构用户id"),
+            @ApiImplicitParam(name = "addressId", required = true, value = "地址id")
+    })
+    public ResponseJson<String> defaultAddress(Integer userId, Integer addressId) {
+        if (null == userId || null == addressId) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return addressService.defaultAddress(userId, addressId);
+    }
+
+    /**
+     * 地址管理:省市区
+     */
+    @ApiOperation("地址管理:省市区")
+    @GetMapping("/list")
+    public ResponseJson<List<ProvinceVo>> address() {
+        return addressService.address();
+    }
+
+    /**
+     * 保存编辑发票信息
+     */
+    @ApiOperation("保存编辑发票信息")
+    @PostMapping("/invoice")
+    public ResponseJson<String> saveInvoice(@RequestBody CmUserInvoiceInfoPo invoice) {
+        return addressService.saveInvoice(invoice);
+    }
+
+    /**
+     * 发票信息数据
+     */
+    @ApiOperation("发票信息数据")
+    @ApiImplicitParam(name = "userId", value = "机构用户id", required = true)
+    @GetMapping("/findInvoice")
+    public ResponseJson<CmUserInvoiceInfoPo> findInvoice(Integer userId) {
+        if (userId == null) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return addressService.findInvoice(userId);
+    }
+}
+
+

+ 108 - 0
src/main/java/com/caimei/mapper/AddressMapper.java

@@ -0,0 +1,108 @@
+package com.caimei.mapper;
+
+import com.caimei.model.po.CmUserInvoiceInfoPo;
+import com.caimei.model.vo.AddressVo;
+import com.caimei.model.vo.CityVo;
+import com.caimei.model.vo.ProvinceVo;
+import com.caimei.model.vo.TownVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Mapper
+public interface AddressMapper {
+    /**
+     * 查询所有机构用户地址
+     *
+     * @param userId
+     * @return
+     */
+    List<AddressVo> findAddress(Integer userId);
+
+    /**
+     * 查询默认地址
+     *
+     * @param userId
+     * @return
+     */
+    AddressVo findDefaultAddress(Integer userId);
+
+    /**
+     * 更新机构用户地址
+     *
+     * @param address
+     */
+    void updateAddress(AddressVo address);
+
+    /**
+     * 保存机构用户地址
+     *
+     * @param address
+     */
+    void insertAddress(AddressVo address);
+
+    /**
+     * 删除机构用户地址
+     *
+     * @param addressId
+     */
+    void deleteAddress(Integer addressId);
+
+    /**
+     * 设置为默认地址
+     *
+     * @param addressId
+     */
+    void updateDefaultAddress(Integer addressId);
+
+    /**
+     * 查询县级地址
+     *
+     * @return
+     */
+    List<ProvinceVo> findAllProvince();
+
+    /**
+     * 查询市级地址
+     *
+     * @param provinceId
+     * @return
+     */
+    List<CityVo> findAllCity(Integer provinceId);
+
+    /**
+     * 查询区级地址
+     *
+     * @param cityId
+     * @return
+     */
+    List<TownVo> findAllTown(Integer cityId);
+
+    /**
+     * 保存用户发票
+     *
+     * @param invoice
+     */
+    void insertInvoice(CmUserInvoiceInfoPo invoice);
+
+    /**
+     * 更新用户发票
+     *
+     * @param invoice
+     */
+    void updateInvoice(CmUserInvoiceInfoPo invoice);
+
+    /**
+     * 查询用户发票
+     *
+     * @param userId
+     * @return
+     */
+    CmUserInvoiceInfoPo findInvoice(Integer userId);
+}

+ 2 - 2
src/main/java/com/caimei/mapper/OrderSubmitMapper.java

@@ -1,7 +1,7 @@
 package com.caimei.mapper;
 
 import com.caimei.model.po.*;
-import com.caimei.model.po.AddressPo;
+import com.caimei.model.vo.AddressVo;
 import com.caimei.model.vo.CartProductVo;
 import com.caimei.model.vo.ShopVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -159,5 +159,5 @@ public interface OrderSubmitMapper {
      * @param addressId
      * @return
      */
-    AddressPo findByAddressId(Integer addressId);
+    AddressVo findByAddressId(Integer addressId);
 }

+ 10 - 2
src/main/java/com/caimei/model/po/AddressPo.java → src/main/java/com/caimei/model/vo/AddressVo.java

@@ -1,5 +1,6 @@
-package com.caimei.model.po;
+package com.caimei.model.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -10,30 +11,35 @@ import java.io.Serializable;
  * @author
  */
 @Data
-public class AddressPo implements Serializable {
+public class AddressVo implements Serializable {
     /**
      * 用户地址ID
      */
+    @ApiModelProperty("用户地址ID")
     private Integer addressId;
 
     /**
      * 用户ID
      */
+    @ApiModelProperty("用户ID")
     private Integer userId;
 
     /**
      * 收货人
      */
+    @ApiModelProperty("收货人")
     private String shouHuoRen;
 
     /**
      * 区ID
      */
+    @ApiModelProperty("区ID")
     private Integer townId;
 
     /**
      * 地址
      */
+    @ApiModelProperty("地址")
     private String address;
 
     /**
@@ -49,11 +55,13 @@ public class AddressPo implements Serializable {
     /**
      * 手机
      */
+    @ApiModelProperty("手机")
     private String mobile;
 
     /**
      * 是否默认收货地址(0 不是默认,1 默认)
      */
+    @ApiModelProperty("是否默认收货地址(0 不是默认,1 默认)")
     private String defaultFlag;
 
     /**

+ 5 - 0
src/main/java/com/caimei/model/vo/CartProductVo.java

@@ -89,6 +89,11 @@ public class CartProductVo implements Serializable {
      */
     private Integer productCount;
 
+    /**
+     * 前端选中状态
+     */
+    private boolean productsChecked = false;
+
     /**
      * 促销活动
      */

+ 27 - 0
src/main/java/com/caimei/model/vo/CityVo.java

@@ -0,0 +1,27 @@
+package com.caimei.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Data
+public class CityVo implements Serializable {
+    private Integer cityId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 区级地址
+     */
+    private List<TownVo> townList;
+}

+ 27 - 0
src/main/java/com/caimei/model/vo/ProvinceVo.java

@@ -0,0 +1,27 @@
+package com.caimei.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Data
+public class ProvinceVo implements Serializable {
+    private Integer provinceId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 市级地址
+     */
+    private List<CityVo> cityList;
+}

+ 5 - 0
src/main/java/com/caimei/model/vo/ShopVo.java

@@ -39,6 +39,11 @@ public class ShopVo implements Serializable {
     @ApiModelProperty("购物车该供应商下总价")
     private BigDecimal shopTotalPrice;
 
+    /**
+     * 前端选中状态
+     */
+    private boolean checked = false;
+
     /**
      * 供应商下商品信息
      */

+ 21 - 0
src/main/java/com/caimei/model/vo/TownVo.java

@@ -0,0 +1,21 @@
+package com.caimei.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Data
+public class TownVo implements Serializable {
+    private Integer townId;
+
+    /**
+     * 名称
+     */
+    private String name;
+}

+ 75 - 0
src/main/java/com/caimei/service/AddressService.java

@@ -0,0 +1,75 @@
+package com.caimei.service;
+
+import com.caimei.model.ResponseJson;
+import com.caimei.model.po.CmUserInvoiceInfoPo;
+import com.caimei.model.vo.AddressVo;
+import com.caimei.model.vo.ProvinceVo;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+public interface AddressService {
+    /**
+     * 查询用户所有地址
+     *
+     * @param userId
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PageInfo<AddressVo>> findAddress(Integer userId, Integer pageNum, Integer pageSize);
+
+    /**
+     * 保存或编辑地址
+     *
+     * @param address
+     * @return
+     */
+    ResponseJson<AddressVo> saveAddress(AddressVo address);
+
+    /**
+     * 删除地址
+     *
+     * @param addressId
+     * @return
+     */
+    ResponseJson<String> deleteAddress(Integer addressId);
+
+    /**
+     * 设为默认地址
+     *
+     * @param userId
+     * @param addressId
+     * @return
+     */
+    ResponseJson<String> defaultAddress(Integer userId, Integer addressId);
+
+    /**
+     * 地址列表数据
+     *
+     * @return
+     */
+    ResponseJson<List<ProvinceVo>> address();
+
+    /**
+     * 保存更新发票信息
+     *
+     * @param invoice
+     * @return
+     */
+    ResponseJson<String> saveInvoice(CmUserInvoiceInfoPo invoice);
+
+    /**
+     * 查询用户发票
+     *
+     * @param userId
+     * @return
+     */
+    ResponseJson<CmUserInvoiceInfoPo> findInvoice(Integer userId);
+}

+ 102 - 0
src/main/java/com/caimei/service/impl/AddressServiceImpl.java

@@ -0,0 +1,102 @@
+package com.caimei.service.impl;
+
+import com.caimei.mapper.AddressMapper;
+import com.caimei.model.ResponseJson;
+import com.caimei.model.po.CmUserInvoiceInfoPo;
+import com.caimei.model.vo.AddressVo;
+import com.caimei.model.vo.CityVo;
+import com.caimei.model.vo.ProvinceVo;
+import com.caimei.model.vo.TownVo;
+import com.caimei.service.AddressService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/3/25
+ */
+@Service
+public class AddressServiceImpl implements AddressService {
+    @Resource
+    private AddressMapper addressMapper;
+
+    @Override
+    public ResponseJson<PageInfo<AddressVo>> findAddress(Integer userId, Integer pageNum, Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<AddressVo> addressList = addressMapper.findAddress(userId);
+        PageInfo<AddressVo> pageInfo = new PageInfo<>(addressList);
+        return ResponseJson.success(pageInfo);
+    }
+
+    @Override
+    public ResponseJson<AddressVo> saveAddress(AddressVo address) {
+        if (address.getDefaultFlag() != null && "1".equals(address.getDefaultFlag())) {
+            AddressVo addressVo = addressMapper.findDefaultAddress(address.getUserId());
+            if (addressVo != null) {
+                address.setDefaultFlag("0");
+                addressMapper.updateAddress(address);
+            }
+        }
+        if (address.getAddressId() == null) {
+            addressMapper.insertAddress(address);
+        } else {
+            addressMapper.updateAddress(address);
+        }
+        return ResponseJson.success(address);
+    }
+
+    @Override
+    public ResponseJson<String> deleteAddress(Integer addressId) {
+        addressMapper.deleteAddress(addressId);
+        return ResponseJson.success("删除成功");
+    }
+
+    @Override
+    public ResponseJson<String> defaultAddress(Integer userId, Integer addressId) {
+        AddressVo address = addressMapper.findDefaultAddress(userId);
+        if (null != address) {
+            address.setDefaultFlag("0");
+            addressMapper.updateAddress(address);
+        }
+        addressMapper.updateDefaultAddress(addressId);
+        return ResponseJson.success("操作成功");
+    }
+
+    @Override
+    public ResponseJson<List<ProvinceVo>> address() {
+        List<ProvinceVo> list = addressMapper.findAllProvince();
+        for (ProvinceVo province : list) {
+            List<CityVo> cityList = addressMapper.findAllCity(province.getProvinceId());
+            province.setCityList(cityList);
+            if (cityList != null && cityList.size() > 0) {
+                for (CityVo city : cityList) {
+                    List<TownVo> townList = addressMapper.findAllTown(city.getCityId());
+                    city.setTownList(townList);
+                }
+            }
+        }
+        return ResponseJson.success(list);
+    }
+
+    @Override
+    public ResponseJson<String> saveInvoice(CmUserInvoiceInfoPo invoice) {
+        if (invoice.getId() == null) {
+            addressMapper.insertInvoice(invoice);
+        } else {
+            addressMapper.updateInvoice(invoice);
+        }
+        return ResponseJson.success("操作成功");
+    }
+
+    @Override
+    public ResponseJson<CmUserInvoiceInfoPo> findInvoice(Integer userId) {
+        CmUserInvoiceInfoPo invoice = addressMapper.findInvoice(userId);
+        return null;
+    }
+}

+ 2 - 2
src/main/java/com/caimei/service/impl/OrderSubmitServiceImpl.java

@@ -5,7 +5,7 @@ import com.caimei.mapper.ProductMapper;
 import com.caimei.mapper.ShoppingCartMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.po.*;
-import com.caimei.model.po.AddressPo;
+import com.caimei.model.vo.AddressVo;
 import com.caimei.model.vo.CartProductVo;
 import com.caimei.model.vo.LadderPriceVo;
 import com.caimei.model.vo.ShopVo;
@@ -380,7 +380,7 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
         //促销赠品数量
         order.setPromotionalGiftsCount(promotionalGiftsCount);
         // 获取地址信息
-        AddressPo address = orderSubmitMapper.findByAddressId(addressId);
+        AddressVo address = orderSubmitMapper.findByAddressId(addressId);
         // 0包邮 -1到付 1 有运费
         order.setFreePostFlag(freePostFlag.toString());
         order.setFreight(freight);

+ 3 - 0
src/main/java/com/caimei/service/impl/ShoppingCartServiceImpl.java

@@ -75,6 +75,9 @@ public class ShoppingCartServiceImpl implements ShoppingCartService {
         //失效商品
         List<CartProductVo> products = shoppingCartMapper.findExpiredGoods(userId);
         map.put("products", products);
+        //商品数量
+        Integer cartQuantity = shoppingCartMapper.getCartQuantity(userId);
+        map.put("cartQuantity", cartQuantity);
         return ResponseJson.success(map);
     }
 

+ 153 - 0
src/main/resources/mapper/AddressMapper.xml

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.mapper.AddressMapper">
+    <select id="findAddress" resultType="com.caimei.model.vo.AddressVo">
+        SELECT a.addressID AS addressId,
+               a.userID AS userId,
+               a.shouHuoRen,
+               a.townID AS townId,
+               a.address,
+               a.postalCode,
+               a.phone,
+               a.mobile,
+               a.defaultFlag,
+               c.cityID AS cityId,
+               p.provinceID AS provinceId,
+               t.name AS townName,
+               c.name AS cityName,
+               p.name AS provinceName
+        FROM address a
+                 LEFT JOIN town t ON t.townID = a.townID
+                 LEFT JOIN city c ON c.cityID = t.cityID
+                 LEFT JOIN province p ON p.provinceID = c.provinceID
+        WHERE a.userID = #{userId}
+    </select>
+
+    <select id="findDefaultAddress" resultType="com.caimei.model.vo.AddressVo">
+        SELECT
+          addressID AS addressId,
+          userID AS userId,
+          shouHuoRen,
+          townID AS townId,
+          address,
+          postalCode,
+          phone,
+          mobile,
+          defaultFlag
+        FROM
+          address
+        WHERE
+          userID = #{userId}
+          AND defaultFlag = '1'
+    </select>
+
+    <update id="updateAddress">
+        UPDATE
+          address
+        SET
+          shouHuoRen =#{shouHuoRen},
+          townID = #{townId},
+          address = #{address},
+          mobile = #{mobile},
+          defaultFlag = #{defaultFlag}
+        WHERE
+          addressID = #{addressId}
+    </update>
+
+    <insert id="insertAddress" useGeneratedKeys="true" keyProperty="addressID" keyColumn="addressID" parameterType="com.caimei.model.vo.AddressVo">
+        INSERT INTO address (
+          userID, shouHuoRen, townID, address,
+          mobile, defaultFlag
+        )
+        VALUES
+          (
+            #{userId},#{shouHuoRen},#{townId},
+            #{address},#{mobile},#{defaultFlag}
+          )
+    </insert>
+
+    <delete id="deleteAddress">
+        DELETE FROM address WHERE addressID = #{addressId}
+    </delete>
+
+    <update id="updateDefaultAddress">
+        UPDATE address SET defaultFlag = '1' WHERE addressID = #{addressId}
+    </update>
+
+    <select id="findAllProvince" resultType="com.caimei.model.vo.ProvinceVo">
+        SELECT
+          provinceID AS provinceId,
+          name
+        FROM
+          province
+        WHERE
+          validFlag = '1'
+    </select>
+
+    <select id="findAllCity" resultType="com.caimei.model.vo.CityVo">
+        SELECT
+          cityID AS cityId,
+          name
+        FROM
+          city
+        WHERE
+          provinceID = #{provinceId}
+          AND validFlag = '1'
+    </select>
+
+    <select id="findAllTown" resultType="com.caimei.model.vo.TownVo">
+        SELECT
+          townID AS townId,
+          name
+        FROM
+          town
+        WHERE
+          cityID = #{cityId}
+          AND validFlag = '1'
+    </select>
+
+    <insert id="insertInvoice">
+        INSERT INTO cm_user_invoiceinfo (
+          userId, invoiceTitle, corporationTaxNum,
+          registeredAddress, registeredPhone,
+          bankAccountNo, openBank
+        )
+        VALUES
+          (
+            #{userId}, #{invoiceTitle}, #{corporationTaxNum},
+            #{registeredAddress}, #{registeredPhone},
+            #{bankAccountNo}, #{openBank}
+          )
+    </insert>
+
+    <update id="updateInvoice" parameterType="com.caimei.model.po.CmUserInvoiceInfoPo">
+        UPDATE
+          cm_user_invoiceinfo
+        SET
+          invoiceTitle = #{invoiceTitle},
+          corporationTaxNum = #{corporationTaxNum},
+          registeredAddress = #{registeredAddress},
+          registeredPhone = #{registeredPhone},
+          bankAccountNo = #{bankAccountNo},
+          openBank = #{openBank}
+        WHERE
+          userId = #{userId}
+    </update>
+
+    <select id="findInvoice" resultType="com.caimei.model.po.CmUserInvoiceInfoPo">
+        SELECT
+           userId,
+           invoiceTitle,
+           corporationTaxNum,
+           registeredAddress,
+           registeredPhone,
+           bankAccountNo,
+           openBank
+        FROM
+          cm_user_invoiceinfo
+        WHERE
+          userId = #{userId}
+    </select>
+</mapper>

+ 1 - 1
src/main/resources/mapper/OrderSubmitMapper.xml

@@ -1753,7 +1753,7 @@
         </trim>
     </insert>
 
-    <select id="findByAddressId" resultType="com.caimei.model.po.AddressPo">
+    <select id="findByAddressId" resultType="com.caimei.model.vo.AddressVo">
         SELECT a.addressID AS addressId,
                a.userID AS userId,
                a.shouHuoRen,