fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java
@@ -146,7 +146,8 @@ searchDiscoveryKeys("search_discovery_keys", "搜索发现关键词"), searchDiscoveryH5Link("search_discovery_h5_link", "搜索发现h5连接"), autoExtractHelpUrl("auto_extract_help_url", "自动提现帮助链接"), // 协议 homePageBgColors("home_page_bg_colors","首页背景颜色"), // 协议0 userProtocolHomeData("user_protocol_home_data", "用户协议首页内容"), serviceProtocolLink("service_protocol_link", "服务协议"), privacyProtocolLink("privacy_protocol_link", "隐私协议"), fanli/src/main/java/com/yeshi/fanli/service/impl/money/msg/MsgMoneyDetailServiceImpl.java
@@ -5,6 +5,7 @@ import javax.annotation.Resource; import com.yeshi.fanli.service.inter.msg.MsgOverViewsService; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.msg.MsgMoneyDetailMapper; @@ -30,6 +31,10 @@ @Resource private MsgExtraService msgExtraService; @Resource private MsgOverViewsService msgOverViewsService; @Override public void addMsgMoneyDetail(MsgMoneyDetail detail) throws MsgMoneyDetailException { if (detail == null || detail.getUser() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo())) @@ -44,6 +49,7 @@ detail.setUpdateTime(new Date()); detail.setRead(false); msgMoneyDetailMapper.insertSelective(detail); / msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY); } else { MsgMoneyDetail update = new MsgMoneyDetail(); @@ -52,6 +58,7 @@ update.setRead(false); update.setStateDesc(detail.getStateDesc()); msgMoneyDetailMapper.updateByPrimaryKeySelective(update); / msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY); } } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extractValid) { @@ -64,6 +71,7 @@ detail.setUpdateTime(new Date()); detail.setRead(false); msgMoneyDetailMapper.insertSelective(detail); / msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY); } else { MsgMoneyDetail update = new MsgMoneyDetail(); @@ -72,6 +80,7 @@ update.setRead(false); update.setStateDesc(detail.getStateDesc()); msgMoneyDetailMapper.updateByPrimaryKeySelective(update); / msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY); } } else { @@ -79,6 +88,7 @@ detail.setUpdateTime(new Date()); detail.setRead(false); msgMoneyDetailMapper.insertSelective(detail); / msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY); } userMsgReadStateService.addMoneyMsgUnReadCount(detail.getUser().getId(), 1); fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java
@@ -5,6 +5,7 @@ import javax.annotation.Resource; import com.yeshi.fanli.service.inter.msg.MsgOverViewsService; import com.yeshi.fanli.util.RedisManager; import org.springframework.stereotype.Service; @@ -26,129 +27,134 @@ @Service public class MsgOrderDetailServiceImpl implements MsgOrderDetailService { @Resource private MsgOrderDetailMapper msgOrderDetailMapper; @Resource private MsgOrderDetailMapper msgOrderDetailMapper; @Resource private UserMsgReadStateService userMsgReadStateService; @Resource private UserMsgReadStateService userMsgReadStateService; @Resource private RedisManager redisManager; @Resource private MsgExtraService msgExtraService; @Resource private RedisManager redisManager; @Override public void addMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { if (detail == null) throw new MsgOrderDetailException(1, "消息为空"); if (detail.getOrderId() == null || detail.getType() == null || detail.getUser() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo())) throw new MsgOrderDetailException(2, "消息不完整"); if (detail.getType() == MsgTypeOrderTypeEnum.businessRunning) { MsgOrderDetail msgOrderDetail = msgOrderDetailMapper.getByUniqueKey(detail.getUniquekey()); if (msgOrderDetail != null) { return; } } // 锁住订单号 Jedis jedis = redisManager.getJedis(); try { String key = "rs-order-" + detail.getOrderId(); if (jedis.setnx(key, "1") > 0) { jedis.expire(key, 60); MsgOrderDetail old = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId()); if (old == null) { detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); msgOrderDetailMapper.insertSelective(detail); // 消息内容 msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); } else { MsgOrderDetail update = new MsgOrderDetail(); update.setId(old.getId()); update.setUpdateTime(new Date()); update.setState(detail.getState()); update.setPayMoney(detail.getPayMoney()); update.setHongBaoMoney(detail.getHongBaoMoney()); update.setRead(false); update.setBeiZhu(detail.getBeiZhu()); msgOrderDetailMapper.updateByPrimaryKeySelective(update); msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); } if (needNotify) userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1); jedis.del(key); } @Resource private MsgExtraService msgExtraService; } finally { jedis.close(); } @Resource private MsgOverViewsService msgOverViewsService; } @Override public List<MsgOrderDetail> listMsgOrderDetail(Long uid, int page) { return msgOrderDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); } @Override public void addMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { if (detail == null) throw new MsgOrderDetailException(1, "消息为空"); if (detail.getOrderId() == null || detail.getType() == null || detail.getUser() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo())) throw new MsgOrderDetailException(2, "消息不完整"); @Override public long countMsgOrderDetail(Long uid) { return msgOrderDetailMapper.countByUid(uid); } if (detail.getType() == MsgTypeOrderTypeEnum.businessRunning) { MsgOrderDetail msgOrderDetail = msgOrderDetailMapper.getByUniqueKey(detail.getUniquekey()); if (msgOrderDetail != null) { return; } } @Override public void readMsgByUid(Long uid) { msgOrderDetailMapper.setMsgReadByUid(uid); } @Override public void updateMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { if (detail == null) throw new MsgOrderDetailException(1, "消息为空"); if (detail.getOrderId() == null || detail.getState() == null || detail.getUser() == null) throw new MsgOrderDetailException(2, "消息不完整"); // 锁住订单号 Jedis jedis = redisManager.getJedis(); try { String key = "rs-order-" + detail.getOrderId(); if (jedis.setnx(key, "1") > 0) { jedis.expire(key, 60); MsgOrderDetail old = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId()); if (old == null) { detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); msgOrderDetailMapper.insertSelective(detail); / // 消息内容 msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); } else { MsgOrderDetail update = new MsgOrderDetail(); update.setId(old.getId()); update.setUpdateTime(new Date()); update.setState(detail.getState()); update.setPayMoney(detail.getPayMoney()); update.setHongBaoMoney(detail.getHongBaoMoney()); update.setRead(false); update.setBeiZhu(detail.getBeiZhu()); msgOrderDetailMapper.updateByPrimaryKeySelective(update); / msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); } if (needNotify) userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1); jedis.del(key); } MsgOrderDetail msg = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId()); if (msg == null) return; } finally { jedis.close(); } if (msg.getState() == CommonOrder.STATE_WQ) return; } MsgOrderDetail update = new MsgOrderDetail(); update.setId(msg.getId()); update.setHongBaoMoney(detail.getHongBaoMoney()); update.setPayMoney(detail.getPayMoney()); if (detail.getState().intValue() != msg.getState()) { update.setState(detail.getState()); // update.setUpdateTime(new Date()); if (needNotify) userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1); } msgOrderDetailMapper.updateByPrimaryKeySelective(update); } @Override public List<MsgOrderDetail> listMsgOrderDetail(Long uid, int page) { return msgOrderDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); } @Override public List<MsgOrderDetail> listMsgOrderByOrderId(String orderId) { return msgOrderDetailMapper.listByOrderId(orderId); } @Override public long countMsgOrderDetail(Long uid) { return msgOrderDetailMapper.countByUid(uid); } @Override public MsgOrderDetail selectByPrimaryKey(Long id) { return msgOrderDetailMapper.selectByPrimaryKey(id); } @Override public void deleteByPrimaryKey(Long id) { msgOrderDetailMapper.deleteByPrimaryKey(id); msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_ORDER); } @Override public void readMsgByUid(Long uid) { msgOrderDetailMapper.setMsgReadByUid(uid); } @Override public void updateMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { if (detail == null) throw new MsgOrderDetailException(1, "消息为空"); if (detail.getOrderId() == null || detail.getState() == null || detail.getUser() == null) throw new MsgOrderDetailException(2, "消息不完整"); MsgOrderDetail msg = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId()); if (msg == null) return; if (msg.getState() == CommonOrder.STATE_WQ) return; MsgOrderDetail update = new MsgOrderDetail(); update.setId(msg.getId()); update.setHongBaoMoney(detail.getHongBaoMoney()); update.setPayMoney(detail.getPayMoney()); if (detail.getState().intValue() != msg.getState()) { update.setState(detail.getState()); // update.setUpdateTime(new Date()); if (needNotify) userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1); } msgOrderDetailMapper.updateByPrimaryKeySelective(update); } @Override public List<MsgOrderDetail> listMsgOrderByOrderId(String orderId) { return msgOrderDetailMapper.listByOrderId(orderId); } @Override public MsgOrderDetail selectByPrimaryKey(Long id) { return msgOrderDetailMapper.selectByPrimaryKey(id); } @Override public void deleteByPrimaryKey(Long id) { msgOrderDetailMapper.deleteByPrimaryKey(id); msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_ORDER); } } fanli/src/main/java/com/yeshi/fanli/service/impl/user/msg/MsgAccountDetailServiceImpl.java
@@ -5,6 +5,7 @@ import javax.annotation.Resource; import com.yeshi.fanli.service.inter.msg.MsgOverViewsService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,74 +26,78 @@ @Service public class MsgAccountDetailServiceImpl implements MsgAccountDetailService { @Resource private MsgAccountDetailMapper msgAccountDetailMapper; @Resource private MsgAccountDetailMapper msgAccountDetailMapper; @Resource private UserMsgReadStateService userMsgReadStateService; @Resource private MsgExtraService msgExtraService; @Resource private UserMsgReadStateService userMsgReadStateService; @Override @Transactional(rollbackFor = Exception.class) public void addMsgAccountDetail(MsgAccountDetail detail) throws MsgAccountDetailException { if (detail == null || detail.getUser() == null || detail.getType() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo())) throw new MsgAccountDetailException(1, "消息信息不全"); // 持久化到数据库 detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); msgAccountDetailMapper.insertSelective(detail); // 消息内容 msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ACCOUNT); // 红点 userMsgReadStateService.addAccountMsgUnReadCount(detail.getUser().getId(), 1); } @Resource private MsgExtraService msgExtraService; @Override public List<MsgAccountDetail> listMsgAccountDetail(Long uid, int page) { return msgAccountDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); } @Override public long countMsgAccountDetail(Long uid) { return msgAccountDetailMapper.countByUid(uid); } @Override public void readMsgByUid(Long uid) { msgAccountDetailMapper.setMsgReadByUid(uid); } @Override @Transactional(rollbackFor = Exception.class) public void addMsgAccountDetail(MsgAccountDetail detail) throws MsgAccountDetailException { if (detail == null || detail.getUser() == null || detail.getType() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo())) throw new MsgAccountDetailException(1, "消息信息不全"); // 持久化到数据库 detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); msgAccountDetailMapper.insertSelective(detail); @Override public void addMsgVIP(Long uid, String title, String beiZhu, MsgAccountVipDTO dto) { MsgAccountDetail detail = new MsgAccountDetail(); detail.setTitle(title); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(dto)); detail.setType(MsgTypeAccountTypeEnum.vipPgrade); msgAccountDetailMapper.insertSelective(detail); userMsgReadStateService.addAccountMsgUnReadCount(detail.getUser().getId(), 1); } @Override public MsgAccountDetail selectByPrimaryKey(Long id) { return msgAccountDetailMapper.selectByPrimaryKey(id); } @Override public void deleteByPrimaryKey(Long id) { msgAccountDetailMapper.deleteByPrimaryKey(id); msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_ACCOUNT); } // 消息内容 msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ACCOUNT); // 红点 userMsgReadStateService.addAccountMsgUnReadCount(detail.getUser().getId(), 1); } @Override public List<MsgAccountDetail> listMsgAccountDetail(Long uid, int page) { return msgAccountDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); } @Override public long countMsgAccountDetail(Long uid) { return msgAccountDetailMapper.countByUid(uid); } @Override public void readMsgByUid(Long uid) { msgAccountDetailMapper.setMsgReadByUid(uid); } @Override public void addMsgVIP(Long uid, String title, String beiZhu, MsgAccountVipDTO dto) { MsgAccountDetail detail = new MsgAccountDetail(); detail.setTitle(title); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(dto)); detail.setType(MsgTypeAccountTypeEnum.vipPgrade); msgAccountDetailMapper.insertSelective(detail); userMsgReadStateService.addAccountMsgUnReadCount(detail.getUser().getId(), 1); } @Override public MsgAccountDetail selectByPrimaryKey(Long id) { return msgAccountDetailMapper.selectByPrimaryKey(id); } @Override public void deleteByPrimaryKey(Long id) { msgAccountDetailMapper.deleteByPrimaryKey(id); msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_ACCOUNT); } }