陈裕财 4 years ago
parent
commit
bfb51745db
  1. 296
      xm-core/src/main/java/com/xm/core/ctrl/XmFuncController.java
  2. 55
      xm-core/src/main/java/com/xm/core/entity/XmFunc.java
  3. 24
      xm-core/src/main/java/com/xm/core/service/XmFuncService.java
  4. 184
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmFuncMapper.xml

296
xm-core/src/main/java/com/xm/core/ctrl/XmFuncController.java

@ -0,0 +1,296 @@
package com.xm.core.ctrl;
import java.util.*;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.*;
import static com.mdp.core.utils.ResponseHelper.*;
import static com.mdp.core.utils.BaseUtils.*;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.mybatis.PageUtils;
import com.mdp.core.utils.RequestUtils;
import com.mdp.core.utils.NumberUtil;
import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.mdp.swagger.ApiEntityParams;
import springfox.documentation.annotations.ApiIgnore;
import com.xm.core.service.XmFuncService;
import com.xm.core.entity.XmFunc;
/**
* url编制采用rest风格,如对xm_func 功能模块表的操作有增删改查,对应的url分别为:<br>
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmFunc xm_func 当前主键(包括多主键): id;
***/
@RestController("xm.core.xmFuncController")
@RequestMapping(value="/**/core/xmFunc")
@Api(tags={"功能模块表操作接口"})
public class XmFuncController {
static Logger logger =LoggerFactory.getLogger(XmFuncController.class);
@Autowired
private XmFuncService xmFuncService;
Map<String,Object> fieldsMap = toMap(new XmFunc());
@ApiOperation( value = "查询功能模块表信息列表",notes=" ")
@ApiEntityParams( XmFunc.class )
@ApiImplicitParams({
@ApiImplicitParam(name="pageSize",value="每页大小,默认20条",required=false),
@ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false),
@ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false),
@ApiImplicitParam(name="count",value="是否计算总记录条数,如果count=true,则计算计算总条数,如果count=false 则不计算",required=false),
@ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student desc",required=false),
})
@ApiResponses({
@ApiResponse(code = 200,response=XmFunc.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/list",method=RequestMethod.GET)
public Map<String,Object> listXmFunc( @ApiIgnore @RequestParam Map<String,Object> xmFunc){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("查询成功");
RequestUtils.transformArray(xmFunc, "ids");
PageUtils.startPage(xmFunc);
List<Map<String,Object>> xmFuncList = xmFuncService.selectListMapByWhere(xmFunc); //列出XmFunc列表
PageUtils.responePage(m, xmFuncList);
m.put("data",xmFuncList);
m.put("tips", tips);
return m;
}
/**
@ApiOperation( value = "新增一条功能模块表信息",notes=" ")
@ApiResponses({
@ApiResponse(code = 200,response=XmFunc.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmFunc(@RequestBody XmFunc xmFunc) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
boolean createPk=false;
if(!StringUtils.hasText(xmFunc.getId())) {
createPk=true;
xmFunc.setId(xmFuncService.createKey("id"));
}
if(createPk==false){
if(xmFuncService.selectOneObject(xmFunc) !=null ){
return failed("pk-exists","编号重复,请修改编号再提交");
}
}
xmFuncService.insert(xmFunc);
m.put("data",xmFunc);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
*/
/**
@ApiOperation( value = "删除一条功能模块表信息",notes=" ")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
})
@RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmFunc(@RequestBody XmFunc xmFunc){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
if(!StringUtils.hasText(xmFunc.getId())) {
return failed("pk-not-exists","请上送主键参数id");
}
XmFunc xmFuncDb = xmFuncService.selectOneObject(xmFunc);
if( xmFuncDb == null ){
return failed("data-not-exists","数据不存在,无法删除");
}
xmFuncService.deleteByPk(xmFunc);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
*/
/**
@ApiOperation( value = "根据主键修改一条功能模块表信息",notes=" ")
@ApiResponses({
@ApiResponse(code = 200,response=XmFunc.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmFunc(@RequestBody XmFunc xmFunc) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
if(!StringUtils.hasText(xmFunc.getId())) {
return failed("pk-not-exists","请上送主键参数id");
}
XmFunc xmFuncDb = xmFuncService.selectOneObject(xmFunc);
if( xmFuncDb == null ){
return failed("data-not-exists","数据不存在,无法修改");
}
xmFuncService.updateSomeFieldByPk(xmFunc);
m.put("data",xmFunc);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
*/
/**
@ApiOperation( value = "批量修改某些字段",notes="")
@ApiEntityParams( value = XmFunc.class, props={ }, remark = "功能模块表", paramType = "body" )
@ApiResponses({
@ApiResponse(code = 200,response=XmFunc.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/editSomeFields",method=RequestMethod.POST)
public Map<String,Object> editSomeFields( @ApiIgnore @RequestBody Map<String,Object> xmFuncMap) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
List<String> ids= (List<String>) xmFuncMap.get("ids");
if(ids==null || ids.size()==0){
return failed("ids-0","ids不能为空");
}
Set<String> fields=new HashSet<>();
fields.add("id");
for (String fieldName : xmFuncMap.keySet()) {
if(fields.contains(fieldName)){
return failed(fieldName+"-no-edit",fieldName+"不允许修改");
}
}
Set<String> fieldKey=xmFuncMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet());
fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmFuncMap.get(i) )).collect(Collectors.toSet());
if(fieldKey.size()<=0) {
return failed("fieldKey-0","没有需要更新的字段");
}
XmFunc xmFunc = fromMap(xmFuncMap,XmFunc.class);
List<XmFunc> xmFuncsDb=xmFuncService.selectListByIds(ids);
if(xmFuncsDb==null ||xmFuncsDb.size()==0){
return failed("data-0","记录已不存在");
}
List<XmFunc> can=new ArrayList<>();
List<XmFunc> no=new ArrayList<>();
User user = LoginUtils.getCurrentUserInfo();
for (XmFunc xmFuncDb : xmFuncsDb) {
Tips tips2 = new Tips("检查通过");
if(!tips2.isOk()){
no.add(xmFuncDb);
}else{
can.add(xmFuncDb);
}
}
if(can.size()>0){
xmFuncMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList()));
xmFuncService.editSomeFields(xmFuncMap);
}
List<String> msgs=new ArrayList<>();
if(can.size()>0){
msgs.add(String.format("成功更新以下%s条数据",can.size()));
}
if(no.size()>0){
msgs.add(String.format("以下%s个数据无权限更新",no.size()));
}
if(can.size()>0){
tips.setOkMsg(msgs.stream().collect(Collectors.joining()));
}else {
tips.setFailureMsg(msgs.stream().collect(Collectors.joining()));
}
//m.put("data",xmMenu);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
*/
/**
@ApiOperation( value = "根据主键列表批量删除功能模块表信息",notes=" ")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmFunc(@RequestBody List<XmFunc> xmFuncs) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除");
try{
if(xmFuncs.size()<=0){
return failed("data-0","请上送待删除数据列表");
}
List<XmFunc> datasDb=xmFuncService.selectListByIds(xmFuncs.stream().map(i-> i.getId() ).collect(Collectors.toList()));
List<XmFunc> can=new ArrayList<>();
List<XmFunc> no=new ArrayList<>();
for (XmFunc data : datasDb) {
if(true){
can.add(data);
}else{
no.add(data);
}
}
List<String> msgs=new ArrayList<>();
if(can.size()>0){
xmFuncService.batchDelete(can);
msgs.add(String.format("成功删除%s条数据.",can.size()));
}
if(no.size()>0){
msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getId() ).collect(Collectors.joining(","))));
}
if(can.size()>0){
tips.setOkMsg(msgs.stream().collect(Collectors.joining()));
}else {
tips.setFailureMsg(msgs.stream().collect(Collectors.joining()));
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
*/
}

55
xm-core/src/main/java/com/xm/core/entity/XmFunc.java

@ -0,0 +1,55 @@
package com.xm.core.entity;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmFunc所有属性名: <br>
* "id","主键","name","名称","pid","上级编号","pname","上级名称","pidPaths","上级路径,直到自身,逗号分割,包含自身","productId","产品编号","lvl","菜单级别0-根,1,2,3,4,5依次类推";<br>
* 当前主键(包括多主键):<br>
* id;<br>
*/
@Data
@ApiModel(description="功能模块表")
public class XmFunc implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="")
String id;
@ApiModelProperty(notes="名称",allowEmptyValue=true,example="",allowableValues="")
String name;
@ApiModelProperty(notes="上级编号",allowEmptyValue=true,example="",allowableValues="")
String pid;
@ApiModelProperty(notes="上级名称",allowEmptyValue=true,example="",allowableValues="")
String pname;
@ApiModelProperty(notes="上级路径,直到自身,逗号分割,包含自身",allowEmptyValue=true,example="",allowableValues="")
String pidPaths;
@ApiModelProperty(notes="产品编号",allowEmptyValue=true,example="",allowableValues="")
String productId;
@ApiModelProperty(notes="菜单级别0-根,1,2,3,4,5依次类推",allowEmptyValue=true,example="",allowableValues="")
Integer lvl;
/**
*主键
**/
public XmFunc(String id) {
this.id = id;
}
/**
* 功能模块表
**/
public XmFunc() {
}
}

24
xm-core/src/main/java/com/xm/core/service/XmFuncService.java

@ -0,0 +1,24 @@
package com.xm.core.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.mdp.core.service.BaseService;
import static com.mdp.core.utils.BaseUtils.*;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.xm.core.entity.XmFunc;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmFunc xm_func 当前主键(包括多主键): id;
***/
@Service("xm.core.xmFuncService")
public class XmFuncService extends BaseService {
static Logger logger =LoggerFactory.getLogger(XmFuncService.class);
}

184
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmFuncMapper.xml

@ -0,0 +1,184 @@
<?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.xm.core.entity.XmFunc">
<!--开始 自定sql函数区域 请在此区域添加自定义函数,其它区域尽量不要动,因为代码随时重新生成 -->
<sql id="whereForMap">
<if test=" ids != null"> and (res.id) in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</if>
<if test="key != null and key !='' "> </if>
</sql>
<!--结束 自定义sql函数区域-->
<!-- 通过条件查询获取数据列表 返回list<map> -->
<select id="selectListMapByWhere" parameterType="HashMap" resultType="HashMap">
select * from xm_func res
<where>
<include refid="whereForMap"/>
<include refid="where"/>
</where>
</select>
<!-- 通过条件查询获取数据列表 不分页 返回 list<Object> -->
<select id="selectListByWhere" parameterType="com.xm.core.entity.XmFunc" resultType="com.xm.core.entity.XmFunc">
select * from xm_func res
<where>
<include refid="where"/>
</where>
</select>
<!-- 通过主键查询获取数据对象 返回object -->
<select id="selectOneObject" parameterType="com.xm.core.entity.XmFunc" resultType="com.xm.core.entity.XmFunc">
select * from xm_func res
where
res.id = #{id}
</select>
<select id="selectListByIds" parameterType="List" resultType="com.xm.core.entity.XmFunc">
select * from xm_func res
where (res.id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</select>
<!-- 通过主键查询获取数据对象 返回map-->
<select id="selectOneMap" parameterType="HashMap" resultType="HashMap">
select * from xm_func res
where
res.id = #{id}
</select>
<!-- 获取数据条目 返回long -->
<select id="countByWhere" parameterType="com.xm.core.entity.XmFunc" resultType="long">
select count(*) from xm_func res
<where>
<include refid="where"/>
</where>
</select>
<!-- 新增一条记录 主键id,-->
<insert id="insert" parameterType="com.xm.core.entity.XmFunc" useGeneratedKeys="false" keyProperty="id">
insert into xm_func(
<include refid="columns"/>
) values (
#{id},#{name},#{pid},#{pname},#{pidPaths},#{productId},#{lvl}
)
</insert>
<!-- 按条件删除若干条记录-->
<delete id="deleteByWhere" parameterType="com.xm.core.entity.XmFunc">
delete from xm_func res
<where>
<include refid="where"/>
</where>
</delete>
<!-- 按主键删除一条记录-->
<delete id="deleteByPk" parameterType="com.xm.core.entity.XmFunc">
delete from xm_func
where id = #{id}
</delete>
<!-- 根据条件修改若干条记录 -->
<update id="updateSomeFieldByPk" parameterType="com.xm.core.entity.XmFunc">
update xm_func
<set>
<include refid="someFieldSet"/>
</set>
where id = #{id}
</update>
<!-- 根据主键修改一条记录 -->
<update id="updateByPk" parameterType="com.xm.core.entity.XmFunc">
update xm_func
<set>
<include refid="set"/>
</set>
where id = #{id}
</update>
<!-- 批量新增 批量插入 借用insert 循环插入实现
<insert id="batchInsert" parameterType="List">
</insert>
-->
<!-- 批量更新 -->
<update id="batchUpdate" parameterType="List">
<foreach collection="list" item="item" index="index" separator=";" >
update xm_func
set
<include refid="batchSet"/>
where id = #{item.id}
</foreach>
</update>
<!-- 批量修改某几个字段 -->
<delete id="editSomeFields" parameterType="HashMap">
update xm_func
<set>
<include refid="someFieldSet"/>
</set>
where (id) in
<foreach collection="ids" item="item" index="index" open="(" separator="," close=")" >
( #{item})
</foreach>
</delete>
<!-- 批量删除 -->
<delete id="batchDelete" parameterType="List">
delete from xm_func
where
(id) in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
( #{item.id} )
</foreach>
</delete>
<!--sql片段 列-->
<sql id="columns">
id,name,pid,pname,pid_paths,product_id,lvl
</sql>
<!--sql片段 动态条件 YYYY-MM-DD HH24:MI:SS-->
<sql id="where">
<if test="id != null and id != ''"> and res.id = #{id} </if>
<if test="name != null and name != ''"> and res.name = #{name} </if>
<if test="pid != null and pid != ''"> and res.pid = #{pid} </if>
<if test="pname != null and pname != ''"> and res.pname = #{pname} </if>
<if test="pidPaths != null and pidPaths != ''"> and res.pid_paths = #{pidPaths} </if>
<if test="productId != null and productId != ''"> and res.product_id = #{productId} </if>
<if test="lvl != null and lvl != ''"> and res.lvl = #{lvl} </if>
</sql>
<!--sql片段 更新字段 -->
<sql id="set">
name = #{name},
pid = #{pid},
pname = #{pname},
pid_paths = #{pidPaths},
product_id = #{productId},
lvl = #{lvl}
</sql>
<sql id="someFieldSet">
<if test="name != null and name != ''"> name = #{name}, </if>
<if test="pid != null and pid != ''"> pid = #{pid}, </if>
<if test="pname != null and pname != ''"> pname = #{pname}, </if>
<if test="pidPaths != null and pidPaths != ''"> pid_paths = #{pidPaths}, </if>
<if test="productId != null and productId != ''"> product_id = #{productId}, </if>
<if test="lvl != null and lvl != ''"> lvl = #{lvl}, </if>
</sql>
<!--sql片段 批量更新 -->
<sql id="batchSet">
name = #{item.name},
pid = #{item.pid},
pname = #{item.pname},
pid_paths = #{item.pidPaths},
product_id = #{item.productId},
lvl = #{item.lvl}
</sql>
</mapper>
Loading…
Cancel
Save