dongdingding
吴顺杰 1 year ago
parent 016dda4202
commit f3e35e7de5

@ -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;
/**

@ -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();
}
}

@ -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());
}
/**

@ -46,7 +46,7 @@ public class BActivityPoints extends BaseEntity {
*/
@Excel(name = "积分")
@ApiModelProperty(value = "积分")
private Long points;
private Double points;
/**
*

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -50,7 +50,7 @@ public class BActivityPointsPageresponse {
*
*/
@ApiModelProperty("积分")
private String points;
private Double points;
/**

@ -0,0 +1,10 @@
package com.ruoyi.zhiyuanzhe.job;
/**
*
*
* @author wu
* @since 2023/11/7 13:09
*/
public class DataJob {
}

@ -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<BActivityPoints> list);
}

@ -85,5 +85,5 @@ public interface BDistributionRecordsMapper {
* @param userId id
* @return 使
*/
Integer findPointsByUserId(@Param("userId") Long userId);
Double findPointsByUserId(@Param("userId") Long userId);
}

@ -70,4 +70,16 @@ public interface BPersonTagsMapper {
* @return
*/
List<BActivityUser> findByTags(@Param("req") BActivity bActivity);
/**
*
*
* @param list
*/
void addAll(@Param("list") List<BPersonTags> list);
/**
*
*/
void delByRemark();
}

@ -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<BActivityPoints> list);
}

@ -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();
}

@ -70,4 +70,16 @@ public interface IBPersonTagsService {
*/
List<BActivityUser> findByTags(BActivity bActivity);
/**
*
*
* @param tagsList
*/
void addAll(List<BPersonTags> tagsList);
/**
*
*/
void delByRemark();
}

@ -42,5 +42,5 @@ public interface PointsRedemptionService {
*
* @return
*/
Integer findIntegral();
Double findIntegral();
}

@ -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<BActivityPoints> list) {
bActivityPointsMapper.addAll(list);
}
}

@ -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<String, Object> 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<Bean>
List<ServiceLongDTO> serviceLongDTOList = JSONUtil.toList(jsonArray, ServiceLongDTO.class);
List<BActivityPoints> 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<Bean>
List<DictDTO> dictList = JSONUtil.toList(jsonArray, DictDTO.class);
if (CollectionUtil.isNotEmpty(dictList)) {
// 删除字典
sysDictDataService.delByType();
Map<String, List<DictDTO>> groupedData = new HashMap<>();
for (DictDTO item : dictList) {
String parentCode = item.getParentCode();
if (groupedData.containsKey(parentCode)) {
groupedData.get(parentCode).add(item);
} else {
List<DictDTO> itemList = new ArrayList<>();
itemList.add(item);
groupedData.put(parentCode, itemList);
}
}
Set<String> 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<VolunteerDTO> volunteerDTOS) {
// 创建一个固定大小的线程池,线程数根据实际情况进行配置
ExecutorService executorService = Executors.newFixedThreadPool(20);
List<Future<?>> futures = new ArrayList<>();
List<SysUser> userList = new ArrayList<>();
List<BPersonTags> 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<String, Object> 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<Bean>
List<VolunteerDTO> volunteerDTOS = JSONUtil.toList(jsonArray, VolunteerDTO.class);
processVolunteers(volunteerDTOS);
}
startTime = endTime;
}
}
}

@ -102,4 +102,22 @@ public class BPersonTagsServiceImpl implements IBPersonTagsService {
public List<BActivityUser> findByTags(BActivity bActivity) {
return bPersonTagsMapper.findByTags(bActivity);
}
/**
*
*
* @param tagsList
*/
@Override
public void addAll(List<BPersonTags> tagsList) {
bPersonTagsMapper.addAll(tagsList);
}
/**
*
*/
@Override
public void delByRemark() {
bPersonTagsMapper.delByRemark();
}
}

@ -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);
}
}

@ -33,7 +33,7 @@ spring:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: dev
active: prod
# 文件上传
servlet:
multipart:

@ -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<HttpSecurity>.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());
}
}

@ -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);
// 用户验证

@ -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<SysDictData> selectDictDataList(SysDictData dictData);
List<SysDictData> selectDictDataList(SysDictData dictData);
/**
*
*
*
* @param dictType
* @return
*/
public List<SysDictData> selectDictDataByType(String dictType);
List<SysDictData> 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();
}

@ -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<SysUser> selectUserList(SysUser sysUser);
List<SysUser> selectUserList(SysUser sysUser);
/**
*
*
*
* @param user
* @return
*/
public List<SysUser> selectAllocatedList(SysUser user);
List<SysUser> selectAllocatedList(SysUser user);
/**
*
*
*
* @param user
* @return
*/
public List<SysUser> selectUnallocatedList(SysUser user);
List<SysUser> 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<SysUser> list);
/**
*
*/
void delByRemark();
}

@ -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<SysDictData> selectDictDataList(SysDictData dictData);
List<SysDictData> 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();
}

@ -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<SysUser> userList, Boolean isUpdateSupport, String operName);
/**
*
*
* @param userList
*/
void addAll(List<SysUser> userList);
/**
*
*/
void delByRemark();
}

@ -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<SysDictData> selectDictDataList(SysDictData dictData)
{
public List<SysDictData> 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<SysDictData> 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<SysDictData> 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<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas);
}
return row;
}
/**
*
*/
@Override
public void delByType() {
dictDataMapper.delByType();
}
}

@ -481,4 +481,32 @@ public class SysUserServiceImpl implements ISysUserService {
}
return successMsg.toString();
}
/**
*
*
* @param userList
*/
@Override
public void addAll(List<SysUser> userList) {
// 新增用户信息
userMapper.addAll(userList);
// 新增用户与角色管理
List<SysUserRole> 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();
}
}

@ -70,8 +70,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{dictCode}
</foreach>
</delete>
<update id="updateDictData" parameterType="SysDictData">
<delete id="delByType">
delete
from sys_dict_data
where dict_type in ('education_range', 'speciality_type', 'industry_type', 'nationality_type')
</delete>
<update id="updateDictData" parameterType="SysDictData">
update sys_dict_data
<set>
<if test="dictSort != null">dict_sort = #{dictSort},</if>

@ -266,6 +266,15 @@
)
</insert>
<insert id="addAll">
insert into sys_user(nick_name, user_name,password,status,del_flag,sex,user_id,create_time,update_time,remark)
values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.nickName},#{item.userName},#{item.password},#{item.status},#{item.delFlag},#{item.sex},#{item.userId},
sysdate(), sysdate(),#{item.remark})
</foreach>
</insert>
<update id="updateUser" parameterType="SysUser">
update sys_user
<set>
@ -353,4 +362,10 @@
</foreach>
</delete>
<delete id="delByRemark">
delete
from sys_user
where remark = '1'
</delete>
</mapper>

@ -141,8 +141,7 @@
left join sys_user su on bap.u_id = su.user_id
where bap.id = #{id}
</select>
<select id="findPointsByUserId" resultType="java.lang.Integer">
<select id="findPointsByUserId" resultType="java.lang.Double">
select sum(points)
from b_activity_points
where u_id = #{userId}
@ -189,6 +188,15 @@
</trim>
</insert>
<insert id="addAll">
insert into b_activity_points(id,u_id,
points,name,activity_time,create_time,update_time) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.id},#{item.uId},#{item.points},#{item.name},#{item.activityTime},
sysdate(), sysdate())
</foreach>
</insert>
<update id="updateBActivityPoints" parameterType="BActivityPoints">
update b_activity_points
<trim prefix="SET" suffixOverrides=",">
@ -224,4 +232,8 @@
#{id}
</foreach>
</delete>
<update id="delAll">
TRUNCATE TABLE b_activity_points;
</update>
</mapper>

@ -166,7 +166,7 @@
and certificate_id = #{id}
</select>
<select id="findPointsByUserId" resultType="java.lang.Integer">
<select id="findPointsByUserId" resultType="java.lang.Double">
select sum(bc.integral)
from b_distribution_records bdr
left join b_certificates bc on bdr.certificate_id = bc.id

@ -287,6 +287,15 @@
</trim>
</insert>
<insert id="addAll">
insert into b_person_tags(u_id,
nationality_range,professional_range,industry_range,education_range,create_time,update_time,remark) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.uId},#{item.nationalityRange},#{item.professionalRange},#{item.industryRange},#{item.educationRange},
sysdate(), sysdate(),#{item.remark})
</foreach>
</insert>
<update id="updateBPersonTags" parameterType="BPersonTags">
update b_person_tags
<trim prefix="SET" suffixOverrides=",">
@ -326,4 +335,10 @@
#{id}
</foreach>
</delete>
<delete id="delByRemark">
delete
from b_person_tags
where remark = '1'
</delete>
</mapper>
Loading…
Cancel
Save