后台进件迁移,消息列表,大小机构详情更改
This commit is contained in:
parent
14e9548e89
commit
e27fa5a8e1
|
|
@ -23,6 +23,10 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author admin
|
* @author admin
|
||||||
|
|
@ -61,4 +65,13 @@ public class Shell {
|
||||||
RestTemplate restTemplate(){
|
RestTemplate restTemplate(){
|
||||||
return new RestTemplate();
|
return new RestTemplate();
|
||||||
}
|
}
|
||||||
|
@Bean
|
||||||
|
public ThreadPoolExecutor threadPoolExecutor() {
|
||||||
|
return new ThreadPoolExecutor(10,
|
||||||
|
20,
|
||||||
|
60L,
|
||||||
|
TimeUnit.SECONDS,
|
||||||
|
new ArrayBlockingQueue<>(10));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import com.chaozhanggui.admin.system.service.AgencyService;
|
||||||
import com.chaozhanggui.admin.system.util.MD5Util;
|
import com.chaozhanggui.admin.system.util.MD5Util;
|
||||||
import com.chaozhanggui.admin.system.util.SignUtils;
|
import com.chaozhanggui.admin.system.util.SignUtils;
|
||||||
import com.chaozhanggui.common.system.config.RespBody;
|
import com.chaozhanggui.common.system.config.RespBody;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussUserApp;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussUserInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -55,11 +57,11 @@ public class AgencyController {
|
||||||
}
|
}
|
||||||
return new RespBody("999997");
|
return new RespBody("999997");
|
||||||
}
|
}
|
||||||
// @OpLog(opName = "更改机构", opDetail = "更改机构", opCode = "AGENCY_UPDATE")
|
@OpLog(opName = "更改机构", opDetail = "更改机构", opCode = "AGENCY_UPDATE")
|
||||||
// @GetMapping("updateAgency")
|
@PostMapping("updateAgency")
|
||||||
// public RespBody updateAgencyInfo(){
|
public RespBody updateAgencyInfo(@RequestBody TbPlussUserInfo userInfo){
|
||||||
// agencyService.updateAgency()
|
return agencyService.updateAgency(userInfo);
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("AgencyInfo")
|
@GetMapping("AgencyInfo")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.chaozhanggui.admin.system.controller;
|
||||||
|
|
||||||
|
import cn.hutool.db.Page;
|
||||||
|
import com.chaozhanggui.admin.system.service.NotificationService;
|
||||||
|
import com.chaozhanggui.common.system.config.RespBody;
|
||||||
|
import com.chaozhanggui.dao.system.dao.TbPlussNoticeMapper;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 消息通知
|
||||||
|
*/
|
||||||
|
@CrossOrigin(origins = "*")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/notification")
|
||||||
|
@Slf4j
|
||||||
|
public class NotificationController {
|
||||||
|
@Resource
|
||||||
|
private NotificationService notificationService;
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@ResponseBody
|
||||||
|
public RespBody notificationQuery(@RequestParam("currPage") Integer currPage, @RequestParam("size")Integer size){
|
||||||
|
return notificationService.notificationQuery(currPage,size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
|
@ -76,10 +77,30 @@ public class PromotionImageController {
|
||||||
return new RespBody("999994");
|
return new RespBody("999994");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邝工需求
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@PostMapping("/testRequest")
|
@PostMapping("/testRequest")
|
||||||
public RespBody testRequest(){
|
public RespBody testRequest(){
|
||||||
int randomNumber = new Random().nextInt(6);
|
int randomNumber = new Random().nextInt(6);
|
||||||
List<Object> objects = new ArrayList<>();
|
List<Object> objects = new ArrayList<>();
|
||||||
return new RespBody(String.valueOf(randomNumber),objects);
|
return new RespBody(String.valueOf(randomNumber),objects);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 邝工需求
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/testRequestBoolean")
|
||||||
|
public RespBody testRequestBoolean(){
|
||||||
|
Random random = new Random();
|
||||||
|
int value = random.nextInt(2);
|
||||||
|
if (value == 0) {
|
||||||
|
return new RespBody("000000","success");
|
||||||
|
} else {
|
||||||
|
return new RespBody("000000","fail");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,6 @@ public class AdminWebConfig implements WebMvcConfigurer {
|
||||||
registry.addInterceptor(new LoginInterceptor(redisUtil))
|
registry.addInterceptor(new LoginInterceptor(redisUtil))
|
||||||
.addPathPatterns()
|
.addPathPatterns()
|
||||||
// 如果有静态资源的时候可以在这个地方放行
|
// 如果有静态资源的时候可以在这个地方放行
|
||||||
.excludePathPatterns("/","/user/doLogin","/agency/mytest","/agency/queryAgency","/promotion/testRequest","/agency/sendmessage");
|
.excludePathPatterns("/","/user/doLogin","/agency/mytest","/agency/queryAgency","/promotion/testRequest","/promotion/testRequestBoolean","/agency/sendmessage");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -161,25 +161,54 @@ public class AgencyService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public RespBody updateAgency(TbPlussUserInfo userInfo){
|
||||||
|
if (userInfo.getPhone() != null){
|
||||||
|
TbPlussUserApp userApp = new TbPlussUserApp();
|
||||||
|
userApp.setLoginname(userInfo.getPhone());
|
||||||
|
userApp.setUserid(Math.toIntExact(userInfo.getId()));
|
||||||
|
userInfoMapper.updateByPrimaryKey(userInfo);
|
||||||
|
userAppMapper.updateByPrimaryKeySelective(userApp);
|
||||||
|
}
|
||||||
|
//如有不存在的情况则添加数据
|
||||||
|
if (userInfo.getIdCard() != null){
|
||||||
|
idCardMapper.updateByPrimaryKeySelective(userInfo.getIdCard());
|
||||||
|
}else {
|
||||||
|
idCardMapper.insertSelective(userInfo.getIdCard());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userInfo.getCashAccount() != null){
|
||||||
|
cashAccountMapper.updateByPrimaryKeySelective(userInfo.getCashAccount());
|
||||||
|
}else {
|
||||||
|
cashAccountMapper.insertSelective(userInfo.getCashAccount());
|
||||||
|
}
|
||||||
|
return new RespBody("000000");
|
||||||
|
}
|
||||||
|
|
||||||
public RespBody getAgencyInfo(Integer userId){
|
public RespBody getAgencyInfo(Integer userId){
|
||||||
//首先判断是不是大小机构
|
//首先判断是不是大小机构
|
||||||
TbPlussUserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId);
|
TbPlussUserPromotion userPromotion = userPromotionMapper.selectByPrimaryKey(userId);
|
||||||
if (userPromotion == null ||"FO".equals(userPromotion.getTypeCode()) || "SO".equals(userPromotion.getTypeCode())){
|
if (userPromotion == null){
|
||||||
return new RespBody("000086");
|
return new RespBody("000086");
|
||||||
}
|
}
|
||||||
//查找大小机构的详情信息
|
if ("FO".equals(userPromotion.getTypeCode()) || "SO".equals(userPromotion.getTypeCode())){
|
||||||
//支付宝
|
//查找大小机构的详情信息
|
||||||
TbPlussCashAccount tbPlussCashAccount = cashAccountMapper.selectByUserId(String.valueOf(userId));
|
//支付宝
|
||||||
//实名信息
|
TbPlussCashAccount tbPlussCashAccount = cashAccountMapper.selectByUserId(String.valueOf(userId));
|
||||||
TbPlussIdCard tbPlussIdCard = idCardMapper.selectCertByUserId(userId, TbPlussIdCard.TYPE_CERT);
|
//实名信息
|
||||||
//登录手机号
|
TbPlussIdCard tbPlussIdCard = idCardMapper.selectCertByUserId(userId, TbPlussIdCard.TYPE_CERT);
|
||||||
TbPlussUserApp tbPlussUserApp = userAppMapper.selectByUserId(userId);
|
//登录手机号
|
||||||
|
TbPlussUserInfo tbPlussUserInfo = userInfoMapper.selectByPrimaryKey(Long.valueOf(userId));
|
||||||
|
|
||||||
HashMap<Object, Object> map = new HashMap<>();
|
HashMap<Object, Object> map = new HashMap<>();
|
||||||
map.put("zfb", tbPlussCashAccount);
|
map.put("cashAccount", tbPlussCashAccount == null? new TbPlussCashAccount() : tbPlussCashAccount);
|
||||||
map.put("idCard", tbPlussIdCard);
|
map.put("idCard", tbPlussIdCard == null? new TbPlussIdCard() : tbPlussIdCard);
|
||||||
map.put("phone", tbPlussUserApp == null? null:tbPlussUserApp.getLoginname());
|
map.put("phone", tbPlussUserInfo == null? null:tbPlussUserInfo.getPhone());
|
||||||
return new RespBody(map);
|
map.put("userId", tbPlussUserInfo == null? null:tbPlussUserInfo.getId());
|
||||||
|
return new RespBody(map);
|
||||||
|
|
||||||
|
}
|
||||||
|
return new RespBody("000086");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.chaozhanggui.admin.system.service;
|
||||||
|
|
||||||
|
import com.chaozhanggui.common.system.config.RespBody;
|
||||||
|
import com.chaozhanggui.dao.system.dao.TbPlussNoticeMapper;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussNotice;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussNotification;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class NotificationService {
|
||||||
|
@Resource
|
||||||
|
private TbPlussNoticeMapper tbPlussNoticeMapper;
|
||||||
|
|
||||||
|
public RespBody notificationQuery(Integer currPage, Integer size){
|
||||||
|
PageHelper.startPage(currPage, size);
|
||||||
|
List<TbPlussNotice> notificationList = tbPlussNoticeMapper.queryNotification();
|
||||||
|
PageInfo pageInfo=new PageInfo(notificationList);
|
||||||
|
return new RespBody(pageInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -54,6 +54,12 @@
|
||||||
<version>4.38.37.ALL</version>
|
<version>4.38.37.ALL</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.coobird</groupId>
|
||||||
|
<artifactId>thumbnailator</artifactId>
|
||||||
|
<version>0.4.14</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.chaozhanggui.common.system.util;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.coobird.thumbnailator.Thumbnails;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class Base64Util {
|
||||||
|
private static final Integer KB = 1024;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param origPicContent
|
||||||
|
* @param desFileSize 期望文件大小,单位KB
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String compressPic(String origPicContent, Integer desFileSize) {
|
||||||
|
ByteArrayInputStream in = null;
|
||||||
|
ByteArrayOutputStream out = null;
|
||||||
|
try {
|
||||||
|
byte[] bytes = Base64.getDecoder().decode(origPicContent);
|
||||||
|
while (bytes.length > desFileSize * KB) {
|
||||||
|
in = new ByteArrayInputStream(bytes);
|
||||||
|
out = new ByteArrayOutputStream();
|
||||||
|
Thumbnails.of(in)
|
||||||
|
.scale(0.9f)
|
||||||
|
.outputQuality(1)
|
||||||
|
.toOutputStream(out);
|
||||||
|
bytes = out.toByteArray();
|
||||||
|
}
|
||||||
|
return Base64.getEncoder().encodeToString(bytes).replaceAll("[\r\n]","");
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error ("decode buffer fail, message:{}", e.getMessage (), e);
|
||||||
|
} finally {
|
||||||
|
if (in != null) {
|
||||||
|
try {
|
||||||
|
in.close ();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error ("ByteArrayInputStream close fail, message:{}", e.getMessage (), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (out != null) {
|
||||||
|
try {
|
||||||
|
out.close ();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error ("ByteArrayOutputStream close fail, message:{}", e.getMessage (), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return origPicContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.chaozhanggui.common.system.util;
|
package com.chaozhanggui.common.system.util;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
@ -10,6 +12,37 @@ import java.net.URL;
|
||||||
* @author lyf
|
* @author lyf
|
||||||
*/
|
*/
|
||||||
public class FileUtil {
|
public class FileUtil {
|
||||||
|
|
||||||
|
public static String getBase64FromInputStream(InputStream in) {
|
||||||
|
// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
|
||||||
|
byte[] data = null;
|
||||||
|
// 读取图片字节数组
|
||||||
|
try {
|
||||||
|
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
|
||||||
|
byte[] buff = new byte[100];
|
||||||
|
int rc = 0;
|
||||||
|
while ((rc = in.read(buff, 0, 100)) > 0) {
|
||||||
|
swapStream.write(buff, 0, rc);
|
||||||
|
}
|
||||||
|
data = swapStream.toByteArray();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (in != null) {
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return new String(Base64.encodeBase64(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
public static byte[] url2Bytes(String url) throws IOException {
|
public static byte[] url2Bytes(String url) throws IOException {
|
||||||
URL urlConet = new URL(url);
|
URL urlConet = new URL(url);
|
||||||
HttpURLConnection con = (HttpURLConnection) urlConet.openConnection();
|
HttpURLConnection con = (HttpURLConnection) urlConet.openConnection();
|
||||||
|
|
@ -26,4 +59,19 @@ public class FileUtil {
|
||||||
byte[] data = outStream.toByteArray();
|
byte[] data = outStream.toByteArray();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getBase64FromUrl(String url) {
|
||||||
|
try {
|
||||||
|
URL urlConn = new URL(url);
|
||||||
|
HttpURLConnection con = (HttpURLConnection) urlConn.openConnection();
|
||||||
|
con.setRequestMethod("GET");
|
||||||
|
con.setConnectTimeout(4 * 1000);
|
||||||
|
InputStream inStream = con.getInputStream();
|
||||||
|
|
||||||
|
return FileUtil.getBase64FromInputStream(inStream);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.chaozhanggui.common.system.util;
|
||||||
|
|
||||||
|
import lombok.val;
|
||||||
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class MapUtils {
|
||||||
|
/**
|
||||||
|
* map转MultiValueMap
|
||||||
|
* @param map 原map
|
||||||
|
* @return 。
|
||||||
|
*/
|
||||||
|
public static MultiValueMap<String, Object> map2MultiValueMap(Map<String, Object> map) {
|
||||||
|
val result = new LinkedMultiValueMap<String, Object>();
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||||
|
if (entry.getValue() != null) {
|
||||||
|
result.add(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,9 +2,12 @@ package com.chaozhanggui.dao.system.dao;
|
||||||
|
|
||||||
import com.chaozhanggui.dao.system.entity.TbPlussNotice;
|
import com.chaozhanggui.dao.system.entity.TbPlussNotice;
|
||||||
|
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussNotification;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface TbPlussNoticeMapper {
|
public interface TbPlussNoticeMapper {
|
||||||
|
|
@ -21,4 +24,6 @@ public interface TbPlussNoticeMapper {
|
||||||
int updateByPrimaryKeyWithBLOBs(TbPlussNotice record);
|
int updateByPrimaryKeyWithBLOBs(TbPlussNotice record);
|
||||||
|
|
||||||
int updateByPrimaryKey(TbPlussNotice record);
|
int updateByPrimaryKey(TbPlussNotice record);
|
||||||
|
|
||||||
|
List<TbPlussNotice> queryNotification();
|
||||||
}
|
}
|
||||||
|
|
@ -1,9 +1,68 @@
|
||||||
package com.chaozhanggui.dao.system.entity;
|
package com.chaozhanggui.dao.system.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.UUID;
|
||||||
|
@NoArgsConstructor
|
||||||
public class TbPlussNotice implements Serializable {
|
public class TbPlussNotice implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 身份证认证
|
||||||
|
*/
|
||||||
|
public static final int TYPE_ID_CARD_AUTH = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 商户认证
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MERCHANT_AUTH = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 员工退款申请
|
||||||
|
*/
|
||||||
|
public static final int TYPE_STAFF_REFUND = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 银行卡认证
|
||||||
|
*/
|
||||||
|
public static final int TYPE_BANK_AUTH = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 商户资料修改
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_DATA_CHANGE = 8;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 结算卡修改
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_BANK_CHANGE = 9;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 商户违规
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_OUT_LINE = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 商户异常
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_EXCEPTION = 11;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统通知 - 商户冻结
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_FREEZE = 12;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分润通知 - 商户分润
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_PROFIT = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分润通知 - 商户升级分润
|
||||||
|
*/
|
||||||
|
public static final int TYPE_MER_UPDATE_PROFIT = 7;
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
|
||||||
private String userid;
|
private String userid;
|
||||||
|
|
@ -33,6 +92,52 @@ public class TbPlussNotice implements Serializable {
|
||||||
private String uniquekey;
|
private String uniquekey;
|
||||||
|
|
||||||
private String conrtent;
|
private String conrtent;
|
||||||
|
/**
|
||||||
|
* @description:指定推送的ids
|
||||||
|
* @date: 2021/8/27 14:51
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String userIds;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String aliass;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String parentIds;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String scheduleFlag;
|
||||||
|
public TbPlussNotice(Integer firstType, Integer secondType, TbPlussUserApp userApp) {
|
||||||
|
this.setUserid(userApp.getUserid().toString());
|
||||||
|
this.setNoticecode(UUID.randomUUID().toString().replace("-", ""));
|
||||||
|
this.setCreatedt(new Date());
|
||||||
|
this.setUsername(userApp.getUsername());
|
||||||
|
this.setTypefirst(firstType);
|
||||||
|
this.setTypesecond(secondType);
|
||||||
|
this.setIsdeal(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TbPlussNotice(Integer firstType, Integer secondType, String userId) {
|
||||||
|
this.setUserid(userId);
|
||||||
|
this.setNoticecode(UUID.randomUUID().toString().replace("-", ""));
|
||||||
|
this.setCreatedt(new Date());
|
||||||
|
this.setTypefirst(firstType);
|
||||||
|
this.setTypesecond(secondType);
|
||||||
|
this.setIsdeal(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TbPlussNotice(Integer firstType, Integer secondType, String userId, String userName) {
|
||||||
|
this.setUserid(userId);
|
||||||
|
this.setNoticecode(UUID.randomUUID().toString().replace("-", ""));
|
||||||
|
this.setCreatedt(new Date());
|
||||||
|
this.setUsername(userName);
|
||||||
|
this.setTypefirst(firstType);
|
||||||
|
this.setTypesecond(secondType);
|
||||||
|
this.setIsdeal(0);
|
||||||
|
}
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,6 @@ public class TbPlussUserApp implements Serializable {
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private TbPlussIdCard idCard;
|
private TbPlussIdCard idCard;
|
||||||
|
|
||||||
|
|
||||||
public TbPlussIdCard getIdCard() {
|
public TbPlussIdCard getIdCard() {
|
||||||
return idCard;
|
return idCard;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.chaozhanggui.dao.system.entity;
|
package com.chaozhanggui.dao.system.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
@ -55,6 +57,33 @@ public class TbPlussUserInfo implements Serializable {
|
||||||
private String openid;
|
private String openid;
|
||||||
|
|
||||||
private String channelcode;
|
private String channelcode;
|
||||||
|
/**
|
||||||
|
* 结算支付宝信息
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private TbPlussCashAccount cashAccount;
|
||||||
|
|
||||||
|
public TbPlussCashAccount getCashAccount() {
|
||||||
|
return cashAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCashAccount(TbPlussCashAccount cashAccount) {
|
||||||
|
this.cashAccount = cashAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实名信息
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private TbPlussIdCard idCard;
|
||||||
|
|
||||||
|
public TbPlussIdCard getIdCard() {
|
||||||
|
return idCard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIdCard(TbPlussIdCard idCard) {
|
||||||
|
this.idCard = idCard;
|
||||||
|
}
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -110,9 +110,6 @@
|
||||||
<if test="imgnegative != null">
|
<if test="imgnegative != null">
|
||||||
imgNegative,
|
imgNegative,
|
||||||
</if>
|
</if>
|
||||||
<if test="virtypeflag != null">
|
|
||||||
virTypeFlag,
|
|
||||||
</if>
|
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
|
|
@ -154,9 +151,6 @@
|
||||||
<if test="imgnegative != null">
|
<if test="imgnegative != null">
|
||||||
#{imgnegative,jdbcType=VARCHAR},
|
#{imgnegative,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="virtypeflag != null">
|
|
||||||
#{virtypeflag,jdbcType=VARCHAR},
|
|
||||||
</if>
|
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<update id="updateByPrimaryKeySelective" parameterType="com.chaozhanggui.dao.system.entity.TbPlussIdCard">
|
<update id="updateByPrimaryKeySelective" parameterType="com.chaozhanggui.dao.system.entity.TbPlussIdCard">
|
||||||
|
|
@ -198,9 +192,6 @@
|
||||||
<if test="imgnegative != null">
|
<if test="imgnegative != null">
|
||||||
imgNegative = #{imgnegative,jdbcType=VARCHAR},
|
imgNegative = #{imgnegative,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="virtypeflag != null and virtypeflag != ''">
|
|
||||||
virTypeFlag = #{virtypeflag,jdbcType=VARCHAR},
|
|
||||||
</if>
|
|
||||||
</set>
|
</set>
|
||||||
where id = #{id,jdbcType=INTEGER}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</update>
|
</update>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,12 @@
|
||||||
from tb_pluss_notice
|
from tb_pluss_notice
|
||||||
where id = #{id,jdbcType=INTEGER}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</select>
|
</select>
|
||||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
<select id="queryNotification" resultType="com.chaozhanggui.dao.system.entity.TbPlussNotice">
|
||||||
|
select * from tb_pluss_notice
|
||||||
|
where typeFirst = 1
|
||||||
|
ORDER BY id DESC
|
||||||
|
</select>
|
||||||
|
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||||
delete from tb_pluss_notice
|
delete from tb_pluss_notice
|
||||||
where id = #{id,jdbcType=INTEGER}
|
where id = #{id,jdbcType=INTEGER}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
package com.chaozhanggui.merchant.entity.ys;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*图片以及文件相关实体类
|
||||||
|
|
||||||
|
*/
|
||||||
|
public class Meta {
|
||||||
|
/**
|
||||||
|
* 图片类别,A001-营业执照 A002-法人身份证正面(头像面) A003-法人身份证反面(国徽面) A004-结算账户正面(卡号面)
|
||||||
|
* A005-结算账户反面 A006-商户门头照片 A007-内景照片 A008-收银台照片 A009-手持身份证合影照片
|
||||||
|
* A010-收单协议盖章页 A011-开户许可证 A012-收单协议首页 A013-非法人身份证头像面 A014-非法人身份证国徽面
|
||||||
|
* B001-租赁合同 第一页 B002-租赁合同 第二页 B003-租赁合同 第三页 B004-法人/非法人手持授权书
|
||||||
|
* B005-法人/非法人结算授权书 B006-租赁面积图片 B007-经营业务图片 B008-其他1 B009-其他2
|
||||||
|
*/
|
||||||
|
private String picType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名
|
||||||
|
*/
|
||||||
|
private String picNm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入网申请流水号,调用商户入网申请接口成功会返回入网申请流水号。
|
||||||
|
*/
|
||||||
|
private String sysFlowId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入网申请流水号,调用商户入网申请接口成功会返回入网申请流水号。
|
||||||
|
*/
|
||||||
|
private String changeFlowId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件摘要,图片文件的文件摘要,即对图片文件的二进制内容进行sha256计算得到的值。 示例值:hjkahkjsjkfsjk78687dhjahdajhk
|
||||||
|
*/
|
||||||
|
private String sha256;
|
||||||
|
|
||||||
|
public String getPicType() {
|
||||||
|
return picType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPicType(String picType) {
|
||||||
|
this.picType = picType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPicNm() {
|
||||||
|
return picNm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPicNm(String picNm) {
|
||||||
|
this.picNm = picNm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSysFlowId() {
|
||||||
|
return sysFlowId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSysFlowId(String sysFlowId) {
|
||||||
|
this.sysFlowId = sysFlowId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChangeFlowId() {
|
||||||
|
return changeFlowId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChangeFlowId(String changeFlowId) {
|
||||||
|
this.changeFlowId = changeFlowId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSha256() {
|
||||||
|
return sha256;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSha256(String sha256) {
|
||||||
|
this.sha256 = sha256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -41,7 +41,7 @@ public class MerchantImageService {
|
||||||
* @param channelType 通道类型
|
* @param channelType 通道类型
|
||||||
* @return 进件图片资料
|
* @return 进件图片资料
|
||||||
*/
|
*/
|
||||||
List<TbPlussMerchantImage> getListOfMerch(String userId, String channelType){
|
public List<TbPlussMerchantImage> getListOfMerch(String userId, String channelType){
|
||||||
TbPlussMerchantBaseInfo merchantBaseInfo = merchantBaseInfoMapper.selectByUserId(userId);
|
TbPlussMerchantBaseInfo merchantBaseInfo = merchantBaseInfoMapper.selectByUserId(userId);
|
||||||
//查询图片
|
//查询图片
|
||||||
List<TbPlussMerchantImage> miList = merchantImageMapper.getListOfMerch(merchantBaseInfo.getMerchantcode());
|
List<TbPlussMerchantImage> miList = merchantImageMapper.getListOfMerch(merchantBaseInfo.getMerchantcode());
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.chaozhanggui.merchant.service.ys;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import com.chaozhanggui.dao.system.dao.TbPlussMerchantBaseInfoMapper;
|
||||||
|
import com.chaozhanggui.dao.system.dao.TbPlussNoticeMapper;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussMerchantBaseInfo;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussMerchantChannelStatus;
|
||||||
|
import com.chaozhanggui.dao.system.entity.TbPlussNotice;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static com.chaozhanggui.dao.system.entity.TbPlussNotice.TYPE_MERCHANT_AUTH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lyf
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MercAuditListener {
|
||||||
|
@Resource
|
||||||
|
private TbPlussMerchantBaseInfoMapper mbiMapper;
|
||||||
|
@Resource
|
||||||
|
private TbPlussNoticeMapper noticeMapper;
|
||||||
|
/**
|
||||||
|
* 进件失败后
|
||||||
|
* @param userId
|
||||||
|
* @param mcs
|
||||||
|
* @param msg
|
||||||
|
*/
|
||||||
|
public void onFail(String userId, TbPlussMerchantChannelStatus mcs, String msg) {
|
||||||
|
TbPlussMerchantBaseInfo mbi = mbiMapper.selectByMerchantcode(mcs.getMerchantcode());
|
||||||
|
|
||||||
|
String title2 = "银收客审核通知";
|
||||||
|
|
||||||
|
String msg2;
|
||||||
|
|
||||||
|
if (Objects.equals(mcs.getChannel(), 4)) {
|
||||||
|
msg2 = "商户D0进件驳回," + msg;
|
||||||
|
} else {
|
||||||
|
msg2 = "商户进件驳回," + msg;
|
||||||
|
}
|
||||||
|
String.valueOf(mbi.getUserid());
|
||||||
|
TbPlussNotice notice2 = new TbPlussNotice(1, 1, mbi.getUserid().toString());
|
||||||
|
notice2.setNoticecode("SHSH_" + System.currentTimeMillis() + RandomUtil.randomString(2));
|
||||||
|
notice2.setConrtent(msg2);
|
||||||
|
notice2.setTypefirst(1);
|
||||||
|
notice2.setTypesecond(TYPE_MERCHANT_AUTH);
|
||||||
|
noticeMapper.insertSelective(notice2);
|
||||||
|
//TODO 发送消息推送暂时没有
|
||||||
|
//generalPushUtil.sendAllPlatByAlias(Collections.singletonList(mbi.getUserId() + ""), title2, msg2, "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,14 @@ package com.chaozhanggui.merchant.service.ys;
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.codec.Base64;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.crypto.SecureUtil;
|
import cn.hutool.crypto.SecureUtil;
|
||||||
import cn.hutool.crypto.asymmetric.KeyType;
|
import cn.hutool.crypto.asymmetric.KeyType;
|
||||||
import cn.hutool.crypto.asymmetric.RSA;
|
import cn.hutool.crypto.asymmetric.RSA;
|
||||||
import cn.hutool.crypto.asymmetric.Sign;
|
import cn.hutool.crypto.asymmetric.Sign;
|
||||||
import cn.hutool.crypto.asymmetric.SignAlgorithm;
|
import cn.hutool.crypto.asymmetric.SignAlgorithm;
|
||||||
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import cn.hutool.crypto.symmetric.AES;
|
import cn.hutool.crypto.symmetric.AES;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
@ -16,15 +18,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
|
||||||
import com.chaozhanggui.common.system.config.MsgException;
|
import com.chaozhanggui.common.system.config.MsgException;
|
||||||
|
import com.chaozhanggui.common.system.util.Base64Util;
|
||||||
|
import com.chaozhanggui.common.system.util.FileUtil;
|
||||||
|
import com.chaozhanggui.common.system.util.MapUtils;
|
||||||
import com.chaozhanggui.common.system.util.SignUtils;
|
import com.chaozhanggui.common.system.util.SignUtils;
|
||||||
import com.chaozhanggui.dao.system.dao.*;
|
import com.chaozhanggui.dao.system.dao.*;
|
||||||
import com.chaozhanggui.dao.system.entity.*;
|
import com.chaozhanggui.dao.system.entity.*;
|
||||||
import com.chaozhanggui.dao.system.entity.DTO.AccountDTO;
|
import com.chaozhanggui.dao.system.entity.DTO.AccountDTO;
|
||||||
import com.chaozhanggui.merchant.entity.ys.*;
|
import com.chaozhanggui.merchant.entity.ys.*;
|
||||||
|
import com.chaozhanggui.merchant.service.sxf.MerchantImageService;
|
||||||
import com.chaozhanggui.merchant.service.sxf.RegionReflectService;
|
import com.chaozhanggui.merchant.service.sxf.RegionReflectService;
|
||||||
import com.chaozhanggui.merchant.service.sxf.SxfMerchantAuditService;
|
import com.chaozhanggui.merchant.service.sxf.SxfMerchantAuditService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.io.ByteArrayResource;
|
||||||
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
|
@ -34,15 +41,21 @@ import org.springframework.transaction.TransactionStatus;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
|
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
|
||||||
|
import org.springframework.transaction.support.TransactionTemplate;
|
||||||
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
import static com.chaozhanggui.dao.system.entity.TbPlussMerchantBaseInfo.MERCH_TYPE_MICRO;
|
import static com.chaozhanggui.dao.system.entity.TbPlussMerchantBaseInfo.MERCH_TYPE_MICRO;
|
||||||
|
|
||||||
|
|
@ -103,69 +116,78 @@ public class YSAuditServiceV3 {
|
||||||
private TbPlussMerchantChannelStatusMapper merchantChannelStatusMapper;
|
private TbPlussMerchantChannelStatusMapper merchantChannelStatusMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private TbPlussAccountMapper accountMapper;
|
private TbPlussAccountMapper accountMapper;
|
||||||
|
@Resource
|
||||||
|
private MerchantImageService merchantImageService;
|
||||||
|
@Resource
|
||||||
|
private MercAuditListener mercAuditListener;
|
||||||
|
@Resource
|
||||||
|
private ExecutorService executorService;
|
||||||
|
@Resource
|
||||||
|
private TransactionTemplate transactionTemplate;
|
||||||
/**
|
/**
|
||||||
* 银盛进件3.0
|
* 银盛进件3.0
|
||||||
* @param userId 用户id
|
* @param userId 用户id
|
||||||
*/
|
*/
|
||||||
// public void merchantAuditV3(String userId, boolean isFailCheck, Integer channel) {
|
public void merchantAuditV3(String userId, boolean isFailCheck, Integer channel) {
|
||||||
// try {
|
try {
|
||||||
// self.step1(userId,channel);
|
step1(userId,channel);
|
||||||
// executorService.execute(() -> {
|
executorService.execute(() -> {
|
||||||
// try {
|
try {
|
||||||
// self.step2(userId,channel);
|
step2(userId,channel);
|
||||||
// Thread.sleep(10000);
|
Thread.sleep(10000);
|
||||||
// self.step3(userId, channel);
|
step3(userId, channel);
|
||||||
// } catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// e.printStackTrace();
|
e.printStackTrace();
|
||||||
//
|
|
||||||
// MerchantBaseInfo mbi = mbiService.getMerchantBaseInfoByUserId(userId);
|
TbPlussMerchantBaseInfo mbi = merchantBaseInfoMapper.selectByUserId(userId);
|
||||||
// MerchantChannelStatus mcs = mcsService.getByMerchantCode(mbi.getMerchantCode(), channel);
|
TbPlussMerchantChannelStatus mcs = merchantChannelStatusMapper.getByMerchantCode(mbi.getMerchantcode(), String.valueOf(channel));
|
||||||
//
|
|
||||||
// if (e instanceof MsgException) {
|
if (e instanceof MsgException) {
|
||||||
// Serializable obj = ((MsgException) e).getObj();
|
Serializable obj = ((MsgException) e).getObj();
|
||||||
// if (obj instanceof RespEntity) {
|
if (obj instanceof RespEntity) {
|
||||||
// mcs.getExtra().putAll((JSONObject) JSON.toJSON(obj));
|
JSONObject extra = JSONObject.parseObject(mcs.getExtra());
|
||||||
// }
|
extra.putAll((JSONObject) JSON.toJSON(obj));
|
||||||
// }
|
}
|
||||||
//
|
}
|
||||||
// if (mcs != null && mcs.getChannel().equals(channel)) {
|
|
||||||
// mcs.setStatus(MerchantChannelStatus.AUDIT_STATUS_EXAMINING);
|
if (mcs != null && mcs.getChannel().equals(channel)) {
|
||||||
// mcs.setThirdStatus(MerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING);
|
mcs.setStatus(TbPlussMerchantChannelStatus.AUDIT_STATUS_EXAMINING);
|
||||||
// mcs.setRemark("银盛审核失败: " + e.getMessage());
|
mcs.setThirdstatus(TbPlussMerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING);
|
||||||
// mcs.setUpdateTime(new Date());
|
mcs.setRemark("银盛审核失败: " + e.getMessage());
|
||||||
// transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
mcs.setUpdatetime(new Date());
|
||||||
// @Override
|
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
||||||
// protected void doInTransactionWithoutResult(TransactionStatus status) {
|
@Override
|
||||||
// mcsService.updateById(mcs);
|
protected void doInTransactionWithoutResult(TransactionStatus status) {
|
||||||
// }
|
merchantChannelStatusMapper.updateByPrimaryKeySelective(mcs);
|
||||||
// });
|
}
|
||||||
// }
|
});
|
||||||
// }
|
}
|
||||||
// });
|
}
|
||||||
// } catch (Exception e) {
|
});
|
||||||
// e.printStackTrace();
|
} catch (Exception e) {
|
||||||
//
|
e.printStackTrace();
|
||||||
// MerchantBaseInfo mbi = mbiService.getMerchantBaseInfoByUserId(userId);
|
|
||||||
// MerchantChannelStatus mcs = mcsService.getByMerchantCode(mbi.getMerchantCode(), channel);
|
TbPlussMerchantBaseInfo mbi = merchantBaseInfoMapper.selectByUserId(userId);
|
||||||
//
|
TbPlussMerchantChannelStatus mcs = merchantChannelStatusMapper.getByMerchantCode(mbi.getMerchantcode(), String.valueOf(channel));
|
||||||
// if (mcs != null && Objects.equals(mcs.getChannel(), channel)) {
|
|
||||||
// mcs.setStatus(MerchantChannelStatus.AUDIT_STATUS_EXAMINING);
|
if (mcs != null && Objects.equals(mcs.getChannel(), channel)) {
|
||||||
// mcs.setThirdStatus(MerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING);
|
mcs.setStatus(TbPlussMerchantChannelStatus.AUDIT_STATUS_EXAMINING);
|
||||||
// mcs.setRemark("银盛审核失败: " + e.getMessage());
|
mcs.setThirdstatus(TbPlussMerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING);
|
||||||
// mcs.setUpdateTime(new Date());
|
mcs.setRemark("银盛审核失败: " + e.getMessage());
|
||||||
//
|
mcs.setUpdatetime(new Date());
|
||||||
// // 这里将驳回的信息放入新的事务中,防止被回滚
|
|
||||||
// transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
// 这里将驳回的信息放入新的事务中,防止被回滚
|
||||||
// @Override
|
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
||||||
// protected void doInTransactionWithoutResult(TransactionStatus status) {
|
@Override
|
||||||
// mcsService.updateById(mcs);
|
protected void doInTransactionWithoutResult(TransactionStatus status) {
|
||||||
// }
|
merchantChannelStatusMapper.updateByPrimaryKeySelective(mcs);
|
||||||
// });
|
}
|
||||||
// }
|
});
|
||||||
//
|
}
|
||||||
// throw e;
|
|
||||||
// }
|
throw e;
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组装进件基本信息
|
* 组装进件基本信息
|
||||||
|
|
@ -317,6 +339,163 @@ public class YSAuditServiceV3 {
|
||||||
mcs.setChannel(channel);
|
mcs.setChannel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSONObject extra = ObjectUtil.isEmpty(mcs.getExtra())?new JSONObject():JSONObject.parseObject(mcs.getExtra());
|
||||||
|
extra.putAll(JSON.parseObject(req.getBusinessData()));
|
||||||
|
mcs.setApplicationid(extra.getString("sysFlowId"));
|
||||||
|
mcs.setThirdstatus(TbPlussMerchantChannelStatus.AUDIT_THIRD_STATUS_AUDITING);
|
||||||
|
mcs.setInterfaceversion(INTERFACE_VERSION);
|
||||||
|
merchantChannelStatusMapper.updateByPrimaryKey(mcs);
|
||||||
|
//mcsService.saveOrUpdate(mcs);
|
||||||
|
|
||||||
|
AccountDTO accountDTO = sxfMerchantAuditService.getRealAccount(userId, TbPlussAccount.CHANNEL_TYPE_D1);
|
||||||
|
|
||||||
|
idCardMapper.getLegalIdCard(userId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传进件图片信息保存图片信息
|
||||||
|
* @param userId
|
||||||
|
* @param channel
|
||||||
|
*/
|
||||||
|
public void step2(String userId, Integer channel) {
|
||||||
|
TbPlussMerchantBaseInfo mbi = merchantBaseInfoMapper.selectByUserId(userId);
|
||||||
|
//筛选
|
||||||
|
List<TbPlussMerchantImage> miList = merchantImageService.getListOfMerch(userId, TbPlussAccount.CHANNEL_TYPE_D0);
|
||||||
|
TbPlussMerchantChannelStatus mcs = new TbPlussMerchantChannelStatus();
|
||||||
|
mcs = merchantChannelStatusMapper.selectByMerchantCode(mbi.getMerchantcode(),channel);
|
||||||
|
|
||||||
|
if (mcs == null) {
|
||||||
|
throw new MsgException("无法上传图片,无法确认进件信息");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TbPlussMerchantImage mi : miList) {
|
||||||
|
imageUpload(mi.getPhotoType(), mi.getPicurl(), mcs.getApplicationid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 银盛进件最后一步:开通D0
|
||||||
|
* @param userId
|
||||||
|
* @param channel
|
||||||
|
*/
|
||||||
|
public void step3(String userId, Integer channel) {
|
||||||
|
TbPlussMerchantBaseInfo mbi = merchantBaseInfoMapper.selectByUserId(userId);
|
||||||
|
TbPlussMerchantChannelStatus mcs = merchantChannelStatusMapper.getByMerchantCode(mbi.getMerchantcode(), String.valueOf(channel));
|
||||||
|
|
||||||
|
if (mcs == null) {
|
||||||
|
throw new MsgException("无法确认进件信息");
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("auditFlag", "Y");
|
||||||
|
param.put("sysFlowId", mcs.getApplicationid());
|
||||||
|
|
||||||
|
RespEntity respEntity = req(ReqMethod.auditCustInfoApply, param, channel);
|
||||||
|
|
||||||
|
JSONObject bizContent = JSON.parseObject(respEntity.getBusinessData());
|
||||||
|
JSONObject jsonExtra = JSONObject.parseObject(mcs.getExtra());
|
||||||
|
jsonExtra.putAll(bizContent);
|
||||||
|
String status = bizContent.getString("status");
|
||||||
|
|
||||||
|
if (status == null) {
|
||||||
|
log.error("银盛云商服3.0进件异常, {}", respEntity.getSubMsg());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mcs.setThirdstatus(status);
|
||||||
|
switch (status) {
|
||||||
|
case STATUS_SUCCESS:
|
||||||
|
// 这里不做任何处理,交给回调操作,防止数据错乱
|
||||||
|
break;
|
||||||
|
case STATUS_REFUSE:
|
||||||
|
mcs.setRemark(respEntity.getSubMsg());
|
||||||
|
mcs.setStatus(TbPlussMerchantChannelStatus.AUDIT_STATUS_REJECT);
|
||||||
|
merchantChannelStatusMapper.updateByPrimaryKeySelective(mcs);
|
||||||
|
mercAuditListener.onFail(mbi.getUserid().toString(), mcs, respEntity.getSubMsg());
|
||||||
|
break;
|
||||||
|
case STATUS_TO_MANUAL:
|
||||||
|
mcs.setRemark(respEntity.getSubMsg());
|
||||||
|
mcs.setStatus(TbPlussMerchantChannelStatus.AUDIT_STATUS_ARTIFICIAL_EXAMINING);
|
||||||
|
merchantChannelStatusMapper.updateByPrimaryKeySelective(mcs);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
merchantChannelStatusMapper.updateByPrimaryKeySelective(mcs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片上传方法
|
||||||
|
* @param photoType
|
||||||
|
* @param imgUrl
|
||||||
|
* @param flowId
|
||||||
|
*/
|
||||||
|
private void imageUpload(String photoType, String imgUrl, String flowId) {
|
||||||
|
int count = 0;
|
||||||
|
while (count < 3) {
|
||||||
|
count++;
|
||||||
|
String relPhotoType = imgTypeTransform(photoType);
|
||||||
|
if (photoType == null) {
|
||||||
|
throw new MsgException("缺少图片类型");
|
||||||
|
}
|
||||||
|
|
||||||
|
RespEntity respEntity = reqUpload(ReqMethod.upload, relPhotoType, imgUrl, flowId);
|
||||||
|
|
||||||
|
if (!Objects.equals(respEntity.getSubCode(), BIZ_SUCCESS)) {
|
||||||
|
log.info("第{}次上传失败:{}", count, respEntity.getSubMsg());
|
||||||
|
} else {
|
||||||
|
if (photoType.equals(TbPlussMerchantImage.BANK_CARD_FRONT)) {
|
||||||
|
imageUpload(TbPlussMerchantImage.BANK_CARD_BACK, imgUrl, flowId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new MsgException("图片多次上传失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片映射
|
||||||
|
* @param imageType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String imgTypeTransform(String imageType) {
|
||||||
|
if (imageType == null) {
|
||||||
|
throw new MsgException("图片类型不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (imageType) {
|
||||||
|
case TbPlussMerchantImage.SHOP_FRONT_DOOR:
|
||||||
|
return "A006";
|
||||||
|
case TbPlussMerchantImage.STORE_INTERIOR_PHOTO:
|
||||||
|
return "A007";
|
||||||
|
case TbPlussMerchantImage.CASH_DESK_PHOTO:
|
||||||
|
return "A008";
|
||||||
|
case TbPlussMerchantImage.ACCOUNT_PERMITS:
|
||||||
|
return "A011";
|
||||||
|
case TbPlussMerchantImage.BUSINESS_LICENSE:
|
||||||
|
return "A001";
|
||||||
|
case TbPlussMerchantImage.IDCARD_FRONT:
|
||||||
|
return "A003";
|
||||||
|
case TbPlussMerchantImage.IDCARD_BACK:
|
||||||
|
return "A002";
|
||||||
|
case TbPlussMerchantImage.BANK_CARD_FRONT:
|
||||||
|
return "A004";
|
||||||
|
case TbPlussMerchantImage.BANK_CARD_BACK:
|
||||||
|
return "A005";
|
||||||
|
case TbPlussMerchantImage.SETTLE_IDCARD_FRONT:
|
||||||
|
return "A013";
|
||||||
|
case TbPlussMerchantImage.SETTLE_IDCARD_BACK:
|
||||||
|
return "A014";
|
||||||
|
case TbPlussMerchantImage.NON_LEG_SETTLE_AUTH:
|
||||||
|
return "B005";
|
||||||
|
case TbPlussMerchantImage.CHANGE_FORM:
|
||||||
|
return "B008";
|
||||||
|
case TbPlussMerchantImage.CASH_DESK_WITH_PERSON:
|
||||||
|
return "B009";
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -444,6 +623,123 @@ public class YSAuditServiceV3 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进件上传图片
|
||||||
|
* @param reqMethod
|
||||||
|
* @param picType
|
||||||
|
* @param fileUrl
|
||||||
|
* @param sysFlowId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public RespEntity reqUpload(ReqMethod reqMethod, String picType, String fileUrl, String sysFlowId) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
int i = calendar.get(Calendar.HOUR_OF_DAY);
|
||||||
|
|
||||||
|
if (i < 8 || i >= 21) {
|
||||||
|
throw new MsgException("当前时段暂不支持入网,请于8:00-21:00提交");
|
||||||
|
}
|
||||||
|
|
||||||
|
Meta meta = new Meta();
|
||||||
|
meta.setPicType(picType);
|
||||||
|
meta.setSysFlowId(sysFlowId);
|
||||||
|
meta.setChangeFlowId(sysFlowId);
|
||||||
|
try {
|
||||||
|
ReqEntity request = ReqEntity.get(ReqMethod.upload);
|
||||||
|
request.setCertId(ysConfig.getSrcMerchantNo());
|
||||||
|
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||||
|
headers.add("User-Agent",
|
||||||
|
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
|
||||||
|
|
||||||
|
MultiValueMap<String, Object> reqMap = new LinkedMultiValueMap<>();
|
||||||
|
try {
|
||||||
|
String imgBase64Data = FileUtil.getBase64FromUrl(fileUrl);
|
||||||
|
String compressPic = Base64Util.compressPic(imgBase64Data, 1024);
|
||||||
|
byte[] byteArray = Base64.decode(compressPic);
|
||||||
|
ByteArrayResource file = new ByteArrayResource(byteArray) {
|
||||||
|
@Override
|
||||||
|
public String getFilename() {
|
||||||
|
return "test.jpg";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
reqMap.add("file", file);
|
||||||
|
String sha256 = DigestUtil.sha256Hex(file.getInputStream());
|
||||||
|
meta.setSha256(sha256);
|
||||||
|
meta.setPicNm("test.jpg");
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject reqData = new JSONObject();
|
||||||
|
reqData.put("meta", meta);
|
||||||
|
request.setBizContent(reqData.toString());
|
||||||
|
|
||||||
|
log.info("业务参数==============>" + reqData);
|
||||||
|
String key = RandomUtil.randomString(RandomUtil.BASE_NUMBER + "ABCDEF",16);
|
||||||
|
log.info("key = " + key);
|
||||||
|
AES aes = new AES(key.getBytes(StandardCharsets.UTF_8));
|
||||||
|
String s = aes.encryptBase64(request.getBizContent());
|
||||||
|
request.setBizContent(s);
|
||||||
|
|
||||||
|
RSA rsa = SecureUtil.rsa(ysConfig.getPriKey(), ysConfig.getOldPubKey());
|
||||||
|
request.setCheck(rsa.encryptBase64(key, KeyType.PublicKey));
|
||||||
|
|
||||||
|
String encryptOriginData = SignUtils.getSignContent((JSONObject) JSON.toJSON(request));
|
||||||
|
Sign sign = SecureUtil.sign(SignAlgorithm.SHA256withRSA, ysConfig.getPriKey(), ysConfig.getOldPubKey());
|
||||||
|
log.info("加签源数据==============>" + encryptOriginData);
|
||||||
|
request.setSign(Base64.encode(sign.sign(encryptOriginData.getBytes())));
|
||||||
|
|
||||||
|
reqMap.addAll(MapUtils.map2MultiValueMap((JSONObject) JSON.toJSON(request)));
|
||||||
|
HttpEntity<MultiValueMap<String, Object>> reqEntity = new HttpEntity<>(reqMap, headers);
|
||||||
|
|
||||||
|
String respStr = restTemplate.postForObject(reqMethod.getUrl(), reqEntity, String.class);
|
||||||
|
log.info("返回信息base64:{}", respStr);
|
||||||
|
byte[] decode = Base64.decode(respStr);
|
||||||
|
respStr = new String(decode, StandardCharsets.UTF_8);
|
||||||
|
log.info("返回信息:{}", respStr);
|
||||||
|
|
||||||
|
JSONObject param = JSON.parseObject(respStr);
|
||||||
|
String signContent = SignUtils.getSignContent(param);
|
||||||
|
System.out.println("加签原参数:" + signContent);
|
||||||
|
|
||||||
|
boolean checkSign;
|
||||||
|
try {
|
||||||
|
checkSign = sign.verify(signContent.getBytes(StandardCharsets.UTF_8), Base64.decode(param.getString("sign")));
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("银盛云商服3.0图片上传接口验签失败: {}", e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
checkSign = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!checkSign) {
|
||||||
|
throw new MsgException("银盛云商服3.0接口验签不通过");
|
||||||
|
}
|
||||||
|
|
||||||
|
RespEntity respEntity = JSON.parseObject(respStr, RespEntity.class);
|
||||||
|
|
||||||
|
// 检查网关code码
|
||||||
|
if (!Objects.equals(respEntity.getCode(), REQ_SUCCESS)) {
|
||||||
|
throw new MsgException(respEntity.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 业务响应码这里不做判断,交给具体接口业务逻辑去判断
|
||||||
|
|
||||||
|
if (respEntity.getBusinessData() != null) {
|
||||||
|
byte[] bizBytes = Base64.decode(respEntity.getBusinessData());
|
||||||
|
String decryptBizData = aes.decryptStr(bizBytes);
|
||||||
|
respEntity.setBusinessData(decryptBizData);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("业务返回参数: {}", respEntity.getBusinessData());
|
||||||
|
|
||||||
|
return respEntity;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 再次检测
|
* 再次检测
|
||||||
* @param userId
|
* @param userId
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue