Ver Fonte

```
refactor(service): 优化AppCoursesVerificationRecordServiceImpl和相关服务

- 在AppCoursesVerificationRecordServiceImpl中,简化了导入语句,并添加了权限检查逻辑。
- 修改了application.yml文件,将活动配置从dev改为prod。
- 在AppOrderMapper.xml中,增加了product_ids字段的查询。
- 在AppSiteServiceImpl中,新增了listCompare方法用于比较两个列表的差异,并在editSite方法中使用该方法处理运动类目的增删改。- 在OrderServiceImpl中,调整了订单总价计算逻辑,并更新了支付金额测试值。同时,在设置超时订单时间时,根据订单类型处理退款时间。
- 在PageOrdersVO中,新增了productIds和earlyRefundTime字段。这些改动旨在提高代码的可读性和维护性,并确保系统的稳定运行。
```

wzq há 5 dias atrás
pai
commit
d9c9daaf70

+ 14 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java

@@ -667,7 +667,10 @@ public class OrderServiceImpl implements IOrderService {
                     //计算订单总价
                     totalPrice = totalPrice.add(sumPrice);
 
+                    List<String> collect = list.stream().map(e -> e.split("\\|")[0]).collect(Collectors.toList());
+                    String ids = String.join(",", collect);
                     appOrder
+                            .setProductIds(ids)
                             .setType(CommonConstant.ORDER_TYPE_0)
                             .setOriginalPrice(sumPrice)
                             .setCreateTime(new Date())
@@ -1191,8 +1194,8 @@ public class OrderServiceImpl implements IOrderService {
         //订单金额信息
         JSONObject amount_json = new JSONObject();
         //支付金额 单位:分
-        amount_json.put("total", Integer.parseInt(amount_fee(appOrder.getPrice())));
-//        amount_json.put("total", Integer.parseInt(amount_fee(new BigDecimal("0.01"))));//测试0.01元
+//        amount_json.put("total", Integer.parseInt(amount_fee(appOrder.getPrice())));
+        amount_json.put("total", Integer.parseInt(amount_fee(new BigDecimal("0.01"))));//测试0.01元
         amount_json.put("currency", "CNY");//固定传:CNY,代表人民币
         params.put("amount", amount_json);
 
@@ -1705,6 +1708,15 @@ public class OrderServiceImpl implements IOrderService {
             //设置超时订单时间
             record.setEpxTime(newTime);
 
+            if (record.getOrderType() == 1) {
+                String appSiteRulesId = record.getProductIds().split(",")[0];
+                AppSitePriceRules appSitePriceRules = appSitePriceRulesMapper.selectById(appSiteRulesId);
+                if (ObjectUtil.isNotEmpty(appSitePriceRules)) {
+                    AppSitePlace appSitePlace = appSitePlaceMapper.selectById(appSitePriceRules.getSitePlaceId());
+                    record.setEarlyRefundTime(appSitePlace.getEarlyRefundTime());
+                }
+            }
+
             List<AppOrderProInfo> proInfoList = appOrderProInfoMapper.selectList(Wrappers.<AppOrderProInfo>lambdaQuery()
                     .eq(AppOrderProInfo::getOrderId, record.getOrderId())
             );

+ 6 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PageOrdersVO.java

@@ -26,6 +26,9 @@ public class PageOrdersVO implements Serializable {
     @Schema(description = "部门编号")
     private String orderCode;
 
+    @Schema(description = "商品ID")
+    private String productIds;
+
     @Schema(description = "订单状态")
     private Integer orderStatus;
 
@@ -44,6 +47,9 @@ public class PageOrdersVO implements Serializable {
     @Schema(description = "数量")
     private BigDecimal amount;
 
+    @Schema(description = "分钟可退")
+    private Integer earlyRefundTime;
+
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")

+ 1 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppOrderMapper.xml

@@ -102,6 +102,7 @@
         SELECT
             o.id AS orderId,
             o.order_code,
+        o.product_ids,
             o.order_status,
             o.order_type,
             o.original_price,

+ 21 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCoursesVerificationRecordServiceImpl.java

@@ -11,17 +11,12 @@ import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.system.app.entity.AppCoursesVerificationRecord;
-import org.jeecg.modules.system.app.entity.AppOrder;
-import org.jeecg.modules.system.app.entity.AppOrderProInfo;
-import org.jeecg.modules.system.app.entity.FamilyMembers;
+import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.form.CoursesVerificationRecordForm;
 import org.jeecg.modules.system.app.form.VerifyForm;
-import org.jeecg.modules.system.app.mapper.AppCoursesVerificationRecordMapper;
-import org.jeecg.modules.system.app.mapper.AppOrderMapper;
-import org.jeecg.modules.system.app.mapper.AppOrderProInfoMapper;
-import org.jeecg.modules.system.app.mapper.FamilyMembersMapper;
+import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.app.service.IAppCoursesVerificationRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -44,14 +39,32 @@ public class AppCoursesVerificationRecordServiceImpl extends ServiceImpl<AppCour
     @Resource
     private AppOrderMapper appOrderMapper;
 
+    @Resource
+    private AppCoursesPriceRulesMapper appCoursesPriceRulesMapper;
+
     @Resource
     private AppOrderProInfoMapper appOrderProInfoMapper;
+    @Autowired
+    private AppCoursesMapper appCoursesMapper;
 
     @Override
     public Boolean courseUploadImage(VerifyForm verifyForm) {
 
         //获取登录用户信息
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        AppCoursesPriceRules appCoursesPriceRules = appCoursesPriceRulesMapper.selectById(verifyForm.getCoursePriceRulesId());
+        AppCourses appCourses = appCoursesMapper.selectById(appCoursesPriceRules.getCoursesId());
+        //如果是教练
+        String roleCode = sysUser.getRoleCode();
+        if (!roleCode.contains("instructor")) {
+            if (!Objects.equals(appCourses.getOrgCode(), sysUser.getOrgCode())) {
+                throw new JeecgBootException("当前用户没有权限操作此课程");
+            }
+        } else {
+            if (!Objects.equals(appCourses.getUserId(), sysUser.getId())) {
+                throw new JeecgBootException("当前用户没有权限操作此课程");
+            }
+        }
 
         for (CoursesVerificationRecordForm coursesVerificationRecordForm : verifyForm.getFormList()) {
             List<AppCoursesVerificationRecord> verificationRecordList = baseMapper.selectList(Wrappers.<AppCoursesVerificationRecord>lambdaQuery()

+ 37 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSiteServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -23,6 +24,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static org.jeecg.common.constant.CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
 
@@ -67,14 +70,44 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
         return Boolean.TRUE;
     }
 
+    //比较两个list
+    //取出存在menuOneList中,但不存在resourceList中的数据,差异数据放入differentList
+    private List<String> listCompare(List<String> menuOneList, List<String> resourceList) {
+        Map<String, Integer> map = new HashMap<String, Integer>(resourceList.size());
+        List<String> differentList = new ArrayList<>();
+        for (String resource : resourceList) {
+            map.put(resource, 1);
+        }
+        for (String resource1 : menuOneList) {
+            if (map.get(resource1) == null) {
+                differentList.add(resource1);
+            }
+        }
+        return differentList;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean editSite(AppSiteDTO siteCuDTO) {
         String id = siteCuDTO.getId();
-        AppSite oldSite = baseMapper.selectById(id);
-        //比较运动类目,做新增删除修改
-        if (!oldSite.getCategoryId().equals(siteCuDTO.getCategoryId())){
-
+        if (StrUtil.isNotBlank(id)) {
+            AppSite oldSite = baseMapper.selectById(id);
+            //比较运动类目,做新增删除修改
+            if (!oldSite.getCategoryId().equals(siteCuDTO.getCategoryId())) {
+                List<String> oldList = Arrays.stream(oldSite.getCategoryId().split(",")).collect(Collectors.toList());
+                List<String> newList = Arrays.stream(siteCuDTO.getCategoryId().split(",")).collect(Collectors.toList());
+                List<String> diffList = listCompare(oldList, newList);
+                if (ObjectUtils.isNotEmpty(diffList)) {
+//                    //删除
+//                    priceRulesMapper.delete(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getSiteId, id).in(AppSitePriceRules::getCategoryId, diffList));
+//                    //新增
+//                    for (String categoryId : newList) {
+//                        AppSitePriceRules priceRules = new AppSitePriceRules();
+//                        priceRules.setSiteId(id);
+//                        priceRules.setCategoryId(categoryId);
+//                    }
+                }
+            }
         }
         AppSite site = new AppSite();
         BeanUtils.copyProperties(siteCuDTO, site);

+ 1 - 1
national-motion-module-system/national-motion-system-start/src/main/resources/application.yml

@@ -2,4 +2,4 @@ spring:
   application:
     name: jeecg-system
   profiles:
-    active: dev
+    active: prod