package com.ruoyi.system.controller; | |||||
import java.util.List; | |||||
import java.util.Arrays; | |||||
import java.util.concurrent.TimeUnit; | |||||
import lombok.RequiredArgsConstructor; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.constraints.*; | |||||
import cn.dev33.satoken.annotation.SaCheckPermission; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import com.ruoyi.common.annotation.RepeatSubmit; | |||||
import com.ruoyi.common.annotation.Log; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import com.ruoyi.common.core.validate.QueryGroup; | |||||
import com.ruoyi.common.enums.BusinessType; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsVo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsBo; | |||||
import com.ruoyi.system.service.IZsOperationGoodsService; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
/** | |||||
* 商品配置 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/system/operationGoods") | |||||
public class ZsOperationGoodsController extends BaseController { | |||||
private final IZsOperationGoodsService iZsOperationGoodsService; | |||||
/** | |||||
* 查询商品配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:list") | |||||
@GetMapping("/list") | |||||
public TableDataInfo<ZsOperationGoodsVo> list(ZsOperationGoodsBo bo, PageQuery pageQuery) { | |||||
return iZsOperationGoodsService.queryPageList(bo, pageQuery); | |||||
} | |||||
/** | |||||
* 导出商品配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:export") | |||||
@Log(title = "商品配置", businessType = BusinessType.EXPORT) | |||||
@PostMapping("/export") | |||||
public void export(ZsOperationGoodsBo bo, HttpServletResponse response) { | |||||
List<ZsOperationGoodsVo> list = iZsOperationGoodsService.queryList(bo); | |||||
ExcelUtil.exportExcel(list, "商品配置", ZsOperationGoodsVo.class, response); | |||||
} | |||||
/** | |||||
* 获取商品配置详细信息 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:query") | |||||
@GetMapping("/{id}") | |||||
public R<ZsOperationGoodsVo> getInfo(@NotNull(message = "主键不能为空") | |||||
@PathVariable Long id) { | |||||
return R.ok(iZsOperationGoodsService.queryById(id)); | |||||
} | |||||
/** | |||||
* 新增商品配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:add") | |||||
@Log(title = "商品配置", businessType = BusinessType.INSERT) | |||||
@RepeatSubmit() | |||||
@PostMapping() | |||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsOperationGoodsBo bo) { | |||||
return toAjax(iZsOperationGoodsService.insertByBo(bo)); | |||||
} | |||||
/** | |||||
* 修改商品配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:edit") | |||||
@Log(title = "商品配置", businessType = BusinessType.UPDATE) | |||||
@RepeatSubmit() | |||||
@PutMapping() | |||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsOperationGoodsBo bo) { | |||||
return toAjax(iZsOperationGoodsService.updateByBo(bo)); | |||||
} | |||||
/** | |||||
* 删除商品配置 | |||||
* | |||||
* @param ids 主键串 | |||||
*/ | |||||
@SaCheckPermission("system:operationGoods:remove") | |||||
@Log(title = "商品配置", businessType = BusinessType.DELETE) | |||||
@DeleteMapping("/{ids}") | |||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") | |||||
@PathVariable Long[] ids) { | |||||
return toAjax(iZsOperationGoodsService.deleteWithValidByIds(Arrays.asList(ids), true)); | |||||
} | |||||
} |
package com.ruoyi.system.controller; | |||||
import java.util.List; | |||||
import java.util.Arrays; | |||||
import java.util.concurrent.TimeUnit; | |||||
import lombok.RequiredArgsConstructor; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.constraints.*; | |||||
import cn.dev33.satoken.annotation.SaCheckPermission; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import com.ruoyi.common.annotation.RepeatSubmit; | |||||
import com.ruoyi.common.annotation.Log; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import com.ruoyi.common.core.validate.QueryGroup; | |||||
import com.ruoyi.common.enums.BusinessType; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.system.domain.vo.ZsOperationSendconfigVo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationSendconfigBo; | |||||
import com.ruoyi.system.service.IZsOperationSendconfigService; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
/** | |||||
* 发送信息配置 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/system/operationSendconfig") | |||||
public class ZsOperationSendconfigController extends BaseController { | |||||
private final IZsOperationSendconfigService iZsOperationSendconfigService; | |||||
/** | |||||
* 查询发送信息配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:list") | |||||
@GetMapping("/list") | |||||
public TableDataInfo<ZsOperationSendconfigVo> list(ZsOperationSendconfigBo bo, PageQuery pageQuery) { | |||||
return iZsOperationSendconfigService.queryPageList(bo, pageQuery); | |||||
} | |||||
/** | |||||
* 导出发送信息配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:export") | |||||
@Log(title = "发送信息配置", businessType = BusinessType.EXPORT) | |||||
@PostMapping("/export") | |||||
public void export(ZsOperationSendconfigBo bo, HttpServletResponse response) { | |||||
List<ZsOperationSendconfigVo> list = iZsOperationSendconfigService.queryList(bo); | |||||
ExcelUtil.exportExcel(list, "发送信息配置", ZsOperationSendconfigVo.class, response); | |||||
} | |||||
/** | |||||
* 获取发送信息配置详细信息 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:query") | |||||
@GetMapping("/{id}") | |||||
public R<ZsOperationSendconfigVo> getInfo(@NotNull(message = "主键不能为空") | |||||
@PathVariable Long id) { | |||||
return R.ok(iZsOperationSendconfigService.queryById(id)); | |||||
} | |||||
/** | |||||
* 新增发送信息配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:add") | |||||
@Log(title = "发送信息配置", businessType = BusinessType.INSERT) | |||||
@RepeatSubmit() | |||||
@PostMapping() | |||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsOperationSendconfigBo bo) { | |||||
return toAjax(iZsOperationSendconfigService.insertByBo(bo)); | |||||
} | |||||
/** | |||||
* 修改发送信息配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:edit") | |||||
@Log(title = "发送信息配置", businessType = BusinessType.UPDATE) | |||||
@RepeatSubmit() | |||||
@PutMapping() | |||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsOperationSendconfigBo bo) { | |||||
return toAjax(iZsOperationSendconfigService.updateByBo(bo)); | |||||
} | |||||
/** | |||||
* 删除发送信息配置 | |||||
* | |||||
* @param ids 主键串 | |||||
*/ | |||||
@SaCheckPermission("system:operationSendconfig:remove") | |||||
@Log(title = "发送信息配置", businessType = BusinessType.DELETE) | |||||
@DeleteMapping("/{ids}") | |||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") | |||||
@PathVariable Long[] ids) { | |||||
return toAjax(iZsOperationSendconfigService.deleteWithValidByIds(Arrays.asList(ids), true)); | |||||
} | |||||
} |
package com.ruoyi.system.controller; | |||||
import java.util.List; | |||||
import java.util.Arrays; | |||||
import java.util.concurrent.TimeUnit; | |||||
import lombok.RequiredArgsConstructor; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.constraints.*; | |||||
import cn.dev33.satoken.annotation.SaCheckPermission; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import com.ruoyi.common.annotation.RepeatSubmit; | |||||
import com.ruoyi.common.annotation.Log; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import com.ruoyi.common.core.validate.QueryGroup; | |||||
import com.ruoyi.common.enums.BusinessType; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnconfigVo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnconfigBo; | |||||
import com.ruoyi.system.service.IZsOperationWarnconfigService; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
/** | |||||
* 预警配置 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/system/operationWarnconfig") | |||||
public class ZsOperationWarnconfigController extends BaseController { | |||||
private final IZsOperationWarnconfigService iZsOperationWarnconfigService; | |||||
/** | |||||
* 查询预警配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:list") | |||||
@GetMapping("/list") | |||||
public TableDataInfo<ZsOperationWarnconfigVo> list(ZsOperationWarnconfigBo bo, PageQuery pageQuery) { | |||||
return iZsOperationWarnconfigService.queryPageList(bo, pageQuery); | |||||
} | |||||
/** | |||||
* 导出预警配置列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:export") | |||||
@Log(title = "预警配置", businessType = BusinessType.EXPORT) | |||||
@PostMapping("/export") | |||||
public void export(ZsOperationWarnconfigBo bo, HttpServletResponse response) { | |||||
List<ZsOperationWarnconfigVo> list = iZsOperationWarnconfigService.queryList(bo); | |||||
ExcelUtil.exportExcel(list, "预警配置", ZsOperationWarnconfigVo.class, response); | |||||
} | |||||
/** | |||||
* 获取预警配置详细信息 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:query") | |||||
@GetMapping("/{id}") | |||||
public R<ZsOperationWarnconfigVo> getInfo(@NotNull(message = "主键不能为空") | |||||
@PathVariable Long id) { | |||||
return R.ok(iZsOperationWarnconfigService.queryById(id)); | |||||
} | |||||
/** | |||||
* 新增预警配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:add") | |||||
@Log(title = "预警配置", businessType = BusinessType.INSERT) | |||||
@RepeatSubmit() | |||||
@PostMapping() | |||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsOperationWarnconfigBo bo) { | |||||
return toAjax(iZsOperationWarnconfigService.insertByBo(bo)); | |||||
} | |||||
/** | |||||
* 修改预警配置 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:edit") | |||||
@Log(title = "预警配置", businessType = BusinessType.UPDATE) | |||||
@RepeatSubmit() | |||||
@PutMapping() | |||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsOperationWarnconfigBo bo) { | |||||
return toAjax(iZsOperationWarnconfigService.updateByBo(bo)); | |||||
} | |||||
/** | |||||
* 删除预警配置 | |||||
* | |||||
* @param ids 主键串 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnconfig:remove") | |||||
@Log(title = "预警配置", businessType = BusinessType.DELETE) | |||||
@DeleteMapping("/{ids}") | |||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") | |||||
@PathVariable Long[] ids) { | |||||
return toAjax(iZsOperationWarnconfigService.deleteWithValidByIds(Arrays.asList(ids), true)); | |||||
} | |||||
} |
package com.ruoyi.system.controller; | |||||
import java.util.List; | |||||
import java.util.Arrays; | |||||
import java.util.concurrent.TimeUnit; | |||||
import cn.dev33.satoken.annotation.SaIgnore; | |||||
import com.ruoyi.system.domain.ZsOperationWarnconfig; | |||||
import com.ruoyi.system.task.MonitorTaskScheduler; | |||||
import lombok.RequiredArgsConstructor; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.constraints.*; | |||||
import cn.dev33.satoken.annotation.SaCheckPermission; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import com.ruoyi.common.annotation.RepeatSubmit; | |||||
import com.ruoyi.common.annotation.Log; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import com.ruoyi.common.core.validate.QueryGroup; | |||||
import com.ruoyi.common.enums.BusinessType; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnresultVo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnresultBo; | |||||
import com.ruoyi.system.service.IZsOperationWarnresultService; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
/** | |||||
* 预警结果 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/system/operationWarnresult") | |||||
public class ZsOperationWarnresultController extends BaseController { | |||||
private final IZsOperationWarnresultService iZsOperationWarnresultService; | |||||
/** | |||||
* 查询预警结果列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:list") | |||||
@GetMapping("/list") | |||||
public TableDataInfo<ZsOperationWarnresultVo> list(ZsOperationWarnresultBo bo, PageQuery pageQuery) { | |||||
return iZsOperationWarnresultService.queryPageList(bo, pageQuery); | |||||
} | |||||
/** | |||||
* 导出预警结果列表 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:export") | |||||
@Log(title = "预警结果", businessType = BusinessType.EXPORT) | |||||
@PostMapping("/export") | |||||
public void export(ZsOperationWarnresultBo bo, HttpServletResponse response) { | |||||
List<ZsOperationWarnresultVo> list = iZsOperationWarnresultService.queryList(bo); | |||||
ExcelUtil.exportExcel(list, "预警结果", ZsOperationWarnresultVo.class, response); | |||||
} | |||||
/** | |||||
* 获取预警结果详细信息 | |||||
* | |||||
* @param id 主键 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:query") | |||||
@GetMapping("/{id}") | |||||
public R<ZsOperationWarnresultVo> getInfo(@NotNull(message = "主键不能为空") | |||||
@PathVariable Long id) { | |||||
return R.ok(iZsOperationWarnresultService.queryById(id)); | |||||
} | |||||
/** | |||||
* 新增预警结果 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:add") | |||||
@Log(title = "预警结果", businessType = BusinessType.INSERT) | |||||
@RepeatSubmit() | |||||
@PostMapping() | |||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ZsOperationWarnresultBo bo) { | |||||
return toAjax(iZsOperationWarnresultService.insertByBo(bo)); | |||||
} | |||||
/** | |||||
* 修改预警结果 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:edit") | |||||
@Log(title = "预警结果", businessType = BusinessType.UPDATE) | |||||
@RepeatSubmit() | |||||
@PutMapping() | |||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ZsOperationWarnresultBo bo) { | |||||
return toAjax(iZsOperationWarnresultService.updateByBo(bo)); | |||||
} | |||||
/** | |||||
* 删除预警结果 | |||||
* | |||||
* @param ids 主键串 | |||||
*/ | |||||
@SaCheckPermission("system:operationWarnresult:remove") | |||||
@Log(title = "预警结果", businessType = BusinessType.DELETE) | |||||
@DeleteMapping("/{ids}") | |||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") | |||||
@PathVariable Long[] ids) { | |||||
return toAjax(iZsOperationWarnresultService.deleteWithValidByIds(Arrays.asList(ids), true)); | |||||
} | |||||
//立即调用预警监控 | |||||
@SaIgnore | |||||
@GetMapping("/monitorWarn") | |||||
public void monitorWarn() { | |||||
iZsOperationWarnresultService.monitorWarn(); | |||||
} | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.*; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
/** | |||||
* 商品配置对象 zs_operation_goods | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_goods") | |||||
public class ZsOperationGoods { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 平台 | |||||
*/ | |||||
private String platform; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
/** | |||||
* 是否启用 | |||||
*/ | |||||
private String isDisabled; | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.*; | |||||
import lombok.Data; | |||||
/** | |||||
* 发送信息配置对象 zs_operation_sendconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_sendconfig") | |||||
public class ZsOperationSendconfig { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String code; | |||||
/** | |||||
* 配置 | |||||
*/ | |||||
private String configValue; | |||||
/** | |||||
* 模块 | |||||
*/ | |||||
private String module; | |||||
/** | |||||
* 发送邮箱 | |||||
*/ | |||||
private String sendEmail; | |||||
/** | |||||
* 邮箱配置id | |||||
*/ | |||||
private Long smtpId; | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.*; | |||||
import lombok.Data; | |||||
/** | |||||
* 邮件配置对象 zs_operation_smtp | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_smtp") | |||||
public class ZsOperationSmtp { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 主机 | |||||
*/ | |||||
private String host; | |||||
/** | |||||
* 端口 | |||||
*/ | |||||
private Integer port; | |||||
/** | |||||
* 用户名 | |||||
*/ | |||||
private String username; | |||||
/** | |||||
* 密码 | |||||
*/ | |||||
private String password; | |||||
/** | |||||
* 最大发信数 | |||||
*/ | |||||
private Long maxCount; | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.*; | |||||
import lombok.Data; | |||||
/** | |||||
* 预警配置对象 zs_operation_warnconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_warnconfig") | |||||
public class ZsOperationWarnconfig { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 价格变化比例阈值(%) | |||||
*/ | |||||
private String priceChangeThreshold; | |||||
/** | |||||
* 监控频率 | |||||
*/ | |||||
private String monitorFrequency; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String warnTypes; | |||||
/** | |||||
* 预警时间段 | |||||
*/ | |||||
private String warnTimeRange; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
} |
package com.ruoyi.system.domain; | |||||
import com.baomidou.mybatisplus.annotation.*; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
import java.math.BigDecimal; | |||||
/** | |||||
* 预警结果对象 zs_operation_warnresult | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
@Data | |||||
@TableName("zs_operation_warnresult") | |||||
public class ZsOperationWarnresult { | |||||
private static final long serialVersionUID=1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@TableId(value = "id") | |||||
private Long id; | |||||
/** | |||||
* 预警时间 | |||||
*/ | |||||
private Date warnTime; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 当前价格 | |||||
*/ | |||||
private BigDecimal curPrice; | |||||
/** | |||||
* 价格变动幅度 | |||||
*/ | |||||
private String priceChangeRatio; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String warnTypes; | |||||
/** | |||||
* 通知内容/结果 | |||||
*/ | |||||
private String warnContent; | |||||
/** | |||||
* 处理状态 | |||||
*/ | |||||
private Integer status; | |||||
/** | |||||
* 图片快照 | |||||
*/ | |||||
private String snapshotUrl; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.*; | |||||
import java.util.Date; | |||||
import java.math.BigDecimal; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
/** | |||||
* 商品配置业务对象 zs_operation_goods | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationGoodsBo extends BaseEntity { | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 平台 | |||||
*/ | |||||
private String platform; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
/** | |||||
* 是否启用 | |||||
*/ | |||||
private String isDisabled; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.*; | |||||
import java.util.Date; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
/** | |||||
* 发送信息配置业务对象 zs_operation_sendconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationSendconfigBo extends BaseEntity { | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
@NotNull(message = "主键不能为空", groups = { EditGroup.class }) | |||||
private Long id; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String code; | |||||
/** | |||||
* 配置 | |||||
*/ | |||||
private String configValue; | |||||
/** | |||||
* 模块 | |||||
*/ | |||||
private String module; | |||||
/** | |||||
* 发送邮箱 | |||||
*/ | |||||
private String sendEmail; | |||||
/** | |||||
* 邮箱配置id | |||||
*/ | |||||
private Long smtpId; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.*; | |||||
import java.util.Date; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
/** | |||||
* 邮件配置业务对象 zs_operation_smtp | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationSmtpBo extends BaseEntity { | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) | |||||
private Long id; | |||||
/** | |||||
* 主机 | |||||
*/ | |||||
private String host; | |||||
/** | |||||
* 端口 | |||||
*/ | |||||
private Integer port; | |||||
/** | |||||
* 用户名 | |||||
*/ | |||||
private String username; | |||||
/** | |||||
* 密码 | |||||
*/ | |||||
private String password; | |||||
/** | |||||
* 最大发信数 | |||||
*/ | |||||
private Long maxCount; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.*; | |||||
import java.util.Date; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
/** | |||||
* 预警配置业务对象 zs_operation_warnconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationWarnconfigBo extends BaseEntity { | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) | |||||
private Long id; | |||||
/** | |||||
* 价格变化比例阈值(%) | |||||
*/ | |||||
private String priceChangeThreshold; | |||||
/** | |||||
* 监控频率 | |||||
*/ | |||||
private String monitorFrequency; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String warnTypes; | |||||
/** | |||||
* 预警时间段 | |||||
*/ | |||||
private String warnTimeRange; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
} |
package com.ruoyi.system.domain.bo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.*; | |||||
import java.util.Date; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
/** | |||||
* 预警结果业务对象 zs_operation_warnresult | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class ZsOperationWarnresultBo extends BaseEntity { | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
private Long id; | |||||
/** | |||||
* 预警时间 | |||||
*/ | |||||
private Date warnTime; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 当前价格 | |||||
*/ | |||||
private BigDecimal curPrice; | |||||
/** | |||||
* 价格变动幅度 | |||||
*/ | |||||
private String priceChangeRatio; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
private String warnTypes; | |||||
/** | |||||
* 通知内容/结果 | |||||
*/ | |||||
private String warnContent; | |||||
/** | |||||
* 处理状态 | |||||
*/ | |||||
private Integer status; | |||||
/** | |||||
* 图片快照 | |||||
*/ | |||||
@NotBlank(message = "图片快照不能为空", groups = { AddGroup.class, EditGroup.class }) | |||||
private String snapshotUrl; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import java.math.BigDecimal; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
/** | |||||
* 商品配置视图对象 zs_operation_goods | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationGoodsVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@ExcelProperty(value = "主键ID") | |||||
private Long id; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
@ExcelProperty(value = "商品名字") | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
@ExcelProperty(value = "商品编号") | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 商品url | |||||
*/ | |||||
@ExcelProperty(value = "商品url") | |||||
private String goodsSkuUrl; | |||||
/** | |||||
* 平台 | |||||
*/ | |||||
@ExcelProperty(value = "平台", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_platform") | |||||
private String platform; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
@ExcelProperty(value = "基准价格") | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
@ExcelProperty(value = "备注") | |||||
private String remark; | |||||
/** | |||||
* 是否启用 | |||||
*/ | |||||
@ExcelProperty(value = "是否启用", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_is_disabled") | |||||
private String isDisabled; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
/** | |||||
* 发送信息配置视图对象 zs_operation_sendconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationSendconfigVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键 | |||||
*/ | |||||
@ExcelProperty(value = "主键") | |||||
private Long id; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
@ExcelProperty(value = "预警方式", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_warn_types") | |||||
private String code; | |||||
/** | |||||
* 配置 | |||||
*/ | |||||
@ExcelProperty(value = "配置") | |||||
private String configValue; | |||||
/** | |||||
* 模块 | |||||
*/ | |||||
@ExcelProperty(value = "模块", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_module") | |||||
private String module; | |||||
/** | |||||
* 发送邮箱 | |||||
*/ | |||||
@ExcelProperty(value = "发送邮箱") | |||||
private String sendEmail; | |||||
/** | |||||
* 邮箱配置id | |||||
*/ | |||||
@ExcelProperty(value = "邮箱配置id") | |||||
private Long smtpId; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
/** | |||||
* 邮件配置视图对象 zs_operation_smtp | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationSmtpVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@ExcelProperty(value = "主键ID") | |||||
private Long id; | |||||
/** | |||||
* 主机 | |||||
*/ | |||||
@ExcelProperty(value = "主机") | |||||
private String host; | |||||
/** | |||||
* 端口 | |||||
*/ | |||||
@ExcelProperty(value = "端口") | |||||
private Integer port; | |||||
/** | |||||
* 用户名 | |||||
*/ | |||||
@ExcelProperty(value = "用户名") | |||||
private String username; | |||||
/** | |||||
* 密码 | |||||
*/ | |||||
@ExcelProperty(value = "密码") | |||||
private String password; | |||||
/** | |||||
* 最大发信数 | |||||
*/ | |||||
@ExcelProperty(value = "最大发信数") | |||||
private Long maxCount; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
/** | |||||
* 预警配置视图对象 zs_operation_warnconfig | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationWarnconfigVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@ExcelProperty(value = "主键ID") | |||||
private Long id; | |||||
/** | |||||
* 价格变化比例阈值(%) | |||||
*/ | |||||
@ExcelProperty(value = "价格变化比例阈值", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(readConverterExp = "%=") | |||||
private String priceChangeThreshold; | |||||
/** | |||||
* 监控频率 | |||||
*/ | |||||
@ExcelProperty(value = "监控频率", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_monitor_frequency") | |||||
private String monitorFrequency; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
@ExcelProperty(value = "预警方式", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_warn_types") | |||||
private String warnTypes; | |||||
/** | |||||
* 预警时间段 | |||||
*/ | |||||
@ExcelProperty(value = "预警时间段", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_warn_time_range") | |||||
private String warnTimeRange; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
@ExcelProperty(value = "备注") | |||||
private String remark; | |||||
} |
package com.ruoyi.system.domain.vo; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
import com.fasterxml.jackson.annotation.JsonFormat; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.ruoyi.common.annotation.ExcelDictFormat; | |||||
import com.ruoyi.common.convert.ExcelDictConvert; | |||||
import lombok.Data; | |||||
import java.util.Date; | |||||
/** | |||||
* 预警结果视图对象 zs_operation_warnresult | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class ZsOperationWarnresultVo { | |||||
private static final long serialVersionUID = 1L; | |||||
/** | |||||
* 主键ID | |||||
*/ | |||||
@ExcelProperty(value = "主键ID") | |||||
private Long id; | |||||
/** | |||||
* 预警时间 | |||||
*/ | |||||
@ExcelProperty(value = "预警时间") | |||||
private Date warnTime; | |||||
/** | |||||
* 商品名字 | |||||
*/ | |||||
@ExcelProperty(value = "商品名字") | |||||
private String goodsSkuName; | |||||
/** | |||||
* 商品编号 | |||||
*/ | |||||
@ExcelProperty(value = "商品编号") | |||||
private String goodsSkuSn; | |||||
/** | |||||
* 基准价格 | |||||
*/ | |||||
@ExcelProperty(value = "基准价格") | |||||
private BigDecimal initPrice; | |||||
/** | |||||
* 当前价格 | |||||
*/ | |||||
@ExcelProperty(value = "当前价格") | |||||
private BigDecimal curPrice; | |||||
/** | |||||
* 价格变动幅度 | |||||
*/ | |||||
@ExcelProperty(value = "价格变动幅度") | |||||
private String priceChangeRatio; | |||||
/** | |||||
* 预警方式 | |||||
*/ | |||||
@ExcelProperty(value = "预警方式", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_warn_types") | |||||
private String warnTypes; | |||||
/** | |||||
* 通知内容/结果 | |||||
*/ | |||||
@ExcelProperty(value = "通知内容/结果") | |||||
private String warnContent; | |||||
/** | |||||
* 处理状态 | |||||
*/ | |||||
@ExcelProperty(value = "处理状态", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_status") | |||||
private Integer status; | |||||
/** | |||||
* 图片快照 | |||||
*/ | |||||
@ExcelProperty(value = "图片快照") | |||||
private String snapshotUrl; | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.system.domain.ZsOperationGoods; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsVo; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
/** | |||||
* 商品配置Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
public interface ZsOperationGoodsMapper extends BaseMapperPlus<ZsOperationGoodsMapper, ZsOperationGoods, ZsOperationGoodsVo> { | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.system.domain.ZsOperationSendconfig; | |||||
import com.ruoyi.system.domain.vo.ZsOperationSendconfigVo; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
/** | |||||
* 发送信息配置Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
public interface ZsOperationSendconfigMapper extends BaseMapperPlus<ZsOperationSendconfigMapper, ZsOperationSendconfig, ZsOperationSendconfigVo> { | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.system.domain.ZsOperationSmtp; | |||||
import com.ruoyi.system.domain.vo.ZsOperationSmtpVo; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
/** | |||||
* 邮件配置Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
public interface ZsOperationSmtpMapper extends BaseMapperPlus<ZsOperationSmtpMapper, ZsOperationSmtp, ZsOperationSmtpVo> { | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.system.domain.ZsOperationWarnconfig; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnconfigVo; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
/** | |||||
* 预警配置Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
public interface ZsOperationWarnconfigMapper extends BaseMapperPlus<ZsOperationWarnconfigMapper, ZsOperationWarnconfig, ZsOperationWarnconfigVo> { | |||||
} |
package com.ruoyi.system.mapper; | |||||
import com.ruoyi.system.domain.ZsOperationWarnresult; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnresultVo; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
/** | |||||
* 预警结果Mapper接口 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
public interface ZsOperationWarnresultMapper extends BaseMapperPlus<ZsOperationWarnresultMapper, ZsOperationWarnresult, ZsOperationWarnresultVo> { | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.ruoyi.system.utils.HttpUtil; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.stereotype.Service; | |||||
import com.ruoyi.system.domain.bo.ZsOperationGoodsBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationGoodsVo; | |||||
import com.ruoyi.system.domain.ZsOperationGoods; | |||||
import com.ruoyi.system.mapper.ZsOperationGoodsMapper; | |||||
import com.ruoyi.system.service.IZsOperationGoodsService; | |||||
import java.math.BigDecimal; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Collection; | |||||
/** | |||||
* 商品配置Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
@Slf4j | |||||
public class ZsOperationGoodsServiceImpl implements IZsOperationGoodsService { | |||||
private final ZsOperationGoodsMapper baseMapper; | |||||
/** | |||||
* 查询商品配置 | |||||
*/ | |||||
@Override | |||||
public ZsOperationGoodsVo queryById(Long id){ | |||||
return baseMapper.selectVoById(id); | |||||
} | |||||
/** | |||||
* 查询商品配置列表 | |||||
*/ | |||||
@Override | |||||
public TableDataInfo<ZsOperationGoodsVo> queryPageList(ZsOperationGoodsBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationGoods> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationGoodsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
/** | |||||
* 查询商品配置列表 | |||||
*/ | |||||
@Override | |||||
public List<ZsOperationGoodsVo> queryList(ZsOperationGoodsBo bo) { | |||||
LambdaQueryWrapper<ZsOperationGoods> lqw = buildQueryWrapper(bo); | |||||
return baseMapper.selectVoList(lqw); | |||||
} | |||||
private LambdaQueryWrapper<ZsOperationGoods> buildQueryWrapper(ZsOperationGoodsBo bo) { | |||||
Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationGoods> lqw = Wrappers.lambdaQuery(); | |||||
lqw.like(StringUtils.isNotBlank(bo.getGoodsSkuName()), ZsOperationGoods::getGoodsSkuName, bo.getGoodsSkuName()); | |||||
lqw.like(StringUtils.isNotBlank(bo.getGoodsSkuSn()), ZsOperationGoods::getGoodsSkuSn, bo.getGoodsSkuSn()); | |||||
lqw.eq(StringUtils.isNotBlank(bo.getPlatform()), ZsOperationGoods::getPlatform, bo.getPlatform()); | |||||
lqw.eq(StringUtils.isNotBlank(bo.getIsDisabled()), ZsOperationGoods::getIsDisabled, bo.getIsDisabled()); | |||||
return lqw; | |||||
} | |||||
/** | |||||
* 新增商品配置 | |||||
*/ | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationGoodsBo bo) { | |||||
ZsOperationGoods add = BeanUtil.toBean(bo, ZsOperationGoods.class); | |||||
//获取抓取的信息 | |||||
Map<String, Object> reMap = HttpUtil.sendGetRequest(bo.getGoodsSkuUrl(),false,bo.getPlatform()); | |||||
if ((boolean)reMap.get("success")) { | |||||
List dataList = (List)reMap.get("data"); | |||||
Map dataMap = (Map)dataList.get(0); | |||||
String title = (String)dataMap.get("title"); | |||||
String price = (String)dataMap.get("price"); | |||||
if (org.apache.commons.lang3.StringUtils.isNotBlank(price)) { | |||||
price =price.replace(",","").trim(); | |||||
} | |||||
String sku = (String)dataMap.get("sku"); | |||||
String remark = (String)dataMap.get("remark"); | |||||
add.setGoodsSkuName(title); | |||||
add.setGoodsSkuSn(sku); | |||||
add.setRemark(remark); | |||||
add.setInitPrice(new BigDecimal(price)); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
return flag; | |||||
} else { | |||||
log.info("新增商品同步数据失败!reMap="+reMap.toString()); | |||||
return false; | |||||
} | |||||
} | |||||
/** | |||||
* 修改商品配置 | |||||
*/ | |||||
@Override | |||||
public Boolean updateByBo(ZsOperationGoodsBo bo) { | |||||
ZsOperationGoods update = BeanUtil.toBean(bo, ZsOperationGoods.class); | |||||
validEntityBeforeSave(update); | |||||
return baseMapper.updateById(update) > 0; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationGoods entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
String errMessage = ""; | |||||
if (StringUtils.isBlank(entity.getGoodsSkuName())) { | |||||
errMessage= "商品名称不能为空"; | |||||
} | |||||
if (StringUtils.isBlank(entity.getGoodsSkuSn())) { | |||||
errMessage= "商品编码不能为空"; | |||||
} | |||||
if (StringUtils.isBlank(entity.getGoodsSkuUrl())) { | |||||
errMessage= "商品url不能为空"; | |||||
} | |||||
if (entity.getInitPrice()==null) { | |||||
errMessage= "基准价格不能为空"; | |||||
} | |||||
if (StringUtils.isBlank(entity.getIsDisabled())) { | |||||
errMessage= "是否启用不能为空"; | |||||
} | |||||
if (StringUtils.isBlank(entity.getPlatform())) { | |||||
errMessage= "平台不能为空"; | |||||
} | |||||
if (!"".equals(errMessage)) { | |||||
throw new RuntimeException(errMessage); | |||||
} | |||||
} | |||||
/** | |||||
* 批量删除商品配置 | |||||
*/ | |||||
@Override | |||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||||
if(isValid){ | |||||
//TODO 做一些业务上的校验,判断是否需要校验 | |||||
} | |||||
return baseMapper.deleteBatchIds(ids) > 0; | |||||
} | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.stereotype.Service; | |||||
import com.ruoyi.system.domain.bo.ZsOperationSendconfigBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationSendconfigVo; | |||||
import com.ruoyi.system.domain.ZsOperationSendconfig; | |||||
import com.ruoyi.system.mapper.ZsOperationSendconfigMapper; | |||||
import com.ruoyi.system.service.IZsOperationSendconfigService; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Collection; | |||||
/** | |||||
* 发送信息配置Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
public class ZsOperationSendconfigServiceImpl implements IZsOperationSendconfigService { | |||||
private final ZsOperationSendconfigMapper baseMapper; | |||||
/** | |||||
* 查询发送信息配置 | |||||
*/ | |||||
@Override | |||||
public ZsOperationSendconfigVo queryById(Long id){ | |||||
return baseMapper.selectVoById(id); | |||||
} | |||||
/** | |||||
* 查询发送信息配置列表 | |||||
*/ | |||||
@Override | |||||
public TableDataInfo<ZsOperationSendconfigVo> queryPageList(ZsOperationSendconfigBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationSendconfig> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationSendconfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
/** | |||||
* 查询发送信息配置列表 | |||||
*/ | |||||
@Override | |||||
public List<ZsOperationSendconfigVo> queryList(ZsOperationSendconfigBo bo) { | |||||
LambdaQueryWrapper<ZsOperationSendconfig> lqw = buildQueryWrapper(bo); | |||||
return baseMapper.selectVoList(lqw); | |||||
} | |||||
private LambdaQueryWrapper<ZsOperationSendconfig> buildQueryWrapper(ZsOperationSendconfigBo bo) { | |||||
Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationSendconfig> lqw = Wrappers.lambdaQuery(); | |||||
lqw.eq(StringUtils.isNotBlank(bo.getModule()), ZsOperationSendconfig::getModule, bo.getModule()); | |||||
return lqw; | |||||
} | |||||
/** | |||||
* 新增发送信息配置 | |||||
*/ | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationSendconfigBo bo) { | |||||
ZsOperationSendconfig add = BeanUtil.toBean(bo, ZsOperationSendconfig.class); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
if (flag) { | |||||
bo.setId(add.getId()); | |||||
} | |||||
return flag; | |||||
} | |||||
/** | |||||
* 修改发送信息配置 | |||||
*/ | |||||
@Override | |||||
public Boolean updateByBo(ZsOperationSendconfigBo bo) { | |||||
ZsOperationSendconfig update = BeanUtil.toBean(bo, ZsOperationSendconfig.class); | |||||
validEntityBeforeSave(update); | |||||
return baseMapper.updateById(update) > 0; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationSendconfig entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
} | |||||
/** | |||||
* 批量删除发送信息配置 | |||||
*/ | |||||
@Override | |||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||||
if(isValid){ | |||||
//TODO 做一些业务上的校验,判断是否需要校验 | |||||
} | |||||
return baseMapper.deleteBatchIds(ids) > 0; | |||||
} | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.stereotype.Service; | |||||
import com.ruoyi.system.domain.bo.ZsOperationSmtpBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationSmtpVo; | |||||
import com.ruoyi.system.domain.ZsOperationSmtp; | |||||
import com.ruoyi.system.mapper.ZsOperationSmtpMapper; | |||||
import com.ruoyi.system.service.IZsOperationSmtpService; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Collection; | |||||
/** | |||||
* 邮件配置Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-09 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
public class ZsOperationSmtpServiceImpl implements IZsOperationSmtpService { | |||||
private final ZsOperationSmtpMapper baseMapper; | |||||
/** | |||||
* 查询邮件配置 | |||||
*/ | |||||
@Override | |||||
public ZsOperationSmtpVo queryById(Long id){ | |||||
return baseMapper.selectVoById(id); | |||||
} | |||||
/** | |||||
* 查询邮件配置列表 | |||||
*/ | |||||
@Override | |||||
public TableDataInfo<ZsOperationSmtpVo> queryPageList(ZsOperationSmtpBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationSmtp> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationSmtpVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
/** | |||||
* 查询邮件配置列表 | |||||
*/ | |||||
@Override | |||||
public List<ZsOperationSmtpVo> queryList(ZsOperationSmtpBo bo) { | |||||
LambdaQueryWrapper<ZsOperationSmtp> lqw = buildQueryWrapper(bo); | |||||
return baseMapper.selectVoList(lqw); | |||||
} | |||||
private LambdaQueryWrapper<ZsOperationSmtp> buildQueryWrapper(ZsOperationSmtpBo bo) { | |||||
Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationSmtp> lqw = Wrappers.lambdaQuery(); | |||||
return lqw; | |||||
} | |||||
/** | |||||
* 新增邮件配置 | |||||
*/ | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationSmtpBo bo) { | |||||
ZsOperationSmtp add = BeanUtil.toBean(bo, ZsOperationSmtp.class); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
if (flag) { | |||||
bo.setId(add.getId()); | |||||
} | |||||
return flag; | |||||
} | |||||
/** | |||||
* 修改邮件配置 | |||||
*/ | |||||
@Override | |||||
public Boolean updateByBo(ZsOperationSmtpBo bo) { | |||||
ZsOperationSmtp update = BeanUtil.toBean(bo, ZsOperationSmtp.class); | |||||
validEntityBeforeSave(update); | |||||
return baseMapper.updateById(update) > 0; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationSmtp entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
} | |||||
/** | |||||
* 批量删除邮件配置 | |||||
*/ | |||||
@Override | |||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||||
if(isValid){ | |||||
//TODO 做一些业务上的校验,判断是否需要校验 | |||||
} | |||||
return baseMapper.deleteBatchIds(ids) > 0; | |||||
} | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.stereotype.Service; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnconfigBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnconfigVo; | |||||
import com.ruoyi.system.domain.ZsOperationWarnconfig; | |||||
import com.ruoyi.system.mapper.ZsOperationWarnconfigMapper; | |||||
import com.ruoyi.system.service.IZsOperationWarnconfigService; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Collection; | |||||
/** | |||||
* 预警配置Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-08 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
public class ZsOperationWarnconfigServiceImpl implements IZsOperationWarnconfigService { | |||||
private final ZsOperationWarnconfigMapper baseMapper; | |||||
/** | |||||
* 查询预警配置 | |||||
*/ | |||||
@Override | |||||
public ZsOperationWarnconfigVo queryById(Long id){ | |||||
return baseMapper.selectVoById(id); | |||||
} | |||||
/** | |||||
* 查询预警配置列表 | |||||
*/ | |||||
@Override | |||||
public TableDataInfo<ZsOperationWarnconfigVo> queryPageList(ZsOperationWarnconfigBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationWarnconfig> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationWarnconfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
/** | |||||
* 查询预警配置列表 | |||||
*/ | |||||
@Override | |||||
public List<ZsOperationWarnconfigVo> queryList(ZsOperationWarnconfigBo bo) { | |||||
LambdaQueryWrapper<ZsOperationWarnconfig> lqw = buildQueryWrapper(bo); | |||||
return baseMapper.selectVoList(lqw); | |||||
} | |||||
private LambdaQueryWrapper<ZsOperationWarnconfig> buildQueryWrapper(ZsOperationWarnconfigBo bo) { | |||||
Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationWarnconfig> lqw = Wrappers.lambdaQuery(); | |||||
return lqw; | |||||
} | |||||
/** | |||||
* 新增预警配置 | |||||
*/ | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationWarnconfigBo bo) { | |||||
ZsOperationWarnconfig add = BeanUtil.toBean(bo, ZsOperationWarnconfig.class); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
if (flag) { | |||||
bo.setId(add.getId()); | |||||
} | |||||
return flag; | |||||
} | |||||
/** | |||||
* 修改预警配置 | |||||
*/ | |||||
@Override | |||||
public Boolean updateByBo(ZsOperationWarnconfigBo bo) { | |||||
ZsOperationWarnconfig update = BeanUtil.toBean(bo, ZsOperationWarnconfig.class); | |||||
validEntityBeforeSave(update); | |||||
return baseMapper.updateById(update) > 0; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationWarnconfig entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
} | |||||
/** | |||||
* 批量删除预警配置 | |||||
*/ | |||||
@Override | |||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||||
if(isValid){ | |||||
//TODO 做一些业务上的校验,判断是否需要校验 | |||||
} | |||||
return baseMapper.deleteBatchIds(ids) > 0; | |||||
} | |||||
} |
package com.ruoyi.system.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.common.utils.StringUtils; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.ruoyi.system.domain.ZsOperationWarnconfig; | |||||
import com.ruoyi.system.mapper.ZsOperationWarnconfigMapper; | |||||
import com.ruoyi.system.task.MonitorTaskScheduler; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnresultBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnresultVo; | |||||
import com.ruoyi.system.domain.ZsOperationWarnresult; | |||||
import com.ruoyi.system.mapper.ZsOperationWarnresultMapper; | |||||
import com.ruoyi.system.service.IZsOperationWarnresultService; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Collection; | |||||
/** | |||||
* 预警结果Service业务层处理 | |||||
* | |||||
* @author 王强 | |||||
* @date 2025-05-12 | |||||
*/ | |||||
@RequiredArgsConstructor | |||||
@Service | |||||
public class ZsOperationWarnresultServiceImpl implements IZsOperationWarnresultService { | |||||
private final ZsOperationWarnresultMapper baseMapper; | |||||
@Autowired | |||||
private MonitorTaskScheduler monitorTaskScheduler; | |||||
@Autowired | |||||
private ZsOperationWarnconfigMapper zsOperationWarnconfigMapper; | |||||
/** | |||||
* 查询预警结果 | |||||
*/ | |||||
@Override | |||||
public ZsOperationWarnresultVo queryById(Long id){ | |||||
return baseMapper.selectVoById(id); | |||||
} | |||||
/** | |||||
* 查询预警结果列表 | |||||
*/ | |||||
@Override | |||||
public TableDataInfo<ZsOperationWarnresultVo> queryPageList(ZsOperationWarnresultBo bo, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<ZsOperationWarnresult> lqw = buildQueryWrapper(bo); | |||||
Page<ZsOperationWarnresultVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
/** | |||||
* 查询预警结果列表 | |||||
*/ | |||||
@Override | |||||
public List<ZsOperationWarnresultVo> queryList(ZsOperationWarnresultBo bo) { | |||||
LambdaQueryWrapper<ZsOperationWarnresult> lqw = buildQueryWrapper(bo); | |||||
return baseMapper.selectVoList(lqw); | |||||
} | |||||
private LambdaQueryWrapper<ZsOperationWarnresult> buildQueryWrapper(ZsOperationWarnresultBo bo) { | |||||
Map<String, Object> params = bo.getParams(); | |||||
LambdaQueryWrapper<ZsOperationWarnresult> lqw = Wrappers.lambdaQuery(); | |||||
lqw.between(params.get("beginWarnTime") != null && params.get("endWarnTime") != null, | |||||
ZsOperationWarnresult::getWarnTime ,params.get("beginWarnTime"), params.get("endWarnTime")); | |||||
lqw.like(StringUtils.isNotBlank(bo.getGoodsSkuName()), ZsOperationWarnresult::getGoodsSkuName, bo.getGoodsSkuName()); | |||||
lqw.eq(StringUtils.isNotBlank(bo.getGoodsSkuSn()), ZsOperationWarnresult::getGoodsSkuSn, bo.getGoodsSkuSn()); | |||||
lqw.eq(bo.getStatus() != null, ZsOperationWarnresult::getStatus, bo.getStatus()); | |||||
return lqw; | |||||
} | |||||
/** | |||||
* 新增预警结果 | |||||
*/ | |||||
@Override | |||||
public Boolean insertByBo(ZsOperationWarnresultBo bo) { | |||||
ZsOperationWarnresult add = BeanUtil.toBean(bo, ZsOperationWarnresult.class); | |||||
validEntityBeforeSave(add); | |||||
boolean flag = baseMapper.insert(add) > 0; | |||||
if (flag) { | |||||
bo.setId(add.getId()); | |||||
} | |||||
return flag; | |||||
} | |||||
/** | |||||
* 修改预警结果 | |||||
*/ | |||||
@Override | |||||
public Boolean updateByBo(ZsOperationWarnresultBo bo) { | |||||
ZsOperationWarnresult update = BeanUtil.toBean(bo, ZsOperationWarnresult.class); | |||||
validEntityBeforeSave(update); | |||||
return baseMapper.updateById(update) > 0; | |||||
} | |||||
/** | |||||
* 保存前的数据校验 | |||||
*/ | |||||
private void validEntityBeforeSave(ZsOperationWarnresult entity){ | |||||
//TODO 做一些数据校验,如唯一约束 | |||||
} | |||||
/** | |||||
* 批量删除预警结果 | |||||
*/ | |||||
@Override | |||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | |||||
if(isValid){ | |||||
//TODO 做一些业务上的校验,判断是否需要校验 | |||||
} | |||||
return baseMapper.deleteBatchIds(ids) > 0; | |||||
} | |||||
//拉取商品 进行比对 | |||||
@Override | |||||
public void monitorWarn() { | |||||
List<ZsOperationWarnconfig> zsOperationWarnconfigs = zsOperationWarnconfigMapper.selectList(); | |||||
if (zsOperationWarnconfigs!=null&&zsOperationWarnconfigs.size()>0) { | |||||
ZsOperationWarnconfig zsOperationWarnconfig = zsOperationWarnconfigs.get(0); | |||||
monitorTaskScheduler.monitorWarn(zsOperationWarnconfig); | |||||
} | |||||
} | |||||
} |
package com.ruoyi.system.utils; | |||||
import com.ruoyi.system.domain.ZsOperationSmtp; | |||||
import com.ruoyi.system.mapper.ZsOperationSmtpMapper; | |||||
import com.sun.mail.util.MailSSLSocketFactory; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.scheduling.annotation.Async; | |||||
import org.springframework.stereotype.Component; | |||||
import javax.mail.*; | |||||
import javax.mail.internet.InternetAddress; | |||||
import javax.mail.internet.MimeMessage; | |||||
import java.util.Properties; | |||||
//邮件发送工具类 | |||||
@Component | |||||
@Slf4j | |||||
public class EmailUtils { | |||||
@Autowired | |||||
private ZsOperationSmtpMapper zsOperationSmtpMapper; | |||||
/** | |||||
* 发送邮件 | |||||
* @param sendEmail 发送邮箱 | |||||
* @param receiveEmail 接收邮箱 | |||||
* @param content 邮件标题 | |||||
* @param receiveEmail 邮件内容 | |||||
* @param smtpId 邮件配置id | |||||
*/ | |||||
@Async | |||||
public void sendMailByTransport(String sendEmail ,String receiveEmail,String title,String content,Long smtpId) { | |||||
try { | |||||
ZsOperationSmtp smtp = zsOperationSmtpMapper.selectById(smtpId); | |||||
Properties props = new Properties(); | |||||
props.put("mail.smtp.host", smtp.getHost()); | |||||
props.put("mail.smtp.socketFactory.port", String.valueOf(smtp.getPort())); | |||||
MailSSLSocketFactory sf = new MailSSLSocketFactory(); | |||||
sf.setTrustAllHosts(true); | |||||
props.put("mail.smtp.ssl.enable", "true"); | |||||
props.put("mail.smtp.ssl.socketFactory", sf); | |||||
props.put("mail.smtp.auth", "true"); | |||||
props.put("mail.smtp.port", String.valueOf(smtp.getPort())); | |||||
final String username = smtp.getUsername().trim(); | |||||
final String password = smtp.getPassword().trim(); | |||||
Session session = Session.getInstance(props, | |||||
new Authenticator() { | |||||
@Override | |||||
protected PasswordAuthentication getPasswordAuthentication() { | |||||
return new PasswordAuthentication(username,password); | |||||
} | |||||
}); | |||||
Message message = new MimeMessage(session); | |||||
message.setFrom(new InternetAddress(sendEmail)); | |||||
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiveEmail)); | |||||
message.setSubject(title); | |||||
message.setText(content); | |||||
Transport.send(message); | |||||
} catch (Exception e) { | |||||
log.error("邮件发送失败",e); | |||||
} | |||||
} | |||||
} |
package com.ruoyi.system.utils; | |||||
import org.springframework.beans.factory.annotation.Value; | |||||
import org.springframework.http.ResponseEntity; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.web.client.RestTemplate; | |||||
import org.springframework.web.util.UriComponentsBuilder; | |||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
//调用获取商品信息工具类 | |||||
@Component | |||||
public class HttpUtil { | |||||
private static String BASE_URL; | |||||
@Value("${zs-operation.url}") | |||||
public void setBaseUrl(String baseUrl) { | |||||
HttpUtil.BASE_URL = baseUrl; | |||||
} | |||||
private static final RestTemplate restTemplate = new RestTemplate(); | |||||
/** | |||||
* 发送GET请求并处理响应 | |||||
* @param url 请求URL | |||||
* @param needScreenshot 是否需要截图 | |||||
* @return 响应结果 | |||||
*/ | |||||
public static Map<String, Object> sendGetRequest(String url, boolean needScreenshot,String platform) { | |||||
try { | |||||
// 构建请求URL和参数 | |||||
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(BASE_URL) | |||||
.queryParam("url", url) | |||||
.queryParam("needScreenshot", needScreenshot) | |||||
.queryParam("platform", platform); | |||||
// 发送GET请求 | |||||
ResponseEntity<Map> response = restTemplate.getForEntity(builder.toUriString(), Map.class); | |||||
Map body = response.getBody(); | |||||
return body; | |||||
} catch (Exception e) { | |||||
Map<String, Object> reMap = new HashMap<>(); | |||||
reMap.put("success", false); | |||||
reMap.put("message", "请求发生错误: " + e.getMessage()); | |||||
return reMap; | |||||
} | |||||
} | |||||
} |
<?xml version="1.0" encoding="UTF-8" ?> | |||||
<!DOCTYPE mapper | |||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ruoyi.system.mapper.ZsOperationGoodsMapper"> | |||||
<resultMap type="com.ruoyi.system.domain.ZsOperationGoods" id="ZsOperationGoodsResult"> | |||||
<result property="id" column="id"/> | |||||
<result property="goodsSkuName" column="goods_sku_name"/> | |||||
<result property="goodsSkuSn" column="goods_sku_sn"/> | |||||
<result property="goodsSkuUrl" column="goods_sku_url"/> | |||||
<result property="platform" column="platform"/> | |||||
<result property="initPrice" column="init_price"/> | |||||
<result property="remark" column="remark"/> | |||||
<result property="isDisabled" column="is_disabled"/> | |||||
</resultMap> | |||||
</mapper> |
<?xml version="1.0" encoding="UTF-8" ?> | |||||
<!DOCTYPE mapper | |||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ruoyi.system.mapper.ZsOperationSendconfigMapper"> | |||||
<resultMap type="com.ruoyi.system.domain.ZsOperationSendconfig" id="ZsOperationSendconfigResult"> | |||||
<result property="id" column="id"/> | |||||
<result property="code" column="code"/> | |||||
<result property="configValue" column="config_value"/> | |||||
<result property="module" column="module"/> | |||||
<result property="sendEmail" column="send_email"/> | |||||
<result property="smtpId" column="smtp_id"/> | |||||
</resultMap> | |||||
</mapper> |
<?xml version="1.0" encoding="UTF-8" ?> | |||||
<!DOCTYPE mapper | |||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ruoyi.system.mapper.ZsOperationSmtpMapper"> | |||||
<resultMap type="com.ruoyi.system.domain.ZsOperationSmtp" id="ZsOperationSmtpResult"> | |||||
<result property="id" column="id"/> | |||||
<result property="host" column="host"/> | |||||
<result property="port" column="port"/> | |||||
<result property="username" column="username"/> | |||||
<result property="password" column="password"/> | |||||
<result property="maxCount" column="max_count"/> | |||||
</resultMap> | |||||
</mapper> |
<?xml version="1.0" encoding="UTF-8" ?> | |||||
<!DOCTYPE mapper | |||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ruoyi.system.mapper.ZsOperationWarnconfigMapper"> | |||||
<resultMap type="com.ruoyi.system.domain.ZsOperationWarnconfig" id="ZsOperationWarnconfigResult"> | |||||
<result property="id" column="id"/> | |||||
<result property="priceChangeThreshold" column="price_change_threshold"/> | |||||
<result property="monitorFrequency" column="monitor_frequency"/> | |||||
<result property="warnTypes" column="warn_types"/> | |||||
<result property="warnTimeRange" column="warn_time_range"/> | |||||
<result property="remark" column="remark"/> | |||||
</resultMap> | |||||
</mapper> |
<?xml version="1.0" encoding="UTF-8" ?> | |||||
<!DOCTYPE mapper | |||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.ruoyi.system.mapper.ZsOperationWarnresultMapper"> | |||||
<resultMap type="com.ruoyi.system.domain.ZsOperationWarnresult" id="ZsOperationWarnresultResult"> | |||||
<result property="id" column="id"/> | |||||
<result property="warnTime" column="warn_time"/> | |||||
<result property="goodsSkuName" column="goods_sku_name"/> | |||||
<result property="goodsSkuSn" column="goods_sku_sn"/> | |||||
<result property="initPrice" column="init_price"/> | |||||
<result property="curPrice" column="cur_price"/> | |||||
<result property="priceChangeRatio" column="price_change_ratio"/> | |||||
<result property="warnTypes" column="warn_types"/> | |||||
<result property="warnContent" column="warn_content"/> | |||||
<result property="status" column="status"/> | |||||
<result property="snapshotUrl" column="snapshot_url"/> | |||||
</resultMap> | |||||
</mapper> |