DP开发手册

V2.2

1. 绪言

1.2 项目介绍

dp-LTE

dp-PRO

dp-BOOT

dp-GEN

1.1 作者序

1.3 技术方案

1.4 使用(常见问题见3.4节)

项目仓库

开发环境

使用步骤

在线演示

代码生成器

2. 开发规约

2.1 工程规约

2.1 命名规范

模块命名

包名 说明
类名 说明

DAO命名

静态资源命名

页面 html名称 js名称

3. 二次开发

3.2 后端开发

Dao开发

Mapper.xml开发
<?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="net.chenlin.dp.shiro.dao.SysUserMapper">

  <select id="listForPage" resultType="SysUserEntity">
    
  </select>      

</mapper>
Mapper.java开发
@MapperScan
public interface SysUserMapper extends BaseMapper<SysUserEntity> {

	SysUserEntity getByUserName(String username);
	
	List<Long> listAllMenuId(Long userId);
	
	int updatePswdByUser(Query query);
	
	int updateUserStatus(Query query);
	
	int updatePswd(SysUserEntity user);
	
}

Entity开发

public class SysUserEntity implements Serializable {
  
  private static final long serialVersionUID = 1L;

  /**
   * 用户id
   */
  private Long userId;
  
  /**
   * 用户名
   */
  private String username;

  public SysUserEntity() {
    super();
  }

 /* 此处省去 get 和 set 方法, 实际开发添加  */

}

Manager开发

public interface SysUserManager {
  
  List<SysUserEntity> listUser(Page<SysUserEntity> page, Query search);
  
}
@Component("sysUserManager")
public class SysUserManagerImpl implements SysUserManager {

  @Autowired
  private SysUserMapper sysUserMapper;
  
  @Autowired
  private SysMenuMapper sysMenuMapper;
  
  @Autowired
  private SysRoleMapper sysRoleMapper;
  
  @Autowired
  private SysUserRoleMapper sysUserRoleMapper;
  
  
  @Override
  public List<SysUserEntity> listUser(Page<SysUserEntity> page, Query search) {
    return sysUserMapper.listForPage(page, search);
  }

}

Service开发

public interface SysUserService {
  
  Page<SysUserEntity> listUser(Map<String, Object> params);
  
}
@Service("sysUserService")
public class SysUserServiceImpl implements SysUserService {

        @Autowired
  private SysUserManager sysUserManager;
  
  @Override
  public Page<SysUserEntity> listUser(Map<String, Object> params) {
    Query form = new Query(params);
    Page<SysUserEntity> page = new Page<>(form);
    sysUserManager.listUser(page, form);
    return page;
  }

}

Controller开发

@RestController
@RequestMapping("/sys/user")
public class SysUserController extends AbstractController {
  
  @Autowired
  private SysUserService sysUserService;
  
  /**
   * 用户列表
   * @param params
   * @return
   */
  @RequestMapping("/list")
  public Page<SysUserEntity> list(@RequestBody Map<String, Object> params) {
    if(getUserId() != SystemConstant.SUPER_ADMIN) {
      params.put("userIdCreate", getUserId());
    }
    return sysUserService.listUser(params);
  }
    
  /**
   * 新增用户
   * @param user
   * @return
   */
  @SysLog("新增用户")
  @RequestMapping("/save")
  public R save(@RequestBody SysUserEntity user) {
    user.setUserIdCreate(getUserId());
    return sysUserService.saveUser(user);
  }
  
}

3.1 数据库

CREATE TABLE `sys_user` (
  `user_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL COMMENT '用户名',
  `password` varchar(50) DEFAULT NULL COMMENT '密码',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  `mobile` varchar(100) DEFAULT NULL COMMENT '手机号',
  `status` tinyint(255) DEFAULT NULL COMMENT '状态 0:禁用,1:正常',
  `user_id_create` bigint(255) DEFAULT NULL COMMENT '创建用户id',
  `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
  `gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户';

3.4 常见问题

3.4.1 框架的页面是如何跳转

3.4.2 新增模块点击菜单报错

3.4.3 框架的工具类在哪里

3.4.4 为什么使用原生layer.js报错

3.4.5 关于应用分层

3.4.6 关于事务

3.4.7 数据库问题

3.4.8 如何使用日志AOP

3.4.11 如何使用动态数据源切换

3.4.12 数据权限如何使用

参数项 默认值 说明

3.4.13 接口管理如何配置

3.4.14 后端校验如何使用

更多问题

3.3 前端开发

4. 开发指引

Query(查询条件实体类)

public class Query extends HashMap<String, Object> {
	
	private static final long serialVersionUID = 1L;
	
	public Query() {
		super();
	}

	public Query(Map<String, Object> params){
        this.putAll(params);
    }
	
	public Double getAsDouble(String name) {
        Object value = this.get(name);
        if (value != null)
            return Double.valueOf(value.toString());
        return null;
    }

    public String getAsString(String name) {
        return this.get(name).toString();
    }

    public Long getAsLong(String name) {
        Object value = this.get(name);
        if (value != null)
            return Long.valueOf(value.toString());
        return null;
    }

    public Integer getAsInt(String name) {
        Object value = this.get(name);
        if (value != null)
            return Integer.valueOf(value.toString());
        return null;
    }

    public Boolean getAsBoolean(String name) {
        Object value = this.get(name);
        if (value != null)
            return Boolean.valueOf(value.toString());
        return null;
    }

    public java.util.Date getAsDate(String name) {
    	Object value = this.get(name);
        if (value != null)
        	return Date.valueOf(value.toString());
        return null;
    }

    public Object getObj(String name) {
        return this.get(name);
    }
	
}

R(页面相应实体类)

public class CommonUtils {
	
	/**
	 * 新增,修改提示
	 * @param count
	 * @return
	 */
	public static R msg(int count) {
		if(isIntThanZero(count)){
			return R.ok(MsgConstant.MSG_OPERATION_SUCCESS);
		}
		return R.error(MsgConstant.MSG_OPERATION_FAILED);
	}
	
	/**
	 * 查询详情提示
	 * @param data
	 * @return
	 */
	public static R msg(Object data) {
		if(isNullOrEmpty(data)){
			return R.error(MsgConstant.MSG_INIT_FORM);
		}
		return R.ok().put(SystemConstant.DATA_ROWS, data);
	}
	
	/**
	 * 返回数据
	 * @param data
	 * @return
	 */
	public static R msgNotCheckNull(Object data) {
		return R.ok().put(SystemConstant.DATA_ROWS, data);
	}
	
	/**
	 * 删除提示
	 * @param total
	 * @param count
	 * @return
	 */
	public static R msg(Object[] total, int count) {
		if(total.length == count){
			return R.ok(MsgConstant.MSG_OPERATION_SUCCESS);
		}else{
			if(isIntThanZero(count)){
				return R.error(MsgConstant.removeFailed(total.length, count));
			}else{
				return R.error(MsgConstant.MSG_OPERATION_FAILED);
			}
		}
	}
	
}

分页查询

数据权限

@MapperScan
public interface SysUserMapper extends BaseMapper<SysUserEntity> {
	
	List<Long> listAllOrgId(Long userId);	
	
}