UserMapper.java 11.7 KB
package com.uccc.admin.mapper;

import com.uccc.admin.domain.Store;
import com.uccc.pretty.common.User;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

/**
 * Created by bert on 2021-09-11 10:50
 */
public interface UserMapper {
    static final String TABLE_NAME = "users";
    static final String Store = "store";

    @Select({"<script>",
            "SELECT * FROM " + TABLE_NAME,
            "WHERE 1=1",
            "<when test='user.id!=null'>",
            "AND id = #{user.id}" ,
            "</when>",
            "<when test='user.account!=null'>",
            "AND account = #{user.account}" ,
            "</when>",
            "<when test='user.name!=null'>",
            "AND name = #{user.name}",
            "</when>",
            "<when test='user.password!=null'>",
            "AND password = #{user.password}",
            "</when>",
            "<when test='user.phone!=null'>",
            "AND phone = #{user.phone}",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            "AND admin_level = #{user.adminLevel}",
            "</when>",
            "<when test='user.storeId!=null'>",
            "AND store_id = #{user.storeId}",
            "</when>",
            "<when test='user.address!=null'>",
            "AND address = #{user.address}",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            "AND last_login_time = #{user.lastLoginTime}",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            "AND last_login_ip = #{user.lastLoginIp}",
            "</when>",
            "<when test='user.qq!=null'>",
            "AND qq = #{user.qq}",
            "</when>",
            "<when test='user.weChat!=null'>",
            "AND we_chat = #{user.weChat}",
            "</when>",
            "<when test='user.status!=null'>",
            "AND status = #{user.status}",
            "</when>",
            "AND delete = 0",
            "LIMIT 1",
            "</script>"
    })
    User selectUserByCondition(@Param("user")User user);

    @Update({
            "<script>",
            "UPDATE " + TABLE_NAME + " SET uts = now()",
            "<when test='user.account!=null'>",
            ",account = #{user.account}" ,
            "</when>",
            "<when test='user.name!=null'>",
            ",name = #{user.name}",
            "</when>",
            "<when test='user.password!=null'>",
            ",password = #{user.password}",
            "</when>",
            "<when test='user.phone!=null'>",
            ",phone = #{user.phone}",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            ",admin_level = #{user.adminLevel}",
            "</when>",
            "<when test='user.storeId!=null'>",
            ",store_id = #{user.storeId}",
            "</when>",
            "<when test='user.address!=null'>",
            ",address = #{user.address}",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            ",last_login_time = #{user.lastLoginTime}",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            ",last_login_ip = #{user.lastLoginIp}",
            "</when>",
            "<when test='user.qq!=null'>",
            ",qq = #{user.qq}",
            "</when>",
            "<when test='user.weChat!=null'>",
            ",we_chat = #{user.weChat}",
            "</when>",
            "<when test='user.status!=null'>",
            ",status = #{user.status}",
            "</when>",
            "where id = #{user.id}",
            "</script>"
    })
    int updateUser(@Param("user") User user);

    @Select({"<script>",
            "SELECT * FROM " + TABLE_NAME,
            "WHERE 1=1",
            "<when test='user.id!=null'>",
            "AND id = #{user.id}" ,
            "</when>",
            "<when test='user.account!=null'>",
            "AND account = #{user.account}" ,
            "</when>",
            "<when test='user.name!=null'>",
            "AND name = #{user.name}",
            "</when>",
            "<when test='user.password!=null'>",
            "AND password = #{user.password}",
            "</when>",
            "<when test='user.phone!=null'>",
            "AND phone = #{user.phone}",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            "AND admin_level = #{user.adminLevel}",
            "</when>",
            "<when test='user.storeId!=null'>",
            "AND store_id = #{user.storeId}",
            "</when>",
            "<when test='user.address!=null'>",
            "AND address = #{user.address}",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            "AND last_login_time = #{user.lastLoginTime}",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            "AND last_login_ip = #{user.lastLoginIp}",
            "</when>",
            "<when test='user.qq!=null'>",
            "AND qq = #{user.qq}",
            "</when>",
            "<when test='user.weChat!=null'>",
            "AND we_chat = #{user.weChat}",
            "</when>",
            "<when test='user.status!=null'>",
            "AND status = #{user.status}",
            "</when>",
            "<when test='user.delete!=null'>",
            "AND delete = #{user.delete}",
            "</when>",
            "<when test='user.keywords!=null'>",
            "AND (name like concat('%',#{user.keywords},'%') OR account like concat('%',#{user.keywords},'%') OR phone like concat('%',#{user.keywords},'%') OR qq like concat('%',#{user.keywords},'%') OR we_chat like concat('%',#{user.keywords},'%'))",
            "</when>",
            "order by cts DESC",
            "<when test='user.limit!=null'>",
            "limit #{user.limit}",
            "</when>",
            "<when test='user.page!=null'>",
            "offset #{user.page}",
            "</when>",

            "</script>"
    })
    List<User> selectUserListByCondition(@Param("user") User user);

    @Select({
            "<script>",
            "select count(id) from " + TABLE_NAME,
            "where account = #{account}",
            "</script>",
    })
    int checkAccountRepeat(@Param("account") String account);

    @Insert({
            "<script>",
            "insert into " + TABLE_NAME + " (",
            "<when test='user.account!=null'>",
            "account" ,
            "</when>",
            "<when test='user.name!=null'>",
            ",name",
            "</when>",
            "<when test='user.password!=null'>",
            ",password",
            "</when>",
            "<when test='user.phone!=null'>",
            ",phone",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            ",admin_level",
            "</when>",
            "<when test='user.storeId!=null'>",
            ",store_id",
            "</when>",
            "<when test='user.address!=null'>",
            ",address",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            ",last_login_time",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            ",last_login_ip",
            "</when>",
            "<when test='user.qq!=null'>",
            ",qq",
            "</when>",
            "<when test='user.weChat!=null'>",
            ",we_chat",
            "</when>",
            "<when test='user.status!=null'>",
            ",status",
            "</when>",
            "<when test='user.delete!=null'>",
            ",delete",
            "</when>",
            "<when test='user.cts!=null'>",
            ",cts",
            "</when>",
            "<when test='user.uts!=null'>",
            ",uts",
            "</when>",
            ")",
            "values" + " (",
            "<when test='user.account!=null'>",
            "#{user.account}" ,
            "</when>",
            "<when test='user.name!=null'>",
            ",#{user.name}",
            "</when>",
            "<when test='user.password!=null'>",
            ",#{user.password}",
            "</when>",
            "<when test='user.phone!=null'>",
            ",#{user.phone}",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            ",#{user.adminLevel}",
            "</when>",
            "<when test='user.storeId!=null'>",
            ",#{user.storeId}",
            "</when>",
            "<when test='user.address!=null'>",
            ",#{user.address}",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            ",#{user.lastLoginTime}",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            ",#{user.lastLoginIp}",
            "</when>",
            "<when test='user.qq!=null'>",
            ",#{user.qq}",
            "</when>",
            "<when test='user.weChat!=null'>",
            ",#{user.weChat}",
            "</when>",
            "<when test='user.status!=null'>",
            ",#{user.status}",
            "</when>",
            "<when test='user.delete!=null'>",
            ",#{user.delete}",
            "</when>",
            "<when test='user.cts!=null'>",
            ",#{user.cts}",
            "</when>",
            "<when test='user.uts!=null'>",
            ",#{user.uts}",
            "</when>",
            ")",
            "</script>"
    })
    int createUser(@Param("user") User user);

    @Update({
            "<script>",
            "UPDATE " + TABLE_NAME + " SET uts = now()",
            ", delete = 1 where id = #{user.id}",
            "</script>"
    })
    int deleteUserByUserId(@Param("user") User user);


    @Select({"<script>",
            "SELECT count(id) FROM " + TABLE_NAME,
            "WHERE 1=1",
            "<when test='user.id!=null'>",
            "AND id = #{user.id}" ,
            "</when>",
            "<when test='user.account!=null'>",
            "AND account = #{user.account}" ,
            "</when>",
            "<when test='user.name!=null'>",
            "AND name = #{user.name}",
            "</when>",
            "<when test='user.password!=null'>",
            "AND password = #{user.password}",
            "</when>",
            "<when test='user.phone!=null'>",
            "AND phone = #{user.phone}",
            "</when>",
            "<when test='user.adminLevel!=null'>",
            "AND admin_level = #{user.adminLevel}",
            "</when>",
            "<when test='user.storeId!=null'>",
            "AND store_id = #{user.storeId}",
            "</when>",
            "<when test='user.address!=null'>",
            "AND address = #{user.address}",
            "</when>",
            "<when test='user.lastLoginTime!=null'>",
            "AND last_login_time = #{user.lastLoginTime}",
            "</when>",
            "<when test='user.lastLoginIp!=null'>",
            "AND last_login_ip = #{user.lastLoginIp}",
            "</when>",
            "<when test='user.qq!=null'>",
            "AND qq = #{user.qq}",
            "</when>",
            "<when test='user.weChat!=null'>",
            "AND we_chat = #{user.weChat}",
            "</when>",
            "<when test='user.status!=null'>",
            "AND status = #{user.status}",
            "</when>",
            "<when test='user.delete!=null'>",
            "AND delete = #{user.delete}",
            "</when>",
            "<when test='user.keywords!=null'>",
            "AND (name like concat('%',#{user.keywords},'%') OR account like concat('%',#{user.keywords},'%') OR phone like concat('%',#{user.keywords},'%') OR qq like concat('%',#{user.keywords},'%') OR we_chat like concat('%',#{user.keywords},'%'))",
            "</when>",
            "</script>"
    })
    int selectUserListCountByCondition(@Param("user") User user);

    @Select({
            "<script>",
            "select * from " + Store,
            "where id = #{id}",
            "</script>"
    })
    Store checkStoreByMid(@Param("id") Long id);
}