修改完整代码

master
bynt 6 months ago
parent b2197404a3
commit 1242153724

@ -38,4 +38,9 @@ public class WeChatEquipment implements Serializable {
private Long equipmentId; private Long equipmentId;
@Schema(title = "用户ID")
private Long userId;
} }

@ -83,7 +83,7 @@ public interface LoginEquipmentMapper extends ExtendMapper<LoginEquipment> {
default Long countFreeEquipment(Long currentUserId, Integer number) { default Long countFreeEquipment(Long currentUserId, Integer number) {
return this.selectCount return this.selectCount
(WrappersX.lambdaQueryX(LoginEquipment.class).eq (WrappersX.lambdaQueryX(LoginEquipment.class).eq
(LoginEquipment::getUserId, currentUserId).eq(LoginEquipment::getPackageType, DefaultNumberConstants.TWO_NUMBER)); (LoginEquipment::getUserId, currentUserId).eq(LoginEquipment::getPackageType, number));
} }

@ -1,6 +1,7 @@
package com.baiye.modules.distribute.mapper; package com.baiye.modules.distribute.mapper;
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper; import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
import com.baiye.extend.mybatis.plus.toolkit.WrappersX;
import com.baiye.modules.distribute.entity.WeChatEquipment; import com.baiye.modules.distribute.entity.WeChatEquipment;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -12,6 +13,19 @@ import org.apache.ibatis.annotations.Mapper;
public interface WeChatEquipmentMapper extends ExtendMapper<WeChatEquipment> { public interface WeChatEquipmentMapper extends ExtendMapper<WeChatEquipment> {
/**
*
*
* @param accountId
* @param equipmentId
* @return
*/
default Long countEquipment(Long accountId, Long equipmentId) {
return this.selectCount
(WrappersX.lambdaQueryX(WeChatEquipment.class).eq
(WeChatEquipment::getAccountId, accountId).eq(WeChatEquipment::getEquipmentId, equipmentId));
}
} }

@ -86,8 +86,7 @@ public class AliPayServiceImpl extends ExtendServiceImpl<PayOrderMapper, PayOrde
log.info("========== the order notify success date as {} ==========", DateUtil.date()); log.info("========== the order notify success date as {} ==========", DateUtil.date());
order.setPayTime(DateUtil.date()); order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER); order.setStatus(DefaultNumberConstants.ONE_NUMBER);
if (Boolean.FALSE.equals(order.getIsRenew())) {
if (Boolean.TRUE.equals(order.getIsRenew())) {
// 创建设备 // 创建设备
weChatService.createEquipment(order.getNum(), order.getPayType(), order.getUserId()); weChatService.createEquipment(order.getNum(), order.getPayType(), order.getUserId());
} }
@ -136,29 +135,25 @@ public class AliPayServiceImpl extends ExtendServiceImpl<PayOrderMapper, PayOrde
Integer packageType = aliPayPcDTO.getPackageType(); Integer packageType = aliPayPcDTO.getPackageType();
// 结算金额 // 结算金额
if (packageType == DefaultNumberConstants.TWO_NUMBER) { if (packageType == DefaultNumberConstants.TWO_NUMBER) {
// 九折 // 季度
amount = NumberUtil.mul(NumberUtil.mul amount = NumberUtil.mul
(String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.THREE_NUMBER)), 0.9); (String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.THREE_NUMBER));
} }
if (packageType == DefaultNumberConstants.THREE_NUMBER) { if (packageType == DefaultNumberConstants.THREE_NUMBER) {
// 八折 // 年度八折
amount = NumberUtil.mul(NumberUtil.mul amount = NumberUtil.mul(NumberUtil.mul
(String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.TWELVE_NUMBER)), 0.8); (String.valueOf(DefaultNumberConstants.THIRTY), String.valueOf(DefaultNumberConstants.TWELVE_NUMBER)), 0.8);
} }
amount = NumberUtil.mul(amount, num); amount = NumberUtil.mul(amount, num);
// amount = new BigDecimal("0.01");
// 雪花算法id // 雪花算法id
String orderNo = String.valueOf(IdUtil.getSnowflake(workerId, datacenterId).nextId()); String orderNo = String.valueOf(IdUtil.getSnowflake(workerId, datacenterId).nextId());
// 创建订单 // 创建订单
savePayOrder(num, isRenew, robotId, packageType, amount, orderNo); savePayOrder(num, isRenew, robotId, packageType, amount, orderNo);
if (packageType == DefaultNumberConstants.ONE_NUMBER) { if (packageType == DefaultNumberConstants.ONE_NUMBER) {
if (num > DefaultNumberConstants.THREE_NUMBER) {
throw new BadRequestException("至多创建三台免费设备!");
}
Long countFreeEquipment = loginEquipmentService.countFreeEquipment(userId, DefaultNumberConstants.ONE_NUMBER); Long countFreeEquipment = loginEquipmentService.countFreeEquipment(userId, DefaultNumberConstants.ONE_NUMBER);
if (ObjectUtil.isNotNull(countFreeEquipment) if (ObjectUtil.isNotNull(countFreeEquipment)
&& countFreeEquipment + num >= DefaultNumberConstants.THREE_NUMBER) { && countFreeEquipment + num > DefaultNumberConstants.THREE_NUMBER) {
throw new BadRequestException("至多创建三台免费设备!"); throw new BadRequestException("至多创建三台免费设备!");
} }
// 创建设备 // 创建设备

@ -6,7 +6,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus; import cn.hutool.http.HttpStatus;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.WeChatRequestConstants; import com.baiye.constant.WeChatRequestConstants;
import com.baiye.domain.PageParam; import com.baiye.domain.PageParam;
import com.baiye.domain.PageResult; import com.baiye.domain.PageResult;

@ -125,10 +125,10 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
// 创建账号 // 创建账号
LoginEquipment equipment = new LoginEquipment(); LoginEquipment equipment = new LoginEquipment();
equipment.setUserId(userId); equipment.setUserId(userId);
equipment.setPackageType(packageType);
equipment.setExpirationTime(dateTime); equipment.setExpirationTime(dateTime);
equipment.setRobotId(botDTO.getRobotId()); equipment.setRobotId(botDTO.getRobotId());
equipment.setPit(botDTO.getRobotAccount()); equipment.setPit(botDTO.getRobotAccount());
equipment.setPackageType(DefaultNumberConstants.ONE_NUMBER);
// equipment.setDeviceNumber(botDTO.getRobotAccount()); // equipment.setDeviceNumber(botDTO.getRobotAccount());
loginEquipmentService.save(equipment); loginEquipmentService.save(equipment);
} }
@ -146,7 +146,6 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
if (loginEquipment.getExpirationTime().before(DateUtil.date())) { if (loginEquipment.getExpirationTime().before(DateUtil.date())) {
throw new BadRequestException("当前设备已过期请续费后使用!"); throw new BadRequestException("当前设备已过期请续费后使用!");
} }
} }
Map<String, Object> beanToMap = BeanUtil.beanToMap(pushCodeDTO); Map<String, Object> beanToMap = BeanUtil.beanToMap(pushCodeDTO);
String pushQrCodeResult = HttpUtil.get String pushQrCodeResult = HttpUtil.get
@ -184,12 +183,22 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
byWxId.setHeaderUrl(userLoginDTO.getBigHeadImgUrl()); byWxId.setHeaderUrl(userLoginDTO.getBigHeadImgUrl());
byWxId.setId(saveId); byWxId.setId(saveId);
byWxId.setUserId(userId); byWxId.setUserId(userId);
equipment.setUserId(userId);
equipment.setEquipmentId(id); equipment.setEquipmentId(id);
equipment.setAccountId(saveId); equipment.setAccountId(saveId);
weChatEquipmentMapper.insert(equipment); weChatEquipmentMapper.insert(equipment);
return this.save(byWxId); return this.save(byWxId);
} }
BeanUtil.copyProperties(userLoginDTO, byWxId); BeanUtil.copyProperties(userLoginDTO, byWxId);
byWxId.setUserId(userId);
Long counted = weChatEquipmentMapper.countEquipment(byWxId.getId(), id);
if (counted == DefaultNumberConstants.ZERO_NUMBER) {
WeChatEquipment equipment = new WeChatEquipment();
equipment.setEquipmentId(id);
equipment.setUserId(userId);
equipment.setAccountId(byWxId.getId());
weChatEquipmentMapper.insert(equipment);
}
byWxId.setStatus(status == WechatCallbackConstant.LOGIN_SUCCESS ? byWxId.setStatus(status == WechatCallbackConstant.LOGIN_SUCCESS ?
DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.MINUS_ONE_NUMBER); DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.MINUS_ONE_NUMBER);
return this.updateById(byWxId); return this.updateById(byWxId);
@ -288,7 +297,7 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
WeChatAccountDTO dto = BeanUtil.toBean(weChatResponse.getData(), WeChatAccountDTO.class); WeChatAccountDTO dto = BeanUtil.toBean(weChatResponse.getData(), WeChatAccountDTO.class);
if (ObjectUtil.isNotNull(dto) && if (ObjectUtil.isNotNull(dto) &&
dto.getStatus() == DefaultNumberConstants.ONE_NUMBER dto.getStatus() == DefaultNumberConstants.ONE_NUMBER
&& !onlineList.contains(dto.getPit())) { && !onlineList.contains(dto.getPit())) {
onlineList.add(dto.getPit()); onlineList.add(dto.getPit());
onlineNum += DefaultNumberConstants.ONE_NUMBER; onlineNum += DefaultNumberConstants.ONE_NUMBER;
} }

@ -13,6 +13,9 @@ import java.util.Date;
@Data @Data
public class WeChatAccountVO { public class WeChatAccountVO {
@Schema(title = "id")
private Long id;
@Schema(title = "用户id") @Schema(title = "用户id")
private Long userId; private Long userId;

@ -42,3 +42,7 @@ mybatis-plus:
configuration: configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志 # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志 log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志
wechat:
gatewayHost: https://fission-server.scrm-ai.com
appKey: SFkWRAued71GvCeClj8efDhAG6bJ2rzT

@ -28,8 +28,12 @@ alipay:
# 填支付宝公钥,注意不是生成的应用公钥 # 填支付宝公钥,注意不是生成的应用公钥
aliPayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyvegkGCrz1i5/K7VzQxvoZm4G73pSPNu9R5ET8YonIuDVoHkHaYvQQizLdRkTyBsYIik8FXsSDmVsw5MLMQ7OAlZ97nQBkz5TxOX6Px766nUpSVoWXoAz6cpIlWnwgir4t1ph88Ph56l+qmqW3gUj/U6MIuzjxBJlijTMHl96its95Nd4cEFx4j+sFuRYob6D0kcemC7xEFuty7bdupda51Z56GYI1YjuUTryTlFOHZbOSThc2ZMzNC1gPG25bn2Lx6sDuPByk4KW4rQ2v7mSfeUuZZRdjtVSC0WV2M2Cv5L8eLFvZRgNYnXrUJYhnRpT+OBAvJZXaWU2nv/bNe/UQIDAQAB aliPayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyvegkGCrz1i5/K7VzQxvoZm4G73pSPNu9R5ET8YonIuDVoHkHaYvQQizLdRkTyBsYIik8FXsSDmVsw5MLMQ7OAlZ97nQBkz5TxOX6Px766nUpSVoWXoAz6cpIlWnwgir4t1ph88Ph56l+qmqW3gUj/U6MIuzjxBJlijTMHl96its95Nd4cEFx4j+sFuRYob6D0kcemC7xEFuty7bdupda51Z56GYI1YjuUTryTlFOHZbOSThc2ZMzNC1gPG25bn2Lx6sDuPByk4KW4rQ2v7mSfeUuZZRdjtVSC0WV2M2Cv5L8eLFvZRgNYnXrUJYhnRpT+OBAvJZXaWU2nv/bNe/UQIDAQAB
# 回调地址 # 回调地址
notifyUrl: https://count.byffp.top/pay/aliPay/pay-notify notifyUrl: https://count.byffp.top/api/pay/aliPay/pay-notify
# 支付宝成功支付跳转页面 # 支付宝成功支付跳转页面
returnUrl: https://count.byffp.top/dashboard returnUrl: https://count.byffp.top/dashboard
# 可设置AES密钥调用AES加解密相关接口时需要可选 # 可设置AES密钥调用AES加解密相关接口时需要可选
encryptKey: encryptKey:
wechat:
gatewayHost: https://fission-server.scrm-ai.com
appKey: Dn4emsLhVFaZ4aw2sQSmWoh2oz0n1taa

@ -5,7 +5,7 @@ spring:
application: application:
name: @artifactId@ name: @artifactId@
profiles: profiles:
active: dev active: prod
jackson: jackson:
date-format: yyyy-MM-dd HH:mm:ss date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8 time-zone: GMT+8
@ -104,6 +104,4 @@ snowflake:
workerId: 10 workerId: 10
datacenterId: 10 datacenterId: 10
wechat:
gatewayHost: http://43.143.56.20:1620
appKey: Dn4emsLhVFaZ4aw2sQSmWoh2oz0n1taa

@ -47,11 +47,16 @@
</select> </select>
<select id="queryByDate" resultType="com.baiye.modules.distribute.vo.WeChatAddFriendVo"> <select id="queryByDate" resultType="com.baiye.modules.distribute.vo.WeChatAddFriendVo">
SELECT DATE_FORMAT(create_time, '%m-%d') dayStr SELECT DATE_FORMAT(f.create_time, '%m-%d') dayStr
, count(1) as num , count(1) as num
, add_friend_type , add_friend_type
FROM tb_wechat_friend FROM tb_wechat_friend f,
WHERE DATE_SUB(CURDATE(), INTERVAL #{dayNum} DAY) &lt;= date (create_time) and robot_wx_id = #{wxId} and user_id = #{userId} tb_wechat_account a,
tb_wechat_equipment e
WHERE f.robot_wx_id = a.wx_id
and a.id = e.account_id and DATE_SUB(CURDATE(), INTERVAL #{dayNum} DAY) &lt;= date (f.create_time)
and f.robot_wx_id = #{wxId}
and e.user_id = #{userId}
GROUP BY dayStr, add_friend_type GROUP BY dayStr, add_friend_type
ORDER BY dayStr ORDER BY dayStr
</select> </select>

@ -16,7 +16,7 @@ public enum PackageEnum {
/** /**
* *
*/ */
MONTH(1, 30), MONTH(1, 3),
/** /**
* *

@ -1,124 +1,94 @@
package com.baiye.system.service.impl; package com.baiye.system.service.impl;
import cn.hutool.core.collection.ListUtil; import com.baiye.domain.PageParam;
import com.baiye.security.constant.UserAttributeNameConstants; import com.baiye.domain.PageResult;
import com.baiye.security.userdetails.User; import com.baiye.domain.SelectData;
import com.baiye.security.util.SecurityUtils; import com.baiye.exception.BusinessException;
import com.baiye.system.checker.AdminUserChecker; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import com.baiye.system.enums.RoleCodeEnum; import com.baiye.result.BaseResultCode;
import com.baiye.system.mapper.SysRoleMapper;
import com.baiye.system.model.entity.SysRole; import com.baiye.system.model.entity.SysRole;
import com.baiye.system.model.qo.SysRoleQO; import com.baiye.system.model.qo.SysRoleQO;
import com.baiye.system.model.vo.SysRolePageVO; import com.baiye.system.model.vo.SysRolePageVO;
import com.baiye.system.service.SysRoleMenuService; import com.baiye.system.service.SysRoleMenuService;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.baiye.exception.BusinessException;
import com.baiye.result.BaseResultCode;
import com.baiye.system.mapper.SysRoleMapper;
import com.baiye.system.service.SysRoleService; import com.baiye.system.service.SysRoleService;
import com.baiye.domain.PageParam; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.baiye.domain.PageResult;
import com.baiye.domain.SelectData;
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable; import java.io.Serializable;
import java.util.*; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class SysRoleServiceImpl extends ExtendServiceImpl<SysRoleMapper, SysRole> implements SysRoleService { public class SysRoleServiceImpl extends ExtendServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
private final SysRoleMenuService sysRoleMenuService; private final SysRoleMenuService sysRoleMenuService;
private final AdminUserChecker adminUserChecker;
/**
*
*
* @param pageParam
* @param qo
* @return
*/
@Override
public PageResult<SysRolePageVO> queryPage(PageParam pageParam, SysRoleQO qo) {
return baseMapper.queryPage(pageParam, qo);
}
/** /**
* ID, *
* *
* @param id ID * @param pageParam
* @return boolean * @param qo
*/ * @return
@Override */
@Transactional(rollbackFor = Exception.class) @Override
public boolean removeById(Serializable id) { public PageResult<SysRolePageVO> queryPage(PageParam pageParam, SysRoleQO qo) {
SysRole role = getById(id); return baseMapper.queryPage(pageParam, qo);
sysRoleMenuService.deleteByRoleCode(role.getCode()); }
return SqlHelper.retBool(baseMapper.deleteById(id));
}
/** /**
* * ID,
* *
* @return List<SelectData < ?>> * @param id ID
*/ * @return boolean
@Override */
public List<SelectData<Void>> listSelectData() { @Override
List<SelectData<Void>> selectData = baseMapper.listSelectData(); @Transactional(rollbackFor = Exception.class)
public boolean removeById(Serializable id) {
SysRole role = getById(id);
sysRoleMenuService.deleteByRoleCode(role.getCode());
return SqlHelper.retBool(baseMapper.deleteById(id));
}
User user = SecurityUtils.getUser(); /**
@SuppressWarnings("unchecked") *
Collection<String> roleCodeList = (Collection<String>) user.getAttributes().get(UserAttributeNameConstants.ROLE_CODES); *
* @return List<SelectData < ?>>
*/
@Override
public List<SelectData<Void>> listSelectData() {
List<SelectData<Void>> selectData = baseMapper.listSelectData();
String salesExecutive = RoleCodeEnum.find(14L); return selectData.stream().filter(c -> "2".equals(c.getType())).collect(Collectors.toList());
String storeExecutive = RoleCodeEnum.find(22L); }
String entryClerk = RoleCodeEnum.find(15L);
String directExecutive = RoleCodeEnum.find(24L);
Set<String> list = new HashSet<>();
if (adminUserChecker.isAdminUser(user.getUserId())) {
list.addAll(ListUtil.of(salesExecutive, storeExecutive, directExecutive));
}
if (roleCodeList.contains(salesExecutive)) {
list.add(entryClerk);
}
if (roleCodeList.contains(storeExecutive)) {
List<String> excludeRoleCode = ListUtil.of(RoleCodeEnum.find(1L), salesExecutive, storeExecutive, entryClerk);
List<String> collect = selectData.stream().map(SelectData::getValue).filter(value -> !excludeRoleCode.contains(String.valueOf(value))).map(String::valueOf).collect(Collectors.toList());
list.addAll(collect);
}
if (roleCodeList.contains(directExecutive)) {
list.addAll(ListUtil.of(RoleCodeEnum.find(25L), RoleCodeEnum.find(26L)));
}
return selectData.stream().filter(c -> list.contains(String.valueOf(c.getValue()))).collect(Collectors.toList());
}
/** /**
* code * code
* *
* @param roleCode code * @param roleCode code
* @return boolean * @return boolean
*/ */
@Override @Override
public boolean existsRoleCode(String roleCode) { public boolean existsRoleCode(String roleCode) {
return baseMapper.existsRoleCode(roleCode); return baseMapper.existsRoleCode(roleCode);
} }
/** /**
* *
* *
* @param sysRole * @param sysRole
* @return boolean * @return boolean
*/ */
@Override @Override
public boolean save(SysRole sysRole) { public boolean save(SysRole sysRole) {
if (existsRoleCode(sysRole.getCode())) { if (existsRoleCode(sysRole.getCode())) {
throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "角色标识已存在!"); throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "角色标识已存在!");
} }
return SqlHelper.retBool(getBaseMapper().insert(sysRole)); return SqlHelper.retBool(getBaseMapper().insert(sysRole));
} }
} }

@ -4,7 +4,8 @@
<select id="listSelectData" resultType="com.baiye.domain.SelectData"> <select id="listSelectData" resultType="com.baiye.domain.SelectData">
select select
name, code as value name, code as value,
type
from from
sys_role sys_role
where where

Loading…
Cancel
Save