调整天医币
This commit is contained in:
@@ -2,15 +2,16 @@ package com.zmzm.finance.common.controller;
|
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zmzm.finance.common.entity.Orders;
|
||||
import com.zmzm.finance.common.entity.User;
|
||||
import com.zmzm.finance.common.entity.WumenUser;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.zmzm.finance.common.entity.*;
|
||||
import com.zmzm.finance.common.service.IOrdersService;
|
||||
import com.zmzm.finance.common.service.IUserService;
|
||||
import com.zmzm.finance.common.service.WumenUserService;
|
||||
import com.zmzm.finance.util.R;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@@ -18,9 +19,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/common/orders")
|
||||
@@ -52,34 +54,52 @@ public class OrdersController {
|
||||
//自动消耗天医币
|
||||
@RequestMapping("/autoConsumePoint")
|
||||
@DSTransactional
|
||||
public R autoConsumePoint(){
|
||||
List<User> userList = userService.list(new LambdaQueryWrapper<User>().gt(User::getTotalPoint,0));
|
||||
List<User> userRes = new ArrayList<>();
|
||||
List<Orders> ordersRes = new ArrayList<>();
|
||||
for (User user : userList) {
|
||||
WumenUser wumenUser = wumenUserService.getOne(new LambdaQueryWrapper<WumenUser>()
|
||||
.select(WumenUser::getPeanutCoin)
|
||||
.gt(WumenUser::getPeanutCoin, 0)
|
||||
.and(t -> t.eq(WumenUser::getTel, user.getTel()).or().eq(WumenUser::getEmail, user.getTel())));
|
||||
if (wumenUser != null && user.getPoint().compareTo(wumenUser.getPeanutCoin()) > 0) {
|
||||
BigDecimal differencePoint = user.getPoint().subtract(wumenUser.getPeanutCoin());
|
||||
List<Orders> orders = ordersService.list(new LambdaQueryWrapper<Orders>()
|
||||
.eq(Orders::getPayType, 1).eq(Orders::getUseFlag, 0)
|
||||
.gt(Orders::getOrderTime,"2022-12-31 23:59:59")
|
||||
.eq(Orders::getTel, user.getTel()).orderByDesc(Orders::getOrderTime));
|
||||
for (Orders order : orders) {
|
||||
if (differencePoint.compareTo(order.getFee()) >= 0) {
|
||||
differencePoint = differencePoint.subtract(order.getFee());
|
||||
order.setUseFlag(1);
|
||||
ordersRes.add(order);
|
||||
user.setPoint(user.getPoint().subtract(order.getFee()));
|
||||
public R autoConsumePoint() throws ParseException {
|
||||
//查询所有充值过的电话
|
||||
List<String> inPointList = ordersService.list(new MPJLambdaWrapper<Orders>()
|
||||
.eq(Orders::getType,0)
|
||||
.groupBy(Orders::getTel)
|
||||
.select(Orders::getTel))
|
||||
.stream().map(Orders::getTel).collect(Collectors.toList());
|
||||
//查询所有充值人得订单
|
||||
List<Orders> userPointOrders = ordersService.list(new MPJLambdaWrapper<Orders>()
|
||||
.and(t->t.and(s->s.eq(Orders::getType,0).eq(Orders::getUseFlag,1))
|
||||
.or().eq(Orders::getPayType,1))
|
||||
.gt(Orders::getFee,0)
|
||||
.in(Orders::getTel,inPointList)
|
||||
.orderByAsc(Orders::getOrderTime));
|
||||
Map<String,Object> userPointOrdersMap = new HashMap<>();
|
||||
for (Orders o : userPointOrders) {
|
||||
List<Orders> l = new ArrayList<>();
|
||||
if(userPointOrdersMap.get(o.getTel())!=null){
|
||||
l = (List<Orders>) userPointOrdersMap.get(o.getTel());
|
||||
}
|
||||
l.add(o);
|
||||
userPointOrdersMap.put(o.getTel(),l);
|
||||
}
|
||||
List<Orders> updateOrders = new ArrayList<>();
|
||||
//便利所有人天医币详情,处理消耗
|
||||
for (Map.Entry<String, Object> entry : userPointOrdersMap.entrySet()) {
|
||||
BigDecimal totalPoint = BigDecimal.ZERO;
|
||||
List<Orders> ordersList = (List<Orders>) entry.getValue();
|
||||
for (Orders userOrders : ordersList) {
|
||||
if (userOrders.getType()==0){
|
||||
totalPoint = totalPoint.add(userOrders.getPoint());
|
||||
}else {
|
||||
if (userOrders.getUseFlag()==0){
|
||||
if (totalPoint.compareTo(userOrders.getFee())>=0){
|
||||
totalPoint = totalPoint.subtract(userOrders.getFee());
|
||||
userOrders.setUseFlag(1);
|
||||
updateOrders.add(userOrders);
|
||||
}
|
||||
}else {
|
||||
totalPoint = totalPoint.subtract(userOrders.getFee());
|
||||
}
|
||||
}
|
||||
userRes.add(user);
|
||||
}
|
||||
userService.update(new LambdaUpdateWrapper<User>().set(User::getPoint,totalPoint).eq(User::getTel,entry.getKey()));
|
||||
}
|
||||
ordersService.updateBatchById(ordersRes);
|
||||
userService.updateBatchById(userRes);
|
||||
ordersService.updateBatchById(updateOrders);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@@ -93,8 +113,12 @@ public class OrdersController {
|
||||
ordersService.updateById(orders);
|
||||
User user = userService.getOne(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getTel, orders.getTel()));
|
||||
user.setPoint(user.getPoint().subtract(orders.getFee()));
|
||||
userService.updateById(user);
|
||||
if (user.getPoint().compareTo(orders.getPoint())>=0) {
|
||||
user.setPoint(user.getPoint().subtract(orders.getFee()));
|
||||
userService.updateById(user);
|
||||
}else {
|
||||
return R.error("余额不足");
|
||||
}
|
||||
}else {
|
||||
return R.error("不存在或已消耗");
|
||||
}
|
||||
|
||||
@@ -33,8 +33,6 @@ public class StatisticsController {
|
||||
@Autowired
|
||||
private IOrdersService ordersService;
|
||||
@Autowired
|
||||
private ITCustomerApplyBuyService customerApplyBuyService;
|
||||
@Autowired
|
||||
private ITCustomerApplyCurriculumService customerApplyCurriculumService;
|
||||
@Autowired
|
||||
private ITCustomerTaihuClassService customerTaihuClassService;
|
||||
@@ -55,7 +53,7 @@ public class StatisticsController {
|
||||
.apply("DATE_FORMAT(t.order_time, '%Y-%m') = '"+params.get("year")+"-"+params.get("month")+"'")
|
||||
.groupBy(Payment::getType)
|
||||
.select("IF(t2.type=0,'微信',IF(t2.type=1,'支付宝','银行')) type")
|
||||
.selectSum(Orders::getFee,"fee"));
|
||||
.selectSum(Orders::getFee,"fee").selectSum(Orders::getPoint,"point"));
|
||||
map.put("incomes",incomes);
|
||||
//消费
|
||||
List<Map<String,Object>> consumes = ordersService.listMaps(new MPJLambdaWrapper<Orders>()
|
||||
@@ -71,45 +69,23 @@ public class StatisticsController {
|
||||
BigDecimal total = BigDecimal.ZERO;
|
||||
List<Orders> totals = ordersService.list(new MPJLambdaWrapper<Orders>()
|
||||
.eq(Orders::getUseFlag,1).eq(Orders::getType,0));
|
||||
List<String> yljkTotalOids = new ArrayList<>();
|
||||
for (Orders o:totals){
|
||||
if (o.getSource()==0){//一路健康
|
||||
yljkTotalOids.add(o.getOrderOldId());
|
||||
}else {
|
||||
total = total.add(o.getFee());
|
||||
}
|
||||
}
|
||||
if (yljkTotalOids.size()>0){
|
||||
List<TCustomerApplyBuy> applyBuyTotals = customerApplyBuyService.listByIds(yljkTotalOids);
|
||||
for (TCustomerApplyBuy buy:applyBuyTotals){
|
||||
total = total.add(BigDecimal.valueOf(buy.getConvertpoint()));
|
||||
}
|
||||
total = total.add(o.getPoint());
|
||||
}
|
||||
//指定月份以后的冲销差额
|
||||
BigDecimal in = BigDecimal.ZERO;
|
||||
List<Orders> ins = ordersService.list(new MPJLambdaWrapper<Orders>()
|
||||
.eq(Orders::getUseFlag,1).eq(Orders::getType,0)
|
||||
.apply("DATE_FORMAT(t.order_time, '%Y-%m') > '"+params.get("year")+"-"+params.get("month")+"'"));
|
||||
List<String> yljkOids = new ArrayList<>();
|
||||
for (Orders o:ins){
|
||||
if (o.getSource()==0){//一路健康
|
||||
yljkOids.add(o.getOrderOldId());
|
||||
}else {
|
||||
in = in.add(o.getFee());
|
||||
}
|
||||
}
|
||||
if (yljkOids.size()>0){
|
||||
List<TCustomerApplyBuy> applyBuys = customerApplyBuyService.listByIds(yljkOids);
|
||||
for (TCustomerApplyBuy buy:applyBuys){
|
||||
in = in.add(BigDecimal.valueOf(buy.getConvertpoint()));
|
||||
}
|
||||
in = in.add(o.getPoint());
|
||||
}
|
||||
Map<String,Object> out = ordersService.getMap(new MPJLambdaWrapper<Orders>()
|
||||
.eq(Orders::getUseFlag,1).eq(Orders::getPayType,1)
|
||||
.apply("DATE_FORMAT(t.order_time, '%Y-%m') > '"+params.get("year")+"-"+params.get("month")+"'")
|
||||
.apply("DATE_FORMAT(t.order_time, '%Y-%m') <= '"+params.get("year")+"-"+params.get("month")+"'")
|
||||
.select("SUM(fee) fee"));
|
||||
//目前总额+差额
|
||||
map.put("surplus",total.subtract(in).add(new BigDecimal(out==null?"0":out.get("fee").toString())));
|
||||
map.put("surplus",total.subtract(in).subtract(new BigDecimal(out==null?"0":out.get("fee").toString())));
|
||||
return R.ok().putData("map",map);
|
||||
}
|
||||
//天医币明细导出
|
||||
@@ -122,7 +98,7 @@ public class StatisticsController {
|
||||
.apply("DATE_FORMAT(t.order_time, '%Y-%m') = '"+params.get("year")+"-"+params.get("month")+"'")
|
||||
.select("DATE_FORMAT(t.order_time, '%Y-%m-%d %H:%i:%s') orderTime,if(t.source=0,'一路健康',if(t.source=1,'吴门医述','管理员')) source," +
|
||||
"if(t.type=0,'充值',IF(t.type=1,'vip',IF(t.type=2,'课程',IF(t.type=3,'实物','培训班')))) type," +
|
||||
"IF(t2.type=0,'微信',IF(t2.type=1,'支付宝','银行')) payType,t.tel,t.order_sn,t.fee")
|
||||
"IF(t2.type=0,'微信',IF(t2.type=1,'支付宝','银行')) payType,t.tel,t.order_sn,t.fee,t.point")
|
||||
.orderByAsc(Orders::getOrderTime));
|
||||
String fileName = params.get("year")+""+params.get("month")+"天医币明细";
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
@@ -135,6 +111,7 @@ public class StatisticsController {
|
||||
titleRow.createCell(4).setCellValue("电话");
|
||||
titleRow.createCell(5).setCellValue("订单号");
|
||||
titleRow.createCell(6).setCellValue("金额");
|
||||
titleRow.createCell(7).setCellValue("天医币");
|
||||
int cell = 1;
|
||||
for (Map<String,Object> map : coinInfoList) {
|
||||
Row row = sheet.createRow(cell);
|
||||
@@ -145,6 +122,7 @@ public class StatisticsController {
|
||||
row.createCell(4).setCellValue(map.get("tel").toString());
|
||||
row.createCell(5).setCellValue(map.get("order_sn").toString());
|
||||
row.createCell(6).setCellValue(map.get("fee").toString());
|
||||
row.createCell(7).setCellValue(map.get("point").toString());
|
||||
//序号自增
|
||||
cell++;
|
||||
}
|
||||
@@ -544,7 +522,9 @@ public class StatisticsController {
|
||||
String startTime = (String) map.get("startTime");
|
||||
String endTime = (String) map.get("endTime");
|
||||
if (startTime==null){
|
||||
map.put("notyet",fee);
|
||||
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
|
||||
map.put("notyet",fee);
|
||||
}
|
||||
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
|
||||
map.put("already",fee);
|
||||
//未开始摊销
|
||||
@@ -757,7 +737,9 @@ public class StatisticsController {
|
||||
String startTime = (String) map.get("startTime");
|
||||
String endTime = (String) map.get("endTime");
|
||||
if (startTime==null){
|
||||
notyet = notyet.add(fee);
|
||||
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
|
||||
notyet = notyet.add(fee);
|
||||
}
|
||||
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
|
||||
already = already.add(fee);
|
||||
//未开始摊销
|
||||
|
||||
@@ -59,6 +59,11 @@ public class Orders implements Serializable {
|
||||
*/
|
||||
private BigDecimal fee;
|
||||
|
||||
/**
|
||||
* 充值天医币数量
|
||||
*/
|
||||
private BigDecimal point;
|
||||
|
||||
/**
|
||||
* 订单类型:0充值1vip2课3实物4培训班
|
||||
*/
|
||||
|
||||
@@ -73,6 +73,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders> impleme
|
||||
o.setPayType(0);
|
||||
}
|
||||
o.setFee(bo.getRealMoney());
|
||||
o.setPoint(bo.getRealMoney());
|
||||
if ("point".equals(bo.getOrderType())){
|
||||
o.setType(0);
|
||||
}
|
||||
@@ -102,13 +103,7 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders> impleme
|
||||
public void updatePoint(Integer ordersId) {
|
||||
Orders orders = this.baseMapper.selectById(ordersId);
|
||||
if (orders.getType()==0){
|
||||
BigDecimal point = BigDecimal.ZERO;
|
||||
if (orders.getSource()==0){//一路健康
|
||||
TCustomerApplyBuy applyBuy = customerApplyBuyMapper.selectById(orders.getOrderOldId());
|
||||
point = BigDecimal.valueOf(applyBuy.getConvertpoint());
|
||||
}else {
|
||||
point = orders.getFee();
|
||||
}
|
||||
BigDecimal point = orders.getPoint();
|
||||
User user = userMapper.selectOne(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getTel,orders.getTel()));
|
||||
if (user==null){
|
||||
|
||||
@@ -181,6 +181,60 @@ public class DataUtil {
|
||||
System.out.println("Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public static void cPoint(){
|
||||
try {
|
||||
Connection financeConn = DriverManager.getConnection(
|
||||
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/finance?rewriteBatchedStatements=true",
|
||||
"nuttyreading", "Wu751019!");
|
||||
PreparedStatement statement = financeConn.prepareStatement(" select * from orders where use_flag = 1 and type = 0 ");
|
||||
ResultSet resultSet = statement.executeQuery();
|
||||
int i=0;
|
||||
while(resultSet.next()){
|
||||
System.out.println(i++);
|
||||
String tel = resultSet.getString("tel");
|
||||
PreparedStatement applystatement = financeConn.prepareStatement(" select * from user where tel = '"+tel+"'");
|
||||
ResultSet applyresultSet = applystatement.executeQuery();
|
||||
if(applyresultSet.next()){
|
||||
BigDecimal p = resultSet.getBigDecimal("point");
|
||||
PreparedStatement updateStatement = financeConn.prepareStatement(
|
||||
"update user set point=point+"+p+",total_point = total_point+"+p+" where tel = '"+tel+"'");
|
||||
updateStatement.execute();
|
||||
}else {
|
||||
System.out.println("未找到电话"+tel);
|
||||
}
|
||||
}
|
||||
financeConn.close();
|
||||
} catch (SQLException e) {
|
||||
System.out.println("Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
public static void addPoint(){
|
||||
try {
|
||||
Connection yljkConn = DriverManager.getConnection(
|
||||
"jdbc:mysql://goldorchid.mysql.rds.aliyuncs.com:3309/everhealth?",
|
||||
"yljkmaster", "Wu751019!@");
|
||||
Connection financeConn = DriverManager.getConnection(
|
||||
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/finance?rewriteBatchedStatements=true",
|
||||
"nuttyreading", "Wu751019!");
|
||||
PreparedStatement statement = financeConn.prepareStatement(" select * from orders where type = 0 and source = 0 ");
|
||||
ResultSet resultSet = statement.executeQuery();
|
||||
int i=0;
|
||||
while(resultSet.next()){
|
||||
System.out.println(i++);
|
||||
String orderId = resultSet.getString("id");
|
||||
String oid = resultSet.getString("order_old_id");
|
||||
PreparedStatement applystatement = yljkConn.prepareStatement(" select * from t_customer_apply_buy where oid = '"+oid+"'");
|
||||
ResultSet applyresultSet = applystatement.executeQuery();
|
||||
while(applyresultSet.next()){
|
||||
PreparedStatement updateStatement = financeConn.prepareStatement(
|
||||
"update orders set point="+applyresultSet.getInt("convertPoint")+" where id = "+orderId);
|
||||
updateStatement.execute();
|
||||
}
|
||||
}
|
||||
financeConn.close();
|
||||
} catch (SQLException e) {
|
||||
System.out.println("Error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user