Browse Source

赛事订单完成

Memory_LG 5 months ago
parent
commit
87096e6bf6

+ 2 - 2
qmjszx-admin/src/main/resources/templates/competition/edit.html

@@ -53,14 +53,14 @@
                     <div class="col-sm-4">
                         <div class="input-group date">
                             <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
-                            <input name="applyStartTime" th:value="${#dates.format(competition.applyStartTime, 'yyyy-MM-dd HH:mm:ss')}" type="text" class="form-control" id="applyStartTime" placeholder="年-月-日 时:分" required>
+                            <input name="applyStartTime" th:value="${#dates.format(competition.applyStartTime, 'yyyy-MM-dd HH:mm')}" type="text" class="form-control" id="applyStartTime" placeholder="年-月-日 时:分" required>
                         </div>
                     </div>
                     <label class="col-sm-2 control-label">赛事结束时间:</label>
                     <div class="col-sm-4">
                         <div class="input-group date">
                             <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
-                            <input name="applyEndTime" th:value="${#dates.format(competition.applyEndTime, 'yyyy-MM-dd HH:mm:ss')}" type="text" class="form-control" id="applyEndTime" placeholder="年-月-日 时:分">
+                            <input name="applyEndTime" th:value="${#dates.format(competition.applyEndTime, 'yyyy-MM-dd HH:mm')}" type="text" class="form-control" id="applyEndTime" placeholder="年-月-日 时:分">
                         </div>
                     </div>
                 </div>

+ 70 - 0
qmjszx-business/src/main/java/beilv/stadium/controller/StadiumController.java

@@ -0,0 +1,70 @@
+package beilv.stadium.controller;
+
+import beilv.common.core.controller.BaseController;
+import beilv.common.core.domain.AjaxResult;
+import beilv.common.utils.uuid.IdUtils;
+import beilv.stadium.domain.Stadium;
+import beilv.stadium.domain.StadiumBO;
+import beilv.stadium.service.IStadiumService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@RestController
+@RequestMapping("/stadium")
+public class StadiumController extends BaseController {
+
+    @Autowired
+    private IStadiumService stadiumService;
+
+
+
+    /**
+     * 添加订单
+     * 写入订单信息: 下单人id, 订单编号, 下单时间, 支付状态:待支付
+     * 调用者传递参数: 用户id, 联系人, 联系电话, 赛事id, 订单类型,
+     */
+    @PostMapping("/toBeStadium")
+    public AjaxResult addStadium(@RequestBody Stadium stadium) {
+        return toAjax(stadiumService.toBeStadium(stadium));
+    }
+
+    /**
+     * 通过订单id取消订单
+     * 调用者传递参数: 订单id,
+     * 注:  取消订单时在下单后没有支付时, 可以执行的操作. 如果已经支付了, 则需要调用申请退款接口
+     */
+    @PostMapping("/cancellStadium")
+    public AjaxResult cancellStadium(@RequestBody Stadium stadium){
+        return toAjax(stadiumService.cancellStadium(stadium));
+    }
+
+    /**
+     * 查询订单
+     * 调用者传递参数: 用户id, 订单状态, 订单类型
+     */
+    @GetMapping("/getStadiumList")
+    public AjaxResult getStadiumList(StadiumBO stadiumBO){
+        return AjaxResult.success(stadiumService.getStadiumList(stadiumBO));
+    }
+
+    /**
+     * 支付回调
+     * 调用着传递: 订单编号, 支付状态
+     */
+    @PostMapping("/havePaidStadium")
+    public AjaxResult havePaidStadium(@RequestBody Stadium stadium){
+        return toAjax(stadiumService.havePaidStadium(stadium));
+    }
+
+    /**
+     * 退款回调
+     * 调用者传递参数: 订单id, 用户id
+     */
+    @PostMapping("/refundStadium")
+    public AjaxResult refundStadium(@RequestBody Stadium stadium){
+        return toAjax(stadiumService.refundStadium(stadium));
+    }
+}

+ 60 - 0
qmjszx-business/src/main/java/beilv/stadium/domain/Stadium.java

@@ -0,0 +1,60 @@
+package beilv.stadium.domain;
+
+import lombok.*;
+
+@Getter
+@Setter
+@ToString
+@AllArgsConstructor
+@NoArgsConstructor
+public class Stadium {
+    /**
+     * 数据id
+     */
+    private Long id;
+    /**
+     * 用户id
+     */
+    private String userId;
+    /**
+     * 联系人
+     */
+    private String contactPerple;
+    /**
+     * 联系电话
+     */
+    private String contactNumber;
+    /**
+     * 下单时间
+     */
+    private String registrationTime;
+    /**
+     * 支付时间
+     */
+    private String paymentTime;
+    /**
+     * 取消时间
+     */
+    private String cancellationTime;
+    /**
+     * 退款时间
+     */
+    private String refundTime;
+    /**
+     * 支付状态
+     */
+    private String paymentStatus;
+    /**
+     * 订单编号
+     */
+    private String orderId;
+    /**
+     * 赛事id
+     */
+    private String competitionId;
+    /**
+     * 订单类型(1: 参赛门票 / 2: 观看门票)
+     */
+    private String orderType;
+
+}

+ 15 - 0
qmjszx-business/src/main/java/beilv/stadium/domain/StadiumBO.java

@@ -0,0 +1,15 @@
+package beilv.stadium.domain;
+
+
+import lombok.*;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class StadiumBO {
+    private String userId;
+    private String orderType;
+    private String paymentStatus;
+}

+ 17 - 0
qmjszx-business/src/main/java/beilv/stadium/mapper/StadiumMapper.java

@@ -0,0 +1,17 @@
+package beilv.stadium.mapper;
+
+import beilv.stadium.domain.Stadium;
+import beilv.stadium.domain.StadiumBO;
+
+import java.util.List;
+
+public interface StadiumMapper {
+    int toBeStadium(Stadium stadium);
+
+    /**
+     * 修改订单状态 及 状态时间
+     */
+    int cancellStadium(Stadium stadium);
+
+    List<Stadium> getStadimList(StadiumBO stadiumBO);
+}

+ 20 - 0
qmjszx-business/src/main/java/beilv/stadium/service/IStadiumService.java

@@ -0,0 +1,20 @@
+package beilv.stadium.service;
+
+
+import beilv.stadium.domain.Stadium;
+import beilv.stadium.domain.StadiumBO;
+
+import java.util.List;
+
+public interface IStadiumService {
+    int toBeStadium(Stadium stadium);
+
+    int cancellStadium(Stadium stadium);
+
+    int refundStadium(Stadium stadium);
+
+    List<Stadium> getStadiumList(StadiumBO stadiumBO);
+
+    int havePaidStadium(Stadium stadium);
+
+}

+ 73 - 0
qmjszx-business/src/main/java/beilv/stadium/service/impl/StadiumServiceImpl.java

@@ -0,0 +1,73 @@
+package beilv.stadium.service.impl;
+
+import beilv.common.utils.uuid.IdUtils;
+import beilv.stadium.domain.Stadium;
+import beilv.stadium.domain.StadiumBO;
+import beilv.stadium.mapper.StadiumMapper;
+import beilv.stadium.service.IStadiumService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class StadiumServiceImpl implements IStadiumService {
+
+    @Autowired
+    private StadiumMapper stadiumMapper;
+
+    private final static String DAI_ZHI_FU = "payment_status_to_be_paid";
+    private final static String YI_ZHI_FU = "payment_status_have_paid";
+    private final static String YI_QU_XIAO = "payment_status_cancelled";
+    private final static String YI_TUI_KUAN = "payment_status_refunded";
+
+    private final static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @Override
+    public int toBeStadium(Stadium stadium) {
+        //设置订单状态为 待支付
+        stadium.setPaymentStatus(DAI_ZHI_FU);
+        //设置下单时间为当前时间
+        stadium.setRegistrationTime(simpleDateFormat.format(new Date()));
+        //生成订单编号
+        stadium.setOrderId(IdUtils.fastSimpleUUID());
+        return stadiumMapper.toBeStadium(stadium);
+    }
+
+    @Override
+    public int cancellStadium(Stadium stadium) {
+        //设置订单状态为取消
+        stadium.setPaymentStatus(YI_QU_XIAO);
+        //设置取消时间为当前时间
+        stadium.setCancellationTime(simpleDateFormat.format(new Date()));
+        return stadiumMapper.cancellStadium(stadium);
+    }
+
+    @Override
+    public List<Stadium> getStadiumList(StadiumBO stadiumBO) {
+        return stadiumMapper.getStadimList(stadiumBO);
+    }
+
+    @Override
+    public int havePaidStadium(Stadium stadium) {
+        //设置订单状态为已支付
+        stadium.setPaymentStatus(YI_ZHI_FU);
+        //设置支付时间
+        stadium.setPaymentTime(simpleDateFormat.format(new Date()));
+        //更新订单信息
+        return stadiumMapper.cancellStadium(stadium);
+    }
+
+    @Override
+    public int refundStadium(Stadium stadium) {
+        //设置订单状态为取消
+        stadium.setPaymentStatus(YI_TUI_KUAN);
+        //设置取消时间为当前时间
+        stadium.setRefundTime(simpleDateFormat.format(new Date()));
+        //修改订单状态为退款
+        return stadiumMapper.cancellStadium(stadium);
+    }
+
+}

+ 82 - 0
qmjszx-business/src/main/resources/mapper/stadium/StadiumMapper.xml

@@ -0,0 +1,82 @@
+<?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="beilv.stadium.mapper.StadiumMapper">
+
+    <resultMap type="Stadium" id="StadiumResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="contactPerple" column="contact_perple"/>
+        <result property="contactNumber" column="contact_number"/>
+        <result property="registrationTime" column="registration_time"/>
+        <result property="paymentTime" column="payment_time"/>
+        <result property="cancellationTime" column="cancellation_time"/>
+        <result property="refundTime" column="refund_time"/>
+        <result property="paymentStatus" column="payment_status"/>
+        <result property="orderId" column="order_id"/>
+        <result property="competitionId" column="competition_id"/>
+        <result property="orderType" column="order_type"/>
+    </resultMap>
+
+
+    <insert id="toBeStadium" parameterType="stadium">
+        insert into book_a_race
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,</if>
+            <if test="contactPerple != null">contact_perple,</if>
+            <if test="contactNumber != null">contact_number,</if>
+            <if test="registrationTime != null">registration_time,</if>
+            <if test="paymentTime != null">payment_time,</if>
+            <if test="cancellationTime != null">cancellation_time,</if>
+            <if test="refundTime != null">refund_time,</if>
+            <if test="paymentStatus != null">payment_status,</if>
+            <if test="orderId != null">order_id,</if>
+            <if test="competitionId != null">competition_id,</if>
+            <if test="orderType != null">order_type,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},</if>
+            <if test="contactPerple != null">#{contactPerple},</if>
+            <if test="contactNumber != null">#{contactNumber},</if>
+            <if test="registrationTime != null">#{registrationTime},</if>
+            <if test="paymentTime != null">#{paymentTime},</if>
+            <if test="cancellationTime != null">#{cancellationTime},</if>
+            <if test="refundTime != null">#{refundTime},</if>
+            <if test="paymentStatus != null">#{paymentStatus},</if>
+            <if test="orderId != null">#{orderId},</if>
+            <if test="competitionId != null">#{competitionId},</if>
+            <if test="orderType != null">#{orderType},</if>
+        </trim>
+    </insert>
+
+    <update id="cancellStadium" parameterType="stadium">
+        update book_a_race
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="paymentTime != null">#{paymentTime},</if>
+            <if test="cancellationTime != null">#{cancellationTime},</if>
+            <if test="refundTime != null">#{refundTime},</if>
+            <if test="paymentStatus != null">#{paymentStatus},</if>
+        </trim>
+        where order_id = #{orderId}
+    </update>
+
+    <select id="getStadimList" parameterType="stadiumBO" resultMap="StadiumResult">
+        select
+            user_id, contact_perple, contact_number, registration_time, payment_time,
+            cancellation_time, refund_time, payment_status, order_id, competition_id, order_type
+        from book_a_race
+        <where>
+            <if test="userId != null and userId != ''">
+                and user_id = #{userId}
+            </if>
+            <if test="orderType != null and orderType != ''">
+                and order_type = #{orderType}
+            </if>
+            <if test="paymentStatus != null and paymentStatus != ''">
+                and paymen_status = #{paymentStatus}
+            </if>
+        </where>
+    </select>
+
+</mapper>