DESKTOP-71BH0QO\L、ming
2021-04-26 7892e7b7ce6a4b74700087cb7ee47afb155cb973
Add:办事指南相关接口
2个文件已修改
14个文件已添加
681 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WorkGuideApi.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/UserApi.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/WorkGuideApi.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageActWorkGuideDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActWorkGuideMaterialVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActWorkGuideVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/WorkGuideApi.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWorkGuideDAO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWorkGuideMaterialDAO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngFamilyDAO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActWorkGuideDO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActWorkGuideMaterialDO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngFamilyDO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActWorkGuideService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WorkGuideApi.java
New file
@@ -0,0 +1,38 @@
package com.panzhihua.applets.api;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.service.community.CommunityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @auther llming
 * @describe 办事指南API
 */
@Slf4j
@RestController
@RequestMapping("/workguide/")
@Api(tags = {"办事指南API"})
public class WorkGuideApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @ApiOperation(value = "办事指南_分页",response = ComActWorkGuideVO.class)
    @PostMapping("pageworkguide")
    public R detailWorkGuide(@RequestBody PageActWorkGuideDTO pageActWorkGuideDTO) {
        return communityService.pageWorkGuide(pageActWorkGuideDTO);
    }
    @ApiOperation(value = "办事指南_详情",response = ComActWorkGuideVO.class)
    @GetMapping("detailworkguide")
    public R detailWorkGuide(@RequestParam("workGuideId")Long workGuideId) {
        return communityService.detailWorkGuide(workGuideId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/UserApi.java
@@ -25,7 +25,8 @@
 **/
@Api(tags = {"用户模块"})
@RestController
@RequestMapping("/user/")public class UserApi extends BaseController {
@RequestMapping("/user/")
public class UserApi extends BaseController {
    @Resource
    private UserService userService;
    @ApiOperation(value = "当前登录用户信息",response = LoginUserInfoVO.class)
springcloud_k8s_panzhihuazhihuishequ/applets_backstage/src/main/java/com/panzhihua/applets_backstage/api/WorkGuideApi.java
New file
@@ -0,0 +1,69 @@
package com.panzhihua.applets_backstage.api;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.dtos.community.PageComStreetDTO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.model.vos.community.ComStreetVO;
import com.panzhihua.common.model.vos.user.AdministratorsUserVO;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.service.user.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * @description: 办事指南管理
 * @author: llming
 **/
@RestController
@RequestMapping("/workguidemanager/")
@Api(tags = {"办事指南管理"})
public class WorkGuideApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @ApiOperation(value = "办事指南_新增")
    @PostMapping("addworkguide")
    public R addStreet(@RequestBody ComActWorkGuideVO workGuideVO) {
        LoginUserInfoVO loginUserInfo = getLoginUserInfo();
        return communityService.addWorkGuide(workGuideVO,loginUserInfo.getUserId());
    }
    @PostMapping("editworkguide")
    @ApiOperation(value = "办事指南_编辑")
    public R putWorkGuide(@RequestBody ComActWorkGuideVO workGuideVO) {
        LoginUserInfoVO loginUserInfo = getLoginUserInfo();
        return communityService.editWorkGuide(workGuideVO,loginUserInfo.getUserId());
    }
    @ApiOperation(value = "办事指南_详情",response = ComActWorkGuideVO.class)
    @GetMapping("detailworkguide")
    public R detailWorkGuide(@RequestParam("workGuideId")Long workGuideId) {
        return communityService.detailWorkGuide(workGuideId);
    }
    @ApiOperation(value = "办事指南_分页",response = ComActWorkGuideVO.class)
    @PostMapping("pageworkguide")
    public R detailWorkGuide(@RequestBody PageActWorkGuideDTO pageActWorkGuideDTO) {
        return communityService.pageWorkGuide(pageActWorkGuideDTO);
    }
    @ApiOperation(value = "办事指南_删除",response = ComActWorkGuideVO.class)
    @PostMapping("delectworkguide")
    R delectWorkGuide(@RequestParam("workGuideId") Long workGuideId){
        return communityService.delectWorkGuide(workGuideId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageActWorkGuideDTO.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.common.model.dtos.community;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther llming
 * @describe
 */
@Data
@ApiModel("办事指南请求参数")
public class PageActWorkGuideDTO {
    @ApiModelProperty("办事指南标题")
    private String title;
    @ApiModelProperty(value = "分页-当前页数",example = "1")
    private Long pageNum;
    @ApiModelProperty(value = "分页-每页记录数",example = "10")
    private Long pageSize;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActWorkGuideMaterialVO.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.common.model.vos.community;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @auther llming
 * @describe
 */
@Data
@ApiModel("办事指南材料")
public class ComActWorkGuideMaterialVO {
    @ApiModelProperty("办事指南材料id")
    private Long id;
    @ApiModelProperty("申报材料名称")
    private String materialName;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActWorkGuideVO.java
New file
@@ -0,0 +1,39 @@
package com.panzhihua.common.model.vos.community;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
 * @auther llming
 * @describe 办事指南
 */
@Data
@ApiModel("办事指南")
public class ComActWorkGuideVO {
    @ApiModelProperty("办事指南id")
    private Long id;
    @ApiModelProperty("办事指南标题")
    private String title;
    @ApiModelProperty("办事指南内容")
    private String content;
    @ApiModelProperty("办理时间")
    private String timeAt;
    @ApiModelProperty("办理地点")
    private String address;
    @ApiModelProperty("咨询电话")
    private String phone;
    private List<ComActWorkGuideMaterialVO> materials = Lists.newArrayList();
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -21,6 +21,7 @@
import com.panzhihua.common.model.vos.shop.ShopStoreVO;
import com.panzhihua.common.model.vos.user.UserPhoneVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -2179,4 +2180,45 @@
     */
    @PostMapping("common/data/special/delete")
    R deleteSpecialInputUser(@RequestParam(value = "id") Long id);
    /**
     * 办事指南_新增
     * @param workGuideVO 新增信息
     * @return 新增结果
     */
    @PostMapping("/addworkguide")
    R addWorkGuide(@RequestBody ComActWorkGuideVO workGuideVO, @RequestParam("userId")Long userId);
    /**
     * 办事指南_编辑
     * @param workGuideVO
     * @return 编辑结果
     */
    @PostMapping("/editworkguide")
    R editWorkGuide(@RequestBody ComActWorkGuideVO workGuideVO, @RequestParam("userId")Long userId);
    /**
     * 办事指南_详情
     * @param workGuideId
     * @return 详情
     */
    @GetMapping("/detailworkguide")
    R detailWorkGuide(@RequestParam("workGuideId")Long workGuideId);
    /**
     * 办事指南_分页
     * @param pageActWorkGuideDTO 查询参数
     * @return 分页集合
     */
    @PostMapping("/pageworkguide")
    R pageWorkGuide(@RequestBody PageActWorkGuideDTO pageActWorkGuideDTO);
    /**
     * 办事指南_删除
     * @param workGuideId 办事指南id
     * @return 删除结果
     */
    @PostMapping("/delectworkguide")
    R delectWorkGuide(@RequestParam("workGuideId") Long workGuideId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/WorkGuideApi.java
New file
@@ -0,0 +1,74 @@
package com.panzhihua.service_community.api;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.service_community.service.ComActWorkGuideService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @auther llming
 * @describe 办事指南
 */
@Slf4j
@RestController
@RequestMapping("/")
public class WorkGuideApi {
    @Resource
    private ComActWorkGuideService workGuideService;
    /**
     * 办事指南_新增
     * @param workGuideVO 新增信息
     * @return 新增结果
     */
    @PostMapping("addworkguide")
    @Transactional(rollbackFor = Exception.class)
    public R addWorkGuide(@RequestBody ComActWorkGuideVO workGuideVO, @RequestParam("userId")Long userId) {
        return workGuideService.addWorkGuide(workGuideVO,userId);
    }
    /**
     * 办事指南_编辑
     * @param workGuideVO
     * @return 编辑结果
     */
    @PostMapping("editworkguide")
    @Transactional(rollbackFor = Exception.class)
    public R putWorkGuide(@RequestBody ComActWorkGuideVO workGuideVO, @RequestParam("userId")Long userId) {
        return workGuideService.editWorkGuide(workGuideVO,userId);
    }
    /**
     * 办事指南_详情
     * @param workGuideId
     * @return 详情
     */
    @GetMapping("detailworkguide")
    public R detailWorkGuide(@RequestParam("workGuideId")Long workGuideId) {
        return workGuideService.detailWorkGuide(workGuideId);
    }
    /**
     * 办事指南_分页
     * @param pageActWorkGuideDTO 查询参数
     * @return 分页集合
     */
    @PostMapping("pageworkguide")
    public R pageWorkGuide(@RequestBody PageActWorkGuideDTO pageActWorkGuideDTO) {
        return workGuideService.pageWorkGuide(pageActWorkGuideDTO);
    }
    /**
     * 办事指南_删除
     * @param workGuideId 办事指南id
     * @return 删除结果
     */
    @PostMapping("delectworkguide")
    R delectWorkGuide(@RequestParam("workGuideId") Long workGuideId){
        return workGuideService.delectWorkGuide(workGuideId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWorkGuideDAO.java
New file
@@ -0,0 +1,32 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.model.vos.community.ComCvtServeVO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideDO;
import com.panzhihua.service_community.model.dos.ComMngFamilyDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * @description: 办事指南
 **/
@Mapper
public interface ComActWorkGuideDAO extends BaseMapper<ComActWorkGuideDO> {
    @Select("<script> " +
            "select id ,title,content,time_at,address,phone from com_act_work_guide order " +
            " <where>" +
            "<if test='pageActWorkGuideDTO.title != null and pageActWorkGuideDTO.title.trim() != &quot;&quot;'>" +
            "title like concat('%',#{pageActWorkGuideDTO.title},'%')"+
            " </if> " +
            " </where>" +
            "by create_by desc"+
            "</script>")
    IPage<ComActWorkGuideVO> pageWorkGuide(Page page, @Param("pageActWorkGuideDTO") PageActWorkGuideDTO pageActWorkGuideDTO);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActWorkGuideMaterialDAO.java
New file
@@ -0,0 +1,14 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.service_community.model.dos.ComActWorkGuideMaterialDO;
import com.panzhihua.service_community.model.dos.ComMngFamilyDO;
import org.apache.ibatis.annotations.Mapper;
/**
 * @description: 办事指南材料
 **/
@Mapper
public interface ComActWorkGuideMaterialDAO extends BaseMapper<ComActWorkGuideMaterialDO> {
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngFamilyDAO.java
New file
@@ -0,0 +1,14 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.service_community.model.dos.ComActActivityDO;
import com.panzhihua.service_community.model.dos.ComMngFamilyDO;
import org.apache.ibatis.annotations.Mapper;
/**
 * @description: 家庭关系信息
 **/
@Mapper
public interface ComMngFamilyDAO extends BaseMapper<ComMngFamilyDO> {
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActWorkGuideDO.java
New file
@@ -0,0 +1,42 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @auther llming
 * @describe: 办事指南
 */
@Data
@TableName(value = "com_act_work_guide")
public class ComActWorkGuideDO extends BaseDO implements Serializable {
    /**自增 id*/
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 办事指南标题
     */
    private String title;
    /**
     * 办事指南内容
     */
    private String content;
    /**
     * 办理时间
     */
    private String timeAt;
    /**
     * 办理地点
     */
    private String address;
    /**
     * 咨询电话
     */
    private String phone;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActWorkGuideMaterialDO.java
New file
@@ -0,0 +1,29 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @auther llming
 * @describe: 办事指南材料
 */
@Data
@TableName(value = "com_act_work_guide_material")
public class ComActWorkGuideMaterialDO implements Serializable {
    /**自增 id*/
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 申报材料名称
     */
    private String materialName;
    /**
     * 办事指南id
     */
    private Long workGuideId;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngFamilyDO.java
New file
@@ -0,0 +1,61 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @auther llming
 * @describe: 家庭基本信息
 */
@Data
@TableName(value = "com_mng_family")
public class ComMngFamilyDO implements Serializable {
    /**自增 id*/
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 身份证
     */
    private String cardNo;
    /**
     *  家庭成员关系 0父母 1配偶 2子女 3兄弟姐妹 4其他
     */
    private Integer relationType;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 健康状况
     */
    private String health;
    /**
     * 职业
     */
    private String occupation;
    /**
     * 证件照(人像面)照片
     */
    private String cardPhotoFront;
    /**
     * 证件照(国徽面)照片
     */
    private String cardPhotoBack;
    /**
     * 户口本照片
     */
    private String familyBook;
    /**
     * 用户id
     */
    private Long sysUserId;
    /**
     * 创建时间
     */
    private Date createAt;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActWorkGuideService.java
New file
@@ -0,0 +1,42 @@
package com.panzhihua.service_community.service;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
/**
 * @auther llming
 * @describe 办事指南
 */
public interface ComActWorkGuideService {
    /**
     * 办事指南_新增
     * @param workGuideVO 办事指南信息
     * @return 新增结果
     */
    R addWorkGuide(ComActWorkGuideVO workGuideVO,Long userId);
    /**
     * 办事指南_编辑
     * @param workGuideVO 编辑内容
     * @return 编辑结果
     */
    R editWorkGuide(ComActWorkGuideVO workGuideVO, Long userId);
    /**
     * 办事指南_详情
     * @param workGuideId 办事指南id
     * @return 社区详情
     */
    R detailWorkGuide(Long workGuideId);
    /**
     * 办事指南_分页
     * @param pageActWorkGuideDTO 查询参数
     * @return 分页集合
     */
    R pageWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO);
    /**
     * 办事指南_删除
     * @param workGuideId 办事指南id
     * @return 删除结果
     */
    R delectWorkGuide(Long workGuideId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java
New file
@@ -0,0 +1,141 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComActWorkGuideMaterialVO;
import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
import com.panzhihua.common.utlis.DifferentLongListUtil;
import com.panzhihua.service_community.dao.ComActWorkGuideDAO;
import com.panzhihua.service_community.dao.ComActWorkGuideMaterialDAO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideDO;
import com.panzhihua.service_community.model.dos.ComActWorkGuideMaterialDO;
import com.panzhihua.service_community.service.ComActWorkGuideService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @auther llming
 * @describe 办事指南
 */
@Service
public class ComActWorkGuideServiceImpl extends ServiceImpl<ComActWorkGuideDAO, ComActWorkGuideDO> implements ComActWorkGuideService {
    @Resource
    ComActWorkGuideMaterialDAO workGuideMaterialDAO;
    @Override
    public R addWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
        ComActWorkGuideDO comActWorkGuideDO = new ComActWorkGuideDO();
        BeanUtils.copyProperties(workGuideVO, comActWorkGuideDO);
        comActWorkGuideDO.setCreateBy(userId);
        this.baseMapper.insert(comActWorkGuideDO);
        //保存办事指南材料
        workGuideVO.getMaterials().forEach(material -> {
            ComActWorkGuideMaterialDO workGuideMaterialDO = new ComActWorkGuideMaterialDO();
            workGuideMaterialDO.setMaterialName(material.getMaterialName());
            workGuideMaterialDO.setWorkGuideId(comActWorkGuideDO.getId());
            workGuideMaterialDAO.insert(workGuideMaterialDO);
        });
        return R.ok();
    }
    @Override
    public R editWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
        if (workGuideVO.getId() == 0L) {
            return R.fail("Id有误!");
        }
        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideVO.getId());
        if (workGuideDO == null) {
            return R.fail("Id有误!");
        }
        BeanUtils.copyProperties(workGuideVO, workGuideDO);
        workGuideDO.setUpdateBy(userId);
        this.baseMapper.updateById(workGuideDO);
        if (workGuideVO.getMaterials().size() == 0) {//若编辑材料为null,执行删除操作
            workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
        } else {//若材料不为空,但是少了数据条数,也要执行删除
            List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
            //1、筛选vo里面和db里,需要删除的材料数据
            List<Long> voMaterialIds = workGuideVO.getMaterials().stream()
                    .filter(materialVo -> materialVo.getId() != null)
                    .map(ComActWorkGuideMaterialVO::getId)
                    .collect(Collectors.toList());
            List<Long> deleteMaterialIds = workGuideMaterialDOS.stream()
                    .filter(workGuideMaterialDO -> !voMaterialIds.contains(workGuideMaterialDO.getId()))
                    .map(ComActWorkGuideMaterialDO::getId)
                    .collect(Collectors.toList());
            if (deleteMaterialIds.size() != 0) {
                workGuideMaterialDAO.deleteBatchIds(deleteMaterialIds);
            }
            workGuideVO.getMaterials().forEach(materialsVO -> {
                if (materialsVO.getId() != null && materialsVO.getId() != 0L) {
                    ComActWorkGuideMaterialDO workGuideMaterialDO1 = workGuideMaterialDOS.stream().filter(workGuideMaterialDO -> workGuideMaterialDO.getId()
                            .equals(materialsVO.getId())).findFirst().orElse(null);
                    if (workGuideMaterialDO1 != null) {//2、如果db有,执行编辑
                        workGuideMaterialDO1.setMaterialName(materialsVO.getMaterialName());
                        workGuideMaterialDAO.updateById(workGuideMaterialDO1);
                    } else {//3、如果db没有,执行新增
                        ComActWorkGuideMaterialDO newWorkGuideMaterialDO = new ComActWorkGuideMaterialDO();
                        newWorkGuideMaterialDO.setMaterialName(materialsVO.getMaterialName());
                        newWorkGuideMaterialDO.setWorkGuideId(workGuideDO.getId());
                        workGuideMaterialDAO.insert(newWorkGuideMaterialDO);
                    }
                }
            });
        }
        return null;
    }
    @Override
    public R detailWorkGuide(Long workGuideId) {
        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideId);
        if (workGuideDO == null) {
            return R.fail("Id有误!");
        }
        ComActWorkGuideVO vo = new ComActWorkGuideVO();
        BeanUtils.copyProperties(workGuideDO, vo);
        List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
        workGuideMaterialDOS.forEach(workGuideMaterialDO -> {
            ComActWorkGuideMaterialVO workGuideMaterialVO = new ComActWorkGuideMaterialVO();
            workGuideMaterialVO.setId(workGuideMaterialDO.getId());
            workGuideMaterialVO.setMaterialName(workGuideMaterialDO.getMaterialName());
            vo.getMaterials().add(workGuideMaterialVO);
        });
        return R.ok(vo);
    }
    @Override
    public R pageWorkGuide(PageActWorkGuideDTO pageActWorkGuideDTO) {
        Page page = new Page<>();
        Long pageNum = pageActWorkGuideDTO.getPageNum();
        Long pageSize = pageActWorkGuideDTO.getPageSize();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActWorkGuideVO> iPage = this.baseMapper.pageWorkGuide(page, pageActWorkGuideDTO);
        return R.ok(iPage);
    }
    @Override
    public R delectWorkGuide(Long workGuideId) {
        this.baseMapper.deleteById(workGuideId);
        workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
        return  R.ok();
    }
}