This commit is contained in:
qitz
2023-10-17 16:00:02 +08:00
25 changed files with 1090 additions and 91 deletions
@@ -49,6 +49,14 @@ public interface SysRoleMapper
*/
public SysRole selectRoleById(Long roleId);
/**
* 根据角色名称查询角色id
* @param roleName
* @return
*/
public Long selectRoleIdByName(String roleName);
/**
* 根据用户ID查询角色
*
@@ -134,4 +134,11 @@ public interface SysUserMapper
public SysUser checkEmailUnique(String email);
List<SysUser> selectUserListByIds(@Param("idList") List<Long> idList);
/**
* 根据身份证号查询用户信息
* @param identityNo
* @return
*/
SysUser selectUserByIdCard(@Param("idCard")String identityNo);
}
@@ -104,6 +104,16 @@ public class CaseAffiliate extends BaseEntity {
/** 送达电子邮件 */
private String sendEmail;
private String applicantAgentUserId;
public String getApplicantAgentUserId() {
return applicantAgentUserId;
}
public void setApplicantAgentUserId(String applicantAgentUserId) {
this.applicantAgentUserId = applicantAgentUserId;
}
/** 快递单号 */
private String trackNum;
@@ -340,6 +340,30 @@ public class CaseApplication extends BaseEntity {
*/
private String userId;
private List<Long> deptIds;
/**
* 部门长状态
*/
private List<Integer> deptHeadStatus;
/**
* 财务状态
*/
private Integer financeStatus;
public Integer getFinanceStatus() {
return financeStatus;
}
public void setFinanceStatus(Integer financeStatus) {
this.financeStatus = financeStatus;
}
public List<Integer> getDeptHeadStatus() {
return deptHeadStatus;
}
public void setDeptHeadStatus(List<Integer> deptHeadStatus) {
this.deptHeadStatus = deptHeadStatus;
}
public List<Long> getDeptIds() {
return deptIds;
@@ -3,9 +3,10 @@ package com.ruoyi.wisdomarbitrate.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
@Data
public class IdentityAuthentication extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -15,6 +16,20 @@ public class IdentityAuthentication extends BaseEntity {
private String name;
/** 身份证号 */
private String identityNo;
/**
* 短信验证码
*/
private String VerifyCode;
private String passWord;
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 身份证地址
*/
private String idAddress;
/** 认证时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date certificationTime;
@@ -44,6 +59,10 @@ public class IdentityAuthentication extends BaseEntity {
private Long userId;
/** 用户账号 */
private String userName;
/**
* 用户昵称
*/
private String nickName;
/** EID商户id */
private String merchantId;
@@ -0,0 +1,32 @@
package com.ruoyi.wisdomarbitrate.domain.vo;
import lombok.Data;
/**
* @author wangqiong
* @description 待办数量
* @date 2023-10-17 09:48
*/
@Data
public class ToDoCount {
private int caseApply; // 立案申请
private int caseApplyCheck; // 待立案审查
private int caseApplyPay; // 待缴费
private int caseApplyPayCheck; // 待缴费确认
private int caseApplyEvidence; //待案件质证
private int caseApplyGroupCheck; // 待组庭审核
private int caseApplyGroupConfirm; // 待组庭确定
// private int caseApplyGroupNotice;
private int caseApplyArbitrateWay; // 待审核仲裁方式
private int caseApplyGroupOnline; // 待开庭审理
private int caseApplyGroupOffline; // 待书面审理
private int caseApplyAward; // 待生成仲裁文书
private int caseApplyAwardCheck; // 待核验仲裁文书
private int caseApplyAwardConfirm; // 待审核仲裁文书
private int caseApplyAwardSign; // 待仲裁文书签名
private int caseApplyAwardSeal; // 待仲裁文书用印
private int caseApplyAwardSend; // 待仲裁文书送达
private int caseApplyStored; // 待案件归档
private int caseApplyArchived; // 已归档
}
@@ -0,0 +1,63 @@
package com.ruoyi.wisdomarbitrate.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* 微信小程序用户注册登录
*/
@Data
public class WeChatUserVO {
/**
* id
*/
private Long id;
/**
* 微信用户唯一标识
*/
private String openId;
/**
* 微信授权的code,用户登录凭证
*/
private String wxCode;
/**
* 姓名
*/
@NotEmpty(message = "姓名不能为空")
private String name;
/** 身份证号 */
@NotEmpty(message = "身份证号不能为空")
private String identityNo;
/** 认证时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date certificationTime;
/** 认证状态 */
private Integer certificationStatus;
private String password;
/**
* 电话
*/
@NotEmpty(message = "电话不能为空")
private String phone;
/**
* 验证码
*/
private String verifyCode;
/**
* 邮箱
*/
@NotEmpty(message = "邮箱不能为空")
private String email;
/**
* 创建人
*/
private String createBy;
private String updateBy;
}
@@ -4,6 +4,7 @@ import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.dto.CaseConfirmPayDTO;
import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -43,7 +44,7 @@ public interface CaseApplicationMapper {
/**
* 查询仲裁员根据案件id
* @param arbitrator
* @param id
* @return
*/
String selectArbitratorList(@Param("id") String id);
@@ -53,4 +54,17 @@ public interface CaseApplicationMapper {
* @param payDTO
*/
void updatePayType(CaseConfirmPayDTO payDTO);
/**
* 查询部门长案件
* @param caseApplication
* @return
*/
List<CaseApplication> selectDeptHeadCaseApplicationList(@Param("caseApplication") CaseApplication caseApplication, @Param("statusList")List<Integer> caseStatusList);
ToDoCount selectAdminCaseToDoCount();
ToDoCount selectDeptHeadCaseToDoCount( @Param("statusList")List<Integer> caseStatusList);
ToDoCount selectTodoCountByRole(CaseApplication caseApplication);
}
@@ -8,6 +8,5 @@ public interface IdentityAuthenticationMapper {
IdentityAuthentication selectIdentityAuthentication(IdentityAuthentication identityAuthentication);
void updateIdentityAuthentication(IdentityAuthentication ientityAuthentication);
}
@@ -0,0 +1,21 @@
package com.ruoyi.wisdomarbitrate.mapper;
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author wangqiong
* @description 微信小程序用户注册登录
* @date 2023-10-16 11:45
*/
@Repository
public interface WeChatUserMapper {
int insertUser(WeChatUserVO userVO);
int updateUser(WeChatUserVO userVO);
List<WeChatUserVO> selectIdentityAuthentication(WeChatUserVO userVO);
WeChatUserVO selectUserByOppenId(@Param("oppenId") String openId);
}
@@ -6,11 +6,13 @@ import com.ruoyi.wisdomarbitrate.domain.ArbitrateRecord;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
import java.util.List;
public interface ICaseApplicationService {
List<CaseApplication> selectCaseApplicationList(CaseApplication caseApplication);
List<CaseApplication> selectCaseApplicationListByRole(CaseApplication caseApplication);
int insertcaseApplication(CaseApplication caseApplication);
@@ -52,4 +54,10 @@ public interface ICaseApplicationService {
AjaxResult creatTrialRecord(ArbitrateRecord arbitrateRecord);
CaseApplication selectSignSealUrl(CaseApplication caseApplication) throws EsignDemoException;
/**
* 查询待办数量
* @return
*/
ToDoCount selectToDoCount();
}
@@ -0,0 +1,18 @@
package com.ruoyi.wisdomarbitrate.service;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
/**
* 微信小程序用户注册登录
*/
public interface WeChatUserService {
String sendCode(WeChatUserVO userVO);
AjaxResult registerUser(IdentityAuthentication ientityAuthentication);
}
@@ -13,6 +13,7 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.constant.CaseApplicationConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.*;
@@ -27,7 +28,11 @@ import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.mapper.SysDeptMapper;
@@ -79,6 +84,10 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private SysUserRoleMapper userRoleMapper;
@Autowired
private SysRoleMapper roleMapper;
@Autowired
private SealSignRecordMapper sealSignRecordMapper;
@Autowired
private CaseLogRecordMapper caseLogRecordMapper;
@@ -98,41 +107,118 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
* @return
*/
// @Override
// public List<CaseApplication> selectCaseApplicationList(CaseApplication caseApplication) {
// // 获取登录用户
// LoginUser loginUser = getLoginUser();
// SysUser user = loginUser.getUser();
// Long userId = user.getUserId();
// Long deptId = user.getDeptId();
// List<SysRole> roles = user.getRoles();
// // 查询登录人身份证号
// SysUser sysUser = sysUserMapper.selectUserById(userId);
// caseApplication.setIdCard(sysUser.getIdCard());
// caseApplication.setUserId(String.valueOf(userId));
// startPage();
// for (SysRole role : roles) {
// // 超级管理员和仲裁委(部门长)案件,可查看所有案件 √
// if(role.getRoleName().equals("超级管理员")
// ||role.getRoleName().equals("仲裁委")
// ||role.getRoleName().equals("部门长")){
// return caseApplicationMapper.selectAdminCaseApplicationList(caseApplication);
// }
// if(role.getRoleName().equals("法律顾问")){
// // 查询角色有关的用户部门
// List<Long> deptIds = sysDeptMapper.selectUserDeptListByRoleId(role.getRoleId());
// caseApplication.setDeptIds(deptIds);
// }
// if(StrUtil.isEmpty(caseApplication.getNameId())&&role.getRoleName().equals("申请人")){
// // 查询角色有关的用户部门
// caseApplication.setNameId(String.valueOf(sysUser.getDeptId()));
// }
// }
//
//
// // 根据条件查询申请人,被申请人,仲裁员,法律顾问案件
// return caseApplicationMapper.selectCaseApplicationList(caseApplication);
//
// }
public List<CaseApplication> selectCaseApplicationListByRole(CaseApplication caseApplication) {
// 获取登录用户
LoginUser loginUser = getLoginUser();
SysUser user = loginUser.getUser();
Long userId = user.getUserId();
// 查询登录人身份证号
SysUser sysUser = sysUserMapper.selectUserById(userId);
List<SysRole> roles = sysUser.getRoles();
// 没有角色不能查看案件列表
if(CollectionUtil.isEmpty(roles)){
throw new ServiceException("该用户没有角色权限");
}
startPage();
for (SysRole role : roles) {
// 超级管理员和仲裁委(部门长)案件,可查看所有案件 √
if(role.getRoleName().equals("超级管理员")
){
return caseApplicationMapper.selectAdminCaseApplicationList(caseApplication);
}
if(role.getRoleName().equals("仲裁委")
||role.getRoleName().equals("部门长")){
List<Integer> caseStatusList=new ArrayList<>();
caseStatusList.add(CaseApplicationConstants.CONFIRMDED_PENDING_TRIAL);
caseStatusList.add(CaseApplicationConstants.SIGN_ARBITRATION);
caseStatusList.add(CaseApplicationConstants.ARBITRATED_SEAL);
caseApplication.setDeptHeadStatus(caseStatusList);
}
if(role.getRoleName().equals("仲裁员")){
caseApplication.setUserId(String.valueOf(userId));
}
if(role.getRoleName().equals("财务")){
caseApplication.setFinanceStatus(CaseApplicationConstants.PENDING_PAYMENT_CONFIRM);
}
if(role.getRoleName().equals("法律顾问")){
// 查询角色有关的用户部门
List<Long> deptIds = sysDeptMapper.selectUserDeptListByRoleId(role.getRoleId());
caseApplication.setDeptIds(deptIds);
}
if(StrUtil.isEmpty(caseApplication.getNameId())&&role.getRoleName().equals("申请人")){
// 查询角色有关的用户部门
caseApplication.setNameId(String.valueOf(sysUser.getDeptId()));
}
if(role.getRoleName().equals("被申请人")){
//
caseApplication.setIdCard(String.valueOf(sysUser.getIdCard()));
}
}
// 根据条件查询申请人,被申请人,仲裁员,法律顾问案件
return caseApplicationMapper.selectCaseApplicationList(caseApplication);
}
@Override
public ToDoCount selectToDoCount() {
// 获取登录用户
LoginUser loginUser = getLoginUser();
SysUser user = loginUser.getUser();
Long userId = user.getUserId();
// 查询登录人身份证号
SysUser sysUser = sysUserMapper.selectUserById(userId);
List<SysRole> roles = sysUser.getRoles();
// 没有角色不能查看案件列表
if(CollectionUtil.isEmpty(roles)){
throw new ServiceException("该用户没有角色权限");
}
CaseApplication caseApplication = new CaseApplication();
List<Integer> caseStatusList=new ArrayList<>();
for (SysRole role : roles) {
// 超级管理员和仲裁委(部门长)案件,可查看所有案件 √
if(role.getRoleName().equals("超级管理员")
){
return caseApplicationMapper.selectAdminCaseToDoCount();
}
if(role.getRoleName().equals("仲裁委")
||role.getRoleName().equals("部门长")){
caseStatusList.add(CaseApplicationConstants.CONFIRMDED_PENDING_TRIAL);
caseStatusList.add(CaseApplicationConstants.SIGN_ARBITRATION);
caseStatusList.add(CaseApplicationConstants.ARBITRATED_SEAL);
caseApplication.setDeptHeadStatus(caseStatusList);
}
if(role.getRoleName().equals("仲裁员")){
caseApplication.setUserId(String.valueOf(userId));
}
if(role.getRoleName().equals("财务")){
caseApplication.setFinanceStatus(CaseApplicationConstants.PENDING_PAYMENT_CONFIRM);
}
if(role.getRoleName().equals("法律顾问")){
// 查询角色有关的用户部门
List<Long> deptIds = sysDeptMapper.selectUserDeptListByRoleId(role.getRoleId());
caseApplication.setDeptIds(deptIds);
}
if(StrUtil.isEmpty(caseApplication.getNameId())&&role.getRoleName().equals("申请人")){
// 查询角色有关的用户部门
caseApplication.setNameId(String.valueOf(sysUser.getDeptId()));
}
if(role.getRoleName().equals("被申请人")){
//
caseApplication.setIdCard(String.valueOf(sysUser.getIdCard()));
}
}
// 根据条件查询申请人,被申请人,仲裁员,法律顾问案件
return caseApplicationMapper.selectTodoCountByRole(caseApplication);
}
@Override
public List<CaseApplication> selectCaseApplicationList(CaseApplication caseApplication) {
return caseApplicationMapper.selectAdminCaseApplicationList(caseApplication);
@@ -188,6 +274,11 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
caseAffiliate.setApplicationOrganName(caseAffiliate.getName());
}
// 组装申请代理人信息
String agentInfoFlag = buildAgentInfo(caseAffiliate);
if(StrUtil.isNotEmpty(agentInfoFlag)){
throw new ServiceException(agentInfoFlag);
}
}
}
@@ -275,8 +366,14 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
caseAffiliate.setApplicationOrganId(String.valueOf(dept.getDeptId()));
}
String agentInfoFlag = buildAgentInfo(caseAffiliate);
if(StrUtil.isNotEmpty(agentInfoFlag)){
throw new ServiceException(agentInfoFlag);
}
}
caseAffiliateMapper.updataCaseAffiliate(caseAffiliate);
caseAffiliateMapper.updataCaseAffiliate(caseAffiliate);
}
}
@@ -292,6 +389,68 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
return rows;
}
/**
* 组装申请代理人信息
* @param caseAffiliate
*/
private String buildAgentInfo(CaseAffiliate caseAffiliate) {
if (caseAffiliate.getIdentityType()==1&&StrUtil.isNotEmpty(caseAffiliate.getNameAgent())) {
// 查询申请人角色id
Long roleId = roleMapper.selectRoleIdByName("申请人");
// 组装申请机构代理人信息,用户表新增并且和部门关联
// 根据代理人身份证去用户表查询,有修改,么有新增
SysUser agentUser = sysUserMapper.selectUserByIdCard(caseAffiliate.getIdentityNumAgent());
if (agentUser == null) {
agentUser = new SysUser();
agentUser.setIdCard(caseAffiliate.getIdentityNumAgent());
agentUser.setNickName(caseAffiliate.getNameAgent());
agentUser.setUserName(caseAffiliate.getIdentityNumAgent());
agentUser.setPhonenumber(caseAffiliate.getContactTelphoneAgent());
agentUser.setPassword(SecurityUtils.encryptPassword(Constants.DEFAULT_PASSWORD));
agentUser.setDeptId(Long.valueOf(caseAffiliate.getApplicationOrganId()));
int insertUserRow = sysUserMapper.insertUser(agentUser);
// 新增角色为申请人
ArrayList<SysUserRole> sysUserRoles = new ArrayList<>();
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(agentUser.getUserId());
sysUserRole.setRoleId(roleId);
sysUserRoles.add(sysUserRole);
if(CollectionUtil.isNotEmpty(sysUserRoles)) {
userRoleMapper.batchUserRole(sysUserRoles);
}
if (insertUserRow > 0) {
caseAffiliate.setApplicantAgentUserId(String.valueOf(agentUser.getUserId()));
// 发送短信 todo
}
} else if (null != agentUser.getDeptId() && !String.valueOf(agentUser.getDeptId()).equals(caseAffiliate.getApplicationOrganId())) {
return "申请机构与申请代理人不匹配";
} else if (null != agentUser.getDeptId() && String.valueOf(agentUser.getDeptId()).equals(caseAffiliate.getApplicationOrganId())){
// 同步用户表和案件关联人表的手机号和名称
caseAffiliate.setContactTelphoneAgent(agentUser.getPhonenumber());
caseAffiliate.setNameAgent(agentUser.getNickName());
caseAffiliate.setApplicantAgentUserId(String.valueOf(agentUser.getUserId()));
// 新增角色为申请人
if(agentUser.getRoleIds()!=null) {
List<Long> longList = Arrays.asList(agentUser.getRoleIds());
if(!longList.contains(roleId)) {
ArrayList<SysUserRole> sysUserRoles = new ArrayList<>();
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(agentUser.getUserId());
sysUserRole.setRoleId(roleId);
sysUserRoles.add(sysUserRole);
if (CollectionUtil.isNotEmpty(sysUserRoles)) {
userRoleMapper.batchUserRole(sysUserRoles);
}
}
}
}
}
return null;
}
@Override
@Transactional
public int submitCaseApplication(CaseApplication caseApplication) {
@@ -417,7 +576,13 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
// }else {
// caseApplicationListinsert.add(caseApplication);
// }
caseApplicationListinsert.add(caseApplication);
if(StrUtil.isEmpty(caseApplication.getErrorMsg())) {
caseApplicationListinsert.add(caseApplication);
}else {
// 拼接错误信息
failureMsg.append("<br/>").append("第").append(i+2).append("行:").append(caseApplication.getErrorMsg().toString());
}
}else {
// 拼接错误信息
failureMsg.append("<br/>").append("第").append(i+2).append("行:").append(caseApplication.getErrorMsg().toString());
@@ -465,9 +630,11 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
if(caseAffiliates!=null&&caseAffiliates.size()>0){
for (CaseAffiliate caseAffiliate : caseAffiliates){
caseAffiliate.setCaseAppliId(caseApplicationItera.getId());
}
caseAffiliateMapper.batchCaseAffiliate(caseAffiliates);
}
successNum++;
successMsg.append("<br/>" + successNum + "、立案编号 " + caseApplicationItera.getCaseNum() + " 导入成功");
}
@@ -1225,6 +1392,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
return caseApplication;
}
@Override
@Transactional
public int pendTralSure(CaseApplication caseApplication) {
@@ -1338,6 +1507,15 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
if(StrUtil.isNotEmpty(caseApplication.getName())){
setApplicantOrganization(caseAffiliate, caseApplication, deptMap);
}
String s = buildAgentInfo(caseAffiliate);
if(StrUtil.isNotEmpty(s)){
StringBuilder errorMsg = caseApplication.getErrorMsg();
if(StrUtil.isEmpty(errorMsg)){
errorMsg=new StringBuilder();
}
errorMsg.append(s);
caseApplication.setErrorMsg(errorMsg);
}
caseAffiliatesnew.add(caseAffiliate);
// 组装被申请人信息
@@ -8,8 +8,10 @@ import cn.hutool.crypto.symmetric.SymmetricCrypto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.mapper.IdentityAuthenticationMapper;
import com.ruoyi.wisdomarbitrate.service.IdentityAuthenticationService;
@@ -46,6 +48,7 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
@Autowired
private IdentityAuthenticationMapper identityAuthenticationMapper;
private SysUserMapper sysUserMapper;
private static final Logger log = LoggerFactory.getLogger(IdentityAuthenticationServiceImpl.class);
@@ -147,7 +150,7 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
@Transactional
public AjaxResult selectIdentityAuthenticaRespon(IdentityAuthentication ientityAuthentication) {
String eidToken = ientityAuthentication.getEidToken();
IdentityAuthentication authentication = new IdentityAuthentication();
try {
Credential cred = new Credential(credentialSecretId, credentialSecretKey);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
@@ -181,8 +184,8 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
String idcardno = info.getString("idnum");
String name = info.getString("name");
//2.在用户认证表中插入用户认证记录
LoginUser loginUser = SecurityUtils.getLoginUser();
IdentityAuthentication authentication = new IdentityAuthentication();
// LoginUser loginUser = SecurityUtils.getLoginUser();
/**
* 用户名
* 用户名id
@@ -192,15 +195,17 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
* 认证状态0表示成功
* 请求id
*/
authentication.setUserName(loginUser.getUsername());
authentication.setUserId(loginUser.getUserId());
// authentication.setUserName(loginUser.getUsername());
// authentication.setUserId(loginUser.getUserId());
authentication.setName(name);
authentication.setIdentityNo(idcardno);
authentication.setCertificationTime(new Date());
authentication.setCertificationStatus(0);
authentication.setCreateBy(loginUser.getUsername());
authentication.setCreateBy(name);
// authentication.setCreateBy(loginUser.getUsername());
try {
identityAuthenticationMapper.insertIdentityAuthentication(authentication);
authentication.setId(authentication.getId());
} catch (Exception e) {
System.out.println("认证记录新增失败");
}
@@ -210,12 +215,14 @@ public class IdentityAuthenticationServiceImpl implements IdentityAuthentication
}
}
}
return AjaxResult.success();
return AjaxResult.success(authentication);
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
return null;
return AjaxResult.success();
}
}
@@ -0,0 +1,157 @@
package com.ruoyi.wisdomarbitrate.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
import com.ruoyi.wisdomarbitrate.mapper.IdentityAuthenticationMapper;
import com.ruoyi.wisdomarbitrate.mapper.WeChatUserMapper;
import com.ruoyi.wisdomarbitrate.service.WeChatUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
/**
* @author wangqiong
* @description 微信小程序用户注册登录
* @date 2023-10-16 11:45
*/
@Service
@Slf4j
public class WeChatUserServiceImpl implements WeChatUserService {
String appid="wx91cb8459dca561b4";//自行获取
//小程序secret
String secret="190aaa3bda96a65d25318fbb0e133fc6";//自己去公众号后台获取
// 获取openId
String openIdUrl = "https://api.weixin.qq.com/sns/jscode2session";
@Autowired
private WeChatUserMapper weChatUserMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private IdentityAuthenticationMapper identityAuthenticationMapper;
@Override
public String sendCode(WeChatUserVO userVO) {
Random random = new Random();
String code = "";
for (int i = 0; i < 6; i++) {
code += random.nextInt(10);
}
SmsUtils.SendSmsRequest request = new SmsUtils.SendSmsRequest();
request.setTemplateId("1955047");
// 1954926 普通短信 短信验证码 验证码:,为了保证您的账户安全,请勿想他人泄露验证码信息。如非本人操作,请忽略本短信。
request.setPhone(userVO.getPhone());
request.setTemplateParamSet(new String[]{ code});
Boolean flag = SmsUtils.sendSms(request);
if(flag){
setCodeCache(userVO.getPhone(),code);
return "短信发送成功";
}
return "短信发送失败";
}
/**
* 设置验证码缓存
*
* @param key 参数键
* @param code 验证码
*/
public static void setCodeCache(String key, String code)
{
SpringUtils.getBean(RedisCache.class).setCacheObject(getVerifyCodeCacheKey(key), code, 5,TimeUnit.MINUTES);
}
/**
* 获取字典缓存
*
* @param key 参数键
* @return dictDatas 字典数据列表
*/
public static String getCodeCache(String key)
{
String codeCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getVerifyCodeCacheKey(key));
if (StringUtils.isNotNull(codeCache))
{
return codeCache;
}
return null;
}
private static String getVerifyCodeCacheKey(String key) {
return CacheConstants.WE_CHAT_SMS_VERIFY_CODE_KEY + key;
}
@Transactional
@Override
public AjaxResult registerUser(IdentityAuthentication ientityAuthentication) {
String codeCache = getCodeCache(ientityAuthentication.getPhone());
// 校验短信验证码
if(StrUtil.isEmpty(codeCache)){
return AjaxResult.warn("验证码校验失败");
}else if(!codeCache.equals(ientityAuthentication.getVerifyCode())){
return AjaxResult.warn("验证码校验失败");
}
SysUser sysUserName=sysUserMapper.selectUserByUserName(ientityAuthentication.getUserName());
if(sysUserName!=null){
return AjaxResult.warn("账号已存在");
}
// 根据身份证查询系统用户表中是否存在该用户,存在则同步已认证的信息,不存在则新增
SysUser sysUser=sysUserMapper.selectUserByIdCard(ientityAuthentication.getIdentityNo());
if(sysUser!=null){
sysUser.setIdCard(ientityAuthentication.getIdentityNo());
sysUser.setNickName(ientityAuthentication.getName());
sysUser.setUserName(ientityAuthentication.getUserName());
sysUser.setPhonenumber(ientityAuthentication.getPhone());
sysUser.setEmail(ientityAuthentication.getEmail());
sysUser.setPassword(SecurityUtils.encryptPassword(ientityAuthentication.getPassWord()));
sysUserMapper.updateUser(sysUser);
ientityAuthentication.setUserId(sysUser.getUserId());
}else {
sysUser=new SysUser();
// 用户名设为电话号
sysUser.setUserName(ientityAuthentication.getPhone());
sysUser.setIdCard(ientityAuthentication.getIdentityNo());
sysUser.setNickName(ientityAuthentication.getName());
sysUser.setUserName(ientityAuthentication.getUserName());
sysUser.setPhonenumber(ientityAuthentication.getPhone());
sysUser.setEmail(ientityAuthentication.getEmail());
sysUser.setCreateBy(ientityAuthentication.getPhone());
sysUser.setPassword(SecurityUtils.encryptPassword(ientityAuthentication.getPassWord()));
int row = sysUserMapper.insertUser(sysUser);
if(row<1) {
return AjaxResult.warn("注册失败");
}
}
ientityAuthentication.setUserId(sysUser.getUserId());
ientityAuthentication.setUserName(sysUser.getUserName());
// 已经认证过的用户才能注册,认证表中已经有该数据
identityAuthenticationMapper.updateIdentityAuthentication(ientityAuthentication);
return AjaxResult.success("注册成功");
}
}