余额变动,临时提交
This commit is contained in:
parent
8d753fbdbb
commit
eaa86d0ec3
|
@ -207,4 +207,17 @@ public class Constants
|
|||
* accessSecret
|
||||
*/
|
||||
public static final String HEADER_ACCESS_SECRET = "accessSecret";
|
||||
|
||||
/**
|
||||
* 设备不存在
|
||||
*/
|
||||
public static final int DEVICE_NOT_FOUND = 0;
|
||||
/**
|
||||
* 设备未绑定
|
||||
*/
|
||||
public static final int DEVICE_NOT_BIND = 1;
|
||||
/**
|
||||
* 设备已绑定
|
||||
*/
|
||||
public static final int DEVICE_BINDED = 2;
|
||||
}
|
||||
|
|
|
@ -131,4 +131,7 @@ public class SmUser extends BaseEntity
|
|||
|
||||
@ApiModelProperty("是否设备管理员")
|
||||
private Boolean deviceAdmin;
|
||||
|
||||
@ApiModelProperty("服务费收取方式")
|
||||
private String serviceType;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@ import com.ruoyi.common.core.controller.BaseController;
|
|||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import ${packageName}.domain.${ClassName};
|
||||
import ${packageName}.domain.${ClassName}VO;
|
||||
import ${packageName}.domain.${ClassName}Query;
|
||||
import ${packageName}.service.I${ClassName}Service;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
#if($table.crud || $table.sub)
|
||||
|
@ -26,7 +28,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
|
|||
|
||||
/**
|
||||
* ${functionName}Controller
|
||||
*
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
|
@ -43,10 +45,11 @@ public class ${ClassName}Controller extends BaseController
|
|||
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
|
||||
@GetMapping("/list")
|
||||
#if($table.crud || $table.sub)
|
||||
public TableDataInfo list(${ClassName} ${className})
|
||||
public TableDataInfo list(${ClassName}Query query)
|
||||
{
|
||||
startPage();
|
||||
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
|
||||
startOrderBy();
|
||||
List<${ClassName}VO> list = ${className}Service.select${ClassName}List(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
#elseif($table.tree)
|
||||
|
@ -63,10 +66,10 @@ public class ${ClassName}Controller extends BaseController
|
|||
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
|
||||
@Log(title = "${functionName}", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, ${ClassName} ${className})
|
||||
public void export(HttpServletResponse response, ${ClassName}Query query)
|
||||
{
|
||||
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
|
||||
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
|
||||
List<${ClassName}VO> list = ${className}Service.select${ClassName}List(query);
|
||||
ExcelUtil<${ClassName}VO> util = new ExcelUtil<${ClassName}VO>(${ClassName}VO.class);
|
||||
util.exportExcel(response, list, "${functionName}数据");
|
||||
}
|
||||
|
||||
|
|
|
@ -2,37 +2,40 @@ package ${packageName}.mapper;
|
|||
|
||||
import java.util.List;
|
||||
import ${packageName}.domain.${ClassName};
|
||||
import ${packageName}.domain.${ClassName}VO;
|
||||
import ${packageName}.domain.${ClassName}Query;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
#if($table.sub)
|
||||
import ${packageName}.domain.${subClassName};
|
||||
#end
|
||||
|
||||
/**
|
||||
* ${functionName}Mapper接口
|
||||
*
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
public interface ${ClassName}Mapper
|
||||
public interface ${ClassName}Mapper
|
||||
{
|
||||
/**
|
||||
* 查询${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return ${functionName}
|
||||
*/
|
||||
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
public ${ClassName}VO select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 查询${functionName}列表
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return ${functionName}集合
|
||||
*/
|
||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
||||
public List<${ClassName}VO> select${ClassName}List(@Param("query")${ClassName}Query ${className});
|
||||
|
||||
/**
|
||||
* 新增${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -40,15 +43,15 @@ public interface ${ClassName}Mapper
|
|||
|
||||
/**
|
||||
* 修改${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
public int update${ClassName}(${ClassName} ${className});
|
||||
public int update${ClassName}(@Param("data") ${ClassName} ${className});
|
||||
|
||||
/**
|
||||
* 删除${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -56,7 +59,7 @@ public interface ${ClassName}Mapper
|
|||
|
||||
/**
|
||||
* 批量删除${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -65,24 +68,24 @@ public interface ${ClassName}Mapper
|
|||
|
||||
/**
|
||||
* 批量删除${subTable.functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
|
||||
|
||||
|
||||
/**
|
||||
* 批量新增${subTable.functionName}
|
||||
*
|
||||
*
|
||||
* @param ${subclassName}List ${subTable.functionName}列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过${functionName}主键删除${subTable.functionName}信息
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}ID
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
|
@ -2,34 +2,36 @@ package ${packageName}.service;
|
|||
|
||||
import java.util.List;
|
||||
import ${packageName}.domain.${ClassName};
|
||||
import ${packageName}.domain.${ClassName}VO;
|
||||
import ${packageName}.domain.${ClassName}Query;
|
||||
|
||||
/**
|
||||
* ${functionName}Service接口
|
||||
*
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
public interface I${ClassName}Service
|
||||
public interface I${ClassName}Service
|
||||
{
|
||||
/**
|
||||
* 查询${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return ${functionName}
|
||||
*/
|
||||
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
public ${ClassName}VO select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 查询${functionName}列表
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return ${functionName}集合
|
||||
*/
|
||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
|
||||
public List<${ClassName}VO> select${ClassName}List(${ClassName}Query ${className});
|
||||
|
||||
/**
|
||||
* 新增${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -37,7 +39,7 @@ public interface I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 修改${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -45,7 +47,7 @@ public interface I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 批量删除${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -53,7 +55,7 @@ public interface I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 删除${functionName}信息
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
|
|
@ -17,47 +17,49 @@ import ${packageName}.domain.${subClassName};
|
|||
#end
|
||||
import ${packageName}.mapper.${ClassName}Mapper;
|
||||
import ${packageName}.domain.${ClassName};
|
||||
import ${packageName}.domain.${ClassName}VO;
|
||||
import ${packageName}.domain.${ClassName}Query;
|
||||
import ${packageName}.service.I${ClassName}Service;
|
||||
|
||||
/**
|
||||
* ${functionName}Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
@Service
|
||||
public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||
public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
||||
{
|
||||
@Autowired
|
||||
private ${ClassName}Mapper ${className}Mapper;
|
||||
|
||||
/**
|
||||
* 查询${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return ${functionName}
|
||||
*/
|
||||
@Override
|
||||
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
|
||||
public ${ClassName}VO select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
|
||||
{
|
||||
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询${functionName}列表
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return ${functionName}
|
||||
*/
|
||||
@Override
|
||||
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
|
||||
public List<${ClassName}VO> select${ClassName}List(${ClassName}Query ${className})
|
||||
{
|
||||
return ${className}Mapper.select${ClassName}List(${className});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -83,7 +85,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 修改${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -107,7 +109,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 批量删除${functionName}
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -125,7 +127,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 删除${functionName}信息
|
||||
*
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
@ -144,7 +146,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
|
|||
|
||||
/**
|
||||
* 新增${subTable.functionName}信息
|
||||
*
|
||||
*
|
||||
* @param ${className} ${functionName}对象
|
||||
*/
|
||||
public void insert${subClassName}(${ClassName} ${className})
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="${packageName}.mapper.${ClassName}Mapper">
|
||||
|
||||
<resultMap type="${ClassName}" id="${ClassName}Result">
|
||||
|
||||
<resultMap type="${ClassName}VO" id="${ClassName}Result">
|
||||
#foreach ($column in $columns)
|
||||
<result property="${column.javaField}" column="${column.columnName}" />
|
||||
#end
|
||||
|
@ -23,41 +23,49 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#end
|
||||
|
||||
<sql id="select${ClassName}Vo">
|
||||
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
|
||||
select
|
||||
#foreach($column in $columns)
|
||||
$column.columnName#if($foreach.count != $columns.size()),#end
|
||||
#end
|
||||
from ${tableName}
|
||||
</sql>
|
||||
|
||||
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
|
||||
<sql id="searchCondition">
|
||||
#foreach($column in $columns)
|
||||
#set($queryType=$column.queryType)
|
||||
#set($javaField=$column.javaField)
|
||||
#set($javaType=$column.javaType)
|
||||
#set($columnName=$column.columnName)
|
||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||
#if($column.query)
|
||||
#if($column.queryType == "EQ")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName = #{query.$javaField}</if>
|
||||
#elseif($queryType == "NE")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName != #{query.$javaField}</if>
|
||||
#elseif($queryType == "GT")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName > #{query.$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName >= #{query.$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName < #{query.$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName <= #{query.$javaField}</if>
|
||||
#elseif($queryType == "LIKE")
|
||||
<if test="query.$javaField != null #if($javaType == 'String' ) and query.$javaField.trim() != ''#end"> and $columnName like concat('%', #{query.$javaField}, '%')</if>
|
||||
#elseif($queryType == "BETWEEN")
|
||||
<if test="query.params.begin$AttrName != null and query.params.begin$AttrName != '' and query.params.end$AttrName != null and query.params.end$AttrName != ''"> and $columnName between #{query.params.begin$AttrName} and #{query.params.end$AttrName}</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
</sql>
|
||||
|
||||
<select id="select${ClassName}List" parameterType="${ClassName}Query" resultMap="${ClassName}Result">
|
||||
<include refid="select${ClassName}Vo"/>
|
||||
<where>
|
||||
#foreach($column in $columns)
|
||||
#set($queryType=$column.queryType)
|
||||
#set($javaField=$column.javaField)
|
||||
#set($javaType=$column.javaType)
|
||||
#set($columnName=$column.columnName)
|
||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||
#if($column.query)
|
||||
#if($column.queryType == "EQ")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
|
||||
#elseif($queryType == "NE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
|
||||
#elseif($queryType == "GT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if>
|
||||
#elseif($queryType == "LIKE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
|
||||
#elseif($queryType == "BETWEEN")
|
||||
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
<where>
|
||||
<include refid="searchCondition"/>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
|
||||
#if($table.crud || $table.tree)
|
||||
<include refid="select${ClassName}Vo"/>
|
||||
|
@ -71,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
#end
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
|
||||
insert into ${tableName}
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
@ -95,7 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<trim prefix="SET" suffixOverrides=",">
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $pkColumn.columnName)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
|
||||
<if test="data.$column.javaField != null#if($column.javaType == 'String' && $column.required) and data.$column.javaField != ''#end">$column.columnName = #{data.$column.javaField},</if>
|
||||
#end
|
||||
#end
|
||||
</trim>
|
||||
|
@ -107,15 +115,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</delete>
|
||||
|
||||
<delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
|
||||
delete from ${tableName} where ${pkColumn.columnName} in
|
||||
delete from ${tableName} where ${pkColumn.columnName} in
|
||||
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
|
||||
#{${pkColumn.javaField}}
|
||||
</foreach>
|
||||
</delete>
|
||||
#if($table.sub)
|
||||
|
||||
|
||||
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
|
||||
delete from ${subTableName} where ${subTableFkName} in
|
||||
delete from ${subTableName} where ${subTableFkName} in
|
||||
<foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
|
||||
#{${subTableFkclassName}}
|
||||
</foreach>
|
||||
|
@ -132,4 +140,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</foreach>
|
||||
</insert>
|
||||
#end
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
|
|
@ -143,10 +143,11 @@ public interface DeviceService
|
|||
|
||||
/**
|
||||
* 设备是否已经被绑定
|
||||
*
|
||||
* @param mac
|
||||
* @return
|
||||
*/
|
||||
boolean isBindByMac(String mac);
|
||||
int bindCodeByMac(String mac);
|
||||
|
||||
/**
|
||||
* ids查询列表
|
||||
|
@ -188,10 +189,11 @@ public interface DeviceService
|
|||
|
||||
/**
|
||||
* 根据SN码查询设备是否已经绑定
|
||||
*
|
||||
* @param deviceNo
|
||||
* @return
|
||||
*/
|
||||
boolean isBindBySn(String deviceNo);
|
||||
int bindCodeBySn(String deviceNo);
|
||||
|
||||
/**
|
||||
* 更新设备服务费
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruoyi.ss.device.service.impl;
|
||||
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.core.redis.RedisLock;
|
||||
import com.ruoyi.common.core.redis.enums.RedisLockKey;
|
||||
|
@ -669,12 +670,23 @@ public class DeviceServiceImpl implements DeviceService
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean isBindByMac(String mac) {
|
||||
public int bindCodeByMac(String mac) {
|
||||
if (StringUtils.isBlank(mac)) {
|
||||
return false;
|
||||
return Constants.DEVICE_NOT_FOUND;
|
||||
}
|
||||
DeviceVO device = deviceMapper.selectSimpleSmDeviceByMac(mac);
|
||||
return device != null && device.getUserId() != null;
|
||||
return isBindCode(device);
|
||||
}
|
||||
|
||||
private int isBindCode(DeviceVO device) {
|
||||
if (device == null) {
|
||||
return Constants.DEVICE_NOT_FOUND;
|
||||
}
|
||||
if (device.getUserId() == null) {
|
||||
return Constants.DEVICE_NOT_BIND;
|
||||
} else {
|
||||
return Constants.DEVICE_BINDED;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -684,12 +696,12 @@ public class DeviceServiceImpl implements DeviceService
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean isBindBySn(String deviceNo) {
|
||||
public int bindCodeBySn(String deviceNo) {
|
||||
if (StringUtils.isBlank(deviceNo)) {
|
||||
return false;
|
||||
return Constants.DEVICE_NOT_FOUND;
|
||||
}
|
||||
DeviceVO device = deviceMapper.selectSimpleSmDeviceBySn(deviceNo);
|
||||
return device != null && device.getUserId() != null;
|
||||
return isBindCode(device);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package com.ruoyi.ss.recordBalance.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* 余额变动记录对象 ss_record_balance
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
@Data
|
||||
public class RecordBalance extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** ID */
|
||||
private Long id;
|
||||
|
||||
/** 用户ID */
|
||||
@Excel(name = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/** 变动前余额(元) */
|
||||
@Excel(name = "变动前余额", readConverterExp = "元=")
|
||||
private BigDecimal beforeBalance;
|
||||
|
||||
/** 变动后余额(元) */
|
||||
@Excel(name = "变动后余额", readConverterExp = "元=")
|
||||
private BigDecimal afterBalance;
|
||||
|
||||
/** 变动原因 */
|
||||
@Excel(name = "变动原因")
|
||||
private String reason;
|
||||
|
||||
@ApiModelProperty("变化金额")
|
||||
private BigDecimal amount;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.ruoyi.ss.recordBalance.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wjh
|
||||
* 2024/7/22
|
||||
*/
|
||||
@Data
|
||||
public class RecordBalanceQuery extends RecordBalance{
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.ruoyi.ss.recordBalance.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wjh
|
||||
* 2024/7/22
|
||||
*/
|
||||
@Data
|
||||
public class RecordBalanceVO extends RecordBalance{
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package com.ruoyi.ss.recordBalance.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalance;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceVO;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 余额变动记录Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
public interface RecordBalanceMapper
|
||||
{
|
||||
/**
|
||||
* 查询余额变动记录
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 余额变动记录
|
||||
*/
|
||||
public RecordBalanceVO selectRecordBalanceById(Long id);
|
||||
|
||||
/**
|
||||
* 查询余额变动记录列表
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 余额变动记录集合
|
||||
*/
|
||||
public List<RecordBalanceVO> selectRecordBalanceList(@Param("query")RecordBalanceQuery recordBalance);
|
||||
|
||||
/**
|
||||
* 新增余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertRecordBalance(RecordBalance recordBalance);
|
||||
|
||||
/**
|
||||
* 修改余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateRecordBalance(@Param("data") RecordBalance recordBalance);
|
||||
|
||||
/**
|
||||
* 删除余额变动记录
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRecordBalanceById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除余额变动记录
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRecordBalanceByIds(Long[] ids);
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
<?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.ss.recordBalance.mapper.RecordBalanceMapper">
|
||||
|
||||
<resultMap type="RecordBalanceVO" id="RecordBalanceResult" autoMapping="true"/>
|
||||
|
||||
<sql id="selectRecordBalanceVo">
|
||||
select
|
||||
srb.id,
|
||||
srb.user_id,
|
||||
srb.before_balance,
|
||||
srb.after_balance,
|
||||
srb.reason,
|
||||
srb.create_time,
|
||||
srb.amount
|
||||
from ss_record_balance srb
|
||||
</sql>
|
||||
|
||||
<sql id="searchCondition">
|
||||
<if test="query.id != null "> and srb.id = #{query.id}</if>
|
||||
<if test="query.userId != null "> and srb.user_id = #{query.userId}</if>
|
||||
<if test="query.reason != null and query.reason != ''"> and srb.reason like concat('%', #{query.reason}, '%')</if>
|
||||
</sql>
|
||||
|
||||
<select id="selectRecordBalanceList" parameterType="RecordBalanceQuery" resultMap="RecordBalanceResult">
|
||||
<include refid="selectRecordBalanceVo"/>
|
||||
<where>
|
||||
<include refid="searchCondition"/>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectRecordBalanceById" parameterType="Long" resultMap="RecordBalanceResult">
|
||||
<include refid="selectRecordBalanceVo"/>
|
||||
where srb.id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertRecordBalance" parameterType="RecordBalance" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into ss_record_balance
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null">user_id,</if>
|
||||
<if test="beforeBalance != null">before_balance,</if>
|
||||
<if test="afterBalance != null">after_balance,</if>
|
||||
<if test="reason != null and reason != ''">reason,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="amount != null">amount,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null">#{userId},</if>
|
||||
<if test="beforeBalance != null">#{beforeBalance},</if>
|
||||
<if test="afterBalance != null">#{afterBalance},</if>
|
||||
<if test="reason != null and reason != ''">#{reason},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="amount != null">#{amount},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateRecordBalance" parameterType="RecordBalance">
|
||||
update ss_record_balance
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="data.userId != null">user_id = #{data.userId},</if>
|
||||
<if test="data.beforeBalance != null">before_balance = #{data.beforeBalance},</if>
|
||||
<if test="data.afterBalance != null">after_balance = #{data.afterBalance},</if>
|
||||
<if test="data.reason != null and data.reason != ''">reason = #{data.reason},</if>
|
||||
<if test="data.createTime != null">create_time = #{data.createTime},</if>
|
||||
<if test="data.amount != null">amount = #{data.amount},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteRecordBalanceById" parameterType="Long">
|
||||
delete from ss_record_balance where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteRecordBalanceByIds" parameterType="String">
|
||||
delete from ss_record_balance where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
|
@ -0,0 +1,75 @@
|
|||
package com.ruoyi.ss.recordBalance.service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalance;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceVO;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceQuery;
|
||||
|
||||
/**
|
||||
* 余额变动记录Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
public interface RecordBalanceService
|
||||
{
|
||||
/**
|
||||
* 查询余额变动记录
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 余额变动记录
|
||||
*/
|
||||
public RecordBalanceVO selectRecordBalanceById(Long id);
|
||||
|
||||
/**
|
||||
* 查询余额变动记录列表
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 余额变动记录集合
|
||||
*/
|
||||
public List<RecordBalanceVO> selectRecordBalanceList(RecordBalanceQuery recordBalance);
|
||||
|
||||
/**
|
||||
* 新增余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertRecordBalance(RecordBalance recordBalance);
|
||||
|
||||
/**
|
||||
* 修改余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateRecordBalance(RecordBalance recordBalance);
|
||||
|
||||
/**
|
||||
* 批量删除余额变动记录
|
||||
*
|
||||
* @param ids 需要删除的余额变动记录主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRecordBalanceByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 删除余额变动记录信息
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteRecordBalanceById(Long id);
|
||||
|
||||
/**
|
||||
* 添加余额变动记录
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param beforeBalance 变动前余额
|
||||
* @param amount 变动的金额
|
||||
* @param reason
|
||||
*/
|
||||
int record(Long userId, BigDecimal beforeBalance, BigDecimal amount, String reason);
|
||||
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
package com.ruoyi.ss.recordBalance.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.ss.recordBalance.mapper.RecordBalanceMapper;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalance;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceVO;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceQuery;
|
||||
import com.ruoyi.ss.recordBalance.service.RecordBalanceService;
|
||||
|
||||
/**
|
||||
* 余额变动记录Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
@Service
|
||||
public class RecordBalanceServiceImpl implements RecordBalanceService
|
||||
{
|
||||
@Autowired
|
||||
private RecordBalanceMapper recordBalanceMapper;
|
||||
|
||||
/**
|
||||
* 查询余额变动记录
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 余额变动记录
|
||||
*/
|
||||
@Override
|
||||
public RecordBalanceVO selectRecordBalanceById(Long id)
|
||||
{
|
||||
return recordBalanceMapper.selectRecordBalanceById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询余额变动记录列表
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 余额变动记录
|
||||
*/
|
||||
@Override
|
||||
public List<RecordBalanceVO> selectRecordBalanceList(RecordBalanceQuery recordBalance)
|
||||
{
|
||||
return recordBalanceMapper.selectRecordBalanceList(recordBalance);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertRecordBalance(RecordBalance recordBalance)
|
||||
{
|
||||
recordBalance.setCreateTime(DateUtils.getNowDate());
|
||||
return recordBalanceMapper.insertRecordBalance(recordBalance);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改余额变动记录
|
||||
*
|
||||
* @param recordBalance 余额变动记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateRecordBalance(RecordBalance recordBalance)
|
||||
{
|
||||
return recordBalanceMapper.updateRecordBalance(recordBalance);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除余额变动记录
|
||||
*
|
||||
* @param ids 需要删除的余额变动记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteRecordBalanceByIds(Long[] ids)
|
||||
{
|
||||
return recordBalanceMapper.deleteRecordBalanceByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除余额变动记录信息
|
||||
*
|
||||
* @param id 余额变动记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteRecordBalanceById(Long id)
|
||||
{
|
||||
return recordBalanceMapper.deleteRecordBalanceById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int record(Long userId, BigDecimal beforeBalance, BigDecimal amount, String reason) {
|
||||
if (userId == null || beforeBalance == null || amount == null || StringUtils.isBlank(reason)) {
|
||||
return 0;
|
||||
}
|
||||
RecordBalance record = new RecordBalance();
|
||||
record.setUserId(userId);
|
||||
record.setBeforeBalance(beforeBalance);
|
||||
record.setAmount(amount);
|
||||
record.setAfterBalance(beforeBalance.add(amount));
|
||||
record.setReason(reason);
|
||||
|
||||
return this.insertRecordBalance(record);
|
||||
}
|
||||
}
|
|
@ -352,7 +352,7 @@ public class TransactionBillServiceImpl implements TransactionBillService {
|
|||
ServiceUtil.assertion(arrivalAmount.compareTo(data.getArrivalAmount()) != 0, "到账金额计算不一致,请重新申请");
|
||||
|
||||
// 减少余额,并判断提现金额是否超额(减少的是交易金额)
|
||||
userService.subtractBalance(userId, data.getMoney());
|
||||
userService.subtractBalance(userId, data.getMoney(), "提现");
|
||||
|
||||
// 减少余额后的用户信息
|
||||
SmUserVo afterUser = smUserMapper.selectSimpleById(userId);
|
||||
|
@ -410,7 +410,7 @@ public class TransactionBillServiceImpl implements TransactionBillService {
|
|||
// 返还客户余额
|
||||
TransactionBill bill = transactionBillMapper.selectSmTransactionBillByBillId(billId);
|
||||
ServiceUtil.assertion(bill == null || bill.getUserId() == null, "数据不存在");
|
||||
userService.addBalance(bill.getUserId(), bill.getMoney());
|
||||
userService.addBalance(bill.getUserId(), bill.getMoney(), "提现驳回");
|
||||
|
||||
return true;
|
||||
} finally {
|
||||
|
@ -649,7 +649,7 @@ public class TransactionBillServiceImpl implements TransactionBillService {
|
|||
ServiceUtil.assertion(updateCount != 1, "修改订单状态失败,请刷新后重试");
|
||||
|
||||
// 商户余额增加
|
||||
userService.addBalance(bill.getMchId(), bill.getArrivalAmount());
|
||||
userService.addBalance(bill.getMchId(), bill.getArrivalAmount(), String.format("订单充值:%s", billNo));
|
||||
|
||||
// 记录下充值后的余额
|
||||
SmUserVo user = userService.selectSmUserByUserId(bill.getMchId());
|
||||
|
@ -912,7 +912,7 @@ public class TransactionBillServiceImpl implements TransactionBillService {
|
|||
RefundVO refundVO = refundService.selectRefundByRefundNo(refund.getRefundNo());
|
||||
|
||||
// 商户余额按照比例扣减
|
||||
userService.subtractBalance(bill.getMchId(), refund.getMchAmount());
|
||||
userService.subtractBalance(bill.getMchId(), refund.getMchAmount(), "退款");
|
||||
|
||||
// 修改原订单的退款金额和退款手续费
|
||||
int updateRefundAmount = this.addRefundAmount(bill.getBillId(), refund.getAmount(), refund.getMchAmount(), refund.getServiceAmount());
|
||||
|
|
|
@ -96,8 +96,9 @@ public interface SmUserMapper
|
|||
* 扣减余额
|
||||
* @param userId 用户id
|
||||
* @param amount 金额
|
||||
* @param check 校验余额是否充足
|
||||
*/
|
||||
int subtractBalance(@Param("userId") Long userId, @Param("amount") BigDecimal amount);
|
||||
int subtractBalance(@Param("userId") Long userId, @Param("amount") BigDecimal amount, @Param("check") boolean check);
|
||||
|
||||
/**
|
||||
* 更新用户服务费
|
||||
|
|
|
@ -38,6 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
su.is_mch,
|
||||
su.service_rate,
|
||||
su.device_admin,
|
||||
su.service_type,
|
||||
(select sum(stb.money) from sm_transaction_bill stb where stb.user_id = su.user_id and stb.type = '1' and stb.status = '2') as recharge_amount,
|
||||
(select sum(stb.arrival_amount) from sm_transaction_bill stb where stb.user_id = su.user_id and stb.type = '2' and stb.status = '14') as with_drawl_amount,
|
||||
(select sum(stb.arrival_amount) from sm_transaction_bill stb where stb.mch_id = su.user_id and stb.type = '1' and stb.status = '2') as total_income
|
||||
|
@ -142,6 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="isMch != null">is_mch,</if>
|
||||
<if test="serviceRate != null">service_rate,</if>
|
||||
<if test="deviceAdmin != null">device_admin,</if>
|
||||
<if test="serviceType != null">service_type,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="userName != null and userName != ''">#{userName},</if>
|
||||
|
@ -168,6 +170,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="isMch != null">#{isMch},</if>
|
||||
<if test="serviceRate != null">#{serviceRate},</if>
|
||||
<if test="deviceAdmin != null">#{deviceAdmin},</if>
|
||||
<if test="serviceType != null">#{serviceType},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -204,6 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="isMch != null">is_mch = #{isMch},</if>
|
||||
<if test="serviceRate != null">service_rate = #{serviceRate},</if>
|
||||
<if test="deviceAdmin != null">device_admin = #{deviceAdmin},</if>
|
||||
<if test="serviceType != null">service_type = #{serviceType},</if>
|
||||
</trim>
|
||||
where user_id = #{userId}
|
||||
</update>
|
||||
|
@ -220,7 +224,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<update id="subtractBalance">
|
||||
update sm_user
|
||||
set balance = balance - #{amount}
|
||||
where user_id = #{userId} and del_flag = '0' and balance >= #{amount}
|
||||
<where>
|
||||
user_id = #{userId} and del_flag = '0'
|
||||
<if test="check">
|
||||
and balance >= #{amount}
|
||||
</if>
|
||||
</where>
|
||||
</update>
|
||||
|
||||
<update id="updateServiceRate">
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.ruoyi.ss.user.service;
|
|||
|
||||
import com.ruoyi.common.core.domain.entity.SmUser;
|
||||
import com.ruoyi.common.enums.UserType;
|
||||
import com.ruoyi.ss.access.domain.AccessVO;
|
||||
import com.ruoyi.ss.user.domain.SmUserQuery;
|
||||
import com.ruoyi.ss.user.domain.SmUserVo;
|
||||
import com.ruoyi.ss.user.domain.bo.UserUpdateServiceRateBO;
|
||||
|
@ -102,17 +101,33 @@ public interface ISmUserService
|
|||
|
||||
/**
|
||||
* 增加余额
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @param amount 金额
|
||||
* @param reason
|
||||
*/
|
||||
void addBalance(Long userId, BigDecimal amount);
|
||||
void addBalance(Long userId, BigDecimal amount, String reason);
|
||||
|
||||
/**
|
||||
* 减少余额
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @param amount 金额
|
||||
* @param reason
|
||||
*/
|
||||
void subtractBalance(Long userId, BigDecimal amount);
|
||||
default void subtractBalance(Long userId, BigDecimal amount, String reason) {
|
||||
subtractBalance(userId, amount, true, reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* 减少余额
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @param amount 金额
|
||||
* @param check 是否校验余额是否充足
|
||||
* @param reason 原因
|
||||
*/
|
||||
void subtractBalance(Long userId, BigDecimal amount, boolean check, String reason);
|
||||
|
||||
/**
|
||||
* 修改微信OpenId
|
||||
|
|
|
@ -9,6 +9,7 @@ import com.ruoyi.common.utils.collection.CollectionUtils;
|
|||
import com.ruoyi.ss.device.domain.DeviceQuery;
|
||||
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||
import com.ruoyi.ss.device.service.DeviceService;
|
||||
import com.ruoyi.ss.recordBalance.service.RecordBalanceService;
|
||||
import com.ruoyi.ss.store.domain.StoreQuery;
|
||||
import com.ruoyi.ss.store.domain.StoreVo;
|
||||
import com.ruoyi.ss.store.service.IStoreService;
|
||||
|
@ -50,6 +51,9 @@ public class SmUserServiceImpl implements ISmUserService
|
|||
@Autowired
|
||||
private IStoreService storeService;
|
||||
|
||||
@Autowired
|
||||
private RecordBalanceService recordBalanceService;
|
||||
|
||||
/**
|
||||
* 查询普通用户信息
|
||||
*
|
||||
|
@ -122,18 +126,36 @@ public class SmUserServiceImpl implements ISmUserService
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addBalance(Long userId, BigDecimal amount) {
|
||||
public void addBalance(Long userId, BigDecimal amount, String reason) {
|
||||
ServiceUtil.assertion(BigDecimal.ZERO.compareTo(amount) > 0, "增加的金额需要大于0");
|
||||
|
||||
// 查询用户
|
||||
SmUserVo user = selectSmUserByUserId(userId);
|
||||
|
||||
// 修改余额
|
||||
int updateCount = smUserMapper.addBalance(userId, amount);
|
||||
ServiceUtil.assertion(updateCount != 1, "增加用户余额失败");
|
||||
|
||||
// 余额变动记录
|
||||
int record = recordBalanceService.record(userId, user.getBalance(), amount, reason);
|
||||
ServiceUtil.assertion(record != 1, "用户余额变动记录失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void subtractBalance(Long userId, BigDecimal amount) {
|
||||
public void subtractBalance(Long userId, BigDecimal amount, boolean check, String reason) {
|
||||
ServiceUtil.assertion(BigDecimal.ZERO.compareTo(amount) > 0, "减少的金额需要大于0");
|
||||
int updateCount = smUserMapper.subtractBalance(userId, amount);
|
||||
|
||||
// 查询用户
|
||||
SmUserVo user = selectSmUserByUserId(userId);
|
||||
|
||||
// 更新用户余额
|
||||
int updateCount = smUserMapper.subtractBalance(userId, amount, check);
|
||||
ServiceUtil.assertion(updateCount != 1, "减少用户余额失败:用户不存在或余额不足");
|
||||
|
||||
// 余额变动记录
|
||||
int record = recordBalanceService.record(userId, user.getBalance(), amount, reason);
|
||||
ServiceUtil.assertion(record != 1, "用户余额变动记录失败");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -157,9 +157,9 @@ public class AppDeviceController extends BaseController {
|
|||
public AjaxResult isBind(@RequestParam(required = false) @ApiParam("设备mac") String mac,
|
||||
@RequestParam(required = false) @ApiParam("设备sn") String deviceNo) {
|
||||
if (StringUtils.hasText(mac)) {
|
||||
return success(smDeviceService.isBindByMac(mac));
|
||||
return success(smDeviceService.bindCodeByMac(mac));
|
||||
} else if (StringUtils.hasText(deviceNo)) {
|
||||
return success(smDeviceService.isBindBySn(deviceNo));
|
||||
return success(smDeviceService.bindCodeBySn(deviceNo));
|
||||
} else {
|
||||
return error("至少传入一个MAC号或SN码");
|
||||
}
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
package com.ruoyi.web.controller.ss;
|
||||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalance;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceVO;
|
||||
import com.ruoyi.ss.recordBalance.domain.RecordBalanceQuery;
|
||||
import com.ruoyi.ss.recordBalance.service.RecordBalanceService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 余额变动记录Controller
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2024-07-22
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/ss/recordBalance")
|
||||
public class RecordBalanceController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private RecordBalanceService recordBalanceService;
|
||||
|
||||
/**
|
||||
* 查询余额变动记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(RecordBalanceQuery query)
|
||||
{
|
||||
startPage();
|
||||
startOrderBy();
|
||||
List<RecordBalanceVO> list = recordBalanceService.selectRecordBalanceList(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出余额变动记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:export')")
|
||||
@Log(title = "余额变动记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, RecordBalanceQuery query)
|
||||
{
|
||||
List<RecordBalanceVO> list = recordBalanceService.selectRecordBalanceList(query);
|
||||
ExcelUtil<RecordBalanceVO> util = new ExcelUtil<RecordBalanceVO>(RecordBalanceVO.class);
|
||||
util.exportExcel(response, list, "余额变动记录数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取余额变动记录详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return success(recordBalanceService.selectRecordBalanceById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增余额变动记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:add')")
|
||||
@Log(title = "余额变动记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody RecordBalance recordBalance)
|
||||
{
|
||||
return toAjax(recordBalanceService.insertRecordBalance(recordBalance));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改余额变动记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:edit')")
|
||||
@Log(title = "余额变动记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody RecordBalance recordBalance)
|
||||
{
|
||||
return toAjax(recordBalanceService.updateRecordBalance(recordBalance));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除余额变动记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('ss:recordBalance:remove')")
|
||||
@Log(title = "余额变动记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(recordBalanceService.deleteRecordBalanceByIds(ids));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user