Ver Fonte

增加service层基础查询方法自动生成,支持快速多条件分页查询;增加企业,企业客户基础查询接口

MOKASZ\wzk12044 há 5 anos atrás
pai
commit
7e993fcf59

+ 21 - 17
src/main/java/com/mokamrp/privates/controller/CorpController.java

@@ -1,18 +1,18 @@
 package com.mokamrp.privates.controller;
 
 
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.mokamrp.privates.mapper.pojo.Corp;
-import com.mokamrp.privates.service.CorpService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.service.CorpService;
+import com.mokamrp.privates.mapper.pojo.Corp;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.entity.IndexHandle;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
 
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.constraints.NotBlank;
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -20,21 +20,25 @@ import java.util.List;
  * 企业 前端控制器
  * </p>
  *
- * @author chenlongfei
- * @since 2021-04-12
+ * @author leon
+ * @since 2021-04-19
  */
-@CrossOrigin
 @RestController
 @RequestMapping("/corp")
 public class CorpController {
 
     @Autowired
-    private CorpService corpService;
-
-    @RequestMapping("/getCorpById")
-    public Object getCorpById(String id){
-        List<Corp> list=corpService.selectList(new EntityWrapper<Corp>().eq("id",id));
-        return list;
+    public CorpService corpService;
+
+    /**
+     * 基础查询方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    @PostMapping("/index")
+    public Object index(@Valid @RequestBody IndexHandle indexHandle){
+        IndexBaseRes<Corp> res = corpService.base(indexHandle);
+        return AjaxResult.success("success",res);
     }
 }
 

+ 44 - 0
src/main/java/com/mokamrp/privates/controller/WorkContactController.java

@@ -0,0 +1,44 @@
+package com.mokamrp.privates.controller;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.service.WorkContactService;
+import com.mokamrp.privates.mapper.pojo.WorkContact;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.entity.IndexHandle;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+import org.springframework.web.bind.annotation.RestController;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 联系人表(客户列表) 前端控制器
+ * </p>
+ *
+ * @author leon
+ * @since 2021-04-19
+ */
+@RestController
+@RequestMapping("/workContact")
+public class WorkContactController {
+
+    @Autowired
+    public WorkContactService workContactService;
+
+    /**
+     * 基础查询方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    @PostMapping("/index")
+    public Object index(@Valid @RequestBody IndexHandle indexHandle){
+        IndexBaseRes<WorkContact> res = workContactService.base(indexHandle);
+        return AjaxResult.success("success",res);
+    }
+}
+

+ 29 - 0
src/main/java/com/mokamrp/privates/entity/IndexHandle.java

@@ -0,0 +1,29 @@
+package com.mokamrp.privates.entity;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+
+@Data
+public class IndexHandle {
+    //.@leon 分页页码
+    @NotNull(message = "offset null")
+    private Integer offset = 1;
+
+    //.@leon 分页每页数量
+    @NotNull(message = "limit null")
+    private Integer limit = 10;
+
+    //.@leon 条件字段
+    private Map<String,Object> filter;
+
+    //.@leon 条件类型 =,like
+    private Map<String,String> op;
+
+    //.@leon 排序 asc,desc
+    private String order;
+
+    //.@leon 排序字段
+    private String sort;
+}

+ 2 - 2
src/main/java/com/mokamrp/privates/mapper/CorpMapper.java

@@ -8,8 +8,8 @@ import com.baomidou.mybatisplus.mapper.BaseMapper;
  * 企业 Mapper 接口
  * </p>
  *
- * @author chenlongfei
- * @since 2021-04-12
+ * @author leon
+ * @since 2021-04-19
  */
 public interface CorpMapper extends BaseMapper<Corp> {
 

+ 16 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactMapper.java

@@ -0,0 +1,16 @@
+package com.mokamrp.privates.mapper;
+
+import com.mokamrp.privates.mapper.pojo.WorkContact;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 联系人表(客户列表) Mapper 接口
+ * </p>
+ *
+ * @author leon
+ * @since 2021-04-19
+ */
+public interface WorkContactMapper extends BaseMapper<WorkContact> {
+
+}

+ 35 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactMapper.xml

@@ -0,0 +1,35 @@
+<?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="com.mokamrp.privates.mapper.WorkContactMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.WorkContact">
+        <id column="id" property="id" />
+        <result column="corp_id" property="corpId" />
+        <result column="wx_external_userid" property="wxExternalUserid" />
+        <result column="name" property="name" />
+        <result column="nick_name" property="nickName" />
+        <result column="avatar" property="avatar" />
+        <result column="follow_up_status" property="followUpStatus" />
+        <result column="type" property="type" />
+        <result column="gender" property="gender" />
+        <result column="unionid" property="unionid" />
+        <result column="position" property="position" />
+        <result column="corp_name" property="corpName" />
+        <result column="corp_full_name" property="corpFullName" />
+        <result column="external_profile" property="externalProfile" />
+        <result column="business_no" property="businessNo" />
+        <result column="created_at" property="createdAt" />
+        <result column="updated_at" property="updatedAt" />
+        <result column="deleted_at" property="deletedAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, corp_id, wx_external_userid, name, nick_name, avatar, follow_up_status, type, gender, unionid, position, corp_name, corp_full_name, external_profile, business_no, created_at, updated_at, deleted_at
+    </sql>
+
+</mapper>

+ 2 - 2
src/main/java/com/mokamrp/privates/mapper/pojo/Corp.java

@@ -14,8 +14,8 @@ import java.io.Serializable;
  * 企业
  * </p>
  *
- * @author chenlongfei
- * @since 2021-04-12
+ * @author leon
+ * @since 2021-04-19
  */
 @TableName("mc_corp")
 public class Corp extends Model<Corp> {

+ 19 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/IndexBaseRes.java

@@ -0,0 +1,19 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 基础查询方法 实体类
+ * @author leon
+ * @since 1949-10-01
+ */
+@Data
+public class IndexBaseRes<T> {
+
+    private Integer total;
+
+    private List<T> list;
+
+}

+ 262 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/WorkContact.java

@@ -0,0 +1,262 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 联系人表(客户列表)
+ * </p>
+ *
+ * @author leon
+ * @since 2021-04-19
+ */
+@TableName("mc_work_contact")
+public class WorkContact extends Model<WorkContact> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 企业表ID(mc_crop.id)
+     */
+    private Integer corpId;
+    /**
+     * 外部联系人external_userid
+     */
+    private String wxExternalUserid;
+    /**
+     * 外部联系人姓名
+     */
+    private String name;
+    /**
+     * 外部联系人昵称
+     */
+    private String nickName;
+    /**
+     * 外部联系人的头像
+     */
+    private String avatar;
+    /**
+     * 跟进状态(1.未跟进 2.跟进中 3.已拒绝 4.已成交 5.已复购)
+     */
+    private Integer followUpStatus;
+    /**
+     * 外部联系人的类型,1表示该外部联系人是微信用户,2表示该外部联系人是企业微信用户
+     */
+    private Integer type;
+    /**
+     * 外部联系人性别 0-未知 1-男性 2-女性
+     */
+    private Integer gender;
+    /**
+     * 外部联系人在微信开放平台的唯一身份标识(微信unionid)
+     */
+    private String unionid;
+    /**
+     * 外部联系人的职位,如果外部企业或用户选择隐藏职位,则不返回,仅当联系人类型是企业微信用户时有此字段
+
+     */
+    private String position;
+    /**
+     * 外部联系人所在企业的简称,仅当联系人类型是企业微信用户时有此字段
+
+     */
+    private String corpName;
+    /**
+     * 外部联系人所在企业的主体名称
+     */
+    private String corpFullName;
+    /**
+     * 外部联系人的自定义展示信息
+     */
+    private String externalProfile;
+    /**
+     * 外部联系人编号
+     */
+    private String businessNo;
+    private Date createdAt;
+    private Date updatedAt;
+    private Date deletedAt;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getCorpId() {
+        return corpId;
+    }
+
+    public void setCorpId(Integer corpId) {
+        this.corpId = corpId;
+    }
+
+    public String getWxExternalUserid() {
+        return wxExternalUserid;
+    }
+
+    public void setWxExternalUserid(String wxExternalUserid) {
+        this.wxExternalUserid = wxExternalUserid;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public Integer getFollowUpStatus() {
+        return followUpStatus;
+    }
+
+    public void setFollowUpStatus(Integer followUpStatus) {
+        this.followUpStatus = followUpStatus;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getUnionid() {
+        return unionid;
+    }
+
+    public void setUnionid(String unionid) {
+        this.unionid = unionid;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getCorpName() {
+        return corpName;
+    }
+
+    public void setCorpName(String corpName) {
+        this.corpName = corpName;
+    }
+
+    public String getCorpFullName() {
+        return corpFullName;
+    }
+
+    public void setCorpFullName(String corpFullName) {
+        this.corpFullName = corpFullName;
+    }
+
+    public String getExternalProfile() {
+        return externalProfile;
+    }
+
+    public void setExternalProfile(String externalProfile) {
+        this.externalProfile = externalProfile;
+    }
+
+    public String getBusinessNo() {
+        return businessNo;
+    }
+
+    public void setBusinessNo(String businessNo) {
+        this.businessNo = businessNo;
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Date getDeletedAt() {
+        return deletedAt;
+    }
+
+    public void setDeletedAt(Date deletedAt) {
+        this.deletedAt = deletedAt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "WorkContact{" +
+        ", id=" + id +
+        ", corpId=" + corpId +
+        ", wxExternalUserid=" + wxExternalUserid +
+        ", name=" + name +
+        ", nickName=" + nickName +
+        ", avatar=" + avatar +
+        ", followUpStatus=" + followUpStatus +
+        ", type=" + type +
+        ", gender=" + gender +
+        ", unionid=" + unionid +
+        ", position=" + position +
+        ", corpName=" + corpName +
+        ", corpFullName=" + corpFullName +
+        ", externalProfile=" + externalProfile +
+        ", businessNo=" + businessNo +
+        ", createdAt=" + createdAt +
+        ", updatedAt=" + updatedAt +
+        ", deletedAt=" + deletedAt +
+        "}";
+    }
+}

+ 11 - 3
src/main/java/com/mokamrp/privates/service/CorpService.java

@@ -2,15 +2,23 @@ package com.mokamrp.privates.service;
 
 import com.mokamrp.privates.mapper.pojo.Corp;
 import com.baomidou.mybatisplus.service.IService;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+import java.util.List;
 
 /**
  * <p>
  * 企业 服务类
  * </p>
  *
- * @author chenlongfei
- * @since 2021-04-12
+ * @author leon
+ * @since 2021-04-19
  */
 public interface CorpService extends IService<Corp> {
-
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<Corp> base(IndexHandle indexhandle);
 }

+ 24 - 0
src/main/java/com/mokamrp/privates/service/WorkContactService.java

@@ -0,0 +1,24 @@
+package com.mokamrp.privates.service;
+
+import com.mokamrp.privates.mapper.pojo.WorkContact;
+import com.baomidou.mybatisplus.service.IService;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+import java.util.List;
+
+/**
+ * <p>
+ * 联系人表(客户列表) 服务类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-04-19
+ */
+public interface WorkContactService extends IService<WorkContact> {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<WorkContact> base(IndexHandle indexhandle);
+}

+ 54 - 3
src/main/java/com/mokamrp/privates/service/impl/CorpServiceImpl.java

@@ -1,20 +1,71 @@
 package com.mokamrp.privates.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.mokamrp.privates.mapper.pojo.Corp;
 import com.mokamrp.privates.mapper.CorpMapper;
 import com.mokamrp.privates.service.CorpService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+import java.util.Iterator;
+import java.util.Map;
 
 /**
  * <p>
  * 企业 服务实现类
  * </p>
  *
- * @author chenlongfei
- * @since 2021-04-12
+ * @author leon
+ * @since 2021-04-19
  */
 @Service
 public class CorpServiceImpl extends ServiceImpl<CorpMapper, Corp> implements CorpService {
-
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<Corp> base(IndexHandle indexhandle){
+        Integer total = this.selectCount(new EntityWrapper<Corp>());
+        Iterator fileterIt = indexhandle.getFilter().entrySet().iterator();
+        Wrapper<Corp> warpper = new EntityWrapper<Corp>();
+        //.@leon where like,=,<>
+        while (fileterIt.hasNext()){
+            Map.Entry entray = (Map.Entry) fileterIt.next();
+            Object key = entray.getKey();
+            Object value = entray.getValue();
+            Map<String,String> op = indexhandle.getOp();
+            if(op.get(key) == null || op.get(key).isEmpty() || op.get(key).toString().equals("=")){
+                warpper = warpper.eq(key.toString(),value.toString());
+            }else if (op.get(key).toString().equals("like")){
+                warpper = warpper.like(key.toString(),"%"+value.toString()+"%");
+            }else if (op.get(key).toString().equals("<>")){
+                warpper = warpper.ne(key.toString(),value.toString());
+            }
+        }
+        //.@leon order
+        if (indexhandle.getOrder() != null && indexhandle.getSort() != null){
+            String order = indexhandle.getOrder();
+            String sort = indexhandle.getSort();
+            if (!order.isEmpty() && !sort.isEmpty()){
+                if (order.equals("asc")){
+                    warpper = warpper.orderBy(sort,true);
+                }else if(order.equals("desc")){
+                    warpper = warpper.orderBy(sort,false);
+                }
+            }
+        }
+        //.@leon offset limit
+        Page<Corp> page = this.selectPage(
+            new Page<Corp>(indexhandle.getOffset(),indexhandle.getLimit()),warpper
+        );
+        IndexBaseRes<Corp> result = new IndexBaseRes<Corp>();
+        result.setList(page.getRecords());
+        result.setTotal(total);
+        return result;
+    }
 }

+ 71 - 0
src/main/java/com/mokamrp/privates/service/impl/WorkContactServiceImpl.java

@@ -0,0 +1,71 @@
+package com.mokamrp.privates.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.WorkContact;
+import com.mokamrp.privates.mapper.WorkContactMapper;
+import com.mokamrp.privates.service.WorkContactService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * <p>
+ * 联系人表(客户列表) 服务实现类
+ * </p>
+ *
+ * @author leon
+ * @since 2021-04-19
+ */
+@Service
+public class WorkContactServiceImpl extends ServiceImpl<WorkContactMapper, WorkContact> implements WorkContactService {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<WorkContact> base(IndexHandle indexhandle){
+        Integer total = this.selectCount(new EntityWrapper<WorkContact>());
+        Iterator fileterIt = indexhandle.getFilter().entrySet().iterator();
+        Wrapper<WorkContact> warpper = new EntityWrapper<WorkContact>();
+        //.@leon where like,=,<>
+        while (fileterIt.hasNext()){
+            Map.Entry entray = (Map.Entry) fileterIt.next();
+            Object key = entray.getKey();
+            Object value = entray.getValue();
+            Map<String,String> op = indexhandle.getOp();
+            if(op.get(key) == null || op.get(key).isEmpty() || op.get(key).toString().equals("=")){
+                warpper = warpper.eq(key.toString(),value.toString());
+            }else if (op.get(key).toString().equals("like")){
+                warpper = warpper.like(key.toString(),"%"+value.toString()+"%");
+            }else if (op.get(key).toString().equals("<>")){
+                warpper = warpper.ne(key.toString(),value.toString());
+            }
+        }
+        //.@leon order
+        if (indexhandle.getOrder() != null && indexhandle.getSort() != null){
+            String order = indexhandle.getOrder();
+            String sort = indexhandle.getSort();
+            if (!order.isEmpty() && !sort.isEmpty()){
+                if (order.equals("asc")){
+                    warpper = warpper.orderBy(sort,true);
+                }else if(order.equals("desc")){
+                    warpper = warpper.orderBy(sort,false);
+                }
+            }
+        }
+        //.@leon offset limit
+        Page<WorkContact> page = this.selectPage(
+            new Page<WorkContact>(indexhandle.getOffset(),indexhandle.getLimit()),warpper
+        );
+        IndexBaseRes<WorkContact> result = new IndexBaseRes<WorkContact>();
+        result.setList(page.getRecords());
+        result.setTotal(total);
+        return result;
+    }
+}

+ 64 - 0
src/main/resources/template/controller.java.vm

@@ -0,0 +1,64 @@
+package ${package.Controller};
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import ${package.Service}.${table.serviceName};
+import ${package.Entity}.${entity};
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.entity.IndexHandle;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+#if(${restControllerStyle})
+import org.springframework.web.bind.annotation.RestController;
+#else
+import org.springframework.stereotype.Controller;
+#end
+#if(${superControllerClassPackage})
+import ${superControllerClassPackage};
+#end
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * $!{table.comment} 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+#if(${restControllerStyle})
+@RestController
+#else
+@Controller
+#end
+@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
+#if(${kotlin})
+class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end
+
+#else
+#if(${superControllerClass})
+public class ${table.controllerName} extends ${superControllerClass} {
+#else
+public class ${table.controllerName} {
+#end
+
+    @Autowired
+    public ${table.serviceName} ${table.entityPath}Service;
+
+    /**
+     * 基础查询方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    @PostMapping("/index")
+    public Object index(@Valid @RequestBody IndexHandle indexHandle){
+        IndexBaseRes<${entity}> res = ${table.entityPath}Service.base(indexHandle);
+        return AjaxResult.success("success",res);
+    }
+}
+
+#end

+ 28 - 0
src/main/resources/template/service.java.vm

@@ -0,0 +1,28 @@
+package ${package.Service};
+
+import ${package.Entity}.${entity};
+import ${superServiceClassPackage};
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+import java.util.List;
+
+/**
+ * <p>
+ * $!{table.comment} 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+#if(${kotlin})
+interface ${table.serviceName} : ${superServiceClass}<${entity}>
+#else
+public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<${entity}> base(IndexHandle indexhandle);
+}
+#end

+ 77 - 0
src/main/resources/template/serviceImpl.java.vm

@@ -0,0 +1,77 @@
+package ${package.ServiceImpl};
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import ${package.Entity}.${entity};
+import ${package.Mapper}.${table.mapperName};
+import ${package.Service}.${table.serviceName};
+import ${superServiceImplClassPackage};
+import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * <p>
+ * $!{table.comment} 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since ${date}
+ */
+@Service
+#if(${kotlin})
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
+
+}
+#else
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<${entity}> base(IndexHandle indexhandle){
+        Integer total = this.selectCount(new EntityWrapper<${entity}>());
+        Iterator fileterIt = indexhandle.getFilter().entrySet().iterator();
+        Wrapper<${entity}> warpper = new EntityWrapper<${entity}>();
+        //.@leon where like,=,<>
+        while (fileterIt.hasNext()){
+            Map.Entry entray = (Map.Entry) fileterIt.next();
+            Object key = entray.getKey();
+            Object value = entray.getValue();
+            Map<String,String> op = indexhandle.getOp();
+            if(op.get(key) == null || op.get(key).isEmpty() || op.get(key).toString().equals("=")){
+                warpper = warpper.eq(key.toString(),value.toString());
+            }else if (op.get(key).toString().equals("like")){
+                warpper = warpper.like(key.toString(),"%"+value.toString()+"%");
+            }else if (op.get(key).toString().equals("<>")){
+                warpper = warpper.ne(key.toString(),value.toString());
+            }
+        }
+        //.@leon order
+        if (indexhandle.getOrder() != null && indexhandle.getSort() != null){
+            String order = indexhandle.getOrder();
+            String sort = indexhandle.getSort();
+            if (!order.isEmpty() && !sort.isEmpty()){
+                if (order.equals("asc")){
+                    warpper = warpper.orderBy(sort,true);
+                }else if(order.equals("desc")){
+                    warpper = warpper.orderBy(sort,false);
+                }
+            }
+        }
+        //.@leon offset limit
+        Page<${entity}> page = this.selectPage(
+            new Page<${entity}>(indexhandle.getOffset(),indexhandle.getLimit()),warpper
+        );
+        IndexBaseRes<${entity}> result = new IndexBaseRes<${entity}>();
+        result.setList(page.getRecords());
+        result.setTotal(total);
+        return result;
+    }
+}
+#end

+ 30 - 12
src/test/java/com/mokamrp/AutoMP.java

@@ -2,15 +2,19 @@ package com.mokamrp;
 
 import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.generator.AutoGenerator;
-import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import com.baomidou.mybatisplus.generator.config.GlobalConfig;
-import com.baomidou.mybatisplus.generator.config.PackageConfig;
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
 import com.baomidou.mybatisplus.generator.config.rules.DbType;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 import org.springframework.beans.factory.annotation.Value;
 import org.junit.Test;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 public class AutoMP {
 	/**
 	 * 代码生成    示例代码
@@ -19,10 +23,11 @@ public class AutoMP {
 	@Test
 	public void  testGenerator() {
 		//1. 全局配置
+		String outPutDir = "D://project/moka-private/src/main/java";
 		GlobalConfig config = new GlobalConfig();
 		config.setActiveRecord(true) // 是否支持AR模式
 			  .setAuthor("leon") // 作者
-			  .setOutputDir("D://project/moka-private/src/main/java") // 生成路径
+			  .setOutputDir(outPutDir) // 生成路径
 			  .setFileOverride(true)  // 文件覆盖
 			  .setIdType(IdType.AUTO) // 主键策略
 			  .setServiceName("%sService")  // 设置生成的service接口的名字的首字母是否为I
@@ -41,10 +46,11 @@ public class AutoMP {
 		//3. 策略配置
 		StrategyConfig stConfig = new StrategyConfig();
 		stConfig.setCapitalMode(true) //全局大写命名
+				.setRestControllerStyle(true) //.RestController
 				.setDbColumnUnderline(true)  // 指定表名 字段名是否使用下划线
 				.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略,下划线转驼峰命名
-				.setTablePrefix("private_") //表名前缀
-				.setInclude("private_user_corp");  // 生成的表
+				.setTablePrefix("mc_") //表名前缀
+				.setInclude("mc_work_contact");  // 生成的表
 		
 		//4. 包名策略配置 
 		PackageConfig pkConfig = new PackageConfig();
@@ -54,16 +60,28 @@ public class AutoMP {
 				.setController("controller")
 				.setEntity("mapper.pojo")
 				.setXml("mapper");
-		
-		//5. 整合配置
+		//5. 注入自定义配置
+		InjectionConfig cfg = new InjectionConfig() {
+			@Override
+			public void initMap() {
+				Map<String, Object> map = new HashMap<String, Object>();
+				this.setMap(map);
+			}
+		};
+
+		//6. 整合配置
 		AutoGenerator  ag = new AutoGenerator();
-		
 		ag.setGlobalConfig(config)
 		  .setDataSource(dsConfig)
 		  .setStrategy(stConfig)
 		  .setPackageInfo(pkConfig);
-		
-		//6. 执行
+		//. @leon 自定义模板
+		TemplateConfig tc = new TemplateConfig();
+		tc.setService("/template/service.java.vm");
+		tc.setServiceImpl("/template/serviceImpl.java.vm");
+		tc.setController("/template/controller.java.vm");
+		ag.setTemplate(tc);
+		//7. 执行
 		ag.execute();
 	}