Commit f49ec440 authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

parents 128a1094 1e5cdaaa
......@@ -21,10 +21,14 @@ import java.io.Serializable;
@AllArgsConstructor
public class BaseUserMemberExportDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private Integer memberLevel;
private Integer totalNumber;
private Integer rentFreeDays;
private Integer discount;
private Integer status;
private Long crtTime;
private String crtName;
private Integer crtId;
}
package com.github.wxiaoqi.security.admin.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/13 10:04
*/
@Data
public class BaseUserMemberExportDataFindDTO extends PageParam {
private String username;
private Long startTime;
private Long endTime;
}
......@@ -34,5 +34,11 @@ public class BaseUserMemberExport implements Serializable {
private Integer status;
@Column(name = "is_del")
private Integer isDel;
@Column(name = "crt_time")
private Long crtTime;
@Column(name = "crt_name")
private String crtName;
@Column(name = "crt_id")
private Integer crtId;
}
package com.github.wxiaoqi.security.admin.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:08
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "base_user_member_export")
public class BaseUserMemberExportVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private Integer memberLevel;
private Integer totalNumber;
private Integer rentFreeDays;
private Integer status;
private Integer isDel;
private Long crtTime;
private String crtName;
}
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDataFindDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberSaveDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberExportMapper;
import com.github.wxiaoqi.security.admin.vo.BaseUserMemberExportVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
......@@ -17,6 +20,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -34,61 +38,61 @@ import java.util.stream.Collectors;
@Slf4j
public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, BaseUserMemberExport> {
@Autowired
private UserMemberLevelBiz userMemberLevelBiz;
@Autowired
private BaseUserMemberBiz baseUserMemberBiz;
@Autowired
private AppUserLoginBiz appUserLoginBiz;
public void saveUserMember(UserMemberSaveDTO userMemberSaveDTO){
if (userMemberSaveDTO!=null){
UserMemberDTO userMemberDTO = new UserMemberDTO();
BaseUserMemberLevel level = userMemberLevelBiz.getLevel(userMemberSaveDTO.getMemberLevel());
Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(Arrays.asList(userMemberSaveDTO.getPhone()));
if (phoneAndUserIdMap!=null){
userMemberDTO.setUserId(phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()));
userMemberDTO.setMemberLevel(userMemberSaveDTO.getMemberLevel());
userMemberDTO.setDiscount(level==null?0:(level.getDiscount()==null?0:level.getDiscount()));
userMemberDTO.setTotalNumber(userMemberSaveDTO.getTotalNumber());
userMemberDTO.setRentFreeDays(userMemberSaveDTO.getRentFreeDays());
userMemberDTO.setIsBind(1);
try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) {
log.error("会员更新或新增错误:【{}】",e.getMessage());
throw new BaseException(e);
}
}
BaseUserMemberExport memberExport = BaseUserMemberExport
.builder()
.username(userMemberSaveDTO.getPhone())
.memberLevel(userMemberSaveDTO.getMemberLevel())
.totalNumber(userMemberSaveDTO.getTotalNumber())
.rentFreeDays(userMemberSaveDTO.getRentFreeDays())
.discount(level==null?0:level.getDiscount()==null?0:level.getDiscount())
.status(phoneAndUserIdMap == null ? 0 : (phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()) == null ? 0 : 1))
.isDel(0)
.build();
if (log.isDebugEnabled()){
log.debug("当前组装的数据:【{}】",memberExport);
}
mapper.insertSelective(memberExport);
}
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public int importUserMember(List<String[]> userMemberData){
@Autowired
private UserMemberLevelBiz userMemberLevelBiz;
@Autowired
private BaseUserMemberBiz baseUserMemberBiz;
@Autowired
private AppUserLoginBiz appUserLoginBiz;
public void saveUserMember(UserMemberSaveDTO userMemberSaveDTO) {
if (userMemberSaveDTO != null) {
UserMemberDTO userMemberDTO = new UserMemberDTO();
BaseUserMemberLevel level = userMemberLevelBiz.getLevel(userMemberSaveDTO.getMemberLevel());
Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(Arrays.asList(userMemberSaveDTO.getPhone()));
if (phoneAndUserIdMap != null) {
userMemberDTO.setUserId(phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()));
userMemberDTO.setMemberLevel(userMemberSaveDTO.getMemberLevel());
userMemberDTO.setDiscount(level == null ? 0 : (level.getDiscount() == null ? 0 : level.getDiscount()));
userMemberDTO.setTotalNumber(userMemberSaveDTO.getTotalNumber());
userMemberDTO.setRentFreeDays(userMemberSaveDTO.getRentFreeDays());
userMemberDTO.setIsBind(1);
try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) {
log.error("会员更新或新增错误:【{}】", e.getMessage());
throw new BaseException(e);
}
}
BaseUserMemberExport memberExport = BaseUserMemberExport
.builder()
.username(userMemberSaveDTO.getPhone())
.memberLevel(userMemberSaveDTO.getMemberLevel())
.totalNumber(userMemberSaveDTO.getTotalNumber())
.rentFreeDays(userMemberSaveDTO.getRentFreeDays())
.discount(level == null ? 0 : level.getDiscount() == null ? 0 : level.getDiscount())
.status(phoneAndUserIdMap == null ? 0 : (phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()) == null ? 0 : 1))
.isDel(0)
.build();
if (log.isDebugEnabled()) {
log.debug("当前组装的数据:【{}】", memberExport);
}
mapper.insertSelective(memberExport);
}
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public int importUserMember(List<String[]> userMemberData,Integer userId,String userName) {
List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>();
List<Integer> levels = userMemberData.stream().map(x -> x[1]).map(Integer::valueOf).distinct().collect(Collectors.toList());
Map<Integer, Integer> levelAndDisCountMap= userMemberLevelBiz.getUserMemberLevelAndDisCountMapByLevels(levels);
Map<Integer, Integer> levelAndDisCountMap = userMemberLevelBiz.getUserMemberLevelAndDisCountMapByLevels(levels);
List<String> phones = userMemberData.stream().map(x -> x[0]).distinct().collect(Collectors.toList());
Map<String,Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
for (String[] data : userMemberData) {
......@@ -97,18 +101,18 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
String totalNumber = data[2];
String rentFreeDays = data[3];
if (phoneAndUserIdMap!=null && phoneAndUserIdMap.get(phone)!=null){
if (phoneAndUserIdMap != null && phoneAndUserIdMap.get(phone) != null) {
UserMemberDTO userMemberDTO = new UserMemberDTO();
userMemberDTO.setUserId(phoneAndUserIdMap.get(phone));
userMemberDTO.setMemberLevel(Integer.valueOf(memberLevel));
userMemberDTO.setDiscount(levelAndDisCountMap==null?0:(levelAndDisCountMap.get(Integer.valueOf(memberLevel))==null?0:levelAndDisCountMap.get(Integer.valueOf(memberLevel))));
userMemberDTO.setDiscount(levelAndDisCountMap == null ? 0 : (levelAndDisCountMap.get(Integer.valueOf(memberLevel)) == null ? 0 : levelAndDisCountMap.get(Integer.valueOf(memberLevel))));
userMemberDTO.setTotalNumber(Integer.valueOf(totalNumber));
userMemberDTO.setRentFreeDays(Integer.valueOf(rentFreeDays));
userMemberDTO.setIsBind(1);
try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) {
log.error("会员更新错误:【{}】",e.getMessage());
log.error("会员更新错误:【{}】", e.getMessage());
throw new BaseException(e);
}
}
......@@ -119,13 +123,16 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
.memberLevel(Integer.valueOf(memberLevel))
.totalNumber(Integer.valueOf(totalNumber))
.rentFreeDays(Integer.valueOf(rentFreeDays))
.discount(levelAndDisCountMap==null?0:(levelAndDisCountMap.get(Integer.valueOf(memberLevel))==null?0:levelAndDisCountMap.get(Integer.valueOf(memberLevel))))
.discount(levelAndDisCountMap == null ? 0 : (levelAndDisCountMap.get(Integer.valueOf(memberLevel)) == null ? 0 : levelAndDisCountMap.get(Integer.valueOf(memberLevel))))
.status(phoneAndUserIdMap == null ? 0 : (phoneAndUserIdMap.get(phone) == null ? 0 : 1))
.crtId(userId)
.crtName(userName)
.crtTime(Instant.now().toEpochMilli())
.isDel(0)
.build();
if (log.isDebugEnabled()){
log.debug("当前组装的数据:【{}】",memberExport);
}
if (log.isDebugEnabled()) {
log.debug("当前组装的数据:【{}】", memberExport);
}
baseUserMemberExports.add(memberExport);
}
......@@ -133,32 +140,61 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
return baseUserMemberExports.size();
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void InsertBatch(List<BaseUserMemberExport> baseUserMemberExports) {
mapper.insertList(baseUserMemberExports);
}
public List<BaseUserMemberExportDTO> findUserMemberExportDataByPhoneAndHashEffective(String phone){
List<BaseUserMemberExportDTO> baseUserMemberExportDTOS = new ArrayList<>();
Example example = new Example(BaseUserMemberExport.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("username",phone);
criteria.andEqualTo("status",0);
List<BaseUserMemberExport> baseUserMemberExports = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(baseUserMemberExports)){
BaseUserMemberExportDTO baseUserMemberExportDTO;
for (BaseUserMemberExport userMemberExport : baseUserMemberExports) {
baseUserMemberExportDTO = new BaseUserMemberExportDTO();
BeanUtils.copyProperties(userMemberExport,baseUserMemberExportDTO);
baseUserMemberExportDTOS.add(baseUserMemberExportDTO);
}
}
return baseUserMemberExportDTOS;
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone){
public List<BaseUserMemberExportDTO> findUserMemberExportDataByPhoneAndHashEffective(String phone) {
List<BaseUserMemberExportDTO> baseUserMemberExportDTOS = new ArrayList<>();
Example example = new Example(BaseUserMemberExport.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("username", phone);
criteria.andEqualTo("status", 0);
criteria.andEqualTo("isDel",0);
List<BaseUserMemberExport> baseUserMemberExports = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(baseUserMemberExports)) {
BaseUserMemberExportDTO baseUserMemberExportDTO;
for (BaseUserMemberExport userMemberExport : baseUserMemberExports) {
baseUserMemberExportDTO = new BaseUserMemberExportDTO();
BeanUtils.copyProperties(userMemberExport, baseUserMemberExportDTO);
baseUserMemberExportDTOS.add(baseUserMemberExportDTO);
}
}
return baseUserMemberExportDTOS;
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone) {
mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone);
}
}
public PageDataVO<BaseUserMemberExportVo> findUserMemberExportDataPage(BaseUserMemberExportDataFindDTO exportDataFindDTO) {
PageDataVO<BaseUserMemberExportVo> baseUserMemberExportVoPageDataVO = new PageDataVO<>();
PageDataVO<BaseUserMemberExportDTO> baseUserMemberExportDataDTOS = PageDataVO.pageInfo(exportDataFindDTO.getPage(), exportDataFindDTO.getLimit(), () -> mapper.findExportDataPage(exportDataFindDTO));
List<BaseUserMemberExportDTO> userMemberExportDTOS = baseUserMemberExportDataDTOS.getData();
if (CollectionUtils.isEmpty(userMemberExportDTOS)) {
return baseUserMemberExportVoPageDataVO;
}
List<BaseUserMemberExportVo> baseUserMemberExportVos = new ArrayList<>();
BaseUserMemberExportVo baseUserMemberExportVo;
for (BaseUserMemberExportDTO userMemberExportDTO : userMemberExportDTOS) {
baseUserMemberExportVo = new BaseUserMemberExportVo();
BeanUtils.copyProperties(userMemberExportDTO,baseUserMemberExportVo);
baseUserMemberExportVos.add(baseUserMemberExportVo);
}
baseUserMemberExportVoPageDataVO.setData(baseUserMemberExportVos);
baseUserMemberExportVoPageDataVO.setPageNum(baseUserMemberExportDataDTOS.getPageNum());
baseUserMemberExportVoPageDataVO.setPageSize(baseUserMemberExportDataDTOS.getPageSize());
baseUserMemberExportVoPageDataVO.setTotalCount(baseUserMemberExportDataDTOS.getTotalCount());
baseUserMemberExportVoPageDataVO.setTotalPage(baseUserMemberExportDataDTOS.getTotalPage());
return baseUserMemberExportVoPageDataVO;
}
public void updateUserMemberExportDataStatus(Integer id) {
mapper.updateUserMemberExportDataStatusById(id,1);
}
}
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDataFindDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.special.InsertListMapper;
import java.util.List;
/**
* @author libin
* @version 1.0
......@@ -15,4 +19,8 @@ public interface BaseUserMemberExportMapper extends Mapper<BaseUserMemberExport>
void updateUserMemberExportDataToLoseEfficacyByPhone(@Param("phone") String phone);
List<BaseUserMemberExportDTO> findExportDataPage(BaseUserMemberExportDataFindDTO exportDataFindDTO);
void updateUserMemberExportDataStatusById(@Param("id") Integer id, @Param("status") int status);
}
......@@ -2,10 +2,16 @@ package com.github.wxiaoqi.security.admin.rest.admin;
import com.github.wxiaoqi.security.admin.AdminBootstrap;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberExportBiz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDataFindDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberSaveDTO;
import com.github.wxiaoqi.security.admin.vo.BaseUserMemberExportVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.excel.ExcelImport;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
......@@ -15,6 +21,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
......@@ -34,24 +41,36 @@ public class UserMemberAdminController {
@Autowired
private BaseUserMemberExportBiz baseUserMemberExportBiz;
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@ApiOperation("批量导入会员")
@PostMapping("/user/export")
public ObjectRestResponse importUserMember(@RequestPart("file") MultipartFile userMemberExcel) {
List<String[]> userMemberData = ExcelImport.getExcelData(userMemberExcel);
if (userMemberData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
for (String[] userMemberDatum : userMemberData) {
if (userMemberDatum.length!=4){
return ObjectRestResponse.createFailedResult(1002, "数据不完整!!!");
}
}
userMemberData.remove(0);
public ObjectRestResponse importUserMember(@RequestPart("file") MultipartFile userMemberExcel, HttpServletRequest request) {
try {
int effectSize = baseUserMemberExportBiz.importUserMember(userMemberData);
return ObjectRestResponse.succ(effectSize);
}catch (BaseException ex){
return ObjectRestResponse.createDefaultFail();
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
List<String[]> userMemberData = ExcelImport.getExcelData(userMemberExcel);
if (userMemberData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
for (String[] userMemberDatum : userMemberData) {
if (userMemberDatum.length!=4){
return ObjectRestResponse.createFailedResult(1002, "数据不完整!!!");
}
}
userMemberData.remove(0);
try {
int effectSize = baseUserMemberExportBiz.importUserMember(userMemberData,Integer.valueOf(infoFromToken.getId()),infoFromToken.getUniqueName());
return ObjectRestResponse.succ(effectSize);
}catch (BaseException ex){
return ObjectRestResponse.createDefaultFail();
}
} catch (Exception e) {
throw new BaseException(e);
}
}
......@@ -80,4 +99,18 @@ public class UserMemberAdminController {
baseUserMemberExportBiz.saveUserMember(userMemberSaveDTO);
return ObjectRestResponse.succ();
}
@ApiOperation("分页查询")
@GetMapping("/page")
public ObjectRestResponse<PageDataVO<BaseUserMemberExportVo>> findUserMemberExprotDataPage(BaseUserMemberExportDataFindDTO baseUserMemberExportDataFindDTO){
PageDataVO<BaseUserMemberExportVo> userMemberExportDataPage = baseUserMemberExportBiz.findUserMemberExportDataPage(baseUserMemberExportDataFindDTO);
return ObjectRestResponse.succ(userMemberExportDataPage);
}
@ApiOperation("根据id删除")
@DeleteMapping("/{id}")
public ObjectRestResponse<Void> deleteExportDataById(@PathVariable(value = "id") Integer id){
baseUserMemberExportBiz.updateUserMemberExportDataStatus(id);
return ObjectRestResponse.succ();
}
}
......@@ -10,9 +10,32 @@
<result property="username" column="username"/>
<result property="isDel" column="is_del"/>
<result property="status" column="status"/>
<result property="crtId" column="crt_id"/>
<result property="crtName" column="crt_name"/>
<result property="crtTime" column="crt_time"/>
</resultMap>
<update id="updateUserMemberExportDataToLoseEfficacyByPhone">
update `base_user_member_export` set `status`=1 where `username`=#{phone}
</update>
<select id="findExportDataPage" resultType="com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO">
select `id`,`member_level` as `memberLevel`,`rent_free_days` as `rentFreeDays`,`total_number` as `totalNumber`,`username`,`status`,`crt_name` as `crtName`,`crt_time`as `crtTime` from `base_user_member_export` where `is_del`=0
<if test="username != null and username != ''">
and `username`=#{username}
</if>
<if test="startTime != null and endTime != null">
and `crt_time` between #{startTime} and #{endTime}
</if>
<if test="startTime != null and endTime == null">
and <![CDATA[`crt_time` >= #{startTime}]]>
</if>
<if test="endTime != null and startTime == null">
and <![CDATA[ `crt_time` <= #{startTime}]]>
</if>
</select>
<update id="updateUserMemberExportDataStatusById">
update `base_user_member_export` set `is_del`=#{status} where `id`=#{id}
</update>
</mapper>
\ No newline at end of file
......@@ -61,8 +61,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
return ObjectRestResponse.createFailedResult(1202, "积分规则不存在");
}
Integer point = 0;
Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString());
if(ruleObjectRestResponse.getData().getPoint() == 0) {//没有基础分需要计算分数
Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString());
JSONObject jsonObject = JSONObject.parseObject(ruleObjectRestResponse.getData().getOtherRule());
log.info("查询的其他规则json信息:jsonObject = {}", jsonObject);
if(jsonObject == null) {
......
......@@ -2,14 +2,23 @@ package com.xxfc.platform.activity.handler;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import com.xxfc.platform.activity.biz.IntegralUserRecordBiz;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.Headers;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Component
@Slf4j
public class IntegralMQHandler {
......@@ -18,17 +27,36 @@ public class IntegralMQHandler {
IntegralUserRecordBiz integralUserRecordBiz;
@RabbitListener(queues = "integral_queue")
public void integralHandler(String json) {
log.info("接收到的消息:json = {}", json);
public void integralHandler(Message message, @Headers Map<String, Object> headers, Channel channel) {
try{
if(StringUtils.isNotBlank(json)) {
IntegralUserRecordDto integralUserRecordDto = JSONObject.parseObject(json, IntegralUserRecordDto.class);
integralUserRecordBiz.add(integralUserRecordDto);
}
String messageId = message.getMessageProperties().getMessageId();
String msg = new String(message.getBody(), "UTF-8");
log.info("接收到的消息:msg = {}, 消息ID是:messageId = {} ", msg, messageId);
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
if(StringUtils.isNotBlank(msg)) {
IntegralUserRecordDto integralUserRecordDto = JSONObject.parseObject(msg, IntegralUserRecordDto.class);
integralUserRecordBiz.add(integralUserRecordDto);
}
}
});
executorService.shutdown();
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
// 手动签收
channel.basicAck(deliveryTag, false);
}catch (Exception e){
log.info("接收到的消息失败");
try{
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false);
}catch (IOException i){
i.printStackTrace();
}
e.printStackTrace();
}
}
}
package com.xxfc.platform.universal.biz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.universal.entity.Dictionary;
import lombok.AllArgsConstructor;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import java.util.UUID;
@Service
@AllArgsConstructor
public class MQServiceBiZ {
......@@ -14,7 +17,10 @@ public class MQServiceBiZ {
private RabbitTemplate rabbitTemplate;
public ObjectRestResponse sendMessage(String exchange, String routKey, String json) {
rabbitTemplate.convertAndSend(exchange, routKey, json);
Message message = MessageBuilder.withBody(json.getBytes())
.setContentType(MessageProperties.CONTENT_TYPE_JSON).setContentEncoding("utf-8")
.setMessageId(UUID.randomUUID() + "").build();
rabbitTemplate.convertAndSend(exchange, routKey, message);
return ObjectRestResponse.succ();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment