Browse Source

费率配置接口

zhj 2 years ago
parent
commit
ee58b90860

+ 2 - 0
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -69,6 +69,8 @@ public enum InterfaceResultEnum {
     LACK_REPAIR_PERSONNEL_GROUP_ID_ERROR("0262","维修人员组别不能为空","",""),
     LACK_REPAIR_PERSONNEL_EMAIL_ERROR("0263","维修人员邮箱不能为空","",""),
     USER_HAS_NOT_MODIFY_PRIVILEGE("0264","用户没有修改权限","",""),
+    LACK_RATE_NAME_ERROR("0265","费率名称不能为空","",""),
+    RATE_NAME_UNIQUE_ERROR("0266","费率名称重复","",""),
     ;
     private String code;
     private String msgCn;

+ 165 - 0
src/main/java/com/welampiot/controller/RateController.java

@@ -0,0 +1,165 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.RateDTO;
+import com.welampiot.service.RateService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.RateDetailsVO;
+import com.welampiot.vo.RateVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.Objects;
+
+/**
+ * ClassName: RateController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:35
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/rate")
+public class RateController {
+    @Autowired
+    private RateService rateService;
+
+    @Autowired
+    private ToolUtils toolUtils;
+
+    /**
+     * 获取费率列表
+     * @param request 用户id
+     * @return 返回费率列表list以及总页数total
+     */
+    @RequestMapping(value = "/getList", method = RequestMethod.POST)
+    public BaseResult getList(HttpServletRequest request) {
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        String username = request.getParameter("username");
+        if (username == null || username.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+
+        RateDTO dto = new RateDTO();
+        dto.setPage(count * (page - 1));
+        dto.setCount(count);
+        Integer userid = rateService.getUseridByUsername(username);
+        dto.setUserid(userid);
+
+        RateVO rateVO = rateService.getRateListByDTO(dto);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,rateVO);
+    }
+
+    /**
+     * 获取费率详情
+     * @param request 费率id
+     * @return 返回费率详情
+     */
+    @RequestMapping(value = "details", method = RequestMethod.POST)
+    public BaseResult details(HttpServletRequest request) {
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        int id = (int) toolUtils.getRequestContent(request,"id",1);
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        RateDetailsVO rateDetailsVO = rateService.getRateDetailsByDTO(id);
+        if (rateDetailsVO == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,rateDetailsVO);
+    }
+
+    /**
+     * 添加编辑费率
+     * @param request 要添加编辑的费率属性
+     * @return 更新数据
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public BaseResult save(HttpServletRequest request) {
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        int id = (int) toolUtils.getRequestContent(request,"id",1);
+        String username = request.getParameter("username");
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        String name = request.getParameter("name");
+        String rateOne = request.getParameter("rateOne");
+        String rateTwo = request.getParameter("rateTwo");
+        String rateThree = request.getParameter("rateThree");
+        String rateFour = request.getParameter("rateFour");
+
+        RateDTO dto = new RateDTO();
+        dto.setName(name);
+        dto.setRateOne(rateOne);
+        dto.setRateTwo(rateTwo);
+        dto.setRateThree(rateThree);
+        dto.setRateFour(rateFour);
+
+        SimpleDateFormat simpleDateFormat;
+        Integer userid = rateService.getUseridByUsername(username);
+        if (id == 0) { // 添加
+            dto.setUserid(userid);
+            simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            dto.setCreateTime(simpleDateFormat.format(System.currentTimeMillis()));
+            if (name == null || name.length() == 0)
+                return toolUtils.response(InterfaceResultEnum.LACK_RATE_NAME_ERROR,version);
+            RateDTO rateDTO = new RateDTO();
+            rateDTO.setName(name);
+            rateDTO.setUserid(userid);
+            if (rateService.finRateNameByDTO(rateDTO) > 0)
+                return toolUtils.response(InterfaceResultEnum.RATE_NAME_UNIQUE_ERROR,version);
+            rateService.addRateDataByDTO(dto);
+        } else { // 编辑
+            dto.setId(id);
+            Integer useridById = rateService.findUseridById(id);
+            if (!Objects.equals(useridById,userid))
+                return toolUtils.response(InterfaceResultEnum.USER_HAS_NOT_MODIFY_PRIVILEGE,version);
+            RateDTO rateDTO = new RateDTO();
+            rateDTO.setId(id);
+            rateDTO.setName(name);
+            rateDTO.setUserid(userid);
+            if (rateService.finRateNameByDTO(rateDTO) > 0)
+                return toolUtils.response(InterfaceResultEnum.RATE_NAME_UNIQUE_ERROR,version);
+            rateService.updateRateDataByDTO(dto);
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 删除费率
+     * @param request 要删除的费率的id
+     * @return 删除成功
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    public BaseResult del(HttpServletRequest request){
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        String id = request.getParameter("id");
+        if (id == null || id.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        String[] split = id.split(",");
+        for (String rateId : split) {
+            int l = Integer.parseInt(rateId);
+            rateService.deleteRateDataById(l);
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 获取费率下拉列表
+     * @param request 用户id
+     * @return 返回费率下拉列表
+     */
+    @RequestMapping(value = "/nav", method = RequestMethod.POST)
+    public BaseResult nav(HttpServletRequest request) {
+        int version = (int) toolUtils.getRequestContent(request,"version",1);
+        String username = request.getParameter("username");
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        Integer userid = rateService.getUseridByUsername(username);
+        RateVO rateVO = rateService.getRateDropDownListByUserid(userid);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,rateVO);
+    }
+}

+ 6 - 0
src/main/java/com/welampiot/controller/RepairController.java

@@ -52,6 +52,8 @@ public class RepairController {
         int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
         int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
         String username = (String) toolUtils.getRequestContent(request,"username",2);
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
         String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
 
         RepairPersonnelDTO dto = new RepairPersonnelDTO();
@@ -96,6 +98,8 @@ public class RepairController {
         String number = request.getParameter("number");
         String company = request.getParameter("company");
         String username = request.getParameter("username");
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
 
         RepairPersonnelDTO dto = new RepairPersonnelDTO();
         dto.setName(name);
@@ -203,6 +207,8 @@ public class RepairController {
     public BaseResult nav(HttpServletRequest request) {
         int version = (int) toolUtils.getRequestContent(request,"version",1);
         String username = request.getParameter("username");
+        if (username == null || username.length() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
         Integer id = repairPersonnelService.getUserIdByUsername(username);
         RepairPersonnelVO repairPersonnelVO = repairPersonnelService.getRepairPersonnelDropDownListByDTO(id);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,repairPersonnelVO);

+ 37 - 0
src/main/java/com/welampiot/dao/RateDao.java

@@ -0,0 +1,37 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.RateDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ClassName: RateDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:23
+ * @Version: v1.0
+ */
+public interface RateDao {
+    List<RateDTO> getRateListByDTO(RateDTO dto);
+
+    Integer getUseridByUsername(@Param("username") String username);
+
+    Integer getRateTotalByUserid(@Param("userid") Integer id);
+
+    RateDTO getRateDetailsByDTO(@Param("id") Integer id);
+
+    Integer findUseridById(@Param("id") Integer id);
+
+    void addRateDataByDTO(RateDTO dto);
+
+    void updateRateDataByDTO(RateDTO dto);
+
+    Integer finRateNameByDTO(RateDTO dto);
+
+    void deleteRateDataById(@Param("id") Integer id);
+
+    List<RateDTO> getRateDropDownListByUserid(@Param("id") Integer id);
+}

+ 47 - 0
src/main/java/com/welampiot/dto/RateDTO.java

@@ -0,0 +1,47 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: RateDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:00
+ * @Version: v1.0
+ */
+@Data
+public class RateDTO implements Serializable {
+    /** 主键 **/
+    private Integer id;
+
+    /** 用户id **/
+    private Integer userid;
+
+    /** 费率名称 **/
+    private String name;
+
+    /** 第一费率 **/
+    private String rateOne;
+
+    /** 第二费率 **/
+    private String rateTwo;
+
+    /** 第三费率 **/
+    private String rateThree;
+
+    /** 第四费率 **/
+    private String rateFour;
+
+    /** 创建时间 **/
+    private String createTime;
+
+    private Integer page;
+
+    private Integer count;
+
+    private static final long serialVersionUID = 1L;
+}

+ 36 - 0
src/main/java/com/welampiot/service/RateService.java

@@ -0,0 +1,36 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.RateDTO;
+import com.welampiot.vo.RateDetailsVO;
+import com.welampiot.vo.RateVO;
+
+/**
+ * ClassName: RateService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:28
+ * @Version: v1.0
+ */
+public interface RateService {
+    RateVO getRateListByDTO(RateDTO dto);
+
+    Integer getUseridByUsername(String username);
+
+    Integer getRateTotalByUserid(Integer id);
+
+    RateDetailsVO getRateDetailsByDTO(Integer id);
+
+    Integer findUseridById(Integer id);
+
+    void addRateDataByDTO(RateDTO dto);
+
+    void updateRateDataByDTO(RateDTO dto);
+
+    Integer finRateNameByDTO(RateDTO dto);
+
+    void deleteRateDataById(Integer id);
+
+    RateVO getRateDropDownListByUserid(Integer id);
+}

+ 107 - 0
src/main/java/com/welampiot/service/impl/RateServiceImpl.java

@@ -0,0 +1,107 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.RateDao;
+import com.welampiot.dto.RateDTO;
+import com.welampiot.service.RateService;
+import com.welampiot.vo.RateDetailsVO;
+import com.welampiot.vo.RateVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * ClassName: RateServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:29
+ * @Version: v1.0
+ */
+@Service
+public class RateServiceImpl implements RateService {
+    @Autowired
+    private RateDao rateDao;
+
+    @Override
+    public RateVO getRateListByDTO(RateDTO dto) {
+        RateVO rateVO = new RateVO();
+        Integer rateTotal = this.getRateTotalByUserid(dto.getUserid());
+        if (dto.getCount() <= 0) dto.setCount(16);
+        rateVO.setTotal((int) Math.ceil((double) rateTotal / dto.getCount()));
+        List<RateDTO> rateListByDTO = rateDao.getRateListByDTO(dto);
+        List<RateDTO> list = new ArrayList<>();
+        rateListByDTO.forEach(dto1 -> {
+            if (dto1.getRateOne() == null || dto1.getRateOne().equals("0.0")) {
+                dto1.setRateOne("0");
+            }
+            if (dto1.getRateTwo() == null || dto1.getRateTwo().equals("0.0")) {
+                dto1.setRateTwo("0");
+            }
+            if (dto1.getRateThree() == null || dto1.getRateThree().equals("0.0")) {
+                dto1.setRateThree("0");
+            }
+            if (dto1.getRateFour() == null || dto1.getRateFour().equals("0.0")) {
+                dto1.setRateFour("0");
+            }
+            list.add(dto1);
+        });
+        rateVO.setList(list);
+        return rateVO;
+    }
+
+    @Override
+    public Integer getUseridByUsername(String username) {
+        return rateDao.getUseridByUsername(username);
+    }
+
+    @Override
+    public Integer getRateTotalByUserid(Integer id) {
+        return rateDao.getRateTotalByUserid(id);
+    }
+
+    @Override
+    public RateDetailsVO getRateDetailsByDTO(Integer id) {
+        RateDetailsVO rateDetailsVO = new RateDetailsVO();
+        RateDTO rateDTO = rateDao.getRateDetailsByDTO(id);
+        if (rateDTO == null) return null;
+        BeanUtils.copyProperties(rateDTO,rateDetailsVO);
+        return rateDetailsVO;
+    }
+
+    @Override
+    public Integer findUseridById(Integer id) {
+        return rateDao.findUseridById(id);
+    }
+
+    @Override
+    public void addRateDataByDTO(RateDTO dto) {
+        rateDao.addRateDataByDTO(dto);
+    }
+
+    @Override
+    public void updateRateDataByDTO(RateDTO dto) {
+        rateDao.updateRateDataByDTO(dto);
+    }
+
+    @Override
+    public Integer finRateNameByDTO(RateDTO dto) {
+        return rateDao.finRateNameByDTO(dto);
+    }
+
+    @Override
+    public void deleteRateDataById(Integer id) {
+        rateDao.deleteRateDataById(id);
+    }
+
+    @Override
+    public RateVO getRateDropDownListByUserid(Integer id) {
+        RateVO rateVO = new RateVO();
+        List<RateDTO> rateDropDownListByUserid = rateDao.getRateDropDownListByUserid(id);
+        rateVO.setList(rateDropDownListByUserid);
+        return rateVO;
+    }
+}

+ 43 - 0
src/main/java/com/welampiot/vo/RateDetailsVO.java

@@ -0,0 +1,43 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: RateDetailsVO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:00
+ * @Version: v1.0
+ */
+@Data
+public class RateDetailsVO implements Serializable {
+    /** 主键 **/
+    private String id;
+
+    /** 用户id **/
+    private String userid;
+
+    /** 费率名称 **/
+    private String name;
+
+    /** 第一费率 **/
+    private String rateOne;
+
+    /** 第二费率 **/
+    private String rateTwo;
+
+    /** 第三费率 **/
+    private String rateThree;
+
+    /** 第四费率 **/
+    private String rateFour;
+
+    /** 创建时间 **/
+    private String createTime;
+
+    private static final long serialVersionUID = 1L;
+}

+ 26 - 0
src/main/java/com/welampiot/vo/RateVO.java

@@ -0,0 +1,26 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.RateDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: RateVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/5/17 - 10:29
+ * @Version: v1.0
+ */
+@Data
+public class RateVO implements Serializable {
+
+    private Integer total;
+
+    private List<RateDTO> list;
+
+    private static final long serialVersionUID = 1L;
+}

+ 84 - 0
src/main/resources/mapper/RateMapper.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.RateDao">
+
+    <select id="getRateListByDTO" resultType="com.welampiot.dto.RateDTO">
+        select r.id,r.name,r.rate_one rateOne,r.rate_two rateTwo,r.rate_three rateThree,r.rate_four rateFour
+        from rate r
+        where r.userid = #{userid}
+        <if test="page >= 0 and count > 0">
+            limit #{page},#{count}
+        </if>
+    </select>
+
+    <!-- 根据用户名查出对应的用户id -->
+    <select id="getUseridByUsername" resultType="Integer">
+        select u.id
+        from `user` u
+        where u.username = #{username}
+    </select>
+
+    <!-- 编辑时根据要编辑的id查出对应的用户id -->
+    <select id="findUseridById" resultType="Integer">
+        select r.userid
+        from rate r
+        where r.id = #{id}
+    </select>
+
+    <select id="getRateTotalByUserid" resultType="Integer">
+        select count(r.id)
+        from rate r
+        where r.userid = #{userid}
+    </select>
+    
+    <select id="getRateDetailsByDTO" resultType="RateDTO">
+        select r.name,r.rate_one rateOne,r.rate_two rateTwo,r.rate_three rateThree,r.rate_four rateFour
+        from rate r
+        where r.id = #{id}
+    </select>
+
+    <insert id="addRateDataByDTO" parameterType="com.welampiot.dto.RateDTO" useGeneratedKeys="true" keyProperty="id">
+        insert into rate(name,rate_one,rate_two,rate_three,rate_four,userid,createtime)
+        values
+            (#{name},#{rateOne},#{rateTwo},#{rateThree},#{rateFour},#{userid},#{createTime})
+    </insert>
+
+    <update id="updateRateDataByDTO" parameterType="com.welampiot.dto.RateDTO">
+        update rate
+        set
+            name = #{name},
+            rate_one = #{rateOne},
+            rate_two = #{rateTwo},
+            rate_three = #{rateThree},
+            rate_four = #{rateFour}
+        where id = #{id} and userid = #{userid}
+    </update>
+
+    <select id="finRateNameByDTO" resultType="Integer">
+        select count(*)
+        from rate r
+        where 1=1
+        <if test="userid != null">
+            and r.userid = #{userid}
+        </if>
+        <if test="name != null">
+            and r.name = #{name}
+        </if>
+        <if test="id != null">
+            and r.id != #{id}
+        </if>
+    </select>
+
+    <delete id="deleteRateDataById">
+        delete
+        from rate
+        where id = #{id};
+    </delete>
+
+    <select id="getRateDropDownListByUserid" resultType="RateDTO">
+        select r.id,r.name
+        from rate r
+        where r.userid = #{id}
+    </select>
+
+</mapper>