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.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.service.ISysMenuService; 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.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -26,13 +26,14 @@ import java.util.Set;
*/ */
@RestController @RestController
public class SysLoginController { public class SysLoginController {
@Autowired
@Resource
private SysLoginService loginService; private SysLoginService loginService;
@Autowired @Resource
private ISysMenuService menuService; private ISysMenuService menuService;
@Autowired @Resource
private SysPermissionService permissionService; private SysPermissionService permissionService;
/** /**

@ -41,4 +41,41 @@ public class DemoController extends BaseController {
String jsonStr = JSONUtil.toJsonStr(records); String jsonStr = JSONUtil.toJsonStr(records);
return success(PushDataUtil.pushData(jsonStr)); 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 = "查询用户所有积分") @ApiOperation(value = "查询用户所有积分")
@GetMapping("/findIntegral") @GetMapping("/findIntegral")
public AjaxResult findIntegral() { public AjaxResult findIntegral() {
Integer integral = pointsRedemptionService.findIntegral(); return success(pointsRedemptionService.findIntegral());
return success(integral);
} }
/** /**

@ -46,7 +46,7 @@ public class BActivityPoints extends BaseEntity {
*/ */
@Excel(name = "积分") @Excel(name = "积分")
@ApiModelProperty(value = "积分") @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("积分") @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 * @param userId id
* @return * @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 * @param userId id
* @return 使 * @return 使
*/ */
Integer findPointsByUserId(@Param("userId") Long userId); Double findPointsByUserId(@Param("userId") Long userId);
} }

@ -70,4 +70,16 @@ public interface BPersonTagsMapper {
* @return * @return
*/ */
List<BActivityUser> findByTags(@Param("req") BActivity bActivity); 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 * @param userId id
* @return * @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 * @param userId id
* @return 使 * @return 使
*/ */
Integer findPointsByUserId(Long userId); Double findPointsByUserId(Long userId);
/** /**
* *
@ -92,4 +92,19 @@ public interface IBDistributionRecordsService {
* @param req * @param req
*/ */
void issue(BActivityPointsRequest req); void issue(BActivityPointsRequest req);
/**
*
*/
void findList();
/**
*
*/
void dict();
/**
*
*/
void volunteer();
} }

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

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

@ -160,8 +160,26 @@ public class BActivityPointsServiceImpl implements IBActivityPointsService {
* @return * @return
*/ */
@Override @Override
public Integer findPointsByUserId(Long userId) { public Double findPointsByUserId(Long userId) {
return bActivityPointsMapper.findPointsByUserId(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; package com.ruoyi.zhiyuanzhe.service.impl;
import cn.hutool.core.bean.BeanUtil; 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 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.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; 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.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.BActivityPointsRequest;
import com.ruoyi.zhiyuanzhe.domain.request.SubmitRequest; import com.ruoyi.zhiyuanzhe.domain.request.SubmitRequest;
import com.ruoyi.zhiyuanzhe.mapper.BDistributionRecordsMapper; import com.ruoyi.zhiyuanzhe.mapper.BDistributionRecordsMapper;
import com.ruoyi.zhiyuanzhe.service.IBActivityPointsService;
import com.ruoyi.zhiyuanzhe.service.IBDistributionRecordsService; import com.ruoyi.zhiyuanzhe.service.IBDistributionRecordsService;
import com.ruoyi.zhiyuanzhe.service.IBPersonTagsService;
import com.ruoyi.zhiyuanzhe.utils.PushDataUtil; import com.ruoyi.zhiyuanzhe.utils.PushDataUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List; 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 @Resource
private BDistributionRecordsMapper bDistributionRecordsMapper; 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 使 * @return 使
*/ */
@Override @Override
public Integer findPointsByUserId(Long userId) { public Double findPointsByUserId(Long userId) {
return bDistributionRecordsMapper.findPointsByUserId(userId); return bDistributionRecordsMapper.findPointsByUserId(userId);
} }
@ -152,4 +198,242 @@ public class BDistributionRecordsServiceImpl implements IBDistributionRecordsSer
PushDataUtil.pushData(jsonStr); 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) { public List<BActivityUser> findByTags(BActivity bActivity) {
return bPersonTagsMapper.findByTags(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; package com.ruoyi.zhiyuanzhe.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
@ -77,13 +78,13 @@ public class PointsRedemptionServiceImpl implements PointsRedemptionService {
throw new ServiceException("所选证书已经兑换过"); 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; points = points != null ? points : 0;
pointsUsed = pointsUsed != null ? pointsUsed : 0; pointsUsed = pointsUsed != null ? pointsUsed : 0;
// 计算用户剩余积分 // 计算用户剩余积分
Integer remainder = points - pointsUsed; Double remainder = NumberUtil.sub(points, pointsUsed);
// 判断积分是否足够 // 判断积分是否足够
if ((remainder - bCertificates.getIntegral()) >= 0) { if ((remainder - bCertificates.getIntegral()) >= 0) {
// 生成兑换记录 // 生成兑换记录
@ -119,16 +120,16 @@ public class PointsRedemptionServiceImpl implements PointsRedemptionService {
* @return * @return
*/ */
@Override @Override
public Integer findIntegral() { public Double findIntegral() {
// 获取用户id // 获取用户id
Long userId = SecurityUtils.getUserId(); 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; points = points != null ? points : 0;
pointsUsed = pointsUsed != null ? pointsUsed : 0; pointsUsed = pointsUsed != null ? pointsUsed : 0;
// 计算用户剩余积分 // 计算用户剩余积分
return points - pointsUsed; return NumberUtil.sub(points, pointsUsed);
} }
} }

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

@ -1,5 +1,9 @@
package com.ruoyi.framework.config; 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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpMethod; 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.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutFilter; import org.springframework.security.web.authentication.logout.LogoutFilter;
import org.springframework.web.filter.CorsFilter; 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 * spring security
* *
* @author ruoyi * @author ruoyi
*/ */
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter public class SecurityConfig extends WebSecurityConfigurerAdapter {
{
/** /**
* *
*/ */
@Autowired @Autowired
private UserDetailsService userDetailsService; private UserDetailsService userDetailsService;
/** /**
* *
*/ */
@ -51,7 +50,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
*/ */
@Autowired @Autowired
private JwtAuthenticationTokenFilter authenticationTokenFilter; private JwtAuthenticationTokenFilter authenticationTokenFilter;
/** /**
* *
*/ */
@ -72,8 +71,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
*/ */
@Bean @Bean
@Override @Override
public AuthenticationManager authenticationManagerBean() throws Exception public AuthenticationManager authenticationManagerBean() throws Exception {
{
return super.authenticationManagerBean(); return super.authenticationManagerBean();
} }
@ -93,8 +91,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* authenticated | 访 * authenticated | 访
*/ */
@Override @Override
protected void configure(HttpSecurity httpSecurity) throws Exception protected void configure(HttpSecurity httpSecurity) throws Exception {
{
// 注解标记允许匿名访问的url // 注解标记允许匿名访问的url
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests(); ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests();
permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll()); permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll());
@ -114,7 +111,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers("/login", "/register", "/captchaImage").permitAll() .antMatchers("/login", "/register", "/captchaImage").permitAll()
// 静态资源,可匿名访问 // 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").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() .anyRequest().authenticated()
.and() .and()
@ -132,8 +131,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* *
*/ */
@Bean @Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() public BCryptPasswordEncoder bCryptPasswordEncoder() {
{
return new BCryptPasswordEncoder(); return new BCryptPasswordEncoder();
} }
@ -141,8 +139,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
* *
*/ */
@Override @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception protected void configure(AuthenticationManagerBuilder auth) throws Exception {
{
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
} }
} }

@ -62,8 +62,8 @@ public class SysLoginService {
* @return * @return
*/ */
public String login(String username, String password, String code, String uuid) { public String login(String username, String password, String code, String uuid) {
// 验证码校验 // 验证码校验 todo 取消验证码校验
validateCaptcha(username, code, uuid); // validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, password); loginPreCheck(username, password);
// 用户验证 // 用户验证

@ -1,95 +1,100 @@
package com.ruoyi.system.mapper; package com.ruoyi.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictData;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface SysDictDataMapper public interface SysDictDataMapper {
{
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public List<SysDictData> selectDictDataList(SysDictData dictData); List<SysDictData> selectDictDataList(SysDictData dictData);
/** /**
* *
* *
* @param dictType * @param dictType
* @return * @return
*/ */
public List<SysDictData> selectDictDataByType(String dictType); List<SysDictData> selectDictDataByType(String dictType);
/** /**
* *
* *
* @param dictType * @param dictType
* @param dictValue * @param dictValue
* @return * @return
*/ */
public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue); String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/** /**
* ID * ID
* *
* @param dictCode ID * @param dictCode ID
* @return * @return
*/ */
public SysDictData selectDictDataById(Long dictCode); SysDictData selectDictDataById(Long dictCode);
/** /**
* *
* *
* @param dictType * @param dictType
* @return * @return
*/ */
public int countDictDataByType(String dictType); int countDictDataByType(String dictType);
/** /**
* ID * ID
* *
* @param dictCode ID * @param dictCode ID
* @return * @return
*/ */
public int deleteDictDataById(Long dictCode); int deleteDictDataById(Long dictCode);
/** /**
* *
* *
* @param dictCodes ID * @param dictCodes ID
* @return * @return
*/ */
public int deleteDictDataByIds(Long[] dictCodes); int deleteDictDataByIds(Long[] dictCodes);
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public int insertDictData(SysDictData dictData); int insertDictData(SysDictData dictData);
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public int updateDictData(SysDictData dictData); int updateDictData(SysDictData dictData);
/** /**
* *
* *
* @param oldDictType * @param oldDictType
* @param newDictType * @param newDictType
* @return * @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; package com.ruoyi.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface SysUserMapper public interface SysUserMapper {
{
/** /**
* *
* *
* @param sysUser * @param sysUser
* @return * @return
*/ */
public List<SysUser> selectUserList(SysUser sysUser); List<SysUser> selectUserList(SysUser sysUser);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
public List<SysUser> selectAllocatedList(SysUser user); List<SysUser> selectAllocatedList(SysUser user);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
public List<SysUser> selectUnallocatedList(SysUser user); List<SysUser> selectUnallocatedList(SysUser user);
/** /**
* *
* *
* @param userName * @param userName
* @return * @return
*/ */
public SysUser selectUserByUserName(String userName); SysUser selectUserByUserName(String userName);
/** /**
* ID * ID
* *
* @param userId ID * @param userId ID
* @return * @return
*/ */
public SysUser selectUserById(Long userId); SysUser selectUserById(Long userId);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
public int insertUser(SysUser user); int insertUser(SysUser user);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
public int updateUser(SysUser user); int updateUser(SysUser user);
/** /**
* *
* *
* @param userName * @param userName
* @param avatar * @param avatar
* @return * @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 userName
* @param password * @param password
* @return * @return
*/ */
public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
/** /**
* ID * ID
* *
* @param userId ID * @param userId ID
* @return * @return
*/ */
public int deleteUserById(Long userId); int deleteUserById(Long userId);
/** /**
* *
* *
* @param userIds ID * @param userIds ID
* @return * @return
*/ */
public int deleteUserByIds(Long[] userIds); int deleteUserByIds(Long[] userIds);
/** /**
* *
* *
* @param userName * @param userName
* @return * @return
*/ */
public SysUser checkUserNameUnique(String userName); SysUser checkUserNameUnique(String userName);
/** /**
* *
@ -115,7 +115,7 @@ public interface SysUserMapper
* @param phonenumber * @param phonenumber
* @return * @return
*/ */
public SysUser checkPhoneUnique(String phonenumber); SysUser checkPhoneUnique(String phonenumber);
/** /**
* email * email
@ -123,5 +123,18 @@ public interface SysUserMapper
* @param email * @param email
* @return * @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; package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictData;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface ISysDictDataService public interface ISysDictDataService {
{
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public List<SysDictData> selectDictDataList(SysDictData dictData); List<SysDictData> selectDictDataList(SysDictData dictData);
/** /**
* *
* *
* @param dictType * @param dictType
* @param dictValue * @param dictValue
* @return * @return
*/ */
public String selectDictLabel(String dictType, String dictValue); String selectDictLabel(String dictType, String dictValue);
/** /**
* ID * ID
* *
* @param dictCode ID * @param dictCode ID
* @return * @return
*/ */
public SysDictData selectDictDataById(Long dictCode); SysDictData selectDictDataById(Long dictCode);
/** /**
* *
* *
* @param dictCodes ID * @param dictCodes ID
*/ */
public void deleteDictDataByIds(Long[] dictCodes); void deleteDictDataByIds(Long[] dictCodes);
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public int insertDictData(SysDictData dictData); int insertDictData(SysDictData dictData);
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
public int updateDictData(SysDictData dictData); int updateDictData(SysDictData dictData);
/**
*
*/
void delByType();
} }

@ -1,18 +1,18 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface ISysUserService public interface ISysUserService {
{
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -20,7 +20,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -28,7 +28,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -36,7 +36,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param userName * @param userName
* @return * @return
*/ */
@ -44,7 +44,7 @@ public interface ISysUserService
/** /**
* ID * ID
* *
* @param userId ID * @param userId ID
* @return * @return
*/ */
@ -52,7 +52,7 @@ public interface ISysUserService
/** /**
* ID * ID
* *
* @param userName * @param userName
* @return * @return
*/ */
@ -60,7 +60,7 @@ public interface ISysUserService
/** /**
* ID * ID
* *
* @param userName * @param userName
* @return * @return
*/ */
@ -68,7 +68,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -92,21 +92,21 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
*/ */
public void checkUserAllowed(SysUser user); public void checkUserAllowed(SysUser user);
/** /**
* *
* *
* @param userId id * @param userId id
*/ */
public void checkUserDataScope(Long userId); public void checkUserDataScope(Long userId);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -114,7 +114,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -122,7 +122,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -130,15 +130,15 @@ public interface ISysUserService
/** /**
* *
* *
* @param userId ID * @param userId ID
* @param roleIds * @param roleIds
*/ */
public void insertUserAuth(Long userId, Long[] roleIds); public void insertUserAuth(Long userId, Long[] roleIds);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -146,7 +146,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -154,16 +154,16 @@ public interface ISysUserService
/** /**
* *
* *
* @param userName * @param userName
* @param avatar * @param avatar
* @return * @return
*/ */
public boolean updateUserAvatar(String userName, String avatar); public boolean updateUserAvatar(String userName, String avatar);
/** /**
* *
* *
* @param user * @param user
* @return * @return
*/ */
@ -171,7 +171,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param userName * @param userName
* @param password * @param password
* @return * @return
@ -180,7 +180,7 @@ public interface ISysUserService
/** /**
* ID * ID
* *
* @param userId ID * @param userId ID
* @return * @return
*/ */
@ -188,7 +188,7 @@ public interface ISysUserService
/** /**
* *
* *
* @param userIds ID * @param userIds ID
* @return * @return
*/ */
@ -196,11 +196,23 @@ public interface ISysUserService
/** /**
* *
* *
* @param userList * @param userList
* @param isUpdateSupport * @param isUpdateSupport
* @param operName * @param operName
* @return * @return
*/ */
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); 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; 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.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.SysDictDataMapper;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
public class SysDictDataServiceImpl implements ISysDictDataService public class SysDictDataServiceImpl implements ISysDictDataService {
{
@Autowired @Autowired
private SysDictDataMapper dictDataMapper; private SysDictDataMapper dictDataMapper;
/** /**
* *
* *
* @param dictData * @param dictData
* @return * @return
*/ */
@Override @Override
public List<SysDictData> selectDictDataList(SysDictData dictData) public List<SysDictData> selectDictDataList(SysDictData dictData) {
{
return dictDataMapper.selectDictDataList(dictData); return dictDataMapper.selectDictDataList(dictData);
} }
/** /**
* *
* *
* @param dictType * @param dictType
* @param dictValue * @param dictValue
* @return * @return
*/ */
@Override @Override
public String selectDictLabel(String dictType, String dictValue) public String selectDictLabel(String dictType, String dictValue) {
{
return dictDataMapper.selectDictLabel(dictType, dictValue); return dictDataMapper.selectDictLabel(dictType, dictValue);
} }
/** /**
* ID * ID
* *
* @param dictCode ID * @param dictCode ID
* @return * @return
*/ */
@Override @Override
public SysDictData selectDictDataById(Long dictCode) public SysDictData selectDictDataById(Long dictCode) {
{
return dictDataMapper.selectDictDataById(dictCode); return dictDataMapper.selectDictDataById(dictCode);
} }
/** /**
* *
* *
* @param dictCodes ID * @param dictCodes ID
*/ */
@Override @Override
public void deleteDictDataByIds(Long[] dictCodes) public void deleteDictDataByIds(Long[] dictCodes) {
{ for (Long dictCode : dictCodes) {
for (Long dictCode : dictCodes)
{
SysDictData data = selectDictDataById(dictCode); SysDictData data = selectDictDataById(dictCode);
dictDataMapper.deleteDictDataById(dictCode); dictDataMapper.deleteDictDataById(dictCode);
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
@ -75,16 +70,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService
/** /**
* *
* *
* @param data * @param data
* @return * @return
*/ */
@Override @Override
public int insertDictData(SysDictData data) public int insertDictData(SysDictData data) {
{
int row = dictDataMapper.insertDictData(data); int row = dictDataMapper.insertDictData(data);
if (row > 0) if (row > 0) {
{
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas); DictUtils.setDictCache(data.getDictType(), dictDatas);
} }
@ -93,19 +86,25 @@ public class SysDictDataServiceImpl implements ISysDictDataService
/** /**
* *
* *
* @param data * @param data
* @return * @return
*/ */
@Override @Override
public int updateDictData(SysDictData data) public int updateDictData(SysDictData data) {
{
int row = dictDataMapper.updateDictData(data); int row = dictDataMapper.updateDictData(data);
if (row > 0) if (row > 0) {
{
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas); DictUtils.setDictCache(data.getDictType(), dictDatas);
} }
return row; return row;
} }
/**
*
*/
@Override
public void delByType() {
dictDataMapper.delByType();
}
} }

@ -481,4 +481,32 @@ public class SysUserServiceImpl implements ISysUserService {
} }
return successMsg.toString(); 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} #{dictCode}
</foreach> </foreach>
</delete> </delete>
<delete id="delByType">
<update id="updateDictData" parameterType="SysDictData"> 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 update sys_dict_data
<set> <set>
<if test="dictSort != null">dict_sort = #{dictSort},</if> <if test="dictSort != null">dict_sort = #{dictSort},</if>

@ -266,6 +266,15 @@
) )
</insert> </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 id="updateUser" parameterType="SysUser">
update sys_user update sys_user
<set> <set>
@ -353,4 +362,10 @@
</foreach> </foreach>
</delete> </delete>
<delete id="delByRemark">
delete
from sys_user
where remark = '1'
</delete>
</mapper> </mapper>

@ -141,8 +141,7 @@
left join sys_user su on bap.u_id = su.user_id left join sys_user su on bap.u_id = su.user_id
where bap.id = #{id} where bap.id = #{id}
</select> </select>
<select id="findPointsByUserId" resultType="java.lang.Double">
<select id="findPointsByUserId" resultType="java.lang.Integer">
select sum(points) select sum(points)
from b_activity_points from b_activity_points
where u_id = #{userId} where u_id = #{userId}
@ -189,6 +188,15 @@
</trim> </trim>
</insert> </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 id="updateBActivityPoints" parameterType="BActivityPoints">
update b_activity_points update b_activity_points
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
@ -224,4 +232,8 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<update id="delAll">
TRUNCATE TABLE b_activity_points;
</update>
</mapper> </mapper>

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

@ -287,6 +287,15 @@
</trim> </trim>
</insert> </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 id="updateBPersonTags" parameterType="BPersonTags">
update b_person_tags update b_person_tags
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
@ -326,4 +335,10 @@
#{id} #{id}
</foreach> </foreach>
</delete> </delete>
<delete id="delByRemark">
delete
from b_person_tags
where remark = '1'
</delete>
</mapper> </mapper>
Loading…
Cancel
Save