债务表单完善

master
yqy 2 years ago
parent f8d4e87ab4
commit 0631ef6742

@ -135,6 +135,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/api/users/info/deptIds").permitAll()
.antMatchers("/api/roles/user/authority").permitAll()
.antMatchers( "/api/form/user/**").permitAll()
.antMatchers( "/api/debt/**").permitAll()
.antMatchers( "/api/report/organize").permitAll()
.antMatchers( "/api/download/task").permitAll()

@ -50,12 +50,12 @@ public class Debt implements Serializable {
private String nid;
@ApiModelProperty(value = "债务类别 0: 信用卡 1: 网贷 2: 信用卡+网贷")
@NotBlank(message = "请选择类别")
@NotNull(message = "请选择类别")
@Column(name = "debt_type")
private Integer debtType;
@ApiModelProperty(value = "额度 0: 5-10万 1: 10-20万 2: 20-30万 3: 30-50万 4: 50万以上")
@NotBlank(message = "请选择额度")
@NotNull(message = "请选择额度")
@Column(name = "quota")
private Integer quota;
@ -80,4 +80,9 @@ public class Debt implements Serializable {
@ApiModelProperty(value = "token")
@Transient
private String userToken;
@NotNull(message = "验证码不能为空")
@ApiModelProperty("验证码")
@Transient
private Integer verificationCode;
}

@ -38,16 +38,15 @@ public class FormUser extends BaseEntity implements Serializable {
@Column(name = "invitation_nums")
@ApiModelProperty(value = "邀请数量")
private String invitationNums;
private Integer invitationNums;
@Column(name = "last_login_time")
@ApiModelProperty(value = "最后登录时间")
private Date lastLoginTime;
@Column(name = "status")
@ApiModelProperty(value = "账户状态")
private Integer status;
private Boolean status = true;
@Column(name = "optimistic_version")
@ApiModelProperty(value = "版本号")

@ -1,7 +1,6 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.service.dto.QueryResultDTO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
@ -9,7 +8,6 @@ import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Repository
public interface DebtFormRepository extends JpaRepository<Debt, Long>, JpaSpecificationExecutor<Debt> {
@ -36,4 +34,6 @@ public interface DebtFormRepository extends JpaRepository<Debt, Long>, JpaSpecif
" ORDER BY" +
" dateStr")
List findByDate(Date beginDate, Date endDate, Long userId);
}
List<Debt> findByNid(String nid);
}

@ -29,5 +29,5 @@ public interface FormUserRepository extends JpaRepository<FormUser, Long>, JpaSp
*/
@Modifying
@Query(value = "update FormUser set status = ?1 where id = ?2")
void updateStatusById(Integer status, Long userId);
void updateStatusById(Boolean status, Long userId);
}

@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
@ -27,7 +28,7 @@ public class DebtFormController {
@ApiOperation("新建债务表单")
@PostMapping("/saveDebtForm")
public ResponseEntity<Object> saveTask(@RequestBody Debt debt){
public ResponseEntity<Object> saveTask(@Validated @RequestBody Debt debt){
debtFormService.saveDebtForm(debt);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}

@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletRequest;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;
@ -46,13 +47,13 @@ public class FormUserController {
@PostMapping("/userInfo")
@ApiOperation("获取用户详情")
public CommonResponse<Map<String, Object>> userInfo(@NotNull(message = "不能为空") String userToken) {
return formUserService.getUserDetail(userToken);
public CommonResponse<Map<String, Object>> userInfo(ServletRequest servletRequest) {
return formUserService.getUserDetail(servletRequest);
}
@ApiOperation("修改公司状态")
@GetMapping("/updateUserStatus")
public ResponseEntity<Object> create(@RequestParam("status") Integer status,
public ResponseEntity<Object> create(@RequestParam("status") Boolean status,
@RequestParam("id") Long id) {
formUserService.updateFormUserStatus(status, id);
return new ResponseEntity<>(HttpStatus.OK);

@ -6,6 +6,8 @@ import com.baiye.modules.system.service.dto.FormUserQueryCriteria;
import com.baiye.modules.system.service.dto.UserLoginDTO;
import org.springframework.data.domain.Pageable;
import javax.servlet.ServletRequest;
import java.io.IOException;
import java.util.Map;
/**
@ -29,10 +31,10 @@ public interface FormUserService {
/**
*
* @param userToken
* @param servletRequest
* @return
*/
CommonResponse<Map<String, Object>> getUserDetail(String userToken);
CommonResponse<Map<String, Object>> getUserDetail(ServletRequest servletRequest);
/**
@ -55,5 +57,5 @@ public interface FormUserService {
* @param status
* @param id
*/
void updateFormUserStatus(Integer status, Long id);
void updateFormUserStatus(Boolean status, Long id);
}

@ -16,7 +16,6 @@
package com.baiye.modules.system.service.dto;
import com.baiye.model.base.BaseDTO;
import com.baiye.modules.system.domain.FormUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
@ -47,10 +46,16 @@ public class FormUserDto extends BaseDTO implements Serializable {
@ApiModelProperty(value = "手机号码")
private String phone;
@ApiModelProperty(value = "邀请数量")
private Integer invitationNums;
@ApiModelProperty(value = "最后登录时间")
private Date lastLoginTime;
private List<FormUser> userList;
@ApiModelProperty(value = "账户状态")
private Boolean status;
private List<Map<String, Object>> userList;

@ -11,4 +11,7 @@ public class FormUserQueryCriteria {
@Query
private Long id;
@Query(blurry = "phone")
private String phone;
}

@ -1,7 +1,7 @@
package com.baiye.modules.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baiye.exception.BadRequestException;
import com.baiye.manager.UserTokenManager;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.domain.FormUser;
import com.baiye.modules.system.repository.DebtFormRepository;
@ -9,9 +9,11 @@ import com.baiye.modules.system.repository.FormUserRepository;
import com.baiye.modules.system.service.DebtFormService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
@Service
@RequiredArgsConstructor
@ -22,18 +24,34 @@ public class DebtFormServiceImpl implements DebtFormService {
private final FormUserRepository formUserRepository;
private final RedisTemplate<String, String> redisTemplate;
@Override
@Transactional(rollbackOn = Exception.class)
public void saveDebtForm(Debt debt) {
debt.setCreateBy(UserTokenManager.getUserId(debt.getUserToken()));
debtFormRepository.save(debt);
FormUser formUser = formUserRepository.findById(debt.getUserId()).orElseGet(FormUser::new);
if (debt.getOptimisticVersion() == null || formUser.getOptimisticVersion() != debt.getOptimisticVersion()){
log.info("=================================版本号不一致=========================================");
throw new BadRequestException("刷新后重试");
String phone = debt.getNid();
String phoneVerifyCode = redisTemplate.opsForValue().get(phone);
if (phoneVerifyCode == null || !phoneVerifyCode.equalsIgnoreCase(debt.getVerificationCode().toString())) {
throw new BadRequestException("验证码错误");
}
// 删除验证码
redisTemplate.delete(phone);
List<Debt> list = debtFormRepository.findByNid(debt.getNid());
//去重,第一次填表的拉取人数才+1
if (CollUtil.isEmpty(list)){
FormUser formUser = formUserRepository.findById(debt.getUserId()).orElseGet(FormUser::new);
if (formUser.getId() == null){
throw new BadRequestException("提交失败,错误的邀请人");
}
//插入表单
debtFormRepository.save(debt);
//拉取人数+1,本人不能拉取本人
if (formUser.getId() != debt.getUserId()){
formUser.setInvitationNums(formUser.getInvitationNums() + 1);
formUserRepository.save(formUser);
}
}else {
throw new BadRequestException("单个号码只能提交一次");
}
formUser.setInvitationNums(formUser.getInvitationNums() + 1);
formUser.setOptimisticVersion(formUser.getOptimisticVersion() + 1);
formUserRepository.save(formUser);
}
}

@ -6,10 +6,10 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.http.CommonResponse;
import com.baiye.manager.UserTokenManager;
import com.baiye.model.enums.ResponseCode;
import com.baiye.modules.system.domain.Debt;
import com.baiye.modules.system.domain.FormUser;
import com.baiye.modules.system.repository.DebtFormRepository;
import com.baiye.modules.system.repository.FormUserRepository;
@ -32,6 +32,9 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -60,10 +63,14 @@ public class FormUserServiceImpl implements FormUserService {
private int workerId;
@Value("${snowflake.datacenterId}")
private int datacenterId;
@Value("${debt.qrcode}")
@Value("${debt.qrcodeUrl}")
String qrcodeUrl;
@Value("${debt.qrcodeLogo}")
String qrcodeLogo;
@Value("${debt.visitUrl}")
String visitUrl;
@Value("${debt.reqUrl}")
String reqUrl;
@Override
@ -95,7 +102,7 @@ public class FormUserServiceImpl implements FormUserService {
FormUser formUser = formUserRepository.findByPhone(phone);
// 已存在用户
if (ObjectUtil.isNotNull(formUser)) {
if (formUser.getStatus() != DefaultNumberConstants.ONE_NUMBER){
if (!formUser.getStatus()){
return CommonResponse.createByErrorMessage(ResponseCode.ACCOUNT_DISABLED.getDesc());
}
formUser.setLastLoginTime(DateUtil.date());
@ -109,25 +116,37 @@ public class FormUserServiceImpl implements FormUserService {
Long formUserId = IdUtil.getSnowflake(workerId, datacenterId).nextId();
formUser.setId(formUserId);
formUser.setPhone(phone);
formUser.setStatus(DefaultNumberConstants.ONE_NUMBER);
formUser.setOptimisticVersion((long) DefaultNumberConstants.ZERO_NUMBER);
formUser.setInvitationNums(DefaultNumberConstants.ZERO_NUMBER);
// token
String userToken =
UserTokenManager.generateToken(formUserId);
String visit = visitUrl + userToken;
String visit = visitUrl + formUserId;
// 生成二维码图片
String qrcodeName = IdUtil.simpleUUID();
QRCodeUtil.encode
(visit, qrcodeUrl + "qrcode.jpg", qrcodeUrl, formUserId.toString(), Boolean.TRUE);
formUser.setQrCodePath(qrcodeUrl + userToken + ".jpg");
(visit, qrcodeLogo, qrcodeUrl, qrcodeName, Boolean.TRUE);
//放开文件权限
String os = System.getProperty("os.name");
if(!os.toLowerCase().startsWith("win")){
try {
Runtime.getRuntime().exec("chmod 644 -R " + qrcodeUrl + qrcodeName + ".jpg");
}catch (IOException e){
log.info("==================二维码开放权限失败====================");
throw new BadRequestException("失败");
}
}
formUser.setQrCodePath(reqUrl + qrcodeName + ".jpg");
formUser.setLastLoginTime(DateUtil.date());
formUserRepository.save(formUser);
return CommonResponse.createBySuccess(userToken);
}
@Override
public CommonResponse<Map<String, Object>> getUserDetail(String userToken) {
public CommonResponse<Map<String, Object>> getUserDetail(ServletRequest servletRequest) {
Map<String, Object> map = new HashMap<>(DefaultNumberConstants.SIXTEEN_NUMBER);
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String userToken = httpServletRequest.getHeader("userToken");
Long userId = UserTokenManager.getUserId(userToken);
Date now = DateUtil.date();
if (userId == null) {
@ -135,7 +154,8 @@ public class FormUserServiceImpl implements FormUserService {
}
FormUser formUser = findUserById(userId);
if (formUser == null || StringUtils.isBlank(formUser.getQrCodePath())) {
return CommonResponse.createByErrorMessage(ResponseCode.USER_INFORMATION_ERROR.getDesc());
return CommonResponse.createByErrorCodeMessage
(Integer.parseInt(ResponseCode.USER_INFORMATION_ERROR.getCode()),ResponseCode.USER_INFORMATION_ERROR.getDesc());
}
map.put("qrCode", formUser.getQrCodePath());
// 提前一周
@ -173,28 +193,14 @@ public class FormUserServiceImpl implements FormUserService {
public Map<String, Object> queryAll(FormUserQueryCriteria formUserQueryCriteria, Pageable pageable) {
Page<FormUser> debtPage = formUserRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, formUserQueryCriteria, criteriaBuilder), pageable);
Page<FormUserDto> map = debtPage.map(formUserMapper::toDto);
Map<Long, List<Debt>> listMap = debtFormRepository.findAll().stream().collect(Collectors.groupingBy(Debt::getUserId, Collectors.toList()));
for (FormUserDto formUserDto : map) {
List<Long> list = new ArrayList<>();
if (listMap.containsKey(formUserDto.getId())) {
List<Debt> debtList = listMap.get(formUserDto.getId());
for (Debt debt : debtList) {
list.add(debt.getCreateBy());
}
}
if (CollUtil.isNotEmpty(list)) {
List<FormUser> formUsersAll = formUserRepository.findAllById(list);
formUserDto.setUserList(formUsersAll);
}
}
return PageUtil.toPage(map);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateFormUserStatus(Integer status, Long id) {
public void updateFormUserStatus(Boolean status, Long id) {
formUserRepository.updateStatusById(status, id);
}
}
}

@ -7,7 +7,6 @@ spring:
redis:
database: 2
host: 118.178.137.129
# host: 101.35.109.129
timeout: 5000
datasource:
druid:
@ -166,5 +165,7 @@ template:
#债务表单二维码扫描地址及二维码存放路径
debt:
visitUrl: http://118.178.137.129:8866/api/pppppppppppp?visitUrl=
qrcode: /home/eladmin/qrcode/
visitUrl: http://118.178.137.129:8800/pages/login#/pages/statisticsForm/index?userId=
qrcodeUrl: /home/eladmin/qrcode/
qrcodeLogo: /home/eladmin/qrcode/qrcode.jpg
reqUrl: /qrcode/

@ -166,5 +166,7 @@ template:
#债务表单二维码扫描地址及二维码存放路径
debt:
visitUrl: https://baiyee.vip/api/pppppppppppp?visitUrl=
qrcode: /home/eladmin/qrcode/
visitUrl: https://baiyee.vip:8800/pages/statisticsForm/index?userId=
qrcodeUrl: /home/eladmin/qrcode/
qrcodeLogo: /home/eladmin/qrcode/qrcode.jpg
reqUrl: /qrcode/
Loading…
Cancel
Save