From 49f1c504605a99256aae44f6e76410bb0a7ad00d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com> Date: Mon, 22 Jul 2024 10:19:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=97=E9=A4=90=E6=8E=92=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E6=9A=82=E6=9C=AA=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/entity/SmUser.java | 15 --- .../utils/collection/CollectionUtils.java | 112 ++++++++---------- .../src/main/resources/vm/vue/index.vue.vm | 47 ++++++-- .../java/com/ruoyi/ss/suit/domain/Suit.java | 3 + .../com/ruoyi/ss/suit/mapper/SuitMapper.java | 5 + .../com/ruoyi/ss/suit/mapper/SuitMapper.xml | 29 ++++- .../ruoyi/ss/suit/service/SuitService.java | 5 + .../ss/suit/service/impl/SuitServiceImpl.java | 8 ++ .../com/ruoyi/ss/user/mapper/SmUserMapper.xml | 38 ------ .../user/service/impl/SmUserServiceImpl.java | 18 +-- .../web/controller/app/AppSuitController.java | 12 ++ .../web/controller/ss/SuitController.java | 2 + 12 files changed, 152 insertions(+), 142 deletions(-) diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java index 379ca582..2ff26683 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java @@ -114,21 +114,6 @@ public class SmUser extends BaseEntity @ApiModelProperty("最后登录时间") private Date loginDate; - /** 微信 */ - @Excel(name = "微信") - @ApiModelProperty("微信") - private String wechat; - - /** 身份证号 */ - @ApiModelProperty("身份证号") - @Sensitive(desensitizedType = DesensitizedType.ID_CARD) - private String identityCard; - - /** 用户地址 */ - @Excel(name = "用户地址") - @ApiModelProperty("用户地址") - private String address ; - @ApiModelProperty("微信openId") private String wxOpenId; diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/collection/CollectionUtils.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/collection/CollectionUtils.java index 6e41c47c..fb0b3b20 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/collection/CollectionUtils.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/collection/CollectionUtils.java @@ -1,8 +1,9 @@ package com.ruoyi.common.utils.collection; -import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -31,71 +32,62 @@ public class CollectionUtils extends org.springframework.util.CollectionUtils { return !isEmptyElement(list); } - /** - * 填充列表中的元素 - * @param oldList 旧列表 - * @param startDate 起始日期 - * @param endDate 结束日期 - * @param clazz 填充元素的类 - */ - public static List fillElement(List oldList, Date startDate, Date endDate,Class clazz ) throws InstantiationException, IllegalAccessException { - List newList = new ArrayList<>(); - while (startDate.compareTo(endDate) <= 0) { - Date finalI = startDate; - FillAble fillable = oldList.stream().filter(item -> DateUtils.getYYYY_MM_DD(item.fillDate()).equals(DateUtils.getYYYY_MM_DD(finalI))).findFirst().orElse(null); - if (fillable == null) { - fillable = clazz.newInstance().fillElement(finalI); - } - newList.add(fillable); - startDate = DateUtils.addDays(startDate,1); - } - return newList; + public static boolean isNotEmpty(List list) { + return !isEmpty(list); } - - // TODO 未经验证 /** - * 补全列表中的日期数据,对于缺失的日期使用提供的工厂方法生成对象。 - * - * @param dataList 原始数据列表,元素需有getDateMethod返回Date类型属性的方法 - * @param dateGetter 获取元素日期属性的方法引用 - * @param customFactory 当日期缺失时,用于生成对应元素的对象工厂方法 - * @param 数据列表中元素的类型 - * @return 完整日期序列下的数据列表,缺失的日期已由customFactory填充 + * 判断分隔字符串中是否存在目标元素 + * @param str 分隔字符串 + * @param split 分隔符 + * @param target 目标元素 + * @param parseMapper 类型转换方法 */ - public static List completeMissingDates(List dataList, - Function dateGetter, - Function customFactory) { - if (dataList == null || dataList.isEmpty()) { - return Collections.emptyList(); + public static boolean splitContains(String str, String split, T target, Function parseMapper) { + if (!StringUtils.hasText(str)) { + return false; } - - List dates = dataList.stream() - .map(dateGetter) - .sorted() - .collect(Collectors.toList()); - - Date startDate = dates.get(0); - Date endDate = dates.get(dates.size() - 1); - - List fullDates = new ArrayList<>(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(startDate); - - while (!calendar.getTime().after(endDate)) { - fullDates.add(calendar.getTime()); - calendar.add(Calendar.DATE, 1); - } - - Map dateToObjectMap = dataList.stream() - .collect(Collectors.toMap(dateGetter, Function.identity())); - - return fullDates.stream() - .map(date -> dateToObjectMap.getOrDefault(date, customFactory.apply(date))) - .collect(Collectors.toList()); + return Arrays.stream(str.split(split)).map(parseMapper).collect(Collectors.toList()).contains(target); } - public static boolean isNotEmpty(List deviceList) { - return !isEmpty(deviceList); + /** + * 集合映射,去除空值、重复值 + */ + public static List map(List list, Function keyMapper) { + return list.stream().map(keyMapper).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + } + + /** + * 累加 BigDecimal + */ + public static BigDecimal sumBigDecimal(List list, Function valueMapper) { + if (CollectionUtils.isEmptyElement(list)) { + return BigDecimal.ZERO; + } + return list.stream().filter(Objects::nonNull) + .map(valueMapper) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + + /** + * 累加 Integer + */ + public static Integer sumInteger(List list, Function valueMapper) { + if (CollectionUtils.isEmptyElement(list)) { + return 0; + } + return list.stream().filter(Objects::nonNull) + .map(valueMapper) + .filter(Objects::nonNull) + .reduce(Integer::sum) + .orElse(0); + } + + public static void addNotNull(List list, T obj) { + if (obj == null) { + return; + } + list.add(obj); } } diff --git a/smart-switch-ruoyi/smart-switch-generator/src/main/resources/vm/vue/index.vue.vm b/smart-switch-ruoyi/smart-switch-generator/src/main/resources/vm/vue/index.vue.vm index 6296014b..e7a1d1f9 100644 --- a/smart-switch-ruoyi/smart-switch-generator/src/main/resources/vm/vue/index.vue.vm +++ b/smart-switch-ruoyi/smart-switch-generator/src/main/resources/vm/vue/index.vue.vm @@ -110,10 +110,10 @@ v-hasPermi="['${moduleName}:${businessName}:export']" >导出 - + - + #foreach($column in $columns) #set($javaField=$column.javaField) @@ -124,13 +124,9 @@ #set($comment=$column.columnComment) #end #if($column.pk) - + #elseif($column.list && $column.htmlType == "datetime") - - - + #elseif($column.list && $column.htmlType == "imageUpload") #elseif($column.list && "" != $column.dictType) - + #elseif($column.list && "" != $javaField) - + #end #end @@ -170,7 +166,7 @@ - + import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; +// 默认排序字段 +const defaultSort = { + prop: "createTime", + order: "descending" +} + export default { name: "${BusinessName}", #if(${dicts} != '') @@ -362,6 +364,15 @@ export default { #end data() { return { + +#foreach($column in $columns) + // 字段列表 + columns: [ + {key: '${column.javaField}', visible: true, label: '${column.columnComment}'}, + ], +#end + // 排序方式 + orderSorts: ['ascending', 'descending', null], // 遮罩层 loading: true, // 选中数组 @@ -395,10 +406,13 @@ export default { daterange${AttrName}: [], #end #end + defaultSort, // 查询参数 queryParams: { pageNum: 1, pageSize: 10, + orderByColumn: defaultSort.prop, + isAsc: defaultSort.order, #foreach ($column in $columns) #if($column.query) $column.javaField: null#if($foreach.count != $columns.size()),#end @@ -429,6 +443,17 @@ export default { this.getList(); }, methods: { + /** 当排序按钮被点击时触发 **/ + onSortChange(column) { + if (column.order == null) { + this.queryParams.orderByColumn = defaultSort.prop; + this.queryParams.isAsc = defaultSort.order; + } else { + this.queryParams.orderByColumn = column.prop; + this.queryParams.isAsc = column.order; + } + this.getList(); + }, /** 查询${functionName}列表 */ getList() { this.loading = true; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java index ea3f8ffd..7b96a8a4 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java @@ -80,4 +80,7 @@ public class Suit extends BaseEntity @ApiModelProperty("用户ID") private Long userId; + + @ApiModelProperty("排序顺序,越小越靠前") + private Integer sort; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.java index 064413b0..b740f07e 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.java @@ -100,4 +100,9 @@ public interface SuitMapper * 批量新增 */ int batchInsert(@Param("list") List list); + + /** + * 批量修改排序 + */ + int batchUpdateSort(@Param("list") List list); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.xml index 054ee322..aeb4e1f3 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/mapper/SuitMapper.xml @@ -22,6 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ss.source_id, ss.time_unit, ss.user_id, + ss.sort, sd.device_name as device_name, su.user_name as user_name, store.name as store_name @@ -107,6 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" source_id, time_unit, user_id, + sort, #{deviceId}, @@ -122,6 +124,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{sourceId}, #{timeUnit}, #{userId}, + #{sort}, @@ -139,7 +142,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" deleted, source_id, time_unit, - user_id + user_id, + sort ) values @@ -170,6 +174,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" default, #{i.userId}, default, + #{i.sort}, + default, @@ -194,6 +200,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" source_id = #{sourceId}, time_unit = #{timeUnit}, user_id = #{userId}, + sort = #{sort}, @@ -225,6 +232,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where suit_id = #{suitId} + + update sm_suit + + + + + WHEN #{item.suitId} THEN #{item.sort} + + + WHEN #{item.suitId} THEN `sort` + + + + + where suit_id in + + #{i} + + + delete from sm_suit where suit_id = #{suitId} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/SuitService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/SuitService.java index 5129137d..a19af798 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/SuitService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/SuitService.java @@ -119,4 +119,9 @@ public interface SuitService * 批量插入 */ int batchInsert(List list); + + /** + * 设置排序 + */ + int setSort(List list); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitServiceImpl.java index 76a437ef..e75ccc2b 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitServiceImpl.java @@ -87,6 +87,14 @@ public class SuitServiceImpl implements SuitService return suitMapper.batchInsert(list); } + @Override + public int setSort(List list) { + if (CollectionUtils.isEmptyElement(list)) { + return 0; + } + return suitMapper.batchUpdateSort(list); + } + /** * 插入前操作 */ diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/user/mapper/SmUserMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/user/mapper/SmUserMapper.xml index bc1e22b0..02c3ec95 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/user/mapper/SmUserMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/user/mapper/SmUserMapper.xml @@ -5,37 +5,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -60,9 +33,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" su.update_by, su.update_time, su.remark, - su.wechat, - su.address, - su.identity_card, su.wx_open_id, su.delete_time, su.is_mch, @@ -167,9 +137,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by, update_time, remark, - wechat, - identity_card, - address, wx_open_id, delete_time, is_mch, @@ -196,9 +163,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{updateBy}, #{updateTime}, #{remark}, - #{wechat}, - #{identityCard}, - #{address}, #{wxOpenId}, #{deleteTime}, #{isMch}, @@ -235,8 +199,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, update_time = #{updateTime}, remark = #{remark}, - identity_card = #{identityCard}, - address = #{address}, wx_open_id = #{wxOpenId}, delete_time = #{deleteTime}, is_mch = #{isMch}, diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/user/service/impl/SmUserServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/user/service/impl/SmUserServiceImpl.java index 5c539fb3..05401fa7 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/user/service/impl/SmUserServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/user/service/impl/SmUserServiceImpl.java @@ -57,8 +57,7 @@ public class SmUserServiceImpl implements ISmUserService * @return 普通用户信息 */ @Override - public SmUserVo selectSmUserByUserId(Long userId) - { + public SmUserVo selectSmUserByUserId(Long userId) { return smUserMapper.selectSmUserByUserId(userId); } @@ -86,7 +85,6 @@ public class SmUserServiceImpl implements ISmUserService return; } list.forEach(item -> { - item.setIdentityCard(null); item.setPassword(null); item.setPayPassword(null); }); @@ -329,20 +327,6 @@ public class SmUserServiceImpl implements ISmUserService return smUserMapper.selectSmUserByWxOpenId(wxOpenId); } - // 根据身份证号查询用户信息 - private SmUserVo selectUserByIdCard(String idCard) { - if (idCard == null) { - return null; - } - SmUserQuery dto = new SmUserQuery(); - dto.setIdentityCard(idCard); - List list = smUserMapper.selectSmUserList(dto); - if (CollectionUtils.isEmpty(list)) { - return null; - } - return list.get(0); - } - /** * 修改普通用户信息 * diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppSuitController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppSuitController.java index 6b355e06..0a343364 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppSuitController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppSuitController.java @@ -7,7 +7,9 @@ import com.ruoyi.common.core.domain.JsonViewProfile; import com.ruoyi.common.core.domain.ValidGroup; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.common.utils.collection.CollectionUtils; import com.ruoyi.ss.device.service.DeviceValidator; +import com.ruoyi.ss.suit.domain.Suit; import com.ruoyi.ss.suit.domain.SuitBO; import com.ruoyi.ss.suit.domain.SuitQuery; import com.ruoyi.ss.suit.domain.SuitVo; @@ -109,4 +111,14 @@ public class AppSuitController extends BaseController { return toAjax(suitService.logicDelByDeviceId(deviceId)); } + + @ApiOperation("套餐排序") + @PutMapping("/sort") + public AjaxResult setSort(@RequestBody List list) { + if (!suitValidator.isBelong(CollectionUtils.map(list, Suit::getSuitId), getUserId())) { + return error("不允许操作不属于自己的套餐"); + } + return toAjax(suitService.setSort(list)); + } + } diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SuitController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SuitController.java index 99999b1a..cc04948b 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SuitController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SuitController.java @@ -8,10 +8,12 @@ import com.ruoyi.common.core.domain.ValidGroup; import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.ss.device.domain.vo.DeviceVO; import com.ruoyi.ss.device.service.DeviceService; +import com.ruoyi.ss.suit.domain.Suit; import com.ruoyi.ss.suit.domain.SuitBO; import com.ruoyi.ss.suit.domain.SuitQuery; import com.ruoyi.ss.suit.domain.SuitVo; import com.ruoyi.ss.suit.service.SuitValidator; +import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated;