You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
3.2 KiB

  1. package com.example.demo.mapper;
  2. import com.example.demo.domain.entity.Detail;
  3. import org.apache.ibatis.annotations.*;
  4. import java.util.List;
  5. @Mapper
  6. public interface RefundMapper {
  7. @Insert({
  8. "insert into detail",
  9. "(jwcode,refund_type,refund_goods,contact_id,recharge_coin,free_coin,task_coin,remark,admin_id,create_time,update_type)",
  10. "values",
  11. "(#{jwcode},#{refundType},#{refundGoods},#{contactId},#{rechargeCoin},#{freeCoin},#{taskCoin},#{remark},#{adminId},now(),'退款')"
  12. })
  13. @Options(useGeneratedKeys = true, keyColumn = "detail_id", keyProperty = "detailId")
  14. int insert(Detail detail);
  15. @Insert({
  16. "insert into audit",
  17. "(jwcode,refund_id,admin_id,create_time,detail_id)",
  18. "values",
  19. "(#{jwcode},#{detailId},#{adminId},now(),#{detailId})"
  20. })
  21. int insertAudit(Detail detail);
  22. // 检查 contactId 是否存在
  23. @Select("SELECT EXISTS (SELECT 1 FROM detail WHERE contact_id = #{contactId})")
  24. boolean existsByContactId(@Param("contactId") Integer contactId);
  25. @Update("update detail set detail_flag = 0 where detail_id = #{detailId}")
  26. int update(@Param("detailId") Integer detailId);
  27. @Select("select * from detail where detail_id = #{detailId} and detail_flag = 1")
  28. Detail selectByDetailId(Integer detailId);
  29. @Select({
  30. "<script>",
  31. "SELECT d.*,",
  32. " a.area AS adminArea, a.name AS adminName,",
  33. " u.name AS userName,",
  34. " au.status AS auditStatus, au.reson AS auditReson",
  35. "FROM detail d",
  36. "LEFT JOIN admin a ON d.admin_id = a.admin_id",
  37. "LEFT JOIN user u ON d.jwcode = u.jwcode",
  38. "LEFT JOIN audit au ON d.detail_id = au.refund_id",
  39. "WHERE d.detail_flag = 1 and update_type ='退款'",
  40. "<if test='jwcode != null'>AND d.jwcode = #{jwcode}</if>",
  41. "<if test='refundType != null'>AND d.refund_type LIKE CONCAT('%', #{refundType}, '%')</if>",
  42. "<if test='refundGoods != null'>AND d.refund_goods LIKE CONCAT('%', #{refundGoods}, '%')</if>",
  43. "<if test='rechargeCoin != null'>AND d.recharge_coin = #{rechargeCoin}</if>",
  44. "<if test='freeCoin != null'>AND d.free_coin = #{freeCoin}</if>",
  45. "<if test='taskCoin != null'>AND d.task_coin = #{taskCoin}</if>",
  46. "<if test='remark != null'>AND d.remark LIKE CONCAT('%', #{remark}, '%')</if>",
  47. "<if test='adminId != null'>AND d.admin_id = #{adminId}</if>",
  48. "<if test='adminArea != null'>AND a.area LIKE CONCAT('%', #{adminArea}, '%')</if>", // admin表字段过滤
  49. "<if test='adminName != null'>AND a.name LIKE CONCAT('%', #{adminName}, '%')</if>", // admin表字段过滤
  50. "<if test='userName != null'>AND u.name LIKE CONCAT('%', #{userName}, '%')</if>", // user表字段过滤
  51. "<if test='auditStatus != null'>AND au.status = #{auditStatus}</if>", // audit 表字段过滤
  52. "<if test='auditReson != null'>AND au.reson LIKE CONCAT('%', #{auditReson}, '%')</if>", // audit表字段过滤
  53. "ORDER BY d.create_time DESC",
  54. "</script>"
  55. })
  56. List<Detail> select(Detail detail);
  57. }