jiaosong
2023-10-10 1569810b381ec242c0a5070651783e4b8ffefe7e
#pgsql 卡信息添加删除 小程序配置信息
已修改9个文件
253 ■■■■■ 文件已修改
server/platform/src/main/java/com/doumee/api/business/MemberController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/mqtt/service/MqttPushCallback.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/Member.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/web/response/MiniProgrammeDTO.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/MemberService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/system/SystemDictDataService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -26,6 +26,14 @@
    String create(Member member);
    /**
     * 创建
     *
     * @param member 实体对象
     * @return String
     */
    String createManageMember(Member member);
    /**
     * 主键删除
     *
     * @param id 主键
@@ -52,6 +60,14 @@
     * @param member 实体对象
     */
    void updateById(Member member);
    /**
     * 主键更新卡信息
     *
     * @param member 实体对象
     */
    void update(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
@@ -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;
@@ -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;
@@ -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(),"字典值解析有误");
        }
    }
}