瀏覽代碼

[修改]购买接口优惠券返还完成

liying 7 年之前
父節點
當前提交
57dc3b1b52

+ 3 - 1
src/main/java/com/example/cinema/blImpl/ActivityServiceImpl.java

@@ -35,7 +35,9 @@ public class ActivityServiceImpl implements ActivityService {
             activity.setEndTime(activityForm.getEndTime());
             activity.setCouponId(coupon.getId());
             activityMapper.insertActivity(activity);
-            activityMapper.insertActivityAndMovie(activity.getId(), activityForm.getMovieList());
+            if(activityForm.getMovieList()!=null){
+                activityMapper.insertActivityAndMovie(activity.getId(), activityForm.getMovieList());
+            }
             return ResponseVO.buildSuccess(activityMapper.selectById(activity.getId()));
         } catch (Exception e) {
             e.printStackTrace();

+ 26 - 3
src/main/java/com/example/cinema/blImpl/TicketServiceImpl.java

@@ -3,6 +3,7 @@ package com.example.cinema.blImpl;
 import com.example.cinema.bl.HallService;
 import com.example.cinema.bl.TicketService;
 import com.example.cinema.data.*;
+import com.example.cinema.po.Activity;
 import com.example.cinema.po.Coupon;
 import com.example.cinema.po.Ticket;
 import com.example.cinema.po.VIPCard;
@@ -53,7 +54,13 @@ public class TicketServiceImpl implements TicketService {
         }
         try {
             ticketMapper.insertTickets(tickets);
-            return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
+            TicketWithCouponVO vo=new TicketWithCouponVO();
+            vo.setTicketVOList(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
+            ScheduleItem scheduleItem = scheduleMapper.selectScheduleById(tickets.get(0).getScheduleId());
+            double total=scheduleItem.getFare()*tickets.size();
+            vo.setTotal(total);
+            vo.setCoupons(couponMapper.selectCouponByUserAndAmount(tickets.get(0).getUserId(),total));
+            return ResponseVO.buildSuccess(vo);
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseVO.buildFailure("失败");
@@ -66,10 +73,26 @@ public class TicketServiceImpl implements TicketService {
     public ResponseVO completeTicket(List<Integer> id, int couponId) {
         try {
             List<Ticket> tickets=updateState(id,1);
+            int userId=tickets.get(0).getUserId();
             if (couponId != 0) {
-                couponMapper.deleteCouponUser(couponId, tickets.get(0).getUserId());
+                couponMapper.deleteCouponUser(couponId, userId);
+            }
+            ScheduleItem schedule=scheduleMapper.selectScheduleById(tickets.get(0).getScheduleId());
+            //  按电影优惠
+            List<ActivityVO> activityVOS=activityMapper.selectActivities();
+            List<Integer> coupons=new ArrayList<>();
+            for (ActivityVO vo:activityVOS ) {
+                coupons.add(vo.getCoupon().getId());
+            }
+            //  按时间优惠
+            List<ActivityVO> timeActivityVOS=activityMapper.selectActivitiesWithoutMovie();
+            for (ActivityVO vo:timeActivityVOS ) {
+                coupons.add(vo.getCoupon().getId());
+            }
+            coupons=coupons.stream().distinct().collect(Collectors.toList());
+            for (Integer coupon : coupons) {
+                couponMapper.insertCouponUser(coupon,userId);
             }
-
             return ResponseVO.buildSuccess(tickets.stream().map(ticket -> ticket.getVO()).collect(Collectors.toList()));
         } catch (Exception e) {
             e.printStackTrace();

+ 9 - 3
src/main/java/com/example/cinema/data/ActivityMapper.java

@@ -1,6 +1,7 @@
 package com.example.cinema.data;
 
 import com.example.cinema.po.Activity;
+import com.example.cinema.vo.ActivityVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -16,11 +17,16 @@ public interface ActivityMapper {
 
     int insertActivityAndMovie(@Param("activityId") int activityId,@Param("movieId") List<Integer> movieId);
 
-    List<Activity> selectActivities();
+    List<ActivityVO> selectActivities();
+
+    List<ActivityVO> selectActivitiesByMovie(int movieId);
+
+    ActivityVO selectById(int id);
+
+    List<ActivityVO> selectActivitiesWithoutMovie();
+
 
-    List<Activity> selectActivitiesByMovie(int movieId);
 
-    Activity selectById(int id);
 
 
 

+ 23 - 10
src/main/java/com/example/cinema/data/ActivityMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.example.cinema.data.ActivityMapper">
     <insert id="insertActivity" parameterType="com.example.cinema.po.Activity"
             useGeneratedKeys="true" keyProperty="id">
-        insert into activity(description,name,coupon_id,start_time,end_time)
+        insert into activity(a_description,activity_name,coupon_id,start_time,end_time)
         values(#{description},#{name},#{couponId},#{startTime},#{endTime})
     </insert>
     <insert id="insertActivityAndMovie">
@@ -18,11 +18,11 @@
             *
         from
             activity a
-        inner join
+        left join
             activity_movie am
         on
             a.id=am.activity_id
-        inner join
+        left join
             movie m
         on
             am.movie_id=m.id
@@ -34,11 +34,11 @@
             *
         from
             activity a
-        inner join
+        left join
             activity_movie am
         on
             a.id=am.activity_id
-        inner join
+        left join
             movie m
         on
             am.movie_id=m.id
@@ -50,11 +50,11 @@
         *
         from
         activity a
-        inner join
+        left join
         activity_movie am
         on
         a.id=am.activity_id
-        inner join
+        left join
         movie m
         on
         am.movie_id=m.id
@@ -62,18 +62,31 @@
         where a.start_time &lt; Now() and a.end_time &gt; Now() and am.movie_id=#{movieId}
 
     </select>
+    <select id="selectActivitiesWithoutMovie" resultMap="Activity">
+        select
+        *
+        from
+        activity a
+        left join
+        activity_movie am
+        on
+        a.id=am.activity_id
+        where a.start_time &lt; Now() and a.end_time &gt; Now() and movie_id is null
+
+    </select>
+
 
 
     <resultMap id="Activity" type="com.example.cinema.vo.ActivityVO">
-        <result column="description" property="description"></result>
+        <result column="a_description" property="description"></result>
         <result column="id" property="id"></result>
-        <result column="name" property="name"></result>
+        <result column="activity_name" property="name"></result>
         <result column="start_time" property="startTime"></result>
         <result column="end_time" property="endTime"></result>
         <association property="coupon" column="coupon_id" select="com.example.cinema.data.CouponMapper.selectById">
         </association>
         <collection property="movieList" ofType="com.example.cinema.vo.MovieVO">
-            <id column="id" property="id"></id>
+            <id column="movie_id" property="id"></id>
             <result column="poster_url" property="posterUrl"></result>
             <result column="screen_writer" property="screenWriter"></result>
             <result column="start_date" property="startDate"></result>

+ 2 - 0
src/main/java/com/example/cinema/data/CouponMapper.java

@@ -21,4 +21,6 @@ public interface CouponMapper {
     void insertCouponUser(@Param("couponId") int couponId,@Param("userId")int userId);
 
     void deleteCouponUser(@Param("couponId") int couponId,@Param("userId")int userId);
+
+    List<Coupon> selectCouponByUserAndAmount(@Param("userId") int userId,@Param("amount") double amount);
 }

+ 5 - 0
src/main/java/com/example/cinema/data/CouponMapper.xml

@@ -23,6 +23,11 @@
 
     </select>
 
+    <select id="selectCouponByUserAndAmount" resultMap="Coupon">
+        select * from coupon c left join coupon_user  cu on c.id=cu.coupon_id where cu.user_id=#{userId} and c.start_time &lt; Now() and c.end_time &gt; Now() and #{amount}>c.target_amount
+
+    </select>
+
     <resultMap id="Coupon" type="com.example.cinema.po.Coupon">
         <result column="description" property="description"></result>
         <result column="id" property="id"></result>

+ 1 - 1
src/main/java/com/example/cinema/data/TicketMapper.xml

@@ -10,7 +10,7 @@
             useGeneratedKeys="true" keyProperty="id">
         insert into ticket(user_id,schedule_id,column_index,row_index,state)
         values
-        <foreach collection="tickets" item="item" index="index"
+        <foreach collection="list" item="item" index="index"
                  separator=",">
             (#{item.userId}, #{item.scheduleId},#{item.columnIndex},#{item.rowIndex},#{item.state})
         </foreach>

+ 41 - 0
src/main/java/com/example/cinema/vo/TicketWithCouponVO.java

@@ -0,0 +1,41 @@
+package com.example.cinema.vo;
+
+import com.example.cinema.po.Coupon;
+
+import java.util.List;
+
+/**
+ * Created by liying on 2019/4/21.
+ */
+public class TicketWithCouponVO {
+
+    private List<TicketVO> ticketVOList;
+
+    private double total;
+
+    private List<Coupon> coupons;
+
+    public List<TicketVO> getTicketVOList() {
+        return ticketVOList;
+    }
+
+    public void setTicketVOList(List<TicketVO> ticketVOList) {
+        this.ticketVOList = ticketVOList;
+    }
+
+    public double getTotal() {
+        return total;
+    }
+
+    public void setTotal(double total) {
+        this.total = total;
+    }
+
+    public List<Coupon> getCoupons() {
+        return coupons;
+    }
+
+    public void setCoupons(List<Coupon> coupons) {
+        this.coupons = coupons;
+    }
+}