no message

This commit is contained in:
DESKTOP-369JRHT\12997 2024-07-25 08:34:57 +08:00
parent 1bd695ba5f
commit aac4621621
22 changed files with 341 additions and 98 deletions

View File

@ -9,6 +9,13 @@ export function getSysNotifyList(query) {
params: query params: query
}) })
}// 分页查询所有的订单信息
export function getSendNotifyApi(query) {
return request({
url: 'sysNotify/sendNotify',
method: 'get',
params: query
})
} }
// //
export function deleteSysNotifyApi(PayId) { export function deleteSysNotifyApi(PayId) {

View File

@ -8,6 +8,12 @@ export function getYearListApi(query) {
method: 'get', method: 'get',
params: query params: query
}) })
}export function getALlInfoBydeptIdApi(query) {
return request({
url: 'deptpay/deptPriceInfo/getALlInfoBydeptId',
method: 'get',
params: query
})
} }
// //
export function addYearApi(data) { export function addYearApi(data) {

View File

@ -2,7 +2,7 @@
import { import {
addAfterApi, addAfterApi,
addYearApi, addYearApi,
getAfterListApi, getAfterListApi, getALlInfoBydeptIdApi,
getYearListApi, getYearListApi,
updateAfterApi, updateAfterApi,
updateYearApi updateYearApi
@ -25,12 +25,13 @@ export default {
}, ], }, ],
form: { form: {
deductionRate: '', // deductionRate: '', //
likelyTransactionVolume: '100', // likelyTransactionVolume: '0', //
serviceFeeStatistics: 0, // 0 serviceFeeStatistics: 0, // 0
serviceFeeLimit: '', // serviceFeeLimit: '', //
paymentAmount: '', // paymentAmount: '', //
deptId:this.deptId, deptId:this.deptId,
}, },
sum:''
} }
}, },
props: { props: {
@ -45,6 +46,12 @@ export default {
this.tableData = res.data.records this.tableData = res.data.records
}) })
}, },
getData() {
getALlInfoBydeptIdApi({deptId : this.deptId}).then(res => {
this.form.serviceFeeStatistics = res.data.payMoney;
this.form.likelyTransactionVolume = res.data.payMoney;
})
},
onSubmit() { onSubmit() {
console.log('表单提交', this.form); console.log('表单提交', this.form);
// //
@ -135,6 +142,11 @@ export default {
prop="status" prop="status"
align="center" align="center"
label="状态"> label="状态">
<template slot-scope="scope">
<span v-if="scope.row.status == 0">未开始</span>
<span v-if="scope.row.status == 1">进行中</span>
<span v-if="scope.row.status == 2">已完成</span>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="createTime" prop="createTime"
@ -198,7 +210,6 @@ export default {
<el-form :model="form" label-width="120px"> <el-form :model="form" label-width="120px">
<el-form-item label="扣点费率"> <el-form-item label="扣点费率">
<!-- 假设扣点费率是固定的这里仅显示 --> <!-- 假设扣点费率是固定的这里仅显示 -->
<span>{{ form.deductionRate }}</span>
<el-input v-model="form.deductionRate" placeholder="" readonly></el-input> <el-input v-model="form.deductionRate" placeholder="" readonly></el-input>
</el-form-item> </el-form-item>

View File

@ -1,7 +1,7 @@
<script> <script>
import { import {
addBeforeApi, addBeforeApi,
addBeforerApi, addBeforerApi, getALlInfoBydeptIdApi,
getBeforeListApi, getBeforeListApi,
getBeforerListApi, updateBeforeApi, getBeforerListApi, updateBeforeApi,
updateBeforerApi updateBeforerApi
@ -22,21 +22,22 @@ export default {
upadate: '2016-05-02', upadate: '2016-05-02',
}, ], }, ],
form: { form: {
prepaidAmount:'', prepaidAmount:null,
deductionRate:'', deductionRate:null,
estimatedTransactionVolume:'', estimatedTransactionVolume:null,
remainingTransactionVolume:'', remainingTransactionVolume:null,
}, },
form2: { // form2: {
form: { // form: {
deductionRate: 1, // // deductionRate: 1, //
transactionVolume: '', // // transactionVolume: '', //
systemServiceFee: 0, // 0 // systemServiceFee: 0, // 0
serviceFeeLimit: 5000, // // serviceFeeLimit: 5000, //
receiptAmount: '', // // receiptAmount: '', //
}, // },
} // },
payMoney:'0'
} }
}, },
props: { props: {
@ -44,6 +45,7 @@ export default {
}, },
created() { created() {
this.getList() this.getList()
this.getData()
}, },
methods: { methods: {
getList() { getList() {
@ -51,6 +53,11 @@ export default {
this.tableData = res.data.records this.tableData = res.data.records
}) })
}, },
getData() {
getALlInfoBydeptIdApi({deptId : this.deptId}).then(res => {
this.payMoney = res.data.payMoney
})
},
onCancel() { onCancel() {
// //
console.log('取消操作'); console.log('取消操作');
@ -60,12 +67,16 @@ export default {
inputval() { inputval() {
// if ( // if (
// ) // )
if (!this.form.prepaidAmount || !this.form.deductionRate) {
return
}
let prepaidAmount = this.form.prepaidAmount; let prepaidAmount = this.form.prepaidAmount;
let deductionRate = this.form.deductionRate / 1000; let deductionRate = this.form.deductionRate / 10000;
if (!isNaN(prepaidAmount) && !isNaN(deductionRate)) { if (!isNaN(prepaidAmount) && !isNaN(deductionRate)) {
let estimatedTransactionVolume = prepaidAmount / (1 - deductionRate); let estimatedTransactionVolume = prepaidAmount / deductionRate;
let remainingTransactionVolume = estimatedTransactionVolume - prepaidAmount; // let remainingTransactionVolume = estimatedTransactionVolume - prepaidAmount;
let remainingTransactionVolume = estimatedTransactionVolume - this.payMoney;
this.form.estimatedTransactionVolume = estimatedTransactionVolume; this.form.estimatedTransactionVolume = estimatedTransactionVolume;
this.form.remainingTransactionVolume = remainingTransactionVolume; this.form.remainingTransactionVolume = remainingTransactionVolume;
@ -87,11 +98,14 @@ export default {
}) })
} }
}, },
handleUpdate1(){ handleUpdate1(data){
this.dialogVisible=true this.dialogVisible=true
// this.form = data
}, },
handleEdit(data){ handleEdit(data){
this.form = data this.form = data
console.log("123",data)
this.dialogVisible=true this.dialogVisible=true
}, },
@ -131,6 +145,11 @@ export default {
prop="status" prop="status"
align="center" align="center"
label="状态"> label="状态">
<template slot-scope="scope">
<span v-if="scope.row.status == 0">未开始</span>
<span v-if="scope.row.status == 1">进行中</span>
<span v-if="scope.row.status == 2">已完成</span>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="createTime" prop="createTime"
@ -153,7 +172,7 @@ export default {
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@click="handleEdit(scope.$index, scope.row)">修改</el-button> @click="handleEdit( scope.row)">修改</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -114,7 +114,9 @@ export default {
align="center" align="center"
label="状态"> label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.status?'已完成':'未完成'}}</span> <span v-if="scope.row.status == 0">未开始</span>
<span v-if="scope.row.status == 1">进行中</span>
<span v-if="scope.row.status == 2">已完成</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -137,6 +139,7 @@ export default {
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.status == 0"
size="mini" size="mini"
@click="handleEdit(scope.row)">修改</el-button> @click="handleEdit(scope.row)">修改</el-button>

View File

@ -4,48 +4,36 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="" prop="deptName"> <el-form-item label="" prop="deptName">
<el-input <el-input
v-model="queryParams.deptName" v-model="queryParams.notificationName"
placeholder="请输入选择通知名称" placeholder="请输入选择通知名称"
clearable clearable
style="width: 240px;" style="width: 240px;"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="" prop="legalRepresentativeContact"> <el-form-item label="" prop="notificationType">
<el-input <el-select v-model="queryParams.notificationType" placeholder="请选择通知类型" clearable style="width: 240px;">
v-model="queryParams.legalRepresentativeContact" <el-option label="到期提醒" value="到期提醒"></el-option>
placeholder="请选择通知类型" <el-option label="库存预警" value="库存预警"></el-option>
clearable <!-- 添加其他选项 -->
style="width: 240px;" </el-select>
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="" prop="appStatus">
<el-input <!-- <el-form-item label="" prop="appStatus">-->
v-model="queryParams.appStatus" <!-- <el-input-->
placeholder="请选择小程序状态" <!-- v-model="queryParams.appStatus"-->
clearable <!-- placeholder="请选择接受角色"-->
style="width: 240px;" <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- style="width: 240px;"-->
/> <!-- @keyup.enter.native="handleQuery"-->
</el-form-item> <!-- />-->
<el-form-item label="" prop="appStatus"> <!-- </el-form-item>-->
<el-input <el-form-item label="" prop="templateStatus">
v-model="queryParams.appStatus" <el-select v-model="queryParams.templateStatus" placeholder="请选择通知状态" clearable style="width: 240px;">
placeholder="请选择接受角色" <el-option label="启用" value="1"></el-option>
clearable <el-option label="禁用" value="0"></el-option>
style="width: 240px;" <!-- 添加其他选项 -->
@keyup.enter.native="handleQuery" </el-select>
/>
</el-form-item>
<el-form-item label="" prop="appStatus">
<el-input
v-model="queryParams.appStatus"
placeholder="请选择通知状态"
clearable
style="width: 240px;"
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item style="float: right"> <el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@ -85,6 +73,12 @@
icon="el-icon-edit" icon="el-icon-edit"
@click="del(scope.row)" @click="del(scope.row)"
>删除</el-button> >删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="send(scope.row.id)"
>发送通知</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -122,7 +116,7 @@
<!-- 接收角色 --> <!-- 接收角色 -->
<el-form-item label="接收角色" :required="true"> <el-form-item label="接收角色" :required="true">
<el-select v-model="form.recipientRoles" multiple placeholder="请选择角色"> <el-select v-model="form.recipientRoles" multiple placeholder="请选择角色">
<el-option v-for="item in dutyList" :label="item.dutyName" :value="item.dutyId"></el-option> <el-option v-for="item in dutyList1" :label="item.dutyName" :value="item.dutyId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="接收用户" :required="true"> <el-form-item label="接收用户" :required="true">
@ -181,7 +175,7 @@ import {deleteAppApi, getAppListApi, saveAppApi, updateAppApi} from "@/api/sys/a
import {listUser} from "@/api/system/Site/site"; import {listUser} from "@/api/system/Site/site";
import {dutyList} from "@/api/duty/duty"; import {dutyList} from "@/api/duty/duty";
import {getNotificationlogList, saveSysNotificationApi, updateSysNotificationApi} from "@/api/sys/sysNotificationlog"; import {getNotificationlogList, saveSysNotificationApi, updateSysNotificationApi} from "@/api/sys/sysNotificationlog";
import {getSysNotifyList} from "@/api/sys/sysNotify"; import {getSendNotifyApi, getSysNotifyList} from "@/api/sys/sysNotify";
export default { export default {
name: "notify-record", name: "notify-record",
@ -203,7 +197,8 @@ export default {
] ]
}, },
dutyList:[], // dutyList:[],
dutyList1:[],
// //
userList: null, userList: null,
@ -253,6 +248,15 @@ export default {
} }
}); });
}, },
//
send(data) {
getSendNotifyApi({id :data}).then(res=>{
if(res.code === 200) {
this.getList()
}
})
},
handleQuery(){ handleQuery(){
this.getList() this.getList()
@ -281,6 +285,7 @@ export default {
if(res.code === 200) { if(res.code === 200) {
this.getList() this.getList()
this.open = false this.open = false
} }
}) })
@ -302,6 +307,7 @@ export default {
this.title = "编辑设备" this.title = "编辑设备"
this.form = e this.form = e
this.form.recipientUser = JSON.parse(this.form.recipientUser) this.form.recipientUser = JSON.parse(this.form.recipientUser)
this.getDutyList()
console.log('提交设备信息数据:', this.deviceInfo); console.log('提交设备信息数据:', this.deviceInfo);
@ -376,7 +382,7 @@ export default {
pageSize: 10000 pageSize: 10000
} }
dutyList(queryParams1).then(res => { dutyList(queryParams1).then(res => {
this.dutyList = res.data.records; this.dutyList1 = res.data.records;
// this.total1 = res.data.total; // this.total1 = res.data.total;
// this.loading = false; // this.loading = false;
}) })

View File

@ -60,6 +60,10 @@ public class DeptPriceInfoController extends BaseController {
public ResponseObject queryById(@PathVariable("id") Integer id) { public ResponseObject queryById(@PathVariable("id") Integer id) {
return getSuccessResult(this.deptPriceInfoService.queryById(id)); return getSuccessResult(this.deptPriceInfoService.queryById(id));
} }
@GetMapping("/getALlInfoBydeptId")
public ResponseObject getALlInfoBydeptId(Long deptId) {
return getSuccessResult(this.deptPriceInfoService.getALlInfoBydeptId(deptId));
}
/** /**
* 新增数据 * 新增数据

View File

@ -6,6 +6,7 @@ import com.fuint.business.deptPay.entity.DeptPriceInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 存储年付费的表(DeptPriceInfo)表数据库访问层 * 存储年付费的表(DeptPriceInfo)表数据库访问层
@ -22,7 +23,7 @@ public interface DeptPriceInfoMapper {
* @return 实例对象 * @return 实例对象
*/ */
DeptPriceInfo queryById(Integer id); DeptPriceInfo queryById(Integer id);
DeptPriceInfo queryByDeptId(Integer id); DeptPriceInfo queryByDeptId(Long deptId);
/** /**
* 查询指定行数据 * 查询指定行数据
@ -82,5 +83,6 @@ public interface DeptPriceInfoMapper {
*/ */
int deleteById(Integer id); int deleteById(Integer id);
Map<String, Object> getALlInfoBydeptId(@Param("deptId") List<Long> deptId);
} }

View File

@ -22,6 +22,7 @@ public interface DeptServiceFeeInfoMapper {
* @return 实例对象 * @return 实例对象
*/ */
DeptServiceFeeInfo queryById(Integer id); DeptServiceFeeInfo queryById(Integer id);
DeptServiceFeeInfo queryByDeptId(Long id);
/** /**
* 查询指定行数据 * 查询指定行数据

View File

@ -23,6 +23,8 @@ public interface DeptTransactionInfoMapper {
*/ */
DeptTransactionInfo queryById(Integer id); DeptTransactionInfo queryById(Integer id);
DeptTransactionInfo queryByDeptId(Long id);
/** /**
* 查询指定行数据 * 查询指定行数据
* *

View File

@ -73,6 +73,16 @@ create_time,create_by
status,create_time,create_by status,create_time,create_by
from dept_price_info from dept_price_info
where deptId = #{deptId} where deptId = #{deptId}
and status = 1
</select>
<select id="getALlInfoBydeptId" resultType="java.util.Map">
select sum(pay_money) payMoney
from all_order_info
where
store_id in
<foreach collection="deptId" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select> </select>
<!--新增所有列--> <!--新增所有列-->

View File

@ -79,6 +79,13 @@ service_fee_statistics,service_fee_limit,status
</if> </if>
</where> </where>
</select> </select>
<select id="queryByDeptId" resultType="com.fuint.business.deptPay.entity.DeptServiceFeeInfo">
select
id,deduction_rate,payment_amount,likely_transaction_volume,service_fee_statistics,service_fee_limit,status
from dept_service_fee_info
where deptId = #{deptId}
and status = 1
</select>
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <insert id="insert" keyProperty="id" useGeneratedKeys="true">

View File

@ -75,6 +75,14 @@ remaining_transaction_volume,status,create_time,create_by
</if> </if>
</where> </where>
</select> </select>
<select id="queryByDeptId" resultType="com.fuint.business.deptPay.entity.DeptTransactionInfo">
select
id,prepaid_amount,deduction_rate,estimated_transaction_volume,
remaining_transaction_volume,status,create_time,create_by
from dept_transaction_info
where deptId = #{deptId}
and status = 1
</select>
<!--新增所有列--> <!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"> <insert id="insert" keyProperty="id" useGeneratedKeys="true">

View File

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.deptPay.entity.DeptPriceInfo; import com.fuint.business.deptPay.entity.DeptPriceInfo;
import io.lettuce.core.dynamic.annotation.Param; import io.lettuce.core.dynamic.annotation.Param;
import java.util.Map;
/** /**
* 存储年付费的表(DeptPriceInfo)表服务接口 * 存储年付费的表(DeptPriceInfo)表服务接口
@ -55,4 +57,11 @@ public interface DeptPriceInfoService {
*/ */
boolean deleteById(Integer id); boolean deleteById(Integer id);
/**
* 根据条件查询数据
*
* @param deptPriceInfo 筛选条件
* @return 对象列表
*/
Map<String,Object> getALlInfoBydeptId(Long deptId) ;
} }

View File

@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.deptPay.entity.DeptPriceInfo; import com.fuint.business.deptPay.entity.DeptPriceInfo;
import com.fuint.business.deptPay.mapper.DeptPriceInfoMapper; import com.fuint.business.deptPay.mapper.DeptPriceInfoMapper;
import com.fuint.business.deptPay.service.DeptPriceInfoService; import com.fuint.business.deptPay.service.DeptPriceInfoService;
import com.fuint.business.store.mapper.MtStoreMapper;
import com.fuint.system.dept.mapper.SysDeptMapper;
import lombok.Data;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.fuint.common.util.TokenUtil; import com.fuint.common.util.TokenUtil;
import io.lettuce.core.dynamic.annotation.Param; import io.lettuce.core.dynamic.annotation.Param;
@ -13,6 +16,8 @@ import com.fuint.common.dto.AccountInfo;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/** /**
* 存储年付费的表(DeptPriceInfo)表服务实现类 * 存储年付费的表(DeptPriceInfo)表服务实现类
@ -47,6 +52,8 @@ public class DeptPriceInfoServiceImpl implements DeptPriceInfoService {
public IPage<DeptPriceInfo> queryByPage(@Param("page") Page page, DeptPriceInfo deptPriceInfo) { public IPage<DeptPriceInfo> queryByPage(@Param("page") Page page, DeptPriceInfo deptPriceInfo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
// deptPriceInfo.setStoreId(nowAccountInfo.getStoreId()); // deptPriceInfo.setStoreId(nowAccountInfo.getStoreId());
// 判断以进行中的数据进行判断并修改状态
// Data data = new Data();
return this.deptPriceInfoMapper.queryAllByLimit(page, deptPriceInfo); return this.deptPriceInfoMapper.queryAllByLimit(page, deptPriceInfo);
} }
@ -86,4 +93,14 @@ public class DeptPriceInfoServiceImpl implements DeptPriceInfoService {
public boolean deleteById(Integer id) { public boolean deleteById(Integer id) {
return this.deptPriceInfoMapper.deleteById(id) > 0; return this.deptPriceInfoMapper.deleteById(id) > 0;
} }
@Resource
private SysDeptMapper sysDeptMapper;
@Resource
private MtStoreMapper mtStoreMapper;
public Map<String,Object> getALlInfoBydeptId(Long deptId) {
List<Long> strings = sysDeptMapper.selectChildByDeptIdR(deptId);
List<Long> longs = mtStoreMapper.queryStoresByDeptIdsR(strings);
return deptPriceInfoMapper.getALlInfoBydeptId(longs);
}
} }

View File

@ -112,7 +112,7 @@ public class LJOrder extends BaseEntity implements Serializable {
private List<Long> storeIds; private List<Long> storeIds;
@TableField(exist = false)
private String count; private String count;
} }

View File

@ -59,6 +59,11 @@ public class SysNotifyController extends BaseController {
public ResponseObject queryById(@PathVariable("id") Integer id) { public ResponseObject queryById(@PathVariable("id") Integer id) {
return getSuccessResult(this.sysNotifyService.queryById(id)); return getSuccessResult(this.sysNotifyService.queryById(id));
} }
@GetMapping("/sendNotify")
public ResponseObject sendNotify(Integer id) {
this.sysNotifyService.sendNotifyOne(id);
return getSuccessResult(true);
}
/** /**
* 新增数据 * 新增数据

View File

@ -1,6 +1,9 @@
package com.fuint.business.sys.entity; package com.fuint.business.sys.entity;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fuint.repository.model.base.BaseEntity; import com.fuint.repository.model.base.BaseEntity;
import lombok.Data; import lombok.Data;
@ -16,6 +19,8 @@ public class SysNotificationlog extends BaseEntity {
/** /**
* 自增的主键用于唯一标识每条记录 * 自增的主键用于唯一标识每条记录
*/ */
@TableId(type = IdType.AUTO)
private Integer id; private Integer id;
/** /**
* 通知ID关联Notification表的主键 * 通知ID关联Notification表的主键
@ -38,6 +43,7 @@ public class SysNotificationlog extends BaseEntity {
* 错误信息不限字符长度可以为空 * 错误信息不限字符长度可以为空
*/ */
private String errorMessage; private String errorMessage;
private String content;

View File

@ -1,9 +1,13 @@
package com.fuint.business.sys.entity; package com.fuint.business.sys.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fuint.repository.model.base.BaseEntity; import com.fuint.repository.model.base.BaseEntity;
import lombok.Data; import lombok.Data;
import java.util.HashMap;
/** /**
* 存储通知信息的表(SysNotify)实体类 * 存储通知信息的表(SysNotify)实体类
* *
@ -16,6 +20,7 @@ public class SysNotify extends BaseEntity {
/** /**
* 自增的主键用于唯一标识每条记录 * 自增的主键用于唯一标识每条记录
*/ */
@TableId(type = IdType.AUTO)
private Integer id; private Integer id;
/** /**
* 通知名称字符长度最多100不能为空 * 通知名称字符长度最多100不能为空
@ -29,12 +34,23 @@ public class SysNotify extends BaseEntity {
* 模板内容不限字符长度不能为空 * 模板内容不限字符长度不能为空
*/ */
private String templateContent; private String templateContent;
private Integer type;
private Integer sendStatus;
/** /**
* 接收角色字符长度最多255不能为空 * 接收角色字符长度最多255不能为空
*/ */
private String recipientRoles; private String recipientRoles;
@TableField(exist = false) @TableField(exist = false)
private String recipientRolesName; private String recipientRolesName;
@TableField(exist = false)
private Long acctId;
@TableField(exist = false)
private Long deptId;
@TableField(exist = false)
private String sendType;
@TableField(exist = false)
private HashMap<String,String> mapType;
private String conditions; private String conditions;

View File

@ -40,6 +40,8 @@ public interface SysNotifyService extends IService<SysNotify> {
*/ */
SysNotify insert(SysNotify sysNotify); SysNotify insert(SysNotify sysNotify);
void sendNotify();
void sendNotifyOne(Integer id);
/** /**
* 修改数据 * 修改数据
* *

View File

@ -1,5 +1,6 @@
package com.fuint.business.sys.service.impl; package com.fuint.business.sys.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
@ -7,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.deptPay.entity.DeptPriceInfo;
import com.fuint.business.deptPay.entity.DeptServiceFeeInfo;
import com.fuint.business.deptPay.entity.DeptTransactionInfo;
import com.fuint.business.deptPay.mapper.DeptPriceInfoMapper; import com.fuint.business.deptPay.mapper.DeptPriceInfoMapper;
import com.fuint.business.deptPay.mapper.DeptServiceFeeInfoMapper; import com.fuint.business.deptPay.mapper.DeptServiceFeeInfoMapper;
import com.fuint.business.deptPay.mapper.DeptTransactionInfoMapper; import com.fuint.business.deptPay.mapper.DeptTransactionInfoMapper;
@ -33,6 +37,9 @@ import com.fuint.common.dto.AccountInfo;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
/** /**
@ -134,7 +141,7 @@ public class SysNotifyServiceImpl extends ServiceImpl<SysNotifyMapper, SysNotif
@Resource @Resource
DeptTransactionInfoMapper deptTransactionInfoMapper; DeptTransactionInfoMapper deptTransactionInfoMapper;
// 通知自动发送 // 通知自动发送
public void sendNotify(SysNotify sysNotify) { public void sendNotify() {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
List<SysNotify> sysNotifies = this.sysNotifyMapper.selectList(new QueryWrapper<>()); List<SysNotify> sysNotifies = this.sysNotifyMapper.selectList(new QueryWrapper<>());
for (SysNotify notify : sysNotifies) { for (SysNotify notify : sysNotifies) {
@ -158,55 +165,82 @@ public class SysNotifyServiceImpl extends ServiceImpl<SysNotifyMapper, SysNotif
// 根据dutyId查询员工id // 根据dutyId查询员工id
List<TAccount> accountByRolsIds = tAccountMapper.getAccountByRolsIds(Arrays.asList(array)); List<TAccount> accountByRolsIds = tAccountMapper.getAccountByRolsIds(Arrays.asList(array));
// 存储发送信息
for (TAccount accountByRolsId : accountByRolsIds) { for (TAccount accountByRolsId : accountByRolsIds) {
SysNotify sysNotify1 = new SysNotify();
sysNotify1.setTemplateContent(notify.getTemplateContent());
sysNotify1.setId(notify.getId());
sysNotify1.setAcctId(Long.valueOf(accountByRolsId.getAcctId()));
sysNotify1.setDeptId(notify.getDeptId());
sysNotify1.setSendType("");
// 根据id查员工以及dept // 根据id查员工以及dept
TAccount accountByRolId = tAccountMapper.getAccountByRolsId(accountByRolsId.getRoleIds()); TAccount accountByRolId = tAccountMapper.getAccountByRolsId(accountByRolsId.getRoleIds());
if ("5".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("5"))) { if ("5".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("5"))) {
// 拿到时间 // 拿到时间
// deptPriceInfoMapper.count() DeptPriceInfo deptPriceInfo = deptPriceInfoMapper.queryByDeptId(accountByRolId.getDeptId());
if (ObjectUtil.isNotEmpty(deptPriceInfo)) {
// 剩余提醒时间
Integer days= Integer.parseInt(map.get("5").toString());
// 过期时间
Date systemValidityPeriodEnd = deptPriceInfo.getSystemValidityPeriodEnd();
// 获取当前时间减去days天判断还剩几天过期 //已过期的不判断
LocalDate expiryDate = convertToLocalDateViaInstant(systemValidityPeriodEnd);
// 计算提醒日期即过期日期减去指定的天数
LocalDate notificationDate = expiryDate.minusDays(days);
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 检查当前日期是否在提醒日期之前且deptPriceInfo未过期
if (currentDate.isBefore(notificationDate) && currentDate.isBefore(expiryDate)) {
// 计算剩余天数
Long daysBetween = ChronoUnit.DAYS.between(currentDate, expiryDate);
// 发送通知
String templateContent = sysNotify1.getTemplateContent();
templateContent.replace("{系统到期日期}",daysBetween.toString());
// sendNotification(notify,accountByRolId);
sysNotify1.setSendType(sysNotify1.getSendType()+"1");
sysNotify1.setTemplateContent(templateContent);
} }
}
if ("3".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("3"))) { if ("3".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("3"))) {
DeptTransactionInfo deptTransactionInfo = deptTransactionInfoMapper.queryByDeptId(accountByRolId.getDeptId());
if (ObjectUtil.isNotEmpty(deptTransactionInfo)) {
Double remainingTransactionVolume = deptTransactionInfo.getRemainingTransactionVolume();
if (Double.parseDouble(map.get("4").toString())-remainingTransactionVolume > 0) {
// sendNotification(notify,accountByRolId);
String templateContent = sysNotify1.getTemplateContent();
} templateContent.replace("{剩余交易流量}",remainingTransactionVolume.toString());
if ("4".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("3"))) {
sysNotify1.setSendType(sysNotify1.getSendType()+"2");
sysNotify1.setTemplateContent(templateContent);
} }
} }
}
if ("4".equals(accountByRolId.getTurnoverType()) && ObjectUtil.isNotEmpty(map.get("4"))) {
DeptServiceFeeInfo deptServiceFeeInfo = deptServiceFeeInfoMapper.queryByDeptId(accountByRolId.getDeptId());
if (ObjectUtil.isNotEmpty(deptServiceFeeInfo)) {
Double serviceFeeLimit = deptServiceFeeInfo.getServiceFeeLimit();
if (Double.parseDouble(map.get("4").toString())-serviceFeeLimit > 0) {
// sendNotification(notify,accountByRolId);
sysNotify1.setSendType(sysNotify1.getSendType()+"3");
String templateContent = sysNotify1.getTemplateContent();
templateContent.replace("{系统服务费统计}",serviceFeeLimit.toString());
sysNotify1.setTemplateContent(templateContent);
}
}
}
}
map = new HashMap<>(); map = new HashMap<>();
String conditions = notify.getConditions();
if (ObjectUtil.isNotEmpty(conditions)) {
// 使用 fastjson 解析 JSON 数组
// List<Map<String, Object>> conditionsList = JSON.parseObject(notify.getConditions(), new TypeReference<List<Map<String, Object>>>() {});
for (Map<String, Object> stringObjectMap : conditionsList) {
if (ObjectUtil.isNotEmpty(stringObjectMap.get("系统到期日期")) && "".equals(stringObjectMap.get("field"))){
// 根据角色id查询对应的部门
List<TAccount> tAccounts = tAccountMapper.getDeptByRolsIds(Arrays.asList(array),5L);
// 判断部门的条件
// 发送通知 // 发送通知
sendNotification(sysNotify1);
} }
if (ObjectUtil.isNotEmpty(stringObjectMap.get("剩余交易流量")) && "".equals(stringObjectMap.get("field"))){
List<TAccount> tAccounts = tAccountMapper.getDeptByRolsIds(Arrays.asList(array),5L);
} }
if (ObjectUtil.isNotEmpty(stringObjectMap.get("系统服务费统计")) && "".equals(stringObjectMap.get("field"))){
List<TAccount> tAccounts = tAccountMapper.getDeptByRolsIds(Arrays.asList(array),5L);
} }
}
}
}
// sysNotify.setCreateName(nowAccountInfo.getRealName());
// sysNotify.setCreateTime(new java.util.Date());
// sysNotify.setUpdateName(nowAccountInfo.getRealName());
// sysNotify.setUpdateTime()
}
@Resource @Resource
AccountService accountService; AccountService accountService;
@Resource @Resource
@ -223,8 +257,54 @@ public class SysNotifyServiceImpl extends ServiceImpl<SysNotifyMapper, SysNotif
sysNotificationlog.setNotifyId(sysNotify.getId()); sysNotificationlog.setNotifyId(sysNotify.getId());
sysNotificationlog.setSentTo(account.getAcctId().toString()); sysNotificationlog.setSentTo(account.getAcctId().toString());
sysNotificationlog.setDeptId(account.getDeptId()); sysNotificationlog.setDeptId(account.getDeptId());
sysNotificationlogService.insert(sysNotificationlog); sysNotificationlog.setContent(sysNotify.getTemplateContent());
SysNotificationlog insert = sysNotificationlogService.insert(sysNotificationlog);
// 发送成功修改状态
SysNotify sysNotify1 = new SysNotify();
sysNotify1.setId(id);
sysNotify1.setType(1);
this.baseMapper.updateById(sysNotify1);
} }
} }
private void sendNotification(SysNotify sysNotify,TAccount account) {
// 发送通知的实现
SysNotificationlog sysNotificationlog = new SysNotificationlog();
sysNotificationlog.setNotifyId(sysNotify.getId());
sysNotificationlog.setSentTo(account.getAcctId().toString());
sysNotificationlog.setDeptId(account.getDeptId());
sysNotificationlog.setContent(sysNotify.getTemplateContent());
sysNotificationlogService.insert(sysNotificationlog);
}
private void sendNotification(SysNotify sysNotify) {
if (ObjectUtil.isNotEmpty(sysNotify.getSendType())) {
String templateContent = sysNotify.getTemplateContent();
templateContent.replace("{系统到期日期}","--");
templateContent.replace("{剩余交易流量}","--");
templateContent.replace("{系统服务费统计}","--");
sysNotify.setTemplateContent(templateContent);
// 发送通知的实现
SysNotificationlog sysNotificationlog = new SysNotificationlog();
sysNotificationlog.setNotifyId(sysNotify.getId());
sysNotificationlog.setSentTo(sysNotify.getAcctId().toString());
sysNotificationlog.setDeptId(sysNotify.getDeptId());
sysNotificationlog.setContent(sysNotify.getTemplateContent());
sysNotificationlogService.insert(sysNotificationlog);
// 发送成功修改
}
}
// 辅助方法将Date转换为LocalDate
private LocalDate convertToLocalDateViaInstant(Date dateToConvert) {
return dateToConvert.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
}
} }

View File

@ -0,0 +1,22 @@
package com.fuint.business.sys.task;
import com.fuint.business.sys.service.SysNotifyService;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component("SendNotify")
@EnableScheduling
public class SendNotify {
@Resource
private SysNotifyService sysNotifyService;
// @Scheduled(cron = "0/1 * * * * ?")
public void ryParams() {
System.out.println("1111111111111111111");
// sysNotifyService.sendNotify();
}
}