From 2541f659cf86de37de836baeec3e6d3ff829ed56 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 07 六月 2023 12:01:30 +0800 Subject: [PATCH] 基础配置 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryGetVo.java | 40 ++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Banner.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/QuickEntryService.java | 41 ++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtBannerEditDto.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/QuickEntryServiceImpl.java | 69 +++++++++++ ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml | 14 ++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtBannerGetVo.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryPageVo.java | 40 ++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtPopGetVo.java | 4 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java | 47 +++++++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/QuickEntryMapper.java | 11 + ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtQuickEntryEditDto.java | 40 ++++++ ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/BannerMapper.xml | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtPopEditDto.java | 5 14 files changed, 303 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java index 884176e..7b9db55 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java @@ -6,10 +6,7 @@ import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.dto.MgtPageDto; import com.ruoyi.system.domain.dto.*; -import com.ruoyi.system.domain.vo.MgtBannerGetVo; -import com.ruoyi.system.domain.vo.MgtBannerPageVo; -import com.ruoyi.system.domain.vo.MgtPopGetVo; -import com.ruoyi.system.domain.vo.MgtPopPageVo; +import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.service.config.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -47,6 +44,9 @@ @Resource private PopService popService; + + @Resource + private QuickEntryService quickEntryService; @RequestMapping(value = "/editCooperation", method = RequestMethod.POST) @ApiOperation(value = "修改申请合作") @@ -152,4 +152,43 @@ popService.deleteMgtPop(mgtBaseGetDto); return R.ok(); } + + @RequestMapping(value = "/pageQuickEntry", method = RequestMethod.POST) + @ApiOperation(value = "分页获取快速入口") + public R<Page<MgtQuickEntryPageVo>> pageQuickEntry(@RequestBody MgtPageDto mgtPageDto) { + Long userId = SecurityUtils.getUserId(); + mgtPageDto.setUserId(userId); + Page<MgtQuickEntryPageVo> page = new Page<>(); + page.setSize(mgtPageDto.getPageSize()); + page.setCurrent(mgtPageDto.getPageNum()); + List<MgtQuickEntryPageVo> mgtQuickEntryPageVoList = quickEntryService.pageMgtQuickEntry(page); + return R.ok(page.setRecords(mgtQuickEntryPageVoList)); + } + + @RequestMapping(value = "/editQuickEntry", method = RequestMethod.POST) + @ApiOperation(value = "修改快速入口") + public R editQuickEntry(@RequestBody MgtQuickEntryEditDto mgtQuickEntryEditDto) { + Long userId = SecurityUtils.getUserId(); + mgtQuickEntryEditDto.setUserId(userId); + quickEntryService.editMgtQuickEntry(mgtQuickEntryEditDto); + return R.ok(); + } + + @RequestMapping(value = "/getQuickEntry", method = RequestMethod.POST) + @ApiOperation(value = "获取快速入口编辑信息") + public R<MgtQuickEntryGetVo> getQuickEntry(@RequestBody MgtBaseGetDto mgtBaseGetDto) { + Long userId = SecurityUtils.getUserId(); + mgtBaseGetDto.setUserId(userId); + MgtQuickEntryGetVo mgtQuickEntryGetVo = quickEntryService.getMgtQuickEntry(Long.valueOf(mgtBaseGetDto.getId())); + return R.ok(mgtQuickEntryGetVo); + } + + @RequestMapping(value = "/deleteQuickEntry", method = RequestMethod.POST) + @ApiOperation(value = "删除快速入口") + public R deleteQuickEntry(@RequestBody MgtBaseGetDto mgtBaseGetDto) { + Long userId = SecurityUtils.getUserId(); + mgtBaseGetDto.setUserId(userId); + quickEntryService.deleteMgtQuickEntry(mgtBaseGetDto); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtBannerEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtBannerEditDto.java index 0372df0..b940d2a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtBannerEditDto.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtBannerEditDto.java @@ -39,6 +39,6 @@ private String jumpId; @ApiModelProperty(value = "banner排序") - private String bannerSort; + private Integer bannerSort; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtPopEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtPopEditDto.java index 06f22f5..09bcc29 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtPopEditDto.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtPopEditDto.java @@ -25,9 +25,6 @@ @ApiModelProperty(value = "链接类型1.外部2.内部3.无") private Integer targetType; - @ApiModelProperty(value = "链接类型1.手动输入2.选择已有") - private Integer linkType; - @ApiModelProperty(value = "链接地址") private String linkUrl; @@ -38,7 +35,7 @@ private String jumpId; @ApiModelProperty(value = "pop排序") - private String popSort; + private Integer popSort; @ApiModelProperty(value = "展示开始时间 yyyy-MM-dd") private Date showStartTime; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtQuickEntryEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtQuickEntryEditDto.java new file mode 100644 index 0000000..924893b --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtQuickEntryEditDto.java @@ -0,0 +1,40 @@ +package com.ruoyi.system.domain.dto; + +import com.ruoyi.system.api.domain.dto.MgtBaseDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName MgtQuickEntryEditDto + * @Description TODO + * @Author jqs + * @Date 2023/6/7 11:44 + * @Version 1.0 + */ +@Data +public class MgtQuickEntryEditDto extends MgtBaseDto { + + @ApiModelProperty(value = "快速入口Id 新增不传") + private Long entryId; + + @ApiModelProperty(value = "快速入口图片") + private String entryUrl; + + @ApiModelProperty(value = "快速入口名称") + private String entryName; + + @ApiModelProperty(value = "链接类型1.外部2.内部3.无") + private Integer targetType; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "跳转类型1.门店详情2.秒杀活动3领券中心4.商城列表5.关于洪瑞堂") + private Integer jumpType; + + @ApiModelProperty(value = "跳转id") + private String jumpId; + + @ApiModelProperty(value = "快速入口排序") + private Integer entrySort; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Banner.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Banner.java index 7b96e84..5c42ef7 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Banner.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Banner.java @@ -50,7 +50,7 @@ * banner排序 */ @TableField("banner_sort") - private String bannerSort; + private Integer bannerSort; /** * 链接类型1.外部2.内部3.无 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtBannerGetVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtBannerGetVo.java index e9bca9d..fe30b4a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtBannerGetVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtBannerGetVo.java @@ -39,5 +39,5 @@ private String jumpId; @ApiModelProperty(value = "banner排序") - private String bannerSort; + private Integer bannerSort; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtPopGetVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtPopGetVo.java index 3dc8690..a63d7dd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtPopGetVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtPopGetVo.java @@ -25,8 +25,6 @@ @ApiModelProperty(value = "链接类型1.外部2.内部3.无") private Integer targetType; - @ApiModelProperty(value = "链接类型1.手动输入2.选择已有") - private Integer linkType; @ApiModelProperty(value = "链接地址") private String linkUrl; @@ -38,7 +36,7 @@ private String jumpId; @ApiModelProperty(value = "pop排序") - private String popSort; + private Integer popSort; @ApiModelProperty(value = "展示开始时间 yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryGetVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryGetVo.java new file mode 100644 index 0000000..03db30d --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryGetVo.java @@ -0,0 +1,40 @@ +package com.ruoyi.system.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @ClassName MgtQuickEntryGetVo + * @Description TODO + * @Author jqs + * @Date 2023/6/7 11:50 + * @Version 1.0 + */ +@Data +public class MgtQuickEntryGetVo { + + @ApiModelProperty(value = "快速入口Id 新增不传") + private Long entryId; + + @ApiModelProperty(value = "快速入口图片") + private String entryUrl; + + @ApiModelProperty(value = "快速入口名称") + private String entryName; + + @ApiModelProperty(value = "链接类型1.外部2.内部3.无") + private Integer targetType; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "跳转类型1.门店详情2.秒杀活动3领券中心4.商城列表5.关于洪瑞堂") + private Integer jumpType; + + @ApiModelProperty(value = "跳转id") + private String jumpId; + + @ApiModelProperty(value = "快速入口排序") + private Integer entrySort; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryPageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryPageVo.java new file mode 100644 index 0000000..58ecfa2 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtQuickEntryPageVo.java @@ -0,0 +1,40 @@ +package com.ruoyi.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @ClassName MgtQuickEntryPageVo + * @Description TODO + * @Author jqs + * @Date 2023/6/7 11:48 + * @Version 1.0 + */ +@Data +public class MgtQuickEntryPageVo { + + @ApiModelProperty(value = "快速入口Id 新增不传") + private Long entryId; + + @ApiModelProperty(value = "快速入口图片") + private String entryUrl; + + @ApiModelProperty(value = "快速入口名称") + private String entryName; + + @ApiModelProperty(value = "链接类型1.外部2.内部3.无") + private Integer targetType; + + @ApiModelProperty(value = "链接地址") + private String linkUrl; + + @ApiModelProperty(value = "快速入口排序") + private Integer entrySort; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/QuickEntryMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/QuickEntryMapper.java index bc4e54c..12e1106 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/QuickEntryMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/QuickEntryMapper.java @@ -1,8 +1,10 @@ package com.ruoyi.system.mapper.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.pojo.config.QuickEntry; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.vo.AppQuickEntryVo; +import com.ruoyi.system.domain.vo.MgtQuickEntryPageVo; import java.util.List; @@ -21,4 +23,13 @@ * @return */ List<AppQuickEntryVo> listQuickEntryVo(); + + /** + * @description 平台分页获取快速入口 + * @author jqs + * @date 2023/6/7 10:08 + * @param page + * @return List<MgtQuickEntryPageVo> + */ + List<MgtQuickEntryPageVo> pageMgtQuickEntry(Page page); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/QuickEntryService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/QuickEntryService.java index 667216e..50291e0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/QuickEntryService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/QuickEntryService.java @@ -1,8 +1,13 @@ package com.ruoyi.system.service.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; +import com.ruoyi.system.domain.dto.MgtQuickEntryEditDto; import com.ruoyi.system.domain.pojo.config.QuickEntry; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.domain.vo.AppQuickEntryVo; +import com.ruoyi.system.domain.vo.MgtQuickEntryGetVo; +import com.ruoyi.system.domain.vo.MgtQuickEntryPageVo; import java.util.List; @@ -21,4 +26,40 @@ * @return */ List<AppQuickEntryVo> listQuickEntryVo(); + + /** + * @description 平台分页获取快速入口 + * @author jqs + * @date 2023/6/7 10:08 + * @param page + * @return List<MgtQuickEntryPageVo> + */ + List<MgtQuickEntryPageVo> pageMgtQuickEntry(Page page); + + /** + * @description 平台修改快速入口 + * @author jqs + * @date 2023/6/7 10:20 + * @param mgtQuickEntryEditDto + * @return void + */ + void editMgtQuickEntry(MgtQuickEntryEditDto mgtQuickEntryEditDto); + + /** + * @description 平台获取快速入口编辑信息 + * @author jqs + * @date 2023/6/7 10:30 + * @param quickEntryId + * @return MgtQuickEntryGetVo + */ + MgtQuickEntryGetVo getMgtQuickEntry(Long quickEntryId); + + /** + * @description 平台删除快速入口 + * @author jqs + * @date 2023/6/7 10:35 + * @param mgtBaseGetDto + * @return void + */ + void deleteMgtQuickEntry(MgtBaseGetDto mgtBaseGetDto); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/QuickEntryServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/QuickEntryServiceImpl.java index 7d3b6b2..682e504 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/QuickEntryServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/QuickEntryServiceImpl.java @@ -1,13 +1,20 @@ package com.ruoyi.system.service.impl.config; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; +import com.ruoyi.system.domain.dto.MgtQuickEntryEditDto; import com.ruoyi.system.domain.pojo.config.QuickEntry; import com.ruoyi.system.domain.vo.AppQuickEntryVo; +import com.ruoyi.system.domain.vo.MgtQuickEntryGetVo; +import com.ruoyi.system.domain.vo.MgtQuickEntryPageVo; import com.ruoyi.system.mapper.config.QuickEntryMapper; import com.ruoyi.system.service.config.QuickEntryService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; /** @@ -32,4 +39,66 @@ public List<AppQuickEntryVo> listQuickEntryVo(){ return quickEntryMapper.listQuickEntryVo(); } + + @Override + public List<MgtQuickEntryPageVo> pageMgtQuickEntry(Page page){ + return quickEntryMapper.pageMgtQuickEntry(page); + } + + /** + * @description 平台修改快速入口 + * @author jqs + * @date 2023/6/7 10:20 + * @param mgtQuickEntryEditDto + * @return void + */ + @Override + public void editMgtQuickEntry(MgtQuickEntryEditDto mgtQuickEntryEditDto){ + QuickEntry quickEntry; + // 如果管理快速入口ID不为空,则获取该管理快速入口 + if (mgtQuickEntryEditDto.getEntryId() != null) { + quickEntry = this.getById(mgtQuickEntryEditDto.getEntryId()); + } else { + // 否则,创建新的管理快速入口 + quickEntry = new QuickEntry(); + quickEntry.setDelFlag(0); + } + // 将管理快速入口编辑DTO的属性复制到管理快速入口中 + BeanUtils.copyProperties(mgtQuickEntryEditDto, quickEntry); + // 设置创建时间和创建者ID + quickEntry.setCreateTime(new Date()); + quickEntry.setCreateUserId(mgtQuickEntryEditDto.getEntryId()); + // 保存或更新管理快速入口 + this.saveOrUpdate(quickEntry); + } + + /** + * @description 平台获取快速入口编辑信息 + * @author jqs + * @date 2023/6/7 10:30 + * @param quickEntryId + * @return MgtQuickEntryGetVo + */ + @Override + public MgtQuickEntryGetVo getMgtQuickEntry(Long quickEntryId){ + QuickEntry quickEntry = this.getById(quickEntryId); + MgtQuickEntryGetVo mgtQuickEntryGetVo = new MgtQuickEntryGetVo(); + BeanUtils.copyProperties(quickEntry, mgtQuickEntryGetVo); + return mgtQuickEntryGetVo; + } + + /** + * @description 平台删除快速入口 + * @author jqs + * @date 2023/6/7 10:35 + * @param mgtBaseGetDto + * @return void + */ + @Override + public void deleteMgtQuickEntry(MgtBaseGetDto mgtBaseGetDto){ + QuickEntry quickEntry = this.getById(Long.valueOf(mgtBaseGetDto.getId())); + quickEntry.setDelFlag(1); + quickEntry.insertOrUpdate(); + this.saveOrUpdate(quickEntry); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/BannerMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/BannerMapper.xml index 4cf285c..0630516 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/BannerMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/BannerMapper.xml @@ -105,7 +105,7 @@ jump_type jumpType, jump_id jumpId FROM t_banner WHERE del_flag = 0 AND banner_position = 1 - ORDER BY banner_sort DESC,create_time ASC + ORDER BY banner_sort DESC,create_time DESC </select> <select id="pageMgtBannerVo" resultType="com.ruoyi.system.domain.vo.MgtBannerPageVo"> diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml index 918cbb7..5d10ecc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/QuickEntryMapper.xml @@ -99,6 +99,18 @@ link_url linkUrl, jump_id jumpId FROM t_quick_entry WHERE del_flag = 0 - ORDER BY entry_sort DESC + ORDER BY entry_sort,create_time DESC + </select> + + <select id="pageMgtQuickEntry" resultType="com.ruoyi.system.domain.vo.MgtQuickEntryPageVo"> + SELECT + entry_id entryId, + entry_url entryUrl, + entry_name entryName, + target_type targetType, + link_url linkUrl, + create_time createTime + FROM t_quick_entry WHERE del_flag = 0 + ORDER BY entry_sort,create_time DESC </select> </mapper> -- Gitblit v1.7.1