server/platform/src/main/java/com/doumee/api/business/BaseParamController.java
@@ -1,14 +1,18 @@ package com.doumee.api.business; import com.doumee.api.BaseController; import com.doumee.core.annotation.LoginRequired; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.constants.Constants; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageWrap; import com.doumee.core.model.PageData; import com.doumee.dao.business.model.BaseParam; import com.doumee.service.business.BaseParamService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -35,7 +39,7 @@ @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("business:baseparam:create") public ApiResponse create(@RequestBody @Validated BaseParam baseParam) { public ApiResponse create(@RequestBody BaseParam baseParam) { return ApiResponse.success(baseParamService.create(baseParam)); } @@ -88,4 +92,17 @@ public ApiResponse findById(@PathVariable String id) { return ApiResponse.success(baseParamService.findById(id)); } @ApiOperation("基础配置数据") @GetMapping("/baseParamList") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "类型 0车辆报修原因 1强制还车原因 2时长减免原因 3单车类型", required = true) }) public ApiResponse<List<BaseParam>> baseParamList (@RequestParam Integer type) { BaseParam baseParam = new BaseParam(); baseParam.setIsdeleted(Constants.ZERO); baseParam.setStatus(Constants.ZERO); baseParam.setType(type); return ApiResponse.success(baseParamService.findList(baseParam)); } } server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -30,6 +30,8 @@ public static final String FILE_DIR ="FILE_DIR" ; public static final String PRIVATE_KEY = "PRIVATE_KEY"; public static final String PROJECT_FILE = "PROJECT_FILE"; public static final String FORCE_BACK_LOCK = "FORCE_BACK_LOCK"; public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE"; public static String REDIS_DEBUG_STR="test_"; public interface MqttTopic{ //开锁(发布) server/services/src/main/java/com/doumee/dao/business/model/BaseParam.java
@@ -62,7 +62,7 @@ @ApiModelProperty(value = "类型 0车辆保修原因 1强制还车原因 2时长减免原因 3单车类型", example = "1") @ExcelColumn(name="类型 0车辆保修原因 1强制还车原因 2时长减免原因 3单车类型") @NotEmpty @NotEmpty(message = "类型参数为空") private Integer type; @ApiModelProperty(value = "状态 0启用 1禁用", example = "1") server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesDTO.java
@@ -15,6 +15,9 @@ @ApiModel("骑行记录返回") public class MemberRidesDTO { @ApiModelProperty(value = "编码") private String id; @ApiModelProperty(value = "用户OpenID") @ExcelColumn(name="用户",index = 1,width = 10,align = HorizontalAlignment.CENTER) private String openid; @@ -50,4 +53,9 @@ @ExcelColumn(name="还车时间",index = 9,width = 10,align = HorizontalAlignment.CENTER) private Date backDate; @ApiModelProperty(value = "租车站点编码") private String rentSiteId; @ApiModelProperty(value = "租车锁头编码") private String rentLockId; } server/services/src/main/java/com/doumee/service/business/impl/BaseParamServiceImpl.java
@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -38,11 +39,16 @@ public String create(BaseParam baseParam) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (Objects.isNull(baseParam.getType()) || StringUtils.isEmpty(baseParam.getName())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"参数错误"); } QueryWrapper<BaseParam> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(BaseParam::getType,baseParam.getType()) .eq(BaseParam::getIsdeleted,Constants.ZERO) .eq(BaseParam::getType,baseParam.getName()); .eq(BaseParam::getName,baseParam.getName()); Integer count = baseParamMapper.selectCount(wrapper); if (count > 0){ server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -25,9 +25,12 @@ import com.doumee.dao.business.web.response.BikeLogDTO; import com.doumee.dao.business.web.response.MemberRidesDTO; import com.doumee.dao.business.web.response.MemberRidesDetailResponse; import com.doumee.dao.system.SystemDictDataMapper; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.business.DeviceService; import com.doumee.service.business.GoodsorderService; import com.doumee.service.business.MemberRidesService; import com.doumee.service.system.SystemDictDataService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -38,9 +41,8 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.*; import java.util.stream.Collectors; /** * 用户骑行记录表Service实现 @@ -78,6 +80,10 @@ @Autowired private GoodsorderService goodsorderService; @Autowired private SystemDictDataMapper systemDictDataMapper; @Override public String create(MemberRides memberRides) { @@ -168,7 +174,7 @@ MPJLambdaWrapper<MemberRides> queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId); queryWrapper.eq(MemberRides::getMemberId, id); queryWrapper.eq(MemberRides::getId, id); queryWrapper.selectAll(MemberRides.class); queryWrapper.selectAs(BaseParam::getName,MemberRidesDTO::getBikeType) ; queryWrapper.last("limit 1"); @@ -211,13 +217,17 @@ queryWrapper.le(model.getRentDateEnd()!=null, MemberRides::getRentDate,model.getRentDateEnd()); queryWrapper.eq(model.getCloseStatus()!=null,MemberRides::getCloseStatus, model.getCloseStatus()); queryWrapper.eq(model.getGoodsorderId()!=null,MemberRides::getOrdreId, model.getGoodsorderId()); queryWrapper.selectAs(Member::getOpenid,MemberRidesDTO::getOpenid) queryWrapper .selectAs(MemberRides::getId,MemberRidesDTO::getId) .selectAs(Member::getOpenid,MemberRidesDTO::getOpenid) .selectAs(MemberRides::getBikeCode,MemberRidesDTO::getBikeCode) .selectAs(MemberRides::getCloseStatus,MemberRidesDTO::getCloseStatus) .selectAs(MemberRides::getStatus,MemberRidesDTO::getStatus) .selectAs(BaseParam::getName,MemberRidesDTO::getBikeType) .selectAs(MemberRides::getDuration,MemberRidesDTO::getDuration) .selectAs(MemberRides::getRentDate,MemberRidesDTO::getRentDate) .selectAs(MemberRides::getRentLockId,MemberRidesDTO::getRentLockId) .selectAs(MemberRides::getRentSiteId,MemberRidesDTO::getRentSiteId) .selectAs(MemberRides::getBackDate,MemberRidesDTO::getBackDate); return queryWrapper; } @@ -243,7 +253,7 @@ @Override public void updateDuration(MemberRides memberRides){ LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(StringUtils.isBlank(memberRides.getMemberId()) if(StringUtils.isBlank(memberRides.getId()) ||StringUtils.isBlank(memberRides.getBackReason()) || memberRides.getDuration() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); @@ -306,8 +316,7 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void forceBack(MemberRides memberRides){ LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(StringUtils.isBlank(memberRides.getMemberId()) ||StringUtils.isBlank(memberRides.getBackReason())){ if(StringUtils.isBlank(memberRides.getBackReason())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } MemberRides model = findJoinById(memberRides.getId()); @@ -317,6 +326,12 @@ if(Constants.formatIntegerNum(model.getStatus()) != Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey() ){ throw new BusinessException( ResponseStatus.NOT_ALLOWED.getCode(),"对不起,只能针对未还车辆进行强制还车操作!" ); } QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(SystemDictData::getLabel, Arrays.asList(Constants.FORCE_BACK_SITE,Constants.FORCE_BACK_LOCK)); List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper); Map<String, SystemDictData> collect = systemDictData.stream().collect(Collectors.toMap(s -> s.getLabel(), s -> s)); MemberRides update = new MemberRides(); update.setId(model.getId()); update.setEditDate(new Date()); @@ -326,6 +341,9 @@ update.setBackReason(memberRides.getBackReason()); update.setBackUserid(user.getId()); update.setBackType(Constants.ONE); update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()); update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode()); update.setBackLockId(collect.get(Constants.FORCE_BACK_LOCK).getCode()); //计算骑行计费时长 update.setDuration(DateUtil.betweenMin(model.getRentDate(), update.getBackDate())); memberRidesMapper.updateById(update);