mitao
2024-06-18 675b45becc2aa467b09921a482a8945d3ba0dd6c
1.提交【管理后台】 系统设置相关接口
1个文件已添加
21个文件已修改
566 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/OrderStatusEnum.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/MemberInvoiceOrder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/AgreementController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/Agreement.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/AgreementDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleAddDto.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleUpdateDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IAgreementService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AgreementServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
@@ -61,7 +61,7 @@
    @ApiModelProperty(value = "支付合计")
    private BigDecimal totalAmount;
    @ApiModelProperty(value = "订单状态 1=待支付 2=待发货 3=待收货 4=已完成 5=已取消 6=售后中 7=已退款 8=已退款退货")
    @ApiModelProperty(value = "订单状态 1=待支付 2=待发货 3=待收货 4=已完成 5=已取消 6=售后中")
    private OrderStatusEnum orderStatus;
    @ApiModelProperty(value = "支付时间")
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -1,16 +1,15 @@
package com.ruoyi.system.api.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
import java.util.Set;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.baomidou.mybatisplus.annotation.TableField;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * 角色表 sys_role
@@ -78,19 +77,6 @@
    @TableField(exist = false)
    private Set<String> permissions;
    /** 车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限 */
    private Integer carDataAuth;
    /** 车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限 */
    private Integer carTrainOperAuth;
    /** 合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限 */
    private Integer contractDataAuth;
    /** 公司id */
    private Integer companyId;
    public SysRole()
    {
@@ -101,39 +87,7 @@
    {
        this.roleId = roleId;
    }
    public Integer getCarDataAuth() {
        return carDataAuth;
    }
    public void setCarDataAuth(Integer carDataAuth) {
        this.carDataAuth = carDataAuth;
    }
    public Integer getCarTrainOperAuth() {
        return carTrainOperAuth;
    }
    public void setCarTrainOperAuth(Integer carTrainOperAuth) {
        this.carTrainOperAuth = carTrainOperAuth;
    }
    public Integer getContractDataAuth() {
        return contractDataAuth;
    }
    public void setContractDataAuth(Integer contractDataAuth) {
        this.contractDataAuth = contractDataAuth;
    }
    public Integer getCompanyId() {
        return companyId;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public Long getRoleId()
    {
        return roleId;
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/OrderStatusEnum.java
@@ -16,9 +16,7 @@
    GOODS_TO_BE_RECEIVED(3, "待收货"),
    FINISHED(4, "已完成"),
    CANCELED(5, "已取消"),
    AFTER_SALE(6, "售后中"),
    REFUNDED(7, "已退款"),
    REFUNDED_AND_RETURNED(8, "已退货退款");
    AFTER_SALE(6, "售后中");
    @EnumValue
    private final int code;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/MemberInvoiceOrder.java
@@ -44,7 +44,7 @@
    private BigDecimal orderMoney;
    @ApiModelProperty(value = "订单id")
    private Integer orderId;
    private Long orderId;
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java
@@ -208,5 +208,18 @@
            memberInvoice.setRemark(dto.getRemark());
        }
        this.updateById(memberInvoice);
        // 更新关联订单状态
        List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery()
                .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice)
                .list();
        Set<Long> orderIdSet = memberInvoiceOrderList.stream()
                .map(MemberInvoiceOrder::getOrderId)
                .collect(Collectors.toSet());
        if (!orderIdSet.isEmpty()) {
            iOrderService.lambdaUpdate()
                    .set(Order::getInvoiceStatus, dto.getInvoiceStatus() == 2 ? 3 : 4)
                    .in(Order::getId, orderIdSet).update();
        }
    }
}
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -262,9 +262,7 @@
            boolean result = handleRefund(paymentMethod, paylog, orderNo);
            if (result) {
                paylog.setState(3);// 已退款
                order.setOrderStatus(OrderStatusEnum.REFUNDED);
                paylogService.updateById(paylog);
                orderMapper.updateById(order);
            }
        }
    }
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1065,9 +1065,7 @@
            boolean result = handleRefund(paymentMethod, paylog, orderNo);
            if (result) {
                paylog.setState(3);// 已退款
                order.setOrderStatus(OrderStatusEnum.REFUNDED);
                iPaylogService.updateById(paylog);
                this.updateById(order);
            }
            OrderReturnRequest orderReturnRequest = new OrderReturnRequest();
            orderReturnRequest.setOrderId(id);
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/AgreementController.java
@@ -2,13 +2,21 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.system.domain.Agreement;
import com.ruoyi.system.domain.dto.AgreementDTO;
import com.ruoyi.system.service.IAgreementService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -21,14 +29,38 @@
 */
@RestController
@RequestMapping("/agreement")
@Api(tags = "系统管理相关接口")
public class AgreementController {
    @Resource
    private IAgreementService  iAgreementService;
    @RequestMapping("/getAgreement")
    @ResponseBody
    @RequestMapping(value = "/getAgreement/{agreementType}", method = RequestMethod.GET)
    @ApiOperation(value = "获取用户协议/隐私协议")
    public R<Agreement> getAgreement(@PathVariable("agreementType") Integer agreementType) {
        return R.ok(iAgreementService.getAgreement(agreementType));
    }
    /**
     * 管理后台-获取协议列表
     *
     * @return List<AgreementDTO>
     */
    @ApiOperation("管理后台-获取协议列表")
    @GetMapping("/list")
    public R<List<AgreementDTO>> getAgreementList() {
        List<Agreement> list = iAgreementService.lambdaQuery().last("limit 2").list();
        return R.ok(BeanUtils.copyList(list, AgreementDTO.class));
    }
    /**
     * 保存协议
     *
     * @param dto 协议对象
     */
    @ApiOperation(value = "管理后台-保存用户协议", notes = "接收一个包含多个AgreementDTO的列表")
    @PostMapping("/save")
    public R<?> saveAgreement(@Validated @RequestBody AgreementDTO dto) {
        iAgreementService.saveAgreement(dto);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CustomConfigController.java
@@ -10,6 +10,8 @@
import com.ruoyi.system.domain.vo.CustomConfigVO;
import com.ruoyi.system.service.ICustomConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@@ -112,4 +114,43 @@
    public R<MgtAfterSaleSettingDTO> getAfterSaleSetting() {
        return R.ok(iCustomConfigService.getAfterSaleSetting());
    }
    /**
     * 获取客服电话
     *
     * @return 客服电话
     */
    @ApiOperation("获取客服电话")
    @GetMapping("/service-phone")
    public R<String> servicePhone() {
        return R.ok(iCustomConfigService.getServicePhone());
    }
    /**
     * 保存客服电话
     *
     * @param phone 客服电话
     */
    @ApiOperation("保存客服电话")
    @PostMapping("/save-service-phone")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "phone", value = "客服电话", example = "18888888888", required = true)})
    public R<?> servicePhone(@RequestParam(value = "phone", required = true) String phone) {
        iCustomConfigService.updateServicePhone(phone);
        return R.ok();
    }
    /**
     * 删除客户电话
     *
     * @param phone 客服电话
     */
    @ApiOperation("删除客服电话")
    @PostMapping("/delete-service-phone")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "phone", value = "客服电话", example = "18888888888", required = true)})
    public R<?> deleteServicePhone(@RequestParam(value = "phone", required = true) String phone) {
        iCustomConfigService.deleteServicePhone(phone);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -1,18 +1,19 @@
package com.ruoyi.system.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.management.relation.Role;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.domain.SysMenus;
import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole;
@@ -27,21 +28,25 @@
import com.ruoyi.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysDept;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * 角色信息
@@ -72,30 +77,29 @@
    @Resource
    private SysMenuMapper menuMapper;
    @ApiOperation("获取所有角色信息根据公司id")
    // @ApiOperation("获取所有角色信息根据公司id")
    @GetMapping("/list")
    public AjaxResult list(Integer companyId)
    {
        SysRole role = new SysRole();
        role.setCompanyId(companyId);
        List<SysRole> list = roleService.selectRoleList(role);
        return AjaxResult.success(list);
    }
    @ApiOperation("获取所有角色信息根据公司id--分页")
    // @ApiOperation("获取所有角色信息根据公司id--分页")
    @GetMapping("/listPage")
    public AjaxResult listPage(Integer companyId,int pageNumber,int pageSize)
    {
        PageInfo<SysRole> pageInfo = new PageInfo<>(pageNumber, pageSize);
        PageInfo<SysRole> page = roleService.page(pageInfo, new LambdaQueryWrapper<SysRole>().eq(SysRole::getCompanyId, companyId).ne(SysRole::getRoleId,20));
        PageInfo<SysRole> page = roleService.page(pageInfo,
                new LambdaQueryWrapper<SysRole>().ne(SysRole::getRoleId, 20));
        return AjaxResult.success(page);
    }
    @ApiOperation("角色启用停用")
    // @ApiOperation("角色启用停用")
    @GetMapping("/roleStart")
    public AjaxResult roleStart(Long roleId)
    {
@@ -109,7 +113,7 @@
    }
    @Log(title = "角色管理", businessType = BusinessType.INSERT)
    @ApiOperation("添加角色")
    @PostMapping("/roleAdd")
    public AjaxResult roleAdd(@Validated @RequestBody RoleAddDto dto)
@@ -117,8 +121,7 @@
        SysRole role = new SysRole();
        role.setRoleName(dto.getRoleName());
        long count = roleService.count(Wrappers.lambdaQuery(SysRole.class)
                    .eq(SysRole::getRoleName,dto.getRoleName())
                    .eq(SysRole::getCompanyId,dto.getCompanyId()));
                .eq(SysRole::getRoleName, dto.getRoleName()));
        if(count>0){
            return AjaxResult.error("角色已存在,请重新输入");
        }
@@ -126,12 +129,8 @@
        if(CollectionUtils.isEmpty(menuIds1)){
            return AjaxResult.error("菜单id不能为空");
        }
        role.setMenuIds(dto.getMenuIds().toArray((new Long[dto.getMenuIds().size()])));
        role.setMenuIds(dto.getMenuIds().toArray(new Long[0]));
        // 添加角色
        role.setCompanyId(dto.getCompanyId());
        role.setCarDataAuth(dto.getCarDataAuth());
        role.setCarTrainOperAuth(dto.getCarTrainOperAuth());
        role.setContractDataAuth(dto.getContractDataAuth());
        role.setCreateBy(SecurityUtils.getUsername());
        role.setCreateTime(new Date());
        roleService.insertRole(role);
@@ -149,15 +148,13 @@
    @ApiOperation("角色详情")
    @GetMapping("/roleInfo")
    public AjaxResult roleInfo( @RequestParam Long id)
    @GetMapping("/roleInfo/{id}")
    public AjaxResult roleInfo(
            @ApiParam(value = "角色id", name = "id", required = true) @PathVariable("id") Long id)
    {
        SysRole role = roleService.selectRoleById(id);
        RoleInfoVo roleInfoVo = new RoleInfoVo();
        roleInfoVo.setRoleId(role.getRoleId());
        roleInfoVo.setCarDataAuth(role.getCarDataAuth());
        roleInfoVo.setCarTrainOperAuth(role.getCarTrainOperAuth());
        roleInfoVo.setContractDataAuth(role.getContractDataAuth());
        roleInfoVo.setRoleName(role.getRoleName());
        // 获取当前角色的菜单id
        List<Long> menusId = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, id)).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
@@ -224,6 +221,7 @@
        return AjaxResult.success(s1);
    }
    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
    @ApiOperation("编辑角色")
    @PostMapping("/roleUpdate")
    public AjaxResult roleUpdate(@Validated @RequestBody RoleUpdateDto dto)
@@ -231,14 +229,11 @@
        SysRole role = new SysRole();
        role.setRoleName(dto.getRoleName());
        SysRole one = roleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleId, dto.getRoleId()));
        List<SysRole> sysRoles = roleService.isExitUpdate(dto.getRoleName(),dto.getRoleId(),one.getCompanyId());
        List<SysRole> sysRoles = roleService.isExitUpdate(dto.getRoleName(), dto.getRoleId());
        if(sysRoles.size()>0){
            return AjaxResult.error("角色已存在,请重新输入");
        }
        // 编辑角色
        role.setCarDataAuth(dto.getCarDataAuth());
        role.setCarTrainOperAuth(dto.getCarTrainOperAuth());
        role.setContractDataAuth(dto.getContractDataAuth());
        role.setUpdateBy(SecurityUtils.getUsername());
        role.setUpdateTime(new Date());
        role.setRoleId(dto.getRoleId());
@@ -270,6 +265,14 @@
        return AjaxResult.success();
    }
    @Log(title = "角色管理", businessType = BusinessType.DELETE)
    @ApiOperation("删除角色")
    @DeleteMapping("/{id}")
    public AjaxResult removeRole(
            @ApiParam(name = "id", value = "角色ID", required = true) @PathVariable Long id) {
        roleService.removeRole(id);
        return AjaxResult.success();
    }
    @Log(title = "角色管理", businessType = BusinessType.EXPORT)
    @RequiresPermissions("system:role:export")
    @PostMapping("/export")
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/Agreement.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
@@ -32,24 +33,31 @@
    private Long id;
    @ApiModelProperty(value = "协议类型 1=用户协议 2=隐私协议")
    @TableField(value = "agreement_type")
    private Integer agreementType;
    @ApiModelProperty(value = "协议内容")
    @TableField(value = "agreement_content")
    private String agreementContent;
    @ApiModelProperty(value = "创建者")
    @TableField(value = "create_by")
    private String createBy;
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_time")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新者")
    @TableField(value = "update_by")
    private String updateBy;
    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_time")
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)")
    @TableField(value = "del_flag")
    private Integer delFlag;
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/AgreementDTO.java
New file
@@ -0,0 +1,30 @@
package com.ruoyi.system.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author mitao
 * @date 2024/6/18
 */
@Data
@ApiModel(value = "协议对象")
public class AgreementDTO implements Serializable {
    private static final long serialVersionUID = 7144114465287126540L;
    @ApiModelProperty(value = "协议id")
    private Long id;
    @ApiModelProperty(value = "协议类型 1=用户协议 2=隐私协议")
    @NotNull(message = "协议类型不能为空")
    private Integer agreementType;
    @ApiModelProperty(value = "协议内容")
    @NotBlank(message = "协议内容不能为空")
    private String agreementContent;
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleAddDto.java
@@ -1,27 +1,24 @@
package com.ruoyi.system.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class RoleAddDto {
@ApiModel("角色添加数据传输对象")
public class RoleAddDto implements Serializable {
    private static final long serialVersionUID = 5748474501961956215L;
    @ApiModelProperty("角色名称")
    @NotBlank(message = "角色名称不能为空")
    private String roleName;
    @ApiModelProperty("车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限")
    private Integer carDataAuth;
    @ApiModelProperty("车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限")
    private Integer carTrainOperAuth;
    @ApiModelProperty("合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限")
    private Integer contractDataAuth;
    @ApiModelProperty("公司id")
    @NotNull(message = "公司id不能为空")
    private Integer companyId;
    @ApiModelProperty("菜单id")
    @NotNull(message = "菜单id不能为空")
    @NotEmpty(message = "菜单id不能为空")
    private List<Long> menuIds;
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/RoleUpdateDto.java
@@ -1,24 +1,27 @@
package com.ruoyi.system.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class RoleUpdateDto {
public class RoleUpdateDto implements Serializable {
    private static final long serialVersionUID = 8640434597899168206L;
    @ApiModelProperty("角色id")
    @NotNull(message = "角色id不能为空")
    private Long roleId;
    @ApiModelProperty("角色名称")
    @NotBlank(message = "角色名称不能为空")
    private String roleName;
    @ApiModelProperty("车辆数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限")
    private Integer carDataAuth;
    @ApiModelProperty("车务数据权限:1=所有数据 2=已租 3=未租 4=已租(仅自己负责的合同) 5=无数据权限")
    private Integer carTrainOperAuth;
    @ApiModelProperty("合同数据权限:1=所有数据 2=仅自己负责的合同 3=无数据权限")
    private Integer contractDataAuth;
    @ApiModelProperty("菜单id")
    @NotEmpty(message = "菜单id不能为空")
    private List<Long> menuIds;
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -1,9 +1,8 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.api.domain.SysRole;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
@@ -108,7 +107,7 @@
     */
    public int deleteRoleByIds(Long[] roleIds);
    List<SysRole> isExitUpdate(@Param("roleName") String roleName, @Param("roleId") Long roleId, @Param("companyId") Integer companyId);
    List<SysRole> isExitUpdate(@Param("roleName") String roleName, @Param("roleId") Long roleId);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/IAgreementService.java
@@ -2,9 +2,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.domain.Agreement;
import org.springframework.web.bind.annotation.PathVariable;
import com.ruoyi.system.domain.dto.AgreementDTO;
/**
 * <p>
@@ -18,4 +17,10 @@
    Agreement getAgreement(Integer agreementType);
    /**
     * 保存协议
     *
     * @param dto 协议对象
     */
    void saveAgreement(AgreementDTO dto);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ICustomConfigService.java
@@ -58,4 +58,25 @@
     * @return List<CustomConfigVO>
     */
    MgtAfterSaleSettingDTO getAfterSaleSetting();
    /**
     * 保存客服电话
     *
     * @param phone 客服电话
     */
    void updateServicePhone(String phone);
    /**
     * 获取客服电话
     *
     * @return 客服电话
     */
    String getServicePhone();
    /**
     * 删除客户电话
     *
     * @param phone 客服电话
     */
    void deleteServicePhone(String phone);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
@@ -1,11 +1,10 @@
package com.ruoyi.system.service;
import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.domain.SysUserRole;
import java.util.List;
import java.util.Set;
/**
 * 角色业务层
@@ -173,6 +172,7 @@
     */
    public int insertAuthUsers(Long roleId, Long[] userIds);
    List<SysRole> isExitUpdate(String roleName, Long roleId,Integer companyId);
    List<SysRole> isExitUpdate(String roleName, Long roleId);
    void removeRole(Long id);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AgreementServiceImpl.java
@@ -3,9 +3,14 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.domain.Agreement;
import com.ruoyi.system.domain.dto.AgreementDTO;
import com.ruoyi.system.mapper.AgreementMapper;
import com.ruoyi.system.service.IAgreementService;
import java.time.LocalDateTime;
import java.util.Optional;
import org.springframework.stereotype.Service;
/**
@@ -26,4 +31,30 @@
        wrapper.eq(Agreement::getDelFlag,0);
        return this.getOne(wrapper);
    }
    /**
     * 保存协议
     *
     * @param dto 协议对象
     */
    @Override
    public void saveAgreement(AgreementDTO dto) {
        Optional<Agreement> agreementOpt = this.lambdaQuery()
                .eq(Agreement::getAgreementType, dto.getAgreementType()).oneOpt();
        Agreement agreement;
        if (agreementOpt.isPresent()) {
            agreement = agreementOpt.get();
            agreement.setAgreementType(dto.getAgreementType());
            agreement.setAgreementContent(dto.getAgreementContent());
            agreement.setUpdateBy(SecurityUtils.getUsername());
            agreement.setUpdateTime(LocalDateTime.now());
            this.updateById(agreement);
        } else {
            agreement = BeanUtils.copyBean(dto, Agreement.class);
            agreement.setCreateBy(SecurityUtils.getUsername());
            agreement.setCreateTime(LocalDateTime.now());
            this.save(agreement);
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CustomConfigServiceImpl.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.system.api.constants.ConfigEnum;
import com.ruoyi.system.api.domain.CustomConfig;
@@ -11,8 +13,11 @@
import com.ruoyi.system.mapper.CustomConfigMapper;
import com.ruoyi.system.service.ICustomConfigService;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -179,4 +184,85 @@
        }
        return dto;
    }
    /**
     * 保存客服电话
     *
     * @param phone 客服电话
     */
    @Override
    public void updateServicePhone(String phone) {
        Optional<CustomConfig> customConfigByKey = getCustomConfigByKey(
                ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
        if (customConfigByKey.isPresent()) {
            CustomConfig customConfig = customConfigByKey.get();
            String[] split = customConfig.getConfigValue().split(",");
            if (split.length > 1) {
                throw new ServiceException("客户电话最多配置两个");
            }
            boolean flag = Arrays.asList(split).contains(phone);
            if (flag) {
                throw new ServiceException("客户电话已存在");
            }
            if (StringUtils.isBlank(customConfig.getConfigValue())) {
                customConfig.setConfigValue(phone);
            } else {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append(customConfig.getConfigValue());
                stringBuilder.append(",");
                stringBuilder.append(phone);
                customConfig.setConfigValue(stringBuilder.toString());
            }
            customConfig.setUpdateTime(LocalDateTime.now());
            this.updateById(customConfig);
        } else {
            CustomConfig config = new CustomConfig();
            config.setConfigKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
            config.setConfigType(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyType());
            config.setConfigName(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyName());
            config.setConfigValue(phone);
            config.setCreateTime(LocalDateTime.now());
            this.save(config);
        }
    }
    /**
     * 获取客服电话
     *
     * @return 客服电话
     */
    @Override
    public String getServicePhone() {
        Optional<CustomConfig> customConfigByKey = getCustomConfigByKey(
                ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
        return customConfigByKey.map(CustomConfig::getConfigValue).orElse(null);
    }
    /**
     * 删除客户电话
     *
     * @param phone 客服电话
     */
    @Override
    public void deleteServicePhone(String phone) {
        Optional<CustomConfig> customConfigByKey = getCustomConfigByKey(
                ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
        if (customConfigByKey.isPresent()) {
            CustomConfig customConfig = customConfigByKey.get();
            String configValue = customConfig.getConfigValue();
            if (StringUtils.isNotBlank(configValue)) {
                String[] split = configValue.split(",");
                // 判断当前phone是否存在
                boolean flag = Arrays.asList(split).contains(phone);
                if (flag) {
                    // 删除 split 中与phone相同的元素
                    configValue = Arrays.stream(split).filter(s -> !s.equals(phone))
                            .collect(Collectors.joining(","));
                    customConfig.setConfigValue(configValue);
                    this.updateById(customConfig);
                }
            }
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -1,23 +1,6 @@
package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.domain.SysRoleDept;
import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysRoleDeptMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils;
@@ -26,6 +9,22 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.domain.SysRoleDept;
import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysRoleDeptMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysRoleService;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * 角色 业务层处理
@@ -249,9 +248,9 @@
    public int updateRole(SysRole role)
    {
        // 修改角色信息
//        roleMapper.updateRole(role);
        // roleMapper.updateRole(role);
        // 删除角色与菜单关联
//        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
        roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
        return   roleMapper.updateRole(role);
    }
@@ -440,7 +439,17 @@
    }
    @Override
    public List<SysRole> isExitUpdate(String roleName, Long roleId,Integer companyId) {
        return roleMapper.isExitUpdate(roleName,roleId,companyId);
    public List<SysRole> isExitUpdate(String roleName, Long roleId) {
        return roleMapper.isExitUpdate(roleName, roleId);
    }
    @Override
    public void removeRole(Long id) {
        SysRole sysRole = this.getById(id);
        if (StringUtils.isNull(sysRole)) {
            throw new ServiceException("角色不存在");
        }
        sysRole.setDelFlag("2");
        this.updateRole(sysRole);
    }
}
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -93,7 +93,10 @@
         where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
    </select>
    <select id="isExitUpdate" resultType="com.ruoyi.system.api.domain.SysRole">
        select role_name romeName from sys_role where role_name=#{roleName} and companyId =#{companyId} and  role_id != #{roleId}
            select role_name romeName
            from sys_role
            where role_name = #{roleName}
                and role_id != #{roleId}
    </select>
    <insert id="insertRole" parameterType="com.ruoyi.system.api.domain.SysRole" useGeneratedKeys="true" keyProperty="roleId">
@@ -124,10 +127,6 @@
             <if test="status != null and status != ''">#{status},</if>
             <if test="remark != null and remark != ''">#{remark},</if>
             <if test="createBy != null and createBy != ''">#{createBy},</if>
             <if test="carDataAuth != null and carDataAuth != ''">#{carDataAuth},</if>
             <if test="carTrainOperAuth != null and carTrainOperAuth != ''">#{carTrainOperAuth},</if>
             <if test="contractDataAuth != null and contractDataAuth != ''">#{contractDataAuth},</if>
             <if test="companyId != null and companyId != ''">#{companyId},</if>
             sysdate()
         )
    </insert>
@@ -144,9 +143,6 @@
             <if test="status != null and status != ''">status = #{status},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
             <if test="carDataAuth != null and carDataAuth != ''">carDataAuth = #{carDataAuth},</if>
             <if test="carTrainOperAuth != null and carTrainOperAuth != ''">carTrainOperAuth = #{carTrainOperAuth},</if>
             <if test="contractDataAuth != null and contractDataAuth != ''">contractDataAuth = #{contractDataAuth},</if>
             update_time = sysdate()
         </set>
         where role_id = #{roleId}