Browse Source

add 乐器置换支付接口

周箭河 4 years ago
parent
commit
9a7b4598c2

+ 13 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ReplacementInstrumentActivity.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
@@ -44,6 +45,9 @@ public class ReplacementInstrumentActivity {
 	private Integer instrumentsId;
 	
 	private String otherSuggestion;
+
+	@ApiModelProperty(value = "缴费状态 0-未缴费 1-缴费中 2-已缴费")
+	private Integer payStatus = 0;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -170,10 +174,17 @@ public class ReplacementInstrumentActivity {
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
-			
+
+	public Integer getPayStatus() {
+		return payStatus;
+	}
+
+	public void setPayStatus(Integer payStatus) {
+		this.payStatus = payStatus;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);
 	}
-
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ReplacementInstrumentActivityService.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto;
 import com.ym.mec.biz.dal.dto.ReplacementPayDto;
 import com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.ReplacementInstrumentActivityQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
@@ -25,4 +26,11 @@ public interface ReplacementInstrumentActivityService extends BaseService<Intege
      */
     Map pay(ReplacementPayDto replacementPayDto) throws Exception;
 
+    /**
+     * 支付回调处理
+     * @param studentPaymentOrder
+     * @return
+     */
+    Boolean orderCallback(StudentPaymentOrder studentPaymentOrder);
+
 }

+ 115 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentActivityServiceImpl.java

@@ -19,8 +19,12 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
 import org.apache.poi.ss.formula.functions.T;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao;
 import org.springframework.stereotype.Service;
@@ -42,17 +46,25 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
     @Autowired
     private ReplacementInstrumentDao replacementInstrumentDao;
     @Autowired
-	private SysUserCashAccountService sysUserCashAccountService;
+    private SysUserCashAccountService sysUserCashAccountService;
     @Autowired
-	private IdGeneratorService idGeneratorService;
+    private IdGeneratorService idGeneratorService;
     @Autowired
-	private StudentPaymentOrderService studentPaymentOrderService;
+    private StudentPaymentOrderService studentPaymentOrderService;
     @Autowired
-	private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
-	private SysConfigDao sysConfigDao;
+    private SysConfigDao sysConfigDao;
     @Autowired
-	private PayService payService;
+    private PayService payService;
+    @Autowired
+    private ContractService contractService;
+    @Autowired
+    private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Override
     public BaseDAO<Integer, ReplacementInstrumentActivity> getDAO() {
@@ -121,12 +133,12 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
             throw new BizException("乐器置换不存在,请核查");
         }
         if (replacementInstrumentActivity.getInstrumentsId() == null || replacementInstrumentActivity.getInstrumentsId() == 0) {
-			throw new BizException("没有置换的乐器,请核查");
-		}
+            throw new BizException("没有置换的乐器,请核查");
+        }
         Integer userId = replacementInstrumentActivity.getUserId();
-		ReplacementInstrument replacementInstrument = replacementInstrumentDao.get(replacementInstrumentActivity.getInstrumentsId());
-		BigDecimal orderAmount = replacementInstrument.getSalePrice();
-		BigDecimal amount = replacementPayDto.getAmount(); //扣除余额之前的金额
+        ReplacementInstrument replacementInstrument = replacementInstrumentDao.get(replacementInstrumentActivity.getInstrumentsId());
+        BigDecimal orderAmount = replacementInstrument.getSalePrice();
+        BigDecimal amount = replacementPayDto.getAmount(); //扣除余额之前的金额
         if (amount.compareTo(replacementInstrument.getSalePrice()) != 0) {
             throw new BizException("商品价格不符");
         }
@@ -147,9 +159,9 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
             }
         }
 
-		CooperationOrgan cooperationOrgan = cooperationOrganDao.get(replacementInstrumentActivity.getCooperationOrganId());
+        CooperationOrgan cooperationOrgan = cooperationOrganDao.get(replacementInstrumentActivity.getCooperationOrganId());
 
-		String orderNo = idGeneratorService.generatorId("payment") + "";
+        String orderNo = idGeneratorService.generatorId("payment") + "";
         StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 
         studentPaymentOrder.setPaymentChannel("BALANCE");
@@ -208,4 +220,94 @@ public class ReplacementInstrumentActivityServiceImpl extends BaseServiceImpl<In
         studentPaymentOrderService.update(studentPaymentOrder);
         return payMap;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean orderCallback(StudentPaymentOrder studentPaymentOrder) {
+        Date nowDate = new Date();
+        //更新订单信息
+        studentPaymentOrder.setUpdateTime(nowDate);
+        int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
+        if (updateCount <= 0) {
+            throw new BizException("订单更新失败");
+        }
+        //更新维修单信息
+        ReplacementInstrumentActivity replacementInstrumentActivity = get(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
+        if (replacementInstrumentActivity == null) {
+            throw new BizException("置换信息不存在");
+        }
+
+        Integer userId = studentPaymentOrder.getUserId();
+
+        Map<Integer, String> map = new HashMap<>();
+        map.put(userId, userId.toString());
+
+        //支付成功
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
+            replacementInstrumentActivity.setPayStatus(2);
+            replacementInstrumentActivity.setUpdateTime(nowDate);
+            if (this.update(replacementInstrumentActivity) <= 0) {
+                throw new BizException("置换信息更新失败");
+            }
+
+            //插入交易明细
+            BigDecimal amount = studentPaymentOrder.getActualAmount();
+            if (amount.compareTo(BigDecimal.ZERO) > 0) {
+                SysUserCashAccount cashAccount = sysUserCashAccountService.get(userId);
+                //充值
+                SysUserCashAccountDetail rechargeDetail = new SysUserCashAccountDetail();
+                rechargeDetail.setAmount(amount);
+                rechargeDetail.setBalance(cashAccount.getBalance().add(amount));
+                rechargeDetail.setComment("缴费前充值");
+                rechargeDetail.setCreateTime(nowDate);
+                rechargeDetail.setStatus(DealStatusEnum.SUCCESS);
+                rechargeDetail.setTransNo(studentPaymentOrder.getTransNo());
+                rechargeDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
+                rechargeDetail.setUpdateTime(nowDate);
+                rechargeDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                rechargeDetail.setComAmount(studentPaymentOrder.getComAmount());
+                rechargeDetail.setPerAmount(studentPaymentOrder.getPerAmount());
+                sysUserCashAccountDetailService.insert(rechargeDetail);
+
+                //缴费
+                SysUserCashAccountDetail paymentDetail = new SysUserCashAccountDetail();
+                paymentDetail.setAmount(amount.negate());
+                paymentDetail.setBalance(cashAccount.getBalance());
+                paymentDetail.setComment("乐器置换");
+                paymentDetail.setCreateTime(nowDate);
+                paymentDetail.setStatus(DealStatusEnum.SUCCESS);
+                paymentDetail.setTransNo(studentPaymentOrder.getTransNo());
+                paymentDetail.setType(PlatformCashAccountDetailTypeEnum.PAY_FEE);
+                paymentDetail.setUpdateTime(nowDate);
+                paymentDetail.setUserId(userId);
+                rechargeDetail.setChannel(studentPaymentOrder.getPaymentChannel());
+                sysUserCashAccountDetailService.insert(paymentDetail);
+            }
+            try {
+                contractService.transferProduceContract(userId, null);
+            } catch (Exception e) {
+                logger.error("产品协议生成失败", e);
+            }
+            return true;
+        }
+
+        if (studentPaymentOrder.getStatus() == DealStatusEnum.CLOSE || studentPaymentOrder.getStatus() == DealStatusEnum.FAILED) {
+
+            replacementInstrumentActivity.setPayStatus(0);
+            replacementInstrumentActivity.setUpdateTime(nowDate);
+            if (this.update(replacementInstrumentActivity) <= 0) {
+                throw new BizException("置换信息更新失败");
+            }
+
+            if (studentPaymentOrder.getBalancePaymentAmount() != null && studentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                sysUserCashAccountService.updateBalance(studentPaymentOrder.getUserId(), studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "乐保购买支付失败");
+            }
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.SMS_SPORADIC_PAYMENT_FAILED, map, null, 0, null, "STUDENT",
+                    studentPaymentOrder.getActualAmount(), "乐器置换");
+            return false;
+        }
+        return false;
+    }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ReplacementInstrumentCooperationServiceImpl.java

@@ -66,6 +66,10 @@ public class ReplacementInstrumentCooperationServiceImpl extends BaseServiceImpl
                     row.setActiveNum(replacementInstrument.getActiveNum());
                     row.setReplaceNum(replacementInstrument.getReplaceNum());
                     row.setReplaceScale(new BigDecimal(replacementInstrument.getReplaceNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(replacementInstrument.getActiveNum()), 2, BigDecimal.ROUND_HALF_UP));
+                    row.setPayScale(
+                            replacementInstrument.getReplaceNum() <= 0 ? new BigDecimal("0.00") :
+                                    new BigDecimal(replacementInstrument.getPayNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(replacementInstrument.getReplaceNum()), 2, BigDecimal.ROUND_HALF_UP)
+                    );
                 }
             }
 

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -88,6 +88,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private GoodsDao goodsDao;
     @Autowired
     private StudentInstrumentService studentInstrumentService;
+    @Autowired
+    private ReplacementInstrumentActivityService replacementInstrumentActivityService;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -367,6 +369,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             degreeRegistrationService.updateStatus(order);
         }else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
             studentInstrumentService.orderCallback(order);
+        }else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
+            replacementInstrumentActivityService.orderCallback(order);
         }
     }
 

+ 177 - 152
mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentActivityMapper.xml

@@ -5,163 +5,188 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.ReplacementInstrumentActivityDao">
-	
-	<resultMap type="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" id="ReplacementInstrumentActivity">
-		<result column="id_" property="id" />
-		<result column="cooperation_organ_id_" property="cooperationOrganId" />
-		<result column="user_id_" property="userId" />
-		<result column="user_name_" property="userName" />
-		<result column="grade_" property="grade" />
-		<result column="classes_" property="classes" />
-		<result column="mobile_no_" property="mobileNo" />
-		<result column="subject_id_" property="subjectId" />
-		<result column="question_result_" property="questionResult" />
-		<result column="instruments_id_" property="instrumentsId" />
-		<result column="other_suggestion_" property="otherSuggestion" />
-		<result column="open_flag_" property="openFlag" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-	</resultMap>
 
-	<resultMap id="ReplacementInstrumentActivityStatDto" type="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto" extends="ReplacementInstrumentActivity">
-		<result property="subjectName" column="subject_name_"/>
-		<result property="brand" column="brand_"/>
-		<result property="specification" column="specification_"/>
-	</resultMap>
+    <resultMap type="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" id="ReplacementInstrumentActivity">
+        <result column="id_" property="id"/>
+        <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="user_id_" property="userId"/>
+        <result column="user_name_" property="userName"/>
+        <result column="grade_" property="grade"/>
+        <result column="classes_" property="classes"/>
+        <result column="mobile_no_" property="mobileNo"/>
+        <result column="subject_id_" property="subjectId"/>
+        <result column="question_result_" property="questionResult"/>
+        <result column="instruments_id_" property="instrumentsId"/>
+        <result column="other_suggestion_" property="otherSuggestion"/>
+        <result column="open_flag_" property="openFlag"/>
+        <result column="pay_status_" property="payStatus"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
 
-	<!-- 根据主键查询一条记录 -->
-	<select id="get" resultMap="ReplacementInstrumentActivity" >
-		SELECT * FROM replacement_instrument_activity WHERE id_ = #{id} 
-	</select>
-	
-	<!-- 全查询 -->
-	<select id="findAll" resultMap="ReplacementInstrumentActivity">
-		SELECT * FROM replacement_instrument_activity ORDER BY id_
-	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO replacement_instrument_activity (cooperation_organ_id_,user_id_,user_name_,grade_,classes_,mobile_no_,subject_id_,question_result_,instruments_id_,other_suggestion_,create_time_,update_time_)
-		VALUES(#{cooperationOrganId},#{userId},#{userName},#{grade},#{classes},#{mobileNo},#{subjectId},#{questionResult},#{instrumentsId},#{otherSuggestion},NOW(),NOW())
-	</insert>
-	
-	<!-- 根据主键查询一条记录 -->
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity">
-		UPDATE replacement_instrument_activity <set>
-		<if test="subjectId != null">
-		subject_id_ = #{subjectId},
-		</if>
-		<if test="openFlag != null">
-		open_flag_ = #{openFlag},
-		</if>
-		<if test="userId != null">
-		user_id_ = #{userId},
-		</if>
-		<if test="cooperationOrganId != null">
-		cooperation_organ_id_ = #{cooperationOrganId},
-		</if>
-		<if test="userName != null">
-		user_name_ = #{userName},
-		</if>
-		<if test="questionResult != null">
-		question_result_ = #{questionResult},
-		</if>
-		<if test="updateTime != null">
-		update_time_ = #{updateTime},
-		</if>
-		instruments_id_ = #{instrumentsId},
-		other_suggestion_ = #{otherSuggestion},
-		<if test="mobileNo != null">
-		mobile_no_ = #{mobileNo},
-		</if>
-		<if test="classes != null">
-		classes_ = #{classes},
-		</if>
-		<if test="grade != null">
-		grade_ = #{grade},
-		</if>
-		</set> WHERE id_ = #{id}
-	</update>
-	
-	<!-- 根据主键删除一条记录 -->
-	<delete id="delete" >
-		DELETE FROM replacement_instrument_activity WHERE id_ = #{id} 
-	</delete>
-	
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="ReplacementInstrumentActivity" parameterType="map">
-		SELECT * FROM replacement_instrument_activity ORDER BY id_ <include refid="global.limit"/>
-	</select>
-	
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM replacement_instrument_activity
-	</select>
-	<select id="findByUserId" resultMap="ReplacementInstrumentActivity">
-		SELECT * FROM replacement_instrument_activity WHERE user_id_ = #{userId} LIMIT 1
-	</select>
+    <resultMap id="ReplacementInstrumentActivityStatDto"
+               type="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatDto"
+               extends="ReplacementInstrumentActivity">
+        <result property="subjectName" column="subject_name_"/>
+        <result property="brand" column="brand_"/>
+        <result property="specification" column="specification_"/>
+    </resultMap>
 
-	<sql id="queryReplacementsCondition">
-		<where>
-			<if test="cooperationOrganId!=null">
-				AND ria.cooperation_organ_id_ = #{cooperationOrganId}
-			</if>
-			<if test="subjectId!=null">
-				AND ria.subject_id_ = #{subjectId}
-			</if>
-			<if test="brand!=null and brand!=''">
-				AND ri.brand_ = #{brand}
-			</if>
-			<if test="specification!=null and specification!=''">
-				AND ri.specification_ = #{specification}
-			</if>
-			<if test="search!=null and search!=''">
-				AND (ria.mobile_no_ LIKE CONCAT('%', #{search}, '%') OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
-			</if>
-		</where>
-	</sql>
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        WHERE id_ = #{id}
+    </select>
 
-	<select id="queryReplacements" resultMap="ReplacementInstrumentActivityStatDto">
-		SELECT
-			ria.subject_id_,
-			sub.name_ subject_name_,
-			ria.user_name_,
-			ria.mobile_no_,
-			ri.brand_,
-			ri.specification_
-		FROM
-			replacement_instrument_activity ria
-			LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
-			LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
-			LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
-		<include refid="queryReplacementsCondition" />
-		ORDER BY ria.update_time_ DESC
-		<include refid="global.limit"></include>
-	</select>
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        ORDER BY id_
+    </select>
 
-	<select id="countReplacements" resultType="int">
-		SELECT
-			COUNT(ria.id_)
-		FROM
-		replacement_instrument_activity ria
-		LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
-		LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
-		LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
-		<include refid="queryReplacementsCondition" />
-	</select>
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity" useGeneratedKeys="true"
+            keyColumn="id" keyProperty="id">
+        INSERT INTO replacement_instrument_activity (cooperation_organ_id_, user_id_, user_name_, grade_, classes_,
+                                                     mobile_no_, subject_id_, question_result_, instruments_id_,
+                                                     other_suggestion_, create_time_, update_time_)
+        VALUES (#{cooperationOrganId}, #{userId}, #{userName}, #{grade}, #{classes}, #{mobileNo}, #{subjectId},
+                #{questionResult}, #{instrumentsId}, #{otherSuggestion}, NOW(), NOW())
+    </insert>
 
-	<select id="countReplacementsInfo"
-			resultType="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead">
-		SELECT
-			COUNT(DISTINCT ria.user_id_) surveyNum,
-			COUNT(DISTINCT IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) replacementNum,
-			TRUNCATE(COUNT(IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL))/COUNT(DISTINCT ria.user_id_)*100, 2) replacementRate
-		FROM
-			replacement_instrument_activity ria
-		WHERE ria.cooperation_organ_id_ = #{cooperationOrganId}
-	</select>
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ReplacementInstrumentActivity">
+        UPDATE replacement_instrument_activity
+        <set>
+            <if test="subjectId != null">
+                subject_id_ = #{subjectId},
+            </if>
+            <if test="openFlag != null">
+                open_flag_ = #{openFlag},
+            </if>
+            <if test="payStatus != null">
+                pay_status_ = #{payStatus},
+            </if>
+            <if test="userId != null">
+                user_id_ = #{userId},
+            </if>
+            <if test="cooperationOrganId != null">
+                cooperation_organ_id_ = #{cooperationOrganId},
+            </if>
+            <if test="userName != null">
+                user_name_ = #{userName},
+            </if>
+            <if test="questionResult != null">
+                question_result_ = #{questionResult},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+            instruments_id_ = #{instrumentsId},
+            other_suggestion_ = #{otherSuggestion},
+            <if test="mobileNo != null">
+                mobile_no_ = #{mobileNo},
+            </if>
+            <if test="classes != null">
+                classes_ = #{classes},
+            </if>
+            <if test="grade != null">
+                grade_ = #{grade},
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
 
-	<update id="openPay" parameterType="integer">
-		UPDATE replacement_instrument_activity SET open_flag_ = 1 WHERE cooperation_organ_id_ = #{cooperationOrganId} AND open_flag_ = 0
-	</update>
+    <!-- 根据主键删除一条记录 -->
+    <delete id="delete">
+        DELETE
+        FROM replacement_instrument_activity
+        WHERE id_ = #{id}
+    </delete>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="ReplacementInstrumentActivity" parameterType="map">
+        SELECT * FROM replacement_instrument_activity ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM replacement_instrument_activity
+    </select>
+    <select id="findByUserId" resultMap="ReplacementInstrumentActivity">
+        SELECT *
+        FROM replacement_instrument_activity
+        WHERE user_id_ = #{userId}
+        LIMIT 1
+    </select>
+
+    <sql id="queryReplacementsCondition">
+        <where>
+            <if test="cooperationOrganId!=null">
+                AND ria.cooperation_organ_id_ = #{cooperationOrganId}
+            </if>
+            <if test="subjectId!=null">
+                AND ria.subject_id_ = #{subjectId}
+            </if>
+            <if test="brand!=null and brand!=''">
+                AND ri.brand_ = #{brand}
+            </if>
+            <if test="specification!=null and specification!=''">
+                AND ri.specification_ = #{specification}
+            </if>
+            <if test="search!=null and search!=''">
+                AND (ria.mobile_no_ LIKE CONCAT('%', #{search}, '%') OR stu.username_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryReplacements" resultMap="ReplacementInstrumentActivityStatDto">
+        SELECT
+        ria.subject_id_,
+        sub.name_ subject_name_,
+        ria.user_name_,
+        ria.mobile_no_,
+        ri.brand_,
+        ri.specification_
+        FROM
+        replacement_instrument_activity ria
+        LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
+        LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
+        LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
+        <include refid="queryReplacementsCondition"/>
+        ORDER BY ria.update_time_ DESC
+        <include refid="global.limit"></include>
+    </select>
+
+    <select id="countReplacements" resultType="int">
+        SELECT
+        COUNT(ria.id_)
+        FROM
+        replacement_instrument_activity ria
+        LEFT JOIN replacement_instrument ri ON ria.instruments_id_ = ri.id_
+        LEFT JOIN sys_user stu ON ria.user_id_ = stu.id_
+        LEFT JOIN `subject` sub ON ria.subject_id_ = sub.id_
+        <include refid="queryReplacementsCondition"/>
+    </select>
+
+    <select id="countReplacementsInfo"
+            resultType="com.ym.mec.biz.dal.dto.ReplacementInstrumentActivityStatHead">
+        SELECT COUNT(DISTINCT ria.user_id_)                                            surveyNum,
+               COUNT(DISTINCT IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) replacementNum,
+               TRUNCATE(COUNT(IF(ria.instruments_id_ IS NOT NULL, ria.user_id_, NULL)) / COUNT(DISTINCT ria.user_id_) *
+                        100, 2)                                                        replacementRate
+        FROM replacement_instrument_activity ria
+        WHERE ria.cooperation_organ_id_ = #{cooperationOrganId}
+    </select>
+
+    <update id="openPay" parameterType="integer">
+        UPDATE replacement_instrument_activity
+        SET open_flag_ = 1
+        WHERE cooperation_organ_id_ = #{cooperationOrganId}
+          AND open_flag_ = 0
+    </update>
 </mapper>

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/ReplacementInstrumentCooperationMapper.xml

@@ -97,7 +97,8 @@
     <select id="countAllReplacementsInfo" resultType="com.ym.mec.biz.dal.entity.ReplacementInstrumentCooperation">
         SELECT cooperation_organ_id_              cooperationOrganId,
                COUNT(*)                           activeNum,
-               SUM(IF(instruments_id_ > 0, 1, 0)) replaceNum
+               SUM(IF(instruments_id_ > 0, 1, 0)) replaceNum,
+               SUM(IF(pay_status_ = 0, 1, 0)) payNum
         FROM replacement_instrument_activity
         GROUP BY cooperation_organ_id_
     </select>