LiRong 1 месяц назад
Родитель
Сommit
0bd5310695
22 измененных файлов с 263 добавлено и 60 удалено
  1. 1 1
      leromro-common/src/main/java/com/leromro/common/constant/Constants.java
  2. 3 3
      leromro-core/src/main/java/com/leromro/core/controller/AddressController.java
  3. 18 4
      leromro-core/src/main/java/com/leromro/core/controller/OrdersController.java
  4. 7 5
      leromro-core/src/main/java/com/leromro/core/controller/VolunteerInfoController.java
  5. 0 8
      leromro-core/src/main/java/com/leromro/core/controller/VolunteerWorkDateController.java
  6. 2 3
      leromro-core/src/main/java/com/leromro/core/controller/volunteerOrderController.java
  7. 2 2
      leromro-core/src/main/java/com/leromro/core/domain/MainOrders.java
  8. 4 1
      leromro-core/src/main/java/com/leromro/core/domain/PlatformFinance.java
  9. 6 2
      leromro-core/src/main/java/com/leromro/core/domain/VolunteerAccountChange.java
  10. 5 2
      leromro-core/src/main/java/com/leromro/core/domain/VolunteerInfo.java
  11. 2 0
      leromro-core/src/main/java/com/leromro/core/mapper/OrderFrozenFundsMapper.java
  12. 2 0
      leromro-core/src/main/java/com/leromro/core/mapper/VolunteerAccountMapper.java
  13. 2 1
      leromro-core/src/main/java/com/leromro/core/mapper/VolunteerInfoMapper.java
  14. 1 1
      leromro-core/src/main/java/com/leromro/core/service/IVolunteerInfoService.java
  15. 8 5
      leromro-core/src/main/java/com/leromro/core/service/impl/MainOrderServiceImpl.java
  16. 7 4
      leromro-core/src/main/java/com/leromro/core/service/impl/SecondOrdersServiceImpl.java
  17. 5 5
      leromro-core/src/main/java/com/leromro/core/service/impl/VolunteerInfoServiceImpl.java
  18. 137 0
      leromro-core/src/main/java/com/leromro/core/ttl/Monitor.java
  19. 1 1
      leromro-core/src/main/resources/mapper/core/SecondOrdersMapper.xml
  20. 39 0
      leromro-core/src/main/resources/mapper/core/VolunteerAccountMapper.xml
  21. 10 11
      leromro-core/src/main/resources/mapper/core/VolunteerInfoMapper.xml
  22. 1 1
      leromro-core/src/main/resources/mapper/core/VolunteerWorkDateMapper.xml

+ 1 - 1
leromro-common/src/main/java/com/leromro/common/constant/Constants.java

@@ -163,7 +163,7 @@ public class Constants
     /**
      * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
      */
-    public static final String[] JOB_WHITELIST_STR = { "com.leromro.quartz.task" };
+    public static final String[] JOB_WHITELIST_STR = { "com.leromro.quartz.task" , "com.leromro.core.ttl"};
 
     /**
      * 定时任务违规的字符

+ 3 - 3
leromro-core/src/main/java/com/leromro/core/controller/AddressController.java

@@ -42,7 +42,7 @@ public class AddressController extends BaseController
      * 查询受服务地址列表
      * 已测试
      */
-    @ApiOperation("查询受服务地址列表")
+    @ApiOperation(value = "查询收货地址列表",notes = "什么都不传")
    // @PreAuthorize("@ss.hasPermi('system:address:list')")
     @GetMapping("/list")
     public R<List<Address>> selectAddresslist()
@@ -57,7 +57,7 @@ public class AddressController extends BaseController
      * 未测试
      */
     @ApiOperation("获取受服务地址详细信息")
-   // @PreAuthorize("@ss.hasPermi('system:address:query')")
+    // @PreAuthorize("@ss.hasPermi('system:address:query')")
     @GetMapping(value = "/{addressId}")
     public R<Address> getAddressInfo(@PathVariable("addressId") Long addressId)
     {
@@ -69,7 +69,7 @@ public class AddressController extends BaseController
      * 已测试
      */
     @ApiOperation("新增受服务地址")
- // @PreAuthorize("@ss.hasPermi('system:address:add')")
+   // @PreAuthorize("@ss.hasPermi('system:address:add')")
     @Log(title = "受服务地址", businessType = BusinessType.INSERT)
     @PutMapping("/newAddress")
     public AjaxResult newAddress(@RequestBody Address address)

+ 18 - 4
leromro-core/src/main/java/com/leromro/core/controller/OrdersController.java

@@ -3,6 +3,7 @@ package com.leromro.core.controller;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.leromro.common.core.domain.R;
 import com.leromro.common.utils.SecurityUtils;
 import com.leromro.core.domain.MainOrders;
@@ -67,14 +68,14 @@ public class OrdersController extends BaseController {
      * 获取订单主详细信息
      */
     @ApiOperation("用户获取订单详细信息以及大订单所属小订单")
-    @GetMapping("orderInfo/{orderId}")
-    public R<OrdersInfoVO> getMainOrderInfo(@PathVariable("orderId") String orderId) {
+    @GetMapping("orderInfo/{mainOrderId}")
+    public R<OrdersInfoVO> getMainOrderInfo(@PathVariable("mainOrderId") String mainOrderId) {
         QueryWrapper<MainOrders> wrapper = new QueryWrapper<>();
         Long userId = SecurityUtils.getUserId();
-        wrapper.eq("order_id", orderId);
+        wrapper.eq("main_order_id", mainOrderId);
         MainOrders mainOrders = mainOrderService.list(wrapper).get(0);
         QueryWrapper<SecondOrder> wrapper1 = new QueryWrapper<>();
-        wrapper.eq("order_id", orderId).eq("user_id", userId);
+        wrapper.eq("main_order_id", mainOrderId).eq("user_id", userId);
         List<SecondOrder> list = secondOrderService.list(wrapper1);
         OrdersInfoVO ordersInfoVO = new OrdersInfoVO();
         ordersInfoVO.setMainOrders(mainOrders);
@@ -93,6 +94,19 @@ public class OrdersController extends BaseController {
         return AjaxResult.success();
     }
 
+    /**
+     * 用户点击完成订单
+     */
+    @ApiOperation("用户点击完成订单")
+    @PostMapping("/userFinishOrder")
+    public AjaxResult userFinish (String mainOrderID) {
+        UpdateWrapper<MainOrders> updateWrapper = new UpdateWrapper<MainOrders>().eq("main_order_id", mainOrderID).set("order_status", 8);
+        mainOrderService.update(updateWrapper);
+        return AjaxResult.success();
+    }
+
+
+
     /**
      * 修改订单主
      */

+ 7 - 5
leromro-core/src/main/java/com/leromro/core/controller/VolunteerInfoController.java

@@ -52,7 +52,7 @@ public class VolunteerInfoController {
         return AjaxResult.success();
     }
     /**
-     * 修改志愿者信息
+     * 志愿者信息回显
      * 已测试
      */
     @ApiOperation(value = "志愿者信息回显" , notes = "传入大分类,返回大分类中志愿者已有信息")
@@ -78,11 +78,13 @@ public class VolunteerInfoController {
      * 获取志愿者信息详细信息
      * 已测试
      */
-    @ApiOperation( value = "获取志愿者信息详细信息",notes = "传入志愿者id, 返回志愿者的信息")
-    @GetMapping(value = "/getDetails/{volunteerId}")
-    public R<VolunteerInfo> getInfo(@PathVariable("volunteerId") Long volunteerId)
+    @ApiOperation( value = "获取志愿者信息详细信息",notes = "传入志愿者id,以及分类的id, 返回志愿者的信息")
+    @PostMapping(value = "/getDetails")
+    public R<VolunteerInfo> getInfo(@RequestBody VolunteerInfo volunteerInfo)
     {
-        return R.ok(volunteerInfoService.selectLVolunteerInfoByVolunteerId(volunteerId));
+        Long volunteerId = volunteerInfo.getVolunteerId();
+        Long serviceCategory = volunteerInfo.getServiceCategory();
+        return R.ok(volunteerInfoService.selectLVolunteerInfoByVolunteerId(volunteerId,serviceCategory));
     }
 
   /*  @ApiOperation("用户已注册志愿者查询")

+ 0 - 8
leromro-core/src/main/java/com/leromro/core/controller/VolunteerWorkDateController.java

@@ -7,20 +7,14 @@ import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.github.xiaoymin.knife4j.annotations.ApiSort;
 import com.leromro.common.core.domain.R;
-import com.leromro.core.domain.VolunteerReservationTime;
-import com.leromro.core.domain.dto.AddReservationTimesDTO;
 import com.leromro.core.domain.vo.VolunteerReservationTimeVO;
 import com.leromro.core.facade.VolunteerWorkDateFacade;
-import com.leromro.core.service.IVolunteerReservationTimeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.leromro.common.annotation.Log;
@@ -29,8 +23,6 @@ import com.leromro.common.core.domain.AjaxResult;
 import com.leromro.common.enums.BusinessType;
 import com.leromro.core.domain.VolunteerWorkDate;
 import com.leromro.core.service.IVolunteerWorkDateService;
-import com.leromro.common.utils.poi.ExcelUtil;
-import com.leromro.common.core.page.TableDataInfo;
 
 /**
  * 志愿者排班日期Controller

+ 2 - 3
leromro-core/src/main/java/com/leromro/core/controller/volunteerOrderController.java

@@ -53,16 +53,15 @@ public class volunteerOrderController {
         secondOrderService.update(updateWrapper);
         return AjaxResult.success();
     }
-    @ApiOperation(value = "志愿者点击结束订单", notes = "传入seconderOrderId,以及图片拼接在一起的字符串 json对象参数")
+    @ApiOperation(value = "志愿者滑动,结束订单并上传图片", notes = "传入seconderOrderId,以及图片拼接在一起的字符串 json对象参数")
 /*    @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "seconderOrderId", value = "志愿者订单id", required = true),
             @ApiImplicitParam(name = "serviceLog", value = "志愿者上传图片拼接的字符串", required = true),
             @ApiImplicitParam(name = "volunteerId", value = "志愿者的id", required = true)
     })*/
-    @GetMapping("/volunteerFinishSecondOrder")
+    @PostMapping("/volunteerFinishSecondOrder")
     public AjaxResult volunteerFinishWork(@RequestBody SecondOrder secondOrder){
         return  secondOrderService.volunteerFinishWork(secondOrder);
-
     }
 
 }

+ 2 - 2
leromro-core/src/main/java/com/leromro/core/domain/MainOrders.java

@@ -52,8 +52,8 @@ public class MainOrders extends BaseEntity
 
 
     /**  0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待确认  */
-    @Excel(name = " 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待确认 ")
-    @ApiModelProperty(" 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待确认 ")
+    @Excel(name = " 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待评价 ")
+    @ApiModelProperty(" 0待支付 1已支付 2支付超时或取消 3进行中 4已完成 5申请退款中 6已退款 7部分退款 8 待评价 ")
     private Integer orderStatus;
 
     /** 服务大类别 */

+ 4 - 1
leromro-core/src/main/java/com/leromro/core/domain/PlatformFinance.java

@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import com.leromro.common.annotation.Excel;
 import com.leromro.common.core.domain.BaseEntity;
 
 /**
@@ -63,4 +62,8 @@ public class PlatformFinance extends BaseEntity
     private Long volunteerId;
 
 
+    public PlatformFinance(BigDecimal bigDecimal) {
+    }
+
+
 }

+ 6 - 2
leromro-core/src/main/java/com/leromro/core/domain/VolunteerAccountChange.java

@@ -32,15 +32,19 @@ public class VolunteerAccountChange extends BaseEntity
     @TableId(type = IdType.AUTO)
     private Long volunteerAccountChangeId;
 
+    @TableField("volunteer_id")
+    @ApiModelProperty("志愿者id")
+    private Long volunteerId;
+
     /** 变更类型 1增加0减少 */
     @TableField("change_type")
     @ApiModelProperty("变更类型 1增加0减少")
-    private Long changeType;
+    private Integer changeType;
 
     /** 来源类型 1订单收入2评分奖励 10提现支出 */
     @TableField("source_type")
     @ApiModelProperty("来源类型 1订单收入2评分奖励 10提现支出")
-    private Long sourceType;
+    private Integer sourceType;
 
     /** 变更金额 */
     @TableField("change_money")

+ 5 - 2
leromro-core/src/main/java/com/leromro/core/domain/VolunteerInfo.java

@@ -36,10 +36,10 @@ public class VolunteerInfo extends BaseEntity {
 
     @ApiModelProperty(value = "主键id")
     @TableId(value = "volunteer_id", type = IdType.AUTO)
-    private Long volunteerId;
+    private Long volunteerInfoId;
 
     @ApiModelProperty(value = "用户id")
-    private Long userId;
+    private Long volunteerId;
 
     @ApiModelProperty(value = "志愿者姓名")
     private String name;
@@ -71,6 +71,9 @@ public class VolunteerInfo extends BaseEntity {
     @ApiModelProperty(value = "性别 0女 1男")
     private Integer sex;
 
+    @ApiModelProperty(value = "年龄")
+    private Integer age;
+
     @ApiModelProperty(value = "状态 0 不接单  1 正在接单")
     private Integer status;
 

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/mapper/OrderFrozenFundsMapper.java

@@ -3,6 +3,7 @@ package com.leromro.core.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.leromro.core.domain.OrderFrozenFunds;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 订单资金冻结Mapper接口
@@ -10,6 +11,7 @@ import com.leromro.core.domain.OrderFrozenFunds;
  * @author ruoyi
  * @date 2025-04-11
  */
+@Mapper
 public interface OrderFrozenFundsMapper extends BaseMapper<OrderFrozenFunds>
 {
     /**

+ 2 - 0
leromro-core/src/main/java/com/leromro/core/mapper/VolunteerAccountMapper.java

@@ -59,4 +59,6 @@ public interface VolunteerAccountMapper extends BaseMapper<VolunteerAccount>
      * @return 结果
      */
     public int deleteVolunteerAccountByVolunteerAccountIds(Long[] volunteerAccountIds);
+
+    void updateVolunteerAccountList(List<VolunteerAccount> newVolunteerAccountList);
 }

+ 2 - 1
leromro-core/src/main/java/com/leromro/core/mapper/VolunteerInfoMapper.java

@@ -2,6 +2,7 @@ package com.leromro.core.mapper;
 
 import com.leromro.core.domain.VolunteerInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -19,5 +20,5 @@ public interface VolunteerInfoMapper extends BaseMapper<VolunteerInfo> {
 
     List<VolunteerInfo> selectVolunteerInfoSimple(VolunteerInfo volunteerInfo);
 
-    VolunteerInfo selectLVolunteerInfoByVolunteerId(Long volunteerId);
+    VolunteerInfo selectLVolunteerInfoByVolunteerId(@Param("volunteerId") Long volunteerId,@Param("serviceCategory") Long serviceCategory);
 }

+ 1 - 1
leromro-core/src/main/java/com/leromro/core/service/IVolunteerInfoService.java

@@ -21,5 +21,5 @@ public interface IVolunteerInfoService extends IService<VolunteerInfo> {
 
     List<VolunteerInfo> selectVolunteerInfoList(VolunteerInfo volunteerInfo);
 
-    VolunteerInfo selectLVolunteerInfoByVolunteerId(Long volunteerId);
+    VolunteerInfo selectLVolunteerInfoByVolunteerId(Long volunteerId,Long serviceCategory);
 }

+ 8 - 5
leromro-core/src/main/java/com/leromro/core/service/impl/MainOrderServiceImpl.java

@@ -61,7 +61,7 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
     public void createOrders(OrderRequestDTO orderRequest) {
         MainOrders orders = orderRequest.getOrders();
         List<VolunteerWorkDate> workDateList = orderRequest.getWorkDateList();
-        Long userId = SecurityUtils.getUserId();
+        Long userId = orderRequest.getOrders().getUserId();
         // 查看余额够不够  修改用户余额表
         BigDecimal totalPrice = orders.getServiceTotalPrice();
         ClientAccount clientAccount = clientAccountMapper.selectBalanceByuserID(userId);
@@ -115,11 +115,14 @@ public class MainOrderServiceImpl extends ServiceImpl<MainOrdersMapper, MainOrde
             secondOrder1.setSecondOrderId(String.valueOf(secondOrderIdL));
             secondOrderList.add(secondOrder1);
             //向平台流水中添加数据
-            platformFinance.setSecondOrderId(String.valueOf(secondOrderIdL));
-            platformFinanceList.add(platformFinance);
+            PlatformFinance platformFinance1 = new PlatformFinance();
+            BeanUtils.copyProperties(platformFinance,platformFinance1);
+            platformFinance1.setSecondOrderId(String.valueOf(secondOrderIdL));
+            platformFinanceList.add(platformFinance1);
             //向志愿者预约时间表中添加数据
-            reservationTime.setReservationDate(workDate.getWorkDate());
-            reservationTimes.add(reservationTime);
+            VolunteerReservationTime reservationTime1 = new VolunteerReservationTime();
+            reservationTime1.setReservationDate(workDate.getWorkDate());
+            reservationTimes.add(reservationTime1);
             number++;
         }
         //新增公司资金流水表N个

+ 7 - 4
leromro-core/src/main/java/com/leromro/core/service/impl/SecondOrdersServiceImpl.java

@@ -58,18 +58,21 @@ public class SecondOrdersServiceImpl extends ServiceImpl<SecondOrdersMapper, Sec
         //默认平台佣金以及志愿者到手钱数
         BigDecimal volunteerMoney = onePrice.multiply(new BigDecimal("0.70"));
         BigDecimal platformBrokerage = onePrice.subtract(volunteerMoney);
-        //计算结束冻结时间 默认开始时间+7
+        //计算结束冻结时间 默认开始时间+3
         DateTime frozenStartTime = DateTimeUtil.getNowTime1();
-        Date frozenEndTime = DateUtils.addDays(frozenStartTime, 7);
+        Date frozenEndTime = DateUtils.addDays(frozenStartTime, 3);
         OrderFrozenFunds orderFrozenFunds = OrderFrozenFunds.builder().volunteerMoney(volunteerMoney)
                 .platformBrokerage(platformBrokerage).scoreMoney(BigDecimal.valueOf(0.00)).secondOrderMoney(onePrice)
                 .status(0).secondOrderId(secondOrder.getSecondOrderId()).volunteerId(secondOrder.getVolunteerId())
                 .frozenStartTime(frozenStartTime).frozenEndTime(frozenEndTime).build();
         //插入冻结资金表
         orderFrozenFundsMapper.insert(orderFrozenFunds);
-        //更新secondOrder 表
+        //更新secondOrder 表 不可以重复完成一个订单
+        if (secondOrderInfo.getOrderStatus().equals(4)){
+            throw new RuntimeException("订单已完成,请勿重复完成");
+        }
         UpdateWrapper<SecondOrder> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.eq("second_order_id",secondOrder.getSecondOrderId()).eq("order_status",4)
+        updateWrapper.eq("second_order_id",secondOrder.getSecondOrderId()).set("order_status",2)
                 .set("service_log",secondOrder.getServiceLog());
         secondOrdersMapper.update(null,updateWrapper);
         //更新志愿者账户中的冻结资金 =  之前的余额 + 志愿者 (先按照默认的比例,把默认的钱数,放入冻结资金表中)

+ 5 - 5
leromro-core/src/main/java/com/leromro/core/service/impl/VolunteerInfoServiceImpl.java

@@ -33,11 +33,11 @@ public class VolunteerInfoServiceImpl extends ServiceImpl<VolunteerInfoMapper, V
      */
     @Override
     public void newVolunteerInfoByuserId(VolunteerInfo volunteerInfo, Long userId, Long serviceCategory) {
-        volunteerInfo.setUserId(userId);
+        volunteerInfo.setVolunteerId(userId);
         volunteerInfo.setServiceCategory(serviceCategory);
         volunteerInfo.setCreateTime(DateTimeUtil.getNowTime());
         QueryWrapper<VolunteerInfo> wrapper = new QueryWrapper<>();
-        wrapper.eq("user_id",userId).eq("service_category",serviceCategory);
+        wrapper.eq("volunteer_id",userId).eq("service_category",serviceCategory);
 
         Integer i = volunteerInfoMapper.selectCount(wrapper);
         if(i>0){
@@ -56,7 +56,7 @@ public class VolunteerInfoServiceImpl extends ServiceImpl<VolunteerInfoMapper, V
     @Override
     public VolunteerInfo selectByUserID(Long serviceCategory, Long userId) {
         QueryWrapper<VolunteerInfo> wrapper = new QueryWrapper<>();
-        wrapper.eq("user_id",userId).eq("service_category",serviceCategory);
+        wrapper.eq("volunteer_id",userId).eq("service_category",serviceCategory);
         VolunteerInfo infos = volunteerInfoMapper.selectOne(wrapper);
         return infos;
     }
@@ -77,8 +77,8 @@ public class VolunteerInfoServiceImpl extends ServiceImpl<VolunteerInfoMapper, V
      * @return
      */
     @Override
-    public VolunteerInfo selectLVolunteerInfoByVolunteerId(Long volunteerId) {
-        VolunteerInfo info = volunteerInfoMapper.selectLVolunteerInfoByVolunteerId(volunteerId);
+    public VolunteerInfo selectLVolunteerInfoByVolunteerId(Long volunteerId,Long serviceCategory) {
+        VolunteerInfo info = volunteerInfoMapper.selectLVolunteerInfoByVolunteerId(volunteerId,serviceCategory);
         return info;
     }
 }

+ 137 - 0
leromro-core/src/main/java/com/leromro/core/ttl/Monitor.java

@@ -0,0 +1,137 @@
+package com.leromro.core.ttl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.leromro.core.domain.*;
+import com.leromro.core.mapper.*;
+import com.leromro.core.utils.DateTimeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+@Component("monitor")
+public class Monitor  {
+  @Autowired
+    private  PlatformFinanceMapper platformFinanceMapper;
+    @Autowired
+    private  SecondOrdersMapper secondOrdersMapper;
+    @Autowired
+    private  OrderFrozenFundsMapper orderFrozenFundsMapper;
+    @Autowired
+    private  VolunteerAccountMapper volunteerAccountMapper;
+    @Autowired
+    private  JdbcTemplate jdbcTemplate;
+    /**
+     * 定时任务定时调用的任务
+     */
+    @Transactional
+    public void orderMonitor () {
+        System.out.println("开始查询解冻时间");
+        //查询数据库,查到需要解冻的数据的集合
+        QueryWrapper<OrderFrozenFunds> queryFrozenWrapper = new QueryWrapper<OrderFrozenFunds>().eq("status", 0).lt("frozen_end_time", DateTimeUtil.getNowTime());
+        //万物起源:查到冻结的订单,
+        List<OrderFrozenFunds> needThawMoneyList = orderFrozenFundsMapper.selectList(queryFrozenWrapper);
+        if(needThawMoneyList.isEmpty()){
+            System.out.println("没有需要解冻的订单");
+            return;
+        }
+        List<Long> orderFrozenFundsIdList = needThawMoneyList.stream().map(OrderFrozenFunds::getOrderFrozenFundsId).collect(Collectors.toList());
+        List<String> seconderOrderIdList = needThawMoneyList.stream().map(OrderFrozenFunds::getSecondOrderId).collect(Collectors.toList());
+
+        /*List<BigDecimal> volunteerMoneyList = needThawMoneyList.stream().map(OrderFrozenFunds::getVolunteerMoney).collect(Collectors.toList());
+        List<BigDecimal> platformBrokerageList = needThawMoneyList.stream().map(OrderFrozenFunds::getPlatformBrokerage).collect(Collectors.toList());
+        List<BigDecimal> scoreMoneyList = needThawMoneyList.stream().map(OrderFrozenFunds::getScoreMoney).collect(Collectors.toList());*/
+
+        // needThawMoneyList.stream().map(OrderFrozenFunds::).collect(Collectors.toList());
+        //Map<Long, OrderFrozenFunds> totalMoneyMap = needThawMoneyList.stream().collect(Collectors.toMap(OrderFrozenFunds::getVolunteerId, Function.identity()));
+
+
+        //查到旧的志愿者账户表的余额(用来存放志愿者月变更记录)
+       /* QueryWrapper<VolunteerAccount> volunteerAccountQueryWrapper = new QueryWrapper<VolunteerAccount>().in("volunteer_id", volunteerMoneyMap.keySet());
+        List<VolunteerAccount> oldVolunteerAccountList = volunteerAccountMapper.selectList(volunteerAccountQueryWrapper);*/
+        //更新表,直接解冻。
+        UpdateWrapper<OrderFrozenFunds> updateFrozenWrapper = new UpdateWrapper<OrderFrozenFunds>().in("order_frozen_funds_id", orderFrozenFundsIdList).set("status", 1);
+        orderFrozenFundsMapper.update(null,updateFrozenWrapper);
+        //志愿者订单表 2 已完成的订单 更新时间
+        UpdateWrapper<SecondOrder> updateSecondOrderWrapper = new UpdateWrapper<SecondOrder>().eq("order_status",2).in("second_order_id",seconderOrderIdList).set("score",1).setSql("remark = CASE WHEN score IS NULL OR score = '' THEN '用户未评价,系统默认一星' ELSE remark END");;
+        secondOrdersMapper.update(null,updateSecondOrderWrapper);
+        //解冻后,向平台流水表中添加数据
+            // 1.先添加志愿者变更金额
+        List<PlatformFinance> volunteerPlatformList = needThawMoneyList.stream().map(orderFrozenFunds -> new PlatformFinance(null,orderFrozenFunds.getVolunteerMoney(), 1, 2, 3, orderFrozenFunds.getSecondOrderId(), orderFrozenFunds.getVolunteerId())).collect(Collectors.toList());
+        platformFinanceMapper.insertPlatformFinanceList(volunteerPlatformList);
+            // 2.然后添加平台变更金额
+        List<PlatformFinance> platformPlatformList = needThawMoneyList.stream().map(orderFrozenFunds -> new PlatformFinance(null,orderFrozenFunds.getPlatformBrokerage(), 1, 3, 3, orderFrozenFunds.getSecondOrderId(), orderFrozenFunds.getVolunteerId())).collect(Collectors.toList());
+        platformFinanceMapper.insertPlatformFinanceList(platformPlatformList);
+            // 3.然后添加奖金 并且添加备注
+        List<PlatformFinance> sourceTypePlatformList = needThawMoneyList.stream().filter(orderFrozenFunds -> orderFrozenFunds.getScoreMoney() != null).map(orderFrozenFunds -> new PlatformFinance(null, orderFrozenFunds.getScoreMoney(), 1, 2, 3, orderFrozenFunds.getSecondOrderId(), orderFrozenFunds.getVolunteerId())).collect(Collectors.toList());
+        for (PlatformFinance platformFinance : sourceTypePlatformList) {
+            platformFinance.setRemark("奖金");
+        }
+
+        System.out.println("只剩change记录和余额变动了");
+        // ---------------------------
+        //解冻后:
+        //判断,如果志愿者有多个订单???????????
+
+        //还是获取map<userId,list<解冻数据>>
+        Map<Long, List<OrderFrozenFunds>> volunteerAccountChangeGroupByVId = needThawMoneyList.stream().collect(Collectors.groupingBy(OrderFrozenFunds::getVolunteerId));
+        //生成所有的记录对象
+        volunteerAccountChangeGroupByVId.forEach((volunteerId,orderFrozenFunds) -> {
+            //查看用户当前的余额
+            BigDecimal oldVolunteerBalance = jdbcTemplate.queryForObject("select balance from l_volunteer_account where volunteer_id = ? FOR UPDATE",
+                    BigDecimal.class, volunteerId);
+            //生成所有的记录
+            List<Object[]> volunteerAccountChanges = new ArrayList<>();
+            BigDecimal theBalance = oldVolunteerBalance;
+            for (OrderFrozenFunds orderFrozenFund : orderFrozenFunds) {
+                BigDecimal volunteerAddMoney = theBalance.add(orderFrozenFund.getVolunteerMoney());
+                volunteerAccountChanges.add(new Object[]{volunteerId,1,1,volunteerAddMoney,orderFrozenFund.getVolunteerMoney(),volunteerAddMoney.add(orderFrozenFund.getVolunteerMoney())
+                });
+                theBalance = volunteerAddMoney;
+            }
+            //批量插入记录
+            jdbcTemplate.batchUpdate("insert into l_volunteer_account_change (volunteer_id,change_type,source_type,change_money,before_balance,after_balance) values (?,?,?,?,?,?)" , volunteerAccountChanges);
+        });
+
+        //还是获取map<userId,list<解冻数据>>
+
+        //生成所有的记录对象
+        volunteerAccountChangeGroupByVId.forEach((volunteerId,orderFrozenFunds) -> {
+            //查看用户当前的余额
+            BigDecimal oldVolunteerBalance = jdbcTemplate.queryForObject("select balance from l_volunteer_account where volunteer_id = ? FOR UPDATE",
+                    BigDecimal.class, volunteerId);
+            //生成所有的记录
+            List<Object[]> volunteerAccountChanges = new ArrayList<>();
+            BigDecimal theBalance = oldVolunteerBalance;
+            for (OrderFrozenFunds orderFrozenFund : orderFrozenFunds) {
+                BigDecimal volunteerAddMoney = theBalance.add(orderFrozenFund.getScoreMoney());
+                volunteerAccountChanges.add(new Object[]{volunteerId,1,2,volunteerAddMoney,orderFrozenFund.getScoreMoney(),volunteerAddMoney.add(orderFrozenFund.getScoreMoney())
+                });
+                theBalance = volunteerAddMoney;
+            }
+            //批量插入记录
+            jdbcTemplate.batchUpdate("insert into l_volunteer_account_change (volunteer_id,change_type,source_type,change_money,before_balance,after_balance) values (?,?,?,?,?,?)" , volunteerAccountChanges);
+        });
+
+
+        //解冻后:
+        //获取冻结表中的志愿者id和志愿者总共需要解冻到账户的金额 封装成map集合 有相同的 也直接加起来。
+        Map<Long, BigDecimal> totalMoneyMap = needThawMoneyList.stream().collect(Collectors.toMap(OrderFrozenFunds::getVolunteerId, orderFrozenFunds -> orderFrozenFunds.getVolunteerMoney().add(orderFrozenFunds.getScoreMoney()),(existingValue, newValue) -> existingValue.add(newValue)));
+        //解冻后,向志愿者账户表中+钱(基本+奖金) //首先取出要修改的志愿者账户集合,算出每个账户 遍历这些集合,,可提现金额 = 旧可提现金额 + 总;累计可提现金额 = 旧可体现金额 + 总;订单中冻结金额 = 旧冻结金额 - 总
+        List<VolunteerAccount> newVolunteerAccountList = new ArrayList<>();
+        totalMoneyMap.forEach((volunteerId,totalChangMoney) -> {
+            VolunteerAccount vact = new VolunteerAccount().builder().volunteerId(volunteerId).balance(totalChangMoney).totalBalance(totalChangMoney).orderFrozenBalance(totalChangMoney).build();
+            newVolunteerAccountList.add(vact);
+        });
+        //向志愿者记录表中修改
+        volunteerAccountMapper.updateVolunteerAccountList(newVolunteerAccountList);
+
+        System.out.println("全部更新完毕");
+
+    }
+}

+ 1 - 1
leromro-core/src/main/resources/mapper/core/SecondOrdersMapper.xml

@@ -181,7 +181,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       </delete>-->
 
     <select id="selectVolunteerOrder" resultType="com.leromro.core.domain.vo.VolunteerOrdersVO">
-        select lso.second_order_id secondOrderId ,lso.order_status as orderStatus,lso.service_one_price as serviceOnePrice,la.user_id,
+        select lso.second_order_id ,lso.score ,lso.remark ,lso.second_order_id ,lso.order_status as orderStatus,lso.service_one_price as serviceOnePrice,la.user_id,
         la.address as address ,la.name as name,(select avatar from sys_user su where su.user_id = la.user_id ) as avatar
         from l_second_order lso left join l_address la on lso.address_id = la.address_id
         <where>

+ 39 - 0
leromro-core/src/main/resources/mapper/core/VolunteerAccountMapper.xml

@@ -83,6 +83,45 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where volunteer_account_id = #{volunteerAccountId}
     </update>
 
+
+<!--    <update id="updateVolunteerAccountList"
+            parameterType="java.util.List">
+        update l_volunteer_account set(balance,total_balance,order_frozen_balance,be_balance)values
+        <foreach collection="list" item="newVolunteerAccountList" separator=",">
+            #{newVolunteerAccountList.balance},
+            #{newVolunteerAccountList.totalBalance},
+            #{newVolunteerAccountList.orderFrozenBalance},
+            #{newVolunteerAccountList.beBlance}
+            where volunteer_id = #{newVolunteerAccountList.volunteerId}
+        </foreach>
+
+    </update>-->
+
+        <update id="updateVolunteerAccountList" parameterType="java.util.List">
+            update l_volunteer_account
+            set
+            balance = CASE
+            <foreach collection="list" item="item">
+                WHEN volunteer_id = #{item.volunteerId} THEN balance + #{item.balance}
+            </foreach>
+            END,
+            total_balance = CASE
+            <foreach collection="list" item="item">
+                WHEN volunteer_id = #{item.volunteerId} THEN total_balance + #{item.totalBalance}
+            </foreach>
+            END,
+            order_frozen_balance = CASE
+            <foreach collection="list" item="item">
+                WHEN volunteer_id = #{item.volunteerId} THEN order_frozen_balance - #{item.orderFrozenBalance}
+            </foreach>
+            END
+            where volunteer_id in
+            <foreach collection="list" item="item" open="(" separator="," close=")">
+                #{item.volunteerId}
+            </foreach>
+        </update>
+
+
     <delete id="deleteVolunteerAccountByVolunteerAccountId" parameterType="Long">
         delete from l_volunteer_account where volunteer_account_id = #{volunteerAccountId}
     </delete>

+ 10 - 11
leromro-core/src/main/resources/mapper/core/VolunteerInfoMapper.xml

@@ -5,8 +5,8 @@
 <mapper namespace="com.leromro.core.mapper.VolunteerInfoMapper">
 
     <resultMap type="VolunteerInfo" id="VolunteerInfoResult">
+        <result property="volunteerInfoId"    column="volunteer_info_id"    />
         <result property="volunteerId"    column="volunteer_id"    />
-        <result property="userId"    column="user_id"    />
         <result property="name"    column="name"    />
         <result property="idCard"    column="id_card"    />
         <result property="score"    column="score"    />
@@ -31,14 +31,14 @@
     </resultMap>
 
     <sql id="selectLVolunteerInfoVo">
-        select volunteer_id, user_id, name, id_card, score, service_category, service_type, service_subject, skill_describe, phonenumber, sex, status, id_card_picture, certification_picture, volunteer_picture, worked_company, level, is_on_job, city, address, create_time, update_time, remark from l_volunteer_info
+        select volunteer_id, name, id_card, score, service_category, service_type, service_subject, skill_describe, phonenumber, sex, status, id_card_picture, certification_picture, volunteer_picture, worked_company, level, is_on_job, city, address, create_time, update_time, remark from l_volunteer_info
     </sql>
 
 
     <insert id="newVolunteerByUserId">
         INSERT INTO l_volunteer_info
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="userId != null">user_id,</if>
+            <if test="volunteerId != null">volunteer_id,</if>
             <if test="name != null">name,</if>
             <if test="idCard != null">id_card,</if>
             <if test="idCardPicture != null">id_card_picture,</if>
@@ -48,6 +48,7 @@
             <if test="skillDescribe != null">skill_describe,</if>
             <if test="phonenumber != null">phonenumber,</if>
             <if test="sex != null">sex,</if>
+            <if test="age != null">age,</if>
             <if test="status != null">status,</if>
             <if test="certificationPicture != null">certification_picture,</if>
             <if test="volunteerPicture != null">volunteer_picture,</if>
@@ -64,7 +65,7 @@
         </trim>
         VALUES
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="userId != null">#{userId},</if>
+            <if test="volunteerId != null">#{volunteerId},</if>
             <if test="name != null">#{name},</if>
             <if test="idCard != null">#{idCard},</if>
             <if test="idCardPicture != null">#{idCardPicture},</if>
@@ -74,6 +75,7 @@
             <if test="skillDescribe != null">#{skillDescribe},</if>
             <if test="phonenumber != null">#{phonenumber},</if>
             <if test="sex != null">#{sex},</if>
+            <if test="age != null">#{age},</if>
             <if test="status != null">#{status},</if>
             <if test="certificationPicture != null">#{certificationPicture},</if>
             <if test="volunteerPicture != null">#{volunteerPicture},</if>
@@ -92,7 +94,7 @@
 
     <select id="selectVolunteerInfoSimple" resultType="com.leromro.core.domain.VolunteerInfo"
             parameterType="com.leromro.core.domain.VolunteerInfo">
-        select volunteer_id, skill_describe ,service_category,name,volunteer_picture,score from l_volunteer_info lvi left join sys_user su on lvi.user_id = su.user_id
+        select volunteer_id, skill_describe,age ,service_category,name,volunteer_picture,score from l_volunteer_info lvi left join sys_user su on lvi.volunteer_id = su.user_id
         <where>
             <if test="name != null  and name != ''"> and lvi.name like concat('%', #{name}, '%')</if>
             <if test="score != null "> and lvi.score = #{score}</if>
@@ -105,12 +107,9 @@
             <if test="address != null  and address != ''"> and lvi.address = #{address}</if>
         </where>
     </select>
-
-
-    <select id="selectLVolunteerInfoByVolunteerId" resultType="com.leromro.core.domain.VolunteerInfo"
-            parameterType="java.lang.Long">
-        select name , service_category ,service_subject, phonenumber,address ,skill_describe ,certification_picture ,volunteer_id ,score from l_volunteer_info
-        where volunteer_id = #{volunteerId}
+    <select id="selectLVolunteerInfoByVolunteerId" resultType="com.leromro.core.domain.VolunteerInfo">
+        select name , service_category ,service_subject, phonenumber,address ,skill_describe , age ,certification_picture ,volunteer_id ,score from l_volunteer_info
+        where volunteer_id = #{volunteerId} and service_category = #{serviceCategory}
     </select>
 
 

+ 1 - 1
leromro-core/src/main/resources/mapper/core/VolunteerWorkDateMapper.xml

@@ -93,4 +93,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{volunteerWorkDateId}
         </foreach>
     </delete>
-</mapper>
+</mapper>