Browse Source

增加保存用户地址

baolei 8 months ago
parent
commit
2053bf37ba

+ 5 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/controller/UserProfileApiController.java

@@ -43,4 +43,9 @@ public class UserProfileApiController extends BaseApiController {
         return userProfileServiceI.getUserAddressList(getUserContext(), request);
     }
 
+    @PostMapping("/user-profile/save-address")
+    public UserAddressListResponse saveAddress(@RequestBody UserAddressRequest request) {
+        return userProfileServiceI.getUserAddressList(getUserContext(), request);
+    }
+
 }

+ 17 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/data/mapper/WxApiUserAddressMapper.java

@@ -0,0 +1,17 @@
+package com.xingxi.api.data.mapper;
+
+import com.xingxi.business.UserAddress.mapper.UserAddressMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WxApiUserAddressMapper extends UserAddressMapper {
+
+    /**
+     * 设置为非默认
+     *
+     * @param userId 用户ID
+     * @return 结果
+     */
+    int clearDefaultFlag(Long userId);
+
+}

+ 24 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/model/UserAddressRequest.java

@@ -4,6 +4,30 @@ import lombok.Data;
 
 @Data
 public class UserAddressRequest {
+
     private Long userAddressId;
 
+    private Long userId;
+
+    // 手机号
+    private String mobile;
+
+    // 收件人
+    private String recipient;
+
+    // 省
+    private String province;
+
+    // 市
+    private String city;
+
+    // 区
+    private String district;
+
+    // 详细地址
+    private String address;
+
+    // 默认标志
+    private String defaultFlag;
+
 }

+ 2 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/UserProfileServiceI.java

@@ -14,4 +14,6 @@ public interface UserProfileServiceI  {
 
     UserAddressListResponse getUserAddressList(UserContext userContext, UserAddressRequest request);
 
+    UserAddressListResponse saveAddress(UserContext userContext, UserAddressRequest request);
+
 }

+ 40 - 1
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/UserProfileServiceImpl.java

@@ -3,12 +3,16 @@ package com.xingxi.api.service.impl;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.api.WxMaUserService;
 import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
+import com.xingxi.api.data.mapper.WxApiUserAddressMapper;
 import com.xingxi.api.model.*;
 import com.xingxi.business.UserAddress.domain.UserAddress;
 import com.xingxi.business.UserAddress.mapper.UserAddressMapper;
 import com.xingxi.common.aliyun.oss.AliyunOSSClient;
+import com.xingxi.common.annotation.Excel;
 import com.xingxi.common.core.domain.entity.SysUser;
 import com.xingxi.common.enums.EDelFlag;
+import com.xingxi.common.enums.EYesNo;
+import com.xingxi.common.utils.StringUtils;
 import com.xingxi.common.utils.spring.SpringUtils;
 import com.xingxi.common.utils.uuid.IdUtils;
 import com.xingxi.api.common.UserContext;
@@ -26,6 +30,7 @@ import sun.misc.BASE64Decoder;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -34,7 +39,7 @@ import java.util.List;
 @Service
 @Validated
 class UserProfileServiceImpl implements UserProfileServiceI {
-    private final UserAddressMapper userAddressMapper;
+    private final WxApiUserAddressMapper userAddressMapper;
     @NotBlank
     @Value("${aliyun.oss.customDomain}")
     private String customDomain;
@@ -205,4 +210,38 @@ class UserProfileServiceImpl implements UserProfileServiceI {
         return new UserAddressListResponse(userAddressList);
     }
 
+    @Override
+    public UserAddressListResponse saveAddress(UserContext userContext, UserAddressRequest request) {
+
+        if (EYesNo.YES.getVal().equals(request.getDefaultFlag())) {
+            userAddressMapper.clearDefaultFlag(request.getUserId());
+        }
+
+        UserAddress userAddress = new UserAddress();
+
+        userAddress.setUserAddressId(request.getUserAddressId());
+        userAddress.setUserId(request.getUserId());
+        userAddress.setMobile(request.getMobile());
+        userAddress.setRecipient(request.getRecipient());
+        userAddress.setProvince(request.getProvince());
+        userAddress.setCity(request.getCity());
+        userAddress.setDistrict(request.getDistrict());
+        userAddress.setAddress(request.getAddress());
+        userAddress.setDelFlag(request.getDefaultFlag());
+        userAddress.setDelFlag(EDelFlag.NO.getVal());
+        if (request.getUserAddressId() == null || request.getUserAddressId() == 0L) {
+            userAddressMapper.insertUserAddress(userAddress);
+        } else {
+            userAddressMapper.updateUserAddress(userAddress);
+        }
+
+        UserAddress condAddress = new UserAddress();
+        condAddress.setUserId(userContext.getCurrentUser().getUserId());
+        condAddress.setDelFlag(EDelFlag.NO.getVal());
+
+        List<UserAddress> userAddressList = userAddressMapper.selectUserAddressList(condAddress);
+
+        return new UserAddressListResponse(userAddressList);
+    }
+
 }

+ 37 - 0
08.src/Xingxi/xingxi-miniprogram-api/src/main/resources/META-INF/sqlmap/WxApiUserAddressMapper.xml

@@ -0,0 +1,37 @@
+<?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.xingxi.api.data.mapper.WxApiProductMapper">
+
+    <resultMap id="MercProdResponse" type="MercProdResponse">
+        <id property="mercProdId"    column="mercProdId"/>
+        <result property="mercId" column="mercId"/>
+        <result property="prodClassId"    column="prodClassId"/>
+        <result property="prodId"    column="prodId"/>
+        <result property="prodName"    column="prodName"/>
+        <result property="ipId"    column="ipId"/>
+        <result property="designerId"    column="designerId"/>
+        <result property="description"    column="description"/>
+        <result property="prodStatus"    column="prodStatus"/>
+        <result property="thirdIdConfirmFlag"    column="thirdIdConfirmFlag"/>
+        <result property="delFlag"    column="delFlag"/>
+    </resultMap>
+
+    <select id="selectProductList" parameterType="MercProdRequest" resultMap="MercProdResponse">
+        SELECT mmp.mercProdId,mmp.mercId,mp.prodClassId,mmp.prodId,mp.prodName,mp.idId,mp.designerId,mp.description,mp.prodStatus,mmp.delFlag
+        FROM m_merchant_prod mmp
+        LEFT JOIN m_prod mp ON mmp.prodId = mp.id
+        <where>
+            mmp.shelfFlag = '1'
+            AND mmp.delFlag = '0'
+            <if test="mercProdId != null ">AND mmp.mercProdId = #{mercProdId}</if>
+            <if test="mercId != null ">AND mmp.mercId = #{mercId}</if>
+            <if test="prodId != null ">AND mmp.prodId = #{prodId}</if>
+            <if test="prodAttrId != null">AND mmp.prodAttrId = #{prodAttrId} </if>
+            <if test="prodClassId != null">AND mp.prodClassId = #{prodClassId} </if>
+            <if test="ipId != null">AND mp.ipId = #{ipId} </if>
+            <if test="prodName != null and prodName != ''">AND mp.prodName like concat('%',#{prodName},'%')</if>
+        </where>
+    </select>
+</mapper>