浏览代码

保存订单逻辑

lijun 5 年之前
父节点
当前提交
f0e6a740e7

+ 23 - 0
src/main/java/com/caimei/mapper/order/BpUserInfoMapper.java

@@ -0,0 +1,23 @@
+package com.caimei.mapper.order;
+
+import com.caimei.entity.BpOrderUserInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 订单地址信息
+ *
+ * @author Lijun
+ * @create 2019-12-20
+ **/
+@Mapper
+public interface BpUserInfoMapper {
+
+    BpOrderUserInfo getUserInfo(@Param("orderId") Integer orderId);
+
+    int insertUserInfo(BpOrderUserInfo bpOrderUserInfo);
+
+    int updateUserInfo(BpOrderUserInfo bpOrderUserInfo);
+
+    int deleteUserInfo(@Param("orderId") Integer orderId);
+}

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

@@ -0,0 +1,29 @@
+package com.caimei.mapper.user;
+
+import com.caimei.entity.Address;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface AddressMapper {
+
+    List<Address> findByUserId(Integer userID);
+
+    List<Address> findByUserIdByAddress(Integer userID);
+
+    Address findByAddressID(@Param("addressID") Integer addressID);
+
+    int updateIsDefault(@Param("addressID") Integer addressID);
+
+    int updateNoDefault(@Param("userID") Integer userID);
+
+    int delete(@Param("addressID") Integer addressID);
+
+    int update(Address address);
+
+    int insert(Address address);
+
+    int updateUser(@Param("newUserID") Integer newUserID, @Param("oldUserId") Integer oldUserId);
+}

+ 34 - 3
src/main/java/com/caimei/service/order/impl/OrderServiceImpl.java

@@ -2,11 +2,13 @@ package com.caimei.service.order.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.caimei.entity.*;
+import com.caimei.mapper.order.BpUserInfoMapper;
 import com.caimei.mapper.order.CmShopOrderMapper;
 import com.caimei.mapper.order.OrderMapper;
 import com.caimei.mapper.order.OrderProductMapper;
 import com.caimei.mapper.products.HomePageMapper;
 import com.caimei.mapper.products.OrganizeProductsMapper;
+import com.caimei.mapper.user.AddressMapper;
 import com.caimei.mapper.user.LoginMapper;
 import com.caimei.mapper.user.PersonalMapper;
 import com.caimei.mapper.user.UserMapper;
@@ -49,6 +51,10 @@ public class OrderServiceImpl implements OrderService {
     private CmShopOrderMapper cmShopOrderMapper;
     @Autowired
     private HomePageMapper homePageMapper;
+    @Autowired
+    private BpUserInfoMapper bpUserInfoMapper;
+    @Autowired
+    private AddressMapper addressMapper;
 
     @Value("${miniprogram.domain}")
     private String domain;
@@ -412,7 +418,7 @@ public class OrderServiceImpl implements OrderService {
 
             /**判断前端传入orderShouldPayFee订单应付金额,和后台计算应付金额对比*/
             double v = payableAmount.subtract(new BigDecimal(orderShouldPayFee)).doubleValue();
-            if (v > -0.1d || v < 0.1d) {
+            if (v < -0.1d || v > 0.1d) {//考虑前端计算不精确
                 return wxJsonModel.error("-1", "订单付款金额异常");
             }
 
@@ -583,15 +589,40 @@ public class OrderServiceImpl implements OrderService {
             cmOrder.setShopOrderIDs(shopOrderIDs);//子订单ID:1000,1002
             orderMapper.update(cmOrder);
 
-            //保存地址信息
+            //获取地址信息
+            Address address = addressMapper.findByAddressID(addressID);
+            if(null != address){
+                //保存地址信息
+                BpOrderUserInfo bpOrderUserInfo = new BpOrderUserInfo();
+                bpOrderUserInfo.setOrderId(orderID);
+                bpOrderUserInfo.setClubId(clubID);
+                bpOrderUserInfo.setUserId(userId);
+                bpOrderUserInfo.setName(user.getUserName());
+                bpOrderUserInfo.setShouHuoRen(address.getShouHuoRen());
+                bpOrderUserInfo.setMobile(address.getMobile());
+                bpOrderUserInfo.setPostalCode(address.getPhone());
+                bpOrderUserInfo.setPostalCode(address.getPostalCode());
+                bpOrderUserInfo.setTownId(address.getTownID());
+                bpOrderUserInfo.setProvince(address.getProvince());
+                bpOrderUserInfo.setCity(address.getCity());
+                bpOrderUserInfo.setTown(address.getTown());
+                bpOrderUserInfo.setAddress(address.getAddressDetail());
+                bpUserInfoMapper.insertUserInfo(bpOrderUserInfo);
+            }else{
+                return wxJsonModel.error("订单地址异常");
+            }
+
+
+            //保存发票信息(发票采用不可选,只要用户存在增值税发票则保存最新记录即可)
 
-            //保存发票信息
 
             //提交订单完成后清理购物车(用户ID,商品ID)
             if (StringUtils.equals("1", cartType)) {//购物车提交后清理购物车
 
             }
         }
+
+        /**构造返回参数*/
         Map<String, String> info = new HashMap<>();
         info.put("orderID", String.valueOf(cmOrder.getOrderID()));
         info.put("orderNo", String.valueOf(cmOrder.getOrderNo()));

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

@@ -0,0 +1,109 @@
+<?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.user.AddressMapper">
+   
+   <sql id="aColumns">
+   		a.addressID,
+   		a.userID,
+   		a.shouHuoRen,
+   		a.townID,
+   		a.address AS "addressDetail",
+   		a.postalCode,
+   		a.phone,
+   		a.mobile,
+   		a.defaultFlag,
+   		c.cityID,
+   		p.provinceID,
+   		t.name AS "townName",
+   		c.name AS "cityName",
+   		p.name AS "provinceName"
+	</sql>
+	
+	 <sql id="aJoins">
+	 	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
+	 </sql>
+
+
+	<select id="findByAddressID" resultType="com.caimei.entity.Address">
+		SELECT
+		<include refid="aColumns"/>
+		FROM address a
+		<include refid="aJoins"/>
+		WHERE a.addressID=#{addressID}
+	</select>
+
+
+	<select id="get" resultType="com.caimei.entity.Address">
+		SELECT 
+			 <include refid="aColumns"/>
+		FROM address a
+		<include refid="aJoins"/>
+		WHERE a.addressID=#{addressID}
+  	</select>
+  	
+	<select id="findByUserId" resultType="com.caimei.entity.Address">
+		SELECT 
+			 <include refid="aColumns"/>
+		FROM address a
+		<include refid="aJoins"/>
+		WHERE a.userID=#{userID}
+  	</select>
+
+	<select id="findByUserIdByAddress" resultType="com.caimei.entity.Address">
+		SELECT
+		<include refid="aColumns"/>
+		FROM address a
+		<include refid="aJoins"/>
+		WHERE a.userID=#{userID}
+	</select>
+  	
+  	<update id="updateIsDefault">
+  		UPDATE address SET defaultFlag=1 WHERE addressID=#{addressID}
+  	</update>
+  	
+  	<update id="updateNoDefault">
+  		UPDATE address SET defaultFlag=0 WHERE userID=#{userID}
+  	</update>
+
+  	<update id="updateUser">
+  		UPDATE address SET userID=#{newUserID} WHERE userID=#{oldUserId}
+  	</update>
+
+  	<delete id="delete">
+  		DELETE FROM address WHERE addressID=#{addressID}
+  	</delete>
+  	
+  	<update id="update" parameterType="com.caimei.entity.Address">
+  		UPDATE address SET 
+  			shouHuoRen=#{shouHuoRen},
+  			mobile=#{mobile},
+  			postalCode=#{postalCode},
+  			townID=#{townID},
+  			address=#{addressDetail},
+  			phone=#{phone}
+  		WHERE addressID = #{addressID}
+  	</update>
+  	
+  	<insert id="insert" parameterType="com.caimei.entity.Address" keyProperty="addressID" useGeneratedKeys="true">
+  		INSERT INTO address(
+  				userID,
+  				shouHuoRen,
+  				townID,
+  				address,
+  				postalCode,
+  				mobile,
+  				phone
+  			) VALUES (
+  			    #{userID},
+  			    #{shouHuoRen},
+  			    #{townID},
+  			    #{addressDetail},
+  			    #{postalCode},
+  			    #{mobile},
+  			    #{phone}
+  			)
+  	</insert>
+  
+</mapper>

+ 78 - 0
src/main/resources/mapper/BpUserInfoMapper.xml

@@ -0,0 +1,78 @@
+<?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.order.BpUserInfoMapper" >
+
+    <select id="getUserInfo" resultType="com.caimei.entity.BpOrderUserInfo">
+        SELECT
+        a.id,
+        a.orderId,
+        a.clubId,
+        a.userId,
+        a.name,
+        a.shouHuoRen,
+        a.mobile,
+        a.phone,
+        a.postalCode,
+        a.townId,
+        a.province,
+        a.city,
+        a.town,
+        a.address
+        FROM bp_order_userinfo a
+        WHERE a.orderId = #{orderId}
+    </select>
+
+    <update id="updateUserInfo" parameterType="com.caimei.entity.BpOrderUserInfo">
+        UPDATE bp_order_userinfo SET
+        orderId = #{orderId},
+        clubId = #{clubId},
+        userId = #{userId},
+        name = #{name},
+        shouHuoRen = #{shouHuoRen},
+        mobile = #{mobile},
+        phone = #{phone},
+        postalCode = #{postalCode},
+        townId = #{townId},
+        province = #{province},
+        city = #{city},
+        town = #{town},
+        address = #{address}
+        WHERE id = #{id}
+    </update>
+
+    <insert id="insertUserInfo" parameterType="com.caimei.entity.BpOrderUserInfo" keyProperty="id" useGeneratedKeys="true">
+        INSERT INTO bp_order_userinfo(
+        orderId,
+        clubId,
+        userId,
+        name,
+        shouHuoRen,
+        mobile,
+        phone,
+        postalCode,
+        townId,
+        province,
+        city,
+        town,
+        address
+        ) VALUES (
+        #{orderId},
+        #{clubId},
+        #{userId},
+        #{name},
+        #{shouHuoRen},
+        #{mobile},
+        #{phone},
+        #{postalCode},
+        #{townId},
+        #{province},
+        #{city},
+        #{town},
+        #{address}
+        )
+    </insert>
+
+    <delete id="deleteUserInfo">
+        DELETE FROM `bp_order_userinfo` WHERE orderId = #{orderId}
+    </delete>
+</mapper>