package com.zheng.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.zheng.dao.ClubMapper;
import com.zheng.dao.OrderMapper;
import com.zheng.dao.TotalsMapper;
import com.zheng.pojo.Club;
import com.zheng.pojo.Order;
import com.zheng.pojo.Totals;
import com.zheng.utils.SnowflakeUtils;
import com.zheng.vo.OrderInfo;
import com.zheng.vo.Parts;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class OrderSI {
@Autowired
private OrderMapper orderMapper;
@Autowired
private ClubMapper clubMapper;
@Autowired
private TotalsMapper totalsMapper;
//格式化时间
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/** 查看账单 参数:社团id+支付日期(月份) */
public HashMap selectOrderByMon(String cid, String mon){
//获取全部符合条件的信息
List<Order> orders = orderMapper.selectOrderByMonth(cid, mon);
System.out.println(orders);
//定义一个返回集合
HashMap<Integer, LinkedList<OrderInfo>> map = new HashMap<>();
for (Order order : orders) {
//以日期为键名,将账单分组存入集合
Calendar date = Calendar.getInstance();
date.setTime(order.getOpaytime());
int day = date.get(Calendar.DAY_OF_MONTH);
LinkedList<OrderInfo> orderList = map.get(day);
if (orderList==null){
orderList = new LinkedList();
}
//格式化order
OrderInfo orderInfo = new OrderInfo(order.getOrderno(),
order.getCid(),
order.getMid(),
dateFormat.format(order.getOupdatetime()),
dateFormat.format(order.getOpaytime()),
order.getOisexpend(),
order.getOclass(),
order.getOmoney(),
order.getOremark());
orderList.add(orderInfo);
map.put(day,orderList);
}
return map;
}
/** 查看账单 参数:搜索关键字 */
public List selectOrderSearch(String cid,String keyword){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("cid",cid);
queryWrapper.like("oclass",keyword);
List<Order> orders = orderMapper.selectList(queryWrapper);
LinkedList<OrderInfo> orderList = new LinkedList();
for (Order order : orders) {
//格式化order
OrderInfo orderInfo = new OrderInfo(order.getOrderno(),
order.getCid(),
order.getMid(),
dateFormat.format(order.getOupdatetime()),
dateFormat.format(order.getOpaytime()),
order.getOisexpend(),
order.getOclass(),
order.getOmoney(),
order.getOremark());
orderList.add(orderInfo);
}
return orderList;
}
/** 添加/修改账单 没有传入id为添加,否则为修改 */
@Transactional
public Club saveOrder(Order order) throws Exception {
String orderno = order.getOrderno();
//支入支出过滤
Integer oisexpend = order.getOisexpend()==0?0:1;
order.setOisexpend(oisexpend);
Double newMon = order.getOmoney(), oldMon = 0D;
int label = order.getOisexpend()==0?1:(-1);
//添加 1 成功 0 失败
/**添加成功后 需更新总览表数据*/
if (orderno==null){
SnowflakeUtils snowflakeUtils = new SnowflakeUtils(0, 6);
orderno = "or"+snowflakeUtils.nextId();
order.setOrderno(orderno);
order.setOupdatetime(new Date());
if(order.getOpaytime()==null){
order.setOpaytime(new Date());
}
if (this.editClub(order.getCid(), order.getMid(), newMon*label, 0D)==0){
return null;
}
this.editTotal(order.getCid(),order.getOpaytime(),newMon*label,0D);
if (orderMapper.insert(order)==0){return null;}
}
//修改 1 成功 0 失败
/**修改成功后 需更新总览表数据*/
else {
QueryWrapper queryOrder = new QueryWrapper();
queryOrder.eq("orderno",order.getOrderno());
Order oldOrder = orderMapper.selectOne(queryOrder);
oldMon = oldOrder.getOmoney();
int oldLabel = oldOrder.getOisexpend()==0?1:(-1);
if (this.editClub(order.getCid(), order.getMid(), newMon*label, oldMon*oldLabel)==0){
return null;
}
this.editTotal(order.getCid(),order.getOpaytime(),newMon*label,oldMon*oldLabel);
UpdateWrapper updateOrder = new UpdateWrapper();
updateOrder.eq("orderno",order.getOrderno());
updateOrder.set("oupdatetime",new Date());
updateOrder.set("opaytime",order.getOpaytime());
updateOrder.set("oisexpend",order.getOisexpend());
updateOrder.set("oclass",order.getOclass());
updateOrder.set("omoney",order.getOmoney());
updateOrder.set("oremark",order.getOremark());
if (orderMapper.update(null, updateOrder)==0){return null;}
}
QueryWrapper queryClub = new QueryWrapper();
queryClub.eq("cid",order.getCid());
return clubMapper.selectOne(queryClub);
}
/** 删除账单 */
@Transactional
public Club delOrder(String orderNo) throws Exception {
/**删除成功前 需更新总览表数据*/
Double oldMon = 0D;
QueryWrapper delWrapper = new QueryWrapper();
delWrapper.eq("orderno",orderNo);
Order order = orderMapper.selectOne(delWrapper);
if (order==null){
return null;
}
oldMon = order.getOmoney();
int oldLabel = order.getOisexpend()==0?1:(-1);
if (this.editClub(order.getCid(), order.getMid(), 0D, oldMon*oldLabel)==0){
return null;
}
this.editTotal(order.getCid(),order.getOpaytime(),0D,oldMon*oldLabel);
if (orderMapper.delete(delWrapper)==0){
return null;
}
QueryWrapper queryClub = new QueryWrapper();
queryClub.eq("cid",order.getCid());
return clubMapper.selectOne(queryClub);
}
/** 更新账单信息
* 一. 根据cid查出社团信息,查询操作者账户
* 二. 修改账户余额及结算社团余额
* 1.添加账单,需新增金额
* 2.修改账单,需新金额+原金额
* 3.删除账单,需原金额
* return 如果当前用户不是改社团的账户管理者,那么返回0
*/
public Integer editClub(String cid,String mid,Double newMon,Double oldMon){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("cid",cid);
Club club = clubMapper.selectOne(queryWrapper);
// JSON字符串 转 java 对象
JSONArray jsonArray = JSON.parseArray(club.getCparts());
List<Parts> list = new LinkedList();
Parts myParts = null;
for (Object obj : jsonArray) {
Parts parts = JSON.parseObject(obj.toString(), Parts.class);
if (mid.equals(parts.getMid())){
myParts = parts;
}
list.add(parts);
}
if (myParts==null){
return 0;
}
//新余额 = 原账户�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
实现一个基于前后端分离、通过JSON进行数据传输的系统,使用springBoot框架搭建系统后端支持、使用Vue+ElementUI框架搭建系统前端后台管理,以及使用微信小程序作为用户端实现整体的系统。
资源推荐
资源详情
资源评论
收起资源包目录
基于Springboot+vue实现的学生社团记账信息管理系统源码+数据库+详细文档 (344个子文件)
.browserslistrc 30B
.gitignore 231B
index.html 591B
tu1.ico 10KB
favicon.ico 4KB
scos_java.iml 15KB
OrderSI.java 13KB
LoginSI.java 7KB
ClubSI.java 6KB
MemberSI.java 6KB
AccountSI.java 6KB
SnowflakeUtils.java 4KB
WxUtils.java 4KB
Club.java 3KB
OrderExcel.java 3KB
ClubController.java 3KB
Totals.java 3KB
TotalsSI.java 2KB
ExcelSI.java 2KB
Order.java 2KB
Member.java 2KB
OrderInfo.java 2KB
OrderController.java 2KB
Admin.java 2KB
FeedbackSI.java 2KB
LoginInterceptor.java 2KB
AccountInfo.java 2KB
MemberController.java 2KB
MemberInfo.java 2KB
TotalsController.java 2KB
Account.java 2KB
AdminInfo.java 2KB
AccountController.java 1KB
CandM.java 1KB
Result.java 1KB
JWTUtils.java 1KB
ClubInfox.java 1KB
WebConfig.java 1KB
Verification.java 1KB
MsmUtils.java 1KB
LoginController.java 1KB
FeedbackController.java 979B
Parts.java 936B
ClubInfo.java 932B
Feedback.java 922B
ScosApplicationTests.java 896B
OrderMapper.java 756B
ExcelController.java 747B
AllExceptionHandler.java 728B
PhoneSMS.java 691B
CandMMapper.java 526B
AdminController.java 427B
AdminSI.java 425B
ScosApplication.java 388B
WxLoginInfo.java 369B
VerificationMapper.java 252B
FeedbackMapper.java 240B
AccountMapper.java 237B
MemberMapper.java 234B
TotalsMapper.java 234B
AdminMapper.java 231B
ClubMapper.java 228B
bg2.jpg 895KB
tutu4.jpg 34KB
tutu1.jpg 19KB
u-charts.js 274KB
u-charts.js 274KB
weapp.qrcode.esm.js 17KB
club.js 6KB
line.js 6KB
cloudAPIUtils.js 5KB
account.js 5KB
edit.js 4KB
edit.js 4KB
total.js 3KB
index.js 3KB
say.js 3KB
request.js 3KB
classIndex.js 2KB
mine.js 2KB
index.js 2KB
classes.js 2KB
qrcode.js 2KB
login.js 1KB
app.js 1KB
search.js 1KB
detail.js 1KB
index.js 841B
vue.config.js 649B
all.js 603B
.eslintrc.js 587B
main.js 326B
babel.config.js 73B
package-lock.json 716KB
app.json 2KB
project.config.json 1KB
package.json 603B
project.private.config.json 395B
jsconfig.json 279B
sitemap.json 191B
共 344 条
- 1
- 2
- 3
- 4
资源评论
云哲-吉吉2021
- 粉丝: 3318
- 资源: 1130
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功