调整天医币消耗

This commit is contained in:
wuchunlei
2026-01-29 16:28:36 +08:00
parent 10e70bd841
commit bcefc79e17
3 changed files with 118 additions and 35 deletions

View File

@@ -151,7 +151,7 @@ public class StatisticsController {
.disableSubLogicDel()
.in(BuyOrder::getOrderId,wumenOrderIds)
.select("t.order_id oid,if(t2.type=4,'中医学vip',if(t2.type=5,'针灸学vip',if(t2.type=6,'肿瘤学vip',if(t2.type=7,'国学vip',if(t2.type=8,'心理学vip',if(t2.type=9,'中西汇通vip','其他')))))) vipType," +
"t1.fee,DATE_FORMAT(t1.start_time, '%Y-%m-%d') startTime,DATE_FORMAT(t1.end_time, '%Y-%m-%d') endTime"));
"t1.price fee,DATE_FORMAT(t1.start_time, '%Y-%m-%d') startTime,DATE_FORMAT(t1.end_time, '%Y-%m-%d') endTime"));
Map<String,Object> buyOrdersMap = new HashMap<>();
for (Map<String,Object> m : buyOrders) {
List<Map<String,Object>> l = new ArrayList<>();
@@ -204,13 +204,15 @@ public class StatisticsController {
if (startTime.equals(endTime)){
if (map.get("orderTime").toString().contains(month)){
map.put("now",fee);
} else if (sdfmonth.parse(startTime).getTime()<sdfmonth.parse(month).getTime()) {
map.put("already",fee);
}
//摊销完成
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
map.put("already",fee);
//未开始摊销
}else if (sdfday.parse(day).getTime()<sdfday.parse(startTime).getTime()){
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<sdfmonth.parse(month).getTime()){
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
map.put("notyet",fee);
}
//摊销中
@@ -306,13 +308,13 @@ public class StatisticsController {
BigDecimal already = BigDecimal.ZERO;
BigDecimal nowTotal = BigDecimal.ZERO;
BigDecimal notyet = BigDecimal.ZERO;
//吴门医述订单课程
//吴门医述订单
List<String> wumenOrderIds = vipOrders.stream().filter(o -> o.getSource() == 1).map(Orders::getOrderOldId).collect(Collectors.toList());
List<Map<String,Object>> buyOrders = buyOrderService.listMaps(new MPJLambdaWrapper<BuyOrder>()
.leftJoin(UserVipLog.class,UserVipLog::getOrderSn,BuyOrder::getOrderSn)
.disableSubLogicDel()
.in(BuyOrder::getOrderId,wumenOrderIds)
.select("t.order_id oid,fee,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s') startTime,DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s') endTime"));
.select("t.order_id oid,t1.price fee,DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s') startTime,DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s') endTime"));
Map<String,Object> buyOrdersMap = new HashMap<>();
for (Map<String,Object> m : buyOrders) {
List<Map<String,Object>> l = new ArrayList<>();
@@ -336,8 +338,8 @@ public class StatisticsController {
}else {
Map<String,Object> map = new HashMap<>();
map.put("fee",orders.getFee());
map.put("startTime",null);
map.put("endTime",null);
map.put("startTime",sdfday.format(orders.getOrderTime()));
map.put("endTime",sdfday.format(orders.getOrderTime()));
list.add(map);
}
}
@@ -353,16 +355,18 @@ public class StatisticsController {
BigDecimal fee = (BigDecimal) map.get("fee");
String startTime = (String) map.get("startTime")==null?"":map.get("startTime").toString();
String endTime = (String) map.get("endTime")==null?"":map.get("endTime").toString();
if (StringUtils.isEmpty(startTime)){
if (sdfmonth.format(orders.getOrderTime()).equals(month)){
if (startTime.equals(endTime)){
if (sdfmonth.format(orders.getOrderTime()).contains(month)){
nowTotal = nowTotal.add(fee);
} else if (sdfmonth.parse(startTime).getTime()<sdfmonth.parse(month).getTime()) {
already = already.add(fee);
}
//摊销完成
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
already = already.add(fee);
//未开始摊销
}else if (sdfday.parse(day).getTime()<sdfday.parse(startTime).getTime()){
if (orders.getOrderTime().getTime()<sdfmonth.parse(month).getTime()){
if (sdfmonth.parse(sdfmonth.format(orders.getOrderTime())).getTime()<=sdfmonth.parse(month).getTime()){
notyet = notyet.add(fee);
}
//摊销中
@@ -436,7 +440,7 @@ public class StatisticsController {
.in("t.order_id",wumenOrderIds)
.gt(BuyOrder::getRealMoney,0)
.select("t.order_id oid,t1.id ucblid,if(t1.fee is null,t.real_money,t1.fee) fee,t1.days,t1.begin_day," +
"DATE_FORMAT(t2.start_time, '%Y-%m-%d %H:%i:%s') startTime"));
"DATE_FORMAT(t2.start_time, '%Y-%m-%d %H:%i:%s') startTime,t.order_sn"));
Map<String,Object> buyOrdersMap = new HashMap<>();
for (Map<String,Object> m : buyOrdersList) {
List<Map<String,Object>> l = new ArrayList<>();
@@ -471,11 +475,21 @@ public class StatisticsController {
result.add(res);
}else if(courseOrder.get("source").equals("吴门医述")){
List<Map<String,Object>> l = (List<Map<String, Object>>) buyOrdersMap.get(courseOrder.get("orderOldId"));
Map<String,Object> res = new HashMap<>();
if (l!=null){
for (Map<String,Object> m : l) {
for (int i=0;i<l.size();i++) {
Map<String,Object> res = new HashMap<>();
Map<String,Object> m = l.get(i);
if (m.get("ucblid")!=null){
res.put("fee",m.get("fee"));
if (new BigDecimal(m.get("fee").toString()).compareTo(BigDecimal.ZERO)>0){
res.put("fee",m.get("fee"));
}else {
BigDecimal one = new BigDecimal(courseOrder.get("realMoney").toString()).divide(new BigDecimal(l.size()),2,BigDecimal.ROUND_HALF_UP);
if (i==l.size()-1){
res.put("fee",new BigDecimal(courseOrder.get("realMoney").toString()).subtract(one.multiply(new BigDecimal(l.size()-1))));
}else {
res.put("fee",one);
}
}
if (m.get("startTime")==null){
res.put("startTime",null);
res.put("endTime",null);
@@ -500,6 +514,7 @@ public class StatisticsController {
result.add(res);
}
}else {
Map<String,Object> res = new HashMap<>();
res.put("fee",courseOrder.get("realMoney"));
res.put("startTime",orderTime);
res.put("endTime",orderTime);
@@ -525,6 +540,13 @@ public class StatisticsController {
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
map.put("notyet",fee);
}
}else if (startTime.equals(endTime)){
if (startTime.contains(month)){
map.put("now",fee);
} else if (sdfmonth.parse(startTime).getTime()<sdfmonth.parse(month).getTime()) {
map.put("already",fee);
}
//摊销中
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
map.put("already",fee);
//未开始摊销
@@ -532,15 +554,6 @@ public class StatisticsController {
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
map.put("notyet",fee);
}
}else if (startTime.equals(endTime)){
if (startTime.contains(month)){
map.put("now",fee);
} else if (sdfmonth.parse(startTime).getTime()<sdfmonth.parse(month).getTime()) {
map.put("already",fee);
}else {
map.put("notyet",fee);
}
//摊销中
}else {
//总天数
int totalDays = Math.toIntExact((sdfday.parse(endTime).getTime() - sdfday.parse(startTime).getTime()) / 1000 / 60 / 60 / 24)+1;
@@ -689,11 +702,21 @@ public class StatisticsController {
result.add(res);
}else if(courseOrder.get("source").equals("吴门医述")){
List<Map<String,Object>> l = (List<Map<String, Object>>) buyOrdersMap.get(courseOrder.get("orderOldId"));
Map<String,Object> res = new HashMap<>();
if (l!=null){
for (Map<String,Object> m : l) {
for (int i=0;i<l.size();i++) {
Map<String,Object> res = new HashMap<>();
Map<String,Object> m = l.get(i);
if (m.get("ucblid")!=null){
res.put("fee",m.get("fee"));
if (new BigDecimal(m.get("fee").toString()).compareTo(BigDecimal.ZERO)>0){
res.put("fee",m.get("fee"));
}else {
BigDecimal one = new BigDecimal(courseOrder.get("realMoney").toString()).divide(new BigDecimal(l.size()),2,BigDecimal.ROUND_HALF_UP);
if (i==l.size()-1){
res.put("fee",new BigDecimal(courseOrder.get("realMoney").toString()).subtract(one.multiply(new BigDecimal(l.size()-1))));
}else {
res.put("fee",one);
}
}
if (m.get("startTime")==null){
res.put("startTime",null);
res.put("endTime",null);
@@ -718,6 +741,7 @@ public class StatisticsController {
result.add(res);
}
}else {
Map<String,Object> res = new HashMap<>();
res.put("fee",courseOrder.get("realMoney"));
res.put("startTime",orderTime);
res.put("endTime",orderTime);
@@ -740,22 +764,18 @@ public class StatisticsController {
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);
//未开始摊销
}else if (sdfday.parse(day).getTime()<sdfday.parse(startTime).getTime()){
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
notyet = notyet.add(fee);
}
}else if (startTime.equals(endTime)){
if (startTime.contains(month)){
nowTotal = nowTotal.add(fee);
} else if (sdfmonth.parse(startTime).getTime()<sdfmonth.parse(month).getTime()) {
already = already.add(fee);
}else {
}
}else if (sdfmonth.parse(day).getTime()>sdfmonth.parse(endTime).getTime()){
already = already.add(fee);
}else if (sdfday.parse(day).getTime()<sdfday.parse(startTime).getTime()){
if (sdfmonth.parse(map.get("orderTime").toString()).getTime()<=sdfmonth.parse(month).getTime()){
notyet = notyet.add(fee);
}
//摊销中
}else {
//总天数
int totalDays = Math.toIntExact((sdfday.parse(endTime).getTime() - sdfday.parse(startTime).getTime()) / 1000 / 60 / 60 / 24)+1;

View File

@@ -59,7 +59,7 @@ public class FinanceOrder implements Serializable {
private String orderSn;
/**
* 来源
* 来源 0一路健康1吴门医述2手动添加
*/
private String come;

View File

@@ -2,6 +2,7 @@ package com.zmzm.finance.util;
import java.math.BigDecimal;
import java.sql.*;
import java.util.UUID;
public class DataUtil {
@@ -11,6 +12,68 @@ public class DataUtil {
// goods();
// course();
// mtRegister();
// transVip();
}
public static void transVip(){
try {
Connection fzdsConn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/e_book?rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai",
"nuttyreading", "Wu751019!");
Connection financeConn = DriverManager.getConnection(
"jdbc:mysql://rm-2zev4157t67trxuu3yo.mysql.rds.aliyuncs.com:3306/finance?rewriteBatchedStatements=true",
"nuttyreading", "Wu751019!");
PreparedStatement transactionDetailStatement = financeConn.prepareStatement(
"INSERT ignore INTO finance_order (come,order_type,order_sn,tel,product_name,order_money,real_money,start_time," +
"end_time,create_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",PreparedStatement.RETURN_GENERATED_KEYS);
PreparedStatement ordersStatement = financeConn.prepareStatement(
"INSERT ignore INTO orders (source,order_sn,order_old_id,tel,fee,type,order_time,pay_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
PreparedStatement statement = fzdsConn.prepareStatement("select uvl.*,IF(u.tel is NULL,u.email,u.tel) tel," +
"IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time) startTime," +
"if(uv.type='4','中医学vip',if(uv.type='5','针灸学vip',if(uv.type='6','肿瘤学vip',if(uv.type='7','国学vip'," +
"if(uv.type='8','心理学vip','中西汇通vip'))))) vipType " +
"from user_vip_log uvl " +
"left join user_vip uv on uv.id = uvl.user_vip_id " +
"left join user u on u.id = uvl.user_id " +
"where uvl.type = 'master' and uvl.pay_type = '天医币' and price > 0 ");
ResultSet resultSet = statement.executeQuery();
int i=0;
while(resultSet.next()){
i++;
System.out.println("" + i);
String orderSn = UUID.randomUUID().toString().replace("-","");
transactionDetailStatement.setInt(1,2);
transactionDetailStatement.setInt(2,1);
transactionDetailStatement.setString(3,orderSn);
transactionDetailStatement.setString(4,resultSet.getString("tel"));
transactionDetailStatement.setString(5,resultSet.getString("vipType"));
transactionDetailStatement.setBigDecimal(6,resultSet.getBigDecimal("price"));
transactionDetailStatement.setBigDecimal(7,resultSet.getBigDecimal("price"));
transactionDetailStatement.setTimestamp(8,resultSet.getTimestamp("startTime"));
transactionDetailStatement.setTimestamp(9,resultSet.getTimestamp("end_time"));
transactionDetailStatement.setTimestamp(10,resultSet.getTimestamp("startTime"));
transactionDetailStatement.execute();
ResultSet rs = transactionDetailStatement.getGeneratedKeys();
String id = "";
while(rs.next()) {
Object rsid = rs.getObject(1);
id = rsid.toString();
}
ordersStatement.setInt(1,2);
ordersStatement.setString(2,orderSn);
ordersStatement.setString(3,id);
ordersStatement.setString(4,resultSet.getString("tel"));
ordersStatement.setBigDecimal(5,resultSet.getBigDecimal("price"));
ordersStatement.setInt(6,1);
ordersStatement.setTimestamp(7,resultSet.getTimestamp("startTime"));
ordersStatement.setInt(8,1);
ordersStatement.execute();
}
fzdsConn.close();
financeConn.close();
} catch (SQLException e) {
System.out.println("Error: " + e.getMessage());
}
}
public static void mtRegister(){