server/platform/src/main/java/com/doumee/api/business/MemberController.java
@@ -38,6 +38,14 @@ return ApiResponse.success(memberService.create(member)); } @PreventRepeat @ApiOperation("管理员配置") @PostMapping("/createManageMember") @RequiresPermissions("business:member:create") public ApiResponse<String> createManageMember(@RequestBody Member member){ return ApiResponse.success(memberService.createManageMember(member)); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("business:member:delete") @@ -67,6 +75,14 @@ return ApiResponse.success(null); } @ApiOperation("根据ID修改卡信息") @PostMapping("/updateById") @RequiresPermissions("business:member:update") public ApiResponse update(@RequestBody Member member){ memberService.update(member); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("business:member:query") server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -7,6 +7,7 @@ import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.web.response.MiniProgrammeDTO; import com.doumee.dao.system.dto.QuerySystemDictDataDTO; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.vo.SystemDictDataListVO; @@ -79,4 +80,20 @@ public ApiResponse<PageData<SystemDictDataListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) { return ApiResponse.success(systemDictDataService.findPage(pageWrap)); } @ApiOperation("分页查询小程序基础配置") @PostMapping("/getMiniProgrammeDTO") // @RequiresPermissions("system:dict:update") public ApiResponse<MiniProgrammeDTO> getMiniProgrammeDTO(){ return ApiResponse.success(systemDictDataService.getMiniProgrammeDTO()); } @ApiOperation("修改小程序基础配置") @PostMapping("/updateMiniProgrammeDTO") // @RequiresPermissions("system:dict:update") public ApiResponse updateMiniProgrammeDTO(@RequestBody MiniProgrammeDTO miniProgrammeDTO){ systemDictDataService.updateMiniProgrammeDTO(miniProgrammeDTO); return ApiResponse.success(null); } } server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java
@@ -8,21 +8,27 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author T14 */ @Service public class MqttPushCallback implements MqttCallback { @Autowired private DeviceSubcribeService deviceSubcribeService; //接收消息回调 @Override public void connectionLost(Throwable cause) { // 连接丢失后,一般在这里面进行重连 System.out.println("连接断开,可以做重连"); } @Override public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("deliveryComplete---------" + token.isComplete()); } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { // subscribe后得到的消息会执行到这里面 System.out.println("接收消息主题 : " + topic); server/services/src/main/java/com/doumee/dao/business/model/Member.java
@@ -1,5 +1,6 @@ package com.doumee.dao.business.model; import com.baomidou.mybatisplus.annotation.TableLogic; import com.doumee.core.annotation.excel.ExcelColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -45,6 +46,7 @@ @ApiModelProperty(value = "是否已删除 0未删除 1已删除", example = "1") @ExcelColumn(name="是否已删除 0未删除 1已删除") @TableLogic private Integer isdeleted; @ApiModelProperty(value = "备注") server/services/src/main/java/com/doumee/dao/business/web/response/MiniProgrammeDTO.java
@@ -1,7 +1,13 @@ package com.doumee.dao.business.web.response; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.IOException; /** * @author T14 @@ -10,48 +16,69 @@ public class MiniProgrammeDTO { @ApiModelProperty("主页主题") private String projectName; private String projectName = ""; @ApiModelProperty("服务电话") private String serverPhone; private String serverPhone = ""; @ApiModelProperty("押金金额") private String rentDeposit; private String rentDeposit = ""; @ApiModelProperty("营业时间起始") private String businessStarttime; private String businessStarttime = ""; @ApiModelProperty("营业时间结束") private String businessEndtime; private String businessEndtime = ""; @ApiModelProperty("免费骑行时长") private String freeRentTime; private String freeRentTime = ""; @ApiModelProperty("满足预警最小值") private String warnMin; private String warnMin = ""; @ApiModelProperty("满足预警最大值") private String warnMax; private String warnMax = ""; @ApiModelProperty("小程序预警钉钉群地址") private String warnDingdingUrl; private String warnDingdingUrl = ""; @ApiModelProperty("租赁流程视频") private String rentTipsVideo; private String rentTipsVideo = ""; @ApiModelProperty("骑车通知内容") private String rentNotice; private String rentNotice = ""; @ApiModelProperty("是否停止服务") private String isStopServe; private String isStopServe = ""; @ApiModelProperty("停止服务提示") private String stopServeTips; private String stopServeTips = ""; @ApiModelProperty("停止服务开始") private String stopServeStarttime; private String stopServeStarttime = ""; @ApiModelProperty("停止服务结束") private String stopServeEndtime; private String stopServeEndtime = ""; /** * 对象驼峰属性转下划线 * @param object * @return * @throws JsonProcessingException */ public static String toUnderlineJSONString(Object object) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); String reqJson = mapper.writeValueAsString(object); return reqJson; } public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); T reqJson = mapper.readValue(json, clazz); return reqJson; } } server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -19,11 +19,19 @@ /** * 创建 * * * @param member 实体对象 * @return String */ String create(Member member); /** * 创建 * * @param member 实体对象 * @return String */ String createManageMember(Member member); /** * 主键删除 @@ -52,6 +60,14 @@ * @param member 实体对象 */ void updateById(Member member); /** * 主键更新卡信息 * * @param member 实体对象 */ void update(Member member); /** * 批量主键更新 @@ -83,7 +99,7 @@ * @return List<Member> */ List<Member> findList(Member member); /** * 分页查询 * @@ -92,6 +108,14 @@ */ PageData<Member> findPage(PageWrap<Member> pageWrap); /** * 分页查询卡信息 * * @param pageWrap 分页对象 * @return PageData<Member> */ PageData<Member> findManagerMemberPage(PageWrap<Member> pageWrap); /** * 条件统计 * server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -12,6 +12,7 @@ import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; @@ -26,6 +27,7 @@ import com.doumee.service.business.MemberService; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -57,6 +59,36 @@ } @Override public String createManageMember(Member member) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper<Member> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Member::getIsdeleted,Constants.ZERO) .eq(Member::getType,Constants.ONE) .eq(Member::getCardNo,member.getCardNo()); Integer integer = memberMapper.selectCount(wrapper); if (integer > 0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"卡号存在重复"); } Member insert = new Member(); insert.setCreateDate(new Date()); insert.setCreator(principal.getId()); insert.setEditDate(new Date()); insert.setEditor(principal.getId()); insert.setIsdeleted(Constants.ZERO); insert.setName(member.getName()); insert.setName(member.getNickname()); insert.setStatus(Constants.ZERO); insert.setRegisterDate(new Date()); insert.setCardNo(member.getCardNo()); insert.setType(Constants.ONE); memberMapper.insert(member); return member.getId(); } @Override public void deleteById(String id) { memberMapper.deleteById(id); } @@ -78,6 +110,19 @@ @Override public void updateById(Member member) { memberMapper.updateById(member); } @Override public void update(Member member) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Member update = new Member(); update.setId(member.getId()); update.setName(member.getName()); update.setStatus(member.getStatus()); update.setEditDate(new Date()); update.setEditor(principal.getId()); memberMapper.updateById(member); } @Override @@ -106,7 +151,7 @@ QueryWrapper<Member> wrapper = new QueryWrapper<>(member); return memberMapper.selectList(wrapper); } @Override public PageData<Member> findPage(PageWrap<Member> pageWrap) { IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -195,6 +240,23 @@ return PageData.from(memberMapper.selectPage(page, queryWrapper)); } @Override public PageData<Member> findManagerMemberPage(PageWrap<Member> pageWrap) { IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper<Member> queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().like(Member::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getCardNo() != null) { queryWrapper.lambda().like(Member::getCardNo, pageWrap.getModel().getCardNo()); } queryWrapper.lambda().eq(Member::getType, Constants.ONE); return PageData.from(memberMapper.selectPage(page, queryWrapper)); } @Override public long count(Member member) { QueryWrapper<Member> wrapper = new QueryWrapper<>(member); server/services/src/main/java/com/doumee/service/system/SystemDictDataService.java
@@ -2,6 +2,7 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.web.response.MiniProgrammeDTO; import com.doumee.dao.system.dto.QuerySystemDictDataDTO; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.vo.SystemDictDataListVO; @@ -70,7 +71,7 @@ * @date 2022/03/15 09:54 */ List<SystemDictData> findList(SystemDictData systemDictData); /** * 分页查询 * @author Eva.Caesar Liu @@ -85,4 +86,15 @@ */ long count(SystemDictData systemDictData); /** * 获取小程序配置 * @return */ MiniProgrammeDTO getMiniProgrammeDTO(); /** * 修改小程序配置 * @param miniProgrammeDTO */ void updateMiniProgrammeDTO(MiniProgrammeDTO miniProgrammeDTO); } server/services/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
@@ -1,5 +1,11 @@ package com.doumee.service.system.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.dao.business.web.response.MiniProgrammeDTO; import com.fasterxml.jackson.core.JsonProcessingException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.doumee.core.model.PageData; @@ -11,13 +17,15 @@ import com.doumee.service.system.SystemDictDataService; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.UUID; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; import com.doumee.core.constants.Constants; @@ -86,7 +94,7 @@ Wrapper<SystemDictData> wrapper = new QueryWrapper<>(systemDictData).orderByAsc("sort"); return systemDictDataMapper.selectList(wrapper); } @Override public PageData<SystemDictDataListVO> findPage(PageWrap<QuerySystemDictDataDTO> pageWrap) { PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); @@ -99,7 +107,48 @@ return systemDictDataMapper.selectCount(wrapper); } @Override public MiniProgrammeDTO getMiniProgrammeDTO() { try { String jasonStr = MiniProgrammeDTO.toUnderlineJSONString(new MiniProgrammeDTO()); JSONObject parse = (JSONObject) JSONObject.parse(jasonStr); List<String> collect = parse.entrySet().stream().map(s -> s.getKey().toUpperCase()).collect(Collectors.toList()); QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>(); wrapper.lambda() .in(SystemDictData::getLabel,collect); List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper); if (CollectionUtils.isEmpty(systemDictData)){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在"); } systemDictData.forEach(s->{ parse.put(s.getLabel().toLowerCase(),s.getCode()); }); String s = parse.toJSONString(); MiniProgrammeDTO miniProgrammeDTO = MiniProgrammeDTO.toSnakeObject(s, MiniProgrammeDTO.class); return miniProgrammeDTO; } catch (Exception e) { throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"字典值解析有误"); } } @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @Override public void updateMiniProgrammeDTO(MiniProgrammeDTO miniProgrammeDTO) { try { String jasonStr = MiniProgrammeDTO.toUnderlineJSONString(miniProgrammeDTO); JSONObject parse = (JSONObject) JSONObject.parse(jasonStr); parse.entrySet().forEach(s->{ if (StringUtils.isEmpty((String)s.getValue())){ UpdateWrapper<SystemDictData> wrapper = new UpdateWrapper<>(); wrapper.lambda() .eq(SystemDictData::getLabel,s.getKey().toUpperCase()) .set(SystemDictData::getCode,s.getValue()); systemDictDataMapper.update(null,wrapper); } }); } catch (JsonProcessingException e) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"字典值解析有误"); } } }