短信验证码 邮箱验证码,修改密码

This commit is contained in:
TL
2025-07-29 10:05:56 +08:00
parent 75ec4627d1
commit b19d5076fe
13 changed files with 277 additions and 12 deletions

View File

@ -0,0 +1,45 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.controller;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.zyhy.ebtp.supplier.base.service.ISupplierRegistrationService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/supplierRegistration")
public class SupplierRegistrationController {
@Autowired
private ISupplierRegistrationService supplierRegistrationService;
/**
* 境内获取短信验证码
* @return
*/
@ApiOperation("供应商注册-发送验证码")
@GetMapping("/sendPhoneCode")
public BaseResponse sendPhoneCode(String contactsPhone) {
if (ObjectUtils.isEmpty(contactsPhone)) {
return BaseResponse.fail("手机号不能空");
}
boolean sent = supplierRegistrationService.sendSmsCode(contactsPhone);
return BaseResponse.success(sent);
}
/**
* 境外获取邮箱验证码
* @return
*/
@ApiOperation("供应商注册-发送验证码")
@GetMapping("/sendEmailCode")
public BaseResponse sendEmailCode(String contactsEmail) {
if (ObjectUtils.isEmpty(contactsEmail)) {
return BaseResponse.fail("邮箱不能空");
}
return BaseResponse.success(supplierRegistrationService.sendEmailCode(contactsEmail));
}
}

View File

@ -1,6 +1,7 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.controller;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.base.entity.SysSupplierUser;
import com.chinaunicom.mall.ebtp.common.base.entity.SysUser;
import com.chinaunicom.mall.ebtp.common.base.entity.SysUserVO;
import com.chinaunicom.zyhy.ebtp.supplier.base.service.IUserService;
@ -49,6 +50,10 @@ public class UserController {
}
@PostMapping("/supplierUserPwd")
public BaseResponse supplierUserPwd(@RequestBody SysSupplierUser sysSupplierUser) {
return BaseResponse.success(userService.supplierUserPwd(sysSupplierUser));
}

View File

@ -0,0 +1,32 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.service;
/**
* 注册获取验证码
*/
public interface ISupplierRegistrationService {
/**
* 手机号获取验证码
* @param phone
* @return
*/
boolean sendSmsCode(String phone);
/**
* 获取邮箱验证码
* @param phone
* @return
*/
String sendEmailCode(String phone);
/**
* 校验手机号和验证码
*/
boolean verifySmsCode(String phone, String code);
}

View File

@ -28,4 +28,8 @@ public interface IUserService{
SysSupplierUser register(CoscoSupplierBase coscoSupplierBase);
boolean supplierUserPwd(SysSupplierUser sysSupplierUser);
}

View File

@ -0,0 +1,68 @@
package com.chinaunicom.zyhy.ebtp.supplier.base.service.impl;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.mail.client.MailFeignClient;
import com.chinaunicom.mall.ebtp.common.mail.entity.MailRequest;
import com.chinaunicom.mall.ebtp.common.sms.client.SmsFeignClient;
import com.chinaunicom.mall.ebtp.common.sms.entity.SmsSendResponse;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
import com.chinaunicom.mall.ebtp.login.common.RSA;
import com.chinaunicom.zyhy.ebtp.supplier.base.service.ISupplierRegistrationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;
@Service
public class SupplierRegistrationServiceImpl implements ISupplierRegistrationService {
@Autowired(required = false)
@Qualifier("cacheRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
@Value("${login.password.privateKey}")
private String privateKey;
@Autowired
private SmsFeignClient smsFeignClient;
@Autowired
private MailFeignClient mailFeignClient;
@Override
public boolean sendSmsCode(String phone) {
// 生成验证码
String code = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
// 发送短信
String message = "您的验证码是:" + code + "请在5分钟内输入。";
BaseResponse<SmsSendResponse.TemplateSMS> templateSMSBaseResponse = smsFeignClient.sendSms(new String[]{phone}, "1180212", new String[]{message}, PropertyUtils.getSnowflakeId(), null);
redisTemplate.opsForValue().set("FORGOT_REG_CODE:" + phone, code, 5, TimeUnit.MINUTES);
return templateSMSBaseResponse.isSuccess();
}
@Override
public String sendEmailCode(String email) {
// 生成验证码
String code = String.valueOf((int)((Math.random() * 9 + 1) * 100000));
// 发送短信
String message = "您的验证码是:" + code + "请在5分钟内输入。";
MailRequest mailRequest = new MailRequest();
mailRequest.setTo(email);
mailRequest.setSubject("中远海运");
mailRequest.setContent(message);
//BaseResponse<String> templateSMSBaseResponse = mailFeignClient.sendSimpleMail(mailRequest);
redisTemplate.opsForValue().set("FORGOT_REG_CODE:" + email, code, 5, TimeUnit.MINUTES);
return message;
}
@Override
public boolean verifySmsCode(String phone, String code) {
Object redisCode = redisTemplate.opsForValue().get("FORGOT_REG_CODE:" + phone);
return code.equals(redisCode);
}
}

View File

@ -3,11 +3,13 @@ package com.chinaunicom.zyhy.ebtp.supplier.base.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaunicom.mall.ebtp.common.base.client.SystemClient;
import com.chinaunicom.mall.ebtp.common.base.entity.*;
import com.chinaunicom.mall.ebtp.common.base.util.TokenUtil;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.CoscoType;
import com.chinaunicom.zyhy.ebtp.supplier.base.service.IUserService;
import com.chinaunicom.zyhy.ebtp.supplier.base.vo.SelectUserVo;
import com.chinaunicom.zyhy.ebtp.supplier.base.vo.UserVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoSupplierBase;
import com.chinaunicom.zyhy.ebtp.supplier.util.Md5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -42,6 +44,11 @@ public class UserServiceImpl implements IUserService {
return systemClient.getUser(userId).getData();
}
/**
* 供应商注册同步接口
* @param coscoSupplierBase
* @return
*/
@Override
public SysSupplierUser register(CoscoSupplierBase coscoSupplierBase) {
SupplierRegistrationVO supplierRegistrationVO = new SupplierRegistrationVO();
@ -71,6 +78,14 @@ public class UserServiceImpl implements IUserService {
return systemClient.register(supplierRegistrationVO).getData();
}
@Override
public boolean supplierUserPwd(SysSupplierUser sysSupplierUser) {
BaseCacheUser currentUser = TokenUtil.getCurrentUser();
sysSupplierUser.setUserId(Long.parseLong(currentUser.getUserId()));
sysSupplierUser.setPassword(Md5Util.encode(sysSupplierUser.getPassword()));
return systemClient.update(sysSupplierUser).isSuccess();
}
public List<UserVo> getUser(SelectUserVo vo) {
BaseResponse<List<SysUser>> userlist = systemClient.getUserlist(new SysUser());
List<UserVo> list = new ArrayList<>();

View File

@ -9,6 +9,7 @@ import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse;
import com.chinaunicom.mall.ebtp.common.base.util.TokenUtil;
import com.chinaunicom.zyhy.ebtp.supplier.base.constant.CoscoType;
import com.chinaunicom.zyhy.ebtp.supplier.base.service.ISupplierRegistrationService;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoAccessSupplierCategory;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoSupplierBase;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoSupplierUser;
@ -42,6 +43,11 @@ public class CoscoSupplierBaseController extends BaseController {
@Autowired
private ICoscoSupplierUserService coscoSupplierUserService;
@Autowired
private ISupplierRegistrationService supplierRegistrationService;
/**
* 查询当前登录人的所在单位下,未准入供应商分页数据
* @return 返回结果
@ -73,7 +79,21 @@ public class CoscoSupplierBaseController extends BaseController {
*/
@ApiOperation("新增数据")
@PostMapping("/add")
public BaseResponse<Integer> supplierRegistration(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid CoscoSupplierVo vo){
public BaseResponse supplierRegistration(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid CoscoSupplierVo vo){
if(CoscoType.SUPPLIER_TYPE_OVS.equals(vo.getCoscoSupplierBase().getSupplierType())){
//如果是境外企业
boolean valid = supplierRegistrationService.verifySmsCode(vo.getCoscoSupplierBase().getContactsEmail(),vo.getEncryptValue());
if (!valid) {
return BaseResponse.fail("验证码错误");
}
}
if(CoscoType.SUPPLIER_TYPE_DVS.equals(vo.getCoscoSupplierBase().getSupplierType())){
//如果是境内企业
boolean valid = supplierRegistrationService.verifySmsCode(vo.getCoscoSupplierBase().getContactsPhone(),vo.getEncryptValue());
if (!valid) {
return BaseResponse.fail("验证码错误");
}
}
return BaseResponse.success(coscoSupplierBaseService.insertCoscoSupplierBase(vo,null));
}
@ -84,12 +104,13 @@ public class CoscoSupplierBaseController extends BaseController {
*/
@ApiOperation("新增数据")
@PostMapping("/addAgent")
public BaseResponse<Integer> addAgent(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid CoscoSupplierVo vo){
public BaseResponse addAgent(@ApiParam(value = "对象数据", required = true) @RequestBody @Valid CoscoSupplierVo vo){
BaseCacheUser currentUser = TokenUtil.getCurrentUser();
String userId = currentUser.getUserId();//登录人id
CoscoSupplierBase coscoSupplierBase = vo.getCoscoSupplierBase();
coscoSupplierBase.setFillinStatus(CoscoType.FILLIN_STATUS_S);//代录入标识
coscoSupplierBase.setFillinBy(userId);//代理人
coscoSupplierBase.setDeptId(currentUser.getDeptId());
return BaseResponse.success(coscoSupplierBaseService.insertCoscoSupplierBase(vo,userId));
}
@ -115,7 +136,7 @@ public class CoscoSupplierBaseController extends BaseController {
BaseCacheUser currentUser = TokenUtil.getCurrentUser();
String userId = currentUser.getUserId();//登录人id
coscoSupplierBase.setFillinBy(userId);
return BaseResponse.success(coscoSupplierBaseService.getPage(coscoSupplierBase));
return BaseResponse.success(coscoSupplierBaseService.getPageAgent(coscoSupplierBase));
}
@ -259,7 +280,7 @@ public class CoscoSupplierBaseController extends BaseController {
// 动态设置导出字段(忽略未标注字段)
Set<String> includeFields = new HashSet<>(Arrays.asList(
"personName", "idCard","personPhone", "orgName","deptName","createTime" // 指定要导出的字段名
"personName", "idCard","personPhone", "orgName","createName","createTime" // 指定要导出的字段名
));
String fileName = URLEncoder.encode("个人合格供应商.xlsx", "UTF-8");

View File

@ -266,4 +266,7 @@ public class CoscoSupplierBase {
//统计数
private String countNum;
@ExcelProperty("创建人")
private String createName;
}

View File

@ -31,4 +31,7 @@ public class CoscoSupplierVo {
//变更说明
private String changeDesc;
//验证码
private String encryptValue;
}

View File

@ -19,6 +19,10 @@ public interface ICoscoSupplierBaseService {
IPage<CoscoSupplierBase> getPage(CoscoSupplierBase coscoSupplierBase);
IPage<CoscoSupplierBase> getPageAgent(CoscoSupplierBase coscoSupplierBase);
IPage<CoscoSupplierBase> getHgSupplierBasePage(CoscoSupplierBase coscoSupplierBase);
IPage<CoscoSupplierBase> getMySupplierBasePage(CoscoSupplierBase coscoSupplierBase);
@ -59,7 +63,7 @@ public interface ICoscoSupplierBaseService {
* 新增中远海运_供应商_基本信息
*
*/
public Integer insertCoscoSupplierBase(CoscoSupplierVo vo,String userId);
public String insertCoscoSupplierBase(CoscoSupplierVo vo,String userId);
/**
* 修改中远海运_供应商_基本信息

View File

@ -4,10 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
import com.chinaunicom.mall.ebtp.common.base.entity.SysOrg;
import com.chinaunicom.mall.ebtp.common.base.entity.SysOrgVO;
import com.chinaunicom.mall.ebtp.common.base.entity.SysSupplierUser;
import com.chinaunicom.mall.ebtp.common.base.entity.*;
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
import com.chinaunicom.mall.ebtp.common.base.util.TokenUtil;
import com.chinaunicom.mall.ebtp.common.util.PropertyUtils;
@ -28,6 +25,8 @@ import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.service.*;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.OrgDeptVo;
import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.vo.SupplierPageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -105,6 +104,9 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
@Autowired
private IDictService dictService;
@Autowired(required = false)
@Qualifier("cacheRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
@ -142,6 +144,23 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
return pageData;
}
/**
* 代录入分页查询
* @param coscoSupplierBase
* @return
*/
@Override
public IPage<CoscoSupplierBase> getPageAgent(CoscoSupplierBase coscoSupplierBase) {
IPage<CoscoSupplierBase> page = new Page<>(coscoSupplierBase.getPageNo(), coscoSupplierBase.getPageSize());
IPage<CoscoSupplierBase> pageData = coscoSupplierBaseMapper.selectPageList(page, coscoSupplierBase);
for(CoscoSupplierBase supplierBase : pageData.getRecords()){
OrgDeptVo orgDeptVo = orgService.getOrgDeptInfo(supplierBase.getDeptId());
supplierBase.setOrgName(orgDeptVo.getOrgName());
supplierBase.setDeptName(orgDeptVo.getDeptName());
}
return pageData;
}
/**
* 合格、个人
* @param coscoSupplierBase
@ -155,6 +174,9 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
OrgDeptVo orgDeptVo = orgService.getOrgDeptInfo(supplierBase.getDeptId());
supplierBase.setOrgName(orgDeptVo.getOrgName());
supplierBase.setDeptName(orgDeptVo.getDeptName());
if(!ObjectUtils.isEmpty(supplierBase.getCreateBy())){
supplierBase.setCreateName(userService.getUserInfo(supplierBase.getCreateBy()).getName());
}
}
return pageData;
}
@ -212,7 +234,10 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
OrgDeptVo orgDeptVo = orgService.getOrgDeptInfo(supplierBase.getDeptId());
supplierBase.setOrgName(orgDeptVo.getOrgName());
supplierBase.setDeptName(orgDeptVo.getDeptName());
supplierBase.setEnterpriseTypeCn(dictService.getDictName(supplierBase.getEnterpriseType(),CoscoType.ENTERPRISE_TYPE));
if(!CoscoType.SUPPLIER_TYPE_PE.equals(supplierBase.getSupplierType())){
supplierBase.setEnterpriseTypeCn(dictService.getDictName(supplierBase.getEnterpriseType(),CoscoType.ENTERPRISE_TYPE));
}
supplierBase.setCreateName(userService.getUserInfo(supplierBase.getCreateBy()).getName());
}
return list;
}
@ -288,7 +313,7 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
*/
@Override
@Transactional
public Integer insertCoscoSupplierBase(CoscoSupplierVo vo, String userId) {
public String insertCoscoSupplierBase(CoscoSupplierVo vo, String userId) {
String supplierId = PropertyUtils.getSnowflakeId();//供应商id
Date date = new Date();
//资质信息集合
@ -414,7 +439,19 @@ public class CoscoSupplierBaseServiceImpl extends BaseServiceImpl<CoscoSupplierB
coscoSupplierBase.setUpdateBy(userId);
coscoSupplierBase.setUpdateTime(date);
coscoSupplierBase.setLastUpdateTime(date);
return coscoSupplierBaseMapper.insertCoscoSupplierBase(coscoSupplierBase);
coscoSupplierBaseMapper.insertCoscoSupplierBase(coscoSupplierBase);
// 删除验证码
if(CoscoType.SUPPLIER_TYPE_OVS.equals(vo.getCoscoSupplierBase().getSupplierType())){
//如果是境外企业
redisTemplate.delete("FORGOT_REG_CODE:" + coscoSupplierBase.getContactsEmail());
}
if(CoscoType.SUPPLIER_TYPE_DVS.equals(vo.getCoscoSupplierBase().getSupplierType())){
//如果是境内企业
redisTemplate.delete("FORGOT_REG_CODE:" + coscoSupplierBase.getContactsPhone());
}
return sysSupplierUser.getUsername();
}
/**

View File

@ -0,0 +1,25 @@
package com.chinaunicom.zyhy.ebtp.supplier.util;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5加密工具类
*/
public class Md5Util {
/**
* 对字符串进行MD5加密
* @param input 明文
* @return 32位小写MD5
*/
public static String encode(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
return new BigInteger(1, md.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("MD5加密失败", e);
}
}
}

View File

@ -211,6 +211,7 @@
csb.person_account,
csb.create_time,
caw.update_time,
csb.create_by,
cas.access_status,
CASE cas.access_status
WHEN '0' THEN '未准入'
@ -729,6 +730,7 @@
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="lastUpdateTime != null">last_update_time,</if>
<if test="deptId != null">dept_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
@ -772,6 +774,7 @@
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="lastUpdateTime != null">#{lastUpdateTime},</if>
<if test="deptId != null">#{deptId},</if>
</trim>
</insert>
<insert id="batchCoscoSupplierBase" parameterType="java.util.List">