first commit

main
“yyffkk” 2 years ago
commit 4c8a4389ef

BIN
.DS_Store vendored

Binary file not shown.

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

@ -0,0 +1,13 @@
<component name="ArtifactManager">
<artifact type="exploded-war" name="community-manage-provider:Web exploded">
<output-path>$PROJECT_DIR$/out/artifacts/community_manage_provider_Web_exploded</output-path>
<root id="root">
<element id="javaee-facet-resources" facet="community-manage-provider/web/Web" />
<element id="directory" name="WEB-INF">
<element id="directory" name="classes">
<element id="module-output" name="community-manage-provider" />
</element>
</element>
</root>
</artifact>
</component>

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="community-mapper" />
<module name="community-api" />
<module name="community-model" />
<module name="community-admin-consumer" />
<module name="community-common" />
<module name="community-app-provider" />
<module name="community-butlerApp-provider" />
<module name="community-butlerApp-consumer" />
<module name="community-manage-provider" />
<module name="community-app-consumer" />
<module name="community-merchant-consumer" />
<module name="community-merchant-provider" />
<module name="community-admin-provider" />
<module name="community-manage-consumer" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="community-admin-order-provider" target="1.8" />
</bytecodeTargetLevel>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="community-admin-consumer" options="-parameters" />
<module name="community-admin-order-provider" options="-parameters" />
<module name="community-admin-provider" options="-parameters" />
<module name="community-api" options="-parameters" />
<module name="community-app-consumer" options="-parameters" />
<module name="community-app-provider" options="-parameters" />
<module name="community-butlerApp-consumer" options="-parameters" />
<module name="community-butlerApp-provider" options="-parameters" />
<module name="community-common" options="-parameters" />
<module name="community-manage-consumer" options="-parameters" />
<module name="community-manage-provider" options="-parameters" />
<module name="community-mapper" options="-parameters" />
<module name="community-merchant-consumer" options="-parameters" />
<module name="community-merchant-provider" options="-parameters" />
<module name="community-model" options="-parameters" />
</option>
</component>
</project>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="SaasIntelligentCommunity@localhost" uuid="fd5de293-1af1-466e-803d-43e87a54f033">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/SaasIntelligentCommunity</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectDictionaryState">
<dictionary name="AKU001" />
</component>
</project>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/community-admin-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-admin-provider/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-app-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-app-provider/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-butlerApp-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-butlerApp-provider/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-manage-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-manage-provider/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-mapper/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-mapper/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-merchant-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-merchant-provider/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/community-model/src/main/java" charset="UTF-8" />
</component>
</project>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationConfigOverride">
<CommitMessageValidationOverride>
<option name="enabled" value="true" />
</CommitMessageValidationOverride>
</option>
</component>
</project>

@ -0,0 +1,9 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="SerializableHasSerialVersionUIDField" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreAnonymousInnerClasses" value="false" />
<option name="superClassString" value="java.awt.Component" />
</inspection_tool>
</profile>
</component>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/community-app-provider/src/main/resources/config/application-upload.yml" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="TemplatesSettings">
<option name="templateConfigs">
<TemplateContext>
<option name="projectPath" value="$PROJECT_DIR$" />
</TemplateContext>
</option>
</component>
</project>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.saas</groupId>
<artifactId>community-admin-consumer</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>com.saas</groupId>
<artifactId>community-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<name>community-admin-consumer</name>
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- *************************** api模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** api模块依赖 ***************************************** -->
<!-- *************************** model模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** model模块依赖 ***************************************** -->
<!-- *************************** common模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** common模块依赖 ***************************************** -->
<!-- *************************** minio依赖 ***************************************** -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>okhttp</artifactId>
<groupId>com.squareup.okhttp3</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- *************************** minio依赖 ***************************************** -->
</dependencies>
<build>
<finalName>community-admin-consumer</finalName>
<!-- xxx.jar没有主清单属性-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.2.RELEASE</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,18 @@
package com.saas.consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
//过滤器去掉@Component在程序启动类加上@ServletComponentScan过滤器和urlPatterns属性均生效。
@ServletComponentScan
//下方如出现红色波浪线并不影响使用只是idea开发工具的问题
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class AdminConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminConsumerApplication.class);
}
}

@ -0,0 +1,16 @@
package com.saas.consumer.admin.aop.checkAuthority;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* admin
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AdminCheckAuthorityAnnotation {
// 权限编号
String jurisdictionId() default "";
}

@ -0,0 +1,72 @@
package com.saas.consumer.admin.aop.checkAuthority;
import com.saas.api.admin.service.authority.IAdminCheckAuthorityService;
import jdk.nashorn.internal.ir.annotations.Reference;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
*
*/
@Order(3)//设置切面优先级为3优先级越小优先级越高
@Aspect
@Component
public class AdminCheckAuthorityAspect {
private final static Logger logger = LoggerFactory.getLogger(AdminCheckAuthorityAspect.class);
@Reference
IAdminCheckAuthorityService adminCheckAuthorityService;
/**
* :
*/
@Pointcut("@annotation(com.saas.consumer.admin.aop.checkAuthority.AdminCheckAuthorityAnnotation)")
public void executePointCut() {
}
/**
* :
*/
@Before("executePointCut()")
public void doBefore(JoinPoint joinPoint) {
//1、查询【当前用户】所拥有的【角色】
//2、根据【角色】查询对应的权限
//3、将各个角色的权限 合在一起 并进行 去重操作
//4、获取该api所需权限
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
AdminCheckAuthorityAnnotation annotation = signature.getMethod().getAnnotation(AdminCheckAuthorityAnnotation.class);
String jurisdictionId = annotation.jurisdictionId();
//5、判断该用户是否存在该api所需权限
//6、如果存在则通过不存在则抛出提示权限不足
// if (false){
// throw new RuntimeException("用户权限不足");
// }
}
/**
*
*/
@AfterReturning(returning = "ret", pointcut = "executePointCut()")
public void doAfterReturning(Object ret) {
}
}

@ -0,0 +1,19 @@
package com.saas.consumer.admin.aop.log;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AdminLogAnnotation {
// 业务类型
String businessType() default "";
// 操作名称
String operationName() default "";
}

@ -0,0 +1,160 @@
package com.saas.consumer.admin.aop.log;
import com.alibaba.fastjson.JSONObject;
import com.saas.api.admin.service.log.IAdminUserOperationLogService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.GetIpUtil;
import com.saas.common.utils.JsonUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.pojo.AdminUser;
import com.saas.pojo.AdminUserOperationLog;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Reference;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
*
*/
@Order(1)//设置切面优先级为1优先级越小优先级越高
@Aspect
@Component
@Slf4j
public class AdminLogAspect {
private final static Logger logger = LoggerFactory.getLogger(AdminLogAspect.class);
@Reference
IAdminUserOperationLogService adminUserOperationLogService;
private AdminUserOperationLog adminLog = null;
/**
* :
*/
@Pointcut("@annotation(com.saas.consumer.admin.aop.log.AdminLogAnnotation)")
public void executePointCut() {
}
/**
* :
*/
@Before("executePointCut()")
public void doBefore(JoinPoint joinPoint) {
adminLog = new AdminUserOperationLog();
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 操作时间
adminLog.setCreateTime(new Date());
// 接口地址
adminLog.setUrl(request.getRequestURL().toString());
// 接口名
adminLog.setTargetName(joinPoint.getTarget().getClass().getName());
// 接口方法
adminLog.setMethodName(joinPoint.getSignature().getName());
// 操作名称和业务类型
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
AdminLogAnnotation annotation = signature.getMethod().getAnnotation(AdminLogAnnotation.class);
adminLog.setOperationName(annotation.operationName());
adminLog.setBusinessType(annotation.businessType());
// 请求参数
try {
//解决joinPoint.getArgs()返回的数组中携带有Request或者Response对象导致序列化异常
Stream<Object> stream = Arrays.stream(joinPoint.getArgs());
List<Object> logArgs = stream
.filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse)))
.collect(Collectors.toList());
//对象转json字符串
adminLog.setParams(JsonUtils.objectToJsonStr(logArgs));
} catch (Exception e) {
e.printStackTrace();
adminLog.setParams("请求参数异常或不存在!!!!");
}
// 请求ip
adminLog.setIp(GetIpUtil.getIp2(request));
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
if (userInfo != null){
// 操作人userid
adminLog.setAdminUserId(userInfo.getId());
// 操作人姓名
adminLog.setAdminUserName(userInfo.getDirector());
}else {
// 操作人userid
adminLog.setAdminUserId(0);
// 操作人姓名
adminLog.setAdminUserName("暂无");
}
}
/**
*
*/
@AfterReturning(returning = "ret", pointcut = "executePointCut()")
public void doAfterReturning(Object ret) {
// 处理完请求,返回内容
JSONObject result = (JSONObject) JSONObject.toJSON(ret) ;
Integer code = Integer.valueOf(result.get("code").toString());//获取返回code
String msg = result.get("msg").toString();//获取返回msg
adminLog.setCode(code);
// 方法结束时间
adminLog.setEndTime(new Date());
// 计算方法执行时间
long executeTime = adminLog.getEndTime().getTime() - adminLog.getCreateTime().getTime();
adminLog.setExecuteTime(executeTime);
// 异常原因
if (code != HttpStatusEnum.OK.code()) {
adminLog.setReason(msg);
}
//保存日志
adminUserOperationLogService.insert(adminLog);
log.info(adminLog.toString());
}
/**
*
*/
@AfterThrowing(throwing = "ex",pointcut = "executePointCut()")
public void doAfterThrowing(BizException ex){
// 处理完请求,返回内容
String message = ex.getMessage();
// Result result = (Result) ex;
adminLog.setCode(1001);//code1001:自定义的业务异常
// 方法结束时间
adminLog.setEndTime(new Date());
// 计算方法执行时间
long executeTime = adminLog.getEndTime().getTime() - adminLog.getCreateTime().getTime();
adminLog.setExecuteTime(executeTime);
// 异常原因
adminLog.setReason(message);
//保存日志
adminUserOperationLogService.insert(adminLog);
log.info(adminLog.toString());
}
}

@ -0,0 +1,53 @@
package com.saas.consumer.admin.controller.account;
import com.saas.api.admin.service.account.IAccountService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.account.AccountListDTO;
import com.saas.vo.admin.account.AccountListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@RestController
@RequestMapping("/admin/user/account")
public class AccountController {
@Reference
IAccountService accountService;
/**
*
* @param accountListDTO listDTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<AccountListVo> list(AccountListDTO accountListDTO){
return ResultPageInfo.success(accountService.list(accountListDTO),"请求成功");
}
/**
* /
* @param id id
* @return
*/
@GetMapping("/enable")
@AdminLogAnnotation(businessType = "账户管理",operationName = "启用/禁用账户")
public Result<String> enable(Integer id){
//data:当前操作1.启用2.禁用
switch (accountService.enable(id)){
case 1:
return Result.success("启用","操作成功");
case 2:
return Result.success("禁用","操作成功");
default:
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,85 @@
package com.saas.consumer.admin.controller.alipay;
import com.saas.api.admin.service.alipay.IAdminAlipayService;
import com.saas.common.utils.GetIpUtil;
import com.saas.common.utils.result.Result;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.balance.AdminBalanceRechargeDTO;
import com.saas.dto.admin.order.CreateOrderDTO;
import com.saas.dto.app.alipay.AppCreateOrderDTO;
import com.saas.pojo.AdminUser;
import com.saas.pojo.AppUser;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/alipay")
public class AdminAlipayController {
@Reference
IAdminAlipayService adminAlipayService;
/**
* ()
* @param createOrderDTO DTO
* @return
*/
@PostMapping("/createOrder")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "用户创建订单")
public Result<String> createOrder(@RequestBody CreateOrderDTO createOrderDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(adminAlipayService.createOrder(createOrderDTO,adminUser),"请求成功");
}
/**
* ()
* @param code
* @return
*/
@GetMapping("/checkAlipay")
public Result<String> checkAlipay(String code){
return Result.success(adminAlipayService.checkAlipay(code),"请求成功");
}
/**
*
* @param adminBalanceRechargeDTO DTO
* @param response response
* @param request request
* @return map
*/
@PostMapping("/createBalanceRechargeOrder")
public Result<String> createBalanceRechargeOrder(@RequestBody AdminBalanceRechargeDTO adminBalanceRechargeDTO, HttpServletResponse response, HttpServletRequest request){
//获取当前用户的信息
String tokenId = request.getHeader("admin-login-token");
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
response.setHeader("Access-Control-Allow-Origin", "*");
return Result.success(adminAlipayService.createBalanceRechargeOrder(adminBalanceRechargeDTO,adminUser),"请求成功");
}
/**
*
* @param code
* @return map
*/
@GetMapping("/balanceRechargeOrderCheckAlipay")
public Result<String> balanceRechargeOrderCheckAlipay(String code){
return Result.success(adminAlipayService.balanceRechargeOrderCheckAlipay(code),"请求成功");
}
}

@ -0,0 +1,88 @@
package com.saas.consumer.admin.controller.alipay;
import com.saas.api.admin.service.alipay.IAdminAlipayNotifyInfoService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* .,success
*/
@RestController
@RequestMapping("/admin/alipay/notifyInfo")
public class AdminAlipayNotifyInfoController {
@Reference
IAdminAlipayNotifyInfoService adminAlipayNotifyInfoService;
/**
*
* @param request request
* @return
*/
@PostMapping("/modelNotifyUrl")
public String modelNotifyUrl(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
response.setHeader("Access-Control-Allow-Origin", "*");
// 解决POST请求中文乱码问题推荐使用此种方式解决中文乱码因为是支付宝发送异步通知使用的是POST请求
request.setCharacterEncoding("UTF-8");
//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<>();
Map<String,String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
// 官方demo中使用如下方式解决中文乱码在此本人不推荐使用可能会出现中文乱码解决无效的问题。
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8");
params.put(name, valueStr);
}
return adminAlipayNotifyInfoService.modelNotifyUrl(params);
}
/**
* .,success
* @param request request
* @param response response
* @return map
* @throws UnsupportedEncodingException
*/
@PostMapping(value = "/balanceRechargeOrderNotifyInfo")
public String balanceRechargeOrderNotifyInfo(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
response.setHeader("Access-Control-Allow-Origin", "*");
// 解决POST请求中文乱码问题推荐使用此种方式解决中文乱码因为是支付宝发送异步通知使用的是POST请求
request.setCharacterEncoding("UTF-8");
//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<>();
Map<String,String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
// 官方demo中使用如下方式解决中文乱码在此本人不推荐使用可能会出现中文乱码解决无效的问题。
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8");
params.put(name, valueStr);
}
return adminAlipayNotifyInfoService.balanceRechargeOrderNotifyInfo(params);
}
}

@ -0,0 +1,41 @@
package com.saas.consumer.admin.controller.balance;
import com.saas.api.admin.service.balance.IAdminBalanceService;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.dto.admin.balance.AdminBalanceDTO;
import com.saas.pojo.AdminUser;
import com.saas.vo.manage.balance.AdminBalanceRecordListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/balanceRecord")
public class AdminBalanceController {
@Reference
IAdminBalanceService adminBalanceService;
/**
*
* @param adminBalanceDTO DTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<AdminBalanceRecordListVo> list(AdminBalanceDTO adminBalanceDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return ResultPageInfo.success(adminBalanceService.list(adminBalanceDTO,adminUser),"请求成功");
}
}

@ -0,0 +1,120 @@
package com.saas.consumer.admin.controller.charging;
import com.saas.api.admin.service.charging.IChargingService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultList;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.charging.ChargingListDTO;
import com.saas.dto.admin.charging.ChargingTemplateDTO;
import com.saas.dto.admin.charging.ChargingTemplateUpdateDTO;
import com.saas.dto.admin.charging.ChargingUpdateStatusDTO;
import com.saas.vo.admin.charging.ChargingFindByIdVo;
import com.saas.vo.admin.charging.ChargingFindSuperNavigationVo;
import com.saas.vo.admin.charging.ChargingFindTimeTypeVo;
import com.saas.vo.admin.charging.ChargingListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/admin/user/charging")
public class ChargingController {
@Reference
IChargingService chargingService;
/**
*
* @param chargingListDTO listDTO
* @return
*/
@GetMapping("/list")
// @AdminLogAnnotation(businessType = "收费标准",operationName = "查询收费模版记录")
public ResultPageInfo<ChargingListVo> list(ChargingListDTO chargingListDTO){
return ResultPageInfo.success(chargingService.list(chargingListDTO),"请求成功");
}
/**
* /
* @param chargingUpdateStatusDTO /DTO
* @return
*/
@PostMapping("/updateStatus")
@AdminLogAnnotation(businessType = "收费标准",operationName = "启用/禁用收费模版")
public Result<String> updateStatus(@RequestBody ChargingUpdateStatusDTO chargingUpdateStatusDTO){
//data:当前操作1.启用2.禁用
switch (chargingService.updateStatus(chargingUpdateStatusDTO.getId())){
case 1:
return Result.success("启用","操作成功");
case 2:
return Result.success("禁用","操作成功");
default:
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @return
*/
@GetMapping("/findSuperNavigation")
public ResultList<ChargingFindSuperNavigationVo> findSuperNavigation(){
return ResultList.success(chargingService.findSuperNavigation(),"请求成功");
}
/**
*
* @return
*/
@GetMapping("/findTimeType")
public ResultList<ChargingFindTimeTypeVo> findTimeType(){
return ResultList.success(chargingService.findTimeType(),"请求成功");
}
/**
*
* @param chargingTemplateDTO DTO
* @return
*/
@PostMapping("/insert")
@AdminLogAnnotation(businessType = "收费标准",operationName = "添加收费模版")
public Result<String> insert(@RequestBody ChargingTemplateDTO chargingTemplateDTO){
//判断操作结果
if (chargingService.insert(chargingTemplateDTO)){
return Result.success(null,"操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* Id
* @return
*/
@GetMapping("/findById")
public Result<ChargingFindByIdVo> findById(Integer id){
return Result.success(chargingService.findById(id),"请求成功");
}
/**
*
* @param chargingTemplateUpdateDTO update DTO
* @return
*/
@PostMapping("/update")
@AdminLogAnnotation(businessType = "收费标准",operationName = "修改收费模版")
public Result<String> update(@RequestBody ChargingTemplateUpdateDTO chargingTemplateUpdateDTO){
//判断操作结果
if (chargingService.update(chargingTemplateUpdateDTO)){
return Result.success(null,"操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,53 @@
package com.saas.consumer.admin.controller.city;
import com.saas.api.admin.service.city.ICityService;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultList;
import com.saas.vo.admin.city.AllCityVo;
import com.saas.vo.admin.city.CityVo;
import com.saas.vo.app.city.AppAllCityVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/admin/city")
public class CityController {
@Reference
ICityService cityService;
/**
*
* @param type 0.1.2.3.
* @return
*/
@GetMapping("/findByType")
public ResultList<CityVo> findByType(Integer type){
return ResultList.success(cityService.findByType(type),"请求成功");
}
/**
* id
* @param parentId id
* @return
*/
@GetMapping("/findByParentId")
public ResultList<CityVo> findByParentId(Integer parentId){
return ResultList.success(cityService.findByParentId(parentId),"请求成功");
}
/**
*
* @return
*/
@GetMapping("/allCity")
public ResultList<AllCityVo> allCity(){
return ResultList.success(cityService.allCity(),"请求成功");
}
}

@ -0,0 +1,174 @@
package com.saas.consumer.admin.controller.community;
import com.saas.api.admin.service.community.ICommunityService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultList;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.community.*;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.community.CommunityFBIVo;
import com.saas.vo.admin.community.CommunityInfoVo;
import com.saas.vo.admin.community.CommunityListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("/admin/user/community")
public class CommunityController {
@Reference
ICommunityService communityService;
/**
* ()
* @param communityListDTO listDTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<CommunityListVo> list(CommunityListDTO communityListDTO){
return ResultPageInfo.success(communityService.list(communityListDTO),"请求成功");
}
/**
* ()
* @param communityInsertAdminDTO insertAdmin DTO()
* @return
*/
@PostMapping("/insertAdmin")
@AdminLogAnnotation(businessType = "小区管理",operationName = "管理员添加小区信息")
public Result<String> insertAdmin(@RequestBody CommunityInsertAdminDTO communityInsertAdminDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (communityService.insertAdmin(communityInsertAdminDTO,userInfo.getId())){
return Result.success("添加小区信息(管理员页面)","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* id()
* @param communityId id
* @return
*/
@GetMapping("/findByIdAdmin")
public Result<CommunityFBIVo> findByIdAdmin(Integer communityId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(communityService.findByIdAdmin(communityId,adminUser),"请求成功");
}
/**
* ()
* @param communityUpdateAdminDTO updateAdmin DTO()
* @return
*/
@PostMapping("/updateAdmin")
@AdminLogAnnotation(businessType = "小区管理",operationName = "管理员修改小区信息")
public Result<String> updateAdmin(@RequestBody CommunityUpdateAdminDTO communityUpdateAdminDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (communityService.updateAdmin(communityUpdateAdminDTO,userInfo.getId())){
return Result.success("修改小区信息(管理员页面)","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* ()
* @param communityInsertDTO insertDTO
* @return
*/
@PostMapping("/insert")
@AdminLogAnnotation(businessType = "小区管理",operationName = "添加小区信息")
public Result<String> insert(@RequestBody CommunityInsertDTO communityInsertDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (communityService.insert(communityInsertDTO,userInfo.getId())){
return Result.success("添加小区信息(门户网站)","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* ()
* @param communityUpdateDTO updateDTO()
* @return
*/
@PostMapping("/update")
@AdminLogAnnotation(businessType = "小区管理",operationName = "修改小区信息")
public Result<String> update(@RequestBody CommunityUpdateDTO communityUpdateDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (communityService.update(communityUpdateDTO,adminUser)){
return Result.success("修改小区信息(门户网站)","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @param keyword
* @param request request
* @return
*/
@GetMapping("/getAllCommunityInfo")
public ResultList<CommunityInfoVo> getAllCommunityInfo(String keyword, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
return ResultList.success(communityService.getAllCommunityInfo(keyword,userInfo.getId()),"请求成功");
}
/**
* ()
* @param companyId id
* @return
*/
@GetMapping("/getCommunityInfoByCompanyId")
public ResultList<CommunityInfoVo> getCommunityInfoByCompanyId(Integer companyId){
return ResultList.success(communityService.getCommunityInfoByCompanyId(companyId),"请求成功");
}
}

@ -0,0 +1,38 @@
package com.saas.consumer.admin.controller.console;
import com.saas.api.admin.service.console.IConsoleService;
import com.saas.common.utils.result.Result;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.console.ConsoleShowVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/console")
public class ConsoleController {
@Reference
IConsoleService consoleService;
/**
*
* @return
*/
@GetMapping("/show")
public Result<ConsoleShowVo> show(HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
return Result.success(consoleService.show(userInfo.getId()),"请求成功");
}
}

@ -0,0 +1,46 @@
package com.saas.consumer.admin.controller.customerList;
import com.saas.api.admin.service.customerList.ICustomerListService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.customerList.CustomerListDTO;
import com.saas.vo.admin.customerList.CustomerDetailsVo;
import com.saas.vo.admin.customerList.CustomerListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@RestController
@RequestMapping("/admin/user/customerList")
public class CustomerListController {
@Reference
ICustomerListService customerListService;
/**
*
* @param customerListDTO listDTO
* @return
*/
@GetMapping("/list")
@AdminLogAnnotation(businessType = "客户列表",operationName = "查询客户列表记录")
public ResultPageInfo<CustomerListVo> list(CustomerListDTO customerListDTO){
return ResultPageInfo.success(customerListService.list(customerListDTO),"请求成功");
}
/**
* id
* @param id id
* @return
*/
@GetMapping("/findDetailsById")
public Result<CustomerDetailsVo> findDetailsById(Integer id){
return Result.success(customerListService.findDetailsById(id),"请求成功");
}
}

@ -0,0 +1,46 @@
package com.saas.consumer.admin.controller.jcook;
import com.saas.api.admin.service.jcook.IJcookService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* jcook
*/
@RestController
@RequestMapping("/admin/user/jcook")
public class JcookController {
@Reference
IJcookService jcookService;
/**
* jcookjcook(5)
*
* @param page
* @return map
*/
@GetMapping("/initJcookShop")
public Result<String> initJcookShop(Integer page){
if (jcookService.initJcookShop(page)){
return Result.success("初始化商品数据","操作成功");
}
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
/**
* jcook()
* @return map
*/
@GetMapping("/updateJcookShpp")
public Result<String> updateJcookShpp(){
if (jcookService.updateJcookShpp()){
return Result.success("初始化商品数据","操作成功");
}
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}

@ -0,0 +1,220 @@
package com.saas.consumer.admin.controller.login;
import com.saas.api.admin.service.login.IAdminLoginService;
import com.saas.common.utils.IdWorker;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.check.CheckUtil;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.login.*;
import com.saas.pojo.AdminUser;
import com.saas.pojo.ManageUser;
import com.saas.pojo.SysCompany;
import com.saas.vo.admin.user.AdminUserInfoVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
*/
@RestController
@RequestMapping("/admin")
public class AdminLoginController {
@Reference
IAdminLoginService adminLoginService;
/**
*
* @param adminPwdLoginDTO DTO
* @return Token
*/
@PostMapping("/loginPWD")
@AdminLogAnnotation(businessType = "平台用户登录",operationName = "账户密码登录")
public Result<String> loginPWD(@RequestBody AdminPwdLoginDTO adminPwdLoginDTO){
//生成登录token
IdWorker idWorker = new IdWorker(1,1,1);
long loginToken = idWorker.nextId();
adminPwdLoginDTO.setLoginToken(loginToken);
if (adminLoginService.loginPWD(adminPwdLoginDTO)){
return Result.success(String.valueOf(loginToken),"登录成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.ACCOUNT_PASSWORD_ERROR);
}
}
/**
*
* @param adminTelCodeLoginDTO DTO
* @return Token
*/
@PostMapping("/loginTelCode")
@AdminLogAnnotation(businessType = "平台用户登录",operationName = "手机号验证码登录")
public Result<String> loginTelCode(@RequestBody AdminTelCodeLoginDTO adminTelCodeLoginDTO){
//生成登录token
IdWorker idWorker = new IdWorker(1,1,1);
long loginToken = idWorker.nextId();
if (adminLoginService.loginTelCode(adminTelCodeLoginDTO,loginToken)){
return Result.success(String.valueOf(loginToken),"登录成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.TEL_CODE_ERROR);
}
}
/**
*
* @param adminSendTelCodeDTO DTO
* @return
*/
@PostMapping("/sendTelCode")
@AdminLogAnnotation(businessType = "平台用户登录",operationName = "发送手机号登录验证码")
public Result<String> sendTelCode(@RequestBody AdminSendTelCodeDTO adminSendTelCodeDTO){
//生成验证码code
String code = String.valueOf(new Random().nextInt(899999) + 100000);
if (adminSendTelCodeDTO.getTel() == null){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号不可为空");
}
//验证手机号格式
Pattern p=Pattern.compile("^1[3456789]\\d{9}$");
Matcher m=p.matcher(adminSendTelCodeDTO.getTel());
boolean matches = m.matches();
if (!matches){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式有误");
}
if (adminLoginService.sendTelCode(adminSendTelCodeDTO, code)){
return Result.success(null,"发送成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.SEND_TEL_CODE_ERROR);
}
}
/**
*
* @param adminSendTelRegisterCodeDTO DTO
* @return
*/
@PostMapping("/sendTelRegisterCode")
@AdminLogAnnotation(businessType = "平台用户注册",operationName = "发送手机号注册验证码")
public Result<String> sendTelRegisterCode(@RequestBody AdminSendTelRegisterCodeDTO adminSendTelRegisterCodeDTO){
//生成验证码code
String code = String.valueOf(new Random().nextInt(899999) + 100000);
if (adminSendTelRegisterCodeDTO.getTel() == null){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号不可为空");
}
//验证手机号格式
if (!CheckUtil.checkTel(adminSendTelRegisterCodeDTO.getTel())){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式有误");
}
if (adminLoginService.sendTelRegisterCode(adminSendTelRegisterCodeDTO, code)){
return Result.success(null,"发送成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.SEND_TEL_CODE_ERROR);
}
}
/**
*
* @param adminRegisterDTO DTO
* @return
*/
@PostMapping("/register")
@AdminLogAnnotation(businessType = "平台用户注册",operationName = "注册账户")
public Result<String> register(@RequestBody AdminRegisterDTO adminRegisterDTO){
if (adminRegisterDTO.getTel() == null){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号不可为空");
}
//验证手机号格式
if (!CheckUtil.checkTel(adminRegisterDTO.getTel())){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式有误");
}
if (adminLoginService.register(adminRegisterDTO)){
return Result.success(null,"注册成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.REGISTER_FAILED);
}
}
/**
*
* @return
*/
@GetMapping("/user/getUserInfo")
public Result<AdminUserInfoVo> getUserInfo(HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//DO转VO
AdminUserInfoVo adminUserInfoVo = new AdminUserInfoVo();
PropertyUtils.copyProperties(adminUser, adminUserInfoVo);
return Result.success(adminUserInfoVo,"请求成功");
}
/**
* 退
* @param request http
* @return
*/
@PostMapping("/user/quit")
public Result<String> quit(HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
if (adminLoginService.quit(adminUser)){
return Result.success("平台用户退出","退出成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.TEL_CODE_ERROR);
}
}
/**
* token()
* @return
*/
@GetMapping("/user/getManageLoginToken")
public Result<String> getManageLoginToken(Integer communityId,HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//生成登录token
IdWorker idWorker = new IdWorker(1,1,1);
long loginToken = idWorker.nextId();
if (adminLoginService.getManageLoginToken(communityId,adminUser,loginToken)){
return Result.success(String.valueOf(loginToken),"请求成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.TEL_CODE_ERROR);
}
}
}

@ -0,0 +1,144 @@
package com.saas.consumer.admin.controller.manageSetting;
import com.saas.api.admin.service.manageSetting.ISuperUserSettingService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingInsertDTO;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingListDTO;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingUpdateDTO;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.manageSetting.ManageSuperUserSettingFBIVo;
import com.saas.vo.admin.manageSetting.ManageSuperUserSettingListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* ()
*/
@RestController
@RequestMapping("/admin/user/superUserSetting")
public class SuperUserSettingController {
@Reference
ISuperUserSettingService superUserSettingService;
/**
*
* @param manageSuperUserSettingListDTO list DTO
* @param request request
* @return
*/
@GetMapping("/list")
public ResultPageInfo<ManageSuperUserSettingListVo> list(ManageSuperUserSettingListDTO manageSuperUserSettingListDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return ResultPageInfo.success(superUserSettingService.list(manageSuperUserSettingListDTO,adminUser),"请求成功");
}
/**
*
* @return
*/
@PostMapping("/insert")
public Result<String> insert(@RequestBody ManageSuperUserSettingInsertDTO manageSuperUserSettingInsertDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
if (manageSuperUserSettingInsertDTO.getUserName() == null){
manageSuperUserSettingInsertDTO.setUserName(manageSuperUserSettingInsertDTO.getTel());
}
if (manageSuperUserSettingInsertDTO.getPassword() == null){
manageSuperUserSettingInsertDTO.setPassword(manageSuperUserSettingInsertDTO.getTel().substring(manageSuperUserSettingInsertDTO.getTel().length()-6));//手机号后6位为默认密码
}
//判断操作结果
if (superUserSettingService.insert(manageSuperUserSettingInsertDTO,adminUser)){
return Result.success("添加超级管理员信息","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* id
* @param manageUserId id
* @param request request
* @return
*/
@GetMapping("/findById")
public Result<ManageSuperUserSettingFBIVo> findById(Integer manageUserId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(superUserSettingService.findById(manageUserId,adminUser),"请求成功");
}
/**
*
* @param manageSuperUserSettingUpdateDTO update DTO
* @param request request
* @return
*/
@PostMapping("/update")
public Result<String> update(@RequestBody ManageSuperUserSettingUpdateDTO manageSuperUserSettingUpdateDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
if (manageSuperUserSettingUpdateDTO.getUserName() == null){
manageSuperUserSettingUpdateDTO.setUserName(manageSuperUserSettingUpdateDTO.getTel());
}
if (manageSuperUserSettingUpdateDTO.getPassword() == null){
manageSuperUserSettingUpdateDTO.setPassword(manageSuperUserSettingUpdateDTO.getTel().substring(manageSuperUserSettingUpdateDTO.getTel().length()-6));//手机号后6位为默认密码
}
//判断操作结果
if (superUserSettingService.update(manageSuperUserSettingUpdateDTO,adminUser)){
return Result.success("修改超级管理员信息","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* /
* @param manageUserId id
* @param request request
* @return
*/
@GetMapping("/enable")
public Result<String> enable(Integer manageUserId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//data:当前操作1.正常2.停用
switch (superUserSettingService.enable(manageUserId)){
case 1:
return Result.success("正常","操作成功");
case 2:
return Result.success("停用","操作成功");
default:
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,154 @@
package com.saas.consumer.admin.controller.order;
import com.saas.api.admin.service.order.IAdminFunctionOrderService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.order.*;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.order.EnableChoseInfoVo;
import com.saas.vo.admin.order.AdminFunctionOrderListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
/**
*
*/
@RestController
@RequestMapping("/admin/user/order")
public class AdminFunctionOrderController {
@Reference
IAdminFunctionOrderService adminFunctionOrderService;
/**
* ()
* @param adminFunctionOrderDTO ListDTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<AdminFunctionOrderListVo> list(AdminFunctionOrderDTO adminFunctionOrderDTO){
return ResultPageInfo.success(adminFunctionOrderService.list(adminFunctionOrderDTO),"请求成功");
}
/**
*
* @return
*/
@GetMapping("/findEnableChoseModel")
public Result<EnableChoseInfoVo> findEnableChoseModel(HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
return Result.success(adminFunctionOrderService.findEnableChoseModel(userInfo.getId()),"请求成功");
}
/**
*
* @param calculateAmountDTO DTO
* @return
*/
@PostMapping("/calculateAmount")
public Result<BigDecimal> calculateAmount(@RequestBody CalculateAmountDTO calculateAmountDTO){
return Result.success(adminFunctionOrderService.calculateAmount(calculateAmountDTO),"请求成功");
}
/**
* ()
* @param adminCreateOrderDTo DTO
* @return
*/
@PostMapping("/adminCreateOrder")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "后台创建订单")
public Result<Boolean> adminCreateOrder(@RequestBody AdminCreateOrderDTO adminCreateOrderDTo, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
return Result.success(adminFunctionOrderService.adminCreateOrder(adminCreateOrderDTo,userInfo.getId()),"请求成功");
}
/**
* ()
* @param bindingCommunityDTO DTO
* @return
*/
@PostMapping("/bindingCommunity")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "后台绑定小区")
public Result<String> bindingCommunity(@RequestBody BindingCommunityDTO bindingCommunityDTO){
if (adminFunctionOrderService.bindingCommunity(bindingCommunityDTO)){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @param bindingCommunityDTO DTO
* @return
*/
@PostMapping("/userBindingCommunity")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "用户绑定小区")
public Result<String> userBindingCommunity(@RequestBody BindingCommunityDTO bindingCommunityDTO,HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
if (adminFunctionOrderService.userBindingCommunity(bindingCommunityDTO,userInfo.getId())){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* ()
* @param adminFunctionOrderId id
* @return
*/
@GetMapping("/unbindingCommunity")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "后台解绑小区")
public Result<String> unbindingCommunity(Integer adminFunctionOrderId){
if (adminFunctionOrderService.unbindingCommunity(adminFunctionOrderId)){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* ()
* @param adminFunctionOrderId id
* @return
*/
@GetMapping("/userUnbindingCommunity")
@AdminLogAnnotation(businessType = "购买功能订单",operationName = "用户解绑小区")
public Result<String> userUnbindingCommunity(Integer adminFunctionOrderId,HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
if (adminFunctionOrderService.userUnbindingCommunity(adminFunctionOrderId,userInfo.getId())){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,71 @@
package com.saas.consumer.admin.controller.order;
import com.saas.api.admin.service.order.IFinancialStatementsService;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.dto.admin.order.AdminFunctionOrderDTO;
import com.saas.dto.admin.order.FinancialStatementsDTO;
import com.saas.dto.admin.order.FinancialStatementsRefundDTO;
import com.saas.vo.admin.order.AdminFunctionOrderListVo;
import com.saas.vo.admin.order.FinancialStatementsDetailsVo;
import com.saas.vo.admin.order.FinancialStatementsFBIVo;
import com.saas.vo.admin.order.FinancialStatementsVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
/**
*
*/
@RestController
@RequestMapping("/admin/user/financialStatements")
public class FinancialStatementsController {
@Reference
IFinancialStatementsService financialStatementsService;
/**
*
* @param financialStatementsDTO ListDTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<FinancialStatementsVo> list(FinancialStatementsDTO financialStatementsDTO){
return ResultPageInfo.success(financialStatementsService.list(financialStatementsDTO),"请求成功");
}
/**
*
* @param id id
* @return
*/
@GetMapping("/findDetails")
public Result<FinancialStatementsDetailsVo> findDetails(Integer id){
return Result.success(financialStatementsService.findDetails(id),"请求成功");
}
/**
* 退
* @param id id
* @return 退
*/
@GetMapping("/findById")
public Result<FinancialStatementsFBIVo> findById(Integer id){
return Result.success(financialStatementsService.findById(id),"请求成功");
}
/**
* 退
* @param financialStatementsRefundDTO 退DTO
* @return 退
*/
@PostMapping("/refund")
public Result<String> refund(@RequestBody FinancialStatementsRefundDTO financialStatementsRefundDTO){
if (financialStatementsService.refund(financialStatementsRefundDTO)){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,185 @@
package com.saas.consumer.admin.controller.paySetting;
import com.saas.api.admin.service.paySetting.IAlipaySettingService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.dto.admin.paySetting.*;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.paySetting.AlipaySettingFBBIVo;
import com.saas.vo.admin.paySetting.AlipaySettingFIBIVo;
import com.saas.vo.admin.paySetting.AlipaySettingListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/alipaySetting")
public class AlipaySettingController {
@Reference
IAlipaySettingService paySettingService;
/**
*
* @param request request
* @return
*/
@GetMapping("/list")
public ResultPageInfo<AlipaySettingListVo> list(AlipaySettingListDTO alipaySettingListDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return ResultPageInfo.success(paySettingService.list(alipaySettingListDTO,adminUser),"请求成功");
}
/**
*
* @param alipaySettingInsertDTO insert DTO
* @return
*/
@PostMapping("/insert")
public Result<String> insert(@RequestBody AlipaySettingInsertDTO alipaySettingInsertDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (paySettingService.insert(alipaySettingInsertDTO,adminUser)){
return Result.success("添加支付设置信息","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @param alipaySettingBindDTO bind DTO
* @return
*/
@PostMapping("/bind")
public Result<String> bind(@RequestBody AlipaySettingBindDTO alipaySettingBindDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (paySettingService.bind(alipaySettingBindDTO,adminUser)){
return Result.success("支付宝设置绑定小区","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* id
* @param alipaySettingId Id
* @return
*/
@GetMapping("/findInfoById")
public Result<AlipaySettingFIBIVo> findInfoById(Integer alipaySettingId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(paySettingService.findInfoById(alipaySettingId,adminUser),"请求成功");
}
/**
* id
* @param alipaySettingId Id
* @return
*/
@GetMapping("/findBindById")
public Result<AlipaySettingFBBIVo> findBindById(Integer alipaySettingId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(paySettingService.findBindById(alipaySettingId,adminUser),"请求成功");
}
/**
*
* @param alipaySettingUpdateDTO update DTO
* @return
*/
@PostMapping("/update")
public Result<String> update(@RequestBody AlipaySettingUpdateDTO alipaySettingUpdateDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (paySettingService.update(alipaySettingUpdateDTO,adminUser)){
return Result.success("修改支付宝设置信息","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @param alipaySettingDeleteDTO delete DTO
* @return
*/
@PostMapping("/delete")
public Result<String> delete(@RequestBody AlipaySettingDeleteDTO alipaySettingDeleteDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//判断操作结果
if (paySettingService.delete(alipaySettingDeleteDTO.getAlipaySettingIds(),adminUser)){
return Result.success("删除支付宝设置信息","操作成功");
}else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* /
* @param alipaySettingId Id
* @return
*/
@GetMapping("/isEnable")
public Result<String> isEnable(Integer alipaySettingId, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
//data:当前操作1.启用2.禁用
switch (paySettingService.isEnable(alipaySettingId,adminUser)){
case 1:
return Result.success("启用","操作成功");
case 2:
return Result.success("禁用","操作成功");
default:
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,106 @@
package com.saas.consumer.admin.controller.settled;
import com.saas.api.admin.service.settled.ISettledApplicationService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.settled.SettledApplicationInsertDTO;
import com.saas.dto.admin.settled.SettledApplicationIsPassDTO;
import com.saas.dto.admin.settled.SettledApplicationListDTO;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.settled.SettledApplicationDetailsVo;
import com.saas.vo.admin.settled.SettledApplicationListVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/settledApplication")
public class SettledApplicationController {
@Reference
ISettledApplicationService settledApplicationService;
/**
*
* @param settledApplicationListDTO listDTO
* @return map
*/
@GetMapping("/list")
// @AdminLogAnnotation(businessType = "入驻申请",operationName = "查询入驻申请记录")
public ResultPageInfo<SettledApplicationListVo> list(SettledApplicationListDTO settledApplicationListDTO){
return ResultPageInfo.success(settledApplicationService.list(settledApplicationListDTO),"请求成功");
}
/**
*
* @return
*/
@PostMapping("/insert")
@AdminLogAnnotation(businessType = "入驻申请",operationName = "申请公司入驻")
public Result<String> insert(@RequestBody SettledApplicationInsertDTO settledApplicationInsertDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser userInfo = (AdminUser) session.getAttribute(tokenId);
if (settledApplicationService.insert(settledApplicationInsertDTO,userInfo.getId())){
return Result.success("申请公司入驻","操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
*
* @param companyName
* @param request request
* @return
*/
@GetMapping("/checkCompanyName")
@AdminLogAnnotation(businessType = "入驻申请",operationName = "校验公司名称")
public Result<String> checkCompanyName(String companyName, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
return Result.success(settledApplicationService.checkCompanyName(companyName,adminUser),"请求成功");
}
/**
* /
* @param settledApplicationIsPassDTO isPassDTO
* @return
*/
@PostMapping("/isPass")
@AdminLogAnnotation(businessType = "入驻申请",operationName = "通过/驳回")
public Result<String> isPass(@RequestBody SettledApplicationIsPassDTO settledApplicationIsPassDTO){
if (settledApplicationService.isPass(settledApplicationIsPassDTO)){
return Result.success(null,"操作成功");
}else {
//操作失败
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
/**
* id
* @param id id
* @return
*/
@GetMapping("/findDetailsById")
public Result<SettledApplicationDetailsVo> findDetailsById(Integer id){
return Result.success(settledApplicationService.findDetailsById(id),"请求成功");
}
}

@ -0,0 +1,68 @@
package com.saas.consumer.admin.controller.storeAudit;
import com.saas.api.admin.service.storeAudit.IStoreAuditService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.common.utils.result.ResultPageInfo;
import com.saas.dto.admin.storeAudit.StoreAuditExamineDTO;
import com.saas.dto.admin.storeAudit.StoreAuditListDTO;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.storeAudit.StoreAuditListVo;
import com.saas.vo.merchant.authentication.AuthenticationVo;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
*
*/
@RestController
@RequestMapping("/admin/user/storeAudit")
public class StoreAuditController {
@Reference
IStoreAuditService storeAuditService;
/**
*
* @param storeAuditListDTO list DTO
* @return
*/
@GetMapping("/list")
public ResultPageInfo<StoreAuditListVo> list(StoreAuditListDTO storeAuditListDTO){
return ResultPageInfo.success(storeAuditService.list(storeAuditListDTO),"请求成功");
}
/**
* id
* @param merchantShopId id
* @return
*/
@GetMapping("/detail")
public Result<AuthenticationVo> detail(Integer merchantShopId){
return Result.success(storeAuditService.detail(merchantShopId),"请求成功");
}
/**
* /
* @param storeAuditExamineDTO DTO
* @return
*/
@PostMapping("/examine")
public Result<String> examine(@RequestBody StoreAuditExamineDTO storeAuditExamineDTO, HttpServletRequest request){
// 获取头部token
String tokenId = request.getHeader("admin-login-token");
// 从session里获取用户对象key为token值
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser) session.getAttribute(tokenId);
if (storeAuditService.examine(storeAuditExamineDTO,adminUser)){
return Result.success("店铺审核","请求成功");
} else {
return Result.fail(HttpStatusEnum.OPERATION_FAILED);
}
}
}

@ -0,0 +1,60 @@
package com.saas.consumer.admin.controller.telCode;
import com.saas.api.admin.service.telCode.IAdminTelCodeService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.consumer.admin.aop.log.AdminLogAnnotation;
import com.saas.dto.admin.telCode.SettledTelCodeDTO;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
*/
@RestController
@RequestMapping("/admin/user/telCode")
public class TelCodeController {
@Reference
IAdminTelCodeService adminTelCodeService;
/**
*
* @param settledTelCodeDTO DTO
* @return
*/
@PostMapping("/sendSettledTelCode")
@AdminLogAnnotation(businessType = "手机验证码",operationName = "发送入驻申请手机号验证码")
public Result<String> sendSettledTelCode(@RequestBody SettledTelCodeDTO settledTelCodeDTO){
//生成验证码code
String code = String.valueOf(new Random().nextInt(899999) + 100000);
//验证码类型
Integer type = 1;//验证码类型:1.入驻申请
if (settledTelCodeDTO.getTel() == null){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号不可为空");
}
//验证手机号格式
Pattern p=Pattern.compile("^1[3456789]\\d{9}$");
Matcher m=p.matcher(settledTelCodeDTO.getTel());
boolean matches = m.matches();
if (!matches){
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式有误");
}
if (adminTelCodeService.sendSettledTelCode(settledTelCodeDTO,type, code)){
return Result.success(null,"发送成功");
}else {
//登录失败,账户或密码错误
return Result.fail(HttpStatusEnum.SEND_TEL_CODE_ERROR);
}
}
}

@ -0,0 +1,29 @@
package com.saas.consumer.admin.controller.upload;
import com.saas.common.utils.minio.MinioUtil;
import com.saas.common.utils.result.Result;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
*
*/
@RestController
@RequestMapping("/admin/user/upload")
public class AdminUploadController {
/**
*
* @param file
* @return map
*/
@PostMapping("/uploadImg")
public Result<String> uploadImg(@RequestParam("file") MultipartFile file){
MinioUtil minioUtil = new MinioUtil();
String upload = minioUtil.upload(file,"admin");
return Result.success(upload,"上传成功");
}
}

@ -0,0 +1,128 @@
package com.saas.consumer.admin.exception;
import com.saas.common.exception.BizException;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.xml.bind.ValidationException;
import java.util.stream.Collectors;
/**
* @ControllerAdvice
*/
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value = BizException.class)
@ResponseBody
public Result<String> bizExceptionHandler(HttpServletRequest req, BizException e){
log.error("发生业务异常!原因是:{}",e.getMessage());
return Result.fail(e.getCode(),e.getMessage());
}
/**
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value = RuntimeException.class)
@ResponseBody
public Result<String> runtimeExceptionHandler(HttpServletRequest req, RuntimeException e){
log.error("发生运行时异常!原因是:{}",e.getMessage());
return Result.fail(HttpStatusEnum.INTERNAL_SERVER_ERROR);
}
/**
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value =NullPointerException.class)
@ResponseBody
public Result<String> exceptionHandler(HttpServletRequest req, NullPointerException e){
log.error("发生空指针异常!原因是:",e);
return Result.fail(HttpStatusEnum.NOT_FOUND);
}
/**
*
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
@ResponseBody
public Result<String> httpRequestMethodNotSupportedException(HttpServletRequest req, HttpRequestMethodNotSupportedException e) {
log.error("请求方法异常!原因是:",e);
return Result.fail(HttpStatusEnum.METHOD_NOT_ALLOWED);
}
/**
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value =Exception.class)
@ResponseBody
public Result<String> exceptionHandler(HttpServletRequest req, Exception e){
log.error("未知异常!原因是:",e);
return Result.fail(HttpStatusEnum.INTERNAL_SERVER_ERROR);
}
/**
*
* @param e
* @return
*/
@ExceptionHandler(value = {BindException.class, ValidationException.class, MethodArgumentNotValidException.class})
@ResponseBody
public Result<String> handleValidatedException(Exception e) {
Result<String> result = null;
if (e instanceof MethodArgumentNotValidException) {
MethodArgumentNotValidException ex =(MethodArgumentNotValidException) e;
result = Result.fail(HttpStatusEnum.MISSING_FIELD_INFO,
ex.getBindingResult().getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining(";"))
);
} else if (e instanceof ConstraintViolationException){
ConstraintViolationException ex = (ConstraintViolationException) e;
result = Result.fail(HttpStatusEnum.MISSING_FIELD_INFO,
ex.getConstraintViolations().stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining("; "))
);
}else if (e instanceof BindException) {
BindException ex = (BindException ) e;
result = Result.fail(HttpStatusEnum.MISSING_FIELD_INFO,
ex.getAllErrors().stream()
.map(ObjectError::getDefaultMessage)
.collect(Collectors.joining("; "))
);
}
return result;
}
}

@ -0,0 +1,39 @@
package com.saas.consumer.admin.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
*
*/
@Component
public class CorsInterceptor implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) servletResponse;
res.addHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Origin","*");
res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
res.setHeader("Access-Control-Allow-Headers", "Content-Type,admin-login-token,x-requested-with");
if (((HttpServletRequest) servletRequest).getMethod().equals("OPTIONS")){
servletResponse.getWriter().println("ok");
return;
}
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}

@ -0,0 +1,18 @@
package com.saas.consumer.admin.interceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.annotation.Resource;
@Configuration
public class AdminInterceptorConfig extends WebMvcConfigurationSupport {
@Resource
AdminLoginInterceptor adminLoginInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(adminLoginInterceptor).addPathPatterns("/admin/user/**");
super.addInterceptors(registry);
}
}

@ -0,0 +1,105 @@
package com.saas.consumer.admin.interceptor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.saas.api.admin.service.login.IAdminTokenLoginService;
import com.saas.api.admin.service.login.IAdminUserService;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.pojo.AdminTokenLogin;
import com.saas.pojo.AdminUser;
import com.saas.pojo.AppTokenLogin;
import com.saas.pojo.AppUser;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Date;
@Component
public class AdminLoginInterceptor implements HandlerInterceptor {
//登录过期时间为15天连续15天没登录需要重新登录
private static final long LoginExpireTime = 15*24*60*60*1000;
ObjectMapper objectMapper = new ObjectMapper();
@Reference
IAdminTokenLoginService adminLoginTokenService;
@Reference
IAdminUserService adminUserService;
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//获取token信息
String tokenId = request.getHeader("admin-login-token");
//如果tokenId为null则返回失败json
if (tokenId == null || "".equals(tokenId) || tokenId.isEmpty()) {
this.respFail(response);
return false;
}
//根据token Id查询登录信息 (butler_login_token)
AdminTokenLogin tokenByTokenId = adminLoginTokenService.findByTokenId(Long.valueOf(tokenId));
//如果根据tokenId查询登录信息为null返回失败结果Json数据
if (tokenByTokenId == null) {
this.respFail(response);
return false;
}
//如果登录时间超时返回失败结果json数据
if (new Date().getTime() - tokenByTokenId.getLoginDate().getTime() > LoginExpireTime){
this.respFail(response);
return false;
}
//根据主键id查询平台用户信息
AdminUser userById = adminUserService.findById(tokenByTokenId.getAdminUserId());
//如果用户已被删除返回失败结果json数据
if (userById.getIsDelete() == 0){
this.respFail(response);
return false;
}
//每次请求更新一次登录user_login_token时间
tokenByTokenId.setLoginDate(new Date());
adminLoginTokenService.updateById(tokenByTokenId);
//将对应的用户信息存入session,key为token值
HttpSession session = request.getSession();
session.setAttribute(tokenId,userById);
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// Auto-generated method stub
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// Auto-generated method stub
}
/** 返回失败结果Json数据 */
private void respFail(ServletResponse response) throws IOException {
Result<Object> fail = Result.fail(HttpStatusEnum.LOGIN_FAILED);
String s = objectMapper.writeValueAsString(fail);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
response.getOutputStream().write(s.getBytes());
}
}

@ -0,0 +1,36 @@
# 防止端口冲突
server:
port: 8002
#dubbo:
# application:
# # 应用名称
# name: adminConsumer
# registry:
# protocol: zookeeper
# # 注册中心地址
# address: zookeeper://127.0.0.1:2181
# metadata-report:
# #元数据中心地址
# address: zookeeper://127.0.0.1:2181
# consumer:
# version: 1.0
# retries: -1 #防止消费者多次调用提供者
spring:
#springboot 自带的jackson配置
jackson:
#配置springboot时区
time-zone: GMT+8
#配置时间格式 格式化日期 格式化时间
date-format: yyyy-MM-dd HH:mm:ss
#中转站,用于切换 【本地,服务器,测试】
profiles:
include: transfer
# profiles:
# #开发环境(本地开发,目前只开发了这个)
# include: dev
# #测试环境(测试服务器)
# # include: test
# #生产环境(正式服务器)
# # include: pro

@ -0,0 +1,4 @@
#开发环境配置文件导入
spring:
profiles:
include: devRes,devLog,devZookeeper

@ -0,0 +1,19 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
butlerApp:
dao: DEBUG
file:
# 输出的log文件名
name: community-admin-consumer
# 输出的文件的路径
path: log/logs/admin-consumer
# 限制日志文件的大小
max-size: 10MB
# 日志的保存天数
max-history: 7
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
##redis缓存
#spring:
# redis:
# host: 127.0.0.1 #绑定的主机地址
# database: 1
# port: 6379 #指定Redis监听端口默认端口为6379
# password:
# timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
# jedis:
# pool:
# max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
# max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
# max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,14 @@
dubbo:
application:
# 应用名称
name: adminConsumer
registry:
protocol: zookeeper
# 注册中心地址
address: zookeeper://127.0.0.1:2181
metadata-report:
#元数据中心地址
address: zookeeper://127.0.0.1:2181
consumer:
version: 1.0
retries: -1 #防止消费者多次调用提供者

@ -0,0 +1,4 @@
#生产环境配置文件导入
spring:
profiles:
include: proRes,proLog

@ -0,0 +1,17 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
file:
# 输出的log文件名
name: intelligent-community
# 输出的文件的路径
path: /www/wwwroot/community.kadalai.com/apache-tomcat-8.5.61/webapps/logs
# 限制日志文件的大小
max-size: 100MB
# 日志的保存天数
max-history: 15
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
#redis缓存
spring:
redis:
host: 127.0.0.1 #绑定的主机地址
database: 1
port: 6379 #指定Redis监听端口默认端口为6379
password:
timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
jedis:
pool:
max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,4 @@
#测试环境配置文件导入
spring:
profiles:
include: testRes,testLog,testZookeeper

@ -0,0 +1,17 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
file:
# 输出的log文件名
name: admin-consumer
# 输出的文件的路径
path: /www/wwwroot/communitySaas/logs/adminConsumer
# 限制日志文件的大小
max-size: 100MB
# 日志的保存天数
max-history: 7
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
##redis缓存
#spring:
# redis:
# host: 127.0.0.1 #绑定的主机地址
# database: 1
# port: 6379 #指定Redis监听端口默认端口为6379
# password:
# timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
# jedis:
# pool:
# max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
# max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
# max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,14 @@
dubbo:
application:
# 应用名称
name: adminConsumer
registry:
protocol: zookeeper
# 注册中心地址
address: zookeeper://121.41.26.225:2181
metadata-report:
#元数据中心地址
address: zookeeper://121.41.26.225:2181
consumer:
version: 1.0
retries: -1 #防止消费者多次调用提供者

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 获取yml配置文件信息 -->
<springProperty scope="context" name="logName" source="logging.file.name"/>
<springProperty scope="context" name="logPath" source="logging.file.path"/>
<springProperty scope="context" name="logLevel" source="logging.level.root"/>
<!-- 输出到控制台 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSSZ}] [%thread] %-5level %logger{36} [%line] - %msg%n</pattern>
</encoder>
</appender>
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${logName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/${logName}.%d{yyyy-MM-dd}.log</fileNamePattern>
<MaxHistory>7</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSSZ}] [%thread] %-5level %logger{36} [%line]- %msg%n</pattern>
</encoder>
</appender>
<!-- 设置某些包下的日志输出 -->
<!-- project default level -->
<logger name="com.api" level="${logLevel}" />
<!--log4jdbc -->
<!-- <logger name="jdbc.sqltiming" level="${logLevel}"/>-->
<!--<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>10.16.0.18:5044</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>-->
<!-- 日志的总开关设置 包括日志级别和 appender -->
<!-- logger的作用 1.[name属性]:指定你定义Logger对象时候的name -->
<!-- 2. additivity : children-logger是否使用 rootLogger的配置, additivity在log4j默认为true。 -->
<!-- 这解释了为什么有些时候,一个日志信息在屏幕上会有多次输出。 -->
<!-- 3.还可以指定level(输出级别)、appender-ref(指定哪个append) -->
<root level="${logLevel}">
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
<!--<appender-ref ref="LOGSTASH"/>-->
</root>
</configuration>

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.saas</groupId>
<artifactId>community-admin-provider</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>com.saas</groupId>
<artifactId>community-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<name>community-admin-provider</name>
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- *************************** api模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** api模块依赖 ***************************************** -->
<!-- *************************** model模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** model模块依赖 ***************************************** -->
<!-- *************************** mapper模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** mapper模块依赖 ***************************************** -->
<!-- *************************** common模块依赖 ***************************************** -->
<dependency>
<groupId>com.saas</groupId>
<artifactId>community-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- *************************** common模块依赖 ***************************************** -->
<!-- *************************** 支付宝sdk ********************************************** -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
</dependency>
<!-- *************************** 支付宝sdk ********************************************** -->
</dependencies>
<build>
<finalName>community-admin-provider</finalName>
<!-- xxx.jar没有主清单属性-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.2.RELEASE</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,13 @@
package com.saas.admin.provider;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan({"com.saas.mapper"})
@SpringBootApplication
public class AdminProviderApplication {
public static void main(String[] args) {
SpringApplication.run(AdminProviderApplication.class);
}
}

@ -0,0 +1,32 @@
package com.saas.admin.provider.config.mybatisPlus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
// 或者
// this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
// 或者
// this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
// 或者
// this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
// 或者
// this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
}
}

@ -0,0 +1,42 @@
package com.saas.admin.provider.config.mybatisPlus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatisPlus
* https://mp.baomidou.com/guide/interceptor-optimistic-locker.html#optimisticlockerinnerinterceptor
*/
@Configuration
//如果在Application上已经配置了@MapperScan这里就不再需要配置了只需配置一个地方即可。
//@MapperScan("com.saas.mapper.entity")
public class MybatisPlusConfig {
/**
* ,mybatis, MybatisConfiguration#useDeprecatedExecutor = false ()
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//向Mybatis过滤器链中添加分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
//向Mybatis过滤器链中添加防止全表更新与删除拦截器
interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
//向Mybatis过滤器链中添加乐观锁拦截器,仅支持 updateById(id) 与 update(entity, wrapper) 方法
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
//还可以添加其他的拦截器
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}

@ -0,0 +1,88 @@
package com.saas.admin.provider.service.account;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.account.IAccountService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.account.AccountListDTO;
import com.saas.mapper.entity.AdminUserMapper;
import com.saas.pojo.AdminChargingTemplate;
import com.saas.pojo.AdminUser;
import com.saas.vo.admin.account.AccountListVo;
import com.saas.vo.admin.charging.ChargingListVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service(interfaceClass = IAccountService.class)
public class AccountServiceImpl implements IAccountService {
@Resource
AdminUserMapper adminUserMapper;
@Override
public PageInfo<AccountListVo> list(AccountListDTO accountListDTO) throws BizException {
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.like(StringUtils.isNotBlank(accountListDTO.getUserName()),"user_name",accountListDTO.getUserName());
queryWrapper.like(StringUtils.isNotBlank(accountListDTO.getTel()),"tel",accountListDTO.getTel());
queryWrapper.eq(accountListDTO.getStatus() != null,"status",accountListDTO.getStatus());
//数据分页
Page<AdminUser> page = new Page<>(accountListDTO.getPageNum(), accountListDTO.getSize());
Page<AdminUser> adminUserPage = adminUserMapper.selectPage(page, queryWrapper);
List<AdminUser> records = adminUserPage.getRecords();
//根据收费模版主键id查询对应的收费功能模块主键id
ArrayList<AccountListVo> accountListVoList = new ArrayList<>();
if (records != null && records.size() > 0){
//DO 转VO
for (AdminUser record : records) {
AccountListVo accountListVo = new AccountListVo();
PropertyUtils.copyProperties(record,accountListVo);
accountListVoList.add(accountListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(adminUserPage.getPages(), accountListVoList, adminUserPage.getTotal());
}
@Override
public int enable(Integer id) throws BizException {
//记录当前操作1.启用2.禁用
Integer status = null;
//查询当前记录状态信息
AdminUser adminUser = adminUserMapper.selectById(id);
if (adminUser == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);//当前记录不存在
}
//根据模版记录主键id修改模版记录状态
AdminUser adminUser2 = new AdminUser();
adminUser2.setId(id);
int i = 0;
if (adminUser.getStatus() != 1){
//当前记录状态如果是禁用则启用,
status = 1;//1.启用
}else {
//反之,则禁用
status = 2;//2.禁用
}
//启用/禁用 当前模版
adminUser2.setStatus(status);
i =adminUserMapper.updateById(adminUser2);
//判断是否操作成功
if (i >0){
return status;
}else {
throw new BizException(HttpStatusEnum.OPERATION_FAILED);//操作失败
}
}
}

@ -0,0 +1,221 @@
package com.saas.admin.provider.service.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.alipay.IAdminAlipayNotifyInfoService;
import com.saas.common.config.AlipayConfig;
import com.saas.common.exception.BizException;
import com.saas.mapper.entity.AdminFunctionOrderMapper;
import com.saas.mapper.entity.AdminUserMapper;
import com.saas.mapper.entity.AdminUserBalanceBillRecordMapper;
import com.saas.mapper.entity.AdminUserBalanceRechargeOrderMapper;
import com.saas.pojo.AdminFunctionOrder;
import com.saas.pojo.AdminUser;
import com.saas.pojo.AdminUserBalanceBillRecord;
import com.saas.pojo.AdminUserBalanceRechargeOrder;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.*;
@Service(interfaceClass = IAdminAlipayNotifyInfoService.class)
@Slf4j
public class AdminAlipayNotifyInfoServiceImpl implements IAdminAlipayNotifyInfoService {
@Resource
AdminUserBalanceBillRecordMapper adminUserBalanceBillRecordMapper;
@Resource
AdminUserBalanceRechargeOrderMapper adminUserBalanceRechargeOrderMapper;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Resource
AdminUserMapper adminUserMapper;
@Override
public String modelNotifyUrl(Map<String, String> params) throws BizException {
log.info("开始异步调用");
boolean signVerified = false;
try {
//调用SDK验证签名
signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.SIGN_TYPE);
} catch (AlipayApiException e) {
e.printStackTrace();
// 验签异常 笔者在这里是输出log可以根据需要做一些其他操作
log.info("异步调用失败");
return "fail";
}
if(signVerified) {
//验签通过
log.info("验签通过");
//获取需要保存的数据
String appId=params.get("app_id");//支付宝分配给开发者的应用Id
String outTradeNo = params.get("out_trade_no");//获取商户之前传给支付宝的订单号(商户系统的唯一订单号)
String buyerPayAmount=params.get("buyer_pay_amount");//付款金额:用户在交易中支付的金额
String tradeStatus = params.get("trade_status");// 获取交易状态
log.info("获取数据app_id="+appId+",out_trade_no="+outTradeNo+",buyer_pay_amount="+buyerPayAmount+",trade_status="+tradeStatus);
// 验证通知后执行自己项目需要的业务操作
// 一般需要判断支付状态是否为TRADE_SUCCESS
// 更严谨一些还可以判断 1.appid 2.sellerId 3.out_trade_no 4.total_amount 等是否正确,正确之后再进行相关业务操作。
//根据out_trade_no【商户系统的唯一订单号】查询信息 total_amount【订单金额】
QueryWrapper<AdminFunctionOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",outTradeNo);
AdminFunctionOrder adminFunctionOrder = adminFunctionOrderMapper.selectOne(queryWrapper);
//判断1.out_trade_no,2.total_amount,3.APPID 是否正确一致
if(adminFunctionOrder!=null && buyerPayAmount.equals(adminFunctionOrder.getPrice().toString()) && AlipayConfig.ALIPAY_APP_ID.equals(appId)){
switch (tradeStatus) // 判断交易结果
{
case "TRADE_FINISHED": // 交易结束并不可退款
adminFunctionOrder.setStatus(3);
break;
case "TRADE_SUCCESS": // 交易支付成功
adminFunctionOrder.setStatus(2);
break;
case "TRADE_CLOSED": // 未付款交易超时关闭或支付完成后全额退款
adminFunctionOrder.setStatus(1);
break;
case "WAIT_BUYER_PAY": // 交易创建并等待买家付款
adminFunctionOrder.setStatus(0);
break;
default:
break;
}
//更新表的状态
//计算到期时间并写入
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR,adminFunctionOrder.getYears());//增加对应年数
cal.add(Calendar.MONTH,adminFunctionOrder.getMonths());//增加对应月数
cal.add(Calendar.DATE,adminFunctionOrder.getDays());//增加对应天数
//获取计算出的到期时间
Date time = cal.getTime();
adminFunctionOrder.setBuyingDate(date);//填入购买日期
adminFunctionOrder.setExpirationDate(time);//填入到期日期
int returnResult = adminFunctionOrderMapper.updateById(adminFunctionOrder);
if(tradeStatus.equals("TRADE_SUCCESS")) { //只处理支付成功的订单: 修改交易表状态,支付成功
if(returnResult>0){
log.info("===========异步调用成功");
// 成功要返回success不然支付宝会不断发送通知。
return "success";
}else{
log.info("===========更新表的状态失败");
return "fail";
}
}else{
log.info("===========不是支付成功的订单");
return "fail";
}
}else{
log.info("==================支付宝官方建议校验的值out_trade_no、total_amount、sellerId、app_id,不一致返回fail");
return"fail";
}
}else {
// 验签失败 笔者在这里是输出log可以根据需要做一些其他操作
log.info("=========验签不通过!");
// 失败要返回fail不然支付宝会不断发送通知。
return "fail";
}
}
@Override
public String balanceRechargeOrderNotifyInfo(Map<String, String> params) throws BizException {
log.info("开始异步调用");
boolean signVerified = false;//SDK验证验签
try {
//调用SDK验证签名
signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.SIGN_TYPE);
} catch (AlipayApiException e) {
e.printStackTrace();
// 验签异常 笔者在这里是输出log可以根据需要做一些其他操作
log.info("异步调用失败");
return "fail";
}
if(signVerified) {
//验签通过
//获取需要保存的数据
String appId=params.get("app_id");//支付宝分配给开发者的应用Id
String outTradeNo = params.get("out_trade_no");//获取商户之前传给支付宝的订单号(商户系统的唯一订单号)
String trade_no = params.get("trade_no");//支付宝交易凭证号
String buyerPayAmount=params.get("buyer_pay_amount");//付款金额:用户在交易中支付的金额
String tradeStatus = params.get("trade_status");// 获取交易状态
// 验证通知后执行自己项目需要的业务操作
// 一般需要判断支付状态是否为TRADE_SUCCESS
// 更严谨一些还可以判断 1.appid 2.sellerId 3.out_trade_no 4.total_amount 等是否正确,正确之后再进行相关业务操作。
//根据out_trade_no【商户系统的唯一订单号】查询信息 total_amount【订单金额】
QueryWrapper<AdminUserBalanceRechargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",outTradeNo);
AdminUserBalanceRechargeOrder adminUserBalanceRechargeOrder = adminUserBalanceRechargeOrderMapper.selectOne(queryWrapper);
//判断1.out_trade_no,2.total_amount,3.APPID 是否正确一致
if(adminUserBalanceRechargeOrder !=null && buyerPayAmount.equals(adminUserBalanceRechargeOrder.getPayAmount().toString()) && AlipayConfig.ALIPAY_APP_ID.equals(appId)){
switch (tradeStatus) // 判断交易结果
{
case "TRADE_FINISHED": // 交易结束并不可退款
adminUserBalanceRechargeOrder.setStatus(3);
break;
case "TRADE_SUCCESS": // 交易支付成功
adminUserBalanceRechargeOrder.setStatus(2);
break;
case "TRADE_CLOSED": // 未付款交易超时关闭或支付完成后全额退款
adminUserBalanceRechargeOrder.setStatus(1);
break;
case "WAIT_BUYER_PAY": // 交易创建并等待买家付款
adminUserBalanceRechargeOrder.setStatus(0);
break;
default:
break;
}
//更新表的状态
adminUserBalanceRechargeOrder.setTradeNo(trade_no);//更新支付宝交易号
int returnResult = adminUserBalanceRechargeOrderMapper.updateById(adminUserBalanceRechargeOrder);
if(tradeStatus.equals("TRADE_SUCCESS")) { //只处理支付成功的订单: 修改交易表状态,支付成功
//添加入驻公司余额账单记录
AdminUserBalanceBillRecord adminUserBalanceBillRecord = new AdminUserBalanceBillRecord();
adminUserBalanceBillRecord.setCode(adminUserBalanceRechargeOrder.getCode());
adminUserBalanceBillRecord.setType(1);//1.充值
adminUserBalanceBillRecord.setPayAmount(adminUserBalanceRechargeOrder.getPayAmount());
adminUserBalanceBillRecord.setCreateDate(new Date());
int insert = adminUserBalanceBillRecordMapper.insert(adminUserBalanceBillRecord);
if (insert <= 0){
log.info("==================添加入驻公司余额账单记录失败!");
return "fail";
}
//添加平台用户账户余额
AdminUser adminUser = new AdminUser();
adminUser.setId(adminUserBalanceRechargeOrder.getAdminUserId());
adminUser.setBalance(adminUserBalanceRechargeOrder.getPayAmount());
int update = adminUserMapper.addBalance(adminUser);
if (update <= 0){
log.info("==================添加平台用户账户余额失败!");
return "fail";
}
if(returnResult>0){
log.info("===========异步调用成功");
// 成功要返回success不然支付宝会不断发送通知。
return "success";
}else{
log.info("===========更新表的状态失败");
return "fail";
}
}else{
log.info("===========不是支付成功的订单");
return "fail";
}
}else{
log.info("==================支付宝官方建议校验的值out_trade_no、total_amount、sellerId、app_id,不一致返回fail");
return"fail";
}
}else {
// 验签失败 笔者在这里是输出log可以根据需要做一些其他操作
log.info("=========验签不通过!");
// 失败要返回fail不然支付宝会不断发送通知。
return "fail";
}
}
}

@ -0,0 +1,348 @@
package com.saas.admin.provider.service.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.alipay.IAdminAlipayService;
import com.saas.common.config.AlipayConfig;
import com.saas.common.config.AlipayNotifyUrlConfig;
import com.saas.common.exception.BizException;
import com.saas.common.utils.IdCreator;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.balance.AdminBalanceRechargeDTO;
import com.saas.dto.admin.order.CreateOrderDTO;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service(interfaceClass = IAdminAlipayService.class)
@Slf4j
public class AdminAlipayServiceImpl implements IAdminAlipayService {
@Resource
AdminUserBalanceRechargeOrderMapper adminUserBalanceRechargeOrderMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminChargingTimeTypeMapper adminChargingTimeTypeMapper;
@Resource
AdminChargingTemplateFunctionTimeTypeMapper adminCTFTMapper;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Resource
AdminFunctionOrderDetailsMapper adminFunctionOrderDetailsMapper;
@Override
public String createOrder(CreateOrderDTO createOrderDTO, AdminUser adminUser) throws BizException {
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
//如果未自定义订单号,则自动生成订单号
if (createOrderDTO.getCode() == null){
createOrderDTO.setCode(IdCreator.getId(20));
}
//查询公司名称
QueryWrapper<SysCompany> qw = new QueryWrapper<>();
qw.eq("admin_user_id",adminUser.getId());
qw.eq("status",2);//2.通过
SysCompany sysCompany = sysCompanyMapper.selectOne(qw);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.COMPANY_NOT_BOUND);
}else {
//填入公司主键id
adminFunctionOrder.setCompanyId(sysCompany.getId());
}
List<Integer> modelFunctionIds = createOrderDTO.getModelFunctionId();
Integer chargingTemplateId = createOrderDTO.getChargingTemplateId();
Integer timeTypeId = createOrderDTO.getTimeTypeId();
//判断关键字段是否存在
if (modelFunctionIds == null || modelFunctionIds.size() <= 0 || chargingTemplateId == null || timeTypeId == null){
throw new BizException(HttpStatusEnum.MISSING_FIELD_INFO);
}
//获取对应的时间类型
AdminChargingTimeType chargingTimeType = adminChargingTimeTypeMapper.selectById(timeTypeId);
if (chargingTimeType == null){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
adminFunctionOrder.setYears(chargingTimeType.getYears());//填入年数
adminFunctionOrder.setMonths(chargingTimeType.getMonths());//填入月数
adminFunctionOrder.setDays(chargingTimeType.getDays());//填入天数
adminFunctionOrder.setRemakes(chargingTimeType.getRemakes());//填入时间备注
//查询平台模版-功能-时间类型关联信息 计算出总价格
BigDecimal priceTotal = BigDecimal.ZERO;
//创建平台购买功能订单详情集合
ArrayList<AdminFunctionOrderDetails> functionOrderDetailsList = new ArrayList<>();
for (Integer modelFunctionId : modelFunctionIds) {
QueryWrapper<AdminChargingTemplateFunctionTimeType> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("charging_template_id",chargingTemplateId);
queryWrapper.eq("charging_function_id",modelFunctionId);
queryWrapper.eq("charging_time_type_id",timeTypeId);
// queryWrapper.select("isnull(sum(unit_price),0) as total");
AdminChargingTemplateFunctionTimeType adminCTFTT = adminCTFTMapper.selectOne(queryWrapper);
if (adminCTFTT == null){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
priceTotal = priceTotal.add(adminCTFTT.getUnitPrice());
//创建平台购买功能订单
AdminFunctionOrderDetails functionOrderDetails = new AdminFunctionOrderDetails();
functionOrderDetails.setUnitPrice(adminCTFTT.getUnitPrice());//添加单个价格
functionOrderDetails.setChargingFunctionId(modelFunctionId);//添加收费功能模块主键id
functionOrderDetailsList.add(functionOrderDetails);
}
//校验价格是否一致
if (priceTotal.compareTo(createOrderDTO.getPayPrice()) != 0){
throw new BizException(HttpStatusEnum.PRICE_INCONSISTENCY);
}
adminFunctionOrder.setPrice(createOrderDTO.getPayPrice());//填入价格
//填入其余参数
adminFunctionOrder.setCode(createOrderDTO.getCode());//填入订单号
adminFunctionOrder.setPayType(createOrderDTO.getPayType());//填入支付方式
adminFunctionOrder.setStatus(0);//填入订单状态0.交易创建并等待买家付款
adminFunctionOrder.setCommunityId(createOrderDTO.getCommunityId());//填入小区主键id
adminFunctionOrder.setDomainName(createOrderDTO.getDomainName());//填入域名域名请开放xxx端口
adminFunctionOrder.setServiceIp(createOrderDTO.getServiceIp());//填入服务器ip
adminFunctionOrder.setIsCustomized(createOrderDTO.getIsCustomized());//填入是否定制1.定制0.不定制)
adminFunctionOrder.setCustomizedDemand(createOrderDTO.getCustomizedDemand());//填入定制需求
adminFunctionOrder.setCreateId(-1);//填入创建人id用户创建为-1
adminFunctionOrder.setCreateDate(new Date());//填入创建时间
//添加平台购买功能订单
int insert = adminFunctionOrderMapper.insert(adminFunctionOrder);
if (insert <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
//添加平台购买功能订单详情
for (AdminFunctionOrderDetails functionOrderDetails : functionOrderDetailsList) {
functionOrderDetails.setFunctionOrderId(adminFunctionOrder.getId());//填写平台购买功能订单主键id
int insert1 = adminFunctionOrderDetailsMapper.insert(functionOrderDetails);
if (insert1 <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
}
//生成支付宝支付订单模版form
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.ALIPAY_GATEWAY, AlipayConfig.ALIPAY_APP_ID, AlipayConfig.RSA_PRIVAT_KEY, AlipayConfig.ALIPAY_FORMAT, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称alipay.trade.app.pay
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//SDK已经封装掉了公共参数这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("模块订单支付");
model.setSubject("模块订单");
model.setOutTradeNo(adminFunctionOrder.getCode()); //交易号
model.setTimeoutExpress("30m");
model.setTotalAmount(String.valueOf(adminFunctionOrder.getPrice()));
model.setProductCode("FAST_INSTANT_TRADE_PAY");
//将自己想要传递到异步接口的数据set进去 pass_back_params
// model.setPassbackParams(orderId);
request.setBizModel(model);
request.setNotifyUrl(AlipayNotifyUrlConfig.ADMIN_FUNCTION_ORDER_NOTIFY_URL);
try {
//这里和普通的接口调用不同使用的是sdkExecute
// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);//传出的是sdk
AlipayTradePagePayResponse response = alipayClient.pageExecute(request);//传出的html页面
log.info("response.getBody()"+response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
return response.getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
return null;
}
}
@Override
public String checkAlipay(String code) throws BizException {
log.info("================日常缴费向支付宝发起查询,查询商户订单号为:"+code);
try {
//实例化客户端参数网关地址、商户appid、商户私钥、格式、编码、支付宝公钥、加密类型
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.ALIPAY_GATEWAY, AlipayConfig.ALIPAY_APP_ID, AlipayConfig.RSA_PRIVAT_KEY, AlipayConfig.ALIPAY_FORMAT, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
AlipayTradeQueryRequest alipayTradeQueryRequest = new AlipayTradeQueryRequest();
alipayTradeQueryRequest.setBizContent("{" +
"\"out_trade_no\":\""+code+"\"," +
"\"trade_no\":"+null +
"}");
AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.execute(alipayTradeQueryRequest);
if(alipayTradeQueryResponse.isSuccess()){
//根据out_trade_no【商户系统的唯一订单号】查询信息 total_amount【订单金额】
QueryWrapper<AdminFunctionOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",code);
AdminFunctionOrder adminFunctionOrder = adminFunctionOrderMapper.selectOne(queryWrapper);
if (adminFunctionOrder == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//修改数据库支付宝订单表
switch (alipayTradeQueryResponse.getTradeStatus()) // 判断交易结果
{
case "TRADE_FINISHED": // 交易结束并不可退款
adminFunctionOrder.setStatus(3);
break;
case "TRADE_SUCCESS": // 交易支付成功
adminFunctionOrder.setStatus(2);
break;
case "TRADE_CLOSED": // 未付款交易超时关闭或支付完成后全额退款
adminFunctionOrder.setStatus(1);
break;
case "WAIT_BUYER_PAY": // 交易创建并等待买家付款
adminFunctionOrder.setStatus(0);
break;
default:
break;
}
//更新表的状态
adminFunctionOrderMapper.updateById(adminFunctionOrder);
return alipayTradeQueryResponse.getBody();
} else {
String body = alipayTradeQueryResponse.getBody();
log.info("==================调用支付宝查询接口失败!");
log.info("==================错误码:"+body);
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,alipayTradeQueryResponse.getBody());
}
} catch (AlipayApiException e) {
e.printStackTrace();
throw new BizException(HttpStatusEnum.INTERNAL_SERVER_ERROR);
}
}
@Override
@Transactional
public String createBalanceRechargeOrder(AdminBalanceRechargeDTO adminBalanceRechargeDTO, AdminUser adminUser) throws BizException {
String body = "";
try {
if (adminBalanceRechargeDTO.getPayAmount().compareTo(BigDecimal.ZERO) == 0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"支付金额不可为0");
}
//创建入驻公司余额充值订单
AdminUserBalanceRechargeOrder adminUserBalanceRechargeOrder = new AdminUserBalanceRechargeOrder();
adminUserBalanceRechargeOrder.setAdminUserId(adminUser.getId());
adminUserBalanceRechargeOrder.setCode("CZ"+IdCreator.getId(20));
adminUserBalanceRechargeOrder.setPayType(1);//1.支付宝支付
adminUserBalanceRechargeOrder.setStatus(0);//交易创建并等待买家付款
adminUserBalanceRechargeOrder.setPayAmount(adminBalanceRechargeDTO.getPayAmount());
adminUserBalanceRechargeOrder.setCreateId(adminUser.getId());
adminUserBalanceRechargeOrder.setCreateDate(new Date());
int insert = adminUserBalanceRechargeOrderMapper.insert(adminUserBalanceRechargeOrder);
if (insert <= 0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"创建入驻公司余额充值订单失败");
}
//执行支付宝操作
// 开始使用支付宝SDK中提供的API
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.ALIPAY_GATEWAY, AlipayConfig.ALIPAY_APP_ID, AlipayConfig.RSA_PRIVAT_KEY, AlipayConfig.ALIPAY_FORMAT, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
// 注意不同接口这里的请求对象是不同的这个可以查看蚂蚁金服开放平台的API文档查看
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("商城购物支付");
model.setSubject("商城购物");
// 唯一订单号 根据项目中实际需要获取相应的
model.setOutTradeNo(adminUserBalanceRechargeOrder.getCode());
// 支付超时时间(根据项目需要填写)
model.setTimeoutExpress("30m");
// 支付金额(项目中实际订单的需要支付的金额,金额的获取与操作请放在服务端完成,相对安全)
model.setTotalAmount(String.valueOf(adminUserBalanceRechargeOrder.getPayAmount()));
//网页支付 固定值 填写FAST_INSTANT_TRADE_PAY
model.setProductCode("FAST_INSTANT_TRADE_PAY");
alipayRequest.setBizModel(model);
// 支付成功后支付宝异步通知的接收地址url
alipayRequest.setNotifyUrl(AlipayNotifyUrlConfig.PC_BALANCE_RECHARGE_ORDER_NOTIFY_URL);
//支付成功后支付宝同步通知的接收地址url回跳地址
// alipayRequest.setReturnUrl(RETURN_URL);
// 注意:每个请求的相应对象不同,与请求对象是对应。
AlipayTradePagePayResponse alipayResponse = null;
try {
alipayResponse = alipayClient.pageExecute(alipayRequest);
} catch (AlipayApiException e) {
e.printStackTrace();
log.info("获取签名失败");
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"获取签名失败");
}
// 返回支付相关信息(此处可以直接将getBody中的内容[就是orderString]直接返回,无需再做一些其他操作)
body = alipayResponse.getBody();
} catch (RuntimeException e) {
//获取抛出的信息
String message = e.getMessage();
e.printStackTrace();
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus()
.setRollbackOnly();
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,message);
}
log.info("body:"+body);
return body;
}
@Override
public String balanceRechargeOrderCheckAlipay(String code) throws BizException {
log.info("================商城向支付宝发起查询,查询商户订单号为:"+code);
try {
//实例化客户端参数网关地址、商户appid、商户私钥、格式、编码、支付宝公钥、加密类型
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.ALIPAY_GATEWAY, AlipayConfig.ALIPAY_APP_ID, AlipayConfig.RSA_PRIVAT_KEY, AlipayConfig.ALIPAY_FORMAT, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
AlipayTradeQueryRequest alipayTradeQueryRequest = new AlipayTradeQueryRequest();
alipayTradeQueryRequest.setBizContent("{" +
"\"out_trade_no\":\""+code+"\"," +
"\"trade_no\":"+null +
"}");
AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.execute(alipayTradeQueryRequest);
if(alipayTradeQueryResponse.isSuccess()){
//根据out_trade_no【商户系统的唯一订单号】查询信息 total_amount【订单金额】
QueryWrapper<AdminUserBalanceRechargeOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",code);
AdminUserBalanceRechargeOrder adminUserBalanceRechargeOrder = adminUserBalanceRechargeOrderMapper.selectOne(queryWrapper);
if (adminUserBalanceRechargeOrder == null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"订单不存在");
}
//修改数据库支付宝订单表
switch (alipayTradeQueryResponse.getTradeStatus()) // 判断交易结果
{
case "TRADE_FINISHED": // 交易结束并不可退款
adminUserBalanceRechargeOrder.setStatus(3);
break;
case "TRADE_SUCCESS": // 交易支付成功
adminUserBalanceRechargeOrder.setStatus(2);
break;
case "TRADE_CLOSED": // 未付款交易超时关闭或支付完成后全额退款
adminUserBalanceRechargeOrder.setStatus(1);
break;
case "WAIT_BUYER_PAY": // 交易创建并等待买家付款
adminUserBalanceRechargeOrder.setStatus(0);
break;
default:
break;
}
//更新表的状态
adminUserBalanceRechargeOrderMapper.updateById(adminUserBalanceRechargeOrder);
return alipayTradeQueryResponse.getBody();
} else {
String body = alipayTradeQueryResponse.getBody();
log.info("==================调用支付宝查询接口失败!");
log.info("==================错误码:"+body);
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,alipayTradeQueryResponse.getBody());
}
} catch (AlipayApiException e) {
e.printStackTrace();
throw new BizException(HttpStatusEnum.INTERNAL_SERVER_ERROR);
}
}
}

@ -0,0 +1,9 @@
package com.saas.admin.provider.service.authority;
import com.saas.api.admin.service.authority.IAdminCheckAuthorityService;
import org.apache.dubbo.config.annotation.Service;
@Service(interfaceClass = IAdminCheckAuthorityService.class)
public class AdminCheckAuthorityServiceImpl implements IAdminCheckAuthorityService {
}

@ -0,0 +1,90 @@
package com.saas.admin.provider.service.balance;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.balance.IAdminBalanceService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.dto.admin.balance.AdminBalanceDTO;
import com.saas.mapper.entity.AdminUserBalanceBillRecordMapper;
import com.saas.mapper.entity.SysCommunityMapper;
import com.saas.mapper.entity.SysCompanyMapper;
import com.saas.pojo.AdminUser;
import com.saas.pojo.AdminUserBalanceBillRecord;
import com.saas.pojo.SysCommunity;
import com.saas.pojo.SysCompany;
import com.saas.vo.manage.balance.AdminBalanceRecordListVo;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service(interfaceClass = IAdminBalanceService.class)
public class AdminBalanceServiceImpl implements IAdminBalanceService {
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminUserBalanceBillRecordMapper adminUserBalanceBillRecordMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Override
public PageInfo<AdminBalanceRecordListVo> list(AdminBalanceDTO adminBalanceDTO, AdminUser adminUser) throws BizException {
ArrayList<AdminBalanceRecordListVo> adminBalanceRecordListVos = new ArrayList<>();
QueryWrapper<AdminUserBalanceBillRecord> queryWrapper = new QueryWrapper<>();
if (adminUser.getType() == 3){//3.平台入驻公司管理账号
//查询该平台用户下通过的公司
QueryWrapper<SysCompany> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",adminUser.getId());
queryWrapper2.eq("status",2);//2.通过
SysCompany sysCompany2 = sysCompanyMapper.selectOne(queryWrapper2);
if (sysCompany2 == null){
//封装成分页格式回显
return new PageInfo<>(1, adminBalanceRecordListVos,0);
}
//查询通过的公司下的小区
ArrayList<Integer> communityIds = new ArrayList<>();
QueryWrapper<SysCommunity> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany2.getId());
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper3);
if (sysCommunities != null && sysCommunities.size()>0){
for (SysCommunity sysCommunity : sysCommunities) {
communityIds.add(sysCommunity.getId());
}
}else {
//封装成分页格式回显
return new PageInfo<>(1, adminBalanceRecordListVos,0);
}
queryWrapper.in("community_id",communityIds);
}
Page<AdminUserBalanceBillRecord> page = new Page<>(adminBalanceDTO.getPageNum(), adminBalanceDTO.getSize());
//数据查询
Page<AdminUserBalanceBillRecord> adminUserBalanceBillRecordPage = adminUserBalanceBillRecordMapper.selectPage(page, queryWrapper);
List<AdminUserBalanceBillRecord> records = adminUserBalanceBillRecordPage.getRecords();
if (records != null && records.size()>0){
for (AdminUserBalanceBillRecord record : records) {
AdminBalanceRecordListVo adminBalanceRecordListVo = new AdminBalanceRecordListVo();
PropertyUtils.copyProperties(record,adminBalanceRecordListVo);
//查询小区名称
if (record.getCommunityId() != null){
SysCompany sysCompany = sysCompanyMapper.selectById(record.getCommunityId());
if (sysCompany != null){
adminBalanceRecordListVo.setCommunityName(sysCompany.getCompanyName());
}
}
adminBalanceRecordListVos.add(adminBalanceRecordListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(adminUserBalanceBillRecordPage.getPages(), adminBalanceRecordListVos, adminUserBalanceBillRecordPage.getTotal());
}
}

@ -0,0 +1,296 @@
package com.saas.admin.provider.service.charging;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.charging.IChargingService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.charging.ChargingListDTO;
import com.saas.dto.admin.charging.ChargingTemplateDTO;
import com.saas.dto.admin.charging.ChargingTemplateFunctionTimeTypeDTO;
import com.saas.dto.admin.charging.ChargingTemplateUpdateDTO;
import com.saas.mapper.entity.AdminChargingTemplateFunctionTimeTypeMapper;
import com.saas.mapper.entity.AdminChargingTemplateMapper;
import com.saas.mapper.entity.AdminChargingTimeTypeMapper;
import com.saas.mapper.entity.SysMenusMapper;
import com.saas.pojo.AdminChargingTemplate;
import com.saas.pojo.AdminChargingTemplateFunctionTimeType;
import com.saas.pojo.AdminChargingTimeType;
import com.saas.pojo.SysMenus;
import com.saas.vo.admin.charging.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@Service(interfaceClass = IChargingService.class)
public class ChargingServiceImpl implements IChargingService {
@Resource
AdminChargingTemplateMapper adminChargingTemplateMapper;
@Resource
AdminChargingTemplateFunctionTimeTypeMapper adminChargingTemplateFunctionTimeTypeMapper;
@Resource
SysMenusMapper sysMenusMapper;
@Resource
AdminChargingTimeTypeMapper adminChargingTimeTypeMapper;
@Override
public PageInfo<ChargingListVo> list(ChargingListDTO chargingListDTO){
QueryWrapper<AdminChargingTemplate> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.like(StringUtils.isNotBlank(chargingListDTO.getName()),"name",chargingListDTO.getName());
queryWrapper.eq(chargingListDTO.getStatus() != null,"status",chargingListDTO.getStatus());
queryWrapper.orderByDesc("id");
//数据分页
Page<AdminChargingTemplate> page = new Page<>(chargingListDTO.getPageNum(), chargingListDTO.getSize());
//数据查询
Page<AdminChargingTemplate> chargingTemplatePage = adminChargingTemplateMapper.selectPage(page, queryWrapper);
List<AdminChargingTemplate> records = chargingTemplatePage.getRecords();
//根据收费模版主键id查询对应的收费功能模块主键id
ArrayList<ChargingListVo> chargingListVos = new ArrayList<>();
if (records != null && records.size() > 0){
for (AdminChargingTemplate record : records) {
//进行Do To Vo 数据转换
ChargingListVo chargingListVo = new ChargingListVo();
PropertyUtils.copyProperties(record,chargingListVo);
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("charging_template_id",record.getId());
HashSet<String> includeFunctionModel = new HashSet<>();
List<AdminChargingTemplateFunctionTimeType> chargingTemplateFunctionTimeTypes = adminChargingTemplateFunctionTimeTypeMapper.selectByMap(map);
if (chargingTemplateFunctionTimeTypes != null && chargingTemplateFunctionTimeTypes.size()>0){
for (AdminChargingTemplateFunctionTimeType chargingTemplateFunctionTimeType : chargingTemplateFunctionTimeTypes) {
Integer chargingTemplateId = chargingTemplateFunctionTimeType.getChargingFunctionId();
//数据查询,根据收费功能模块主键id查询对应的收费功能模块名称
SysMenus sysMenus = sysMenusMapper.selectById(chargingTemplateId);
includeFunctionModel.add(sysMenus.getName());
}
}
chargingListVo.setIncludeFunctionModelList(includeFunctionModel);
chargingListVos.add(chargingListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(chargingTemplatePage.getPages(), chargingListVos, chargingTemplatePage.getTotal());
}
@Override
public Integer updateStatus(Integer id) {
//记录当前操作1.启用2.禁用
Integer status = null;
//查询当前记录状态信息
AdminChargingTemplate chargingTemplate = adminChargingTemplateMapper.selectById(id);
if (chargingTemplate == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);//当前记录不存在
}
//根据模版记录主键id修改模版记录状态
AdminChargingTemplate adminChargingTemplate = new AdminChargingTemplate();
adminChargingTemplate.setId(id);
int i = 0;
if (chargingTemplate.getStatus() != 1){
//当前记录状态如果是禁用则启用,
adminChargingTemplate.setStatus(1);
status = 1;
//启用当前模版
i =adminChargingTemplateMapper.updateById(adminChargingTemplate);
//禁用其他模版
UpdateWrapper<AdminChargingTemplate> updateWrapper = new UpdateWrapper<>();
updateWrapper.notIn("id",id);
AdminChargingTemplate adminChargingTemplate2 = new AdminChargingTemplate();
adminChargingTemplate2.setStatus(2);
adminChargingTemplateMapper.update(adminChargingTemplate2,updateWrapper);
}else {
//反之,则禁用
adminChargingTemplate.setStatus(2);
status = 2;
//禁用当前模版
i = adminChargingTemplateMapper.updateById(adminChargingTemplate);
}
//判断是否操作成功
if (i >0){
return status;
}else {
throw new BizException(HttpStatusEnum.OPERATION_FAILED);//操作失败
}
}
@Override
public List<ChargingFindSuperNavigationVo> findSuperNavigation() throws BizException {
//搜索条件
HashMap<String, Object> map = new HashMap<>();
map.put("parent_id",0);//功能大类(一级)
//数据查询
List<SysMenus> sysMenusList = sysMenusMapper.selectByMap(map);
//DO 转 Vo
ArrayList<ChargingFindSuperNavigationVo> chargingFindSuperNavigationVoArrayList = new ArrayList<>();
if (sysMenusList != null && sysMenusList.size()>0){
for (SysMenus sysMenus : sysMenusList) {
ChargingFindSuperNavigationVo chargingFindSuperNavigationVo = new ChargingFindSuperNavigationVo();
PropertyUtils.copyProperties(sysMenus,chargingFindSuperNavigationVo);
chargingFindSuperNavigationVoArrayList.add(chargingFindSuperNavigationVo);
}
}
return chargingFindSuperNavigationVoArrayList;
}
@Override
public List<ChargingFindTimeTypeVo> findTimeType() throws BizException {
//数据查询
List<AdminChargingTimeType> adminChargingTimeTypes = adminChargingTimeTypeMapper.selectList(null);
//DO 转 Vo
ArrayList<ChargingFindTimeTypeVo> chargingFindTimeTypeVoArrayList = new ArrayList<>();
if (adminChargingTimeTypes != null && adminChargingTimeTypes.size()>0){
for (AdminChargingTimeType adminChargingTimeType : adminChargingTimeTypes) {
ChargingFindTimeTypeVo chargingFindTimeTypeVo = new ChargingFindTimeTypeVo();
PropertyUtils.copyProperties(adminChargingTimeType,chargingFindTimeTypeVo);
chargingFindTimeTypeVoArrayList.add(chargingFindTimeTypeVo);
}
}
return chargingFindTimeTypeVoArrayList;
}
@Override
@Transactional
public boolean insert(ChargingTemplateDTO chargingTemplateDTO) {
//添加模版
AdminChargingTemplate adminChargingTemplate = new AdminChargingTemplate();
adminChargingTemplate.setName(chargingTemplateDTO.getName());
adminChargingTemplate.setStatus(2);//默认2.禁用
adminChargingTemplate.setPayNum(0);//初始0已购买次数
int insert = adminChargingTemplateMapper.insert(adminChargingTemplate);
if (insert >0){
List<ChargingTemplateFunctionTimeTypeDTO> chargingTemplateFunctionTimeTypeDTOList = chargingTemplateDTO.getChargingTemplateFunctionTimeTypeDTO();
if (chargingTemplateFunctionTimeTypeDTOList != null && chargingTemplateFunctionTimeTypeDTOList.size()>0){
for (ChargingTemplateFunctionTimeTypeDTO chargingTemplateFunctionTimeTypeDTO : chargingTemplateFunctionTimeTypeDTOList) {
//添加模版-功能-时间类型关联
AdminChargingTemplateFunctionTimeType adminChargingTemplateFunctionTimeType = new AdminChargingTemplateFunctionTimeType();
adminChargingTemplateFunctionTimeType.setChargingTemplateId(adminChargingTemplate.getId());
adminChargingTemplateFunctionTimeType.setChargingFunctionId(chargingTemplateFunctionTimeTypeDTO.getChargingFunctionId());
adminChargingTemplateFunctionTimeType.setChargingTimeTypeId(chargingTemplateFunctionTimeTypeDTO.getChargingTimeTypeId());
adminChargingTemplateFunctionTimeType.setUnitPrice(chargingTemplateFunctionTimeTypeDTO.getUnitPrice());
int insert2 = adminChargingTemplateFunctionTimeTypeMapper.insert(adminChargingTemplateFunctionTimeType);
if (insert2 <=0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
}
}
}else {
return false;
}
return true;
}
@Override
public ChargingFindByIdVo findById(Integer id) throws BizException {
AdminChargingTemplate adminChargingTemplate = adminChargingTemplateMapper.selectById(id);
if (adminChargingTemplate == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//搜索条件
HashMap<String, Object> map = new HashMap<>();
map.put("charging_template_id",id);
//数据查询
List<AdminChargingTemplateFunctionTimeType> chargingTemplateFunctionTimeTypeList = adminChargingTemplateFunctionTimeTypeMapper.selectByMap(map);
//创建收费标准模版-功能-时间关联 Vo对象集合
ArrayList<ChargingTemplateFunctionTimeTypeVo> templateFunctionTimeTypeVoList = new ArrayList<>();
//创建已选功能模块大类主键集合
HashSet<Integer> functionList = new HashSet<>();
//创建已选时间类型主键集合
HashSet<Integer> timeTypeList = new HashSet<>();
if (chargingTemplateFunctionTimeTypeList != null && chargingTemplateFunctionTimeTypeList.size()>0){
for (AdminChargingTemplateFunctionTimeType adminChargingTemplateFunctionTimeType : chargingTemplateFunctionTimeTypeList) {
//DO 转 VO
ChargingTemplateFunctionTimeTypeVo chargingTemplateFunctionTimeTypeVo = new ChargingTemplateFunctionTimeTypeVo();
PropertyUtils.copyProperties(adminChargingTemplateFunctionTimeType,chargingTemplateFunctionTimeTypeVo);
//查询收费标准时间类型信息
AdminChargingTimeType adminChargingTimeType = adminChargingTimeTypeMapper.selectById(adminChargingTemplateFunctionTimeType.getChargingTimeTypeId());
if (adminChargingTimeType != null){
chargingTemplateFunctionTimeTypeVo.setYears(adminChargingTimeType.getYears());//填入年数
chargingTemplateFunctionTimeTypeVo.setMonths(adminChargingTimeType.getMonths());//填入月数
chargingTemplateFunctionTimeTypeVo.setDays(adminChargingTimeType.getDays());//填入天数
}
templateFunctionTimeTypeVoList.add(chargingTemplateFunctionTimeTypeVo);
//填入收费功能模块主键id
functionList.add(adminChargingTemplateFunctionTimeType.getChargingFunctionId());
//判断是否已存在该收费时间类型主键id
if (!timeTypeList.contains(adminChargingTemplateFunctionTimeType.getChargingTimeTypeId())){
//填入收费时间类型主键id
timeTypeList.add(adminChargingTemplateFunctionTimeType.getChargingTimeTypeId());
}
}
}
ChargingFindByIdVo chargingFindByIdVo = new ChargingFindByIdVo();
chargingFindByIdVo.setChargingFunctionToTimeTypeVos(templateFunctionTimeTypeVoList);
chargingFindByIdVo.setFunctionList(functionList);
chargingFindByIdVo.setTimeTypeList(timeTypeList);
chargingFindByIdVo.setName(adminChargingTemplate.getName());
return chargingFindByIdVo;
}
@Override
@Transactional
public boolean update(ChargingTemplateUpdateDTO chargingTemplateUpdateDTO) throws BizException {
//添加模版
AdminChargingTemplate adminChargingTemplate = new AdminChargingTemplate();
adminChargingTemplate.setId(chargingTemplateUpdateDTO.getId());
adminChargingTemplate.setName(chargingTemplateUpdateDTO.getName());
int update = adminChargingTemplateMapper.updateById(adminChargingTemplate);
if (update >0){
//先删除关联关系
HashMap<String, Object> map = new HashMap<>();
map.put("charging_template_id",chargingTemplateUpdateDTO.getId());
adminChargingTemplateFunctionTimeTypeMapper.deleteByMap(map);
//再添加关联关系
List<ChargingTemplateFunctionTimeTypeDTO> chargingTemplateFunctionTimeTypeDTOList = chargingTemplateUpdateDTO.getChargingTemplateFunctionTimeTypeDTO();
if (chargingTemplateFunctionTimeTypeDTOList != null && chargingTemplateFunctionTimeTypeDTOList.size()>0){
for (ChargingTemplateFunctionTimeTypeDTO chargingTemplateFunctionTimeTypeDTO : chargingTemplateFunctionTimeTypeDTOList) {
//添加模版-功能-时间类型关联
AdminChargingTemplateFunctionTimeType adminChargingTemplateFunctionTimeType = new AdminChargingTemplateFunctionTimeType();
adminChargingTemplateFunctionTimeType.setChargingTemplateId(adminChargingTemplate.getId());
adminChargingTemplateFunctionTimeType.setChargingFunctionId(chargingTemplateFunctionTimeTypeDTO.getChargingFunctionId());
adminChargingTemplateFunctionTimeType.setChargingTimeTypeId(chargingTemplateFunctionTimeTypeDTO.getChargingTimeTypeId());
adminChargingTemplateFunctionTimeType.setUnitPrice(chargingTemplateFunctionTimeTypeDTO.getUnitPrice());
int insert2 = adminChargingTemplateFunctionTimeTypeMapper.insert(adminChargingTemplateFunctionTimeType);
if (insert2 <=0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
}
}
}else {
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
return true;
}
}

@ -0,0 +1,146 @@
package com.saas.admin.provider.service.city;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.city.ICityService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.mapper.entity.AdminCityMapper;
import com.saas.pojo.AdminCity;
import com.saas.vo.admin.city.AllCityVo;
import com.saas.vo.admin.city.CityVo;
import com.saas.vo.app.city.AppAllCityVo;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.data.redis.core.RedisTemplate;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Service(interfaceClass = ICityService.class)
public class CityServiceImpl implements ICityService {
@Resource
AdminCityMapper adminCityMapper;
@Resource
private RedisTemplate<Object,Object> redisTemplate;
@Override
public List<CityVo> findByType(Integer type) {
//搜索条件
HashMap<String, Object> map = new HashMap<>();
map.put("type",type);
//数据查询
List<AdminCity> adminCities = adminCityMapper.selectByMap(map);
//DO转VO
ArrayList<CityVo> cityVoList = new ArrayList<>();
if (adminCities != null && adminCities.size()>0){
for (AdminCity adminCity : adminCities) {
CityVo cityVo = new CityVo();
PropertyUtils.copyProperties(adminCity,cityVo);
cityVoList.add(cityVo);
}
}
return cityVoList;
}
@Override
public List<CityVo> findByParentId(Integer parentId) {
//搜索条件
HashMap<String, Object> map = new HashMap<>();
map.put("parent_id",parentId);
//数据查询
List<AdminCity> adminCities = adminCityMapper.selectByMap(map);
//DO转VO
ArrayList<CityVo> cityVoList = new ArrayList<>();
if (adminCities != null && adminCities.size()>0){
for (AdminCity adminCity : adminCities) {
CityVo cityVo = new CityVo();
PropertyUtils.copyProperties(adminCity,cityVo);
cityVoList.add(cityVo);
}
}
return cityVoList;
}
@Override
public List<AllCityVo> allCity() {
try {
if (redisTemplate.hasKey("cityList")){
Object cityList = redisTemplate.opsForValue().get("cityList");
return JSONArray.parseArray(cityList.toString(), AllCityVo.class);
}
} catch (Exception e) {
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"redis出错");
}
List<AllCityVo> allCityRe = findAllCityRe();
String s = JSONArray.toJSONString(allCityRe);
redisTemplate.opsForValue().set("cityList",s);
return allCityRe;
}
/**
*
* @return
*/
private List<AllCityVo> findAllCityRe() {
//先查询所有的城市信息
QueryWrapper<AdminCity> queryWrapper2 = new QueryWrapper<>();
List<AdminCity> adminCities = adminCityMapper.selectList(queryWrapper2);
//查询县
ArrayList<AllCityVo> allCityVos = new ArrayList<>();
for (AdminCity adminCity : adminCities) {
if (adminCity.getType() == 3){
AllCityVo allCityVo2 = new AllCityVo();
PropertyUtils.copyProperties(adminCity,allCityVo2);
allCityVos.add(allCityVo2);
}
}
//查询市
ArrayList<AllCityVo> allCityVos2 = new ArrayList<>();
for (AdminCity adminCity : adminCities) {
if (adminCity.getType() == 2){
AllCityVo allCityVo2 = new AllCityVo();
PropertyUtils.copyProperties(adminCity,allCityVo2);
List<AllCityVo> cityList = allCityVo2.getCityList();
for (AllCityVo allCityVo : allCityVos) {
if (adminCity.getId().equals(allCityVo.getParentId())){
if (cityList == null){
cityList = new ArrayList<>();
}
cityList.add(allCityVo);
}
}
allCityVo2.setCityList(cityList);
allCityVos2.add(allCityVo2);
}
}
//查询省
ArrayList<AllCityVo> allCityVos3 = new ArrayList<>();
for (AdminCity adminCity : adminCities) {
if (adminCity.getType() == 1){
AllCityVo allCityVo2 = new AllCityVo();
PropertyUtils.copyProperties(adminCity,allCityVo2);
List<AllCityVo> cityList = allCityVo2.getCityList();
for (AllCityVo allCityVo : allCityVos2) {
if (adminCity.getId().equals(allCityVo.getParentId())){
if (cityList == null){
cityList = new ArrayList<>();
}
cityList.add(allCityVo);
}
}
allCityVo2.setCityList(cityList);
allCityVos3.add(allCityVo2);
}
}
return allCityVos3;
}
}

@ -0,0 +1,316 @@
package com.saas.admin.provider.service.community;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.admin.provider.utils.upload.AdminUploadToDbUtil;
import com.saas.api.admin.service.community.ICommunityService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.community.*;
import com.saas.mapper.entity.AdminCityMapper;
import com.saas.mapper.entity.AdminFunctionOrderMapper;
import com.saas.mapper.entity.SysCommunityMapper;
import com.saas.mapper.entity.SysCompanyMapper;
import com.saas.pojo.*;
import com.saas.vo.admin.community.CommunityFBIVo;
import com.saas.vo.admin.community.CommunityInfoVo;
import com.saas.vo.admin.community.CommunityListVo;
import com.saas.vo.admin.upload.ResourcesImgAdminVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
@Service(interfaceClass = ICommunityService.class)
public class CommunityServiceImpl implements ICommunityService {
private static StringBuilder stringBuilder = null;
@Resource
AdminCityMapper adminCityMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Override
public PageInfo<CommunityListVo> list(CommunityListDTO communityListDTO) throws BizException {
ArrayList<CommunityListVo> communityListVoList = new ArrayList<>();
QueryWrapper<SysCommunity> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(communityListDTO.getCommunityName()),"name",communityListDTO.getCommunityName());
//数据分页
Page<SysCommunity> page = new Page<>(communityListDTO.getPageNum(), communityListDTO.getSize());
//数据查询
Page<SysCommunity> sysCommunityPage = sysCommunityMapper.selectPage(page, queryWrapper);
List<SysCommunity> records = sysCommunityPage.getRecords();
if (records != null && records.size() >0){
for (SysCommunity sysCommunity : records) {
CommunityListVo communityListVo = new CommunityListVo();
PropertyUtils.copyProperties(sysCommunity,communityListVo);
//查询公司信息
SysCompany sysCompany = sysCompanyMapper.selectById(sysCommunity.getCompanyId());
if (sysCompany != null){
communityListVo.setCompanyName(sysCompany.getCompanyName());
}
//查询小区地址
StringBuilder stringBuilder = findCityAddressDetails(true, sysCommunity.getAddress());
stringBuilder.append(sysCommunity.getAddressDetails());//拼接公司详细地址
communityListVo.setAddressName(stringBuilder.toString());//填入公司地址
//查询小区图片
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
List<ResourcesImgAdminVo> imgByDate = adminUploadToDbUtil.findImgByDate("sys_community", sysCommunity.getId(), "logImg");
communityListVo.setCommunityImgList(imgByDate);
communityListVoList.add(communityListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(sysCommunityPage.getPages(), communityListVoList, sysCommunityPage.getTotal());
}
@Override
@Transactional
public boolean insertAdmin(CommunityInsertAdminDTO communityInsertAdminDTO, Integer id) throws BizException {
//添加小区信息
SysCommunity sysCommunity = new SysCommunity();
sysCommunity.setCompanyId(communityInsertAdminDTO.getCompanyId());
sysCommunity.setName(communityInsertAdminDTO.getName());
sysCommunity.setCode(UUID.randomUUID().toString().replace("-",""));//填入生成的小区识别码
sysCommunity.setAddress(communityInsertAdminDTO.getAddress());
sysCommunity.setAddressDetails(communityInsertAdminDTO.getAddressDetails());
sysCommunity.setCreateId(-1);
sysCommunity.setCreateDate(new Date());
int insert = sysCommunityMapper.insert(sysCommunity);
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
adminUploadToDbUtil.saveUrlToDB(communityInsertAdminDTO.getCommunityUrls(),"sys_community",sysCommunity.getId(),"logImg");
return insert > 0;
}
@Override
public CommunityFBIVo findByIdAdmin(Integer communityId, AdminUser adminUser) throws BizException {
CommunityFBIVo communityFBIVo = new CommunityFBIVo();
SysCommunity sysCommunity = sysCommunityMapper.selectById(communityId);
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
communityFBIVo.setId(sysCommunity.getId());
communityFBIVo.setName(sysCommunity.getName());
communityFBIVo.setAddressDetails(sysCommunity.getAddressDetails());
communityFBIVo.setCompanyId(sysCommunity.getCompanyId());
//查询入驻公司信息
SysCompany sysCompany = sysCompanyMapper.selectById(sysCommunity.getCompanyId());
communityFBIVo.setCompanyName(sysCompany.getCompanyName());
//查询省市县信息
///查询县
AdminCity county = adminCityMapper.selectById(sysCommunity.getAddress());
communityFBIVo.setCountyId(county.getId());
communityFBIVo.setCountyName(county.getName());
///查询市
AdminCity city = adminCityMapper.selectById(county.getParentId());
communityFBIVo.setCityId(city.getId());
communityFBIVo.setCityName(city.getName());
///查询省
AdminCity province = adminCityMapper.selectById(city.getParentId());
communityFBIVo.setProvinceId(province.getId());
communityFBIVo.setProvinceName(province.getName());
//查询小区正门图片
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
List<ResourcesImgAdminVo> imgByDate = adminUploadToDbUtil.findImgByDate("sys_community", sysCommunity.getId(), "logImg");
communityFBIVo.setImgList(imgByDate);
return communityFBIVo;
}
@Override
@Transactional
public boolean updateAdmin(CommunityUpdateAdminDTO communityUpdateAdminDTO, Integer id) throws BizException {
SysCommunity sysCommunity = sysCommunityMapper.selectById(communityUpdateAdminDTO.getId());
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
PropertyUtils.copyProperties(communityUpdateAdminDTO,sysCommunity);
int update = sysCommunityMapper.updateById(sysCommunity);
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
adminUploadToDbUtil.delete("sys_community",communityUpdateAdminDTO.getId(),"logImg");
adminUploadToDbUtil.saveUrlToDB(communityUpdateAdminDTO.getCommunityUrls(),"sys_community",sysCommunity.getId(),"logImg");
return update >0;
}
@Override
@Transactional
public boolean insert(CommunityInsertDTO communityInsertDTO, Integer id) throws BizException {
//根据用户主键id查询所在公司
//搜索条件
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",id);
queryWrapper.eq("status",2);//2.通过
//数据查询
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"公司未添加或未通过");
}
//添加小区信息
SysCommunity sysCommunity = new SysCommunity();
sysCommunity.setCompanyId(sysCompany.getId());
sysCommunity.setName(communityInsertDTO.getName());
sysCommunity.setCode(UUID.randomUUID().toString().replace("-",""));//填入生成的小区识别码
sysCommunity.setAddress(communityInsertDTO.getAddress());
sysCommunity.setAddressDetails(communityInsertDTO.getAddressDetails());
sysCommunity.setCreateId(-1);
sysCommunity.setCreateDate(new Date());
int insert = sysCommunityMapper.insert(sysCommunity);
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
adminUploadToDbUtil.saveUrlToDB(communityInsertDTO.getCommunityUrls(),"sys_community",sysCommunity.getId(),"logImg");
return insert > 0;
}
@Override
@Transactional
public boolean update(CommunityUpdateDTO communityUpdateDTO, AdminUser adminUser) throws BizException {
//根据用户主键id查询所在公司
//搜索条件
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("status",2);//2.通过
//数据查询
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"公司未添加或未通过");
}
QueryWrapper<SysCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("company_id",sysCompany.getId());
queryWrapper2.eq("id",communityUpdateDTO.getId());
SysCommunity sysCommunity = sysCommunityMapper.selectOne(queryWrapper2);
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
PropertyUtils.copyProperties(communityUpdateDTO,sysCommunity);
int update = sysCommunityMapper.updateById(sysCommunity);
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
adminUploadToDbUtil.delete("sys_community",sysCommunity.getId(),"logImg");
adminUploadToDbUtil.saveUrlToDB(communityUpdateDTO.getCommunityUrls(),"sys_community",sysCommunity.getId(),"logImg");
return update > 0;
}
@Override
public List<CommunityInfoVo> getAllCommunityInfo(String keyword, Integer id) {
//查询公司信息
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",id);
queryWrapper.eq("status",2);//2.通过
queryWrapper.like(StringUtils.isNotBlank(keyword),"name",keyword);
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//查询小区信息
QueryWrapper<SysCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("company_id",sysCompany.getId());
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper2);
ArrayList<CommunityInfoVo> communityInfoVoList = new ArrayList<>();
if (sysCommunities != null && sysCommunities.size()>0){
for (SysCommunity sysCommunity : sysCommunities) {
CommunityInfoVo communityInfoVo = new CommunityInfoVo();
PropertyUtils.copyProperties(sysCommunity,communityInfoVo);
//查询是否有绑定订单
QueryWrapper<AdminFunctionOrder> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany.getId());
queryWrapper3.eq("community_id",sysCommunity.getId());
List<AdminFunctionOrder> adminFunctionOrders = adminFunctionOrderMapper.selectList(queryWrapper3);
//查询所有已绑定的订单号
if (adminFunctionOrders != null && adminFunctionOrders.size() >0){
communityInfoVo.setBindOrder(true);
ArrayList<String> bindOrderCodes = new ArrayList<>();
for (AdminFunctionOrder adminFunctionOrder : adminFunctionOrders) {
bindOrderCodes.add(adminFunctionOrder.getCode());
}
communityInfoVo.setBindOrderCodeList(bindOrderCodes);
}else {
communityInfoVo.setBindOrder(false);
}
communityInfoVoList.add(communityInfoVo);
}
}
return communityInfoVoList;
}
@Override
public List<CommunityInfoVo> getCommunityInfoByCompanyId(Integer companyId) throws BizException {
//查询小区信息
QueryWrapper<SysCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("company_id",companyId);
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper2);
ArrayList<CommunityInfoVo> communityInfoVoList = new ArrayList<>();
if (sysCommunities != null && sysCommunities.size()>0){
for (SysCommunity sysCommunity : sysCommunities) {
CommunityInfoVo communityInfoVo = new CommunityInfoVo();
PropertyUtils.copyProperties(sysCommunity,communityInfoVo);
communityInfoVoList.add(communityInfoVo);
}
}
return communityInfoVoList;
}
@Override
public SysCommunity findById(Integer communityId) {
return sysCommunityMapper.selectById(communityId);
}
@Override
public SysCommunity findByCode(String communityCode) {
QueryWrapper<SysCommunity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code",communityCode);
return sysCommunityMapper.selectOne(queryWrapper);
}
/**
*
* @param isCreate StringBuild
* @param cityAddress Id
* @return StringBuild
*/
private StringBuilder findCityAddressDetails(boolean isCreate,Integer cityAddress) {
if (isCreate){
//创建StringBuild对象
stringBuilder = new StringBuilder();
}
AdminCity adminCity = adminCityMapper.selectById(cityAddress);
if (adminCity.getParentId() != 0){
findCityAddressDetails(false,adminCity.getParentId());//后续循环不需要创建StringBuild对象
stringBuilder.append(adminCity.getName()).append(" ");//拼接公司省县市地址
}
return stringBuilder;
}
}

@ -0,0 +1,162 @@
package com.saas.admin.provider.service.console;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.console.IConsoleService;
import com.saas.common.utils.PropertyUtils;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import com.saas.vo.admin.console.ConsoleCommunityVo;
import com.saas.vo.admin.console.ConsoleCompanyVo;
import com.saas.vo.admin.console.ConsoleOrderVo;
import com.saas.vo.admin.console.ConsoleShowVo;
import com.saas.vo.admin.order.AdminFunctionOrderListVo;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service(interfaceClass = IConsoleService.class)
public class ConsoleServiceImpl implements IConsoleService {
private static StringBuilder stringBuilder = null;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Resource
AdminCityMapper adminCityMapper;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Resource
AdminFunctionOrderDetailsMapper adminFunctionOrderDetailsMapper;
@Resource
SysMenusMapper sysMenusMapper;
@Override
public ConsoleShowVo show(Integer id) {
ConsoleShowVo consoleShowVo = new ConsoleShowVo();
//查询公司信息
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",id);
queryWrapper.orderByDesc("create_date");
queryWrapper.eq("status",2);//2.通过
queryWrapper.last("limit 1");
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany == null){
//没有公司信息则直接传出null
return consoleShowVo;
}
//填入公司信息 DO 转 VO
ConsoleCompanyVo consoleCompanyVo = new ConsoleCompanyVo();
PropertyUtils.copyProperties(sysCompany,consoleCompanyVo);
consoleShowVo.setConsoleCompanyVo(consoleCompanyVo);
//查询小区信息
QueryWrapper<SysCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("company_id",sysCompany.getId());
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper2);
if (sysCommunities != null && sysCommunities.size()>0){
ArrayList<ConsoleCommunityVo> consoleCommunityVoList = new ArrayList<>();
for (SysCommunity sysCommunity : sysCommunities) {
ConsoleCommunityVo consoleCommunityVo = new ConsoleCommunityVo();
consoleCommunityVo.setName(sysCommunity.getName());
consoleCommunityVo.setId(sysCommunity.getId());
consoleCommunityVo.setCode(sysCommunity.getCode());
//查询城市地址
StringBuilder stringBuilder = findCityAddressDetails(true, sysCommunity.getAddress());
stringBuilder.append(sysCommunity.getAddressDetails());//拼接小区详细地址
consoleCommunityVo.setAddressDetails(stringBuilder.toString());//填入小区地址
//查询是否有绑定订单
QueryWrapper<AdminFunctionOrder> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany.getId());
queryWrapper3.eq("community_id",sysCommunity.getId());
List<AdminFunctionOrder> adminFunctionOrders = adminFunctionOrderMapper.selectList(queryWrapper3);
//查询所有已绑定的订单号
if (adminFunctionOrders != null && adminFunctionOrders.size() >0){
consoleCommunityVo.setBindOrder(true);
ArrayList<String> bindOrderCodes = new ArrayList<>();
for (AdminFunctionOrder adminFunctionOrder : adminFunctionOrders) {
bindOrderCodes.add(adminFunctionOrder.getCode());
}
consoleCommunityVo.setBindOrderCodeList(bindOrderCodes);
}else {
consoleCommunityVo.setBindOrder(false);
}
consoleCommunityVoList.add(consoleCommunityVo);
}
consoleShowVo.setConsoleCommunityVoList(consoleCommunityVoList);
}
//查询全部的订单信息
QueryWrapper<AdminFunctionOrder> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany.getId());
queryWrapper3.eq("status",2);//交易支付成功
List<AdminFunctionOrder> adminFunctionOrderList = adminFunctionOrderMapper.selectList(queryWrapper3);
if (adminFunctionOrderList != null && adminFunctionOrderList.size()>0){
ArrayList<ConsoleOrderVo> consoleOrderVoList = new ArrayList<>();
for (AdminFunctionOrder adminFunctionOrder : adminFunctionOrderList) {
//进行Do To Vo 数据转换
ConsoleOrderVo consoleOrderVo = new ConsoleOrderVo();
PropertyUtils.copyProperties(adminFunctionOrder,consoleOrderVo);
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",adminFunctionOrder.getId());
ArrayList<String> includeFunctionModel = new ArrayList<>();
List<AdminFunctionOrderDetails> adminFunctionOrderDetailsList = adminFunctionOrderDetailsMapper.selectByMap(map);
if (adminFunctionOrderDetailsList != null && adminFunctionOrderDetailsList.size()>0){
for (AdminFunctionOrderDetails adminFunctionOrderDetail : adminFunctionOrderDetailsList) {
SysMenus sysMenus = sysMenusMapper.selectById(adminFunctionOrderDetail.getChargingFunctionId());
includeFunctionModel.add(sysMenus.getName());
}
}
//判断订单状态由支付转换为状态1.未绑定3.生效中,4.已失效
consoleOrderVo.setIncludeFunctionModelList(includeFunctionModel);
if (adminFunctionOrder.getCommunityId() != null){
consoleOrderVo.setStatus(3);//3.已生效
if (adminFunctionOrder.getExpirationDate() != null && new Date().getTime() > adminFunctionOrder.getExpirationDate().getTime()){
consoleOrderVo.setStatus(4);//4.已失效
}
//查询小区信息
SysCommunity sysCommunity = sysCommunityMapper.selectById(adminFunctionOrder.getCommunityId());
if (sysCommunity != null){
consoleOrderVo.setBindCommunityName(sysCommunity.getName());
}
}else {
consoleOrderVo.setStatus(1);//1.未绑定
}
consoleOrderVoList.add(consoleOrderVo);
}
consoleShowVo.setConsoleOrderVoList(consoleOrderVoList);
}
return consoleShowVo;
}
/**
*
* @param isCreate StringBuild
* @param cityAddress Id
* @return StringBuild
*/
private StringBuilder findCityAddressDetails(boolean isCreate,Integer cityAddress) {
if (isCreate){
//创建StringBuild对象
stringBuilder = new StringBuilder();
}
AdminCity adminCity = adminCityMapper.selectById(cityAddress);
if (adminCity.getParentId() != 0){
findCityAddressDetails(false,adminCity.getParentId());//后续循环不需要创建StringBuild对象
stringBuilder.append(adminCity.getName()).append(" ");//拼接公司省县市地址
}
return stringBuilder;
}
}

@ -0,0 +1,130 @@
package com.saas.admin.provider.service.customerList;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.admin.provider.utils.upload.AdminUploadToDbUtil;
import com.saas.api.admin.service.customerList.ICustomerListService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.customerList.CustomerListDTO;
import com.saas.mapper.entity.AdminCityMapper;
import com.saas.mapper.entity.AdminUserMapper;
import com.saas.pojo.AdminCity;
import com.saas.pojo.AdminUser;
import com.saas.pojo.SysCompany;
import com.saas.vo.admin.customerList.CustomerDetailsVo;
import com.saas.vo.admin.customerList.CustomerListVo;
import com.saas.mapper.entity.SysCompanyMapper;
import com.saas.vo.admin.upload.ResourcesImgAdminVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service(interfaceClass = ICustomerListService.class)
public class CustomerListServiceImpl implements ICustomerListService {
private static StringBuilder stringBuilder = null;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminUserMapper adminUserMapper;
@Resource
AdminCityMapper adminCityMapper;
@Override
public PageInfo<CustomerListVo> list(CustomerListDTO customerListDTO) {
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.eq("status",2);//只查询出2.通过的客户信息
queryWrapper.and(StringUtils.isNotBlank(customerListDTO.getName()),wrapper -> wrapper.like("company_name",customerListDTO.getName())
.or().like("contacts_name",customerListDTO.getName()));
//数据分页
Page<SysCompany> page = new Page<>(customerListDTO.getPageNum(), customerListDTO.getSize());
//数据查询
Page<SysCompany> sysCompanyPage = sysCompanyMapper.selectPage(page, queryWrapper);
List<SysCompany> companyList = sysCompanyPage.getRecords();
ArrayList<CustomerListVo> customerListVoList = new ArrayList<>();
//DO 转 VO
if (companyList != null && companyList.size() >0){
for (SysCompany sysCompany : companyList) {
CustomerListVo customerListVo = new CustomerListVo();
PropertyUtils.copyProperties(sysCompany,customerListVo);
customerListVoList.add(customerListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(sysCompanyPage.getPages(), customerListVoList, sysCompanyPage.getTotal());
}
@Override
public CustomerDetailsVo findDetailsById(Integer id) throws BizException {
CustomerDetailsVo customerDetailsVo = new CustomerDetailsVo();
//查询客户信息
SysCompany sysCompany = sysCompanyMapper.selectById(id);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
AdminUser adminUser = adminUserMapper.selectById(sysCompany.getAdminUserId());
if (adminUser == null){
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
//填入关联账号
customerDetailsVo.setUserName(adminUser.getUserName());
customerDetailsVo.setPassword(adminUser.getPassword());
//DO 转 VO
PropertyUtils.copyProperties(sysCompany,customerDetailsVo);
//查询城市地址
StringBuilder stringBuilder = findCityAddressDetails(true,sysCompany.getCompanyAddress());
stringBuilder.append(sysCompany.getCompanyAddressDetail());//拼接公司详细地址
customerDetailsVo.setCompanyAddressDetails(stringBuilder.toString());//填入公司地址
//查询联系人地址
StringBuilder stringBuilder2 = findCityAddressDetails(true,sysCompany.getContactsAddress());
stringBuilder2.append(sysCompany.getContactsAddressDetail());//拼接联系人详细地址
customerDetailsVo.setContactsAddressDetails(stringBuilder2.toString());//填入联系人地址
//查询照片信息
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
//查询身份证正面集合信息
List<ResourcesImgAdminVo> imgByDate = adminUploadToDbUtil.findImgByDate("sys_company", id, "idCardFront");
customerDetailsVo.setIdCardFrontImgList(imgByDate);
//身份证背面集合信息
List<ResourcesImgAdminVo> imgByDate2 = adminUploadToDbUtil.findImgByDate("sys_company", id, "idCardBack");
customerDetailsVo.setIdCardBackImgList(imgByDate2);
//公司营业执照集合信息
List<ResourcesImgAdminVo> imgByDate3 = adminUploadToDbUtil.findImgByDate("sys_company", id, "businessLicense");
customerDetailsVo.setBusinessLicenseImgList(imgByDate3);
//其他附件集合信息
List<ResourcesImgAdminVo> imgByDate4 = adminUploadToDbUtil.findImgByDate("sys_company", id, "others");
customerDetailsVo.setOthersImgList(imgByDate4);
return customerDetailsVo;
}
/**
*
* @param isCreate StringBuild
* @param cityAddress Id
* @return StringBuild
*/
private StringBuilder findCityAddressDetails(boolean isCreate,Integer cityAddress) {
if (isCreate){
//创建StringBuild对象
stringBuilder = new StringBuilder();
}
AdminCity adminCity = adminCityMapper.selectById(cityAddress);
if (adminCity.getParentId() != 0){
findCityAddressDetails(false,adminCity.getParentId());//后续循环不需要创建StringBuild对象
stringBuilder.append(adminCity.getName()).append(" ");//拼接公司省县市地址
}
return stringBuilder;
}
}

@ -0,0 +1,278 @@
package com.saas.admin.provider.service.jcook;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.jcook.IJcookService;
import com.saas.common.config.JcookConfig;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import org.example.api.JcookSDK;
import org.example.api.model.*;
import org.example.api.utils.result.Result;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
@Service(interfaceClass = IJcookService.class)
@Slf4j
public class JcookServiceImpl implements IJcookService {
@Resource
JcookGoodsMapper jcookGoodsMapper;
@Resource
JcookImageMapper jcookImageMapper;
@Resource
JcookBigInfoMapper jcookBigInfoMapper;
@Resource
JcookSpecificationMapper jcookSpecificationMapper;
@Resource
JcookSpecificationAttributeMapper jcookSpecificationAttributeMapper;
@Resource
JcookExtAttrMapper jcookExtAttrMapper;
@Override
public boolean initJcookShop(Integer page) throws BizException {
boolean flag = true;
while (flag){
log.info("当前页面是:------- "+page+" -------");
//获取商品列表
SkuListRequest skuListRequest = new SkuListRequest();
skuListRequest.setPage(page);
skuListRequest.setPageSize(20);
log.info(JcookConfig.JCOOK_APP_KEY);
JcookSDK jcookSDK = new JcookSDK(JcookConfig.JCOOK_APP_KEY, JcookConfig.JCOOK_APP_SECRET, JcookConfig.JCOOK_CHANNEL_ID);
Result<SkuListResponse> skuListResponse = jcookSDK.skuList(skuListRequest);
log.info(skuListResponse.toString());
List<SkuListInfoResponse> entries = skuListResponse.getData().getEntries();
ArrayList<BigInteger> ids = new ArrayList<>();
if (entries != null && entries.size()>0) {
for (SkuListInfoResponse entry : entries) {
ids.add(entry.getSkuId());
}
}
//获取商品详情
SkuDetailRequest skuDetailRequest = new SkuDetailRequest();
skuDetailRequest.setSkuIdSet(ids);
Result<List<SkuDetailResponse>> skuDetailResponseList = jcookSDK.skuDetail(skuDetailRequest);
List<SkuDetailResponse> data = skuDetailResponseList.getData();
if (data != null && data.size()>0){
//取数据进数据库
for (SkuDetailResponse datum : data) {
try {
//获取skuBase 基础信息
SkuDetailBaseResponse skuDetailBase = datum.getSkuDetailBase();
log.info("当前sku_id为------- "+ skuDetailBase.getSkuId()+" -------");
//添加商品
JcookGoods jcookGoods = new JcookGoods();
//添加商品信息
PropertyUtils.copyProperties(skuDetailBase,jcookGoods);
jcookGoods.setSupplyPrices(new BigDecimal(skuDetailBase.getSupplyPrice()));
jcookGoods.setGuidePrices(new BigDecimal(skuDetailBase.getGuidePrice()));
jcookGoodsMapper.insert(jcookGoods);
//添加image列表
List<SkuDetailsImagesResponse> images = datum.getImages();
if (images != null && images.size() > 0){
for (SkuDetailsImagesResponse image : images) {
JcookImage jcookImage = new JcookImage();
PropertyUtils.copyProperties(image,jcookImage);
jcookImage.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookImageMapper.insert(jcookImage);
}
}
//添加bigInfo大图信息
SkuDetailBigInfoResponse bigInfo = datum.getBigInfo();
if (bigInfo != null){
JcookBigInfo jcookBigInfo = new JcookBigInfo();
PropertyUtils.copyProperties(bigInfo,jcookBigInfo);
jcookBigInfo.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookBigInfoMapper.insert(jcookBigInfo);
}
//添加specification 规格参数
List<SkuDetailSpecificationResponse> specification = datum.getSpecification();
if (specification != null && specification.size()>0){
for (SkuDetailSpecificationResponse skuDetailSpecificationResponse : specification) {
JcookSpecification jcookSpecification = new JcookSpecification();
jcookSpecification.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookSpecification.setGroupName(skuDetailSpecificationResponse.getGroupName());//填入组名
//添加jcook主体规格参数组
jcookSpecificationMapper.insert(jcookSpecification);
List<SkuDetailSpecificationAttributeResponse> attribute = skuDetailSpecificationResponse.getAttribute();
if (attribute != null && attribute.size()>0){
for (SkuDetailSpecificationAttributeResponse skuDetailSpecificationAttributeResponse : attribute) {
JcookSpecificationAttribute jcookSpecificationAttribute = new JcookSpecificationAttribute();
jcookSpecificationAttribute.setJcookSpecificationId(jcookSpecification.getId());//填入规格参数主体主键id
jcookSpecificationAttribute.setName(skuDetailSpecificationAttributeResponse.getName());//填入键
jcookSpecificationAttribute.setValue(skuDetailSpecificationAttributeResponse.getValue());//填入值
//添加jcook主体规格参数详情
jcookSpecificationAttributeMapper.insert(jcookSpecificationAttribute);
}
}
}
}
//添加attribute 列表
List<SkuDetailExtAttrResponse> extAttr = datum.getExtAttr();
if (extAttr != null && extAttr.size()>0){
for (SkuDetailExtAttrResponse skuDetailExtAttrResponse : extAttr) {
JcookExtAttr jcookExtAttr = new JcookExtAttr();
jcookExtAttr.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookExtAttr.setName(skuDetailExtAttrResponse.getName());//填入键
jcookExtAttr.setValue(skuDetailExtAttrResponse.getValue());//填入值
jcookExtAttrMapper.insert(jcookExtAttr);
}
}
} catch (Exception e) {
e.printStackTrace();
log.info("发生异常,跳过该商品");
continue;
}
}
}else {
//跳出循环
flag = false;
}
//进入下一页数据
page += 1;
}
return true;
}
@Override
public boolean updateJcookShpp() throws BizException {
int page = 1;
boolean flag = true;
while (flag){
log.info("当前页面是:------- "+page+" -------");
//获取商品列表
SkuListRequest skuListRequest = new SkuListRequest();
skuListRequest.setPage(page);
skuListRequest.setPageSize(20);
log.info(JcookConfig.JCOOK_APP_KEY);
JcookSDK jcookSDK = new JcookSDK(JcookConfig.JCOOK_APP_KEY, JcookConfig.JCOOK_APP_SECRET, JcookConfig.JCOOK_CHANNEL_ID);
Result<SkuListResponse> skuListResponse = jcookSDK.skuList(skuListRequest);
log.info(skuListResponse.toString());
List<SkuListInfoResponse> entries = skuListResponse.getData().getEntries();
ArrayList<BigInteger> ids = new ArrayList<>();
if (entries != null && entries.size()>0) {
for (SkuListInfoResponse entry : entries) {
ids.add(entry.getSkuId());
}
}
//获取商品详情
SkuDetailRequest skuDetailRequest = new SkuDetailRequest();
skuDetailRequest.setSkuIdSet(ids);
Result<List<SkuDetailResponse>> skuDetailResponseList = jcookSDK.skuDetail(skuDetailRequest);
List<SkuDetailResponse> data = skuDetailResponseList.getData();
if (data != null && data.size()>0){
//取数据进数据库
for (SkuDetailResponse datum : data) {
try {
//获取skuBase 基础信息
SkuDetailBaseResponse skuDetailBase = datum.getSkuDetailBase();
log.info("当前sku_id为------- "+ skuDetailBase.getSkuId()+" -------");
//根据skuid查询数据库是否存在存在则更新上下架状态不存在则添加该商品信息
QueryWrapper<JcookGoods> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sku_id",skuDetailBase.getSkuId());
queryWrapper.last("limit 1");
JcookGoods jcookGoods2 = jcookGoodsMapper.selectOne(queryWrapper);
if (jcookGoods2 != null){
//更新该商品上下架状态
jcookGoods2.setStatus(skuDetailBase.getStatus());
jcookGoodsMapper.updateById(jcookGoods2);
}else {
//添加该商品信息
//添加商品
JcookGoods jcookGoods = new JcookGoods();
//添加商品信息
PropertyUtils.copyProperties(skuDetailBase,jcookGoods);
jcookGoods.setSupplyPrices(new BigDecimal(skuDetailBase.getSupplyPrice()));
jcookGoods.setGuidePrices(new BigDecimal(skuDetailBase.getGuidePrice()));
jcookGoodsMapper.insert(jcookGoods);
//添加image列表
List<SkuDetailsImagesResponse> images = datum.getImages();
if (images != null && images.size() > 0){
for (SkuDetailsImagesResponse image : images) {
JcookImage jcookImage = new JcookImage();
PropertyUtils.copyProperties(image,jcookImage);
jcookImage.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookImageMapper.insert(jcookImage);
}
}
//添加bigInfo大图信息
SkuDetailBigInfoResponse bigInfo = datum.getBigInfo();
if (bigInfo != null){
JcookBigInfo jcookBigInfo = new JcookBigInfo();
PropertyUtils.copyProperties(bigInfo,jcookBigInfo);
jcookBigInfo.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookBigInfoMapper.insert(jcookBigInfo);
}
//添加specification 规格参数
List<SkuDetailSpecificationResponse> specification = datum.getSpecification();
if (specification != null && specification.size()>0){
for (SkuDetailSpecificationResponse skuDetailSpecificationResponse : specification) {
JcookSpecification jcookSpecification = new JcookSpecification();
jcookSpecification.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookSpecification.setGroupName(skuDetailSpecificationResponse.getGroupName());//填入组名
//添加jcook主体规格参数组
jcookSpecificationMapper.insert(jcookSpecification);
List<SkuDetailSpecificationAttributeResponse> attribute = skuDetailSpecificationResponse.getAttribute();
if (attribute != null && attribute.size()>0){
for (SkuDetailSpecificationAttributeResponse skuDetailSpecificationAttributeResponse : attribute) {
JcookSpecificationAttribute jcookSpecificationAttribute = new JcookSpecificationAttribute();
jcookSpecificationAttribute.setJcookSpecificationId(jcookSpecification.getId());//填入规格参数主体主键id
jcookSpecificationAttribute.setName(skuDetailSpecificationAttributeResponse.getName());//填入键
jcookSpecificationAttribute.setValue(skuDetailSpecificationAttributeResponse.getValue());//填入值
//添加jcook主体规格参数详情
jcookSpecificationAttributeMapper.insert(jcookSpecificationAttribute);
}
}
}
}
//添加attribute 列表
List<SkuDetailExtAttrResponse> extAttr = datum.getExtAttr();
if (extAttr != null && extAttr.size()>0){
for (SkuDetailExtAttrResponse skuDetailExtAttrResponse : extAttr) {
JcookExtAttr jcookExtAttr = new JcookExtAttr();
jcookExtAttr.setJcookGoodsId(jcookGoods.getId());//填入jcook商品主键id
jcookExtAttr.setName(skuDetailExtAttrResponse.getName());//填入键
jcookExtAttr.setValue(skuDetailExtAttrResponse.getValue());//填入值
jcookExtAttrMapper.insert(jcookExtAttr);
}
}
}
} catch (Exception e) {
e.printStackTrace();
log.info("发生异常,跳过该商品");
continue;
}
}
}else {
//跳出循环
flag = false;
}
//进入下一页数据
page += 1;
}
return true;
}
}

@ -0,0 +1,19 @@
package com.saas.admin.provider.service.log;
import com.saas.api.admin.service.log.IAdminUserOperationLogService;
import com.saas.pojo.AdminUserOperationLog;
import com.saas.mapper.entity.AdminUserOperationLogMapper;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
@Service(interfaceClass = IAdminUserOperationLogService.class)
public class AdminUserOperationLogServiceImpl implements IAdminUserOperationLogService {
@Resource
AdminUserOperationLogMapper adminUserOperationLogMapper;
@Override
public Integer insert(AdminUserOperationLog adminLog) {
return adminUserOperationLogMapper.insert(adminLog);
}
}

@ -0,0 +1,354 @@
package com.saas.admin.provider.service.login;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.login.IAdminLoginService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.MD5Utils;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.sms.SmsSendUtil;
import com.saas.dto.admin.login.*;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.UUID;
@Service(interfaceClass = IAdminLoginService.class)
@Slf4j
public class AdminLoginServiceImpl implements IAdminLoginService {
//验证码过期时间30分钟
private final long EXPIRATION_TIME = 30*60*1000;
@Resource
AdminUserMapper adminUserMapper;
@Resource
AdminTokenLoginMapper adminTokenLoginMapper;
@Resource
AdminCodeLoginMapper adminCodeLoginMapper;
@Resource
AdminCodeRegisterMapper adminCodeRegisterMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Resource
ManageUserMapper manageUserMapper;
@Resource
ManageTokenLoginMapper manageTokenLoginMapper;
@Override
public boolean loginPWD(AdminPwdLoginDTO adminPwdLoginDTO) {
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.eq("user_name",adminPwdLoginDTO.getUsername());
queryWrapper.eq("password",MD5Utils.getMD5(adminPwdLoginDTO.getPassword()));
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper);
//如果存在则存入登入token
if (adminUser != null){
//先根据用户id删除登录token信息【单token登录】只能一个手机登录另一个手机登录会弹掉已登录的手机用户
QueryWrapper<AdminTokenLogin> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",adminUser.getId());
adminTokenLoginMapper.delete(queryWrapper2);
//登录
AdminTokenLogin adminTokenLogin = new AdminTokenLogin();
adminTokenLogin.setLoginSession(adminPwdLoginDTO.getLoginToken());
adminTokenLogin.setAdminUserId(adminUser.getId());
adminTokenLogin.setLoginDate(new Date());
//将登录token存进数据库并更新时间
int insert = adminTokenLoginMapper.insert(adminTokenLogin);
return insert > 0;
}
return false;
}
@Override
public boolean loginTelCode(AdminTelCodeLoginDTO adminTelCodeLoginDTO, long loginToken) {
//根据手机号查询手机验证码信息
QueryWrapper<AdminCodeLogin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tel",adminTelCodeLoginDTO.getTel());
AdminCodeLogin adminCodeLogin = adminCodeLoginMapper.selectOne(queryWrapper);
if (adminCodeLogin == null){
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_FAILURE);
}
//校验验证码是否过期(判断相差时间是否超过3分钟)
long time = new Date().getTime() - adminCodeLogin.getCodeSendDate().getTime();
if (time > EXPIRATION_TIME){
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_EXPIRED);
}
//校验验证码
if (!adminCodeLogin.getCode().equals(adminTelCodeLoginDTO.getCode())) {
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_ERROR);
}
//登录成功后,删除手机验证码信息(防止一个验证码多次登录)
HashMap<String, Object> columnMap = new HashMap<>();
columnMap.put("tel",adminTelCodeLoginDTO.getTel());
adminCodeLoginMapper.deleteByMap(columnMap);
//根据手机号查询平台用户信息
QueryWrapper<AdminUser> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("tel",adminTelCodeLoginDTO.getTel());
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper2);
//如果存在则存入登入token
if (adminUser != null){
//先根据用户id删除登录token信息【单token登录】只能一个手机登录另一个手机登录会弹掉已登录的手机用户
QueryWrapper<AdminTokenLogin> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("admin_user_id",adminUser.getId());
adminTokenLoginMapper.delete(queryWrapper3);
//登录
AdminTokenLogin adminTokenLogin = new AdminTokenLogin();
adminTokenLogin.setLoginSession(loginToken);
adminTokenLogin.setAdminUserId(adminUser.getId());
adminTokenLogin.setLoginDate(new Date());
//将登录token存进数据库并更新时间
int insert = adminTokenLoginMapper.insert(adminTokenLogin);
return insert > 0;
}else {
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
}
@Override
public boolean sendTelCode(AdminSendTelCodeDTO adminSendTelCodeDTO, String code) {
//根据手机号查询平台用户信息
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tel",adminSendTelCodeDTO.getTel());
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper);
if (adminUser == null){
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
if (adminUser.getIsDelete() == 0){
throw new BizException(HttpStatusEnum.USER_IS_DELETE);
}
//根据手机号查询平台用户验证码
QueryWrapper<AdminCodeLogin> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("tel",adminUser.getTel());
AdminCodeLogin adminCodeLogin = adminCodeLoginMapper.selectOne(queryWrapper2);
int send = 0;
if (adminCodeLogin != null){
//如果有相关手机验证码信息,修改验证码和验证码发送时间
adminCodeLogin.setCode(code);//填入验证码
adminCodeLogin.setCodeSendDate(new Date());//填入验证码发送时间
send = adminCodeLoginMapper.updateById(adminCodeLogin);
}else {
//如果没有相关手机验证码信息,将验证码和验证码发送时间存入数据库
AdminCodeLogin adminCodeLogin2 = new AdminCodeLogin();
adminCodeLogin2.setTel(adminSendTelCodeDTO.getTel());
adminCodeLogin2.setCode(code);//填入验证码
adminCodeLogin2.setCodeSendDate(new Date());//填入验证码发送时间
send = adminCodeLoginMapper.insert(adminCodeLogin2);
}
if (send <= 0){
log.info("数据库修改或添加验证码失败");
return false;
}
// 发送短信工具类
try {
SmsSendUtil.sendSms(code, adminSendTelCodeDTO.getTel());
} catch (ClientException e) {
e.printStackTrace();
log.info("短信工具发送失败");
return false;
}
return true;
}
@Override
public boolean sendTelRegisterCode(AdminSendTelRegisterCodeDTO adminSendTelRegisterCodeDTO, String code) {
//根据手机号查询平台用户信息
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tel",adminSendTelRegisterCodeDTO.getTel());
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper);
if (adminUser != null){
throw new BizException(HttpStatusEnum.TEL_REGISTERED);
}
//根据手机号查询平台用户验证码
QueryWrapper<AdminCodeRegister> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("tel",adminSendTelRegisterCodeDTO.getTel());
AdminCodeRegister adminCodeRegister = adminCodeRegisterMapper.selectOne(queryWrapper2);
int send = 0;
if (adminCodeRegister != null){
//如果有相关手机验证码信息,修改验证码和验证码发送时间
adminCodeRegister.setCode(code);//填入验证码
adminCodeRegister.setCodeSendDate(new Date());//填入验证码发送时间
send = adminCodeRegisterMapper.updateById(adminCodeRegister);
}else {
//如果没有相关手机验证码信息,将验证码和验证码发送时间存入数据库
AdminCodeRegister adminCodeRegister2 = new AdminCodeRegister();
adminCodeRegister2.setTel(adminSendTelRegisterCodeDTO.getTel());
adminCodeRegister2.setCode(code);//填入验证码
adminCodeRegister2.setCodeSendDate(new Date());//填入验证码发送时间
send = adminCodeRegisterMapper.insert(adminCodeRegister2);
}
if (send <= 0){
log.info("数据库修改或添加验证码失败");
return false;
}
// 发送短信工具类
try {
SmsSendUtil.sendSms(code, adminSendTelRegisterCodeDTO.getTel());
} catch (ClientException e) {
e.printStackTrace();
log.info("短信工具发送失败");
return false;
}
return true;
}
@Override
public boolean register(AdminRegisterDTO adminRegisterDTO) throws BizException {
//根据手机号查询平台用户验证码
QueryWrapper<AdminCodeRegister> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("tel",adminRegisterDTO.getTel());
AdminCodeRegister adminCodeRegister = adminCodeRegisterMapper.selectOne(queryWrapper2);
if (adminCodeRegister == null){
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_FAILURE);
}
//校验验证码是否过期(判断相差时间是否超过3分钟)
long time = new Date().getTime() - adminCodeRegister.getCodeSendDate().getTime();
if (time > EXPIRATION_TIME){
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_EXPIRED);
}
//校验验证码
if (!adminCodeRegister.getCode().equals(adminRegisterDTO.getCode())) {
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_ERROR);
}
//校验成功后,删除手机注册验证码信息(防止一个验证码多次注册),成功删除才能进行注册,否则提示验证码失效
HashMap<String, Object> columnMap = new HashMap<>();
columnMap.put("tel",adminRegisterDTO.getTel());
int delete = adminCodeRegisterMapper.deleteByMap(columnMap);
if (delete <= 0){
throw new BizException(HttpStatusEnum.VERIFICATION_CODE_FAILURE);
}
//根据手机号查询平台用户信息
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tel",adminRegisterDTO.getTel());
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper);
if (adminUser != null){
throw new BizException(HttpStatusEnum.TEL_REGISTERED);
}
//注册手机号
AdminUser adminUser2 = new AdminUser();
PropertyUtils.copyProperties(adminRegisterDTO,adminUser2);
adminUser2.setPassword(MD5Utils.getMD5(adminRegisterDTO.getPassword()));
adminUser2.setUserName(adminRegisterDTO.getTel());//填入账号,默认与手机号一致
adminUser2.setStatus(1);//默认为1.启用
adminUser2.setType(3);//填入用户类型3.平台入驻公司管理账号
adminUser2.setIsDelete(1);//填入是否删除1.非删
adminUser2.setDirector(adminRegisterDTO.getTel());//填入用户名称,默认与手机号一致
adminUser2.setCreateId(-1);//门户网站注册为-1
adminUser2.setCreateDate(new Date());//创建时间
adminUserMapper.insert(adminUser2);
return true;
}
@Override
public boolean quit(AdminUser adminUser) throws BizException {
//如果存在则存入登入token
if (adminUser != null){
//先根据用户id删除登录token信息【单token登录】只能一个手机登录另一个手机登录会弹掉已登录的手机用户
QueryWrapper<AdminTokenLogin> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("admin_user_id",adminUser.getId());
adminTokenLoginMapper.delete(queryWrapper3);
}else {
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
return true;
}
@Override
public boolean getManageLoginToken(Integer communityId, AdminUser adminUser, long loginToken) throws BizException {
//根据用户主键id查询所在公司
//搜索条件
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("status",2);//2.通过
//数据查询
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"公司未添加或未通过");
}
//查询该公司下是否有该小区
QueryWrapper<SysCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("company_id",sysCompany.getId());
queryWrapper2.eq("id",communityId);
SysCommunity sysCommunity = sysCommunityMapper.selectOne(queryWrapper2);
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//先查询小区内是否有该手机号已被注册
String tel = adminUser.getTel();
QueryWrapper<ManageUser> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("tel",tel);
queryWrapper3.eq("community_id",communityId);
ManageUser manageUser = manageUserMapper.selectOne(queryWrapper3);
//如果存在则存入登入token
if (manageUser == null){
//没有,则添加一个新的超级管理员账号
ManageUser manageUser2 = new ManageUser();
manageUser2.setCommunityId(communityId);
manageUser2.setUserName(tel);
manageUser2.setPassword(tel.substring(tel.length()-6,tel.length()));
manageUser2.setType(1);//1.小区超级管理员
manageUser2.setActualName(adminUser.getDirector());
manageUser2.setTel(tel);
manageUser2.setSex(3);//3.保密
manageUser2.setUserCode(UUID.randomUUID().toString().replace("-",""));
manageUser2.setStatus(1);//1.正常
manageUser2.setCreateId(-1);//创建人(-1为平台账户创建)
manageUser2.setCreateDate(new Date());
manageUserMapper.insert(manageUser2);
manageUser = manageUser2;
}
//如果有,则使用已注册的账号登录
//先根据用户id删除登录token信息【单token登录】只能一个手机登录另一个手机登录会弹掉已登录的手机用户
QueryWrapper<ManageTokenLogin> queryWrapper4 = new QueryWrapper<>();
queryWrapper4.eq("manage_user_id",manageUser.getId());
manageTokenLoginMapper.delete(queryWrapper4);
//登录
ManageTokenLogin manageTokenLogin = new ManageTokenLogin();
manageTokenLogin.setLoginSession(loginToken);
manageTokenLogin.setManageUserId(manageUser.getId());
manageTokenLogin.setLoginDate(new Date());
//将登录token存进数据库并更新时间
int insert = manageTokenLoginMapper.insert(manageTokenLogin);
return insert > 0;
}
}

@ -0,0 +1,30 @@
package com.saas.admin.provider.service.login;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.login.IAdminTokenLoginService;
import com.saas.common.exception.BizException;
import com.saas.pojo.AdminTokenLogin;
import com.saas.mapper.entity.AdminTokenLoginMapper;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
@Service(interfaceClass = IAdminTokenLoginService.class)
public class AdminTokenLoginServiceImpl implements IAdminTokenLoginService {
@Resource
AdminTokenLoginMapper adminTokenLoginMapper;
@Override
public AdminTokenLogin findByTokenId(Long tokenId) throws BizException {
QueryWrapper<AdminTokenLogin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("login_session",tokenId);
return adminTokenLoginMapper.selectOne(queryWrapper);
}
@Override
public int updateById(AdminTokenLogin tokenByTokenId) {
return adminTokenLoginMapper.updateById(tokenByTokenId);
}
}

@ -0,0 +1,20 @@
package com.saas.admin.provider.service.login;
import com.saas.api.admin.service.login.IAdminUserService;
import com.saas.common.exception.BizException;
import com.saas.pojo.AdminUser;
import com.saas.mapper.entity.AdminUserMapper;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
@Service(interfaceClass = IAdminUserService.class)
public class AdminUserServiceImpl implements IAdminUserService {
@Resource
AdminUserMapper adminUserMapper;
@Override
public AdminUser findById(Integer sysUserId) throws BizException {
return adminUserMapper.selectById(sysUserId);
}
}

@ -0,0 +1,242 @@
package com.saas.admin.provider.service.manageSetting;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.manageSetting.ISuperUserSettingService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.MD5Utils;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.check.CheckUtil;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingInsertDTO;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingListDTO;
import com.saas.dto.admin.manageSetting.ManageSuperUserSettingUpdateDTO;
import com.saas.mapper.entity.ManageUserMapper;
import com.saas.mapper.entity.SysCommunityMapper;
import com.saas.mapper.entity.SysCompanyMapper;
import com.saas.pojo.*;
import com.saas.vo.admin.manageSetting.ManageSuperUserSettingFBIVo;
import com.saas.vo.admin.manageSetting.ManageSuperUserSettingListVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service(interfaceClass = ISuperUserSettingService.class)
public class SuperUserSettingServiceImpl implements ISuperUserSettingService {
@Resource
ManageUserMapper manageUserMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Override
public PageInfo<ManageSuperUserSettingListVo> list(ManageSuperUserSettingListDTO manageSuperUserSettingListDTO, AdminUser adminUser) throws BizException {
ArrayList<ManageSuperUserSettingListVo> manageSuperUserSettingListVoList = new ArrayList<>();
QueryWrapper<ManageUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type",1);//1.小区超级管理员
queryWrapper.like(StringUtils.isNotBlank(manageSuperUserSettingListDTO.getActualName()),"actual_name",manageSuperUserSettingListDTO.getActualName());
queryWrapper.like(StringUtils.isNotBlank(manageSuperUserSettingListDTO.getUserName()),"user_name",manageSuperUserSettingListDTO.getUserName());
queryWrapper.like(StringUtils.isNotBlank(manageSuperUserSettingListDTO.getTel()),"tel",manageSuperUserSettingListDTO.getTel());
queryWrapper.orderByDesc("create_date");
//查询该平台用户下通过的公司
QueryWrapper<SysCompany> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",adminUser.getId());
queryWrapper2.eq("status",2);//2.通过
SysCompany sysCompany2 = sysCompanyMapper.selectOne(queryWrapper2);
if (sysCompany2 == null){
//封装成分页格式回显
return new PageInfo<>(1, manageSuperUserSettingListVoList,0);
}
//查询通过的公司下的小区
ArrayList<Integer> communityIds = new ArrayList<>();
QueryWrapper<SysCommunity> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany2.getId());
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper3);
if (sysCommunities != null && sysCommunities.size()>0){
for (SysCommunity sysCommunity : sysCommunities) {
communityIds.add(sysCommunity.getId());
}
}else {
//封装成分页格式回显
return new PageInfo<>(1, manageSuperUserSettingListVoList,0);
}
queryWrapper.in("community_id",communityIds);
Page<ManageUser> page = new Page<>(manageSuperUserSettingListDTO.getPageNum(), manageSuperUserSettingListDTO.getSize());
//数据查询
Page<ManageUser> manageUserPage = manageUserMapper.selectPage(page, queryWrapper);
List<ManageUser> records = manageUserPage.getRecords();
if (records != null && records.size()>0){
for (ManageUser record : records) {
ManageSuperUserSettingListVo manageSuperUserSettingListVo = new ManageSuperUserSettingListVo();
PropertyUtils.copyProperties(record,manageSuperUserSettingListVo);
//查询小区名称
SysCommunity sysCommunity = sysCommunityMapper.selectById(record.getCommunityId());
if (sysCommunity != null){
manageSuperUserSettingListVo.setCommunityName(sysCommunity.getName());
}
manageSuperUserSettingListVoList.add(manageSuperUserSettingListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(manageUserPage.getPages(), manageSuperUserSettingListVoList, manageUserPage.getTotal());
}
@Override
public boolean insert(ManageSuperUserSettingInsertDTO manageSuperUserSettingInsertDTO, AdminUser adminUser) throws BizException {
if (manageSuperUserSettingInsertDTO.getIdCard() != null){
if (!CheckUtil.checkIdCard(manageSuperUserSettingInsertDTO.getIdCard())){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"身份证格式不正确");
}
}
if (!CheckUtil.checkTel(manageSuperUserSettingInsertDTO.getTel())){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式不正确");
}
//查询手机号是否存在
QueryWrapper<ManageUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("community_id",manageSuperUserSettingInsertDTO.getCommunityId());
queryWrapper.eq("tel",manageSuperUserSettingInsertDTO.getTel());
queryWrapper.last("limit 1");
ManageUser manageUser2 = manageUserMapper.selectOne(queryWrapper);
if (manageUser2 != null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号已存在");
}
ManageUser manageUser = new ManageUser();
PropertyUtils.copyProperties(manageSuperUserSettingInsertDTO,manageUser);
manageUser.setPassword(MD5Utils.getMD5(manageSuperUserSettingInsertDTO.getPassword()));
manageUser.setType(1);//1.小区超级管理员
manageUser.setUserCode(UUID.randomUUID().toString().replace("-",""));//员工编号
manageUser.setCreateId(-adminUser.getId());//-n为平台账户创建
manageUser.setCreateDate(new Date());
manageUser.setStatus(1);//1.正常
int insert = manageUserMapper.insert(manageUser);
return insert > 0;
}
@Override
public ManageSuperUserSettingFBIVo findById(Integer manageUserId, AdminUser adminUser) throws BizException {
ManageSuperUserSettingFBIVo manageSuperUserSettingFBIVo = new ManageSuperUserSettingFBIVo();
QueryWrapper<ManageUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",manageUserId);//后台用户主键id
queryWrapper.eq("type",1);//1.小区超级管理员
//查询该平台用户下通过的公司
QueryWrapper<SysCompany> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",adminUser.getId());
queryWrapper2.eq("status",2);//2.通过
SysCompany sysCompany2 = sysCompanyMapper.selectOne(queryWrapper2);
if (sysCompany2 == null){
return manageSuperUserSettingFBIVo;
}
//查询通过的公司下的小区
ArrayList<Integer> communityIds = new ArrayList<>();
QueryWrapper<SysCommunity> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("company_id",sysCompany2.getId());
List<SysCommunity> sysCommunities = sysCommunityMapper.selectList(queryWrapper3);
if (sysCommunities != null && sysCommunities.size()>0){
for (SysCommunity sysCommunity : sysCommunities) {
communityIds.add(sysCommunity.getId());
}
}else {
return manageSuperUserSettingFBIVo;
}
queryWrapper.in("community_id",communityIds);
ManageUser manageUser = manageUserMapper.selectOne(queryWrapper);
if (manageUser != null){
PropertyUtils.copyProperties(manageUser,manageSuperUserSettingFBIVo);
//查询小区名称
SysCommunity sysCommunity = sysCommunityMapper.selectById(manageUser.getCommunityId());
if (sysCommunity != null){
manageSuperUserSettingFBIVo.setCommunityName(sysCommunity.getName());
}
}
return manageSuperUserSettingFBIVo;
}
@Override
public boolean update(ManageSuperUserSettingUpdateDTO manageSuperUserSettingUpdateDTO, AdminUser adminUser) throws BizException {
if (manageSuperUserSettingUpdateDTO.getIdCard() != null){
if (!CheckUtil.checkIdCard(manageSuperUserSettingUpdateDTO.getIdCard())){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"身份证格式不正确");
}
}
if (!CheckUtil.checkTel(manageSuperUserSettingUpdateDTO.getTel())){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号格式不正确");
}
//查询超级管理员信息
ManageUser manageUser = manageUserMapper.selectById(manageSuperUserSettingUpdateDTO.getId());
if (!manageUser.getTel().equals(manageSuperUserSettingUpdateDTO.getTel())){
//如果更换手机号则查询手机号是否存在
QueryWrapper<ManageUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("community_id",manageSuperUserSettingUpdateDTO.getCommunityId());
queryWrapper.eq("tel",manageSuperUserSettingUpdateDTO.getTel());
queryWrapper.last("limit 1");
ManageUser manageUser2 = manageUserMapper.selectOne(queryWrapper);
if (manageUser2 != null){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"手机号已存在");
}
}
PropertyUtils.copyProperties(manageSuperUserSettingUpdateDTO,manageUser);
if (manageSuperUserSettingUpdateDTO.getPassword() != null){
manageUser.setPassword(MD5Utils.getMD5(manageSuperUserSettingUpdateDTO.getPassword()));
}
manageUser.setModifyId(-adminUser.getId());
manageUser.setModifyDate(new Date());
int update = manageUserMapper.updateById(manageUser);
return update > 0;
}
@Override
public int enable(Integer manageUserId) throws BizException {
//记录当前操作1.正常2.停用
Integer status = null;
//查询当前记录状态信息
ManageUser manageUser = manageUserMapper.selectById(manageUserId);
if (manageUser == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);//当前记录不存在
}
//根据后台用户主键id修改后台用户状态
ManageUser manageUser2 = new ManageUser();
manageUser2.setId(manageUserId);
int i = 0;
if (manageUser.getStatus() != 1){
//当前记录状态如果是禁用则启用,
status = 1;//1.正常
}else {
//反之,则禁用
status = 2;//2.停用
}
//启用/禁用 当前模版
manageUser2.setStatus(status);
i =manageUserMapper.updateById(manageUser2);
//判断是否操作成功
if (i >0){
return status;
}else {
throw new BizException(HttpStatusEnum.OPERATION_FAILED);//操作失败
}
}
}

@ -0,0 +1,401 @@
package com.saas.admin.provider.service.order;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.order.IAdminFunctionOrderService;
import com.saas.common.config.AlipayConfig;
import com.saas.common.config.AlipayNotifyUrlConfig;
import com.saas.common.exception.BizException;
import com.saas.common.utils.IdCreator;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.order.*;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import com.saas.vo.admin.order.EnableChoseInfoVo;
import com.saas.vo.admin.order.EnableChoseModelVo;
import com.saas.vo.admin.order.EnableChoseTimeTypeVo;
import com.saas.vo.admin.order.AdminFunctionOrderListVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
@Service(interfaceClass = IAdminFunctionOrderService.class)
@Slf4j
public class AdminFunctionOrderServiceImpl implements IAdminFunctionOrderService {
@Resource
AdminChargingTemplateMapper adminChargingTemplateMapper;
@Resource
AdminChargingTemplateFunctionTimeTypeMapper adminCTFTMapper;
@Resource
SysMenusMapper sysMenusMapper;
@Resource
AdminChargingTimeTypeMapper adminChargingTimeTypeMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Resource
AdminFunctionOrderDetailsMapper adminFunctionOrderDetailsMapper;
@Override
public PageInfo<AdminFunctionOrderListVo> list(AdminFunctionOrderDTO adminFunctionOrderDTO) {
QueryWrapper<AdminFunctionOrderDTO> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.like(StringUtils.isNotBlank(adminFunctionOrderDTO.getCode()), "afo.code", adminFunctionOrderDTO.getCode());
queryWrapper.like(StringUtils.isNotBlank(adminFunctionOrderDTO.getName()),"sc.company_name", adminFunctionOrderDTO.getName());
queryWrapper.eq(adminFunctionOrderDTO.getIsCustomized() != null,"afo.is_customized", adminFunctionOrderDTO.getIsCustomized());
queryWrapper.eq(adminFunctionOrderDTO.getStatus() != null,"afo.status", adminFunctionOrderDTO.getStatus());
//数据分页
Page<AdminFunctionOrderDTO> page = new Page<>(adminFunctionOrderDTO.getPageNum(), adminFunctionOrderDTO.getSize());
//数据查询
IPage<AdminFunctionOrderListVo> statementsList = adminFunctionOrderMapper.findOrderList(page, queryWrapper);
List<AdminFunctionOrderListVo> statementsListRecords = statementsList.getRecords();
ArrayList<AdminFunctionOrderListVo> statementsListVoList = new ArrayList<>();
//DO 转 VO
if (statementsListRecords != null && statementsListRecords.size()>0){
for (AdminFunctionOrderListVo statementsListRecord : statementsListRecords) {
//进行Do To Vo 数据转换
AdminFunctionOrderListVo statementsListVo = new AdminFunctionOrderListVo();
PropertyUtils.copyProperties(statementsListRecord,statementsListVo);
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",statementsListRecord.getId());
ArrayList<String> includeFunctionModel = new ArrayList<>();
List<AdminFunctionOrderDetails> adminFunctionOrderDetailsList = adminFunctionOrderDetailsMapper.selectByMap(map);
if (adminFunctionOrderDetailsList != null && adminFunctionOrderDetailsList.size()>0){
for (AdminFunctionOrderDetails adminFunctionOrderDetail : adminFunctionOrderDetailsList) {
SysMenus sysMenus = sysMenusMapper.selectById(adminFunctionOrderDetail.getChargingFunctionId());
includeFunctionModel.add(sysMenus.getName());
}
}
statementsListVo.setIncludeFunctionModelList(includeFunctionModel);
statementsListVoList.add(statementsListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(statementsList.getPages(), statementsListVoList, statementsList.getTotal());
}
@Override
public EnableChoseInfoVo findEnableChoseModel(Integer id) {
EnableChoseInfoVo enableChoseInfoVo = new EnableChoseInfoVo();
//查询公司名称
QueryWrapper<SysCompany> qw = new QueryWrapper<>();
qw.eq("admin_user_id",id);
SysCompany sysCompany = sysCompanyMapper.selectOne(qw);
if (sysCompany != null){
enableChoseInfoVo.setCompanyName(sysCompany.getCompanyName());
}else {
enableChoseInfoVo.setCompanyName("暂无绑定公司");
}
//查询已开启的收费标准
//搜索条件
QueryWrapper<AdminChargingTemplate> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status",1);//1.启用
AdminChargingTemplate adminChargingTemplate = adminChargingTemplateMapper.selectOne(queryWrapper);
if (adminChargingTemplate == null){
//收费标准未开启
throw new BizException(HttpStatusEnum.CHARGING_STANDARD_NOT_ENABLED);
}
enableChoseInfoVo.setChargingTemplateId(adminChargingTemplate.getId());
//查询收费功能模块主键id
QueryWrapper<AdminChargingTemplateFunctionTimeType> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("charging_template_id",adminChargingTemplate.getId());
queryWrapper2.select("DISTINCT charging_function_id");
List<AdminChargingTemplateFunctionTimeType> chargingFunctionId = adminCTFTMapper.selectList(queryWrapper2);
//根据收费功能模块主键id查询功能模块信息
if (chargingFunctionId != null && chargingFunctionId.size() >0){
ArrayList<EnableChoseModelVo> enableChoseModelVoList = new ArrayList<>();
for (AdminChargingTemplateFunctionTimeType adminCTFT : chargingFunctionId) {
EnableChoseModelVo enableChoseModelVo = new EnableChoseModelVo();
SysMenus sysMenus = sysMenusMapper.selectById(adminCTFT.getChargingFunctionId());
enableChoseModelVo.setChargingFunctionId(sysMenus.getId());
enableChoseModelVo.setChargingFunctionName(sysMenus.getName());
enableChoseModelVoList.add(enableChoseModelVo);
}
enableChoseInfoVo.setEnableChoseModelVoList(enableChoseModelVoList);
}
//查询收费时间类型主键id
QueryWrapper<AdminChargingTemplateFunctionTimeType> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("charging_template_id",adminChargingTemplate.getId());
queryWrapper3.select("DISTINCT charging_time_type_id");
List<AdminChargingTemplateFunctionTimeType> chargingTimeTypeId = adminCTFTMapper.selectList(queryWrapper3);
//根据收费功能模块主键id查询时间类型信息
if (chargingTimeTypeId != null && chargingTimeTypeId.size() >0){
ArrayList<EnableChoseTimeTypeVo> enableChoseModelVoList = new ArrayList<>();
for (AdminChargingTemplateFunctionTimeType adminCTFT : chargingTimeTypeId) {
EnableChoseTimeTypeVo enableChoseTimeTypeVo = new EnableChoseTimeTypeVo();
AdminChargingTimeType adminChargingTimeType = adminChargingTimeTypeMapper.selectById(adminCTFT.getChargingTimeTypeId());
PropertyUtils.copyProperties(adminChargingTimeType,enableChoseTimeTypeVo);
enableChoseModelVoList.add(enableChoseTimeTypeVo);
}
enableChoseInfoVo.setEnableChoseTimeTypeVoList(enableChoseModelVoList);
}
return enableChoseInfoVo;
}
@Override
public BigDecimal calculateAmount(CalculateAmountDTO calculateAmountDTO) throws BizException {
List<Integer> modelFunctionIds = calculateAmountDTO.getModelFunctionId();
Integer timeTypeId = calculateAmountDTO.getTimeTypeId();
Integer chargingTemplateId = calculateAmountDTO.getChargingTemplateId();
//检验传入参数是否为null
if (modelFunctionIds == null || modelFunctionIds.size() <= 0 || timeTypeId == null || chargingTemplateId == null){
throw new BizException(HttpStatusEnum.MISSING_FIELD_INFO);
}
BigDecimal priceTotal = BigDecimal.ZERO;
for (Integer modelFunctionId : modelFunctionIds) {
QueryWrapper<AdminChargingTemplateFunctionTimeType> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("charging_template_id",chargingTemplateId);
queryWrapper.eq("charging_function_id",modelFunctionId);
queryWrapper.eq("charging_time_type_id",timeTypeId);
AdminChargingTemplateFunctionTimeType adminChargingTemplateFunctionTimeType = adminCTFTMapper.selectOne(queryWrapper);
priceTotal = priceTotal.add(adminChargingTemplateFunctionTimeType.getUnitPrice());
}
return priceTotal;
}
@Override
@Transactional
public Boolean adminCreateOrder(AdminCreateOrderDTO adminCreateOrderDTo, Integer id) throws BizException {
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
//如果未自定义订单号,则自动生成订单号
if (adminCreateOrderDTo.getCode() == null){
adminCreateOrderDTo.setCode(IdCreator.getId(20));
}
List<Integer> modelFunctionIds = adminCreateOrderDTo.getModelFunctionId();
Integer chargingTemplateId = adminCreateOrderDTo.getChargingTemplateId();
Integer timeTypeId = adminCreateOrderDTo.getTimeTypeId();
//判断关键字段是否存在
if (modelFunctionIds == null || modelFunctionIds.size() <= 0 || chargingTemplateId == null || timeTypeId == null){
throw new BizException(HttpStatusEnum.MISSING_FIELD_INFO);
}
//获取对应的时间类型
AdminChargingTimeType chargingTimeType = adminChargingTimeTypeMapper.selectById(timeTypeId);
if (chargingTimeType == null){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
adminFunctionOrder.setYears(chargingTimeType.getYears());//填入年数
adminFunctionOrder.setMonths(chargingTimeType.getMonths());//填入月数
adminFunctionOrder.setDays(chargingTimeType.getDays());//填入天数
adminFunctionOrder.setRemakes(chargingTimeType.getRemakes());//填入时间备注
//查询平台模版-功能-时间类型关联信息 计算出总价格
BigDecimal priceTotal = BigDecimal.ZERO;
//创建平台购买功能订单详情集合
ArrayList<AdminFunctionOrderDetails> functionOrderDetailsList = new ArrayList<>();
for (Integer modelFunctionId : modelFunctionIds) {
QueryWrapper<AdminChargingTemplateFunctionTimeType> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("charging_template_id",chargingTemplateId);
queryWrapper.eq("charging_function_id",modelFunctionId);
queryWrapper.eq("charging_time_type_id",timeTypeId);
// queryWrapper.select("isnull(sum(unit_price),0) as total");
AdminChargingTemplateFunctionTimeType adminCTFTT = adminCTFTMapper.selectOne(queryWrapper);
if (adminCTFTT == null){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
priceTotal = priceTotal.add(adminCTFTT.getUnitPrice());
//创建平台购买功能订单
AdminFunctionOrderDetails functionOrderDetails = new AdminFunctionOrderDetails();
functionOrderDetails.setUnitPrice(adminCTFTT.getUnitPrice());//添加单个价格
functionOrderDetails.setChargingFunctionId(modelFunctionId);//添加收费功能模块主键id
functionOrderDetailsList.add(functionOrderDetails);
}
//校验价格是否一致
if (priceTotal.compareTo(adminCreateOrderDTo.getPayPrice()) != 0){
throw new BizException(HttpStatusEnum.PRICE_INCONSISTENCY);
}
adminFunctionOrder.setPrice(adminCreateOrderDTo.getPayPrice());//填入价格
//填入其余参数
adminFunctionOrder.setCode(adminCreateOrderDTo.getCode());//填入订单号
adminFunctionOrder.setPayType(1);//填入支付方式,1.线下
adminFunctionOrder.setStatus(2);//填入订单状态2.交易支付成功
adminFunctionOrder.setCompanyId(adminCreateOrderDTo.getCompanyId());//填入公司主键id
adminFunctionOrder.setCommunityId(adminCreateOrderDTo.getCommunityId());//填入小区主键id
adminFunctionOrder.setDomainName(adminCreateOrderDTo.getDomainName());//填入域名域名请开放xxx端口
adminFunctionOrder.setServiceIp(adminCreateOrderDTo.getServiceIp());//填入服务器ip
adminFunctionOrder.setIsCustomized(adminCreateOrderDTo.getIsCustomized());//填入是否定制1.定制0.不定制)
adminFunctionOrder.setCustomizedDemand(adminCreateOrderDTo.getCustomizedDemand());//填入定制需求
adminFunctionOrder.setCreateId(id);//填入创建人id用户创建为-1
adminFunctionOrder.setCreateDate(new Date());//填入创建时间
//计算到期时间并写入
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR,adminFunctionOrder.getYears());//增加对应年数
cal.add(Calendar.MONTH,adminFunctionOrder.getMonths());//增加对应月数
cal.add(Calendar.DATE,adminFunctionOrder.getDays());//增加对应天数
//获取计算出的到期时间
Date time = cal.getTime();
adminFunctionOrder.setBuyingDate(date);//填入购买日期
adminFunctionOrder.setExpirationDate(time);//填入到期日期
//添加平台购买功能订单
int insert = adminFunctionOrderMapper.insert(adminFunctionOrder);
if (insert <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
//添加平台购买功能订单详情
for (AdminFunctionOrderDetails functionOrderDetails : functionOrderDetailsList) {
functionOrderDetails.setFunctionOrderId(adminFunctionOrder.getId());//填写平台购买功能订单主键id
int insert1 = adminFunctionOrderDetailsMapper.insert(functionOrderDetails);
if (insert1 <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
}
return true;
}
@Override
public boolean bindingCommunity(BindingCommunityDTO bindingCommunityDTO) throws BizException {
//校验该订单是否可以绑定该小区
//根据小区主键id查询入驻公司主键id
SysCommunity sysCommunity = sysCommunityMapper.selectById(bindingCommunityDTO.getCommunityId());
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//根据平台购买功能订单主键id查询入驻公司主键id
QueryWrapper<AdminFunctionOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",bindingCommunityDTO.getAdminFunctionOrderId());
queryWrapper.eq("status",2);//2.交易支付成功
AdminFunctionOrder adminFunctionOrder2 = adminFunctionOrderMapper.selectOne(queryWrapper);
if (adminFunctionOrder2 == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (adminFunctionOrder2.getCommunityId() != null){
throw new BizException(HttpStatusEnum.BOUND_CELL_ALREADY_EXISTS);
}
//校验入驻公司是否一致
if (!sysCommunity.getCompanyId().equals(adminFunctionOrder2.getCompanyId())){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
adminFunctionOrder.setId(bindingCommunityDTO.getAdminFunctionOrderId());
adminFunctionOrder.setCommunityId(bindingCommunityDTO.getCommunityId());
return adminFunctionOrderMapper.updateById(adminFunctionOrder) > 0;
}
@Override
public boolean userBindingCommunity(BindingCommunityDTO bindingCommunityDTO, Integer id) throws BizException {
//校验该订单是否可以绑定该小区
//根据账户主键id查询入驻公司主键id
QueryWrapper<SysCompany> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",id);
queryWrapper2.eq("status",2);//2.通过
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper2);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//根据小区主键id查询入驻公司主键id
SysCommunity sysCommunity = sysCommunityMapper.selectById(bindingCommunityDTO.getCommunityId());
if (sysCommunity == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//根据平台购买功能订单主键id查询入驻公司主键id
QueryWrapper<AdminFunctionOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",bindingCommunityDTO.getAdminFunctionOrderId());
queryWrapper.eq("status",2);//2.交易支付成功
AdminFunctionOrder adminFunctionOrder2 = adminFunctionOrderMapper.selectOne(queryWrapper);
if (adminFunctionOrder2 == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (adminFunctionOrder2.getCommunityId() != null){
throw new BizException(HttpStatusEnum.BOUND_CELL_ALREADY_EXISTS);
}
//校验入驻公司是否一致
if (!sysCompany.getId().equals(adminFunctionOrder2.getCompanyId())){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (!sysCommunity.getCompanyId().equals(adminFunctionOrder2.getCompanyId())){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
adminFunctionOrder.setId(bindingCommunityDTO.getAdminFunctionOrderId());
adminFunctionOrder.setCommunityId(bindingCommunityDTO.getCommunityId());
return adminFunctionOrderMapper.updateById(adminFunctionOrder) > 0;
}
@Override
public boolean unbindingCommunity(Integer adminFunctionOrderId) throws BizException {
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
adminFunctionOrder.setId(adminFunctionOrderId);
adminFunctionOrder.setCommunityId(null);
return adminFunctionOrderMapper.updateById(adminFunctionOrder) > 0;
}
@Override
public boolean userUnbindingCommunity(Integer adminFunctionOrderId, Integer id) {
//校验账户是否可以解绑该订单
//根据账户主键id查询入驻公司主键id
QueryWrapper<SysCompany> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("admin_user_id",id);
queryWrapper2.eq("status",2);//2.通过
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper2);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//根据平台购买功能订单主键id查询入驻公司主键id
QueryWrapper<AdminFunctionOrder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",adminFunctionOrderId);
queryWrapper.eq("status",2);//2.交易支付成功
AdminFunctionOrder adminFunctionOrder2 = adminFunctionOrderMapper.selectOne(queryWrapper);
if (adminFunctionOrder2 == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//校验入驻公司是否一致
if (!sysCompany.getId().equals(adminFunctionOrder2.getCompanyId())){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
AdminFunctionOrder adminFunctionOrder = new AdminFunctionOrder();
adminFunctionOrder.setId(adminFunctionOrderId);
adminFunctionOrder.setCommunityId(null);
return adminFunctionOrderMapper.updateById(adminFunctionOrder) > 0;
}
}

@ -0,0 +1,329 @@
package com.saas.admin.provider.service.order;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.order.IFinancialStatementsService;
import com.saas.common.config.AlipayConfig;
import com.saas.common.exception.BizException;
import com.saas.common.utils.IdWorker;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.order.FinancialStatementsDTO;
import com.saas.dto.admin.order.FinancialStatementsRefundDTO;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import com.saas.vo.admin.order.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service(interfaceClass = IFinancialStatementsService.class)
@Slf4j
public class FinancialStatementsServiceImpl implements IFinancialStatementsService {
private static StringBuilder stringBuilder = null;
@Resource
AdminFunctionOrderMapper adminFunctionOrderMapper;
@Resource
AdminFunctionOrderDetailsMapper adminFunctionOrderDetailsMapper;
@Resource
SysMenusMapper sysMenusMapper;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminUserMapper adminUserMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Resource
AdminCityMapper adminCityMapper;
@Resource
AdminFunctionOrderRefundMapper adminFunctionOrderRefundMapper;
@Override
public PageInfo<FinancialStatementsVo> list(FinancialStatementsDTO financialStatementsDTO) {
QueryWrapper<FinancialStatementsDTO> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.like(StringUtils.isNotBlank(financialStatementsDTO.getCode()), "afo.code", financialStatementsDTO.getCode());
queryWrapper.like(StringUtils.isNotBlank(financialStatementsDTO.getName()),"sc.company_name", financialStatementsDTO.getName());
queryWrapper.ge(financialStatementsDTO.getCreateDateStart() != null,"afo.create_date", financialStatementsDTO.getCreateDateStart());
queryWrapper.le(financialStatementsDTO.getCreateDateEnd() != null,"afo.create_date", financialStatementsDTO.getCreateDateEnd());
queryWrapper.ge(financialStatementsDTO.getBuyingDateStart() != null,"afo.buying_date", financialStatementsDTO.getBuyingDateStart());
queryWrapper.le(financialStatementsDTO.getBuyingDateEnd() != null,"afo.buying_date", financialStatementsDTO.getBuyingDateEnd());
queryWrapper.eq("afo.status",2);//2.交易成功
//数据分页
Page<FinancialStatementsDTO> page = new Page<>(financialStatementsDTO.getPageNum(), financialStatementsDTO.getSize());
//数据查询
IPage<FinancialStatementsVo> statementsList = adminFunctionOrderMapper.findFinancialStatementsList(page, queryWrapper);
List<FinancialStatementsVo> statementsListRecords = statementsList.getRecords();
ArrayList<FinancialStatementsVo> statementsListVoList = new ArrayList<>();
//DO 转 VO
if (statementsListRecords != null && statementsListRecords.size()>0){
for (FinancialStatementsVo statementsListRecord : statementsListRecords) {
//进行Do To Vo 数据转换
FinancialStatementsVo statementsListVo = new FinancialStatementsVo();
PropertyUtils.copyProperties(statementsListRecord,statementsListVo);
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",statementsListRecord.getId());
ArrayList<String> includeFunctionModel = new ArrayList<>();
List<AdminFunctionOrderDetails> adminFunctionOrderDetailsList = adminFunctionOrderDetailsMapper.selectByMap(map);
if (adminFunctionOrderDetailsList != null && adminFunctionOrderDetailsList.size()>0){
for (AdminFunctionOrderDetails adminFunctionOrderDetail : adminFunctionOrderDetailsList) {
SysMenus sysMenus = sysMenusMapper.selectById(adminFunctionOrderDetail.getChargingFunctionId());
includeFunctionModel.add(sysMenus.getName());
}
}
statementsListVo.setIncludeFunctionModelList(includeFunctionModel);
statementsListVoList.add(statementsListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(statementsList.getPages(), statementsListVoList, statementsList.getTotal());
}
@Override
public FinancialStatementsDetailsVo findDetails(Integer id) {
FinancialStatementsDetailsVo financialStatementsDetailsVo = new FinancialStatementsDetailsVo();
//查询订单信息
AdminFunctionOrder adminFunctionOrder = adminFunctionOrderMapper.selectById(id);
if (adminFunctionOrder == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//数据DO 转 VO
financialStatementsDetailsVo.setCode(adminFunctionOrder.getCode());//填入订单号
financialStatementsDetailsVo.setRemakes(adminFunctionOrder.getRemakes());//填入时间备注
financialStatementsDetailsVo.setPayType(adminFunctionOrder.getPayType());//填入支付方式
financialStatementsDetailsVo.setPrice(adminFunctionOrder.getPrice());//填入支付金额
financialStatementsDetailsVo.setBuyingDate(adminFunctionOrder.getBuyingDate());//填入购买日期
financialStatementsDetailsVo.setExpirationDate(adminFunctionOrder.getExpirationDate());//填入到期日期
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",id);
ArrayList<String> includeFunctionModel = new ArrayList<>();
List<AdminFunctionOrderDetails> adminFunctionOrderDetailsList = adminFunctionOrderDetailsMapper.selectByMap(map);
if (adminFunctionOrderDetailsList != null && adminFunctionOrderDetailsList.size()>0){
for (AdminFunctionOrderDetails adminFunctionOrderDetail : adminFunctionOrderDetailsList) {
SysMenus sysMenus = sysMenusMapper.selectById(adminFunctionOrderDetail.getChargingFunctionId());
includeFunctionModel.add(sysMenus.getName());
}
}
financialStatementsDetailsVo.setIncludeFunctionModelList(includeFunctionModel);//填入包含功能模块(一级)
//查询公司信息
SysCompany sysCompany = sysCompanyMapper.selectById(adminFunctionOrder.getCompanyId());
financialStatementsDetailsVo.setCompanyName(sysCompany.getCompanyName());//填入公司名称
//查询绑定账户
AdminUser adminUser = adminUserMapper.selectById(sysCompany.getAdminUserId());
financialStatementsDetailsVo.setUserName(adminUser.getUserName());//填入绑定账户
//查询绑定小区
if (adminFunctionOrder.getCommunityId() != null){
SysCommunity sysCommunity = sysCommunityMapper.selectById(adminFunctionOrder.getCommunityId());
if (sysCommunity != null){
financialStatementsDetailsVo.setCommunityName(sysCommunity.getName());
//查询城市地址
StringBuilder stringBuilder = findCityAddressDetails(true,sysCommunity.getAddress());
stringBuilder.append(sysCompany.getCompanyAddressDetail());//拼接公司详细地址
financialStatementsDetailsVo.setCommunityAddress(stringBuilder.toString());//填入公司地址
}
}
//查询退款记录
ArrayList<FinancialStatementsDetailRefundVo> statementsDetailRefundVoList = new ArrayList<>();
BigDecimal refundTotal = BigDecimal.ZERO;
QueryWrapper<AdminFunctionOrderRefund> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("function_order_id",id);
List<AdminFunctionOrderRefund> functionOrderRefundList = adminFunctionOrderRefundMapper.selectList(queryWrapper);
if (functionOrderRefundList != null && functionOrderRefundList.size()>0){
//DO 转 VO
for (AdminFunctionOrderRefund adminFunctionOrderRefund : functionOrderRefundList) {
FinancialStatementsDetailRefundVo statementsDetailRefundVo = new FinancialStatementsDetailRefundVo();
PropertyUtils.copyProperties(adminFunctionOrderRefund,statementsDetailRefundVo);
statementsDetailRefundVoList.add(statementsDetailRefundVo);//添加退款记录
refundTotal = refundTotal.add(adminFunctionOrderRefund.getPrice());//增加退款总计
}
}
financialStatementsDetailsVo.setFinancialStatementsDetailRefundVoList(statementsDetailRefundVoList);//填入财务账单details退款记录Vo
financialStatementsDetailsVo.setRefundTotal(refundTotal);//填入退款总计
return financialStatementsDetailsVo;
}
@Override
public FinancialStatementsFBIVo findById(Integer id) throws BizException {
FinancialStatementsFBIVo financialStatementsFBIVo = new FinancialStatementsFBIVo();
//查询订单信息
AdminFunctionOrder adminFunctionOrder = adminFunctionOrderMapper.selectById(id);
if (adminFunctionOrder == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//数据DO 转 VO
financialStatementsFBIVo.setId(adminFunctionOrder.getId());
financialStatementsFBIVo.setCode(adminFunctionOrder.getCode());
//查询公司信息
SysCompany sysCompany = sysCompanyMapper.selectById(adminFunctionOrder.getCompanyId());
financialStatementsFBIVo.setCompanyName(sysCompany.getCompanyName());//填入公司名称
//查询绑定小区
if (adminFunctionOrder.getCommunityId() != null){
SysCommunity sysCommunity = sysCommunityMapper.selectById(adminFunctionOrder.getCommunityId());
if (sysCommunity != null){
financialStatementsFBIVo.setCommunityName(sysCommunity.getName());
//查询城市地址
StringBuilder stringBuilder = findCityAddressDetails(true,sysCommunity.getAddress());
stringBuilder.append(sysCompany.getCompanyAddressDetail());//拼接公司详细地址
financialStatementsFBIVo.setCommunityAddress(stringBuilder.toString());//填入公司地址
}
}
//查询拥有的功能模块
//数据条件搜索
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",id);
ArrayList<ChooseFunctionModelVo> chooseFunctionModelVoList = new ArrayList<>();
List<AdminFunctionOrderDetails> adminFunctionOrderDetailsList = adminFunctionOrderDetailsMapper.selectByMap(map);
if (adminFunctionOrderDetailsList != null && adminFunctionOrderDetailsList.size()>0){
for (AdminFunctionOrderDetails adminFunctionOrderDetail : adminFunctionOrderDetailsList) {
ChooseFunctionModelVo chooseFunctionModelVo = new ChooseFunctionModelVo();
SysMenus sysMenus = sysMenusMapper.selectById(adminFunctionOrderDetail.getChargingFunctionId());
chooseFunctionModelVo.setId(sysMenus.getId());
chooseFunctionModelVo.setName(sysMenus.getName());
chooseFunctionModelVoList.add(chooseFunctionModelVo);
}
}
financialStatementsFBIVo.setChooseFunctionModelVoList(chooseFunctionModelVoList);//填入选择的功能模块信息Vo回显
return financialStatementsFBIVo;
}
@Override
@Transactional
public boolean refund(FinancialStatementsRefundDTO financialStatementsRefundDTO) throws BizException {
AdminFunctionOrderRefund adminFunctionOrderRefund = new AdminFunctionOrderRefund();
//填入条件
adminFunctionOrderRefund.setFunctionOrderId(financialStatementsRefundDTO.getFunctionOrderId());
adminFunctionOrderRefund.setChargingFunctionIds(financialStatementsRefundDTO.getChargingFunctionIds());
adminFunctionOrderRefund.setPrice(financialStatementsRefundDTO.getPrice());
adminFunctionOrderRefund.setReason(financialStatementsRefundDTO.getReason());
adminFunctionOrderRefund.setType(financialStatementsRefundDTO.getType());
adminFunctionOrderRefund.setRefundDate(new Date());
String out_request_no= String.valueOf(new IdWorker(1,1,1).nextId());//随机数[退款单号] 不是全额退款,部分退款必须使用该参数
adminFunctionOrderRefund.setCode(out_request_no);
int insert = adminFunctionOrderRefundMapper.insert(adminFunctionOrderRefund);
if (insert <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
//平台购买功能订单主键id
Integer functionOrderId = financialStatementsRefundDTO.getFunctionOrderId();
//收费功能模块主键id
String chargingFunctionIds = financialStatementsRefundDTO.getChargingFunctionIds();
String[] split = chargingFunctionIds.split(",");
if (split.length <= 0){
throw new BizException(HttpStatusEnum.MISSING_FIELD_INFO);
}
//循环删除订单中对应退款的模块
for (String s : split) {
HashMap<String, Object> map = new HashMap<>();
map.put("function_order_id",functionOrderId);
map.put("charging_function_id",Integer.valueOf(s));
int i = adminFunctionOrderDetailsMapper.deleteByMap(map);
if (i <= 0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"该模块退款失败");
}
}
//查询订单信息
AdminFunctionOrder adminFunctionOrder = adminFunctionOrderMapper.selectById(financialStatementsRefundDTO.getFunctionOrderId());
if (adminFunctionOrder == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//修改套餐价格
BigDecimal price = adminFunctionOrder.getPrice();//套餐金额
BigDecimal refundPrice = financialStatementsRefundDTO.getPrice();//退款金额
if (price.compareTo(refundPrice) <= 0){
throw new BizException(HttpStatusEnum.OPERATION_FAILED);//金额不足
}
adminFunctionOrder.setPrice(price.subtract(refundPrice));//填入退款后的套餐金额
adminFunctionOrderMapper.updateById(adminFunctionOrder);//修改套餐价格
//判断是线上还是线下,如果线上则进行线上支付宝或微信退款
if (financialStatementsRefundDTO.getType() ==2){//2.支付宝
//支付宝退款
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.ALIPAY_GATEWAY, AlipayConfig.ALIPAY_APP_ID, AlipayConfig.RSA_PRIVAT_KEY, AlipayConfig.ALIPAY_FORMAT, AlipayConfig.ALIPAY_CHARSET, AlipayConfig.RSA_ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizContent("{" +
"\"out_trade_no\":\"" + adminFunctionOrder.getCode() + "\"," +
"\"trade_no\":" + null + "," +
"\"refund_amount\":\"" + financialStatementsRefundDTO.getPrice() + "\"," +
"\"out_request_no\":\"" + out_request_no+ "\"," +
"\"refund_reason\":\"正常退款\"" +
" }");
AlipayTradeRefundResponse response;
try {
response = alipayClient.execute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
throw new BizException(HttpStatusEnum.OPERATION_FAILED);
}
if (response.isSuccess()) {
log.info("支付宝退款成功");
} else {
log.info(response.getSubMsg());//失败会记录错误信息
throw new BizException(HttpStatusEnum.ALIPAY_REFUND_FAILED);
}
}else if (financialStatementsRefundDTO.getType() == 1){//1.线下
log.info("线下退款成功");
}else {
throw new BizException(HttpStatusEnum.NOT_CHOOSE_PAY_TYPE);
}
return true;
}
/**
*
* @param isCreate StringBuild
* @param cityAddress Id
* @return StringBuild
*/
private StringBuilder findCityAddressDetails(boolean isCreate,Integer cityAddress) {
if (isCreate){
//创建StringBuild对象
stringBuilder = new StringBuilder();
}
AdminCity adminCity = adminCityMapper.selectById(cityAddress);
if (adminCity.getParentId() != 0){
findCityAddressDetails(false,adminCity.getParentId());//后续循环不需要创建StringBuild对象
stringBuilder.append(adminCity.getName()).append(" ");//拼接公司省县市地址
}
return stringBuilder;
}
}

@ -0,0 +1,281 @@
package com.saas.admin.provider.service.paySetting;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.api.admin.service.paySetting.IAlipaySettingService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.paySetting.AlipaySettingBindDTO;
import com.saas.dto.admin.paySetting.AlipaySettingInsertDTO;
import com.saas.dto.admin.paySetting.AlipaySettingListDTO;
import com.saas.dto.admin.paySetting.AlipaySettingUpdateDTO;
import com.saas.mapper.entity.AdminAlipaySettingBindMapper;
import com.saas.mapper.entity.AdminAlipaySettingMapper;
import com.saas.mapper.entity.SysCommunityMapper;
import com.saas.pojo.AdminAlipaySetting;
import com.saas.pojo.AdminAlipaySettingBind;
import com.saas.pojo.AdminUser;
import com.saas.pojo.SysCommunity;
import com.saas.vo.admin.paySetting.AlipaySettingFBBIVo;
import com.saas.vo.admin.paySetting.AlipaySettingFIBIVo;
import com.saas.vo.admin.paySetting.AlipaySettingListCommunityListVo;
import com.saas.vo.admin.paySetting.AlipaySettingListVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service(interfaceClass = IAlipaySettingService.class)
public class AlipaySettingServiceImpl implements IAlipaySettingService {
@Resource
AdminAlipaySettingMapper adminAlipaySettingMapper;
@Resource
AdminAlipaySettingBindMapper adminAlipaySettingBindMapper;
@Resource
SysCommunityMapper sysCommunityMapper;
@Override
public PageInfo<AlipaySettingListVo> list(AlipaySettingListDTO alipaySettingListDTO, AdminUser adminUser) throws BizException {
ArrayList<AlipaySettingListVo> alipaySettingListVoList = new ArrayList<>();
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.like(StringUtils.isNotBlank(alipaySettingListDTO.getName()),"name", alipaySettingListDTO.getName());
//数据分页
Page<AdminAlipaySetting> page = new Page<>(alipaySettingListDTO.getPageNum(), alipaySettingListDTO.getSize());
//数据查询
Page<AdminAlipaySetting> adminAlipaySettingPage = adminAlipaySettingMapper.selectPage(page, queryWrapper);
List<AdminAlipaySetting> records = adminAlipaySettingPage.getRecords();
if (records != null && records.size()>0){
for (AdminAlipaySetting adminAlipaySetting : records) {
AlipaySettingListVo alipaySettingListVo = new AlipaySettingListVo();
PropertyUtils.copyProperties(adminAlipaySetting, alipaySettingListVo);
ArrayList<AlipaySettingListCommunityListVo> alipaySettingListCommunityListVos = new ArrayList<>();
//查询绑定小区列表
QueryWrapper<AdminAlipaySettingBind> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("alipay_setting_id",adminAlipaySetting.getId());
List<AdminAlipaySettingBind> adminAlipaySettingBinds = adminAlipaySettingBindMapper.selectList(queryWrapper2);
if (adminAlipaySettingBinds != null && adminAlipaySettingBinds.size()>0){
for (AdminAlipaySettingBind adminAlipaySettingBind : adminAlipaySettingBinds) {
SysCommunity sysCommunity = sysCommunityMapper.selectById(adminAlipaySettingBind.getCommunityId());
if (sysCommunity != null){
AlipaySettingListCommunityListVo alipaySettingListCommunityListVo = new AlipaySettingListCommunityListVo();
PropertyUtils.copyProperties(sysCommunity, alipaySettingListCommunityListVo);
alipaySettingListCommunityListVos.add(alipaySettingListCommunityListVo);
}
}
}
alipaySettingListVo.setCommunityList(alipaySettingListCommunityListVos);
alipaySettingListVoList.add(alipaySettingListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(adminAlipaySettingPage.getPages(), alipaySettingListVoList, adminAlipaySettingPage.getTotal());
}
@Override
public boolean insert(AlipaySettingInsertDTO alipaySettingInsertDTO, AdminUser adminUser) throws BizException {
AdminAlipaySetting adminAlipaySetting = new AdminAlipaySetting();
PropertyUtils.copyProperties(alipaySettingInsertDTO,adminAlipaySetting);
adminAlipaySetting.setAdminUserId(adminUser.getId());
adminAlipaySetting.setStatus(2);//2.停用
int insert = adminAlipaySettingMapper.insert(adminAlipaySetting);
return insert > 0;
}
@Override
@Transactional
public boolean bind(AlipaySettingBindDTO alipaySettingBindDTO, AdminUser adminUser) throws BizException {
//查询支付宝设置信息
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("id",alipaySettingBindDTO.getAlipaySettingId());
AdminAlipaySetting adminAlipaySetting = adminAlipaySettingMapper.selectOne(queryWrapper);
if (adminAlipaySetting == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (adminAlipaySetting.getStatus() == 1){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"支付宝设置已启用,不可绑定小区");
}
//删除该支付宝设置的所有绑定小区
QueryWrapper<AdminAlipaySettingBind> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("alipay_setting_id",alipaySettingBindDTO.getAlipaySettingId());
adminAlipaySettingBindMapper.delete(queryWrapper2);
//为该支付宝设置绑定小区
for (int communityId : alipaySettingBindDTO.getCommunityIds()) {
AdminAlipaySettingBind adminAlipaySettingBind = new AdminAlipaySettingBind();
adminAlipaySettingBind.setCommunityId(communityId);
adminAlipaySettingBind.setAlipaySettingId(alipaySettingBindDTO.getAlipaySettingId());
adminAlipaySettingBind.setStatus(2);//2.停用
int insert = adminAlipaySettingBindMapper.insert(adminAlipaySettingBind);
if (insert <= 0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"支付宝设置绑定小区失败");
}
}
return true;
}
@Override
public AlipaySettingFIBIVo findInfoById(Integer alipaySettingId, AdminUser adminUser) throws BizException {
AlipaySettingFIBIVo alipaySettingFIBIVo = new AlipaySettingFIBIVo();
//查询支付宝设置信息
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("id",alipaySettingId);
AdminAlipaySetting adminAlipaySetting = adminAlipaySettingMapper.selectOne(queryWrapper);
if (adminAlipaySetting == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
PropertyUtils.copyProperties(adminAlipaySetting,alipaySettingFIBIVo);
return alipaySettingFIBIVo;
}
@Override
public AlipaySettingFBBIVo findBindById(Integer alipaySettingId, AdminUser adminUser) throws BizException {
AlipaySettingFBBIVo alipaySettingFBBIVo = new AlipaySettingFBBIVo();
ArrayList<Integer> communityIds = new ArrayList<>();
//查询支付宝绑定设置信息
QueryWrapper<AdminAlipaySettingBind> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alipay_setting_id",alipaySettingId);
List<AdminAlipaySettingBind> adminAlipaySettingBinds = adminAlipaySettingBindMapper.selectList(queryWrapper);
if (adminAlipaySettingBinds != null && adminAlipaySettingBinds.size()>0){
for (AdminAlipaySettingBind adminAlipaySettingBind : adminAlipaySettingBinds) {
communityIds.add(adminAlipaySettingBind.getCommunityId());
}
}
alipaySettingFBBIVo.setCommunityIds(communityIds);
return alipaySettingFBBIVo;
}
@Override
public boolean update(AlipaySettingUpdateDTO alipaySettingUpdateDTO, AdminUser adminUser) throws BizException {
//查询支付宝设置信息
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("id",alipaySettingUpdateDTO.getId());
AdminAlipaySetting adminAlipaySetting = adminAlipaySettingMapper.selectOne(queryWrapper);
if (adminAlipaySetting == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (adminAlipaySetting.getStatus() == 1){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"支付宝设置已启用,不可修改支付宝信息");
}
PropertyUtils.copyProperties(alipaySettingUpdateDTO,adminAlipaySetting);
int update = adminAlipaySettingMapper.updateById(adminAlipaySetting);
return update > 0;
}
@Override
@Transactional
public boolean delete(int[] alipaySettingIds, AdminUser adminUser) throws BizException {
for (int alipaySettingId : alipaySettingIds) {
//查询支付宝设置信息
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("id",alipaySettingId);
AdminAlipaySetting adminAlipaySetting = adminAlipaySettingMapper.selectOne(queryWrapper);
if (adminAlipaySetting == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (adminAlipaySetting.getStatus() == 1){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"支付宝设置已启用,不可删除");
}
//删除该支付宝设置的所有绑定小区
QueryWrapper<AdminAlipaySettingBind> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("alipay_setting_id",alipaySettingId);
adminAlipaySettingBindMapper.delete(queryWrapper2);
//删除支付宝设置信息
int delete = adminAlipaySettingMapper.deleteById(alipaySettingId);
if (delete <= 0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"删除支付宝设置失败");
}
}
return true;
}
@Override
@Transactional
public int isEnable(Integer alipaySettingId, AdminUser adminUser) throws BizException {
//记录当前操作1.启用2.禁用
Integer status = null;
//查询支付宝设置信息
QueryWrapper<AdminAlipaySetting> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUser.getId());
queryWrapper.eq("id",alipaySettingId);
AdminAlipaySetting adminAlipaySetting = adminAlipaySettingMapper.selectOne(queryWrapper);
if (adminAlipaySetting == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
//根据支付宝设置主键id修改支付宝设置
int i = 0;
if (adminAlipaySetting.getStatus() != 1){
//启用时查询绑定小区是否有启用的支付设置
//查询绑定小区
QueryWrapper<AdminAlipaySettingBind> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("alipay_setting_id",alipaySettingId);
List<AdminAlipaySettingBind> adminAlipaySettingBinds = adminAlipaySettingBindMapper.selectList(queryWrapper2);
if (adminAlipaySettingBinds != null && adminAlipaySettingBinds.size() >0){
for (AdminAlipaySettingBind adminAlipaySettingBind : adminAlipaySettingBinds) {
//查询该绑定小区是否已有启用的支付设置
QueryWrapper<AdminAlipaySettingBind> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("community_id",adminAlipaySettingBind.getCommunityId());
queryWrapper3.eq("status",1);
List<AdminAlipaySettingBind> adminAlipaySettingBinds2 = adminAlipaySettingBindMapper.selectList(queryWrapper3);
if (adminAlipaySettingBinds2 != null && adminAlipaySettingBinds2.size()>0){
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"存在小区支付宝设置冲突,请排除冲突小区");
}
}
}
//当前记录状态如果是禁用则启用,
status = 1;//1.启用
}else {
//反之,则禁用
status = 2;//2.禁用
}
//启用/禁用 当前模版
adminAlipaySetting.setStatus(status);
i = adminAlipaySettingMapper.updateById(adminAlipaySetting);
//修改支付宝设置绑定小区状态
LambdaUpdateWrapper<AdminAlipaySettingBind> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(AdminAlipaySettingBind::getStatus,status);
updateWrapper.eq(AdminAlipaySettingBind::getAlipaySettingId,alipaySettingId);
adminAlipaySettingBindMapper.update(null, updateWrapper);
//判断是否操作成功
if (i >0){
return status;
}else {
throw new BizException(HttpStatusEnum.OPERATION_FAILED);//操作失败
}
}
}

@ -0,0 +1,225 @@
package com.saas.admin.provider.service.settled;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.admin.provider.utils.upload.AdminUploadToDbUtil;
import com.saas.api.admin.service.settled.ISettledApplicationService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.result.Result;
import com.saas.dto.admin.settled.SettledApplicationInsertDTO;
import com.saas.dto.admin.settled.SettledApplicationIsPassDTO;
import com.saas.dto.admin.settled.SettledApplicationListDTO;
import com.saas.mapper.entity.AdminCityMapper;
import com.saas.mapper.entity.AdminUserMapper;
import com.saas.pojo.AdminCity;
import com.saas.pojo.AdminUser;
import com.saas.pojo.SysCompany;
import com.saas.vo.admin.settled.SettledApplicationDetailsVo;
import com.saas.vo.admin.settled.SettledApplicationListVo;
import com.saas.mapper.entity.SysCompanyMapper;
import com.saas.vo.admin.upload.ResourcesImgAdminVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service(interfaceClass = ISettledApplicationService.class)
public class SettledApplicationServiceImpl implements ISettledApplicationService {
private static StringBuilder stringBuilder = null;
@Resource
SysCompanyMapper sysCompanyMapper;
@Resource
AdminUserMapper adminUserMapper;
@Resource
AdminCityMapper adminCityMapper;
@Override
public PageInfo<SettledApplicationListVo> list(SettledApplicationListDTO settledApplicationListDTO) {
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
//数据条件搜索
queryWrapper.like(StringUtils.isNotBlank(settledApplicationListDTO.getCompanyName()),"company_name",settledApplicationListDTO.getCompanyName());
queryWrapper.like(settledApplicationListDTO.getStatus() != null,"status",settledApplicationListDTO.getStatus());
queryWrapper.orderByAsc("status");
queryWrapper.orderByDesc("create_date");
//数据分页
Page<SysCompany> page = new Page<>(settledApplicationListDTO.getPageNum(), settledApplicationListDTO.getSize());
//数据查询
Page<SysCompany> companyPage = sysCompanyMapper.selectPage(page, queryWrapper);
List<SysCompany> companyList = companyPage.getRecords();
//进行Do To Vo 数据转换
ArrayList<SettledApplicationListVo> settledApplicationListVos = new ArrayList<>();
for (SysCompany sysCompany : companyList) {
SettledApplicationListVo settledApplicationListVo = new SettledApplicationListVo();
PropertyUtils.copyProperties(sysCompany,settledApplicationListVo);
settledApplicationListVos.add(settledApplicationListVo);
}
//封装成分页格式回显
return new PageInfo<>(companyPage.getPages(), settledApplicationListVos, companyPage.getTotal());
}
@Override
@Transactional
public boolean insert(SettledApplicationInsertDTO settledApplicationInsertDTO,Integer adminUserId) {
//TODO 校验验证码
//查询是否有未处理或通过的入驻公司申请
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("admin_user_id",adminUserId);
queryWrapper.in("status",1,2);
List<SysCompany> sysCompanies = sysCompanyMapper.selectList(queryWrapper);
if (sysCompanies != null && sysCompanies.size()>0){
throw new BizException(HttpStatusEnum.COMPANY_INFORMATION_ENTERED);
}
SysCompany sysCompany = new SysCompany();
PropertyUtils.copyProperties(settledApplicationInsertDTO,sysCompany);
sysCompany.setStatus(1);//填入状态1.待确认
sysCompany.setAdminUserId(adminUserId);//填入平台账号主键id
sysCompany.setCreateId(adminUserId);//填入创建人主键id
sysCompany.setCreateDate(new Date());//填入创建时间
int insert = sysCompanyMapper.insert(sysCompany);
if (insert <= 0){
return false;
}
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
//添加身份证正面到数据库
adminUploadToDbUtil.saveUrlToDB(settledApplicationInsertDTO.getIdCardFrontImgUrls(),"sys_company",sysCompany.getId(),"idCardFront");
//添加身份证背面到数据库
adminUploadToDbUtil.saveUrlToDB(settledApplicationInsertDTO.getIdCardBackImgUrls(),"sys_company",sysCompany.getId(),"idCardBack");
//添加公司营业执照到数据库
adminUploadToDbUtil.saveUrlToDB(settledApplicationInsertDTO.getBusinessLicenseImgUrls(),"sys_company",sysCompany.getId(),"businessLicense");
//添加其他附件到数据库
adminUploadToDbUtil.saveUrlToDB(settledApplicationInsertDTO.getOthersImgUrls(),"sys_company",sysCompany.getId(),"others");
return true;
}
@Override
public boolean isPass(SettledApplicationIsPassDTO settledApplicationIsPassDTO) {
//查询入驻申请信息
SysCompany sysCompany = sysCompanyMapper.selectById(settledApplicationIsPassDTO.getId());
if (sysCompany.getStatus() != 1){
return false;
}
SysCompany sysCompany2 = new SysCompany();
if (settledApplicationIsPassDTO.getStatus() == 1){
//查询该平台账号下是否已有通过的入驻公司信息
//搜索条件
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status",2);//2.通过
queryWrapper.eq("admin_user_id",sysCompany.getAdminUserId());
//数据查询
SysCompany sysCompany1 = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany1 != null){
throw new BizException(HttpStatusEnum.COMPANY_INFORMATION_ENTERED);
}
sysCompany2.setStatus(2);//填入状态2.确认
}else if (settledApplicationIsPassDTO.getStatus() == 2){
sysCompany2.setStatus(3);//填入状态3.驳回
}else {
return false;
}
//搜索条件
sysCompany2.setId(settledApplicationIsPassDTO.getId());//填入入驻申请主键id
sysCompany2.setReviewRemakes(settledApplicationIsPassDTO.getReviewRemakes());//填入审核留言
//修改公司状态信息
int i = sysCompanyMapper.updateById(sysCompany2);
if (i <=0 ){
return false;
}
return true;
}
@Override
public SettledApplicationDetailsVo findDetailsById(Integer id) {
SettledApplicationDetailsVo settledApplicationDetailsVo = new SettledApplicationDetailsVo();
//查询入驻申请信息
SysCompany sysCompany = sysCompanyMapper.selectById(id);
if (sysCompany == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
AdminUser adminUser = adminUserMapper.selectById(sysCompany.getAdminUserId());
if (adminUser == null){
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
//填入关联账号
settledApplicationDetailsVo.setAssociatedAccount(adminUser.getUserName());
//DO 转 VO
PropertyUtils.copyProperties(sysCompany,settledApplicationDetailsVo);
//查询城市地址
StringBuilder stringBuilder = findCityAddressDetails(true,sysCompany.getCompanyAddress());
stringBuilder.append(sysCompany.getCompanyAddressDetail());//拼接公司详细地址
settledApplicationDetailsVo.setCompanyAddressDetails(stringBuilder.toString());//填入公司地址
//查询联系人地址
StringBuilder stringBuilder2 = findCityAddressDetails(true,sysCompany.getContactsAddress());
stringBuilder2.append(sysCompany.getContactsAddressDetail());//拼接联系人详细地址
settledApplicationDetailsVo.setContactsAddressDetails(stringBuilder2.toString());//填入联系人地址
//查询照片信息
AdminUploadToDbUtil adminUploadToDbUtil = new AdminUploadToDbUtil();
//查询身份证正面集合信息
List<ResourcesImgAdminVo> imgByDate = adminUploadToDbUtil.findImgByDate("sys_company", id, "idCardFront");
settledApplicationDetailsVo.setIdCardFrontImgList(imgByDate);
//身份证背面集合信息
List<ResourcesImgAdminVo> imgByDate2 = adminUploadToDbUtil.findImgByDate("sys_company", id, "idCardBack");
settledApplicationDetailsVo.setIdCardBackImgList(imgByDate2);
//公司营业执照集合信息
List<ResourcesImgAdminVo> imgByDate3 = adminUploadToDbUtil.findImgByDate("sys_company", id, "businessLicense");
settledApplicationDetailsVo.setBusinessLicenseImgList(imgByDate3);
//其他附件集合信息
List<ResourcesImgAdminVo> imgByDate4 = adminUploadToDbUtil.findImgByDate("sys_company", id, "others");
settledApplicationDetailsVo.setOthersImgList(imgByDate4);
return settledApplicationDetailsVo;
}
@Override
public String checkCompanyName(String companyName, AdminUser adminUser) throws BizException {
if (!StringUtils.isNotBlank(companyName)){
return "公司名不可为空";
}
QueryWrapper<SysCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("company_name",companyName);
SysCompany sysCompany = sysCompanyMapper.selectOne(queryWrapper);
if (sysCompany != null){
return "该企业已入驻";
}
return "请求成功";
}
/**
*
* @param isCreate StringBuild
* @param cityAddress Id
* @return StringBuild
*/
private StringBuilder findCityAddressDetails(boolean isCreate,Integer cityAddress) {
if (isCreate){
//创建StringBuild对象
stringBuilder = new StringBuilder();
}
AdminCity adminCity = adminCityMapper.selectById(cityAddress);
if (adminCity.getParentId() != 0){
findCityAddressDetails(false,adminCity.getParentId());//后续循环不需要创建StringBuild对象
stringBuilder.append(adminCity.getName()).append(" ");//拼接公司省县市地址
}
return stringBuilder;
}
}

@ -0,0 +1,282 @@
package com.saas.admin.provider.service.storeAudit;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.admin.provider.utils.upload.MerchantUploadToDbUtil;
import com.saas.api.admin.service.storeAudit.IStoreAuditService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.page.PageInfo;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.dto.admin.storeAudit.StoreAuditExamineDTO;
import com.saas.dto.admin.storeAudit.StoreAuditListDTO;
import com.saas.mapper.entity.*;
import com.saas.pojo.*;
import com.saas.vo.admin.storeAudit.StoreAuditListVo;
import com.saas.vo.merchant.authentication.*;
import com.saas.vo.merchant.upload.ResourcesImgMerchantVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@Service(interfaceClass = IStoreAuditService.class)
public class StoreAuditServiceImpl implements IStoreAuditService {
@Resource
MerchantShopMapper merchantShopMapper;
@Resource
MerchantShopCategoryMapper merchantShopCategoryMapper;
@Resource
MerchantCategoryMapper merchantCategoryMapper;
@Resource
MerchantShopPersonalInfoMapper merchantShopPersonalInfoMapper;
@Resource
MerchantShopOperateInfoMapper merchantShopOperateInfoMapper;
@Resource
MerchantCategoryQualificationMapper merchantCategoryQualificationMapper;
@Resource
MerchantShopCategoryQualificationMapper merchantShopCategoryQualificationMapper;
@Resource
MerchantCategoryQualificationLinkMapper merchantCategoryQualificationLinkMapper;
@Override
public PageInfo<StoreAuditListVo> list(StoreAuditListDTO storeAuditListDTO) throws BizException {
ArrayList<StoreAuditListVo> storeAuditListVoList = new ArrayList<>();
QueryWrapper<MerchantShop> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(storeAuditListDTO.getCode()),"code",storeAuditListDTO.getCode());
queryWrapper.like(StringUtils.isNotBlank(storeAuditListDTO.getName()),"name",storeAuditListDTO.getName());
queryWrapper.like(StringUtils.isNotBlank(storeAuditListDTO.getAccount()),"account",storeAuditListDTO.getAccount());
queryWrapper.eq(storeAuditListDTO.getType() != null,"type",storeAuditListDTO.getType());
queryWrapper.like(StringUtils.isNotBlank(storeAuditListDTO.getCompanyName()),"company_name",storeAuditListDTO.getCompanyName());
queryWrapper.le(storeAuditListDTO.getUpdateDateStart() != null,"update_date",storeAuditListDTO.getUpdateDateStart());
queryWrapper.ge(storeAuditListDTO.getUpdateDateEnd() != null,"update_date",storeAuditListDTO.getUpdateDateEnd());
//数据分页
Page<MerchantShop> page = new Page<>(storeAuditListDTO.getPageNum(), storeAuditListDTO.getSize());
//数据查询
Page<MerchantShop> merchantShopPage = merchantShopMapper.selectPage(page, queryWrapper);
List<MerchantShop> records = merchantShopPage.getRecords();
if (records != null && records.size() >0){
for (MerchantShop merchantShop : records) {
StoreAuditListVo storeAuditListVo = new StoreAuditListVo();
PropertyUtils.copyProperties(merchantShop,storeAuditListVo);
ArrayList<String> categoryNameList = new ArrayList<>();
//查询该店铺的经营类目
QueryWrapper<MerchantShopCategory> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("shop_id",merchantShop.getId());
List<MerchantShopCategory> merchantShopCategories = merchantShopCategoryMapper.selectList(queryWrapper2);
if (merchantShopCategories != null && merchantShopCategories.size()>0){
for (MerchantShopCategory merchantShopCategory : merchantShopCategories) {
String parenPath = findParenPath(merchantShopCategory.getCategoryId());
if (parenPath != null){
categoryNameList.add(parenPath);
}
}
}
storeAuditListVo.setCategoryNameList(categoryNameList);
storeAuditListVoList.add(storeAuditListVo);
}
}
//封装成分页格式回显
return new PageInfo<>(merchantShopPage.getPages(), storeAuditListVoList, merchantShopPage.getTotal());
}
@Override
public AuthenticationVo detail(Integer merchantShopId) throws BizException {
AuthenticationVo authenticationVo = new AuthenticationVo();
MerchantShop merchantShop = merchantShopMapper.selectById(merchantShopId);
if (merchantShop == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
PropertyUtils.copyProperties(merchantShop,authenticationVo);
//上传照片
MerchantUploadToDbUtil merchantUploadToDbUtil = new MerchantUploadToDbUtil();
List<ResourcesImgMerchantVo> imgByDate = merchantUploadToDbUtil.findImgByDate("merchantShop", merchantShopId, "usccImg");
authenticationVo.setUsccImgList(imgByDate);
List<ResourcesImgMerchantVo> imgByDate2 = merchantUploadToDbUtil.findImgByDate("merchantShop", merchantShopId, "otherImg");
authenticationVo.setOtherImgList(imgByDate2);
//查询个人信息
AuthenticationPersonalInfoVo authenticationPersonalInfoVo = new AuthenticationPersonalInfoVo();
QueryWrapper<MerchantShopPersonalInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("shop_id",merchantShopId);
MerchantShopPersonalInfo merchantShopPersonalInfo = merchantShopPersonalInfoMapper.selectOne(queryWrapper);
if (merchantShopPersonalInfo != null){
PropertyUtils.copyProperties(merchantShopPersonalInfo,authenticationPersonalInfoVo);
List<ResourcesImgMerchantVo> imgByDate3 = merchantUploadToDbUtil.findImgByDate("merchantShopPersonalInfo", merchantShopPersonalInfo.getId(), "handheldIdCardImg");
authenticationPersonalInfoVo.setHandheldIdCardImgList(imgByDate3);
List<ResourcesImgMerchantVo> imgByDate4 = merchantUploadToDbUtil.findImgByDate("merchantShopPersonalInfo", merchantShopPersonalInfo.getId(), "idCardFrontImg");
authenticationPersonalInfoVo.setIdCardFrontImgList(imgByDate4);
List<ResourcesImgMerchantVo> imgByDate5 = merchantUploadToDbUtil.findImgByDate("merchantShopPersonalInfo", merchantShopPersonalInfo.getId(), "idCardBackImg");
authenticationPersonalInfoVo.setIdCardBackImgList(imgByDate5);
}
authenticationVo.setAuthenticationPersonalInfoVo(authenticationPersonalInfoVo);
//查询经营信息
AuthenticationOperateInfoVo authenticationOperateInfoVo = new AuthenticationOperateInfoVo();
QueryWrapper<MerchantShopOperateInfo> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("shop_id",merchantShopId);
MerchantShopOperateInfo merchantShopOperateInfo = merchantShopOperateInfoMapper.selectOne(queryWrapper2);
if (merchantShopOperateInfo != null){
PropertyUtils.copyProperties(merchantShopOperateInfo,authenticationOperateInfoVo);
List<ResourcesImgMerchantVo> imgByDate6 = merchantUploadToDbUtil.findImgByDate("merchantShopOperateInfo", merchantShopOperateInfo.getId(), "doorHeadImg");
authenticationOperateInfoVo.setDoorHeadImgList(imgByDate6);
List<ResourcesImgMerchantVo> imgByDate7 = merchantUploadToDbUtil.findImgByDate("merchantShopOperateInfo", merchantShopOperateInfo.getId(), "indoorSceneImg");
authenticationOperateInfoVo.setIndoorSceneImgList(imgByDate7);
List<ResourcesImgMerchantVo> imgByDate8 = merchantUploadToDbUtil.findImgByDate("merchantShopOperateInfo", merchantShopOperateInfo.getId(), "cashierImg");
authenticationOperateInfoVo.setCashierImgList(imgByDate8);
List<ResourcesImgMerchantVo> imgByDate9 = merchantUploadToDbUtil.findImgByDate("merchantShopOperateInfo", merchantShopOperateInfo.getId(), "otherImg");
authenticationOperateInfoVo.setOtherImgList(imgByDate9);
}
HashMap<Integer, ArrayList<AuthenticationOperateInfoCategoryVo>> map = new HashMap<>();
//查询经营类目
ArrayList<AuthenticationOperateInfoCategoryVo> categoryVoList = new ArrayList<>();
QueryWrapper<MerchantShopCategory> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("shop_id",merchantShopId);
List<MerchantShopCategory> merchantShopCategories = merchantShopCategoryMapper.selectList(queryWrapper3);
if (merchantShopCategories != null && merchantShopCategories.size()>0){
for (MerchantShopCategory merchantShopCategory : merchantShopCategories) {
//根据主键id查询经营类目信息
MerchantCategory merchantCategory = merchantCategoryMapper.selectById(merchantShopCategory.getCategoryId());
if (merchantCategory != null){
//对经营类目按父类进行分类以便后续资质显示
ArrayList<AuthenticationOperateInfoCategoryVo> list;
if (map.containsKey(merchantCategory.getParentId())){
list = map.get(merchantCategory.getParentId());
}else {
list = new ArrayList<>();
}
AuthenticationOperateInfoCategoryVo categoryVo1 = new AuthenticationOperateInfoCategoryVo();
categoryVo1.setId(merchantCategory.getId());
categoryVo1.setName(merchantCategory.getName());
categoryVo1.setRemake(merchantCategory.getRemake());
categoryVo1.setShowNoQualChoose(merchantCategory.getShowNoQualChoose());
list.add(categoryVo1);
//按一级类进行分组(分类总共二级)
map.put(merchantCategory.getParentId(),list);
categoryVoList.add(categoryVo1);
}
}
}
authenticationOperateInfoVo.setCategoryList(categoryVoList);
ArrayList<AuthenticationQualificationVo> authenticationQualificationVos = new ArrayList<>();
for(Integer key:map.keySet()){
AuthenticationQualificationVo authenticationQualificationVo = new AuthenticationQualificationVo();
ArrayList<AuthenticationOperateInfoCategoryVo> operateInfoCategoryVoList = map.get(key);
//经营类目集合
authenticationQualificationVo.setCategoryList(operateInfoCategoryVoList);
HashSet<String> descList = new HashSet<>();
ArrayList<Integer> categoryIds = new ArrayList<>();
int showNoQualChoose = 0;
for (AuthenticationOperateInfoCategoryVo categoryVo : operateInfoCategoryVoList) {
descList.add(categoryVo.getRemake());
if (categoryVo.getShowNoQualChoose() == 1){
showNoQualChoose = 1;
}
categoryIds.add(categoryVo.getId());
}
//说明集合
authenticationQualificationVo.setDescList(descList);
//是否显示无相关资质选项1.是0.否
authenticationQualificationVo.setShowNoQualChoose(showNoQualChoose);
//主体认证 - 经营信息资质详情 Vo
ArrayList<AuthenticationQualificationInfoVo> qualificationInfoVoList = new ArrayList<>();
//先查当前一级类全部资质(分类总共二级)
QueryWrapper<MerchantCategoryQualificationLink> queryWrapper5 = new QueryWrapper<>();
queryWrapper5.in("category_id",categoryIds);
queryWrapper5.select("distinct qualification_id");
List<MerchantCategoryQualificationLink> qualificationLinkList = merchantCategoryQualificationLinkMapper.selectList(queryWrapper5);
if (qualificationLinkList != null && qualificationLinkList.size()>0){
for (MerchantCategoryQualificationLink qualificationLink : qualificationLinkList) {
AuthenticationQualificationInfoVo qualificationInfoVo = new AuthenticationQualificationInfoVo();
qualificationInfoVo.setIsCheck(0);//是否选中1.选中0.未选中
qualificationInfoVo.setId(qualificationLink.getQualificationId());
//根据资质主键id查询资质信息
MerchantCategoryQualification merchantCategoryQualification = merchantCategoryQualificationMapper.selectById(qualificationLink.getQualificationId());
if (merchantCategoryQualification != null){
qualificationInfoVo.setName(merchantCategoryQualification.getName());
//查询相关照片
List<ResourcesImgMerchantVo> imgByDate10 = merchantUploadToDbUtil.findImgByDate("merchantShopCategoryQualification",merchantCategoryQualification.getId(),"qualificationsImg");
qualificationInfoVo.setQualificationsImgUrls(imgByDate10);
}
//再查是否有选中
QueryWrapper<MerchantShopCategoryQualification> queryWrapper6 = new QueryWrapper<>();
queryWrapper6.eq("shop_id",merchantShopId);
queryWrapper6.eq("qualification_id",qualificationLink.getQualificationId());
MerchantShopCategoryQualification qualification = merchantShopCategoryQualificationMapper.selectOne(queryWrapper6);
if (qualification != null){
qualificationInfoVo.setIsCheck(1);//是否选中1.选中0.未选中
}
qualificationInfoVoList.add(qualificationInfoVo);
}
}
authenticationQualificationVo.setQualificationInfoVoList(qualificationInfoVoList);
authenticationQualificationVos.add(authenticationQualificationVo);
}
authenticationOperateInfoVo.setQualificationVoList(authenticationQualificationVos);
authenticationVo.setAuthenticationOperateInfoVo(authenticationOperateInfoVo);
return authenticationVo;
}
@Override
public boolean examine(StoreAuditExamineDTO storeAuditExamineDTO, AdminUser adminUser) throws BizException {
MerchantShop merchantShop = merchantShopMapper.selectById(storeAuditExamineDTO.getMerchantShopId());
if (merchantShop == null){
throw new BizException(HttpStatusEnum.RECORD_NOT_EXIST);
}
if (merchantShop.getStatus() != 2){//2.审核中
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"当前状态不可操作");
}
if (storeAuditExamineDTO.getType() == 1){//1.通过
merchantShop.setStatus(3);
}else if (storeAuditExamineDTO.getType() == 2){//2.驳回
merchantShop.setStatus(9);
merchantShop.setRejectReason(storeAuditExamineDTO.getReason());
}else {
throw new BizException(HttpStatusEnum.CUSTOM_EXCEPTION,"传入审核类型有误");
}
int update = merchantShopMapper.updateById(merchantShop);
return update > 0;
}
/**
*
* @param id id
*/
private String findParenPath(Integer id) {
MerchantCategory merchantCategory = merchantCategoryMapper.selectById(id);
if (merchantCategory != null){
String name = findParenPath(merchantCategory.getParentId());
if (name != null){
return name + "/" + merchantCategory.getName();
}else {
return merchantCategory.getName();
}
}
return null;
}
}

@ -0,0 +1,80 @@
package com.saas.admin.provider.service.telCode;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.api.admin.service.telCode.IAdminTelCodeService;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.common.utils.sms.SmsSendUtil;
import com.saas.dto.admin.telCode.SettledTelCodeDTO;
import com.saas.mapper.entity.AdminTelCodeMapper;
import com.saas.mapper.entity.AdminUserMapper;
import com.saas.pojo.AdminTelCode;
import com.saas.pojo.AdminUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.Date;
@Service(interfaceClass = IAdminTelCodeService.class)
@Slf4j
public class IAdminTelCodeServiceImpl implements IAdminTelCodeService {
@Resource
AdminUserMapper adminUserMapper;
@Resource
AdminTelCodeMapper adminTelCodeMapper;
@Override
public boolean sendSettledTelCode(SettledTelCodeDTO settledTelCodeDTO,Integer type, String code) {
//根据手机号查询平台用户信息
QueryWrapper<AdminUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("tel",settledTelCodeDTO.getTel());
AdminUser adminUser = adminUserMapper.selectOne(queryWrapper);
if (adminUser == null){
throw new BizException(HttpStatusEnum.USER_NOT_EXIST);
}
if (adminUser.getIsDelete() == 0){
throw new BizException(HttpStatusEnum.USER_IS_DELETE);
}
//根据手机号查询平台用户验证码
QueryWrapper<AdminTelCode> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("type",type);//验证码类型
queryWrapper2.eq("tel",adminUser.getTel());//手机号
AdminTelCode adminTelCode = adminTelCodeMapper.selectOne(queryWrapper2);
int send = 0;
if (adminTelCode != null){
//如果有相关手机验证码信息,修改验证码和验证码发送时间
adminTelCode.setCode(code);//填入验证码
adminTelCode.setCodeSendDate(new Date());//填入验证码发送时间
send = adminTelCodeMapper.updateById(adminTelCode);
}else {
//如果没有相关手机验证码信息,将验证码和验证码发送时间存入数据库
AdminTelCode adminTelCode2 = new AdminTelCode();
adminTelCode2.setTel(settledTelCodeDTO.getTel());
adminTelCode2.setCode(code);//填入验证码
adminTelCode2.setType(type);//填入验证码类型
adminTelCode2.setCodeSendDate(new Date());//填入验证码发送时间
send = adminTelCodeMapper.insert(adminTelCode2);
}
if (send <= 0){
log.info("数据库修改或添加验证码失败");
return false;
}
// 发送短信工具类
try {
SmsSendUtil.sendSms(code, settledTelCodeDTO.getTel());
} catch (ClientException e) {
e.printStackTrace();
log.info("短信工具发送失败");
return false;
}
return true;
}
}

@ -0,0 +1,157 @@
package com.saas.admin.provider.utils.upload;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.mapper.entity.ResourcesImgAdminMapper;
import com.saas.pojo.ResourcesImgAdmin;
import com.saas.vo.admin.upload.ResourcesImgAdminVo;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* ()
*/
@Component
public class AdminUploadToDbUtil {
@Resource
ResourcesImgAdminMapper resourcesImgAdminMapper;
//解决工具类无法调用Dao层数据数据为null
//静态初始化当前类
private static AdminUploadToDbUtil uploadUtil;
//在方法上加上注解@PostConstruct,这样方法就会在bean初始化之后被spring容器执行
@PostConstruct
public void init(){
//声明的静态类=this
uploadUtil=this;
}
/**
*
* @param urls
* @param tableName
* @param id id
* @param typeName
*
*/
public void saveUrlToDB(String[] urls,String tableName,int id,String typeName){
//默认size,长,宽
saveUrlToDB(urls,tableName,id,typeName,"600",30,20);
}
/**
*
* @param urls
* @param tableName
* @param id id
* @param typeName
* @param imgSize
* @param imgLongs
* @param imgParagraph
*
*/
public void saveUrlToDB(String[] urls,String tableName,int id,String typeName,
String imgSize,int imgLongs,int imgParagraph){
if (urls != null){
for (int i = 0; i < urls.length; i++) {
//保存后,将文件路径存入数据库
ResourcesImgAdmin resourcesImg = new ResourcesImgAdmin();
//填入表名称
resourcesImg.setTableName(tableName);
//填入数据所属id
resourcesImg.setDateId(id);
//填入类型名称
resourcesImg.setTypeName(typeName);
//填入图片路径
resourcesImg.setUrl(urls[i]);
//填入图片大小
resourcesImg.setSize(imgSize);
//填入长(像素)
resourcesImg.setLongs(imgLongs);
//填入宽(像素)
resourcesImg.setParagraph(imgParagraph);
//查询该表,该类型名称的照片数量
QueryWrapper<ResourcesImgAdmin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
int count = uploadUtil.resourcesImgAdminMapper.selectCount(queryWrapper);
if (count > 0){
resourcesImg.setSort(count+1);
}else {
resourcesImg.setSort(1);
}
//添加该照片数据到数据库中
int insert2 = uploadUtil.resourcesImgAdminMapper.insert(resourcesImg);
if (insert2 <= 0){
throw new BizException(HttpStatusEnum.FILE_SAVE_DATA_FAIL);
}
}
}
}
/**
*
* @param tableName
* @param id id
* @param typeName
*/
public void delete(String tableName, int id, String typeName){
//根据条件查询图片资源信息
QueryWrapper<ResourcesImgAdmin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgAdmin> imgByDate = uploadUtil.resourcesImgAdminMapper.selectList(queryWrapper);
if (imgByDate != null && imgByDate.size()>0){
//删除数据库数据
QueryWrapper<ResourcesImgAdmin> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("table_name",tableName);
queryWrapper2.eq("date_id",id);
queryWrapper2.eq("type_name",typeName);
int delete = uploadUtil.resourcesImgAdminMapper.delete(queryWrapper2);
if (delete <= 0){
throw new BizException(HttpStatusEnum.FILE_DELETE_DATA_FAIL);
}
}
}
/**
*
* @param tableName
* @param dateId id
* @param typeName
* @return
*/
public List<ResourcesImgAdminVo> findImgByDate(String tableName, Integer dateId, String typeName){
//根据条件查询照片信息集合
QueryWrapper<ResourcesImgAdmin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",dateId);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgAdmin> resourcesImgAdmins = uploadUtil.resourcesImgAdminMapper.selectList(queryWrapper);
ArrayList<ResourcesImgAdminVo> resourcesImgAdminVoList = new ArrayList<>();
if (resourcesImgAdmins != null && resourcesImgAdmins.size()>0){
for (ResourcesImgAdmin resourcesImgAdmin : resourcesImgAdmins) {
ResourcesImgAdminVo resourcesImgAdminVo = new ResourcesImgAdminVo();
PropertyUtils.copyProperties(resourcesImgAdmin,resourcesImgAdminVo);
resourcesImgAdminVoList.add(resourcesImgAdminVo);
}
}
return resourcesImgAdminVoList;
}
}

@ -0,0 +1,165 @@
package com.saas.admin.provider.utils.upload;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.mapper.entity.ResourcesImgCommunityMapper;
import com.saas.pojo.ResourcesImgCommunity;
import com.saas.vo.manage.upload.ResourcesImgCommunityVo;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* ()
*/
@Component
public class ManageUploadToDbUtil {
@Resource
ResourcesImgCommunityMapper resourcesImgCommunityMapper;
//解决工具类无法调用Dao层数据数据为null
//静态初始化当前类
private static ManageUploadToDbUtil uploadUtil;
//在方法上加上注解@PostConstruct,这样方法就会在bean初始化之后被spring容器执行
@PostConstruct
public void init(){
//声明的静态类=this
uploadUtil=this;
}
/**
*
* @param communityId id
* @param urls
* @param tableName
* @param id id
* @param typeName
*
*/
public void saveUrlToDB(Integer communityId,String[] urls,String tableName,int id,String typeName){
//默认size,长,宽
saveUrlToDB(communityId,urls,tableName,id,typeName,"600",30,20);
}
/**
*
* @param communityId id
* @param urls
* @param tableName
* @param id id
* @param typeName
* @param imgSize
* @param imgLongs
* @param imgParagraph
*
*/
public void saveUrlToDB(Integer communityId,String[] urls,String tableName,int id,String typeName,
String imgSize,int imgLongs,int imgParagraph){
if (urls != null){
for (int i = 0; i < urls.length; i++) {
//保存后,将文件路径存入数据库
ResourcesImgCommunity resourcesImg = new ResourcesImgCommunity();
//填入小区主键id
resourcesImg.setCommunityId(communityId);
//填入表名称
resourcesImg.setTableName(tableName);
//填入数据所属id
resourcesImg.setDateId(id);
//填入类型名称
resourcesImg.setTypeName(typeName);
//填入图片路径
resourcesImg.setUrl(urls[i]);
//填入图片大小
resourcesImg.setSize(imgSize);
//填入长(像素)
resourcesImg.setLongs(imgLongs);
//填入宽(像素)
resourcesImg.setParagraph(imgParagraph);
//查询该表,该类型名称的照片数量
QueryWrapper<ResourcesImgCommunity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("community_id",communityId);
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
int count = uploadUtil.resourcesImgCommunityMapper.selectCount(queryWrapper);
if (count > 0){
resourcesImg.setSort(count+1);
}else {
resourcesImg.setSort(1);
}
//添加该照片数据到数据库中
int insert2 = uploadUtil.resourcesImgCommunityMapper.insert(resourcesImg);
if (insert2 <= 0){
throw new BizException(HttpStatusEnum.FILE_SAVE_DATA_FAIL);
}
}
}
}
/**
*
* @param communityId id
* @param tableName
* @param id id
* @param typeName
*/
public void delete(Integer communityId,String tableName, int id, String typeName){
//根据条件查询图片资源信息
QueryWrapper<ResourcesImgCommunity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("community_id",communityId);
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgCommunity> imgByDate = uploadUtil.resourcesImgCommunityMapper.selectList(queryWrapper);
if (imgByDate != null && imgByDate.size()>0){
//删除数据库数据
QueryWrapper<ResourcesImgCommunity> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("community_id",communityId);
queryWrapper2.eq("table_name",tableName);
queryWrapper2.eq("date_id",id);
queryWrapper2.eq("type_name",typeName);
int delete = uploadUtil.resourcesImgCommunityMapper.delete(queryWrapper2);
if (delete <= 0){
throw new BizException(HttpStatusEnum.FILE_DELETE_DATA_FAIL);
}
}
}
/**
*
* @param communityId id
* @param tableName
* @param dateId id
* @param typeName
* @return
*/
public List<ResourcesImgCommunityVo> findImgByDate(Integer communityId,String tableName, Integer dateId, String typeName){
//根据条件查询照片信息集合
QueryWrapper<ResourcesImgCommunity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("community_id",communityId);
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",dateId);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgCommunity> resourcesImgCommunityList = uploadUtil.resourcesImgCommunityMapper.selectList(queryWrapper);
ArrayList<ResourcesImgCommunityVo> resourcesImgCommunityVoList = new ArrayList<>();
if (resourcesImgCommunityList != null && resourcesImgCommunityList.size()>0){
for (ResourcesImgCommunity resourcesImgCommunity : resourcesImgCommunityList) {
ResourcesImgCommunityVo resourcesImgCommunityVo = new ResourcesImgCommunityVo();
PropertyUtils.copyProperties(resourcesImgCommunity,resourcesImgCommunityVo);
resourcesImgCommunityVoList.add(resourcesImgCommunityVo);
}
}
return resourcesImgCommunityVoList;
}
}

@ -0,0 +1,155 @@
package com.saas.admin.provider.utils.upload;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.saas.common.exception.BizException;
import com.saas.common.utils.PropertyUtils;
import com.saas.common.utils.result.HttpStatusEnum;
import com.saas.mapper.entity.ResourcesImgMerchantMapper;
import com.saas.pojo.ResourcesImgMerchant;
import com.saas.vo.merchant.upload.ResourcesImgMerchantVo;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* ()
*/
@Component
public class MerchantUploadToDbUtil {
@Resource
ResourcesImgMerchantMapper resourcesImgMerchantMapper;
//解决工具类无法调用Dao层数据数据为null
//静态初始化当前类
private static MerchantUploadToDbUtil uploadUtil;
//在方法上加上注解@PostConstruct,这样方法就会在bean初始化之后被spring容器执行
@PostConstruct
public void init(){
//声明的静态类=this
uploadUtil=this;
}
/**
*
* @param urls
* @param tableName
* @param id id
* @param typeName
*
*/
public void saveUrlToDB(String[] urls,String tableName,int id,String typeName){
//默认size,长,宽
saveUrlToDB(urls,tableName,id,typeName,"600",30,20);
}
/**
*
* @param urls
* @param tableName
* @param id id
* @param typeName
* @param imgSize
* @param imgLongs
* @param imgParagraph
*
*/
public void saveUrlToDB(String[] urls,String tableName,int id,String typeName,
String imgSize,int imgLongs,int imgParagraph){
if (urls != null){
for (int i = 0; i < urls.length; i++) {
//保存后,将文件路径存入数据库
ResourcesImgMerchant resourcesImg = new ResourcesImgMerchant();
//填入表名称
resourcesImg.setTableName(tableName);
//填入数据所属id
resourcesImg.setDateId(id);
//填入类型名称
resourcesImg.setTypeName(typeName);
//填入图片路径
resourcesImg.setUrl(urls[i]);
//填入图片大小
resourcesImg.setSize(imgSize);
//填入长(像素)
resourcesImg.setLongs(imgLongs);
//填入宽(像素)
resourcesImg.setParagraph(imgParagraph);
//查询该表,该类型名称的照片数量
QueryWrapper<ResourcesImgMerchant> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
int count = uploadUtil.resourcesImgMerchantMapper.selectCount(queryWrapper);
if (count > 0){
resourcesImg.setSort(count+1);
}else {
resourcesImg.setSort(1);
}
//添加该照片数据到数据库中
int insert2 = uploadUtil.resourcesImgMerchantMapper.insert(resourcesImg);
if (insert2 <= 0){
throw new BizException(HttpStatusEnum.FILE_SAVE_DATA_FAIL);
}
}
}
}
/**
*
* @param tableName
* @param id id
* @param typeName
*/
public void delete(String tableName, int id, String typeName){
//根据条件查询图片资源信息
QueryWrapper<ResourcesImgMerchant> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",id);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgMerchant> imgByDate = uploadUtil.resourcesImgMerchantMapper.selectList(queryWrapper);
if (imgByDate != null && imgByDate.size()>0){
//删除数据库数据
QueryWrapper<ResourcesImgMerchant> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("table_name",tableName);
queryWrapper2.eq("date_id",id);
queryWrapper2.eq("type_name",typeName);
int delete = uploadUtil.resourcesImgMerchantMapper.delete(queryWrapper2);
if (delete <= 0){
throw new BizException(HttpStatusEnum.FILE_DELETE_DATA_FAIL);
}
}
}
/**
*
* @param tableName
* @param dateId id
* @param typeName
* @return
*/
public List<ResourcesImgMerchantVo> findImgByDate(String tableName, Integer dateId, String typeName){
//根据条件查询照片信息集合
QueryWrapper<ResourcesImgMerchant> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("table_name",tableName);
queryWrapper.eq("date_id",dateId);
queryWrapper.eq("type_name",typeName);
List<ResourcesImgMerchant> resourcesImgAdmins = uploadUtil.resourcesImgMerchantMapper.selectList(queryWrapper);
ArrayList<ResourcesImgMerchantVo> resourcesImgMerchantVoList = new ArrayList<>();
if (resourcesImgAdmins != null && resourcesImgAdmins.size()>0){
for (ResourcesImgMerchant resourcesImgAdmin : resourcesImgAdmins) {
ResourcesImgMerchantVo resourcesImgMerchantVo = new ResourcesImgMerchantVo();
PropertyUtils.copyProperties(resourcesImgAdmin,resourcesImgMerchantVo);
resourcesImgMerchantVoList.add(resourcesImgMerchantVo);
}
}
return resourcesImgMerchantVoList;
}
}

@ -0,0 +1,9 @@
# 防止端口冲突
server:
port: 8001
#中转站,用于切换 【本地,服务器,测试】
spring:
profiles:
include: transfer

@ -0,0 +1,25 @@
#开发环境配置文件导入
spring:
profiles:
include: sdk,devdb,devRes,devLog,devZookeeper
# mybatis-plus相关配置
mybatis-plus:
# xml扫描多个目录用逗号或者分号分隔告诉 Mapper 所对应的 XML 文件位置)
mapper-locations: classpath*:/com/saas/mapper/**/*.xml
# 以下配置均有默认值,可以不设置
global-config:
db-config:
#主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: auto
#字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"
field-strategy: NOT_EMPTY
#数据库类型
db-type: MYSQL
configuration:
# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
map-underscore-to-camel-case: true
# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
call-setters-on-nulls: true
# 这个配置会将执行的sql打印出来在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

@ -0,0 +1,19 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
butlerApp:
dao: DEBUG
file:
# 输出的log文件名
name: community-admin-provider
# 输出的文件的路径
path: log/logs/admin-provider
# 限制日志文件的大小
max-size: 10MB
# 日志的保存天数
max-history: 7
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
#redis缓存
spring:
redis:
host: 121.41.26.225 #绑定的主机地址
database: 1
port: 6379 #指定Redis监听端口默认端口为6379
password: 123456
timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
jedis:
pool:
max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,25 @@
dubbo:
application:
# 应用名称
name: adminProvider
registry:
protocol: zookeeper
# 注册中心地址
address: zookeeper://127.0.0.1:2181
# 超时时间,单位毫秒
timeout: 10000
metadata-report:
#元数据中心地址
address: zookeeper://127.0.0.1:2181
protocol:
# 协议名称
name: dubbo
# 协议端口
port: 20880
scan:
# 扫描包的位置
base-packages: com.saas.admin.provider.service
provider:
version: 1.0
# 调用超时时间,单位毫秒
timeout: 10000

@ -0,0 +1,13 @@
spring:
# 数据库源
datasource:
#本地数据库连接
url: jdbc:mysql://39.103.177.88:3306/saas_community?useUnicode=true&characterEncoding=utf8&useSSL=false
username: saas_community
password: jlw15906763698
driver-class-name: com.mysql.jdbc.Driver
# driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 3
maximum-pool-size: 10
max-lifetime: 0

@ -0,0 +1,23 @@
#生产环境配置文件导入
spring:
profiles:
include: upload,sdk,prodb,proRes,proLog
# mybatis-plus相关配置
mybatis-plus:
# xml扫描多个目录用逗号或者分号分隔告诉 Mapper 所对应的 XML 文件位置)
mapper-locations: classpath*:/com/saas/mapper/**/*.xml
# 以下配置均有默认值,可以不设置
global-config:
db-config:
#主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: auto
#字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"
field-strategy: NOT_EMPTY
#数据库类型
db-type: MYSQL
configuration:
# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
map-underscore-to-camel-case: true
# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
call-setters-on-nulls: true

@ -0,0 +1,17 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
file:
# 输出的log文件名
name: intelligent-community
# 输出的文件的路径
path: /www/wwwroot/community.kadalai.com/apache-tomcat-8.5.61/webapps/logs
# 限制日志文件的大小
max-size: 100MB
# 日志的保存天数
max-history: 15
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
#redis缓存
spring:
redis:
host: 127.0.0.1 #绑定的主机地址
database: 1
port: 6379 #指定Redis监听端口默认端口为6379
password:
timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
jedis:
pool:
max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,12 @@
spring:
# 数据库源
datasource:
#南宁本地数据库版本
url: jdbc:mysql://localhost:3306/smart_community?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
minimum-idle: 3
maximum-pool-size: 10
max-lifetime: 0

@ -0,0 +1,21 @@
#极光推送
jg:
#极光app密钥
appKey: 00e20fef79ee804d5c9abb54
#极光主密钥
masterSecret: 236de00049f87c76d28d63be
#管家app密钥
butlerAppKey: 028adb7b9eda661fefdf3072
#管家app主密钥
butlerMasterSecret: d8b9c1cbc6812e81453151f3
aliyun:
sms:
#产品名称:云通信短信API产品,开发者无需替换
product: "Dysmsapi"
#产品域名,开发者无需替换
domain: "dysmsapi.aliyuncs.com"
#此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
accessKeyId: "LTAI4GD3BFj2WBDSiywy9sZG"
accessKeySecret: "dNdS9urtnmMfewe8QlGWKECXkEVLVf"

@ -0,0 +1,23 @@
#测试环境配置文件导入
spring:
profiles:
include: sdk,testdb,testRes,testLog,testZookeeper
# mybatis-plus相关配置
mybatis-plus:
# xml扫描多个目录用逗号或者分号分隔告诉 Mapper 所对应的 XML 文件位置)
mapper-locations: classpath*:/com/saas/mapper/**/*.xml
# 以下配置均有默认值,可以不设置
global-config:
db-config:
#主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: auto
#字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"
field-strategy: NOT_EMPTY
#数据库类型
db-type: MYSQL
configuration:
# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
map-underscore-to-camel-case: true
# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
call-setters-on-nulls: true

@ -0,0 +1,17 @@
#logging debug
logging:
level:
root: info
com:
api:
dao: debug
file:
# 输出的log文件名
name: admin-provider
# 输出的文件的路径
path: /www/wwwroot/communitySaas/logs/adminProvider
# 限制日志文件的大小
max-size: 100MB
# 日志的保存天数
max-history: 7
config: classpath:logback-spring.xml

@ -0,0 +1,13 @@
#redis缓存
spring:
redis:
host: 121.41.26.225 #绑定的主机地址
database: 1
port: 6379 #指定Redis监听端口默认端口为6379
password: 123456
timeout: 5000 #当客户端闲置多长时间后关闭连接如果指定为0表示关闭该功能
jedis:
pool:
max-active: 20 #最大连接数:能够同时建立的“最大链接个数”
max-idle: 20 #最大空闲数空闲链接数大于maxIdle时将进行回收
max-wait: 1000 #最大等待时间单位ms

@ -0,0 +1,25 @@
dubbo:
application:
# 应用名称
name: adminProvider
registry:
protocol: zookeeper
# 注册中心地址
address: zookeeper://121.41.26.225:2181
# 超时时间,单位毫秒
timeout: 10000
metadata-report:
#元数据中心地址
address: zookeeper://121.41.26.225:2181
protocol:
# 协议名称
name: dubbo
# 协议端口
port: 20880
scan:
# 扫描包的位置
base-packages: com.saas.admin.provider.service
provider:
version: 1.0
# 调用超时时间,单位毫秒
timeout: 10000

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save