Jelajahi Sumber

feat:“增加远程退币功能“

soobin 11 bulan lalu
induk
melakukan
3d59a49542

+ 15 - 8
src/main/java/com/szwl/controller/IndexController.java

@@ -19,6 +19,7 @@ import com.szwl.model.bean.*;
 import com.szwl.model.bo.JsonUtils;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.dto.ReturnCoinVo;
 import com.szwl.model.entity.*;
 import com.szwl.model.utils.AdminUtils;
 import com.szwl.model.utils.HttpClientSslUtils;
@@ -30,7 +31,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
-import org.springframework.amqp.core.AmqpAdmin;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -91,9 +91,6 @@ public class IndexController {
     TNameDictionaryService nameDictionaryService;
 
     @Autowired
-    private AmqpAdmin amqpAdmin;
-
-    @Autowired
     TWechatService wechatService;
 
     @Resource
@@ -105,6 +102,9 @@ public class IndexController {
     @Autowired
     TAlarmRecordService alarmRecordService;
 
+    @Autowired
+    ReturnCoinRecordService returnCoinRecordService;
+
     private static final String appid = "07784f5fedb508046c841b391005b7de";
 
     @ApiOperation(value = "心跳")
@@ -586,10 +586,7 @@ public class IndexController {
                         LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
                         queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
                         List<TProduct> productList = productService.list(queryProduct);
-                        if (productList.size() == 0) {
-//                            for (TProduct product : productList) {
-//                                productService.removeById(product.getId());
-//                            }
+                        if (productList.isEmpty()) {
                             if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
                                 if (equipmentApply.getEquimentType() != null && equipmentApply.getEquimentType().equals("MG280")) {
                                     saveProductMG280(equipmentId);
@@ -2415,5 +2412,15 @@ public class IndexController {
         return "找不到设备";
     }
 
+    @ApiOperation("上传远程退币状态")
+    @PostMapping("/uploadReturnCoinStatus")
+    public String uploadReturnCoinStatus(@RequestBody ReturnCoinVo returnCoinVo) {
+        Long id = returnCoinVo.getId();
+        ReturnCoinRecord returnCoinRecord = returnCoinRecordService.getById(id);
+        returnCoinRecord.setStatus(returnCoinVo.getStatus());
+        returnCoinRecord.setReason(returnCoinVo.getReason());
+        returnCoinRecordService.updateById(returnCoinRecord);
+        return "success";
+    }
 }
 

+ 99 - 0
src/main/java/com/szwl/controller/ReturnCoinRecordController.java

@@ -0,0 +1,99 @@
+package com.szwl.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.ReturnCoinRecord;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.model.utils.PushUtils;
+import com.szwl.service.ReturnCoinRecordService;
+import com.szwl.service.TEquipmentService;
+import com.szwl.util.IDGenerator;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 远程退币申请表 前端控制器
+ * </p>
+ *
+ * @author wuhs
+ * @since 2024-09-04
+ */
+@RestController
+@RequestMapping("/returnCoinRecord")
+public class ReturnCoinRecordController {
+    @Autowired
+    ReturnCoinRecordService returnCoinRecordService;
+
+    @Autowired
+    TEquipmentService tEquipmentService;
+
+    @ApiOperation("获取当天远程退币申请列表")
+    @GetMapping("/list")
+    public ResponseModel<?> list(Long equipmentId){
+        // 获取当天的 0 点时间
+        LocalDateTime startTime = LocalDate.now().atStartOfDay();
+
+        // 获取当天的 24 点时间(次日的 0 点)
+        LocalDateTime endTime = LocalDate.now().plusDays(1).atStartOfDay();
+        LambdaQueryWrapper<ReturnCoinRecord> query = Wrappers.lambdaQuery();
+        query.eq(ReturnCoinRecord::getEquipmentId, equipmentId);
+        // 获取今天的列表,0点到24点
+        query.gt(ReturnCoinRecord::getCreateDate, startTime);
+        query.le(ReturnCoinRecord::getCreateDate, endTime);
+        List<ReturnCoinRecord> list = returnCoinRecordService.list(query);
+        return R.ok(list);
+    }
+
+    @ApiOperation("远程退币申请")
+    @PostMapping("/apply")
+    public ResponseModel<?> apply(@RequestBody ReturnCoinRecord returnCoinRecord){
+        // 设备ID
+        Long equipmentId = returnCoinRecord.getEquipmentId();
+        // 用户ID
+        Long adminId = returnCoinRecord.getAdminId();
+        // 退币数量
+        Integer amount = returnCoinRecord.getAmount();
+        if (equipmentId == null || adminId == null || amount == null) {
+            return R.fail("参数错误");
+        }
+        if (amount <= 0) {
+            return R.fail("参数错误");
+        }
+        TEquipment equipment = tEquipmentService.getById(equipmentId);
+        if (equipment == null || equipment.getId() == null) {
+            return R.fail("找不到设备");
+        }
+        String clientId = equipment.getClientId();
+        String name = equipment.getName();
+        ReturnCoinRecord record = new ReturnCoinRecord();
+        long commonId = IDGenerator.commonID();
+        record.setId(commonId);
+        record.setCreateDate(new Date());
+        record.setModifyDate(new Date());
+        record.setAdminId(adminId);
+        record.setEquipmentId(equipmentId);
+        record.setAmount(amount);
+        record.setClientId(clientId);
+        if (StringUtils.isEmpty(name)) {
+            record.setName(clientId.substring(clientId.length() - 6));
+        } else {
+            record.setName(name);
+        }
+        record.setStatus(0);
+        returnCoinRecordService.save(record);
+        tEquipmentService.sentMessage(clientId, PushUtils.buildJson("returnCoin", commonId + ":" + amount).toString());
+        return R.ok();
+    }
+}
+

+ 16 - 0
src/main/java/com/szwl/mapper/ReturnCoinRecordMapper.java

@@ -0,0 +1,16 @@
+package com.szwl.mapper;
+
+import com.szwl.model.entity.ReturnCoinRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 远程退币申请表 Mapper 接口
+ * </p>
+ *
+ * @author wuhs
+ * @since 2024-09-04
+ */
+public interface ReturnCoinRecordMapper extends BaseMapper<ReturnCoinRecord> {
+
+}

+ 24 - 0
src/main/java/com/szwl/mapper/xml/ReturnCoinRecordMapper.xml

@@ -0,0 +1,24 @@
+<?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.szwl.mapper.ReturnCoinRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.szwl.model.entity.ReturnCoinRecord">
+        <id column="id" property="id" />
+        <result column="create_date" property="createDate" />
+        <result column="modify_date" property="modifyDate" />
+        <result column="admin_id" property="adminId" />
+        <result column="client_id" property="clientId" />
+        <result column="equipment_id" property="equipmentId" />
+        <result column="name" property="name" />
+        <result column="amount" property="amount" />
+        <result column="status" property="status" />
+        <result column="reason" property="reason" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, create_date, modify_date, admin_id, client_id, equipment_id, name, amount, status, reason
+    </sql>
+
+</mapper>

+ 27 - 0
src/main/java/com/szwl/model/dto/ReturnCoinVo.java

@@ -0,0 +1,27 @@
+package com.szwl.model.dto;
+
+import lombok.Data;
+
+/**
+ * @author soobin
+ */
+@Data
+public class ReturnCoinVo {
+
+    /**
+     * 申请记录ID
+     */
+    private Long id;
+
+    /**
+     * 退币状态,成功:1,2:失败
+     */
+    private Integer status;
+
+    /**
+     * 失败原因,成功为空
+     */
+    private String reason;
+
+
+}

+ 57 - 0
src/main/java/com/szwl/model/entity/ReturnCoinRecord.java

@@ -0,0 +1,57 @@
+package com.szwl.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 远程退币申请表
+ * </p>
+ *
+ * @author wuhs
+ * @since 2024-09-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ReturnCoinRecord对象", description="远程退币申请表")
+public class ReturnCoinRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    private Date createDate;
+
+    private Date modifyDate;
+
+    @ApiModelProperty(value = "用户ID")
+    private Long adminId;
+
+    @ApiModelProperty(value = "设备编号")
+    private String clientId;
+
+    @ApiModelProperty(value = "设备唯一ID")
+    private Long equipmentId;
+
+    @ApiModelProperty(value = "设备名称")
+    private String name;
+
+    @ApiModelProperty(value = "退币数量")
+    private Integer amount;
+
+    @ApiModelProperty(value = "退币状态,成功:1,未成功:0,2:失败")
+    private Integer status;
+
+    @ApiModelProperty(value = "失败原因,成功为空")
+    private String reason;
+
+
+}

+ 16 - 0
src/main/java/com/szwl/service/ReturnCoinRecordService.java

@@ -0,0 +1,16 @@
+package com.szwl.service;
+
+import com.szwl.model.entity.ReturnCoinRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 远程退币申请表 服务类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2024-09-04
+ */
+public interface ReturnCoinRecordService extends IService<ReturnCoinRecord> {
+
+}

+ 20 - 0
src/main/java/com/szwl/service/impl/ReturnCoinRecordServiceImpl.java

@@ -0,0 +1,20 @@
+package com.szwl.service.impl;
+
+import com.szwl.model.entity.ReturnCoinRecord;
+import com.szwl.mapper.ReturnCoinRecordMapper;
+import com.szwl.service.ReturnCoinRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 远程退币申请表 服务实现类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2024-09-04
+ */
+@Service
+public class ReturnCoinRecordServiceImpl extends ServiceImpl<ReturnCoinRecordMapper, ReturnCoinRecord> implements ReturnCoinRecordService {
+
+}