MrShi
2025-09-10 1ff2f63ddc05988ed7d698ef93a905659365446f
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/intelligent_manufacture_wuhu
已添加15个文件
已修改3个文件
1520 ■■■■■ 文件已修改
serverWuhu/src/main/java/com/doumee/api/business/ApplicationInfoController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/api/business/DemandRecordController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/api/business/LabelsController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/api/business/ServerProviderController.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/core/utils/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/core/utils/Date.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/ApplicationInfoMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/DemandRecordMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/ServerProviderMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/model/ApplicationInfo.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/model/DemandRecord.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/dao/business/model/ServerProvider.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/ApplicationInfoService.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/DemandRecordService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/ServerProviderService.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/impl/ApplicationInfoServiceImpl.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/impl/DemandRecordServiceImpl.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/service/business/impl/ServerProviderServiceImpl.java 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverWuhu/src/main/java/com/doumee/api/business/ApplicationInfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.ApplicationInfo;
import com.doumee.dao.business.model.ServerProvider;
import com.doumee.service.business.ApplicationInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Api(tags = "应用管理")
@RestController
@RequestMapping("/business/applicationInfo")
public class ApplicationInfoController extends BaseController {
    @Autowired
    private ApplicationInfoService applicationInfoService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:applicationinfo:create")
    public ApiResponse create(@RequestBody ApplicationInfo applicationInfo) {
        return ApiResponse.success(applicationInfoService.create(applicationInfo));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:applicationinfo:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        applicationInfoService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:applicationinfo:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        applicationInfoService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:applicationinfo:update")
    public ApiResponse updateById(@RequestBody ApplicationInfo applicationInfo) {
        applicationInfoService.updateById(applicationInfo);
        return ApiResponse.success(null);
    }
    @ApiOperation("修改状态")
    @PostMapping("/updateStatus")
    @RequiresPermissions("business:applicationinfo:update")
    public ApiResponse updateStatus(@RequestBody ApplicationInfo applicationInfo) {
        applicationInfoService.updateStatus(applicationInfo);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:applicationinfo:query")
    public ApiResponse<PageData<ApplicationInfo>> findPage (@RequestBody PageWrap<ApplicationInfo> pageWrap) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Objects.nonNull(loginUserInfo)&&Objects.nonNull(loginUserInfo.getType())&&!Constants.equalsInteger(loginUserInfo.getType(),Constants.ZERO)){
            pageWrap.getModel().setStatus(Constants.ZERO);
        }
        return ApiResponse.success(applicationInfoService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:applicationinfo:exportExcel")
    public void exportExcel (@RequestBody PageWrap<ApplicationInfo> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(ApplicationInfo.class).export(applicationInfoService.findPage(pageWrap).getRecords(), "应用管理", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:applicationinfo:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(applicationInfoService.findById(id));
    }
}
serverWuhu/src/main/java/com/doumee/api/business/DemandRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.business.model.DemandRecord;
import com.doumee.service.business.DemandRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Api(tags = "需求记录")
@RestController
@RequestMapping("/business/demandRecord")
public class DemandRecordController extends BaseController {
    @Autowired
    private DemandRecordService demandRecordService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:demandrecord:create")
    public ApiResponse create(@RequestBody DemandRecord demandRecord) {
        return ApiResponse.success(demandRecordService.create(demandRecord));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:demandrecord:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        demandRecordService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:demandrecord:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        demandRecordService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:demandrecord:update")
    public ApiResponse updateById(@RequestBody DemandRecord demandRecord) {
        demandRecordService.updateById(demandRecord);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:demandrecord:query")
    public ApiResponse<PageData<DemandRecord>> findPage (@RequestBody PageWrap<DemandRecord> pageWrap) {
        return ApiResponse.success(demandRecordService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:demandrecord:exportExcel")
    public void exportExcel (@RequestBody PageWrap<DemandRecord> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(DemandRecord.class).export(demandRecordService.findPage(pageWrap).getRecords(), "需求记录", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:demandrecord:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(demandRecordService.findById(id));
    }
}
serverWuhu/src/main/java/com/doumee/api/business/LabelsController.java
@@ -1,11 +1,13 @@
package com.doumee.api.business;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Labels;
import com.doumee.service.business.LabelsService;
import io.swagger.annotations.Api;
@@ -74,6 +76,15 @@
        return ApiResponse.success(labelsService.findPage(pageWrap));
    }
    @ApiOperation("列表查询")
    @PostMapping("/list")
    public ApiResponse<List<Labels>> list (@RequestBody Labels labels) {
        return ApiResponse.success(labelsService.findList(labels));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:labels:exportExcel")
serverWuhu/src/main/java/com/doumee/api/business/ServerProviderController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.doumee.api.business;
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.ServerProvider;
import com.doumee.service.business.ServerProviderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Api(tags = "服务商信息")
@RestController
@RequestMapping("/business/serverProvider")
public class ServerProviderController extends BaseController {
    @Autowired
    private ServerProviderService serverProviderService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:serverprovider:create")
    public ApiResponse create(@RequestBody ServerProvider serverProvider) {
        return ApiResponse.success(serverProviderService.create(serverProvider));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:serverprovider:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        serverProviderService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("修改状态")
    @PostMapping("/updateStatus")
    @RequiresPermissions("business:serverprovider:update")
    public ApiResponse updateStatus(@RequestBody ServerProvider serverProvider) {
        serverProviderService.updateStatus(serverProvider);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:serverprovider:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        serverProviderService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:serverprovider:update")
    public ApiResponse updateById(@RequestBody ServerProvider serverProvider) {
        serverProviderService.updateById(serverProvider);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:serverprovider:query")
    public ApiResponse<PageData<ServerProvider>> findPage (@RequestBody PageWrap<ServerProvider> pageWrap) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Objects.nonNull(loginUserInfo)&&Objects.nonNull(loginUserInfo.getType())&&!Constants.equalsInteger(loginUserInfo.getType(),Constants.ZERO)){
            pageWrap.getModel().setStatus(Constants.ZERO);
        }
        return ApiResponse.success(serverProviderService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:serverprovider:exportExcel")
    public void exportExcel (@RequestBody PageWrap<ServerProvider> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(ServerProvider.class).export(serverProviderService.findPage(pageWrap).getRecords(), "服务商信息", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:serverprovider:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(serverProviderService.findById(id));
    }
}
serverWuhu/src/main/java/com/doumee/core/utils/Constants.java
@@ -43,6 +43,7 @@
    public static final String SYSTEM_USER_FILE ="SYSTEM_USER_FILE" ;
    public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}";
    public static final String COMPANY_USER_RULES = "COMPANY_USER_RULES";
    public static final String LOGO_FILE ="LOGO_FILE" ;
    /**
     * å•点登录
serverWuhu/src/main/java/com/doumee/core/utils/Date.java
@@ -2,6 +2,7 @@
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Objects;
/**
 * æ—¥æœŸå·¥å…·
@@ -20,6 +21,9 @@
     * @return java.util.Date
     */
    public java.util.Date getStart (java.util.Date date) {
        if(Objects.isNull(date)){
            return null;
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
@@ -36,6 +40,9 @@
     * @return java.util.Date
     */
    public java.util.Date getEnd (java.util.Date date) {
        if(Objects.isNull(date)){
            return null;
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
serverWuhu/src/main/java/com/doumee/dao/business/ApplicationInfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.ApplicationInfo;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface ApplicationInfoMapper extends MPJJoinMapper<ApplicationInfo> {
}
serverWuhu/src/main/java/com/doumee/dao/business/DemandRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.DemandRecord;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface DemandRecordMapper extends MPJJoinMapper<DemandRecord> {
}
serverWuhu/src/main/java/com/doumee/dao/business/ServerProviderMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.ServerProvider;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface ServerProviderMapper extends MPJJoinMapper<ServerProvider> {
}
serverWuhu/src/main/java/com/doumee/dao/business/model/ApplicationInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * åº”用管理
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Data
@ApiModel("应用管理")
@TableName("`application_info`")
public class ApplicationInfo {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "禁启用状态:0=启用;1=禁用", example = "1")
    @ExcelColumn(name="禁启用状态:0=启用;1=禁用")
    private Integer status;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "服务商主键 server_provider", example = "1")
    @ExcelColumn(name="服务商主键 server_provider")
    private Integer serverId;
    @ApiModelProperty(value = "应用名称")
    @ExcelColumn(name="应用名称")
    private String name;
    @ApiModelProperty(value = "LOGO图片")
    @ExcelColumn(name="LOGO图片")
    private String logo;
    @ApiModelProperty(value = "标签信息(多个以英文,分割)")
    @ExcelColumn(name="标签信息(多个以英文,分割)")
    private String lables;
    @ApiModelProperty(value = "简介(多行文本)")
    @ExcelColumn(name="简介(多行文本)")
    private String introduction;
    @ApiModelProperty(value = "详情(富文本)")
    @ExcelColumn(name="详情(富文本)")
    private String details;
    @ApiModelProperty(value = "服务商名称", example = "1")
    @TableField(exist = false)
    private String serverName;
    @ApiModelProperty(value = "logo全路径", example = "1")
    @TableField(exist = false)
    private String fullLog;
    @ApiModelProperty(value = "应用信息", example = "1")
    @TableField(exist = false)
    private String applicationInfo;
}
serverWuhu/src/main/java/com/doumee/dao/business/model/DemandRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * éœ€æ±‚记录
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Data
@ApiModel("需求记录")
@TableName("`demand_record`")
public class DemandRecord {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="提交时间",width = 20,index = 7,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    private Integer isdeleted;
    @ApiModelProperty(value = "禁启用状态:0=启用;1=禁用", example = "1")
    private Integer status;
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "应用主键 application_info", example = "1")
    private Integer applicationId;
    @ApiModelProperty(value = "企业主键 company", example = "1")
    private Integer companyId;
    @ApiModelProperty(value = "联系人姓名")
    @ExcelColumn(name="联系人",width = 20,index = 4)
    private String linkName;
    @ApiModelProperty(value = "联系人电话")
    @ExcelColumn(name="联系电话",width = 20,index = 5)
    private String linkPhone;
    @ApiModelProperty(value = "描述")
    @ExcelColumn(name="需求描述",width = 30,index = 6)
    private String details;
    @ApiModelProperty(value = "企业名称", example = "1")
    @ExcelColumn(name="需求企业",width = 20,index = 3)
    @TableField(exist = false)
    private String companyName;
    @ApiModelProperty(value = "服务商名称", example = "1")
    @ExcelColumn(name="服务商名称",width = 20,index = 1)
    @TableField(exist = false)
    private String serverName;
    @ApiModelProperty(value = "应用名称", example = "1")
    @ExcelColumn(name="应用名称",width = 20,index = 2)
    @TableField(exist = false)
    private String applicationName;
    @ApiModelProperty(value = "应用LOGO", example = "1")
    @TableField(exist = false)
    private String applicationLogo;
    @ApiModelProperty(value = "提交查询时间", example = "1")
    @TableField(exist = false)
    private Date startDate;
    @ApiModelProperty(value = "提交查询时间", example = "1")
    @TableField(exist = false)
    private Date endDate;
}
serverWuhu/src/main/java/com/doumee/dao/business/model/ServerProvider.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * æœåŠ¡å•†ä¿¡æ¯
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Data
@ApiModel("服务商信息")
@TableName("`server_provider`")
public class ServerProvider {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "禁启用状态:0=启用;1=禁用", example = "1")
    @ExcelColumn(name="禁启用状态:0=启用;1=禁用")
    private Integer status;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "名称(不可重复)")
    @ExcelColumn(name="名称(不可重复)")
    private String name;
    @ApiModelProperty(value = "LOGO图片")
    @ExcelColumn(name="LOGO图片")
    private String logo;
    @ApiModelProperty(value = "所属行业(关联labels表)", example = "1")
    @ExcelColumn(name="所属行业(关联labels表)")
    private Integer industryId;
    @ApiModelProperty(value = "服务星级 1 - 5", example = "1")
    @ExcelColumn(name="服务星级 1 - 5")
    private Integer starLevel;
    @ApiModelProperty(value = "联系人姓名")
    @ExcelColumn(name="联系人姓名")
    private String linkName;
    @ApiModelProperty(value = "联系人电话")
    @ExcelColumn(name="联系人电话")
    private String linkPhone;
    @ApiModelProperty(value = "简介(多行文本)")
    @ExcelColumn(name="简介(多行文本)")
    private String introduction;
    @ApiModelProperty(value = "所属行业名称", example = "1")
    @TableField(exist = false)
    private String industryName;
    @ApiModelProperty(value = "logo全路径", example = "1")
    @TableField(exist = false)
    private String fullLog;
}
serverWuhu/src/main/java/com/doumee/service/business/ApplicationInfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.ApplicationInfo;
import java.util.List;
/**
 * åº”用管理Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface ApplicationInfoService {
    /**
     * åˆ›å»º
     *
     * @param applicationInfo å®žä½“对象
     * @return Integer
     */
    Integer create(ApplicationInfo applicationInfo);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param applicationInfo å®žä½“对象
     */
    void delete(ApplicationInfo applicationInfo);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param applicationInfo å®žä½“对象
     */
    void updateById(ApplicationInfo applicationInfo);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param applicationInfos å®žä½“集
     */
    void updateByIdInBatch(List<ApplicationInfo> applicationInfos);
    void updateStatus(ApplicationInfo applicationInfo);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return ApplicationInfo
     */
    ApplicationInfo findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param applicationInfo å®žä½“对象
     * @return ApplicationInfo
     */
    ApplicationInfo findOne(ApplicationInfo applicationInfo);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param applicationInfo å®žä½“对象
     * @return List<ApplicationInfo>
     */
    List<ApplicationInfo> findList(ApplicationInfo applicationInfo);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<ApplicationInfo>
     */
    PageData<ApplicationInfo> findPage(PageWrap<ApplicationInfo> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param applicationInfo å®žä½“对象
     * @return long
     */
    long count(ApplicationInfo applicationInfo);
}
serverWuhu/src/main/java/com/doumee/service/business/DemandRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.DemandRecord;
import java.util.List;
/**
 * éœ€æ±‚记录Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface DemandRecordService {
    /**
     * åˆ›å»º
     *
     * @param demandRecord å®žä½“对象
     * @return Integer
     */
    Integer create(DemandRecord demandRecord);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param demandRecord å®žä½“对象
     */
    void delete(DemandRecord demandRecord);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param demandRecord å®žä½“对象
     */
    void updateById(DemandRecord demandRecord);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param demandRecords å®žä½“集
     */
    void updateByIdInBatch(List<DemandRecord> demandRecords);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return DemandRecord
     */
    DemandRecord findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param demandRecord å®žä½“对象
     * @return DemandRecord
     */
    DemandRecord findOne(DemandRecord demandRecord);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param demandRecord å®žä½“对象
     * @return List<DemandRecord>
     */
    List<DemandRecord> findList(DemandRecord demandRecord);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<DemandRecord>
     */
    PageData<DemandRecord> findPage(PageWrap<DemandRecord> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param demandRecord å®žä½“对象
     * @return long
     */
    long count(DemandRecord demandRecord);
}
serverWuhu/src/main/java/com/doumee/service/business/ServerProviderService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.ServerProvider;
import java.util.List;
/**
 * æœåŠ¡å•†ä¿¡æ¯Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
public interface ServerProviderService {
    /**
     * åˆ›å»º
     *
     * @param serverProvider å®žä½“对象
     * @return Integer
     */
    Integer create(ServerProvider serverProvider);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param serverProvider å®žä½“对象
     */
    void delete(ServerProvider serverProvider);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    void updateStatus(ServerProvider serverProvider);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param serverProvider å®žä½“对象
     */
    void updateById(ServerProvider serverProvider);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param serverProviders å®žä½“集
     */
    void updateByIdInBatch(List<ServerProvider> serverProviders);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return ServerProvider
     */
    ServerProvider findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param serverProvider å®žä½“对象
     * @return ServerProvider
     */
    ServerProvider findOne(ServerProvider serverProvider);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param serverProvider å®žä½“对象
     * @return List<ServerProvider>
     */
    List<ServerProvider> findList(ServerProvider serverProvider);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<ServerProvider>
     */
    PageData<ServerProvider> findPage(PageWrap<ServerProvider> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param serverProvider å®žä½“对象
     * @return long
     */
    long count(ServerProvider serverProvider);
}
serverWuhu/src/main/java/com/doumee/service/business/impl/ApplicationInfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,196 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
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.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ApplicationInfoMapper;
import com.doumee.dao.business.ServerProviderMapper;
import com.doumee.dao.business.model.ApplicationInfo;
import com.doumee.dao.business.model.Labels;
import com.doumee.dao.business.model.ServerProvider;
import com.doumee.service.business.ApplicationInfoService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.Model;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * åº”用管理Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Service
public class ApplicationInfoServiceImpl implements ApplicationInfoService {
    @Autowired
    private ApplicationInfoMapper applicationInfoMapper;
    @Autowired
    private ServerProviderMapper serverProviderMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(ApplicationInfo applicationInfo) {
        if(Objects.isNull(applicationInfo)
                || Objects.isNull(applicationInfo.getServerId())
                || StringUtils.isBlank(applicationInfo.getName())
                || StringUtils.isBlank(applicationInfo.getLogo())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(serverProviderMapper.selectCount(new QueryWrapper<ServerProvider>().lambda().eq(ServerProvider::getIsdeleted, Constants.ZERO)
                .eq(ServerProvider::getId,applicationInfo.getServerId()))<=Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商信息已删除!");
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        applicationInfo.setCreateDate(new Date());
        applicationInfo.setCreator(loginUserInfo.getId());
        applicationInfo.setEditor(applicationInfo.getCreator());
        applicationInfo.setEditDate(applicationInfo.getCreateDate());
        applicationInfo.setStatus(Constants.ZERO);
        applicationInfo.setIsdeleted(Constants.ZERO);
        applicationInfoMapper.insert(applicationInfo);
        return applicationInfo.getId();
    }
    @Override
    public void deleteById(Integer id) {
        applicationInfoMapper.update(null,new UpdateWrapper<ApplicationInfo>().lambda()
                .set(ApplicationInfo::getIsdeleted,Constants.ONE).eq(ApplicationInfo::getId,id));
    }
    @Override
    public void delete(ApplicationInfo applicationInfo) {
        UpdateWrapper<ApplicationInfo> deleteWrapper = new UpdateWrapper<>(applicationInfo);
        applicationInfoMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        applicationInfoMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(ApplicationInfo applicationInfo) {
        if(Objects.isNull(applicationInfo)
                || Objects.isNull(applicationInfo.getId())
                || Objects.isNull(applicationInfo.getServerId())
                || StringUtils.isBlank(applicationInfo.getName())
                || StringUtils.isBlank(applicationInfo.getLogo())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        applicationInfo.setEditor(loginUserInfo.getId());
        applicationInfo.setEditDate(new Date());
        applicationInfoMapper.updateById(applicationInfo);
    }
    @Override
    public void updateByIdInBatch(List<ApplicationInfo> applicationInfos) {
        if (CollectionUtils.isEmpty(applicationInfos)) {
            return;
        }
        for (ApplicationInfo applicationInfo: applicationInfos) {
            this.updateById(applicationInfo);
        }
    }
    @Override
    public void updateStatus(ApplicationInfo applicationInfo) {
        if(Objects.isNull(applicationInfo)
                || Objects.isNull(applicationInfo.getId())
                || Objects.isNull(applicationInfo.getStatus())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        applicationInfoMapper.update(null,new UpdateWrapper<ApplicationInfo>().lambda().set(ApplicationInfo::getStatus,applicationInfo.getStatus())
                .eq(ApplicationInfo::getId,applicationInfo.getId()));
    }
    @Override
    public ApplicationInfo findById(Integer id) {
        MPJLambdaWrapper<ApplicationInfo> queryWrapper = new MPJLambdaWrapper<ApplicationInfo>();
        queryWrapper.selectAll(ApplicationInfo.class)
                .selectAs(ServerProvider::getName,ApplicationInfo::getServerName)
                .leftJoin(ServerProvider.class,ServerProvider::getId,ApplicationInfo::getServerId)
                .eq(ApplicationInfo::getId,id)
                .orderByDesc(ApplicationInfo::getId)
        ;
        String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode();
        ApplicationInfo applicationInfo = applicationInfoMapper.selectJoinOne(ApplicationInfo.class,queryWrapper);
        if(Objects.isNull(applicationInfo)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        applicationInfo.setFullLog(prefix + applicationInfo.getLogo());
        return applicationInfo;
    }
    @Override
    public ApplicationInfo findOne(ApplicationInfo applicationInfo) {
        QueryWrapper<ApplicationInfo> wrapper = new QueryWrapper<>(applicationInfo);
        return applicationInfoMapper.selectOne(wrapper);
    }
    @Override
    public List<ApplicationInfo> findList(ApplicationInfo applicationInfo) {
        QueryWrapper<ApplicationInfo> wrapper = new QueryWrapper<>(applicationInfo);
        return applicationInfoMapper.selectList(wrapper);
    }
    @Override
    public PageData<ApplicationInfo> findPage(PageWrap<ApplicationInfo> pageWrap) {
        IPage<ApplicationInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<ApplicationInfo> queryWrapper = new MPJLambdaWrapper<ApplicationInfo>();
        Utils.MP.blankToNull(pageWrap.getModel());
        ApplicationInfo model = pageWrap.getModel();
        queryWrapper.selectAll(ApplicationInfo.class)
                .selectAs(ServerProvider::getName,ApplicationInfo::getServerName)
                .leftJoin(ServerProvider.class,ServerProvider::getId,ApplicationInfo::getServerId)
                .eq(ApplicationInfo::getIsdeleted,Constants.ZERO)
                .eq(Objects.nonNull(model.getStatus()),ApplicationInfo::getStatus,model.getStatus())
                .like(StringUtils.isNotBlank(model.getName()),ApplicationInfo::getName,model.getName())
                .like(StringUtils.isNotBlank(model.getServerName()),ServerProvider::getName,model.getServerName())
                .and(StringUtils.isNotBlank(model.getApplicationInfo()),i->i.like(ApplicationInfo::getName,model.getApplicationInfo()).or().like(ServerProvider::getName,model.getApplicationInfo()))
                .orderByDesc(ServerProvider::getId)
        ;
        IPage<ApplicationInfo> iPage = applicationInfoMapper.selectJoinPage(page, ApplicationInfo.class ,queryWrapper);
        String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode();
        iPage.getRecords().forEach(i->{
            i.setFullLog(prefix + i.getLogo());
        });
        return PageData.from(iPage);
    }
    @Override
    public long count(ApplicationInfo applicationInfo) {
        QueryWrapper<ApplicationInfo> wrapper = new QueryWrapper<>(applicationInfo);
        return applicationInfoMapper.selectCount(wrapper);
    }
}
serverWuhu/src/main/java/com/doumee/service/business/impl/DemandRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,155 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
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.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DemandRecordMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.DemandRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * éœ€æ±‚记录Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Service
public class DemandRecordServiceImpl implements DemandRecordService {
    @Autowired
    private DemandRecordMapper demandRecordMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(DemandRecord demandRecord) {
        if(Objects.isNull(demandRecord)
                || Objects.isNull(demandRecord.getApplicationId())
                || StringUtils.isEmpty(demandRecord.getLinkName())
                || StringUtils.isEmpty(demandRecord.getLinkPhone())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!(Constants.equalsInteger(loginUserInfo.getType(),Constants.ONE)||Constants.equalsInteger(loginUserInfo.getType(),Constants.TWO))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前用户无法进行该操作");
        }
        demandRecord.setCreateDate(new Date());
        demandRecord.setCreator(loginUserInfo.getId());
        demandRecord.setEditor(demandRecord.getCreator());
        demandRecord.setEditDate(demandRecord.getCreateDate());
        demandRecord.setStatus(Constants.ZERO);
        demandRecord.setIsdeleted(Constants.ZERO);
        demandRecord.setCompanyId(loginUserInfo.getCompanyId());
        demandRecordMapper.insert(demandRecord);
        return demandRecord.getId();
    }
    @Override
    public void deleteById(Integer id) {
        demandRecordMapper.deleteById(id);
    }
    @Override
    public void delete(DemandRecord demandRecord) {
        UpdateWrapper<DemandRecord> deleteWrapper = new UpdateWrapper<>(demandRecord);
        demandRecordMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        demandRecordMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(DemandRecord demandRecord) {
        demandRecordMapper.updateById(demandRecord);
    }
    @Override
    public void updateByIdInBatch(List<DemandRecord> demandRecords) {
        if (CollectionUtils.isEmpty(demandRecords)) {
            return;
        }
        for (DemandRecord demandRecord: demandRecords) {
            this.updateById(demandRecord);
        }
    }
    @Override
    public DemandRecord findById(Integer id) {
        return demandRecordMapper.selectById(id);
    }
    @Override
    public DemandRecord findOne(DemandRecord demandRecord) {
        QueryWrapper<DemandRecord> wrapper = new QueryWrapper<>(demandRecord);
        return demandRecordMapper.selectOne(wrapper);
    }
    @Override
    public List<DemandRecord> findList(DemandRecord demandRecord) {
        QueryWrapper<DemandRecord> wrapper = new QueryWrapper<>(demandRecord);
        return demandRecordMapper.selectList(wrapper);
    }
    @Override
    public PageData<DemandRecord> findPage(PageWrap<DemandRecord> pageWrap) {
        IPage<DemandRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<DemandRecord> queryWrapper = new MPJLambdaWrapper<DemandRecord>();
        Utils.MP.blankToNull(pageWrap.getModel());
        DemandRecord model = pageWrap.getModel();
        queryWrapper.selectAll(DemandRecord.class)
                .selectAs(Company::getName,DemandRecord::getCompanyName)
                .selectAs(ServerProvider::getName,DemandRecord::getServerName)
                .selectAs(ApplicationInfo::getName,DemandRecord::getApplicationName)
                .selectAs(ApplicationInfo::getLogo,DemandRecord::getApplicationLogo)
                .leftJoin(Company.class,Company::getId,DemandRecord::getCompanyId)
                .leftJoin(ApplicationInfo.class,ApplicationInfo::getId,DemandRecord::getApplicationId)
                .leftJoin(ServerProvider.class,ServerProvider::getId,ApplicationInfo::getServerId)
                .eq(ServerProvider::getIsdeleted,Constants.ZERO)
                .and(org.apache.commons.lang3.StringUtils.isNotBlank(model.getLinkName())
                        , i->i.like(DemandRecord::getLinkName,model.getLinkName()).or().like(DemandRecord::getLinkPhone,model.getLinkName()))
                .like(org.apache.commons.lang3.StringUtils.isNotBlank(model.getApplicationName()),ApplicationInfo::getName,model.getApplicationName())
                .ge(Objects.nonNull(model.getStartDate()),DemandRecord::getCreateDate, Utils.Date.getStart(model.getStartDate()))
                .le(Objects.nonNull(model.getEndDate()),DemandRecord::getCreateDate, Utils.Date.getEnd(model.getEndDate()))
                .orderByDesc(DemandRecord::getId)
        ;
        IPage<DemandRecord> iPage = demandRecordMapper.selectJoinPage( page, DemandRecord.class,  queryWrapper);
        String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode();
        for (DemandRecord demandRecord:iPage.getRecords()) {
            if(org.apache.commons.lang3.StringUtils.isNotBlank(demandRecord.getApplicationLogo())){
                demandRecord.setApplicationLogo(prefix + demandRecord.getApplicationLogo());
            }
        }
        return PageData.from(iPage);
    }
    @Override
    public long count(DemandRecord demandRecord) {
        QueryWrapper<DemandRecord> wrapper = new QueryWrapper<>(demandRecord);
        return demandRecordMapper.selectCount(wrapper);
    }
}
serverWuhu/src/main/java/com/doumee/service/business/impl/ServerProviderServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,220 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
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.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ApplicationInfoMapper;
import com.doumee.dao.business.LabelsMapper;
import com.doumee.dao.business.ServerProviderMapper;
import com.doumee.dao.business.model.ApplicationInfo;
import com.doumee.dao.business.model.Labels;
import com.doumee.dao.business.model.ServerProvider;
import com.doumee.service.business.ServerProviderService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * æœåŠ¡å•†ä¿¡æ¯Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/09/08 10:24
 */
@Service
public class ServerProviderServiceImpl implements ServerProviderService {
    @Autowired
    private ServerProviderMapper serverProviderMapper;
    @Autowired
    private LabelsMapper labelsMapper;
    @Autowired
    private ApplicationInfoMapper applicationInfoMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(ServerProvider serverProvider) {
        if(Objects.isNull(serverProvider)
                || StringUtils.isBlank(serverProvider.getName())
                || StringUtils.isBlank(serverProvider.getLogo())
//            || Objects.isNull(serverProvider.getStarLevel())
//            || Objects.isNull(serverProvider.getIndustryId())
//            || StringUtils.isBlank(serverProvider.getLinkPhone())
//            || StringUtils.isBlank(serverProvider.getLinkName())
//            || StringUtils.isBlank(serverProvider.getIntroduction())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //查询名称是否重复
        if(serverProviderMapper.selectCount(new QueryWrapper<ServerProvider>().lambda().eq(ServerProvider::getIsdeleted,Constants.ZERO).eq(ServerProvider::getName,serverProvider.getName()))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商名称[ "+serverProvider.getName()+" ]已存在!");
        }
        if(Objects.nonNull(serverProvider.getIndustryId())&&Objects.isNull(labelsMapper.selectById(serverProvider.getIndustryId()))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"行业信息错误");
        };
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        serverProvider.setCreateDate(new Date());
        serverProvider.setCreator(loginUserInfo.getId());
        serverProvider.setEditor(serverProvider.getCreator());
        serverProvider.setEditDate(serverProvider.getCreateDate());
        serverProvider.setStatus(Constants.ZERO);
        serverProvider.setIsdeleted(Constants.ZERO);
        serverProviderMapper.insert(serverProvider);
        return serverProvider.getId();
    }
    @Override
    public void deleteById(Integer id) {
        if(applicationInfoMapper.selectCount(new QueryWrapper<ApplicationInfo>().lambda()
                .eq(ApplicationInfo::getIsdeleted,Constants.ZERO).eq(ApplicationInfo::getServerId,id)
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商使用中,无法进行删除");
        }
        serverProviderMapper.update(null,new UpdateWrapper<ServerProvider>().lambda()
                .set(ServerProvider::getIsdeleted,Constants.ONE).eq(ServerProvider::getId,id));
    }
    @Override
    public void delete(ServerProvider serverProvider) {
        UpdateWrapper<ServerProvider> deleteWrapper = new UpdateWrapper<>(serverProvider);
        serverProviderMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        serverProviderMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateStatus(ServerProvider serverProvider) {
        if(Objects.isNull(serverProvider)
                || Objects.isNull(serverProvider.getId())
                || Objects.isNull(serverProvider.getStatus())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        serverProviderMapper.update(null,new UpdateWrapper<ServerProvider>().lambda().set(ServerProvider::getStatus,serverProvider.getStatus()).eq(ServerProvider::getId,serverProvider.getId()));
    }
    @Override
    public void updateById(ServerProvider serverProvider) {
        if(Objects.isNull(serverProvider)
                || Objects.isNull(serverProvider.getId())
                || StringUtils.isBlank(serverProvider.getName())
                || StringUtils.isBlank(serverProvider.getLogo())
//                || Objects.isNull(serverProvider.getStarLevel())
//                || Objects.isNull(serverProvider.getIndustryId())
//                || StringUtils.isBlank(serverProvider.getLinkPhone())
//                || StringUtils.isBlank(serverProvider.getLinkName())
//                || StringUtils.isBlank(serverProvider.getIntroduction())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //查询名称是否重复
        if(serverProviderMapper.selectCount(new QueryWrapper<ServerProvider>().lambda().ne(ServerProvider::getId,serverProvider.getId())
                .eq(ServerProvider::getIsdeleted,Constants.ZERO).eq(ServerProvider::getName,serverProvider.getName()))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商名称[ "+serverProvider.getName()+" ]已存在!");
        }
        if(Objects.nonNull(serverProvider.getIndustryId())&&Objects.isNull(labelsMapper.selectById(serverProvider.getIndustryId()))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"行业信息错误");
        };
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        serverProvider.setEditor(loginUserInfo.getId());
        serverProvider.setEditDate(new Date());
        serverProviderMapper.updateById(serverProvider);
    }
    @Override
    public void updateByIdInBatch(List<ServerProvider> serverProviders) {
        if (CollectionUtils.isEmpty(serverProviders)) {
            return;
        }
        for (ServerProvider serverProvider: serverProviders) {
            this.updateById(serverProvider);
        }
    }
    @Override
    public ServerProvider findById(Integer id) {
        MPJLambdaWrapper<ServerProvider> queryWrapper = new MPJLambdaWrapper<ServerProvider>();
        queryWrapper.selectAll(ServerProvider.class)
                .selectAs(Labels::getName,ServerProvider::getIndustryName)
                .leftJoin(Labels.class,Labels::getId,ServerProvider::getIndustryId)
                .eq(ServerProvider::getId,id)
                .orderByDesc(ServerProvider::getId)
        ;
        String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode();
        ServerProvider serverProvider = serverProviderMapper.selectJoinOne(ServerProvider.class,queryWrapper);
        if(Objects.isNull(serverProvider)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        serverProvider.setFullLog(prefix + serverProvider.getLogo());
        return serverProvider;
    }
    @Override
    public ServerProvider findOne(ServerProvider serverProvider) {
        QueryWrapper<ServerProvider> wrapper = new QueryWrapper<>(serverProvider);
        return serverProviderMapper.selectOne(wrapper);
    }
    @Override
    public List<ServerProvider> findList(ServerProvider serverProvider) {
        QueryWrapper<ServerProvider> wrapper = new QueryWrapper<>(serverProvider);
        wrapper.lambda().eq(ServerProvider::getIsdeleted,Constants.ZERO);
        wrapper.lambda().eq(ServerProvider::getStatus,Constants.ZERO);
        return serverProviderMapper.selectList(wrapper);
    }
    @Override
    public PageData<ServerProvider> findPage(PageWrap<ServerProvider> pageWrap) {
        IPage<ServerProvider> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<ServerProvider> queryWrapper = new MPJLambdaWrapper<ServerProvider>();
        Utils.MP.blankToNull(pageWrap.getModel());
        ServerProvider model = pageWrap.getModel();
        queryWrapper.selectAll(ServerProvider.class)
                .selectAs(Labels::getName,ServerProvider::getIndustryName)
                .leftJoin(Labels.class,Labels::getId,ServerProvider::getIndustryId)
                .eq(ServerProvider::getIsdeleted,Constants.ZERO)
                .and(StringUtils.isNotBlank(model.getName()),i->i.like(ServerProvider::getName,model.getName()))
                .eq(Objects.nonNull(model.getStatus()),ServerProvider::getStatus,model.getStatus())
                .eq(Objects.nonNull(model.getIndustryId()),ServerProvider::getIndustryId,model.getIndustryId())
                .orderByDesc(ServerProvider::getId)
        ;
        IPage<ServerProvider> serverProviderIPage = serverProviderMapper.selectJoinPage(page, ServerProvider.class ,queryWrapper);
        String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode();
        serverProviderIPage.getRecords().forEach(i->{
            i.setFullLog(prefix + i.getLogo());
        });
        return PageData.from(serverProviderIPage);
    }
    @Override
    public long count(ServerProvider serverProvider) {
        QueryWrapper<ServerProvider> wrapper = new QueryWrapper<>(serverProvider);
        return serverProviderMapper.selectCount(wrapper);
    }
}