diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index c3689d6..af4519a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -10,12 +10,12 @@ import com.ruoyi.common.utils.sign.RsaUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.system.service.ISysMenuService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.List; import java.util.Set; @@ -26,13 +26,14 @@ import java.util.Set; */ @RestController public class SysLoginController { - @Autowired + + @Resource private SysLoginService loginService; - @Autowired + @Resource private ISysMenuService menuService; - @Autowired + @Resource private SysPermissionService permissionService; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/DemoController.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/DemoController.java index 23bc4d5..5acaf01 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/DemoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/DemoController.java @@ -41,4 +41,41 @@ public class DemoController extends BaseController { String jsonStr = JSONUtil.toJsonStr(records); return success(PushDataUtil.pushData(jsonStr)); } + + /** + * 同步一次性活动数据 + * + * @return 响应类 + */ + @PostMapping("/serviceLong") + @ApiOperation(value = "同步一次性活动数据") + public AjaxResult serviceLong() { + bDistributionRecordsService.findList(); + return success(); + } + + /** + * 同步志愿者数据 + * + * @return 响应类 + */ + @PostMapping("/volunteer") + @ApiOperation(value = "同步志愿者数据") + public AjaxResult volunteer() { + bDistributionRecordsService.volunteer(); + return success(); + } + + + /** + * 同步字典 + * + * @return 响应类 + */ + @PostMapping("/dict") + @ApiOperation(value = "只能调用一次同步字典") + public AjaxResult dict() { + bDistributionRecordsService.dict(); + return success(); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/PointsRedemptionController.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/PointsRedemptionController.java index fd9b2d3..df8e022 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/PointsRedemptionController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/controller/PointsRedemptionController.java @@ -59,8 +59,7 @@ public class PointsRedemptionController extends BaseController { @ApiOperation(value = "查询用户所有积分") @GetMapping("/findIntegral") public AjaxResult findIntegral() { - Integer integral = pointsRedemptionService.findIntegral(); - return success(integral); + return success(pointsRedemptionService.findIntegral()); } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/BActivityPoints.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/BActivityPoints.java index 742a835..332ac99 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/BActivityPoints.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/BActivityPoints.java @@ -46,7 +46,7 @@ public class BActivityPoints extends BaseEntity { */ @Excel(name = "积分") @ApiModelProperty(value = "积分") - private Long points; + private Double points; /** * 活动名称 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/DictDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/DictDTO.java new file mode 100644 index 0000000..9056e3f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/DictDTO.java @@ -0,0 +1,36 @@ +package com.ruoyi.zhiyuanzhe.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 远程接口字典响应类 + * + * @author wu + * @since 2023/11/7 16:07 + */ +@Data +public class DictDTO implements Serializable { + private static final long serialVersionUID = -2008623319348955970L; + + /** + * 字典父类 CODE + */ + private String parentCode; + + /** + * 字典 CODE + */ + private String code; + + /** + * 字典名称 + */ + private String name; + + /** + * 排序 字典 + */ + private int sequence; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ResDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ResDTO.java new file mode 100644 index 0000000..1f14ddf --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ResDTO.java @@ -0,0 +1,38 @@ +package com.ruoyi.zhiyuanzhe.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 调用接口响应类 + * + * @author wu + * @since 2023/11/7 15:34 + */ +@Data +public class ResDTO implements Serializable { + private static final long serialVersionUID = -3135596182726773591L; + + /** + * 响应信息 + */ + private String msg; + + + /** + * 响应数据 + */ + private String obj; + + /** + * 响应代码 + */ + private int code; + + /** + * 是否成功响应 + */ + private Boolean success; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ServiceLongDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ServiceLongDTO.java new file mode 100644 index 0000000..914f143 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/ServiceLongDTO.java @@ -0,0 +1,56 @@ +package com.ruoyi.zhiyuanzhe.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 调用活动积分接口响应类 + * + * @author wu + * @since 2023/11/8 16:51 + */ +@Data +public class ServiceLongDTO implements Serializable { + + private static final long serialVersionUID = -6490812930752335900L; + /** + * id + */ + private String id; + + /** + * 活动名称 + */ + private String activityName; + + /** + * 志愿者姓名 + */ + private String volunteerName; + + /** + * 手机号 + */ + private String volunteerPhone; + + /** + * 开始时间 + */ + private Long startTime; + + /** + * 签到时间 + */ + private Long signTime; + + /** + * 结束时间 + */ + private Long endTime; + + /** + * 服务时长 + */ + private Double serviceLong; +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/VolunteerDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/VolunteerDTO.java new file mode 100644 index 0000000..c3e09d4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/dto/VolunteerDTO.java @@ -0,0 +1,94 @@ +package com.ruoyi.zhiyuanzhe.domain.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 远程接受志愿者响应类 + * + * @author wu + * @since 2023/11/9 9:49 + */ +@Data +public class VolunteerDTO implements Serializable { + private static final long serialVersionUID = 6080890543778178647L; + + + /** + * 志愿者姓名 + */ + private String name; + + + /** + * 服务时长 + */ + private Double serviceLong; + + /** + * 证件类型 + */ + private String certificateType; + + /** + * 证件类型Text + */ + private String certificateTypeText; + + /** + * 身份证号 + */ + private String certificateId; + + /** + * 电话 + */ + private String phone; + + /** + * 国家 + */ + private String country; + + /** + * 国家Text + */ + private String countryText; + + /** + * 学校 + */ + private String school; + + /** + * 教育程度 + */ + private String education; + + /** + * 教育程度Text + */ + private String educationText; + + /** + * 行业类别 + */ + private String industryCate; + + /** + * 行业类别Text + */ + private String industryCateText; + + /** + * 专业技能 + */ + private String skill; + + /** + * 专业技能Text + */ + private String skillText; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/response/BActivityPointsPageresponse.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/response/BActivityPointsPageresponse.java index e021e85..69837c6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/response/BActivityPointsPageresponse.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/domain/response/BActivityPointsPageresponse.java @@ -50,7 +50,7 @@ public class BActivityPointsPageresponse { * 积分 */ @ApiModelProperty("积分") - private String points; + private Double points; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/job/DataJob.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/job/DataJob.java new file mode 100644 index 0000000..98e5a07 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/job/DataJob.java @@ -0,0 +1,10 @@ +package com.ruoyi.zhiyuanzhe.job; + +/** + * 定时任务同步数据 + * + * @author wu + * @since 2023/11/7 13:09 + */ +public class DataJob { +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BActivityPointsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BActivityPointsMapper.java index 7f36ef9..2c523b9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BActivityPointsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BActivityPointsMapper.java @@ -67,5 +67,17 @@ public interface BActivityPointsMapper { * @param userId 用户id * @return 积分 */ - Integer findPointsByUserId(@Param("userId") Long userId); + Double findPointsByUserId(@Param("userId") Long userId); + + /** + * 清空数据 + */ + void delAll(); + + /** + * 批量新增一次性活动 + * + * @param list 一次性活动 + */ + void addAll(@Param("list") List list); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BDistributionRecordsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BDistributionRecordsMapper.java index 9ae55f4..9eb80cf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BDistributionRecordsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BDistributionRecordsMapper.java @@ -85,5 +85,5 @@ public interface BDistributionRecordsMapper { * @param userId 用户id * @return 已使用的积分 */ - Integer findPointsByUserId(@Param("userId") Long userId); + Double findPointsByUserId(@Param("userId") Long userId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BPersonTagsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BPersonTagsMapper.java index c030c06..75d3828 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BPersonTagsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/mapper/BPersonTagsMapper.java @@ -70,4 +70,16 @@ public interface BPersonTagsMapper { * @return 用户信息以及匹配度 */ List findByTags(@Param("req") BActivity bActivity); + + /** + * 批量新增用户标签信息 + * + * @param list 用户标签信息集合 + */ + void addAll(@Param("list") List list); + + /** + * 删除所有导入的标签 + */ + void delByRemark(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBActivityPointsService.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBActivityPointsService.java index da82fc9..83f9850 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBActivityPointsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBActivityPointsService.java @@ -75,5 +75,17 @@ public interface IBActivityPointsService { * @param userId 用户id * @return 积分 */ - Integer findPointsByUserId(Long userId); + Double findPointsByUserId(Long userId); + + /** + * 清空表 + */ + void delAll(); + + /** + * 批量新增一次性活动 + * + * @param list 一次性活动 + */ + void addAll(List list); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBDistributionRecordsService.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBDistributionRecordsService.java index 2260c70..4fe2b75 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBDistributionRecordsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBDistributionRecordsService.java @@ -84,7 +84,7 @@ public interface IBDistributionRecordsService { * @param userId 用户id * @return 已使用的积分 */ - Integer findPointsByUserId(Long userId); + Double findPointsByUserId(Long userId); /** * 发放个性化证书 @@ -92,4 +92,19 @@ public interface IBDistributionRecordsService { * @param req 个性化证书信息 */ void issue(BActivityPointsRequest req); + + /** + * 同步一次性活动数据 + */ + void findList(); + + /** + * 同步字典 + */ + void dict(); + + /** + * 同步志愿者数据 + */ + void volunteer(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBPersonTagsService.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBPersonTagsService.java index 59b2e71..ce5998b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBPersonTagsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/IBPersonTagsService.java @@ -70,4 +70,16 @@ public interface IBPersonTagsService { */ List findByTags(BActivity bActivity); + /** + * 批量新增用户标签信息 + * + * @param tagsList 用户标签信息集合 + */ + void addAll(List tagsList); + + /** + * 删除所有导入的标签 + */ + void delByRemark(); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/PointsRedemptionService.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/PointsRedemptionService.java index 90c623a..98edfa9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/PointsRedemptionService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/PointsRedemptionService.java @@ -42,5 +42,5 @@ public interface PointsRedemptionService { * * @return 积分 */ - Integer findIntegral(); + Double findIntegral(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BActivityPointsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BActivityPointsServiceImpl.java index ee7812f..717d184 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BActivityPointsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BActivityPointsServiceImpl.java @@ -160,8 +160,26 @@ public class BActivityPointsServiceImpl implements IBActivityPointsService { * @return 积分 */ @Override - public Integer findPointsByUserId(Long userId) { + public Double findPointsByUserId(Long userId) { return bActivityPointsMapper.findPointsByUserId(userId); } + + /** + * 清空表 + */ + @Override + public void delAll() { + bActivityPointsMapper.delAll(); + } + + /** + * 批量新增一次性活动 + * + * @param list 一次性活动 + */ + @Override + public void addAll(List list) { + bActivityPointsMapper.addAll(list); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BDistributionRecordsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BDistributionRecordsServiceImpl.java index 41125e4..987acef 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BDistributionRecordsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BDistributionRecordsServiceImpl.java @@ -1,19 +1,50 @@ package com.ruoyi.zhiyuanzhe.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.system.service.ISysDictDataService; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.zhiyuanzhe.domain.BActivityPoints; import com.ruoyi.zhiyuanzhe.domain.BDistributionRecords; +import com.ruoyi.zhiyuanzhe.domain.BPersonTags; +import com.ruoyi.zhiyuanzhe.domain.dto.DictDTO; +import com.ruoyi.zhiyuanzhe.domain.dto.ResDTO; +import com.ruoyi.zhiyuanzhe.domain.dto.ServiceLongDTO; +import com.ruoyi.zhiyuanzhe.domain.dto.VolunteerDTO; import com.ruoyi.zhiyuanzhe.domain.request.BActivityPointsRequest; import com.ruoyi.zhiyuanzhe.domain.request.SubmitRequest; import com.ruoyi.zhiyuanzhe.mapper.BDistributionRecordsMapper; +import com.ruoyi.zhiyuanzhe.service.IBActivityPointsService; import com.ruoyi.zhiyuanzhe.service.IBDistributionRecordsService; +import com.ruoyi.zhiyuanzhe.service.IBPersonTagsService; import com.ruoyi.zhiyuanzhe.utils.PushDataUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** @@ -28,6 +59,21 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer @Resource private BDistributionRecordsMapper bDistributionRecordsMapper; + @Resource + private ISysDictDataService sysDictDataService; + + @Resource + private IBActivityPointsService bActivityPointsService; + + @Resource + private ISysUserService sysUserService; + + @Resource + private IBPersonTagsService personTagsService; + + @Resource + private ISysConfigService configService; + /** * 查询发放记录 * @@ -124,7 +170,7 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer * @return 已使用的积分 */ @Override - public Integer findPointsByUserId(Long userId) { + public Double findPointsByUserId(Long userId) { return bDistributionRecordsMapper.findPointsByUserId(userId); } @@ -152,4 +198,242 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer PushDataUtil.pushData(jsonStr); } } + + /** + * 同步一次性活动数据 + */ + @Override + public void findList() { + // 清除现有活动数据 + bActivityPointsService.delAll(); + String startTime = "2019-12-19 00:00:00"; + getActivityData(startTime); + } + + /** + * https://zyz.sipac.gov.cn/ 正式地址 + * https://sungent.fyxmt.com/ 测试地址 + * 获取活动数据 + * + * @param startTime 活动开始时间 + */ + private void getActivityData(String startTime) { + Date localDateTime = DateUtil.offsetDay(DateUtil.date(), 30); + // 如果下次开始时间小于当前时间30天则继续递归数据 + if (localDateTime.after(DateUtil.parse(startTime))) { + Map param = new HashMap<>(); + param.put("startTime", startTime); + // 开始时间字符串转日期 + Date date = DateUtil.parse(startTime); + // 日期加30天获取结束时间 + Date newDate = DateUtil.offsetDay(date, 30); + // 结束时间转字符串 + String endTime = DateUtil.format(newDate, "yyyy-MM-dd HH:mm:ss"); + param.put("endTime", endTime); + String body = JSONUtil.toJsonStr(param); + String res = HttpRequest.post("https://zyz.sipac.gov.cn/volunteer_api/api/sip/block-chain/service-long-list").body(body).execute().body(); + JSONObject jsonObject = JSONUtil.parseObj(res); + ResDTO bean = jsonObject.toBean(ResDTO.class); + // 解密 + String decrypt = SecureUtil.des("A2#&15x29".getBytes()).decryptStr(bean.getObj()); + // 响应数据不为空 + if (!decrypt.equals("[]")) { + // 将字符串转成JSONArray + JSONArray jsonArray = JSONUtil.parseArray(decrypt); + // 将JSONArray转成List + List serviceLongDTOList = JSONUtil.toList(jsonArray, ServiceLongDTO.class); + List list = new ArrayList<>(); + for (ServiceLongDTO dto : serviceLongDTOList) { + BActivityPoints points = new BActivityPoints(); + try { + points.setId(Long.valueOf(dto.getId())); + } catch (NumberFormatException e) { + continue; + } + points.setPoints(dto.getServiceLong() == null ? 0 : dto.getServiceLong()); + points.setActivityTime(DateUtil.date(dto.getStartTime())); + points.setName(dto.getActivityName()); + // 根据手机号作为用户id + try { + points.setUId(Long.valueOf(dto.getVolunteerPhone())); + } catch (NumberFormatException e) { + continue; + } + list.add(points); + } + // 保存数据 + bActivityPointsService.addAll(list); + } + // 结束日期加上31天为下次开始时间 + DateTime nextStartTime = DateUtil.offsetDay(newDate, 30); + // 日期转字符串 + String startTimeStr = DateUtil.format(nextStartTime, "yyyy-MM-dd HH:mm:ss"); + getActivityData(startTimeStr); + } + } + + /** + * 同步字典 + */ + @Override + public void dict() { + String body = HttpRequest.get("https://zyz.sipac.gov.cn/volunteer_api/api/sip/block-chain/dict").execute().body(); + JSONObject jsonObject = JSONUtil.parseObj(body); + ResDTO bean = jsonObject.toBean(ResDTO.class); + String decrypt = SecureUtil.des("A2#&15x29".getBytes()).decryptStr(bean.getObj()); + // 将字符串转成JSONArray + JSONArray jsonArray = JSONUtil.parseArray(decrypt); + // 将JSONArray转成List + List dictList = JSONUtil.toList(jsonArray, DictDTO.class); + if (CollectionUtil.isNotEmpty(dictList)) { + // 删除字典 + sysDictDataService.delByType(); + Map> groupedData = new HashMap<>(); + for (DictDTO item : dictList) { + String parentCode = item.getParentCode(); + if (groupedData.containsKey(parentCode)) { + groupedData.get(parentCode).add(item); + } else { + List itemList = new ArrayList<>(); + itemList.add(item); + groupedData.put(parentCode, itemList); + } + } + Set keySet = groupedData.keySet(); + for (String key : keySet) { + String str; + if (key.equals("education")) { + str = "education_range"; + } else if (key.equals("skill")) { + str = "speciality_type"; + } else if (key.equals("industry_cate")) { + str = "industry_type"; + } else if (key.equals("country_list")) { + str = "nationality_type"; + } else { + continue; + } + for (DictDTO dictDTO : groupedData.get(key)) { + SysDictData dictData = new SysDictData(); + dictData.setDictCode(null); + dictData.setDictSort((long) dictDTO.getSequence()); + dictData.setDictLabel(dictDTO.getName()); + dictData.setDictValue(String.valueOf(dictDTO.getSequence())); + dictData.setDictType(str); + dictData.setIsDefault("N"); + dictData.setListClass("default"); + sysDictDataService.insertDictData(dictData); + } + } + } + } + + public void processVolunteers(List volunteerDTOS) { + + // 创建一个固定大小的线程池,线程数根据实际情况进行配置 + ExecutorService executorService = Executors.newFixedThreadPool(20); + List> futures = new ArrayList<>(); + + List userList = new ArrayList<>(); + List tagsList = new ArrayList<>(); + + for (VolunteerDTO dto : volunteerDTOS) { + // 创建一个Runnable任务 + Runnable task = () -> { + // 创建用户 + SysUser sysUser = new SysUser(); + // 创建人员标签 + BPersonTags tags = new BPersonTags(); + // 填充用户信息 + sysUser.setNickName(dto.getName()); + sysUser.setUserName(dto.getPhone()); + // 加密密码 + sysUser.setPassword(SecurityUtils.encryptPassword("123456")); + sysUser.setStatus("0"); + sysUser.setDelFlag("0"); + sysUser.setSex("2"); + sysUser.setRoleId(101L); + sysUser.setUserId(Long.valueOf(dto.getPhone())); + // 标记为导出数据 + sysUser.setRemark("1"); + userList.add(sysUser); + // 填充人员标签 + tags.setUId(Long.valueOf(dto.getPhone())); + tags.setNationalityRange(dto.getCountryText()); + tags.setProfessionalRange(dto.getSkillText()); + tags.setIndustryRange(dto.getIndustryCateText()); + tags.setEducationRange(dto.getEducationText()); + // 标记为导出数据 + tags.setRemark("1"); + tagsList.add(tags); + }; + + // 提交任务给线程池并获取Future对象 + Future future = executorService.submit(task); + futures.add(future); + } + + // 等待所有任务执行完成 + for (Future future : futures) { + try { + future.get(); + } catch (InterruptedException | ExecutionException e) { + // 处理异常 + e.printStackTrace(); + } + } + + // 所有任务执行完成后执行批量保存操作 + if (CollectionUtil.isNotEmpty(userList)) { + // 保存用户信息 + sysUserService.addAll(userList); + } + if (CollectionUtil.isNotEmpty(tagsList)) { + // 保存用户标签 + personTagsService.addAll(tagsList); + } + + // 关闭线程池 + executorService.shutdown(); + } + + /** + * 同步志愿者数据 + */ + @Override + public void volunteer() { + // 删除所有导入的用户以及标签 + sysUserService.delByRemark(); + personTagsService.delByRemark(); + // 将字符串日期转换为Date对象 + Date startTime = DateUtil.parse("2012-01-01 00:00:00"); + Date localTime = new Date(); + // 计算两个日期之间相差的年数 + long yearsDiff = DateUtil.age(startTime, localTime); + + for (long i = 0; i <= yearsDiff; i++) { + Date endTime = DateUtil.offset(startTime, DateField.YEAR, 1); + // 格式化请求日期 + String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:mm:ss"); + String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss"); + Map param = new HashMap<>(); + param.put("startTime", startTimeStr); + param.put("endTime", endTimeStr); + String body = JSONUtil.toJsonStr(param); + String res = HttpRequest.post("https://zyz.sipac.gov.cn/volunteer_api/api/sip/block-chain/volunteer-list").body(body).execute().body(); + JSONObject jsonObject = JSONUtil.parseObj(res); + ResDTO bean = jsonObject.toBean(ResDTO.class); + // 解密 + String decrypt = SecureUtil.des("A2#&15x29".getBytes()).decryptStr(bean.getObj()); + // 响应数据不为空 + if (!decrypt.equals("[]")) { + // 将字符串转成JSONArray + JSONArray jsonArray = JSONUtil.parseArray(decrypt); + // 将JSONArray转成List + List volunteerDTOS = JSONUtil.toList(jsonArray, VolunteerDTO.class); + processVolunteers(volunteerDTOS); + } + startTime = endTime; + } + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BPersonTagsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BPersonTagsServiceImpl.java index 6ad0b20..06a0703 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BPersonTagsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/BPersonTagsServiceImpl.java @@ -102,4 +102,22 @@ public class BPersonTagsServiceImpl implements IBPersonTagsService { public List findByTags(BActivity bActivity) { return bPersonTagsMapper.findByTags(bActivity); } + + /** + * 批量新增用户标签信息 + * + * @param tagsList 用户标签信息集合 + */ + @Override + public void addAll(List tagsList) { + bPersonTagsMapper.addAll(tagsList); + } + + /** + * 删除所有导入的标签 + */ + @Override + public void delByRemark() { + bPersonTagsMapper.delByRemark(); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/PointsRedemptionServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/PointsRedemptionServiceImpl.java index 131ae5a..ab61adb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/PointsRedemptionServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/zhiyuanzhe/service/impl/PointsRedemptionServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.zhiyuanzhe.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; @@ -77,13 +78,13 @@ public class PointsRedemptionServiceImpl implements PointsRedemptionService { throw new ServiceException("所选证书已经兑换过"); } // 获取用户所有积分 - Integer points = activityPointsService.findPointsByUserId(userId); + Double points = activityPointsService.findPointsByUserId(userId); // 获取用户已经使用的积分 - Integer pointsUsed = bDistributionRecordsService.findPointsByUserId(userId); + Double pointsUsed = bDistributionRecordsService.findPointsByUserId(userId); points = points != null ? points : 0; pointsUsed = pointsUsed != null ? pointsUsed : 0; // 计算用户剩余积分 - Integer remainder = points - pointsUsed; + Double remainder = NumberUtil.sub(points, pointsUsed); // 判断积分是否足够 if ((remainder - bCertificates.getIntegral()) >= 0) { // 生成兑换记录 @@ -119,16 +120,16 @@ public class PointsRedemptionServiceImpl implements PointsRedemptionService { * @return 积分 */ @Override - public Integer findIntegral() { + public Double findIntegral() { // 获取用户id Long userId = SecurityUtils.getUserId(); // 获取用户所有积分 - Integer points = activityPointsService.findPointsByUserId(userId); + Double points = activityPointsService.findPointsByUserId(userId); // 获取用户已经使用的积分 - Integer pointsUsed = bDistributionRecordsService.findPointsByUserId(userId); + Double pointsUsed = bDistributionRecordsService.findPointsByUserId(userId); points = points != null ? points : 0; pointsUsed = pointsUsed != null ? pointsUsed : 0; // 计算用户剩余积分 - return points - pointsUsed; + return NumberUtil.sub(points, pointsUsed); } } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index fe9c18e..57fb5e2 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -33,7 +33,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: dev + active: prod # 文件上传 servlet: multipart: diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index ac14022..eb8a383 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -1,5 +1,9 @@ package com.ruoyi.framework.config; +import com.ruoyi.framework.config.properties.PermitAllUrlProperties; +import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; +import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; +import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpMethod; @@ -15,25 +19,20 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.logout.LogoutFilter; import org.springframework.web.filter.CorsFilter; -import com.ruoyi.framework.config.properties.PermitAllUrlProperties; -import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; -import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; -import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; /** * spring security配置 - * + * * @author ruoyi */ @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter -{ +public class SecurityConfig extends WebSecurityConfigurerAdapter { /** * 自定义用户认证逻辑 */ @Autowired private UserDetailsService userDetailsService; - + /** * 认证失败处理类 */ @@ -51,7 +50,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter */ @Autowired private JwtAuthenticationTokenFilter authenticationTokenFilter; - + /** * 跨域过滤器 */ @@ -72,8 +71,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter */ @Bean @Override - public AuthenticationManager authenticationManagerBean() throws Exception - { + public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @@ -93,8 +91,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter * authenticated | 用户登录后可访问 */ @Override - protected void configure(HttpSecurity httpSecurity) throws Exception - { + protected void configure(HttpSecurity httpSecurity) throws Exception { // 注解标记允许匿名访问的url ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests(); permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll()); @@ -114,7 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .antMatchers("/login", "/register", "/captchaImage").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() - .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/zhiyuanzhe/**").permitAll() + .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**", "/zhiyuanzhe/**").permitAll() + // 放开所有接口 + .antMatchers("/**").anonymous() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and() @@ -132,8 +131,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter * 强散列哈希加密实现 */ @Bean - public BCryptPasswordEncoder bCryptPasswordEncoder() - { + public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } @@ -141,8 +139,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter * 身份认证接口 */ @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception - { + protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 6899269..6e39871 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -62,8 +62,8 @@ public class SysLoginService { * @return 结果 */ public String login(String username, String password, String code, String uuid) { - // 验证码校验 - validateCaptcha(username, code, uuid); + // 验证码校验 todo 取消验证码校验 +// validateCaptcha(username, code, uuid); // 登录前置校验 loginPreCheck(username, password); // 用户验证 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java index a341f1e..0c9f738 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java @@ -1,95 +1,100 @@ package com.ruoyi.system.mapper; -import java.util.List; -import org.apache.ibatis.annotations.Param; import com.ruoyi.common.core.domain.entity.SysDictData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 字典表 数据层 - * + * * @author ruoyi */ -public interface SysDictDataMapper -{ +public interface SysDictDataMapper { /** * 根据条件分页查询字典数据 - * + * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ - public List selectDictDataList(SysDictData dictData); + List selectDictDataList(SysDictData dictData); /** * 根据字典类型查询字典数据 - * + * * @param dictType 字典类型 * @return 字典数据集合信息 */ - public List selectDictDataByType(String dictType); + List selectDictDataByType(String dictType); /** * 根据字典类型和字典键值查询字典数据信息 - * - * @param dictType 字典类型 + * + * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 */ - public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); + String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); /** * 根据字典数据ID查询信息 - * + * * @param dictCode 字典数据ID * @return 字典数据 */ - public SysDictData selectDictDataById(Long dictCode); + SysDictData selectDictDataById(Long dictCode); /** * 查询字典数据 - * + * * @param dictType 字典类型 * @return 字典数据 */ - public int countDictDataByType(String dictType); + int countDictDataByType(String dictType); /** * 通过字典ID删除字典数据信息 - * + * * @param dictCode 字典数据ID * @return 结果 */ - public int deleteDictDataById(Long dictCode); + int deleteDictDataById(Long dictCode); /** * 批量删除字典数据信息 - * + * * @param dictCodes 需要删除的字典数据ID * @return 结果 */ - public int deleteDictDataByIds(Long[] dictCodes); + int deleteDictDataByIds(Long[] dictCodes); /** * 新增字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ - public int insertDictData(SysDictData dictData); + int insertDictData(SysDictData dictData); /** * 修改字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ - public int updateDictData(SysDictData dictData); + int updateDictData(SysDictData dictData); /** * 同步修改字典类型 - * + * * @param oldDictType 旧字典类型 * @param newDictType 新旧字典类型 * @return 结果 */ - public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); + int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); + + /** + * 获取字典前删除字典 + */ + void delByType(); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 76e1c79..d873839 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -1,113 +1,113 @@ package com.ruoyi.system.mapper; -import java.util.List; -import org.apache.ibatis.annotations.Param; import com.ruoyi.common.core.domain.entity.SysUser; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 用户表 数据层 - * + * * @author ruoyi */ -public interface SysUserMapper -{ +public interface SysUserMapper { /** * 根据条件分页查询用户列表 - * + * * @param sysUser 用户信息 * @return 用户信息集合信息 */ - public List selectUserList(SysUser sysUser); + List selectUserList(SysUser sysUser); /** * 根据条件分页查询已配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ - public List selectAllocatedList(SysUser user); + List selectAllocatedList(SysUser user); /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ - public List selectUnallocatedList(SysUser user); + List selectUnallocatedList(SysUser user); /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ - public SysUser selectUserByUserName(String userName); + SysUser selectUserByUserName(String userName); /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ - public SysUser selectUserById(Long userId); + SysUser selectUserById(Long userId); /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ - public int insertUser(SysUser user); + int insertUser(SysUser user); /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ - public int updateUser(SysUser user); + int updateUser(SysUser user); /** * 修改用户头像 - * + * * @param userName 用户名 - * @param avatar 头像地址 + * @param avatar 头像地址 * @return 结果 */ - public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); + int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 */ - public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); + int resetUserPwd(@Param("userName") String userName, @Param("password") String password); /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ - public int deleteUserById(Long userId); + int deleteUserById(Long userId); /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ - public int deleteUserByIds(Long[] userIds); + int deleteUserByIds(Long[] userIds); /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ - public SysUser checkUserNameUnique(String userName); + SysUser checkUserNameUnique(String userName); /** * 校验手机号码是否唯一 @@ -115,7 +115,7 @@ public interface SysUserMapper * @param phonenumber 手机号码 * @return 结果 */ - public SysUser checkPhoneUnique(String phonenumber); + SysUser checkPhoneUnique(String phonenumber); /** * 校验email是否唯一 @@ -123,5 +123,18 @@ public interface SysUserMapper * @param email 用户邮箱 * @return 结果 */ - public SysUser checkEmailUnique(String email); + SysUser checkEmailUnique(String email); + + /** + * 批量保存用户信息 + * + * @param list 用户信息集合 + */ + void addAll(@Param("list") List list); + + /** + * 删除所有导入的用户 + */ + void delByRemark(); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java index 9bc4f13..3678edf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java @@ -1,60 +1,66 @@ package com.ruoyi.system.service; -import java.util.List; import com.ruoyi.common.core.domain.entity.SysDictData; +import java.util.List; + /** * 字典 业务层 - * + * * @author ruoyi */ -public interface ISysDictDataService -{ +public interface ISysDictDataService { /** * 根据条件分页查询字典数据 - * + * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ - public List selectDictDataList(SysDictData dictData); + List selectDictDataList(SysDictData dictData); /** * 根据字典类型和字典键值查询字典数据信息 - * - * @param dictType 字典类型 + * + * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 */ - public String selectDictLabel(String dictType, String dictValue); + String selectDictLabel(String dictType, String dictValue); /** * 根据字典数据ID查询信息 - * + * * @param dictCode 字典数据ID * @return 字典数据 */ - public SysDictData selectDictDataById(Long dictCode); + SysDictData selectDictDataById(Long dictCode); /** * 批量删除字典数据信息 - * + * * @param dictCodes 需要删除的字典数据ID */ - public void deleteDictDataByIds(Long[] dictCodes); + void deleteDictDataByIds(Long[] dictCodes); /** * 新增保存字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ - public int insertDictData(SysDictData dictData); + int insertDictData(SysDictData dictData); /** * 修改保存字典数据信息 - * + * * @param dictData 字典数据信息 * @return 结果 */ - public int updateDictData(SysDictData dictData); + int updateDictData(SysDictData dictData); + + /** + * 获取字典前删除字典 + */ + void delByType(); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index 10bc2ab..8664ed7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -1,18 +1,18 @@ package com.ruoyi.system.service; -import java.util.List; import com.ruoyi.common.core.domain.entity.SysUser; +import java.util.List; + /** * 用户 业务层 - * + * * @author ruoyi */ -public interface ISysUserService -{ +public interface ISysUserService { /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -20,7 +20,7 @@ public interface ISysUserService /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -28,7 +28,7 @@ public interface ISysUserService /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -36,7 +36,7 @@ public interface ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -44,7 +44,7 @@ public interface ISysUserService /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -52,7 +52,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -60,7 +60,7 @@ public interface ISysUserService /** * 根据用户ID查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -68,7 +68,7 @@ public interface ISysUserService /** * 校验用户名称是否唯一 - * + * * @param user 用户信息 * @return 结果 */ @@ -92,21 +92,21 @@ public interface ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ public void checkUserAllowed(SysUser user); /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ public void checkUserDataScope(Long userId); /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -114,7 +114,7 @@ public interface ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -122,7 +122,7 @@ public interface ISysUserService /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -130,15 +130,15 @@ public interface ISysUserService /** * 用户授权角色 - * - * @param userId 用户ID + * + * @param userId 用户ID * @param roleIds 角色组 */ public void insertUserAuth(Long userId, Long[] roleIds); /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -146,7 +146,7 @@ public interface ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -154,16 +154,16 @@ public interface ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 - * @param avatar 头像地址 + * @param avatar 头像地址 * @return 结果 */ public boolean updateUserAvatar(String userName, String avatar); /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -171,7 +171,7 @@ public interface ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -180,7 +180,7 @@ public interface ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -188,7 +188,7 @@ public interface ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -196,11 +196,23 @@ public interface ISysUserService /** * 导入用户数据 - * - * @param userList 用户数据列表 + * + * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 - * @param operName 操作用户 + * @param operName 操作用户 * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + /** + * 批量插入用户 + * + * @param userList + */ + void addAll(List userList); + + /** + * 删除所有导入的用户 + */ + void delByRemark(); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index fced569..a7b7f50 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -1,71 +1,66 @@ package com.ruoyi.system.service.impl; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.service.ISysDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; /** * 字典 业务层处理 - * + * * @author ruoyi */ @Service -public class SysDictDataServiceImpl implements ISysDictDataService -{ +public class SysDictDataServiceImpl implements ISysDictDataService { @Autowired private SysDictDataMapper dictDataMapper; /** * 根据条件分页查询字典数据 - * + * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ @Override - public List selectDictDataList(SysDictData dictData) - { + public List selectDictDataList(SysDictData dictData) { return dictDataMapper.selectDictDataList(dictData); } /** * 根据字典类型和字典键值查询字典数据信息 - * - * @param dictType 字典类型 + * + * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 */ @Override - public String selectDictLabel(String dictType, String dictValue) - { + public String selectDictLabel(String dictType, String dictValue) { return dictDataMapper.selectDictLabel(dictType, dictValue); } /** * 根据字典数据ID查询信息 - * + * * @param dictCode 字典数据ID * @return 字典数据 */ @Override - public SysDictData selectDictDataById(Long dictCode) - { + public SysDictData selectDictDataById(Long dictCode) { return dictDataMapper.selectDictDataById(dictCode); } /** * 批量删除字典数据信息 - * + * * @param dictCodes 需要删除的字典数据ID */ @Override - public void deleteDictDataByIds(Long[] dictCodes) - { - for (Long dictCode : dictCodes) - { + public void deleteDictDataByIds(Long[] dictCodes) { + for (Long dictCode : dictCodes) { SysDictData data = selectDictDataById(dictCode); dictDataMapper.deleteDictDataById(dictCode); List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); @@ -75,16 +70,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 新增保存字典数据信息 - * + * * @param data 字典数据信息 * @return 结果 */ @Override - public int insertDictData(SysDictData data) - { + public int insertDictData(SysDictData data) { int row = dictDataMapper.insertDictData(data); - if (row > 0) - { + if (row > 0) { List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); DictUtils.setDictCache(data.getDictType(), dictDatas); } @@ -93,19 +86,25 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 修改保存字典数据信息 - * + * * @param data 字典数据信息 * @return 结果 */ @Override - public int updateDictData(SysDictData data) - { + public int updateDictData(SysDictData data) { int row = dictDataMapper.updateDictData(data); - if (row > 0) - { + if (row > 0) { List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); DictUtils.setDictCache(data.getDictType(), dictDatas); } return row; } + + /** + * 获取字典前删除字典 + */ + @Override + public void delByType() { + dictDataMapper.delByType(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 4f76794..5b7233e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -481,4 +481,32 @@ public class SysUserServiceImpl implements ISysUserService { } return successMsg.toString(); } + + /** + * 批量插入用户 + * + * @param userList + */ + @Override + public void addAll(List userList) { + // 新增用户信息 + userMapper.addAll(userList); + // 新增用户与角色管理 + List list = new ArrayList<>(userList.size()); + for (SysUser user : userList) { + SysUserRole ur = new SysUserRole(); + ur.setUserId(user.getUserId()); + ur.setRoleId(user.getRoleId()); + list.add(ur); + } + userRoleMapper.batchUserRole(list); + } + + /** + * 删除所有导入的用户 + */ + @Override + public void delByRemark() { + userMapper.delByRemark(); + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml index 8da9030..c9c39df 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -70,8 +70,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{dictCode} - - + + delete + from sys_dict_data + where dict_type in ('education_range', 'speciality_type', 'industry_type', 'nationality_type') + + + update sys_dict_data dict_sort = #{dictSort}, diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 2156238..3fc6778 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -266,6 +266,15 @@ ) + + insert into sys_user(nick_name, user_name,password,status,del_flag,sex,user_id,create_time,update_time,remark) + values + + (#{item.nickName},#{item.userName},#{item.password},#{item.status},#{item.delFlag},#{item.sex},#{item.userId}, + sysdate(), sysdate(),#{item.remark}) + + + update sys_user @@ -353,4 +362,10 @@ + + delete + from sys_user + where remark = '1' + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BActivityPointsMapper.xml b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BActivityPointsMapper.xml index 1e59cbe..969749a 100644 --- a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BActivityPointsMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BActivityPointsMapper.xml @@ -141,8 +141,7 @@ left join sys_user su on bap.u_id = su.user_id where bap.id = #{id} - - select sum(points) from b_activity_points where u_id = #{userId} @@ -189,6 +188,15 @@ + + insert into b_activity_points(id,u_id, + points,name,activity_time,create_time,update_time) values + + (#{item.id},#{item.uId},#{item.points},#{item.name},#{item.activityTime}, + sysdate(), sysdate()) + + + update b_activity_points @@ -224,4 +232,8 @@ #{id} + + + TRUNCATE TABLE b_activity_points; + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BDistributionRecordsMapper.xml b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BDistributionRecordsMapper.xml index b0c4ffe..ea74c65 100644 --- a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BDistributionRecordsMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BDistributionRecordsMapper.xml @@ -166,7 +166,7 @@ and certificate_id = #{id} - select sum(bc.integral) from b_distribution_records bdr left join b_certificates bc on bdr.certificate_id = bc.id diff --git a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BPersonTagsMapper.xml b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BPersonTagsMapper.xml index e3d3f5f..c8afae3 100644 --- a/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BPersonTagsMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zhiyuanzhe/BPersonTagsMapper.xml @@ -287,6 +287,15 @@ + + insert into b_person_tags(u_id, + nationality_range,professional_range,industry_range,education_range,create_time,update_time,remark) values + + (#{item.uId},#{item.nationalityRange},#{item.professionalRange},#{item.industryRange},#{item.educationRange}, + sysdate(), sysdate(),#{item.remark}) + + + update b_person_tags @@ -326,4 +335,10 @@ #{id} + + + delete + from b_person_tags + where remark = '1' + \ No newline at end of file