ソースを参照

feat[litemall-db]: 数据库添加售后表 litemall_aftersale

Junling Bu 5 年 前
コミット
f64f7d12f6

+ 5 - 0
litemall-db/mybatis-generator/generatorConfig.xml

@@ -179,5 +179,10 @@
         <table tableName="litemall_notice_admin">
             <generatedKey column="id" sqlStatement="MySql" identity="true"/>
         </table>
+        <table tableName="litemall_aftersale">
+            <generatedKey column="id" sqlStatement="MySql" identity="true"/>
+            <columnOverride column="pictures" javaType="java.lang.String[]"
+                            typeHandler="org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler"/>
+        </table>
     </context>
 </generatorConfiguration>

+ 26 - 0
litemall-db/sql/litemall_table.sql

@@ -90,6 +90,32 @@ CREATE TABLE `litemall_admin` (
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 --
+-- Table structure for table `litemall_aftersale`
+--
+
+DROP TABLE IF EXISTS `litemall_aftersale`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `litemall_aftersale` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `aftersale_sn` varchar(63) DEFAULT NULL COMMENT '售后编号',
+  `order_id` int(11) NOT NULL COMMENT '订单ID',
+  `user_id` int(11) NOT NULL COMMENT '用户ID',
+  `type` smallint(6) DEFAULT '0' COMMENT '售后类型,0是未收货退款,1是已收货(无需退货)退款,2用户退货退款',
+  `reason` varchar(31) DEFAULT '' COMMENT '退款原因',
+  `amount` decimal(10,2) DEFAULT '0.00' COMMENT '退款金额',
+  `pictures` varchar(1023) DEFAULT '[]' COMMENT '退款凭证图片链接数组',
+  `comment` varchar(511) DEFAULT '' COMMENT '退款说明',
+  `status` smallint(6) DEFAULT '0' COMMENT '状态,0是用户初始申请,1是管理员接收申请处理中,2是管理员处理成功完成申请,3是管理员拒绝申请',
+  `handle_time` datetime DEFAULT NULL COMMENT '管理员操作时间',
+  `add_time` datetime DEFAULT NULL COMMENT '添加时间',
+  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+  `deleted` tinyint(1) DEFAULT '0' COMMENT '售后编号',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='售后表';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
 -- Table structure for table `litemall_brand`
 --
 

+ 152 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallAftersaleMapper.java

@@ -0,0 +1,152 @@
+package org.linlinjava.litemall.db.dao;
+
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+import org.linlinjava.litemall.db.domain.LitemallAftersale;
+import org.linlinjava.litemall.db.domain.LitemallAftersaleExample;
+
+public interface LitemallAftersaleMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    long countByExample(LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int deleteByExample(LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int deleteByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int insert(LitemallAftersale record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int insertSelective(LitemallAftersale record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    LitemallAftersale selectOneByExample(LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    LitemallAftersale selectOneByExampleSelective(@Param("example") LitemallAftersaleExample example, @Param("selective") LitemallAftersale.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    List<LitemallAftersale> selectByExampleSelective(@Param("example") LitemallAftersaleExample example, @Param("selective") LitemallAftersale.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    List<LitemallAftersale> selectByExample(LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    LitemallAftersale selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") LitemallAftersale.Column ... selective);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    LitemallAftersale selectByPrimaryKey(Integer id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    LitemallAftersale selectByPrimaryKeyWithLogicalDelete(@Param("id") Integer id, @Param("andLogicalDeleted") boolean andLogicalDeleted);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int updateByExampleSelective(@Param("record") LitemallAftersale record, @Param("example") LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int updateByExample(@Param("record") LitemallAftersale record, @Param("example") LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int updateByPrimaryKeySelective(LitemallAftersale record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int updateByPrimaryKey(LitemallAftersale record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int logicalDeleteByExample(@Param("example") LitemallAftersaleExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    int logicalDeleteByPrimaryKey(Integer id);
+}

+ 839 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAftersale.java

@@ -0,0 +1,839 @@
+package org.linlinjava.litemall.db.domain;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class LitemallAftersale {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.id
+     *
+     * @mbg.generated
+     */
+    private Integer id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.aftersale_sn
+     *
+     * @mbg.generated
+     */
+    private String aftersaleSn;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.order_id
+     *
+     * @mbg.generated
+     */
+    private Integer orderId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.user_id
+     *
+     * @mbg.generated
+     */
+    private Integer userId;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.type
+     *
+     * @mbg.generated
+     */
+    private Short type;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.reason
+     *
+     * @mbg.generated
+     */
+    private String reason;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.amount
+     *
+     * @mbg.generated
+     */
+    private BigDecimal amount;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.pictures
+     *
+     * @mbg.generated
+     */
+    private String[] pictures;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.comment
+     *
+     * @mbg.generated
+     */
+    private String comment;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.status
+     *
+     * @mbg.generated
+     */
+    private Short status;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.handle_time
+     *
+     * @mbg.generated
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.add_time
+     *
+     * @mbg.generated
+     */
+    private LocalDateTime addTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.update_time
+     *
+     * @mbg.generated
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column litemall_aftersale.deleted
+     *
+     * @mbg.generated
+     */
+    private Boolean deleted;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.id
+     *
+     * @return the value of litemall_aftersale.id
+     *
+     * @mbg.generated
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.id
+     *
+     * @param id the value for litemall_aftersale.id
+     *
+     * @mbg.generated
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.aftersale_sn
+     *
+     * @return the value of litemall_aftersale.aftersale_sn
+     *
+     * @mbg.generated
+     */
+    public String getAftersaleSn() {
+        return aftersaleSn;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.aftersale_sn
+     *
+     * @param aftersaleSn the value for litemall_aftersale.aftersale_sn
+     *
+     * @mbg.generated
+     */
+    public void setAftersaleSn(String aftersaleSn) {
+        this.aftersaleSn = aftersaleSn;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.order_id
+     *
+     * @return the value of litemall_aftersale.order_id
+     *
+     * @mbg.generated
+     */
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.order_id
+     *
+     * @param orderId the value for litemall_aftersale.order_id
+     *
+     * @mbg.generated
+     */
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.user_id
+     *
+     * @return the value of litemall_aftersale.user_id
+     *
+     * @mbg.generated
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.user_id
+     *
+     * @param userId the value for litemall_aftersale.user_id
+     *
+     * @mbg.generated
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.type
+     *
+     * @return the value of litemall_aftersale.type
+     *
+     * @mbg.generated
+     */
+    public Short getType() {
+        return type;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.type
+     *
+     * @param type the value for litemall_aftersale.type
+     *
+     * @mbg.generated
+     */
+    public void setType(Short type) {
+        this.type = type;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.reason
+     *
+     * @return the value of litemall_aftersale.reason
+     *
+     * @mbg.generated
+     */
+    public String getReason() {
+        return reason;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.reason
+     *
+     * @param reason the value for litemall_aftersale.reason
+     *
+     * @mbg.generated
+     */
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.amount
+     *
+     * @return the value of litemall_aftersale.amount
+     *
+     * @mbg.generated
+     */
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.amount
+     *
+     * @param amount the value for litemall_aftersale.amount
+     *
+     * @mbg.generated
+     */
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.pictures
+     *
+     * @return the value of litemall_aftersale.pictures
+     *
+     * @mbg.generated
+     */
+    public String[] getPictures() {
+        return pictures;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.pictures
+     *
+     * @param pictures the value for litemall_aftersale.pictures
+     *
+     * @mbg.generated
+     */
+    public void setPictures(String[] pictures) {
+        this.pictures = pictures;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.comment
+     *
+     * @return the value of litemall_aftersale.comment
+     *
+     * @mbg.generated
+     */
+    public String getComment() {
+        return comment;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.comment
+     *
+     * @param comment the value for litemall_aftersale.comment
+     *
+     * @mbg.generated
+     */
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.status
+     *
+     * @return the value of litemall_aftersale.status
+     *
+     * @mbg.generated
+     */
+    public Short getStatus() {
+        return status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.status
+     *
+     * @param status the value for litemall_aftersale.status
+     *
+     * @mbg.generated
+     */
+    public void setStatus(Short status) {
+        this.status = status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.handle_time
+     *
+     * @return the value of litemall_aftersale.handle_time
+     *
+     * @mbg.generated
+     */
+    public LocalDateTime getHandleTime() {
+        return handleTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.handle_time
+     *
+     * @param handleTime the value for litemall_aftersale.handle_time
+     *
+     * @mbg.generated
+     */
+    public void setHandleTime(LocalDateTime handleTime) {
+        this.handleTime = handleTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.add_time
+     *
+     * @return the value of litemall_aftersale.add_time
+     *
+     * @mbg.generated
+     */
+    public LocalDateTime getAddTime() {
+        return addTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.add_time
+     *
+     * @param addTime the value for litemall_aftersale.add_time
+     *
+     * @mbg.generated
+     */
+    public void setAddTime(LocalDateTime addTime) {
+        this.addTime = addTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.update_time
+     *
+     * @return the value of litemall_aftersale.update_time
+     *
+     * @mbg.generated
+     */
+    public LocalDateTime getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.update_time
+     *
+     * @param updateTime the value for litemall_aftersale.update_time
+     *
+     * @mbg.generated
+     */
+    public void setUpdateTime(LocalDateTime updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    public void andLogicalDeleted(boolean deleted) {
+        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column litemall_aftersale.deleted
+     *
+     * @return the value of litemall_aftersale.deleted
+     *
+     * @mbg.generated
+     */
+    public Boolean getDeleted() {
+        return deleted;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column litemall_aftersale.deleted
+     *
+     * @param deleted the value for litemall_aftersale.deleted
+     *
+     * @mbg.generated
+     */
+    public void setDeleted(Boolean deleted) {
+        this.deleted = deleted;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", IS_DELETED=").append(IS_DELETED);
+        sb.append(", NOT_DELETED=").append(NOT_DELETED);
+        sb.append(", id=").append(id);
+        sb.append(", aftersaleSn=").append(aftersaleSn);
+        sb.append(", orderId=").append(orderId);
+        sb.append(", userId=").append(userId);
+        sb.append(", type=").append(type);
+        sb.append(", reason=").append(reason);
+        sb.append(", amount=").append(amount);
+        sb.append(", pictures=").append(pictures);
+        sb.append(", comment=").append(comment);
+        sb.append(", status=").append(status);
+        sb.append(", handleTime=").append(handleTime);
+        sb.append(", addTime=").append(addTime);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", deleted=").append(deleted);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        LitemallAftersale other = (LitemallAftersale) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getAftersaleSn() == null ? other.getAftersaleSn() == null : this.getAftersaleSn().equals(other.getAftersaleSn()))
+            && (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))
+            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
+            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
+            && (this.getReason() == null ? other.getReason() == null : this.getReason().equals(other.getReason()))
+            && (this.getAmount() == null ? other.getAmount() == null : this.getAmount().equals(other.getAmount()))
+            && (Arrays.equals(this.getPictures(), other.getPictures()))
+            && (this.getComment() == null ? other.getComment() == null : this.getComment().equals(other.getComment()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getHandleTime() == null ? other.getHandleTime() == null : this.getHandleTime().equals(other.getHandleTime()))
+            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getAftersaleSn() == null) ? 0 : getAftersaleSn().hashCode());
+        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());
+        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
+        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
+        result = prime * result + ((getReason() == null) ? 0 : getReason().hashCode());
+        result = prime * result + ((getAmount() == null) ? 0 : getAmount().hashCode());
+        result = prime * result + (Arrays.hashCode(getPictures()));
+        result = prime * result + ((getComment() == null) ? 0 : getComment().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getHandleTime() == null) ? 0 : getHandleTime().hashCode());
+        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());
+        return result;
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    public enum Deleted {
+        NOT_DELETED(new Boolean("0"), "未删除"),
+        IS_DELETED(new Boolean("1"), "已删除");
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final Boolean value;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final String name;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        Deleted(Boolean value, String name) {
+            this.value = value;
+            this.name = name;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public Boolean value() {
+            return this.value;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getName() {
+            return this.name;
+        }
+    }
+
+    /**
+     * This enum was generated by MyBatis Generator.
+     * This enum corresponds to the database table litemall_aftersale
+     *
+     * @mbg.generated
+     */
+    public enum Column {
+        id("id", "id", "INTEGER", false),
+        aftersaleSn("aftersale_sn", "aftersaleSn", "VARCHAR", false),
+        orderId("order_id", "orderId", "INTEGER", false),
+        userId("user_id", "userId", "INTEGER", false),
+        type("type", "type", "SMALLINT", true),
+        reason("reason", "reason", "VARCHAR", false),
+        amount("amount", "amount", "DECIMAL", false),
+        pictures("pictures", "pictures", "VARCHAR", false),
+        comment("comment", "comment", "VARCHAR", true),
+        status("status", "status", "SMALLINT", true),
+        handleTime("handle_time", "handleTime", "TIMESTAMP", false),
+        addTime("add_time", "addTime", "TIMESTAMP", false),
+        updateTime("update_time", "updateTime", "TIMESTAMP", false),
+        deleted("deleted", "deleted", "BIT", false);
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private static final String BEGINNING_DELIMITER = "`";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private static final String ENDING_DELIMITER = "`";
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final String column;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final boolean isColumnNameDelimited;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final String javaProperty;
+
+        /**
+         * This field was generated by MyBatis Generator.
+         * This field corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        private final String jdbcType;
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String value() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getValue() {
+            return this.column;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getJavaProperty() {
+            return this.javaProperty;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getJdbcType() {
+            return this.jdbcType;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
+            this.column = column;
+            this.javaProperty = javaProperty;
+            this.jdbcType = jdbcType;
+            this.isColumnNameDelimited = isColumnNameDelimited;
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String desc() {
+            return this.getEscapedColumnName() + " DESC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String asc() {
+            return this.getEscapedColumnName() + " ASC";
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public static Column[] excludes(Column ... excludes) {
+            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
+            if (excludes != null && excludes.length > 0) {
+                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
+            }
+            return columns.toArray(new Column[]{});
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getEscapedColumnName() {
+            if (this.isColumnNameDelimited) {
+                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
+            } else {
+                return this.column;
+            }
+        }
+
+        /**
+         * This method was generated by MyBatis Generator.
+         * This method corresponds to the database table litemall_aftersale
+         *
+         * @mbg.generated
+         */
+        public String getAliasedEscapedColumnName() {
+            return this.getEscapedColumnName();
+        }
+    }
+}

ファイルの差分が大きいため隠しています
+ 2317 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAftersaleExample.java


+ 118 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAftersaleService.java

@@ -0,0 +1,118 @@
+package org.linlinjava.litemall.db.service;
+
+import com.github.pagehelper.PageHelper;
+import org.linlinjava.litemall.db.dao.LitemallAftersaleMapper;
+import org.linlinjava.litemall.db.domain.*;
+import org.linlinjava.litemall.db.util.AftersaleConstant;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Random;
+
+@Service
+public class LitemallAftersaleService {
+    @Resource
+    private LitemallAftersaleMapper aftersaleMapper;
+
+    public LitemallAftersale findById(Integer id) {
+        return aftersaleMapper.selectByPrimaryKey(id);
+    }
+
+    public List<LitemallAftersale> queryList(Integer userId, Short status, Integer page, Integer limit, String sort, String order) {
+        LitemallAftersaleExample example = new LitemallAftersaleExample();
+        LitemallAftersaleExample.Criteria criteria = example.or();
+        criteria.andUserIdEqualTo(userId);
+        if (status != null) {
+            criteria.andStatusEqualTo(status);
+        }
+        criteria.andDeletedEqualTo(false);
+        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {
+            example.setOrderByClause(sort + " " + order);
+        }
+        else{
+            example.setOrderByClause(LitemallAftersale.Column.addTime.desc());
+        }
+
+        PageHelper.startPage(page, limit);
+        return aftersaleMapper.selectByExample(example);
+    }
+
+    public List<LitemallAftersale> querySelective(Integer orderId, String aftersaleSn, Integer page, Integer limit, String sort, String order) {
+        LitemallAftersaleExample example = new LitemallAftersaleExample();
+        LitemallAftersaleExample.Criteria criteria = example.or();
+        if (orderId != null) {
+            criteria.andOrderIdEqualTo(orderId);
+        }
+        if (!StringUtils.isEmpty(aftersaleSn)) {
+            criteria.andAftersaleSnEqualTo(aftersaleSn);
+        }
+        criteria.andDeletedEqualTo(false);
+        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {
+            example.setOrderByClause(sort + " " + order);
+        }
+        else{
+            example.setOrderByClause(LitemallAftersale.Column.addTime.desc());
+        }
+
+        PageHelper.startPage(page, limit);
+        return aftersaleMapper.selectByExample(example);
+    }
+
+    private String getRandomNum(Integer num) {
+        String base = "0123456789";
+        Random random = new Random();
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < num; i++) {
+            int number = random.nextInt(base.length());
+            sb.append(base.charAt(number));
+        }
+        return sb.toString();
+    }
+
+    public int countByAftersaleSn(Integer userId, String aftersaleSn) {
+        LitemallAftersaleExample example = new LitemallAftersaleExample();
+        example.or().andUserIdEqualTo(userId).andAftersaleSnEqualTo(aftersaleSn).andDeletedEqualTo(false);
+        return (int) aftersaleMapper.countByExample(example);
+    }
+
+    public int countByOrderIdWithoutReject(Integer userId, Integer orderId) {
+        LitemallAftersaleExample example = new LitemallAftersaleExample();
+        example.or().andUserIdEqualTo(userId).andOrderIdEqualTo(orderId).andStatusNotEqualTo(AftersaleConstant.STATUS_REJECT).andDeletedEqualTo(false);
+        return (int) aftersaleMapper.countByExample(example);
+    }
+
+    // TODO 这里应该产生一个唯一的编号,但是实际上这里仍然存在两个售后编号相同的可能性
+    public String generateAftersaleSn(Integer userId) {
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
+        String now = df.format(LocalDate.now());
+        String aftersaleSn = now + getRandomNum(6);
+        while (countByAftersaleSn(userId, aftersaleSn) != 0) {
+            aftersaleSn = now + getRandomNum(6);
+        }
+        return aftersaleSn;
+    }
+
+    public void add(LitemallAftersale aftersale) {
+        aftersale.setAddTime(LocalDateTime.now());
+        aftersale.setUpdateTime(LocalDateTime.now());
+        aftersaleMapper.insertSelective(aftersale);
+    }
+
+    public void deleteByIds(List<Integer> ids) {
+        LitemallAftersaleExample example = new LitemallAftersaleExample();
+        example.or().andIdIn(ids).andDeletedEqualTo(false);
+        LitemallAftersale aftersale = new LitemallAftersale();
+        aftersale.setUpdateTime(LocalDateTime.now());
+        aftersale.setDeleted(true);
+        aftersaleMapper.updateByExampleSelective(aftersale, example);
+    }
+
+    public void deleteById(Integer id) {
+        aftersaleMapper.logicalDeleteByPrimaryKey(id);
+    }
+}

+ 8 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/util/AftersaleConstant.java

@@ -0,0 +1,8 @@
+package org.linlinjava.litemall.db.util;
+
+public class AftersaleConstant {
+    public static final Short STATUS_REQUEST = 0;
+    public static final Short STATUS_HANDLE = 1;
+    public static final Short STATUS_FINISH = 2;
+    public static final Short STATUS_REJECT = 3;
+}

+ 8 - 0
litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderHandleOption.java

@@ -8,6 +8,7 @@ public class OrderHandleOption {
     private boolean confirm = false;    // 确认收货操作
     private boolean refund = false;     // 取消订单并退款操作
     private boolean rebuy = false;        // 再次购买
+    private boolean aftersale = false;        // 售后操作
 
     public boolean isCancel() {
         return cancel;
@@ -65,4 +66,11 @@ public class OrderHandleOption {
         this.rebuy = rebuy;
     }
 
+    public boolean isAftersale() {
+        return aftersale;
+    }
+
+    public void setAftersale(boolean aftersale) {
+        this.aftersale = aftersale;
+    }
 }

+ 3 - 9
litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java

@@ -31,9 +31,6 @@ public class OrderUtil {
     public static final Short STATUS_REFUND = 202;
     public static final Short STATUS_REFUND_CONFIRM = 203;
     public static final Short STATUS_AUTO_CONFIRM = 402;
-    public static final Short STATUS_PAY_GROUPON = 200;
-    public static final Short STATUS_TIMEOUT_GROUPON = 204;
-
 
     public static String orderStatusText(LitemallOrder order) {
         int status = order.getOrderStatus().intValue();
@@ -50,10 +47,6 @@ public class OrderUtil {
             return "已取消(系统)";
         }
 
-        if (status == 200) {
-            return "已付款团购";
-        }
-
         if (status == 201) {
             return "已付款";
         }
@@ -97,7 +90,7 @@ public class OrderUtil {
         } else if (status == 102 || status == 103) {
             // 如果订单已经取消或是已完成,则可删除
             handleOption.setDelete(true);
-        } else if (status == 200 || status == 201) {
+        } else if (status == 201) {
             // 如果订单已付款,没有发货,则可退款
             handleOption.setRefund(true);
         } else if (status == 202 || status == 204) {
@@ -110,10 +103,11 @@ public class OrderUtil {
             // 此时不能取消订单
             handleOption.setConfirm(true);
         } else if (status == 401 || status == 402) {
-            // 如果订单已经支付,且已经收货,则可删除、去评论和再次购买
+            // 如果订单已经支付,且已经收货,则可删除、去评论、申请售后和再次购买
             handleOption.setDelete(true);
             handleOption.setComment(true);
             handleOption.setRebuy(true);
+            handleOption.setAftersale(true);
         } else {
             throw new IllegalStateException("status不支持");
         }

+ 577 - 0
litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallAftersaleMapper.xml

@@ -0,0 +1,577 @@
+<?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="org.linlinjava.litemall.db.dao.LitemallAftersaleMapper">
+  <resultMap id="BaseResultMap" type="org.linlinjava.litemall.db.domain.LitemallAftersale">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="aftersale_sn" jdbcType="VARCHAR" property="aftersaleSn" />
+    <result column="order_id" jdbcType="INTEGER" property="orderId" />
+    <result column="user_id" jdbcType="INTEGER" property="userId" />
+    <result column="type" jdbcType="SMALLINT" property="type" />
+    <result column="reason" jdbcType="VARCHAR" property="reason" />
+    <result column="amount" jdbcType="DECIMAL" property="amount" />
+    <result column="pictures" jdbcType="VARCHAR" property="pictures" typeHandler="org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler" />
+    <result column="comment" jdbcType="VARCHAR" property="comment" />
+    <result column="status" jdbcType="SMALLINT" property="status" />
+    <result column="handle_time" jdbcType="TIMESTAMP" property="handleTime" />
+    <result column="add_time" jdbcType="TIMESTAMP" property="addTime" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="deleted" jdbcType="BIT" property="deleted" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+            <foreach collection="criteria.picturesCriteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+            <foreach collection="criteria.picturesCriteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    id, aftersale_sn, order_id, user_id, `type`, reason, amount, pictures, `comment`, 
+    `status`, handle_time, add_time, update_time, deleted
+  </sql>
+  <select id="selectByExample" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersaleExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <if test="example.distinct">
+      distinct
+    </if>
+    <choose>
+      <when test="selective != null and selective.length &gt; 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from litemall_aftersale
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <select id="selectByPrimaryKeyWithLogicalDelete" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from litemall_aftersale
+    where id = #{id,jdbcType=INTEGER}
+      and deleted = 
+    <choose>
+      <when test="andLogicalDeleted">
+        1
+      </when>
+      <otherwise>
+        0
+      </otherwise>
+    </choose>
+  </select>
+  <select id="selectByPrimaryKeySelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length &gt; 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from litemall_aftersale
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    delete from litemall_aftersale
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersaleExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    delete from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersale">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
+    insert into litemall_aftersale (aftersale_sn, order_id, user_id, 
+      `type`, reason, amount, 
+      pictures, 
+      `comment`, `status`, handle_time, 
+      add_time, update_time, deleted
+      )
+    values (#{aftersaleSn,jdbcType=VARCHAR}, #{orderId,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, 
+      #{type,jdbcType=SMALLINT}, #{reason,jdbcType=VARCHAR}, #{amount,jdbcType=DECIMAL}, 
+      #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, 
+      #{comment,jdbcType=VARCHAR}, #{status,jdbcType=SMALLINT}, #{handleTime,jdbcType=TIMESTAMP}, 
+      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersale">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
+    insert into litemall_aftersale
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="aftersaleSn != null">
+        aftersale_sn,
+      </if>
+      <if test="orderId != null">
+        order_id,
+      </if>
+      <if test="userId != null">
+        user_id,
+      </if>
+      <if test="type != null">
+        `type`,
+      </if>
+      <if test="reason != null">
+        reason,
+      </if>
+      <if test="amount != null">
+        amount,
+      </if>
+      <if test="pictures != null">
+        pictures,
+      </if>
+      <if test="comment != null">
+        `comment`,
+      </if>
+      <if test="status != null">
+        `status`,
+      </if>
+      <if test="handleTime != null">
+        handle_time,
+      </if>
+      <if test="addTime != null">
+        add_time,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="aftersaleSn != null">
+        #{aftersaleSn,jdbcType=VARCHAR},
+      </if>
+      <if test="orderId != null">
+        #{orderId,jdbcType=INTEGER},
+      </if>
+      <if test="userId != null">
+        #{userId,jdbcType=INTEGER},
+      </if>
+      <if test="type != null">
+        #{type,jdbcType=SMALLINT},
+      </if>
+      <if test="reason != null">
+        #{reason,jdbcType=VARCHAR},
+      </if>
+      <if test="amount != null">
+        #{amount,jdbcType=DECIMAL},
+      </if>
+      <if test="pictures != null">
+        #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},
+      </if>
+      <if test="comment != null">
+        #{comment,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=SMALLINT},
+      </if>
+      <if test="handleTime != null">
+        #{handleTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="addTime != null">
+        #{addTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=BIT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersaleExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select count(*) from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=INTEGER},
+      </if>
+      <if test="record.aftersaleSn != null">
+        aftersale_sn = #{record.aftersaleSn,jdbcType=VARCHAR},
+      </if>
+      <if test="record.orderId != null">
+        order_id = #{record.orderId,jdbcType=INTEGER},
+      </if>
+      <if test="record.userId != null">
+        user_id = #{record.userId,jdbcType=INTEGER},
+      </if>
+      <if test="record.type != null">
+        `type` = #{record.type,jdbcType=SMALLINT},
+      </if>
+      <if test="record.reason != null">
+        reason = #{record.reason,jdbcType=VARCHAR},
+      </if>
+      <if test="record.amount != null">
+        amount = #{record.amount,jdbcType=DECIMAL},
+      </if>
+      <if test="record.pictures != null">
+        pictures = #{record.pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},
+      </if>
+      <if test="record.comment != null">
+        `comment` = #{record.comment,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        `status` = #{record.status,jdbcType=SMALLINT},
+      </if>
+      <if test="record.handleTime != null">
+        handle_time = #{record.handleTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.addTime != null">
+        add_time = #{record.addTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.deleted != null">
+        deleted = #{record.deleted,jdbcType=BIT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale
+    set id = #{record.id,jdbcType=INTEGER},
+      aftersale_sn = #{record.aftersaleSn,jdbcType=VARCHAR},
+      order_id = #{record.orderId,jdbcType=INTEGER},
+      user_id = #{record.userId,jdbcType=INTEGER},
+      `type` = #{record.type,jdbcType=SMALLINT},
+      reason = #{record.reason,jdbcType=VARCHAR},
+      amount = #{record.amount,jdbcType=DECIMAL},
+      pictures = #{record.pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},
+      `comment` = #{record.comment,jdbcType=VARCHAR},
+      `status` = #{record.status,jdbcType=SMALLINT},
+      handle_time = #{record.handleTime,jdbcType=TIMESTAMP},
+      add_time = #{record.addTime,jdbcType=TIMESTAMP},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      deleted = #{record.deleted,jdbcType=BIT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersale">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale
+    <set>
+      <if test="aftersaleSn != null">
+        aftersale_sn = #{aftersaleSn,jdbcType=VARCHAR},
+      </if>
+      <if test="orderId != null">
+        order_id = #{orderId,jdbcType=INTEGER},
+      </if>
+      <if test="userId != null">
+        user_id = #{userId,jdbcType=INTEGER},
+      </if>
+      <if test="type != null">
+        `type` = #{type,jdbcType=SMALLINT},
+      </if>
+      <if test="reason != null">
+        reason = #{reason,jdbcType=VARCHAR},
+      </if>
+      <if test="amount != null">
+        amount = #{amount,jdbcType=DECIMAL},
+      </if>
+      <if test="pictures != null">
+        pictures = #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},
+      </if>
+      <if test="comment != null">
+        `comment` = #{comment,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        `status` = #{status,jdbcType=SMALLINT},
+      </if>
+      <if test="handleTime != null">
+        handle_time = #{handleTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="addTime != null">
+        add_time = #{addTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=BIT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersale">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale
+    set aftersale_sn = #{aftersaleSn,jdbcType=VARCHAR},
+      order_id = #{orderId,jdbcType=INTEGER},
+      user_id = #{userId,jdbcType=INTEGER},
+      `type` = #{type,jdbcType=SMALLINT},
+      reason = #{reason,jdbcType=VARCHAR},
+      amount = #{amount,jdbcType=DECIMAL},
+      pictures = #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},
+      `comment` = #{comment,jdbcType=VARCHAR},
+      `status` = #{status,jdbcType=SMALLINT},
+      handle_time = #{handleTime,jdbcType=TIMESTAMP},
+      add_time = #{addTime,jdbcType=TIMESTAMP},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      deleted = #{deleted,jdbcType=BIT}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <select id="selectOneByExample" parameterType="org.linlinjava.litemall.db.domain.LitemallAftersaleExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <include refid="Base_Column_List" />
+    from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+    limit 1
+  </select>
+  <select id="selectOneByExampleSelective" parameterType="map" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <choose>
+      <when test="selective != null and selective.length &gt; 0">
+        <foreach collection="selective" item="column" separator=",">
+          ${column.aliasedEscapedColumnName}
+        </foreach>
+      </when>
+      <otherwise>
+        <include refid="Base_Column_List" />
+      </otherwise>
+    </choose>
+    from litemall_aftersale
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+    <if test="example.orderByClause != null">
+      order by ${example.orderByClause}
+    </if>
+    limit 1
+  </select>
+  <update id="logicalDeleteByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale set deleted = 1
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="logicalDeleteByPrimaryKey" parameterType="java.lang.Integer">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update litemall_aftersale set deleted = 1
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>