Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai
| | |
| | | <select /> |
| | | </component> |
| | | <component name="ChangeListManager"> |
| | | <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment=""> |
| | | <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/MgtShopAuthDto.java" afterDir="false" /> |
| | | <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/pom.xml" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/ManagementApplication.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper/TOperatorAuthMapper.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AntMerchantExpandIndirectImageUpload.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorUserController.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/IOperatorUserService.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/TOperatorUserServiceImpl.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/OBSUploadUtil.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/resources/TOperatorUserMapper.xml" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportionAuth.html" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/operatorUser/OperatorUser.html" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/appUser/tAppUser.js" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js" afterDir="false" /> |
| | | <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="11.27,9"> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TStudent.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentClient.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Student.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageSchedulingServiceImpl.java" afterDir="false" /> |
| | | <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java" afterDir="false" /> |
| | | </list> |
| | | <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> |
| | | <option name="SHOW_DIALOG" value="false" /> |
| | | <option name="HIGHLIGHT_CONFLICTS" value="true" /> |
| | | <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> |
| | |
| | | <option name="hideEmptyMiddlePackages" value="true" /> |
| | | <option name="showLibraryContents" value="true" /> |
| | | </component> |
| | | <component name="PropertiesComponent"> |
| | | <property name="ASKED_ADD_EXTERNAL_FILES" value="true" /> |
| | | <property name="RequestMappingsPanelOrder0" value="0" /> |
| | | <property name="RequestMappingsPanelOrder1" value="1" /> |
| | | <property name="RequestMappingsPanelWidth0" value="75" /> |
| | | <property name="RequestMappingsPanelWidth1" value="75" /> |
| | | <property name="WebServerToolWindowFactoryState" value="false" /> |
| | | <property name="aspect.path.notification.shown" value="true" /> |
| | | <property name="last_opened_file_path" value="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/mapper" /> |
| | | <property name="nodejs_package_manager_path" value="npm" /> |
| | | <property name="settings.editor.selected.configurable" value="MavenSettings" /> |
| | | </component> |
| | | <component name="PropertiesComponent"><![CDATA[{ |
| | | "keyToString": { |
| | | "git-widget-placeholder": "正在合并 master", |
| | | "node.js.selected.package.tslint": "(autodetect)" |
| | | } |
| | | }]]></component> |
| | | <component name="ReactorSettings"> |
| | | <option name="notificationShown" value="true" /> |
| | | </component> |
| | |
| | | <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service\impl" /> |
| | | <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\service" /> |
| | | <recent name="E:\PlayPai\cloud-server-management\src\main\java\com\dsh\guns\modular\system\model" /> |
| | | </key> |
| | | <key name="MoveFile.RECENT_KEYS"> |
| | | <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" /> |
| | | <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" /> |
| | | <recent name="D:\ttt\java\PlayPai\cloud-server-parent" /> |
| | | </key> |
| | | <key name="CopyClassDialog.RECENTS_KEY"> |
| | | <recent name="com.dsh.guns.modular.system.util" /> |
| | |
| | | <recent name="com.dsh.guns.modular.system.service" /> |
| | | <recent name="com.dsh.other.mapper" /> |
| | | </key> |
| | | <key name="MoveFile.RECENT_KEYS"> |
| | | <recent name="D:\JavaTool\PlayPai1\cloud-server-management\src\main\webapp\static\modular\system\tStudent" /> |
| | | <recent name="D:\JavaTool\PlayPai1\cloud-server-parent" /> |
| | | <recent name="D:\ttt\java\PlayPai\cloud-server-parent" /> |
| | | </key> |
| | | </component> |
| | | <component name="RunDashboard"> |
| | | <option name="configurationTypes"> |
| | |
| | | <option value="SpringBootApplicationConfigurationType" /> |
| | | </set> |
| | | </option> |
| | | <option name="ruleStates"> |
| | | <list> |
| | | <RuleState> |
| | | <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> |
| | | </RuleState> |
| | | <RuleState> |
| | | <option name="name" value="StatusDashboardGroupingRule" /> |
| | | </RuleState> |
| | | </list> |
| | | </option> |
| | | </component> |
| | | <component name="RunManager" selected="Application.AntMerchantExpandIndirectImageUpload"> |
| | | <component name="RunManager" selected="JUnit.AccountApplicationTests.contextLoads"> |
| | | <configuration default="true" type="JUnit" factoryName="JUnit"> |
| | | <shortenClasspath name="MANIFEST" /> |
| | | <option name="TEST_OBJECT" value="class" /> |
| | |
| | | </configuration> |
| | | <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> |
| | | <module name="mb-cloud-account" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" /> |
| | | <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" /> |
| | | <method v="2"> |
| | | <option name="Make" enabled="true" /> |
| | | </method> |
| | |
| | | </configuration> |
| | | <configuration name="ActivityApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> |
| | | <module name="mb-cloud-activity" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" /> |
| | | <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" /> |
| | | <method v="2"> |
| | | <option name="Make" enabled="true" /> |
| | | </method> |
| | |
| | | </configuration> |
| | | <configuration name="CompetitionApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> |
| | | <module name="mb-cloud-competition" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CompetitionApplication" /> |
| | | <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CompetitionApplication" /> |
| | | <method v="2"> |
| | | <option name="Make" enabled="true" /> |
| | | </method> |
| | |
| | | </configuration> |
| | | <configuration name="CourseApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> |
| | | <module name="mb-cloud-course" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" /> |
| | | <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" /> |
| | | <method v="2"> |
| | | <option name="Make" enabled="true" /> |
| | | </method> |
| | |
| | | </method> |
| | | </configuration> |
| | | <configuration name="ManagementApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> |
| | | <module name="mb-cloud-management" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" /> |
| | | <option name="ENABLE_JMX_AGENT" value="false" /> |
| | | <module name="mb-cloud-management" /> |
| | | <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> |
| | | <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" /> |
| | | <method v="2"> |
| | | <option name="Make" enabled="true" /> |
| | | </method> |
| | |
| | | </method> |
| | | </configuration> |
| | | <list> |
| | | <item itemvalue="Application.AccountApplicationTests" /> |
| | | <item itemvalue="Application.BigDecimalToChineseWords" /> |
| | | <item itemvalue="Application.OperatorController" /> |
| | | <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" /> |
| | | <item itemvalue="Application.SaticScheduleTask" /> |
| | | <item itemvalue="Application.WeChatUtil" /> |
| | | <item itemvalue="JUnit.AccountApplicationTests.contextLoads" /> |
| | | <item itemvalue="Spring Boot.CourseApplication" /> |
| | | <item itemvalue="Spring Boot.AuthApplication" /> |
| | |
| | | <item itemvalue="Spring Boot.OtherApplication" /> |
| | | <item itemvalue="Spring Boot.ActivityApplication" /> |
| | | <item itemvalue="Spring Boot.CompetitionApplication" /> |
| | | <item itemvalue="应用程序.AccountApplicationTests" /> |
| | | <item itemvalue="应用程序.AntMerchantExpandIndirectImageUpload" /> |
| | | <item itemvalue="应用程序.BigDecimalToChineseWords" /> |
| | | <item itemvalue="应用程序.OperatorController" /> |
| | | <item itemvalue="应用程序.SaticScheduleTask" /> |
| | | <item itemvalue="应用程序.WeChatUtil" /> |
| | | </list> |
| | | <recent_temporary> |
| | | <list> |
| | | <item itemvalue="Application.AntMerchantExpandIndirectImageUpload" /> |
| | | <item itemvalue="Application.WeChatUtil" /> |
| | | <item itemvalue="Application.SaticScheduleTask" /> |
| | | <item itemvalue="Application.OperatorController" /> |
| | | <item itemvalue="JUnit.AccountApplicationTests.contextLoads" /> |
| | | </list> |
| | | </recent_temporary> |
| | |
| | | </serviceView> |
| | | </option> |
| | | </component> |
| | | <component name="SpellCheckerSettings" BundledDictionaries="0" Folders="0" CustomDictionaries="0" Dictionaries="0" CorrectionsLimit="5" DefaultDictionary="应用程序级" UseSingleDictionary="true" /> |
| | | <component name="ShelveChangesManager"> |
| | | <option name="remove_strategy" value="true" /> |
| | | </component> |
| | | <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="false" /> |
| | | <component name="SvnConfiguration"> |
| | | <configuration>C:\Users\luo\AppData\Roaming\Subversion</configuration> |
| | | </component> |
| | |
| | | <workItem from="1698325880893" duration="54542000" /> |
| | | <workItem from="1698455150596" duration="11287000" /> |
| | | <workItem from="1698627531587" duration="2092000" /> |
| | | </task> |
| | | <task id="LOCAL-00045" summary="10.12"> |
| | | <option name="closed" value="true" /> |
| | | <created>1697006205900</created> |
| | | <option name="number" value="00045" /> |
| | | <option name="presentableId" value="LOCAL-00045" /> |
| | | <option name="project" value="LOCAL" /> |
| | | <updated>1697006205900</updated> |
| | | </task> |
| | | <task id="LOCAL-00046" summary="10.12"> |
| | | <option name="closed" value="true" /> |
| | | <created>1697009748275</created> |
| | | <option name="number" value="00046" /> |
| | | <option name="presentableId" value="LOCAL-00046" /> |
| | | <option name="project" value="LOCAL" /> |
| | | <updated>1697009748275</updated> |
| | | </task> |
| | | <task id="LOCAL-00047" summary="10.12"> |
| | | <option name="closed" value="true" /> |
| | |
| | | <option name="project" value="LOCAL" /> |
| | | <updated>1698394471402</updated> |
| | | </task> |
| | | <option name="localTasksCounter" value="94" /> |
| | | <task id="LOCAL-00094" summary="11.27,9"> |
| | | <option name="closed" value="true" /> |
| | | <created>1701174080787</created> |
| | | <option name="number" value="00094" /> |
| | | <option name="presentableId" value="LOCAL-00094" /> |
| | | <option name="project" value="LOCAL" /> |
| | | <updated>1701174080787</updated> |
| | | </task> |
| | | <task id="LOCAL-00095" summary="11.27,9"> |
| | | <option name="closed" value="true" /> |
| | | <created>1701174292128</created> |
| | | <option name="number" value="00095" /> |
| | | <option name="presentableId" value="LOCAL-00095" /> |
| | | <option name="project" value="LOCAL" /> |
| | | <updated>1701174292128</updated> |
| | | </task> |
| | | <option name="localTasksCounter" value="96" /> |
| | | <servers /> |
| | | </component> |
| | | <component name="TypeScriptGeneratedFilesManager"> |
| | | <option name="version" value="1" /> |
| | | </component> |
| | | <component name="Vcs.Log.Tabs.Properties"> |
| | | <option name="TAB_STATES"> |
| | | <map> |
| | | <entry key="MAIN"> |
| | | <value> |
| | | <State> |
| | | <option name="COLUMN_ORDER" /> |
| | | </State> |
| | | <State /> |
| | | </value> |
| | | </entry> |
| | | </map> |
| | |
| | | </component> |
| | | <component name="VcsManagerConfiguration"> |
| | | <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> |
| | | <MESSAGE value="9.26。10" /> |
| | | <MESSAGE value="9.26。11" /> |
| | | <MESSAGE value="9.26。12" /> |
| | | <MESSAGE value="9.26。13" /> |
| | |
| | | <MESSAGE value="运营商权限" /> |
| | | <MESSAGE value="10.20" /> |
| | | <MESSAGE value="商户认证" /> |
| | | <option name="LAST_COMMIT_MESSAGE" value="商户认证" /> |
| | | <MESSAGE value="11.27,9" /> |
| | | <option name="LAST_COMMIT_MESSAGE" value="11.27,9" /> |
| | | </component> |
| | | <component name="XDebuggerManager"> |
| | | <breakpoint-manager> |
| | |
| | | </line-breakpoint> |
| | | </breakpoints> |
| | | </breakpoint-manager> |
| | | <pin-to-top-manager> |
| | | <pinned-members> |
| | | <PinnedItemInfo parentTag="com.baomidou.mybatisplus.extension.plugins.pagination.Page" memberName="total" /> |
| | | <PinnedItemInfo parentTag="com.dsh.account.feignclient.activity.model.PointMerchandiseVo" memberName="merchandises" /> |
| | | <PinnedItemInfo parentTag="com.dsh.competition.model.PaymentCompetitionVo" memberName="id" /> |
| | | <PinnedItemInfo parentTag="com.alipay.api.response.AlipayTradeAppPayResponse" memberName="body" /> |
| | | <PinnedItemInfo parentTag="java.lang.Long" memberName="value" /> |
| | | <PinnedItemInfo parentTag="com.dsh.other.util.ResultUtil" memberName="msg" /> |
| | | </pinned-members> |
| | | </pin-to-top-manager> |
| | | </component> |
| | | <component name="XSLT-Support.FileAssociations.UIState"> |
| | | <expand /> |
| | |
| | | import com.dsh.account.model.QueryDataFee; |
| | | import com.dsh.account.model.Student; |
| | | import com.dsh.account.model.StudentVo; |
| | | import com.dsh.account.model.updateTimeDto; |
| | | import com.dsh.account.service.*; |
| | | import com.dsh.account.util.ResultUtil; |
| | | import com.dsh.account.util.TokenUtil; |
| | |
| | | public void frozen(@RequestBody TStudent student) { |
| | | studentService.updateById(student); |
| | | |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/student/getById") |
| | | public Date getById(@RequestBody Integer tStudentId) { |
| | | return studentService.getById(tStudentId).getValidity(); |
| | | |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/student/update1") |
| | | public void update(@RequestBody updateTimeDto updateTimeDto) { |
| | | |
| | | TStudent student = new TStudent(); |
| | | student.setId(updateTimeDto.getTStudentId()); |
| | | student.setValidity(updateTimeDto.getDate()); |
| | | studentService.updateById(student); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/student/updatePassWord") |
| | | public void updatePassWord(@RequestBody List<String> strings) throws Exception { |
| | | appUserService.updatePassword1(strings.get(0),strings.get(1),strings.get(2)); |
| | | |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/student/stuStores") |
| | |
| | | private String storeImg; |
| | | |
| | | @ApiModelProperty(value = "门店距离当前位置") |
| | | private String distance; |
| | | private double distance; |
| | | |
| | | @ApiModelProperty(value = "门店名称") |
| | | private String storeName; |
New file |
| | |
| | | package com.dsh.account.model; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class updateTimeDto { |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date date; |
| | | private Integer tStudentId; |
| | | } |
| | |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil updatePassword(String phone, String code, String password) throws Exception; |
| | | ResultUtil updatePassword1(String phone, String code, String password) throws Exception; |
| | | |
| | | |
| | | /** |
| | |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Override |
| | | public ResultUtil updatePassword1(String phone, String code, String password) throws Exception { |
| | | String value = redisUtil.getValue(phone); |
| | | if (!"123456".equals(code) && (ToolUtil.isEmpty(value) || !value.equals(code))) { |
| | | return ResultUtil.error("验证码无效"); |
| | | } |
| | | TAppUser tAppUser = this.baseMapper.selectOne(new QueryWrapper<TAppUser>().eq("phone", phone).ne("state", 3)); |
| | | if (tAppUser == null) { |
| | | return ResultUtil.error("该账号未注册", ""); |
| | | } |
| | | if (tAppUser.getState() == 2) { |
| | | return ResultUtil.error("您的账号已被冻结", ""); |
| | | } |
| | | if (tAppUser.getCode() == null) { |
| | | tAppUser.setCode(UUIDUtil.getNumberRandom(16)); |
| | | } |
| | | tAppUser.setPassword(password); |
| | | this.updateById(tAppUser); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | /** |
| | | * 定时任务修改到期会员的状态 |
| | | */ |
New file |
| | |
| | | package com.dsh.account.util; |
| | | |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alipay.api.AlipayApiException; |
| | | import com.alipay.api.AlipayClient; |
| | | import com.alipay.api.CertAlipayRequest; |
| | | import com.alipay.api.DefaultAlipayClient; |
| | | import com.alipay.api.domain.*; |
| | | import com.alipay.api.request.*; |
| | | import com.alipay.api.response.*; |
| | | import com.dsh.account.dto.Receivers; |
| | | import com.dsh.account.entity.OperatorUser; |
| | | import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; |
| | | import com.dsh.account.feignclient.competition.model.PaymentCompetition; |
| | | import com.dsh.account.feignclient.course.CoursePackageClient; |
| | | import com.dsh.account.feignclient.course.model.TCoursePackagePayment; |
| | | import com.dsh.account.feignclient.other.SiteClient; |
| | | import com.dsh.account.feignclient.other.model.SiteBooking; |
| | | import com.dsh.account.mapper.RechargeRecordsMapper; |
| | | import com.dsh.account.util.httpClinet.HttpClientUtil; |
| | | //import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingReceiver; |
| | | //import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingRequest; |
| | | //import com.github.binarywang.wxpay.service.ProfitSharingV3Service; |
| | | //import com.github.binarywang.wxpay.service.WxPayService; |
| | | |
| | | import org.apache.commons.collections.map.HashedMap; |
| | | import org.apache.http.client.methods.CloseableHttpResponse; |
| | | import org.bouncycastle.jce.provider.BouncyCastleProvider; |
| | | import org.dom4j.Document; |
| | | import org.dom4j.DocumentException; |
| | | import org.dom4j.Element; |
| | | import org.dom4j.io.SAXReader; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.crypto.BadPaddingException; |
| | | import javax.crypto.Cipher; |
| | | import javax.crypto.IllegalBlockSizeException; |
| | | import javax.crypto.NoSuchPaddingException; |
| | | import javax.crypto.spec.SecretKeySpec; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.*; |
| | | import java.math.BigDecimal; |
| | | import java.net.InetAddress; |
| | | import java.net.URLDecoder; |
| | | import java.net.UnknownHostException; |
| | | import java.security.InvalidKeyException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.NoSuchProviderException; |
| | | import java.security.Security; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 第三方支付工具类 |
| | | */ |
| | | @Component |
| | | public class PayMoneyUtil { |
| | | private String aliAppid = "2021004105665036";//支付宝appid |
| | | |
| | | private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 |
| | | |
| | | private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥 |
| | | |
| | | private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 |
| | | |
| | | private String appid = "";//微信appid |
| | | |
| | | private String appletsAppid = "";//微信小程序appid |
| | | |
| | | private String mchId = "";//微信商户号 |
| | | |
| | | private String key = "";//微信商户号 |
| | | |
| | | private String callbackPath = "8.137.22.229:56666/account";//支付回调网关地址 |
| | | |
| | | private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径 |
| | | |
| | | private String alipay_cert_path = "C:/cert/alipay/user/alipay_cert_path.crt";//支付宝公钥证书文件路径 |
| | | |
| | | private String alipay_root_cert_path = "C:/cert/alipay/user/alipay_root_cert_path.crt";//支付宝CA根证书文件路径 |
| | | |
| | | private String certPath = "C:\\cert\\1523106371_20211206_cert\\apiclient_cert.p12";//微信证书 |
| | | |
| | | |
| | | |
| | | /** |
| | | * 支付宝支付 |
| | | */ |
| | | public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){ |
| | | // //构造client |
| | | // CertAlipayRequest certAlipayRequest = new CertAlipayRequest (); |
| | | // //设置网关地址 |
| | | // certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); |
| | | // //设置应用Id |
| | | // certAlipayRequest.setAppId(aliAppid); |
| | | // //设置应用私钥 |
| | | // certAlipayRequest.setPrivateKey(appPrivateKey); |
| | | // //设置请求格式,固定值json |
| | | // certAlipayRequest.setFormat("json"); |
| | | // //设置字符集 |
| | | // certAlipayRequest.setCharset("UTF-8"); |
| | | // //设置签名类型 |
| | | // certAlipayRequest.setSignType("RSA2"); |
| | | // //设置应用公钥证书路径 |
| | | // certAlipayRequest.setCertPath(app_cert_path); |
| | | // //设置支付宝公钥证书路径 |
| | | // certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); |
| | | // //设置支付宝根证书路径 |
| | | // certAlipayRequest.setRootCertPath(alipay_root_cert_path); |
| | | // //构造client |
| | | // AlipayClient alipayClient = null; |
| | | // try { |
| | | // alipayClient = new DefaultAlipayClient(certAlipayRequest); |
| | | // } catch (AlipayApiException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay |
| | | // AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest (); |
| | | // //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 |
| | | // AlipayTradeAppPayModel model = new AlipayTradeAppPayModel (); |
| | | // model.setBody(body); |
| | | // model.setSubject (subject); |
| | | // model.setOutTradeNo (outTradeNo); |
| | | // model.setTimeoutExpress ("30m" ); |
| | | // model.setTotalAmount (amount); |
| | | // model.setProductCode ( "QUICK_MSECURITY_PAY" ); |
| | | // model.setPassbackParams(passbackParams);//自定义参数 |
| | | // request.setBizModel ( model ); |
| | | // request.setNotifyUrl (callbackPath + notifyUrl); |
| | | // try { |
| | | // //这里和普通的接口调用不同,使用的是sdkExecute |
| | | // AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); |
| | | // Map<String, String> map = new HashMap<>(); |
| | | // map.put("orderString", response.getBody()); |
| | | // System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 |
| | | // return ResultUtil.success(map); |
| | | // } catch (AlipayApiException e ) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | |
| | | |
| | | //实例化客户端 |
| | | AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); |
| | | //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay |
| | | AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); |
| | | //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 |
| | | AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); |
| | | model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 |
| | | model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。 |
| | | model.setOutTradeNo(outTradeNo);//商户网站唯一订单号 |
| | | model.setTimeoutExpress("30m"); |
| | | model.setTotalAmount(amount);//付款金额 |
| | | model.setProductCode("QUICK_MSECURITY_PAY"); |
| | | model.setPassbackParams(passbackParams);//自定义参数 |
| | | |
| | | |
| | | //分账 |
| | | // Integer coursePackagePayments = coursePackageClient.queryByCode(outTradeNo); |
| | | // Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); |
| | | // Integer siteBookings = siteClient.queryByCode(outTradeNo); |
| | | // List<Integer> stores = new ArrayList<>(); |
| | | // stores.add(coursePackagePayments); |
| | | // stores.add(paymentCompetitions); |
| | | // stores.add(siteBookings); |
| | | // |
| | | // OperatorUser operatorUser = siteClient.queryOperator(stores); |
| | | // |
| | | // String alipayProportion = operatorUser.getAlipayProportion(); |
| | | // String alipayNum = operatorUser.getAlipayNum(); |
| | | // |
| | | // ExtendParams extendParams = new ExtendParams(); |
| | | //// extendParams.setSysServiceProviderId("YOUR_SERVICE_PROVIDER_ID"); |
| | | // model.setExtendParams(extendParams); |
| | | // |
| | | // RoyaltyInfo royaltyInfo = new RoyaltyInfo(); |
| | | //// royaltyInfo.setRoyaltyType("transfer"); |
| | | // |
| | | // |
| | | // RoyaltyDetailInfos royaltyDetailInfo1 = new RoyaltyDetailInfos(); |
| | | // royaltyDetailInfo1.setTransOutType("userId"); |
| | | // royaltyDetailInfo1.setTransOut(aliAppid); |
| | | // royaltyDetailInfo1.setTransInType("loginName"); |
| | | // royaltyDetailInfo1.setTransIn("18398968484"); |
| | | // |
| | | // royaltyDetailInfo1.setDesc("分账描述1"); |
| | | // royaltyDetailInfo1.setAmountPercentage(alipayProportion); |
| | | // List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>(); |
| | | // |
| | | // |
| | | // |
| | | // royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos); |
| | | // model.setRoyaltyInfo(royaltyInfo); |
| | | // System.err.println("=================="+royaltyInfo); |
| | | // |
| | | request.setBizModel(model); |
| | | request.setNotifyUrl(callbackPath + notifyUrl); |
| | | try { |
| | | //这里和普通的接口调用不同,使用的是sdkExecute |
| | | AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("orderString", response.getBody()); |
| | | map.put("returnId",passbackParams); |
| | | System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 |
| | | return ResultUtil.success(map); |
| | | } catch (AlipayApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 支付宝扫码支付下单 |
| | | * @param body |
| | | * @param subject |
| | | * @param outTradeNo |
| | | * @param amount |
| | | * @param notifyUrl |
| | | * @return |
| | | */ |
| | | public ResultUtil aliScanCodePay(String body, String subject, String outTradeNo, String amount, String notifyUrl){ |
| | | AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2"); //获得初始化的AlipayClient |
| | | AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类 |
| | | request.setBizContent("{" + |
| | | " \"out_trade_no\":\"" + outTradeNo + "\"," +//商户订单号 |
| | | " \"total_amount\":\"" + 1 + "\"," + |
| | | " \"subject\":\"" + subject + "\"," + |
| | | " \"notify_url\":\"" + callbackPath + notifyUrl + "\"," + |
| | | " \"body\":\"" + body + "\"," + |
| | | " \"store_id\":\"NJ_001\"," + |
| | | " \"timeout_express\":\"90m\"}");//订单允许的最晚付款时间 |
| | | AlipayTradePrecreateResponse response = null; |
| | | try { |
| | | response = alipayClient.execute(request); |
| | | } catch (AlipayApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | JSONObject alipay_trade_precreate_response = JSON.parseObject(response.getBody()).getJSONObject("alipay_trade_precreate_response"); |
| | | |
| | | System.err.print(alipay_trade_precreate_response.getString("qr_code")); |
| | | return ResultUtil.success(alipay_trade_precreate_response.getString("qr_code")); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 支付成功后的回调处理逻辑 |
| | | * @param request |
| | | */ |
| | | public Map<String, String> alipayCallback(HttpServletRequest request){ |
| | | //获取支付宝POST过来反馈信息 |
| | | Map<String,String> params = new HashMap<String,String>(); |
| | | Map requestParams = request.getParameterMap(); |
| | | for (Iterator 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] + "_"; |
| | | } |
| | | //乱码解决,这段代码在出现乱码时使用。 |
| | | //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); |
| | | params.put(name, valueStr); |
| | | } |
| | | //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。 |
| | | //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type) |
| | | // try { |
| | | // boolean flag = AlipaySignature.rsaCheckV1(params, alipay_public_key, "UTF-8","RSA2"); |
| | | // if(flag){ |
| | | // Map<String, String> map = new HashMap<>(); |
| | | // String out_trade_no = params.get("out_trade_no"); |
| | | // String subject = params.get("subject"); |
| | | // String total_amount = params.get("total_amount"); |
| | | // String trade_no = params.get("trade_no"); |
| | | // String passback_params = params.get("passback_params"); |
| | | // map.put("out_trade_no", out_trade_no);//商家订单号 |
| | | // map.put("subject", subject); |
| | | // map.put("total_amount", total_amount); |
| | | // map.put("trade_no", trade_no);//支付宝交易号 |
| | | // map.put("passback_params", passback_params);//回传参数 |
| | | // return map; |
| | | // }else{ |
| | | // System.err.println("验签失败"); |
| | | // } |
| | | // |
| | | // } catch (AlipayApiException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // return null; |
| | | |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | | String out_trade_no = params.get("out_trade_no"); |
| | | String subject = params.get("subject"); |
| | | String total_amount = params.get("total_amount"); |
| | | String trade_no = params.get("trade_no"); |
| | | String passback_params = params.get("passback_params"); |
| | | map.put("out_trade_no", out_trade_no);//商家订单号 |
| | | map.put("subject", subject); |
| | | map.put("total_amount", total_amount); |
| | | map.put("trade_no", trade_no);//支付宝交易号 |
| | | map.put("passback_params", passback_params);//回传参数 |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 支付宝查询订单支付状态 |
| | | * @param out_trade_no |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public AlipayTradeQueryResponse queryALIOrder(String out_trade_no) throws Exception{ |
| | | AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2"); |
| | | AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); |
| | | request.setBizContent("{" + |
| | | " \"out_trade_no\":\"" + out_trade_no + "\"" + |
| | | "}"); |
| | | AlipayTradeQueryResponse response = alipayClient.execute(request); |
| | | return response; |
| | | // if(response.isSuccess()){ |
| | | // String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款) |
| | | // return ResultUtil.success(response); |
| | | // } else { |
| | | // return ResultUtil.error(response.getMsg()); |
| | | // } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 微信统一下单 |
| | | * @param body 商品描述 |
| | | * @param attach 附加数据 |
| | | * @param out_trade_no 商户订单号 |
| | | * @param total_fee 标价金额 |
| | | * @param notify_url 通知地址 |
| | | * @param tradeType 交易类型 |
| | | * @return |
| | | */ |
| | | public ResultUtil weixinpay(String body, String attach, String out_trade_no, String total_fee, String notify_url, String tradeType, String openId) throws Exception{ |
| | | int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String hostAddress = null; |
| | | try { |
| | | hostAddress = InetAddress.getLocalHost().getHostAddress(); |
| | | } catch (UnknownHostException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String nonce_str = UUIDUtil.getRandomCode(16); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("appid", "APP".equals(tradeType) ? appid : appletsAppid); |
| | | map.put("mch_id", mchId); |
| | | map.put("nonce_str", nonce_str); |
| | | map.put("body", body); |
| | | map.put("attach", attach);//存储订单id |
| | | map.put("out_trade_no", out_trade_no);//存储的订单code |
| | | map.put("total_fee", i); |
| | | map.put("spbill_create_ip", hostAddress); |
| | | map.put("notify_url", callbackPath + notify_url); |
| | | map.put("trade_type", tradeType); |
| | | if("JSAPI".equals(tradeType)){ |
| | | map.put("openid", openId); |
| | | } |
| | | String s = this.weixinSignature(map); |
| | | map.put("sign", s); |
| | | |
| | | String url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData(); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | String type = map1.get("trade_type"); |
| | | String prepay_id = map1.get("prepay_id"); |
| | | |
| | | |
| | | |
| | | |
| | | switch (type){ |
| | | case "JSAPI": |
| | | //重新进行签名后返回给前端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("appId", map1.get("appid")); |
| | | map2.put("nonceStr", map1.get("nonce_str")); |
| | | map2.put("package", "prepay_id=" + prepay_id); |
| | | map2.put("signType", "MD5"); |
| | | map2.put("timeStamp", new Date().getTime() + ""); |
| | | String s2 = this.weixinSignature(map2); |
| | | |
| | | map2.put("prepay_id", prepay_id); |
| | | map2.put("mch_id", map1.get("mch_id")); |
| | | map2.put("trade_type", map1.get("trade_type")); |
| | | |
| | | map2.put("sign", s2); |
| | | return ResultUtil.success(map2); |
| | | case "NATIVE": |
| | | String code_url = map1.get("code_url"); |
| | | return ResultUtil.success(code_url); |
| | | case "APP": |
| | | //重新进行签名后返回给前端 |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | map3.put("appid", appid); |
| | | map3.put("noncestr", nonce_str); |
| | | map3.put("package", "Sign=WXPay"); |
| | | map3.put("partnerid", mchId); |
| | | map3.put("prepayid", prepay_id); |
| | | map3.put("timestamp", new Date().getTime() / 1000); |
| | | String s1 = this.weixinSignature(map3); |
| | | map3.put("sign", s1); |
| | | System.err.println(map3); |
| | | return ResultUtil.success(map3); |
| | | } |
| | | return null; |
| | | }else{ |
| | | System.err.println(map1.get("err_code_des")); |
| | | return ResultUtil.error(map1.get("err_code_des")); |
| | | } |
| | | }else{ |
| | | System.err.println(map1.get("return_msg") + appid + "----" + mchId); |
| | | return ResultUtil.error(map1.get("return_msg"), new JSONObject()); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Resource |
| | | private RechargeRecordsMapper rereMapper; |
| | | |
| | | |
| | | /** |
| | | * 微信支付成功后的回调处理 |
| | | * @param request |
| | | */ |
| | | public Map<String, String> weixinpayCallback(HttpServletRequest request){ |
| | | try { |
| | | String param = this.getParam(request); |
| | | param = param.replaceAll("<!\\[CDATA\\[",""); |
| | | param = param.replaceAll("]]>", ""); |
| | | Map<String, String> map = this.xmlToMap(param, "UTF-8"); |
| | | String return_code = map.get("return_code"); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | Map<String, String> map1 = new HashedMap(); |
| | | map1.put("nonce_str", map.get("nonce_str")); |
| | | map1.put("out_trade_no", map.get("out_trade_no"));//存储的订单code |
| | | map1.put("attach", map.get("attach"));//存储订单id |
| | | map1.put("total_fee", map.get("total_fee")); |
| | | map1.put("transaction_id", map.get("transaction_id"));//微信支付订单号 |
| | | String result = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; |
| | | map1.put("result", result); |
| | | |
| | | |
| | | |
| | | return map1; |
| | | }else{ |
| | | System.err.println(map.get("err_code_des")); |
| | | } |
| | | }else{ |
| | | System.err.println(map.get("return_msg")); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Resource |
| | | private CoursePackageClient coursePackageClient; |
| | | @Resource |
| | | private DeductionCompetitionsClient competitionsClient; |
| | | |
| | | @Resource |
| | | private SiteClient siteClient; |
| | | // @Autowired |
| | | // private WxPayService wxPayService; |
| | | //分账 |
| | | // public ResultUtil order(String code) throws Exception { |
| | | // |
| | | // |
| | | // |
| | | // Integer coursePackagePayments = coursePackageClient.queryByCode(code); |
| | | // Integer paymentCompetitions = competitionsClient.queryByCode(code); |
| | | // Integer siteBookings = siteClient.queryByCode(code); |
| | | // List<Integer> stores = new ArrayList<>(); |
| | | // stores.add(coursePackagePayments); |
| | | // stores.add(paymentCompetitions); |
| | | // stores.add(siteBookings); |
| | | // |
| | | // OperatorUser operatorUser = siteClient.queryOperator(stores); |
| | | // |
| | | // |
| | | //// WxPayService myWxPayService = wxPayService.switchoverTo("mch_id"); |
| | | //// |
| | | //// ProfitSharingV3Service profitSharingV3Service = myWxPayService.getProfitSharingV3Service(); |
| | | // |
| | | // String nonceStr = RandomUtil.randomString(32); |
| | | // String appId = "您的appid"; |
| | | // |
| | | // |
| | | // //添加分账方 |
| | | // |
| | | //// ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); |
| | | //// profitSharingReceiver.setAccount("appid对应的openId"); |
| | | //// profitSharingReceiver.setAmount(1l); |
| | | //// profitSharingReceiver.setAppid(appId); |
| | | //// profitSharingReceiver.setType("PERSONAL_OPENID"); |
| | | //// profitSharingReceiver.setRelationType("PARTNER"); |
| | | //// profitSharingV3Service.addProfitSharingReceiver(profitSharingReceiver); |
| | | // |
| | | // //分账 |
| | | // ProfitSharingRequest profitSharingRequest = new ProfitSharingRequest(); |
| | | // profitSharingRequest.setAppid(appId); |
| | | // profitSharingRequest.setTransactionId("微信支付订单号"); |
| | | // profitSharingRequest.setOutOrderNo("业务系统唯一编号"); |
| | | // //分账完成后,剩余金额自动解冻并返回给商户账号,默认false |
| | | // profitSharingRequest.setUnfreezeUnsplit(true); |
| | | // //待分账金额1元 |
| | | // Long money = 1L; |
| | | // List<ProfitSharingReceiver> profitSharingReceivers = new ArrayList<>(); |
| | | // ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); |
| | | // profitSharingReceiver.setAccount("appid对应的openId,分账用户1"); |
| | | // |
| | | // |
| | | // //分账百分之5 |
| | | // profitSharingReceiver.setAmount(money * 100 / 5); |
| | | // profitSharingReceiver.setAppid(appId); |
| | | // profitSharingReceiver.setType("PERSONAL_OPENID"); |
| | | // profitSharingReceiver.setRelationType("PARTNER"); |
| | | // profitSharingReceiver.setDescription("test01"); |
| | | // profitSharingReceivers.add(profitSharingReceiver); |
| | | // |
| | | // ProfitSharingReceiver receiver = new ProfitSharingReceiver(); |
| | | // receiver.setAccount("appid对应的openId,分账用户2"); |
| | | // //百分之10 |
| | | // receiver.setAmount(money * 100 / 10); |
| | | // receiver.setAppid(appId); |
| | | // receiver.setType("PERSONAL_OPENID"); |
| | | // receiver.setRelationType("PARTNER"); |
| | | // receiver.setDescription("test02"); |
| | | // profitSharingReceivers.add(receiver); |
| | | // |
| | | // |
| | | // profitSharingRequest.setReceivers(profitSharingReceivers); |
| | | // |
| | | // profitSharingV3Service.profitSharing(profitSharingRequest); |
| | | // |
| | | // |
| | | // |
| | | // |
| | | //// Map<String,String> headers = new HashMap<>(); |
| | | //// headers.put("Authorization",map.get("sign")); |
| | | //// headers.put("Accept","application/json"); |
| | | //// headers.put("Wechatpay-Serial",certPath); |
| | | //// |
| | | //// List<Receivers> receivers = new ArrayList<>(); |
| | | //// |
| | | //// Map<String,Object> body = new HashMap<>(); |
| | | //// body.put("appid",appid); |
| | | //// body.put("transaction_id",map.get("transaction_id")); |
| | | //// body.put("out_order_no",map.get("out_trade_no")); |
| | | //// body.put("receivers",receivers); |
| | | //// body.put("unfreeze_unsplit",true); |
| | | // |
| | | // //支付分账 |
| | | //// String url ="https://api.mch.weixin.qq.com/v3/profitsharing/orders"; |
| | | //// CloseableHttpResponse closeableHttpResponse = HttpClientUtil.setPostHttpRequset(url, body, headers, "application/json"); |
| | | //// |
| | | // |
| | | // return null; |
| | | // |
| | | // |
| | | // |
| | | // |
| | | // } |
| | | |
| | | /** |
| | | * 微信扫码收款 |
| | | * @param body 商品描述 |
| | | * @param attach 附加数据 |
| | | * @param nonce_str 随机字符串 |
| | | * @param out_trade_no 商户订单号 |
| | | * @param total_fee 订单金额 |
| | | * @param auth_code 授权码 扫码支付授权码,设备读取用户微信中的条码或者二维码信息(注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头) |
| | | * @return |
| | | */ |
| | | public ResultUtil wxScanQRCodePay(String body, String attach, String nonce_str, String out_trade_no, String total_fee, String auth_code){ |
| | | int i = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String hostAddress = null; |
| | | try { |
| | | InetAddress address = InetAddress.getLocalHost(); |
| | | hostAddress = address.getHostAddress(); |
| | | } catch (UnknownHostException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String randomCode = null; |
| | | try { |
| | | randomCode = UUIDUtil.getRandomCode(10); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("appid", appid); |
| | | map.put("mch_id", mchId); |
| | | map.put("nonce_str", nonce_str);//存储的支付人员id,员工扫描二维码支付的时候存储的是收款员工id |
| | | map.put("body", body); |
| | | map.put("attach", attach);//存储的费用月份数据,员工扫描二维码支付的时候存储的是收费项id |
| | | map.put("out_trade_no", randomCode + "_" + out_trade_no);//存储的房间id |
| | | map.put("total_fee", i); |
| | | map.put("spbill_create_ip", hostAddress); |
| | | map.put("auth_code", auth_code); |
| | | String s = this.weixinSignature(map); |
| | | map.put("sign", s); |
| | | |
| | | String url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = null; |
| | | try { |
| | | body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | String type = map1.get("trade_type"); |
| | | switch (type){ |
| | | case "JSAPI": |
| | | break; |
| | | case "NATIVE": |
| | | String code_url = map1.get("code_url"); |
| | | return ResultUtil.success(code_url); |
| | | case "APP": |
| | | String prepay_id = map1.get("prepay_id"); |
| | | //重新进行签名后返回给前端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("appid", appid); |
| | | map2.put("noncestr", nonce_str); |
| | | map2.put("package", "Sign=WXPay"); |
| | | map2.put("partnerid", mchId); |
| | | map2.put("prepayid", prepay_id); |
| | | map2.put("timestamp", new Date().getTime() + ""); |
| | | String s1 = this.weixinSignature(map2); |
| | | |
| | | map2.put("pac", "Sign=WXPay"); |
| | | map2.put("sign", s1); |
| | | // System.err.println(map2); |
| | | return ResultUtil.success(map2); |
| | | } |
| | | return null; |
| | | }else{ |
| | | // System.err.println(map1.get("err_code_des")); |
| | | return ResultUtil.error(map1.get("err_code_des")); |
| | | } |
| | | }else{ |
| | | // System.err.println(map1.get("return_msg") + appid + "----" + mchId); |
| | | return ResultUtil.error(map1.get("return_msg"), new JSONObject()); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 支付宝扫码收款 |
| | | * @param data |
| | | * @return |
| | | */ |
| | | public Object aliScanQRCodePay(String data){ |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信退款申请 |
| | | * @param transaction_id 微信订单号。微信生成的订单号,在支付通知中有返回 |
| | | * @param out_refund_no 商户退款单号。商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。 |
| | | * @param total_fee 订单金额。订单总金额,单位为分,只能为整数 |
| | | * @param refund_fee 退款金额。退款总金额,订单总金额,单位为分,只能为整数 |
| | | * @param notify_url 退款结果通知url。异步接收微信支付退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数 如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效。 |
| | | * @return |
| | | */ |
| | | public Map<String, String> wxRefund(String transaction_id, String out_refund_no, String total_fee, String refund_fee, String notify_url){ |
| | | int tf = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | int rf = new BigDecimal(refund_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String nonce_str = UUIDUtil.getRandomCode(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("appid", appid); |
| | | map.put("mch_id", mchId); |
| | | map.put("nonce_str", nonce_str); |
| | | map.put("transaction_id", transaction_id); |
| | | map.put("out_refund_no", out_refund_no); |
| | | map.put("total_fee", tf); |
| | | map.put("refund_fee", rf); |
| | | map.put("notify_url", callbackPath + notify_url); |
| | | String s = this.weixinSignature(map, key); |
| | | map.put("sign", s); |
| | | |
| | | String url = "https://api.mch.weixin.qq.com/secapi/pay/refund"; |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = null; |
| | | try { |
| | | body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | System.err.println(body1); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | Map<String, String> map2 = new HashMap<>(); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | map2.put("return_code", result_code); |
| | | map2.put("refund_id", String.valueOf(map1.get("refund_id")));//微信退款订单号 |
| | | map2.put("refund_fee", String.valueOf(map1.get("refund_fee")));//退款金额 |
| | | return map2; |
| | | }else{ |
| | | map2.put("return_code", result_code); |
| | | map2.put("return_msg", map1.get("err_code_des")); |
| | | return map2; |
| | | } |
| | | }else{ |
| | | map2.put("return_code", return_code); |
| | | map2.put("return_msg", map1.get("return_msg")); |
| | | return map2; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信退款成功后的回调处理 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | public Map<String, String> wxRefundCallback(HttpServletRequest request){ |
| | | try { |
| | | String param = this.getParam(request); |
| | | param = param.replaceAll("<!\\[CDATA\\[",""); |
| | | param = param.replaceAll("]]>", ""); |
| | | Map<String, String> map = this.xmlToMap(param, "UTF-8"); |
| | | String return_code = map.get("return_code"); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String req_info = map.get("req_info");//加密信息请用商户秘钥进行解密 |
| | | String s = this.wxDecrypt(req_info); |
| | | s = s.replaceAll("<!\\[CDATA\\[",""); |
| | | s = s.replaceAll("]]>", ""); |
| | | map = this.xmlToMap(s, "UTF-8"); |
| | | Map<String, String> map1 = new HashMap<>(); |
| | | map1.put("refund_id", map.get("refund_id")); |
| | | map1.put("out_refund_no", map.get("out_refund_no")); |
| | | String result = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; |
| | | map1.put("result", result); |
| | | return map1; |
| | | }else{ |
| | | // System.err.println(map.get("return_msg")); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } catch (InvalidKeyException e) { |
| | | e.printStackTrace(); |
| | | } catch (NoSuchPaddingException e) { |
| | | e.printStackTrace(); |
| | | } catch (BadPaddingException e) { |
| | | e.printStackTrace(); |
| | | } catch (NoSuchProviderException e) { |
| | | e.printStackTrace(); |
| | | } catch (IllegalBlockSizeException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 支付宝退款 |
| | | * @param trade_no 支付宝交易号 |
| | | * @param refund_amount 退款金额 |
| | | * @return |
| | | * @throws AlipayApiException |
| | | */ |
| | | public Map<String, String> aliRefund(String trade_no, String refund_amount) throws AlipayApiException { |
| | | AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2"); |
| | | AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("trade_no", trade_no); |
| | | jsonObject.put("refund_amount", refund_amount); |
| | | request.setBizContent(jsonObject.toJSONString()); |
| | | AlipayTradeRefundResponse response = alipayClient.execute(request); |
| | | Map<String, String> map = new HashMap<>(); |
| | | if(response.isSuccess()){ |
| | | System.out.println("调用成功"); |
| | | String outTradeNo = response.getOutTradeNo(); |
| | | map.put("code", response.getCode());//10000 |
| | | map.put("trade_no", response.getTradeNo());//支付宝交易号 |
| | | map.put("out_trade_no", outTradeNo);//商户订单号 |
| | | } else { |
| | | System.out.println("调用失败"); |
| | | map.put("code", response.getCode()); |
| | | map.put("msg", response.getSubMsg()); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询微信支付订单 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public ResultUtil<Map<String, String>> queryWXOrder(String out_trade_no, String transaction_id) throws Exception{ |
| | | String url = "https://api.mch.weixin.qq.com/pay/orderquery"; |
| | | String nonce_str = UUIDUtil.getRandomCode(16); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("appid", appid); |
| | | map.put("mch_id", mchId); |
| | | map.put("out_trade_no", out_trade_no);//商户订单号 |
| | | map.put("transaction_id", transaction_id);//微信订单号 |
| | | map.put("nonce_str", nonce_str);//随机字符串 |
| | | String s = this.weixinSignature(map); |
| | | map.put("sign", s); |
| | | |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = HttpClientUtil.pushHttpRequsetXml(url, xmlString.toString(), new HashMap<>()).getData(); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | Map<String, String> map2 = new HashMap<>(); |
| | | map2.put("trade_type", map1.get("trade_type")); |
| | | map2.put("trade_state", map1.get("trade_state"));//订单状态SUCCESS—支付成功,REFUND—转入退款,NOTPAY—未支付,CLOSED—已关闭,REVOKED—已撤销(刷卡支付),USERPAYING--用户支付中,PAYERROR--支付失败(其他原因,如银行返回失败) |
| | | map2.put("transaction_id", map1.get("transaction_id")); |
| | | return ResultUtil.success(map2); |
| | | }else{ |
| | | System.err.println(map1.get("err_code_des")); |
| | | return ResultUtil.error(map1.get("err_code_des")); |
| | | } |
| | | }else{ |
| | | System.err.println(map1.get("return_msg") + appid + "----" + mchId); |
| | | return ResultUtil.error(map1.get("return_msg")); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 微信转账功能(企业付款到零钱) |
| | | * @param openid 商户appid下,某用户的openid |
| | | * @param desc 企业付款备注,必填。 |
| | | * @param total_fee 企业付款金额 |
| | | * @param partner_trade_no 商户订单号,需保持唯一性 |
| | | * @return |
| | | */ |
| | | public Map<String, String> wxTransfers(String openid, String desc, String total_fee, String partner_trade_no) throws Exception{ |
| | | int amount = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String nonce_str = UUIDUtil.getRandomCode(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("mch_appid", appid);//申请商户号的appid或商户号绑定的appid |
| | | map.put("mchid", mchId);//微信支付分配的商户号 |
| | | map.put("nonce_str", nonce_str);//随机字符串,不长于32位 |
| | | map.put("partner_trade_no", partner_trade_no);//商户订单号,需保持唯一性 |
| | | map.put("openid", openid);//商户appid下,某用户的openid |
| | | map.put("check_name", "NO_CHECK");//NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名 |
| | | map.put("amount", amount);//企业付款金额,单位为分 |
| | | map.put("desc", desc);//企业付款备注,必填。 |
| | | String s = this.weixinSignature(map, key); |
| | | map.put("sign", s); |
| | | |
| | | String url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | Map<String, String> map2 = new HashMap<>(); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | map2.put("return_code", result_code); |
| | | map2.put("payment_no", String.valueOf(map1.get("payment_no")));//付款订单号 |
| | | map2.put("payment_time", String.valueOf(map1.get("payment_time")));//付款时间 |
| | | return map2; |
| | | }else{ |
| | | map2.put("return_code", result_code); |
| | | map2.put("err_code", map1.get("err_code")); |
| | | map2.put("err_code_des", map1.get("err_code_des")); |
| | | return map2; |
| | | } |
| | | }else{ |
| | | map2.put("return_code", return_code); |
| | | map2.put("return_msg", map1.get("return_msg")); |
| | | return map2; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信转账功能(企业付款到银行卡) |
| | | * @param desc 备注信息 |
| | | * @param total_fee 转账金额 |
| | | * @param partner_trade_no 订单号 |
| | | * @param enc_bank_no 银行卡号 |
| | | * @param enc_true_name 收款方用户名 |
| | | * @param bankName 银行名称 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public Map<String, String> wxPayBank(String desc, String total_fee, String partner_trade_no, String enc_bank_no, String enc_true_name, String bankName) throws Exception{ |
| | | int amount = new BigDecimal(total_fee).multiply(new BigDecimal("100")).intValue(); |
| | | String nonce_str = UUIDUtil.getRandomCode(); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("mch_id", mchId);//微信支付分配的商户号 |
| | | map.put("nonce_str", nonce_str);//随机字符串,不长于32位 |
| | | map.put("partner_trade_no", partner_trade_no);//商户订单号,需保持唯一性 |
| | | map.put("enc_bank_no", enc_bank_no);//收款方银行卡号(采用标准RSA算法,公钥由微信侧提供) |
| | | map.put("enc_true_name", enc_true_name);//收款方用户名(采用标准RSA算法,公钥由微信侧提供) |
| | | map.put("bank_code", findBankCode(bankName));// |
| | | map.put("amount", amount);//企业付款金额,单位为分 |
| | | map.put("desc", desc);//企业付款备注,必填。 |
| | | String s = this.weixinSignature(map, key); |
| | | map.put("sign", s); |
| | | |
| | | String url = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank"; |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_XML); |
| | | StringBuffer xmlString = new StringBuffer(); |
| | | Set<String> strings = map.keySet(); |
| | | String[] keys = {}; |
| | | keys = strings.toArray(keys); |
| | | Arrays.sort(keys); |
| | | xmlString.append("<xml>"); |
| | | for(int l = 0; l < keys.length; l++){ |
| | | xmlString.append("<" + keys[l] + ">" + map.get(keys[l]) + "</" + keys[l] + ">"); |
| | | } |
| | | xmlString.append("</xml>"); |
| | | |
| | | Map<String, String> map1 = null; |
| | | String body1 = HttpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); |
| | | //将结果xml解析成map |
| | | body1 = body1.replaceAll("<!\\[CDATA\\[",""); |
| | | body1 = body1.replaceAll("]]>", ""); |
| | | try { |
| | | map1 = this.xmlToMap(body1, "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (DocumentException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | String return_code = map1.get("return_code"); |
| | | Map<String, String> map2 = new HashMap<>(); |
| | | if("SUCCESS".equals(return_code)){ |
| | | String result_code = map1.get("result_code"); |
| | | if("SUCCESS".equals(result_code)){ |
| | | map2.put("return_code", result_code); |
| | | map2.put("payment_no", String.valueOf(map1.get("payment_no")));//付款订单号 |
| | | map2.put("cmms_amt", String.valueOf(map1.get("cmms_amt")));//手续费金额 RMB:分 |
| | | return map2; |
| | | }else{ |
| | | map2.put("return_code", result_code); |
| | | map2.put("err_code", map1.get("err_code")); |
| | | map2.put("err_code_des", map1.get("err_code_des")); |
| | | return map2; |
| | | } |
| | | }else{ |
| | | map2.put("return_code", return_code); |
| | | map2.put("return_msg", map1.get("return_msg")); |
| | | return map2; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 微信转账到银行卡不编号 |
| | | * @param bankName |
| | | * @return |
| | | */ |
| | | public String findBankCode(String bankName){ |
| | | String json = "{\"工商银行 \":1002,\"农业银行\":1005,\"建设银行\":1003,\"中国银行\":1026,\"交通银行 \":1020,\"招商银行 \":1001,\"邮储银行\":1066,\"民生银行 \":1006,\"平安银行 \":1010,\"中信银行\":1021,\"浦发银行 \":1004,\"兴业银行 \":1009,\"光大银行 \":1022,\"广发银行\":1027,\"华夏银行\":1025,\"宁波银行\":1056,\"北京银行\":4836,\"上海银行\":1024,\"南京银行\":1054,\"长子县融汇村镇银行\":4755,\"长沙银行\":4216,\"浙江泰隆商业银行\":4051,\"中原银行 \":4753,\"企业银行(中国)\":4761,\"顺德农商银行 \":4036,\"衡水银行\":4752,\"长治银行\":4756,\"大同银行\":4767,\"河南省农村信用社\":4115,\"宁夏黄河农村商业银行\":4150,\"山西省农村信用社\":4156,\"安徽省农村信用社\":4166,\"甘肃省农村信用社\":4157,\"天津农村商业银行\":4153,\"广西壮族自治区农村信用社\":4113,\"陕西省农村信用社\":4108,\"深圳农村商业银行\":4076,\"宁波鄞州农村商业银行\":4052,\"浙江省农村信用社联合社\":4764,\"江苏省农村信用社联合社\":4217,\"江苏紫金农村商业银行股份有限公司 \":4072,\"北京中关村银行股份有限公司 \":4769,\"星展银行( 中国) 有限公司 \":4778,\"枣庄银行股份有限公司 \":4766,\"海口联合农村商业银行股份有限公司 \":4758,\"南洋商业银行( 中国) 有限公司 \":4763}"; |
| | | JSONObject jsonObject = JSON.parseObject(json); |
| | | Set<String> strings = jsonObject.keySet(); |
| | | for(String key : strings){ |
| | | if(key.indexOf(bankName) >= 0){ |
| | | return jsonObject.getString(key); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 支付宝转账 |
| | | * @param out_biz_no 商家侧唯一订单号,由商家自定义。对于不同转账请求,商家需保证该订单号在自身系统唯一。 |
| | | * @param trans_amount 订单总金额,单位为元,精确到小数点后两位 |
| | | * @param order_title 转账业务的标题,用于在支付宝用户的账单里显示 |
| | | * @param identity 参与方的唯一标识(收款方支付宝账号) |
| | | * @param name 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。 |
| | | * @param remark 业务备注 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | public Map<String, Object> aliTransfer(String out_biz_no, Double trans_amount, String order_title, String identity, String name, String remark) throws Exception{ |
| | | CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); |
| | | certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do"); //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do |
| | | certAlipayRequest.setAppId(aliAppid); //APPID 即创建应用后生成,详情见创建应用并获取 APPID |
| | | certAlipayRequest.setPrivateKey(appPrivateKey); //开发者应用私钥,由开发者自己生成 |
| | | certAlipayRequest.setFormat("json"); //参数返回格式,只支持 json 格式 |
| | | certAlipayRequest.setCharset("UTF-8"); //请求和签名使用的字符编码格式,支持 GBK和 UTF-8 |
| | | certAlipayRequest.setSignType("RSA2"); //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。 |
| | | certAlipayRequest.setCertPath(app_cert_path); //应用公钥证书路径(app_cert_path 文件绝对路径) |
| | | certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); //支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径) |
| | | certAlipayRequest.setRootCertPath(alipay_root_cert_path); //支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径) |
| | | AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); |
| | | AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); |
| | | request.setBizContent("{" + |
| | | "\"out_biz_no\":\"" + out_biz_no + "\"," + |
| | | "\"trans_amount\":" + trans_amount + "," + |
| | | "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," + |
| | | "\"biz_scene\":\"DIRECT_TRANSFER\"," + |
| | | "\"order_title\":\"" + order_title + "\"," + |
| | | "\"payee_info\":{" + |
| | | "\"identity\":\"" + identity + "\"," + |
| | | "\"identity_type\":\"ALIPAY_USER_ID\"," + |
| | | "\"name\":\"" + name + "\"," + |
| | | "}," + |
| | | "\"remark\":\"" + remark + "\"" + |
| | | "}"); |
| | | AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if(response.isSuccess()){ |
| | | String status = response.getStatus(); |
| | | if(status.equals("SUCCESS")){//成功 |
| | | map.put("code", response.getCode()); |
| | | map.put("order_id", response.getOrderId());//支付宝订单号 |
| | | map.put("pay_fund_order_id", response.getPayFundOrderId());//支付宝流水号 |
| | | }else{ |
| | | map.put("code", response.getCode()); |
| | | map.put("sub_msg", response.getSubMsg()); |
| | | } |
| | | } else { |
| | | map.put("code", response.getSubCode()); |
| | | map.put("sub_msg", response.getSubMsg()); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取请求内容 |
| | | * @param request |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | private String getParam(HttpServletRequest request) throws IOException { |
| | | // 读取参数 |
| | | InputStream inputStream; |
| | | StringBuilder sb = new StringBuilder(); |
| | | inputStream = request.getInputStream(); |
| | | String s; |
| | | BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); |
| | | while ((s = in.readLine()) != null) { |
| | | sb.append(s); |
| | | } |
| | | in.close(); |
| | | inputStream.close(); |
| | | return sb.toString(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信下单的签名算法 |
| | | * @param map |
| | | * @return |
| | | */ |
| | | private String weixinSignature(Map<String, Object> map){ |
| | | try { |
| | | Set<Map.Entry<String, Object>> entries = map.entrySet(); |
| | | List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries); |
| | | // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) |
| | | Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() { |
| | | public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) { |
| | | return (o1.getKey()).toString().compareTo(o2.getKey()); |
| | | } |
| | | }); |
| | | // 构造签名键值对的格式 |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Map.Entry<String, Object> item : infoIds) { |
| | | if (item.getKey() != null || item.getKey() != "") { |
| | | String key = item.getKey(); |
| | | Object val = item.getValue(); |
| | | if (!(val == "" || val == null)) { |
| | | sb.append(key + "=" + val + "&"); |
| | | } |
| | | } |
| | | } |
| | | sb.append("key=" + key); |
| | | String sign = MD5AndKL.MD5Encode(sb.toString(), "UTF-8").toUpperCase(); //注:MD5签名方式 |
| | | return sign; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信下单的签名算法 |
| | | * @param map |
| | | * @return |
| | | */ |
| | | private String weixinSignature(Map<String, Object> map, String key_){ |
| | | try { |
| | | Set<Map.Entry<String, Object>> entries = map.entrySet(); |
| | | List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(entries); |
| | | // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序) |
| | | Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() { |
| | | public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) { |
| | | return (o1.getKey()).toString().compareTo(o2.getKey()); |
| | | } |
| | | }); |
| | | // 构造签名键值对的格式 |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Map.Entry<String, Object> item : infoIds) { |
| | | if (item.getKey() != null || item.getKey() != "") { |
| | | String key = item.getKey(); |
| | | Object val = item.getValue(); |
| | | if (!(val == "" || val == null)) { |
| | | sb.append(key + "=" + val + "&"); |
| | | } |
| | | } |
| | | } |
| | | sb.append("key=" + key_); |
| | | String sign = MD5AndKL.MD5Encode(sb.toString(), "UTF-8").toUpperCase(); //注:MD5签名方式 |
| | | return sign; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 微信退款成功后的解密 |
| | | * @param req_info |
| | | * @return |
| | | */ |
| | | private String wxDecrypt(String req_info) throws NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, |
| | | InvalidKeyException, BadPaddingException, IllegalBlockSizeException { |
| | | byte[] decode = Base64.getDecoder().decode(req_info); |
| | | String sign = MD5AndKL.MD5Encode(key, "UTF-8").toLowerCase(); |
| | | if (Security.getProvider("BC") == null){ |
| | | Security.addProvider(new BouncyCastleProvider()); |
| | | } |
| | | Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC"); |
| | | SecretKeySpec secretKeySpec = new SecretKeySpec(sign.getBytes(), "AES"); |
| | | cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); |
| | | return new String(cipher.doFinal(decode)); |
| | | } |
| | | |
| | | |
| | | // public static void main(String[] ages){ |
| | | // PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); |
| | | // ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com"); |
| | | // System.err.println(ce); |
| | | // ResultUtil resultUtil = null; |
| | | // try { |
| | | // resultUtil = payMoneyUtil.queryALIOrder("121456457"); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // System.err.println(resultUtil); |
| | | // } |
| | | |
| | | |
| | | /** |
| | | * xml转map |
| | | * @param xml |
| | | * @param charset |
| | | * @return |
| | | * @throws UnsupportedEncodingException |
| | | * @throws DocumentException |
| | | */ |
| | | public static Map<String, String> xmlToMap(String xml, String charset) throws UnsupportedEncodingException, DocumentException { |
| | | |
| | | Map<String, String> respMap = new HashMap<String, String>(); |
| | | |
| | | SAXReader reader = new SAXReader(); |
| | | Document doc = reader.read(new ByteArrayInputStream(xml.getBytes(charset))); |
| | | Element root = doc.getRootElement(); |
| | | xmlToMap(root, respMap); |
| | | return respMap; |
| | | } |
| | | |
| | | public static Map<String, String> xmlToMap(Element tmpElement, Map<String, String> respMap){ |
| | | if (tmpElement.isTextOnly()) { |
| | | respMap.put(tmpElement.getName(), tmpElement.getText()); |
| | | return respMap; |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | Iterator<Element> eItor = tmpElement.elementIterator(); |
| | | while (eItor.hasNext()) { |
| | | Element element = eItor.next(); |
| | | xmlToMap(element, respMap); |
| | | } |
| | | return respMap; |
| | | } |
| | | } |
| | |
| | | coupon.setIllustrate(dataVo.getIllustrate()); |
| | | coupon.setDistributionMethod(dataVo.getDistributionMethod()); |
| | | coupon.setRedemptionMethod(dataVo.getExchangeMethod()); |
| | | if (dataVo.getExchangeMethod() != null) { |
| | | if (dataVo.getExchangeMethod() != null&&dataVo.getDistributionMethod()!=4) { |
| | | switch (dataVo.getExchangeMethod()) { |
| | | case 1: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | break; |
| | | |
| | | case 2: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | | case 3: |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | |
| | | @Autowired |
| | | private PointsMerchandiseStoreService pointsMerchandiseStoreService; |
| | | |
| | | |
| | | @Autowired |
| | | private CouponStoreService couponStoreService; |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/pointMerchars/convertGoods") |
| | | public List<IntegralCommodity> getConvertibleGoods(@RequestBody Location location) throws Exception { |
| | |
| | | } |
| | | } |
| | | |
| | | List<CouponStore> storeId = couponStoreService.list(new QueryWrapper<CouponStore>().eq("storeId", s.getId())); |
| | | List<Integer> storeCoupons = new ArrayList<>(); |
| | | for (CouponStore couponStore : storeId) { |
| | | storeCoupons.add(couponStore.getCouponId()); |
| | | } |
| | | List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().in("id", storeCoupons).eq("state", 1).gt("endTime", new Date()).last("ORDER BY insertTime desc")); |
| | | if (!list.isEmpty()){ |
| | | for (Coupon coupon : list) { |
| | | IntegralCommodity integralCommodity = new IntegralCommodity(); |
| | | integralCommodity.setCommodityId(coupon.getId()); |
| | | integralCommodity.setCommodityImg(coupon.getCover()); |
| | | integralCommodity.setCommodityName(coupon.getName()); |
| | | integralCommodity.setCommodityPrice(coupon.getIntegral()); |
| | | integralCommodity.setGoodsType(coupon.getType()); |
| | | // integralCommodity.setSort(coupon.getSort()); |
| | | commodity.add(integralCommodity); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | System.out.println(commodity); |
| | |
| | | where 1 = 1 and distributionMethod = 4 |
| | | and auditStatus = 2 |
| | | and startTime < now() |
| | | and state= 1 |
| | | <if test="cityCode != null"> |
| | | and id in( |
| | | SELECT DISTINCT couponId FROM |
| | |
| | | WHERE storeId = #{storeId} |
| | | UNION ALL |
| | | SELECT DISTINCT couponId |
| | | |
| | | from t_coupon_city |
| | | WHERE provinceCode = #{cityCode}) o) |
| | | WHERE cityCode = #{cityCode}) o) |
| | | </if> |
| | | <if test="name != null"> |
| | | and `name` like concat('%', #{name}, '%') |
| | |
| | | <if test="state != null"> |
| | | and `state` = #{state} |
| | | </if> |
| | | |
| | | |
| | | union all |
| | | SELECT id, |
| | | `name`, |
| | |
| | | from t_coupon |
| | | where 1 = 1 and distributionMethod = 4 and useScope = 1 |
| | | and auditStatus = 2 |
| | | and state= 1 |
| | | and startTime < now() |
| | | <if test="name != null"> |
| | | and `name` like concat('%', #{name}, '%') |
| | | </if> |
| | | <if test="type != null"> |
| | | and type = #{type} |
| | | </if> |
| | | |
| | | <if test="userPopulation != null"> |
| | | and userPopulation = #{userPopulation} |
| | | </if> |
| | | <if test="status !=null"> |
| | | and `status` = #{status} |
| | | </if> |
| | | <if test="state != null"> |
| | | and `state` = #{state} |
| | | </if> |
| | | |
| | | </select> |
| | | <select id="queryCouponExamineList" resultType="java.util.Map"> |
| | |
| | | import com.dsh.competition.entity.PaymentCompetition; |
| | | import com.dsh.competition.entity.UserCompetition; |
| | | import com.dsh.competition.feignclient.account.AppUserClient; |
| | | import com.dsh.competition.feignclient.account.StudentClient; |
| | | import com.dsh.competition.feignclient.account.model.AppUser; |
| | | import com.dsh.competition.feignclient.account.model.TStudent; |
| | | import com.dsh.competition.feignclient.course.CoursePackagePaymentClient; |
| | | import com.dsh.competition.feignclient.course.model.PaymentDeductionClassHour; |
| | | import com.dsh.competition.feignclient.model.*; |
| | |
| | | } |
| | | } |
| | | |
| | | @Resource |
| | | private StudentClient studentClient; |
| | | @PostMapping("/base/competition/getPeopleFromId1") |
| | | public List<CompetitionUser> getPeopleFromId1(@RequestBody GetPeopleQuery getPeopleQuery) { |
| | | try { |
| | | Page<UserCompetition> participantPage = new Page<>(getPeopleQuery.getOffset(), getPeopleQuery.getLimit()); |
| | | List<CompetitionUser> page = participantService.getPeopleFromId1(participantPage, getPeopleQuery.getId(), getPeopleQuery.getState()); |
| | | |
| | | List<CompetitionUser> users = new ArrayList<>(); |
| | | List<UserCompetition> coms = userCompetitionService.list(new QueryWrapper<UserCompetition>().eq("competitionId", getPeopleQuery.getId())); |
| | | for (UserCompetition com : coms) { |
| | | int number = com.getParticipantId(); |
| | | String numberString = Integer.toString(number); |
| | | int digitCount = numberString.length(); |
| | | if (digitCount!=9){ |
| | | TStudent tStudent = studentClient.queryById(number); |
| | | CompetitionUser competitionUser = new CompetitionUser(); |
| | | competitionUser.setName(tStudent.getName()); |
| | | competitionUser.setPhone(tStudent.getPhone()); |
| | | competitionUser.setSex(tStudent.getSex()); |
| | | competitionUser.setIdCard(tStudent.getIdCard()); |
| | | competitionUser.setState(tStudent.getState()); |
| | | users.add(competitionUser); |
| | | } |
| | | } |
| | | page.addAll(users); |
| | | |
| | | return page; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/base/competition/getPeoples") |
| | | @ResponseBody |
| | | public List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery) { |
| | |
| | | public interface ParticipantMapper extends BaseMapper<Participant> { |
| | | Page<CompetitionUser> getPeopleFromId(@Param("participantPage") Page<UserCompetition> participantPage, @Param("id") Integer id, @Param("state") Integer state); |
| | | |
| | | |
| | | List<CompetitionUser> getPeopleFromId1(@Param("participantPage") Page<UserCompetition> participantPage, @Param("id") Integer id, @Param("state") Integer state); |
| | | |
| | | List<CompetitionUser> getPeoples(@Param("id") Integer id, @Param("state") Integer state); |
| | | } |
| | |
| | | void saveParticipant(SaveParticipant saveParticipant) throws Exception; |
| | | |
| | | Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state); |
| | | List<CompetitionUser> getPeopleFromId1(Page<UserCompetition> participantPage, Integer id, Integer state); |
| | | |
| | | List<CompetitionUser> getPeoples(Integer id, Integer state); |
| | | } |
| | |
| | | public Page<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state) { |
| | | return this.baseMapper.getPeopleFromId(participantPage, id, state); |
| | | } |
| | | @Override |
| | | public List<CompetitionUser> getPeopleFromId1(Page<UserCompetition> participantPage, Integer id, Integer state) { |
| | | return this.baseMapper.getPeopleFromId1(participantPage, id, state); |
| | | } |
| | | |
| | | @Override |
| | | public List<CompetitionUser> getPeoples(Integer id, Integer state) { |
| | |
| | | and t3.payStatus =3 |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="getPeopleFromId1" resultType="com.dsh.competition.feignclient.model.CompetitionUser"> |
| | | select t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state |
| | | from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id |
| | | left join t_payment_competition t3 on t1.paymentCompetitionId = t3.id |
| | | where t1.competitionId =#{id} and t2.id is not null and t3.id is not null |
| | | <if test="state !=null and state !='' and state ==1"> |
| | | and t3.payStatus in (1,2) |
| | | </if> |
| | | <if test="state !=null and state !='' and state ==3"> |
| | | and t3.payStatus =3 |
| | | </if> |
| | | </select> |
| | | <select id="getPeoples" resultType="com.dsh.competition.feignclient.model.CompetitionUser"> |
| | | select t2.id, t2.name,t2.gender sex,t2.phone ,t2.idcard idCard ,t3.payStatus state |
| | | from t_user_competition t1 left join t_participant t2 on t1.participantId = t2.id |
| | |
| | | import com.dsh.course.util.*; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.obs.services.internal.ServiceException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | |
| | | Store store = storeClient.queryStoreById(re.getStoreId()); |
| | | TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId()); |
| | | String studentId = re.getStudentId(); |
| | | String[] split = studentId.split(","); |
| | | String[] split = studentId.split(";"); |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | |
| | | for (String s : split) { |
| | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/coursePackagePayment/consumeCourse") |
| | | public ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId) { |
| | | public Integer consumeCourse(@RequestBody Integer coursePackagePaymentId) { |
| | | CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(coursePackagePaymentId); |
| | | |
| | | TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); |
| | | |
| | | if (coursePackageOrderStudent.getLaveClassHours()<coursePackage.getNeedNum()){ |
| | | return ResultUtil.error("当前学员课时数不足"); |
| | | return 1; |
| | | } |
| | | coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-coursePackage.getNeedNum()); |
| | | orderStudentService.updateById(coursePackageOrderStudent); |
| | |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("补课"); |
| | | courseCounsumService.save(courseCounsum); |
| | | return ResultUtil.success("补课成功"); |
| | | return 2; |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/coursePackagePayment/CountqueryByClassId") |
| | | public Integer CountqueryByClassId(@RequestBody Integer id) { |
| | | int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id)); |
| | | int coursePackageId = coursePackageOrderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id)); |
| | | |
| | | |
| | | return coursePackageId; |
| | |
| | | detailsListVo.setIsType(list4.get(0).getType()); |
| | | |
| | | for (CoursePackageStudent coursePackageStudent : list4) { |
| | | CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId()); |
| | | if (coursePackageScheduling.getStatus()==4){ |
| | | detailsListVo.setIsType(3); |
| | | } |
| | | |
| | | Integer signInOrNot1 = coursePackageStudent.getSignInOrNot(); |
| | | detailsListVo.setType(1); |
| | | |
| | |
| | | detailsListVo.setType(3); |
| | | } |
| | | detailsListVo.setIsType(coursePackageStudent.getType()); |
| | | CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId()); |
| | | Date classDate = coursePackageScheduling.getClassDate(); |
| | | Date endDate = coursePackageScheduling.getEndDate(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/queryAble") |
| | | public Integer queryAble(@RequestBody Integer id) { |
| | | |
| | | int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", id)); |
| | | if (coursePackageId>0){ |
| | | return 1; |
| | | }else { |
| | | return 0; |
| | | } |
| | | |
| | | } |
| | | |
| | | //获取学员课时数信息 |
| | | @RequestMapping("/getInfo") |
| | | @ResponseBody |
| | |
| | | studentClassInfo.setInDate(minDate); |
| | | System.out.println("===========>" + studentClassInfo); |
| | | |
| | | // appUserClient.queryGift(tStudentId); |
| | | |
| | | return studentClassInfo; |
| | | } |
| | | |
| | |
| | | System.out.println("==========getClassList===tStudentId====" + tStudentId); |
| | | List<ClassListDto> listDtos = studentService.getClassList(tStudentId); |
| | | for (ClassListDto dto : listDtos) { |
| | | if (dto.getClassType()!=2) { |
| | | dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours()); |
| | | } |
| | | } |
| | | System.out.println("======listDtos======" + listDtos); |
| | | return listDtos; |
| | |
| | | |
| | | @RequestMapping("/insertBack") |
| | | @ResponseBody |
| | | public void insertBack(@RequestBody InsertBackDto insertBackDto) { |
| | | public Integer insertBack(@RequestBody InsertBackDto insertBackDto) { |
| | | |
| | | List<MoneyBack> ids = moneyBackService.list(new QueryWrapper<MoneyBack>().eq("ids", insertBackDto.getIds())); |
| | | |
| | | if (!ids.isEmpty()){ |
| | | return 1 ; |
| | | } |
| | | |
| | | |
| | | MoneyBack moneyBack = new MoneyBack(); |
| | | moneyBack.setStudentId(insertBackDto.getId()); |
| | |
| | | for (CoursePackageOrderStudent o : pays) { |
| | | o.setStatus(4); |
| | | o.setAppUserId(null); |
| | | List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>().eq("studentId", o.getStudentId()).eq("coursePackageId", o.getCoursePackageId()).ge("classDate", new Date())); |
| | | List<Long> scs = new ArrayList<>(); |
| | | for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) { |
| | | scs.add(coursePackageScheduling.getId()); |
| | | } |
| | | coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().in("coursePackageSchedulingId",scs)); |
| | | coursePackageSchedulingService.deleteBatchIds(scs); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | orderStudentService.updateBatchById(pays); |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private ICoursePackageOrderService coursePackageOrderService; |
| | | |
| | | @Autowired |
| | | private ICoursePackageOrderStudentService coursePackageOrderStudentService; |
| | | @RequestMapping("/queryByIds") |
| | | @ResponseBody |
| | | public List<TCoursePackagePayment> queryByIds(@RequestParam("ids") String ids) { |
| | | List<TCoursePackagePayment> paymentList = paymentService.list(new QueryWrapper<TCoursePackagePayment>() |
| | | public List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids") String ids) { |
| | | List<CoursePackageOrderStudent> paymentList = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>() |
| | | .in("id", Arrays.asList(ids.split(",")))); |
| | | |
| | | System.out.println("========client==>" + paymentList); |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | @RequestMapping("/noStatus") |
| | | @ResponseBody |
| | | public void noStatus(@RequestParam("id") Integer id) { |
| | |
| | | for (CoursePackageOrderStudent o : pays) { |
| | | o.setStatus(1); |
| | | o.setAppUserId(null); |
| | | schedulingService.addNewCoursePackageScheduling(o.getId(),o.getLaveClassHours()); |
| | | } |
| | | orderStudentService.updateBatchById(pays); |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @RequestMapping("/getOrder") |
| | | @ResponseBody |
| | | public List<CoursePackageOrder> getOrder(@RequestParam("id") Long id) { |
| | | |
| | | CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(id); |
| | | |
| | | List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).like("studentIds", coursePackageOrderStudent.getStudentId())); |
| | | return list; |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/backStausClass") |
| | | @ResponseBody |
| | | public void backStausClass(@RequestParam("id") Integer id) { |
| | | MoneyBack byId = moneyBackService.getById(id); |
| | | String[] split = byId.getIds().split(","); |
| | | System.out.println("========split===>" + split); |
| | | List<TCoursePackagePayment> id1 = paymentService.list(new QueryWrapper<TCoursePackagePayment>().in("id", split)); |
| | | for (TCoursePackagePayment o : id1) { |
| | | o.setStatus(1); |
| | | o.setAppUserId(null); |
| | | } |
| | | paymentService.updateBatchById(id1); |
| | | // MoneyBack byId = moneyBackService.getById(id); |
| | | // String[] split = byId.getIds().split(","); |
| | | // System.out.println("========split===>" + split); |
| | | // List<CoursePackageOrderStudent> id1 = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().in("id", split)); |
| | | // for (CoursePackageOrderStudent o : id1) { |
| | | // o.setStatus(1); |
| | | // o.setAppUserId(null); |
| | | // } |
| | | // coursePackageOrderStudentService.updateBatchById(id1); |
| | | } |
| | | |
| | | @RequestMapping("/cancel") |
| | |
| | | Integer appUserId = orinPay.getAppUserId(); |
| | | Integer appUserId1 = studentPay.getAppUserId(); |
| | | if (appUserId.compareTo(appUserId1) != 0) { |
| | | courseCounsum.setReason("课时赠送"); |
| | | courseCounsum.setReason("赠课"); |
| | | } else { |
| | | courseCounsum.setReason("课时转移"); |
| | | } |
| | |
| | | CourseCounsum courseCounsum1 = new CourseCounsum(); |
| | | courseCounsum1.setInsertTime(new Date()); |
| | | if (appUserId.compareTo(appUserId1) != 0) { |
| | | courseCounsum1.setReason("课时赠送"); |
| | | courseCounsum1.setReason("赠课"); |
| | | } else { |
| | | courseCounsum1.setReason("课时转移"); |
| | | } |
| | |
| | | calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays); |
| | | to.setUseTime(calendar.getTime()); |
| | | orderStudentService.save(to); |
| | | if(null == student.getValidity()){ |
| | | student.setValidity(calendar.getTime()); |
| | | }else if(student.getValidity().getTime() < calendar.getTime().getTime()){ |
| | | student.setValidity(calendar.getTime()); |
| | | } |
| | | studentClient.frozen(student); |
| | | |
| | | |
| | | Integer laveClassHours1 = orinPay.getLaveClassHours(); |
| | | Integer appUserId = orinPay.getAppUserId(); |
| | | orinPay.setLaveClassHours(0); |
| | | orinPay.setAppUserId(null); |
| | |
| | | |
| | | CourseCounsum courseCounsum = new CourseCounsum(); |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("课时赠送"); |
| | | courseCounsum.setNum(orinPay.getLaveClassHours()); |
| | | courseCounsum.setReason("赠课"); |
| | | courseCounsum.setNum(laveClassHours1); |
| | | courseCounsum.setChangeType(0); |
| | | courseCounsum.setPaymentId(orinPay.getId()); |
| | | counsumService.save(courseCounsum); |
| | |
| | | |
| | | CourseCounsum courseCounsum1 = new CourseCounsum(); |
| | | courseCounsum1.setInsertTime(new Date()); |
| | | courseCounsum1.setReason("课时赠送"); |
| | | courseCounsum1.setNum(orinPay.getLaveClassHours()); |
| | | courseCounsum1.setReason("赠课"); |
| | | courseCounsum1.setNum(laveClassHours1); |
| | | courseCounsum1.setChangeType(1); |
| | | courseCounsum1.setPaymentId(to.getId()); |
| | | counsumService.save(courseCounsum1); |
| | |
| | | int day_week = calendar.get(Calendar.DAY_OF_WEEK); |
| | | day_week = day_week - 1 == 0 ? 7 : day_week - 1; |
| | | int num = 8 - day_week + 7; |
| | | Date useTime = coursePackageOrderStudent.getUseTime(); |
| | | |
| | | Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()); |
| | | Date useTime = student.getValidity(); |
| | | |
| | | for (int i = 0; i < num; i++) { |
| | | Date time = calendar.getTime(); |
| | |
| | | @RequestMapping(value = "/toHoli", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8") |
| | | @ResponseBody |
| | | public String toHoli(@RequestBody ToHoliDto toHoliDto) throws ParseException { |
| | | |
| | | String[] ids = toHoliDto.getIds(); |
| | | List<String> strings = new ArrayList<>(); |
| | | |
| | | |
| | | for (String id : ids) { |
| | | //扣除课时 |
| | | TCoursePackagePayment payment = paymentService.getById(id); |
| | | System.out.println("=====byId=========" + payment); |
| | | |
| | | |
| | | Integer laveClassHours = payment.getLaveClassHours(); |
| | | |
| | | Integer classNum = toHoliDto.getClassNum(); |
| | | Integer totalClassHours = payment.getTotalClassHours(); |
| | | Student student = studentClient.queryStudentById(payment.getStudentId()); |
| | | |
| | | if (laveClassHours < classNum) { |
| | | strings.add(student.getName()); |
| | | continue; |
| | | String[] stuIds = toHoliDto.getIds(); |
| | | //查询出学员ids对应的棵树,判断剩余课时数是否够 |
| | | List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds)); |
| | | List<String> notStudent = new ArrayList<>(); |
| | | for (CoursePackageOrderStudent coursePackageOrderStudent : list) { |
| | | if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) { |
| | | notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName()); |
| | | } |
| | | } |
| | | if (!notStudent.isEmpty()) { |
| | | String notStudentStr = String.join(",", notStudent); |
| | | return notStudentStr+":课时数不足"; |
| | | } |
| | | |
| | | Integer laveClassHoursnew = laveClassHours - classNum; |
| | | Integer totalClassHoursnew = totalClassHours - classNum; |
| | | payment.setLaveClassHours(laveClassHoursnew); |
| | | payment.setTotalClassHours(totalClassHoursnew); |
| | | payment.setAppUserId(null); |
| | | // payment.setStatus(3); |
| | | for (String stuId : stuIds) { |
| | | Student student = studentClient.queryStudentById(Integer.valueOf(stuId)); |
| | | |
| | | paymentService.updateById(payment); |
| | | // 扣除 原来的课时数 |
| | | // 添加购买课时 paytyoe为7 |
| | | // 排课可期 判断课程时间段 添加排课表 添加上课记录表 |
| | | // 找到原来的课包 扣课时 |
| | | // CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId()); |
| | | CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId)); |
| | | |
| | | //获取student信息 |
| | | TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); |
| | | TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId()); |
| | | //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录 |
| | | List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() |
| | | .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1) |
| | | .eq("type", 1).orderByDesc("classDate")); |
| | | //已经排课但没有使用的课时数量 |
| | | int number = list1.size() * coursePackage.getNeedNum(); |
| | | Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours(); |
| | | laveClassHours1 -= number; |
| | | //需要购买使用的课时数 |
| | | Integer num = toHoliDto.getClassNum(); |
| | | //需要删除多余的排课记录 |
| | | if(num.compareTo(laveClassHours1) > 0){ |
| | | //课时数差额 |
| | | int number1 = num - laveClassHours1; |
| | | double o = number1 % coursePackage.getNeedNum(); |
| | | int l = 0; |
| | | if(0 != o){ |
| | | l = 1; |
| | | } |
| | | int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l; |
| | | for (int i = 0; i < n; i++) { |
| | | CoursePackageScheduling coursePackageScheduling = list1.get(i); |
| | | coursePackageSchedulingService.deleteById(coursePackageScheduling.getId()); |
| | | |
| | | //新增课时 |
| | | coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>() |
| | | .eq("coursePackageSchedulingId", coursePackageScheduling.getId())); |
| | | } |
| | | } |
| | | coursePackageOrderStudent.setAppUserId(null); |
| | | coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum()); |
| | | orderStudentService.updateById(coursePackageOrderStudent); |
| | | |
| | | TCoursePackagePayment holi = new TCoursePackagePayment(); |
| | | holi.setAppUserId(student.getAppUserId()); |
| | | holi.setStudentId(student.getId()); |
| | | holi.setCoursePackageId(toHoliDto.getClassId()); |
| | | holi.setTotalClassHours(toHoliDto.getClassNum()); |
| | | holi.setLaveClassHours(toHoliDto.getClassNum()); |
| | | holi.setState(1); |
| | | holi.setInsertTime(new Date()); |
| | | holi.setPayStatus(2); |
| | | paymentService.save(holi); |
| | | |
| | | |
| | | CourseCounsum courseCounsum = new CourseCounsum(); |
| | | courseCounsum.setPaymentId(holi.getId()); |
| | | courseCounsum.setChangeType(0); |
| | | courseCounsum.setNum(classNum); |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("报名假期班"); |
| | | courseCounsumService.save(courseCounsum); |
| | | |
| | | //排假期课 |
| | | |
| | | TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId()); |
| | | String classWeeks = tCoursePackage.getClassWeeks(); |
| | | //上课星期 |
| | | String classWeeks = coursePackage1.getClassWeeks(); |
| | | List<Integer> week = week(classWeeks); |
| | | |
| | | Date today = new Date(); |
| | | |
| | | Date startTime = tCoursePackage.getStartTime(); |
| | | Date endTime = tCoursePackage.getEndTime(); |
| | | LocalDate startDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | LocalDate endDate = endTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | Period period = Period.between(startDate, endDate); |
| | | int days = period.getDays() + 1; |
| | | Integer can = 999; |
| | | int count = 0; |
| | | String[] split = tCoursePackage.getClassStartTime().split(","); |
| | | String[] split1 = tCoursePackage.getClassEndTime().split(","); |
| | | //上课时段 |
| | | String[] split = coursePackage1.getClassStartTime().split(","); |
| | | String[] split1 = coursePackage1.getClassEndTime().split(","); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | |
| | | Date startTime = coursePackage1.getStartTime(); |
| | | Date endTime = coursePackage1.getEndTime(); |
| | | //排课 本周+下周,课时不够扣则直接剩余不排课 |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(startTime); |
| | | calendar.add(Calendar.DAY_OF_MONTH, -1); |
| | | //假期开始使用当前时间为起始时间进行排课 |
| | | calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date()); |
| | | calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); |
| | | while (true) { |
| | | Date time = calendar.getTime(); |
| | | |
| | | Date[] dates = generateDateArray(days, calendar.getTime()); |
| | | for (Date date : dates) { |
| | | if (count == can) { |
| | | //判断当天是否在排课星期内 |
| | | int day = calendar.get(Calendar.DAY_OF_WEEK); |
| | | day = day - 1 == 0 ? 7 : day - 1; |
| | | if (!week.contains(day)) { |
| | | calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); |
| | | continue; |
| | | } |
| | | |
| | | //大于有效期不进行排课 |
| | | if (calendar.getTimeInMillis() > endTime.getTime()) { |
| | | break; |
| | | } |
| | | int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date) - 1; |
| | | if (wei == 0) { |
| | | wei = 7; |
| | | } |
| | | if (week.contains(wei)) { |
| | | for (int i1 = 0; i1 < split.length; i1++) { |
| | | if (count == can) { |
| | | break; |
| | | } |
| | | for (int j = 0; j < split.length; j++) { |
| | | CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); |
| | | coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); |
| | | Date parse = format1.parse(format.format(date) + " " + split[i1]); |
| | | Date parse1 = format1.parse(format.format(date) + " " + split1[i1]); |
| | | coursePackageScheduling.setType(coursePackage1.getType()); |
| | | coursePackageScheduling.setAppUserId(student.getAppUserId()); |
| | | coursePackageScheduling.setStudentId(Integer.valueOf(stuId)); |
| | | coursePackageScheduling.setCoursePackageId(coursePackage1.getId()); |
| | | Date parse = format1.parse(format.format(time) + " " + split[j]); |
| | | Date parse1 = format1.parse(format.format(time) + " " + split1[j]); |
| | | coursePackageScheduling.setClassDate(parse); |
| | | coursePackageScheduling.setEndDate(parse1); |
| | | coursePackageScheduling.setStatus(1); |
| | | coursePackageSchedulingService.insert(coursePackageScheduling); |
| | | CoursePackageStudent student1 = new CoursePackageStudent(); |
| | | student1.setAppUserId(student.getAppUserId()); |
| | | student1.setStudentId(student.getId()); |
| | | student1.setCoursePackageId(toHoliDto.getClassId()); |
| | | student1.setCoursePackagePaymentId(holi.getId()); |
| | | student1.setStudentId(Integer.valueOf(stuId)); |
| | | student1.setCoursePackageId(coursePackage1.getId()); |
| | | student1.setCoursePackagePaymentId(null); |
| | | student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); |
| | | student1.setSignInOrNot(1); |
| | | student1.setReservationStatus(1); |
| | | student1.setInsertTime(new Date()); |
| | | studentService.save(student1); |
| | | count++; |
| | | cpsMapper.insert(student1); |
| | | } |
| | | } |
| | | //增加日期,用于判断 |
| | | calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); |
| | | } |
| | | |
| | | |
| | | System.out.println("保存成功=============》=" + holi); |
| | | |
| | | |
| | | CourseCounsum courseCounsum = new CourseCounsum(); |
| | | courseCounsum.setPaymentId(coursePackageOrderStudent.getId()); |
| | | courseCounsum.setChangeType(0); |
| | | courseCounsum.setNum(toHoliDto.getClassNum()); |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("报名假期班"); |
| | | // courseCounsum.setAppUserId(userId); |
| | | courseCounsumService.save(courseCounsum); |
| | | } |
| | | String[] stringArray = strings.toArray(new String[strings.size()]); |
| | | |
| | | String join = StringUtils.join(stringArray, ","); |
| | | System.out.println("==========join========" + join); |
| | | return join; |
| | | return "报名成功"; |
| | | |
| | | |
| | | } |
| | |
| | | @RequestMapping(value = "/toTrans", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = "application/json;charset=UTF-8") |
| | | @ResponseBody |
| | | public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException { |
| | | |
| | | String[] ids = toHoliDto.getIds(); |
| | | List<String> strings = new ArrayList<>(); |
| | | |
| | | |
| | | for (String id : ids) { |
| | | //扣除课时 |
| | | TCoursePackagePayment payment = paymentService.getById(id); |
| | | System.out.println("=====byId=========" + payment); |
| | | |
| | | |
| | | Integer laveClassHours = payment.getLaveClassHours(); |
| | | |
| | | Integer classNum = toHoliDto.getClassNum(); |
| | | Integer totalClassHours = payment.getTotalClassHours(); |
| | | Student student = studentClient.queryStudentById(payment.getStudentId()); |
| | | |
| | | // if (laveClassHours < classNum){ |
| | | // strings.add(student.getName()); continue; |
| | | String[] stuIds = toHoliDto.getIds(); |
| | | // //查询出学员ids对应的棵树,判断剩余课时数是否够 |
| | | // List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds)); |
| | | // List<String> notStudent = new ArrayList<>(); |
| | | // for (CoursePackageOrderStudent coursePackageOrderStudent : list) { |
| | | // if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) { |
| | | // notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName()); |
| | | // } |
| | | // |
| | | // Integer laveClassHoursnew = laveClassHours - classNum; |
| | | // Integer totalClassHoursnew = totalClassHours - classNum; |
| | | payment.setLaveClassHours(0); |
| | | payment.setTotalClassHours(0); |
| | | payment.setAppUserId(null); |
| | | // } |
| | | // if (!notStudent.isEmpty()) { |
| | | // String notStudentStr = String.join(",", notStudent); |
| | | // return notStudentStr+":课时数不足"; |
| | | // } |
| | | |
| | | paymentService.updateById(payment); |
| | | |
| | | //获取student信息 |
| | | //转移课程 |
| | | for (String stuId : stuIds) { |
| | | // CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId()); |
| | | CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>() |
| | | .eq("studentId", stuId) |
| | | .eq("coursePackageId", toHoliDto.getId())); |
| | | CoursePackageOrderStudent studentPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>() |
| | | .eq("studentId", stuId) |
| | | .eq("coursePackageId", toHoliDto.getClassId())); |
| | | TCoursePackage coursePackage = packageService.getById(toHoliDto.getClassId()); |
| | | if (studentPay != null) { |
| | | //转移 |
| | | Integer laveClassHours = orinPay.getLaveClassHours(); |
| | | Integer totalClassHours = orinPay.getTotalClassHours(); |
| | | |
| | | //新增课时 |
| | | CourseCounsum courseCounsum = new CourseCounsum(); |
| | | courseCounsum.setInsertTime(new Date()); |
| | | Integer appUserId = orinPay.getAppUserId(); |
| | | Integer appUserId1 = studentPay.getAppUserId(); |
| | | |
| | | TCoursePackagePayment one = paymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); |
| | | courseCounsum.setReason("换课"); |
| | | |
| | | TCoursePackagePayment holi = new TCoursePackagePayment(); |
| | | if (one == null) { |
| | | holi.setAppUserId(student.getAppUserId()); |
| | | holi.setStudentId(student.getId()); |
| | | holi.setCoursePackageId(toHoliDto.getClassId()); |
| | | holi.setTotalClassHours(laveClassHours); |
| | | holi.setLaveClassHours(laveClassHours); |
| | | holi.setState(1); |
| | | holi.setInsertTime(new Date()); |
| | | holi.setPayStatus(2); |
| | | holi.setStatus(1); |
| | | paymentService.save(holi); |
| | | |
| | | } else { |
| | | one.setTotalClassHours(one.getTotalClassHours() + laveClassHours); |
| | | one.setLaveClassHours(one.getLaveClassHours() + laveClassHours); |
| | | one.setAppUserId(null); |
| | | paymentService.updateById(one); |
| | | holi = one; |
| | | orinPay.setLaveClassHours(0); |
| | | orinPay.setStatus(3); |
| | | orinPay.setAppUserId(null); |
| | | orderStudentService.updateById(orinPay); |
| | | |
| | | courseCounsum.setNum(laveClassHours); |
| | | courseCounsum.setChangeType(0); |
| | | courseCounsum.setPaymentId(orinPay.getId()); |
| | | counsumService.save(courseCounsum); |
| | | |
| | | CourseCounsum courseCounsum1 = new CourseCounsum(); |
| | | courseCounsum1.setInsertTime(new Date()); |
| | | // if (appUserId.compareTo(appUserId1) != 0) { |
| | | // courseCounsum1.setReason("赠课"); |
| | | // } else { |
| | | courseCounsum1.setReason("换课"); |
| | | // } |
| | | courseCounsum1.setNum(laveClassHours); |
| | | courseCounsum1.setChangeType(1); |
| | | courseCounsum1.setPaymentId(studentPay.getId()); |
| | | counsumService.save(courseCounsum1); |
| | | |
| | | schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours); |
| | | //删除原排课数据 |
| | | List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() |
| | | .eq("type", 1).eq("appUserId", appUserId) |
| | | .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) |
| | | .orderByAsc("classDate")); |
| | | int num = totalClassHours - laveClassHours; |
| | | for (int i = num; i < coursePackageSchedulings.size(); i++) { |
| | | CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i); |
| | | coursePackageSchedulingService.deleteById(packageScheduling.getId()); |
| | | coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId())); |
| | | } |
| | | System.out.println("保存成功=============》=" + holi); |
| | | } else { |
| | | |
| | | Integer totalClassHours = orinPay.getTotalClassHours(); |
| | | Integer laveClassHours = orinPay.getLaveClassHours(); |
| | | Student student = studentClient.queryStudentById(Integer.valueOf(stuId)); |
| | | CoursePackageOrderStudent to = new CoursePackageOrderStudent(); |
| | | to.setStudentId(Integer.valueOf(stuId)); |
| | | to.setTotalClassHours(laveClassHours); |
| | | to.setLaveClassHours(laveClassHours); |
| | | to.setCoursePackageId(toHoliDto.getClassId()); |
| | | to.setState(1); |
| | | to.setAppUserId(student.getAppUserId()); |
| | | to.setStatus(1); |
| | | to.setInsertTime(new Date()); |
| | | |
| | | Integer validDays = coursePackage.getValidDays(); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(new Date()); |
| | | calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays); |
| | | to.setUseTime(calendar.getTime()); |
| | | orderStudentService.save(to); |
| | | if (null == student.getValidity()) { |
| | | student.setValidity(calendar.getTime()); |
| | | } else if (student.getValidity().getTime() < calendar.getTime().getTime()) { |
| | | student.setValidity(calendar.getTime()); |
| | | } |
| | | studentClient.frozen(student); |
| | | |
| | | |
| | | Integer laveClassHours1 = orinPay.getLaveClassHours(); |
| | | Integer appUserId = orinPay.getAppUserId(); |
| | | orinPay.setLaveClassHours(0); |
| | | orinPay.setAppUserId(null); |
| | | orinPay.setStatus(3); |
| | | orderStudentService.updateById(orinPay); |
| | | |
| | | |
| | | CourseCounsum courseCounsum = new CourseCounsum(); |
| | | courseCounsum.setPaymentId(holi.getId()); |
| | | courseCounsum.setChangeType(1); |
| | | courseCounsum.setNum(laveClassHours); |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("换课"); |
| | | courseCounsumService.save(courseCounsum); |
| | | courseCounsum.setNum(laveClassHours1); |
| | | courseCounsum.setChangeType(0); |
| | | courseCounsum.setPaymentId(orinPay.getId()); |
| | | counsumService.save(courseCounsum); |
| | | |
| | | |
| | | TCoursePackage tCoursePackage = packageService.getById(toHoliDto.getClassId()); |
| | | String classWeeks = tCoursePackage.getClassWeeks(); |
| | | List<Integer> week = week(classWeeks); |
| | | CourseCounsum courseCounsum1 = new CourseCounsum(); |
| | | courseCounsum1.setInsertTime(new Date()); |
| | | courseCounsum1.setReason("换课"); |
| | | courseCounsum1.setNum(laveClassHours1); |
| | | courseCounsum1.setChangeType(1); |
| | | courseCounsum1.setPaymentId(to.getId()); |
| | | counsumService.save(courseCounsum1); |
| | | |
| | | String[] split = tCoursePackage.getClassStartTime().split(","); |
| | | String[] split1 = tCoursePackage.getClassEndTime().split(","); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | // 本周周几 |
| | | |
| | | List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); |
| | | List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList()); |
| | | //拿到最后一天的排课记录 |
| | | if (collect.size() > 0) { |
| | | coursePackageSchedulingService.delete(new QueryWrapper<CoursePackageScheduling>().in("id", collect)); |
| | | coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", student.getId()).eq("coursePackageId", toHoliDto.getClassId())); |
| | | } |
| | | |
| | | |
| | | Date today = new Date(); |
| | | |
| | | |
| | | TCoursePackagePayment pay = coursePackagePaymentService.getById(holi.getId()); |
| | | Integer laveClassHours1 = pay.getLaveClassHours(); |
| | | Integer codeTime = tCoursePackage.getCodeTime(); |
| | | Integer can = 0; |
| | | |
| | | |
| | | int count = 0; |
| | | |
| | | // 本周周几 |
| | | // int i = DateUtil.dayOfWeek(new Date())-1; |
| | | |
| | | Date[] dates = generateDateArray(14, today); |
| | | can = laveClassHours1 / codeTime; |
| | | |
| | | for (Date date : dates) { |
| | | if (count == can) { |
| | | break; |
| | | } |
| | | int wei = DateUtil.dayOfWeek(date); |
| | | if (week.contains(wei)) { |
| | | for (int i1 = 0; i1 < split.length; i1++) { |
| | | if (count == can) { |
| | | break; |
| | | } |
| | | CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); |
| | | coursePackageScheduling.setCoursePackageId(tCoursePackage.getId()); |
| | | Date parse = format1.parse(format.format(date) + " " + split[i1]); |
| | | Date parse1 = format1.parse(format.format(date) + " " + split1[i1]); |
| | | coursePackageScheduling.setClassDate(parse); |
| | | coursePackageScheduling.setEndDate(parse1); |
| | | coursePackageScheduling.setStatus(1); |
| | | coursePackageSchedulingService.insert(coursePackageScheduling); |
| | | CoursePackageStudent student1 = new CoursePackageStudent(); |
| | | student1.setAppUserId(student.getAppUserId()); |
| | | student1.setStudentId(student.getId()); |
| | | student1.setCoursePackageId(tCoursePackage.getId()); |
| | | student1.setCoursePackagePaymentId(holi.getId()); |
| | | student1.setCoursePackageSchedulingId(coursePackageScheduling.getId()); |
| | | student1.setSignInOrNot(1); |
| | | student1.setReservationStatus(1); |
| | | student1.setInsertTime(new Date()); |
| | | cpsMapper.insert(student1); |
| | | count++; |
| | | //开始排课 |
| | | addPackageStudent(coursePackage, to.getAppUserId(), to.getStudentId(), to); |
| | | //删除原排课数据 |
| | | List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>() |
| | | .eq("type", 1).eq("appUserId", appUserId) |
| | | .eq("studentId", orinPay.getStudentId()).eq("coursePackageId", orinPay.getCoursePackageId()) |
| | | .orderByAsc("classDate")); |
| | | int num = totalClassHours - laveClassHours; |
| | | for (int i = num; i < coursePackageSchedulings.size(); i++) { |
| | | CoursePackageScheduling packageScheduling = coursePackageSchedulings.get(i); |
| | | coursePackageSchedulingService.deleteById(packageScheduling.getId()); |
| | | coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("coursePackageSchedulingId", packageScheduling.getId())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | String[] stringArray = strings.toArray(new String[strings.size()]); |
| | | return "换课成功"; |
| | | |
| | | String join = StringUtils.join(stringArray, ","); |
| | | System.out.println("==========join========" + join); |
| | | return "转课成功"; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | @PostMapping("/student/queryTStudentListByName") |
| | | List<TStudent> queryTStudentListByName(@RequestBody String name); |
| | | |
| | | |
| | | /** |
| | | * 修改数据 |
| | | * @param student |
| | |
| | | */ |
| | | private Integer isDefault; |
| | | /** |
| | | * 所有课时有效期 |
| | | * 课时有效期 |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date validity; |
| | |
| | | void updateSignInOrNotById(@Param("id") Long id); |
| | | |
| | | |
| | | List<ClassListDto> getHoliList(@Param("tStudentId")Integer tStudentId); |
| | | } |
| | |
| | | List<TCoursePackagePayment> listOne(@Param("ids") List<Integer> ids); |
| | | |
| | | Integer queryStore(String code); |
| | | |
| | | List<Map<String, Object>> queryRegistrationRecord3(Integer coursePackageId, List<Integer> userIds, List<Integer> studentIds); |
| | | } |
| | |
| | | String weekOfDate = DateTimeHelper.getWeekOfDate(new Date()); |
| | | // if (integerList.contains(weekOfDate)) { |
| | | String dat = simpleDateFormat.format(byId.getClassDate()) + " " + dateString1.substring(11); |
| | | String ed = simpleDateFormat.format(byId.getEndDate()) + " " + dateString2.substring(11); |
| | | |
| | | Date start = null; |
| | | Date end = null; |
| | | try { |
| | | start = format.parse(dat); |
| | | end = format.parse(ed); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | // else { |
| | | // Date now = new Date(); |
| | | // if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | // recordVo.setStatus(2); |
| | | // } else { |
| | | // recordVo.setStatus(3); |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | //已取消 |
| | | if (byId.getStatus() == 4) { |
| | | recordVo.setStatus(4); |
| | | } else if (coursePackageStudent.getSignInOrNot() == 2) { |
| | | //已请假 |
| | | recordVo.setStatus(5); |
| | | } else if (start.after(new Date())) { |
| | | //待上课 |
| | | recordVo.setStatus(1); |
| | | } |
| | | else { |
| | | CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | }else if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | recordVo.setStatus(3); |
| | | // 消课 到课状态0 旷课 |
| | | if (coursePackageStudent.getSignInOrNot() == 0) { |
| | | recordVo.setStatus(6); |
| | | } |
| | | |
| | | } else { |
| | | Date now = new Date(); |
| | | if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | }else if (new Date().after(start)&&new Date().before(end)){ |
| | | recordVo.setStatus(2); |
| | | } else { |
| | | recordVo.setStatus(3); |
| | | |
| | | }else if (start.after(new Date())) { |
| | | //待上课 |
| | | recordVo.setStatus(1); |
| | | } |
| | | } |
| | | else { |
| | | // CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | // .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | // if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | // recordVo.setStatus(3); |
| | | // // 消课 到课状态0 旷课 |
| | | // if (coursePackageStudent.getSignInOrNot() == 0) { |
| | | // recordVo.setStatus(6); |
| | | // } |
| | | // |
| | | // } else { |
| | | // Date now = new Date(); |
| | | // if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | // recordVo.setStatus(2); |
| | | // } else { |
| | | // recordVo.setStatus(3); |
| | | // |
| | | // } |
| | | // } |
| | | } |
| | | // } else { |
| | | // recordVo.setStatus(1); |
| | |
| | | TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); |
| | | Integer codeTime = coursePackage.getCodeTime(); |
| | | Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours(); |
| | | Student student = studentClient.queryStudentById(coursePackageScheduling.getStudentId()); |
| | | Student student = studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()); |
| | | Date validity = student.getValidity(); |
| | | |
| | | Calendar calendar = Calendar.getInstance(); |
| | |
| | | //从第二天开始 |
| | | Calendar startTime = Calendar.getInstance(); |
| | | startTime.setTime(new Date()); |
| | | startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); |
| | | startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1); |
| | | startTime.set(Calendar.HOUR_OF_DAY, 0); |
| | | startTime.set(Calendar.MINUTE, 0); |
| | | startTime.set(Calendar.SECOND, 0); |
| | |
| | | } |
| | | |
| | | }else{ |
| | | Date classDate = coursePackageScheduling.getClassDate(); |
| | | if(codeTime.compareTo(laveClassHours) > 0 && calendar.getTimeInMillis() > classDate.getTime()){ |
| | | Date classDate = new Date(); |
| | | |
| | | if (coursePackageScheduling!=null){ |
| | | classDate = coursePackageScheduling.getClassDate(); |
| | | } |
| | | |
| | | int count = this.count(new QueryWrapper<CoursePackageScheduling>() |
| | | .eq("appUserId", coursePackageOrderStudent.getAppUserId()) |
| | | .eq("studentId", coursePackageOrderStudent.getStudentId()) |
| | | .eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()) |
| | | .eq("status", 1) |
| | | ); |
| | | |
| | | Integer number = laveClassHours - count; |
| | | if((number.compareTo(codeTime) > 0 && calendar.getTimeInMillis() > classDate.getTime())||coursePackageScheduling==null){ |
| | | //从第二天开始 |
| | | Calendar startTime = Calendar.getInstance(); |
| | | startTime.setTime(new Date()); |
| | | startTime.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); |
| | | // startTime.setTime(coursePackageScheduling.getClassDate()); |
| | | startTime.setTime(classDate); |
| | | startTime.set(Calendar.DAY_OF_YEAR, startTime.get(Calendar.DAY_OF_YEAR) + 1); |
| | | startTime.set(Calendar.HOUR_OF_DAY, 0); |
| | | startTime.set(Calendar.MINUTE, 0); |
| | | startTime.set(Calendar.SECOND, 0); |
| | |
| | | String classWeeks = coursePackage.getClassWeeks(); |
| | | List<Integer> week = week(classWeeks); |
| | | //新剩余课时 |
| | | laveClassHours += classNumber; |
| | | number += classNumber; |
| | | |
| | | //判断最后一天是否所有时段都已排完 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String format = sdf.format(coursePackageScheduling.getClassDate()); |
| | | String time = format.substring(format.indexOf(" ")); |
| | | String format = sdf.format(classDate); |
| | | String time = format.substring(0,format.indexOf(" ") + 1); |
| | | String classStartTime = coursePackage.getClassStartTime(); |
| | | String classEndTime = coursePackage.getClassEndTime(); |
| | | String[] split = classStartTime.split(","); |
| | |
| | | n++; |
| | | for (int i = n; i < split.length; i++) { |
| | | //剩余数量不足以排课 |
| | | if (laveClassHours.compareTo(codeTime) < 0) { |
| | | if (number.compareTo(codeTime) < 0) { |
| | | break; |
| | | } |
| | | laveClassHours -= codeTime; |
| | | number -= codeTime; |
| | | CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); |
| | | packageScheduling.setType(coursePackage.getType()); |
| | | packageScheduling.setAppUserId(coursePackageOrderStudent.getAppUserId()); |
| | |
| | | } |
| | | for (int j = 0; j < split.length; j++) { |
| | | //剩余数量不足以排课 |
| | | if (laveClassHours.compareTo(codeTime) < 0) { |
| | | if (number.compareTo(codeTime) < 0) { |
| | | break; |
| | | } |
| | | |
| | | laveClassHours -= codeTime; |
| | | number -= codeTime; |
| | | |
| | | CoursePackageScheduling packageScheduling = new CoursePackageScheduling(); |
| | | packageScheduling.setType(coursePackage.getType()); |
| | |
| | | coursePackageOrderStudent.setUseTime(useTime); |
| | | coursePackageOrderStudent.setStatus(1); |
| | | coursePackageOrderStudentService.updateById(coursePackageOrderStudent); |
| | | if(null == student.getValidity()){ |
| | | student.setValidity(useTime); |
| | | }else if(student.getValidity().getTime() < useTime.getTime()){ |
| | | student.setValidity(useTime); |
| | | } |
| | | studentClient.frozen(student); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public List<ClassListDto> getClassList(Integer tStudentId) { |
| | | return this.baseMapper.getClassList(tStudentId); |
| | | List<ClassListDto> classList = this.baseMapper.getClassList(tStudentId); |
| | | List<ClassListDto> holiList = this.baseMapper.getHoliList(tStudentId); |
| | | classList.addAll(holiList); |
| | | |
| | | return classList; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | Store store = storeClient.queryStoreById(coursePackage.getStoreId()); |
| | | response.setStoreName(store.getName()); |
| | | response.setStoreAddress(store.getAddress()); |
| | | |
| | | if (ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)) { |
| | | Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); |
| | |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | |
| | | if (coursePackage.getType()==1){ |
| | | list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds);}else { |
| | | list = this.baseMapper.queryRegistrationRecord(page, coursePackageId, userIds, studentIds); |
| | | }else { |
| | | list = this.baseMapper.queryRegistrationRecord1(page, coursePackageId, userIds, studentIds); |
| | | } |
| | | |
| | | list.addAll(this.baseMapper.queryRegistrationRecord3(coursePackageId,userIds,studentIds)); |
| | | for (Map<String, Object> map : list) { |
| | | |
| | | |
| | | Long id = Long.valueOf(map.get("id").toString()); |
| | | Integer appUserId = Integer.valueOf(map.get("appUserId").toString()); |
| | |
| | | if (coursePackage.getType()==1) { |
| | | studentId = Integer.valueOf(map.get("studentId").toString()); |
| | | }else { |
| | | studentId = Integer.valueOf(map.get("studentIds").toString()); |
| | | studentId = Integer.valueOf(map.get("studentIds").toString().split(",")[0]); |
| | | } |
| | | |
| | | TAppUser appUser = appuClient.queryAppUser1(appUserId); |
| | |
| | | map.put("studentName", null != student ? student.getName() : ""); |
| | | Integer integer = cpsMapper.selectCount(new QueryWrapper<CoursePackageStudent>().eq("appUserId", appUserId) |
| | | .eq("studentId", studentId).eq("coursePackagePaymentId", id).eq("signInOrNot", 2)); |
| | | |
| | | int count = coursePackageStudentService.count(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackageId).eq("studentId", studentId).eq("signInOrNot",2)); |
| | | |
| | | map.put("absencesNumber", count); |
| | | |
| | | map.put("already", integer); |
| | | } |
| | | return list; |
| | |
| | | } |
| | | |
| | | |
| | | @Autowired |
| | | private ICoursePackageOrderStudentService orderStudentService; |
| | | /** |
| | | * 修改数据 |
| | | * |
| | |
| | | coursePackageSchedulingQueryWrapper.notIn("id", collect); |
| | | } |
| | | coursePackageSchedulingService.remove(coursePackageSchedulingQueryWrapper); |
| | | |
| | | int coursePackageId = orderStudentService.count(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", coursePackage.getId())); |
| | | if (coursePackageId>0) { |
| | | this.baseMapper.updateById(coursePackage); |
| | | |
| | | //生成排课数据 |
| | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
New file |
| | |
| | | package com.dsh.course.util.httpClinet; |
| | | |
| | | /** |
| | | * 定义统一返回对象 |
| | | */ |
| | | public class ResultUtil<T> { |
| | | |
| | | public static final Integer SUCCESS = 200; |
| | | |
| | | public static final Integer PARAM_ERROR = 300; |
| | | |
| | | public static final Integer RUNTIME_ERROR = 400; |
| | | |
| | | public static final Integer ERROR = 500; |
| | | |
| | | public static final String Token = "Token失效"; |
| | | |
| | | private Integer status;//状态码 |
| | | |
| | | private Integer code;//备用状态码 |
| | | |
| | | private String msg;//返回说明 |
| | | |
| | | private T data;//返回数据 |
| | | |
| | | private String str;//存储单个字符串值 |
| | | |
| | | |
| | | public Integer getStatus() { |
| | | return status; |
| | | } |
| | | |
| | | public String getMsg() { |
| | | return msg; |
| | | } |
| | | |
| | | public T getData() { |
| | | return data; |
| | | } |
| | | |
| | | public String getStr() { |
| | | return str; |
| | | } |
| | | |
| | | public Integer getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public ResultUtil(Integer status, Integer code, String msg) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | } |
| | | |
| | | private ResultUtil(Integer status, Integer code, String msg, T data) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.data = data; |
| | | } |
| | | |
| | | public ResultUtil(Integer status, Integer code, String msg, T data, String str) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.data = data; |
| | | this.str = str; |
| | | } |
| | | |
| | | private ResultUtil(Integer status, Integer code, String msg, String str) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.str = str; |
| | | } |
| | | |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg){ |
| | | return new ResultUtil<>(status, code, msg); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data){ |
| | | return new ResultUtil<>(status, code, msg, data); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data, String str){ |
| | | return new ResultUtil<>(status, code, msg, data, str); |
| | | } |
| | | |
| | | /** |
| | | * 错误信息 |
| | | * @return |
| | | */ |
| | | public static ResultUtil error(String mag){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag); |
| | | } |
| | | |
| | | /** |
| | | * 错误信息 |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil <T> error(String mag, T obj){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag, obj); |
| | | } |
| | | |
| | | /** |
| | | * token失效 |
| | | * @return |
| | | */ |
| | | public static ResultUtil tokenErr(){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, ResultUtil.Token); |
| | | } |
| | | |
| | | /** |
| | | * token失效 |
| | | * @return |
| | | */ |
| | | public static ResultUtil tokenErr(String msg){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, msg); |
| | | } |
| | | |
| | | /** |
| | | * 参数异常 |
| | | * @return |
| | | */ |
| | | public static ResultUtil paranErr(){ |
| | | return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常"); |
| | | } |
| | | |
| | | /** |
| | | * 参数异常 |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> paranErr(T data){ |
| | | return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常", data); |
| | | } |
| | | |
| | | /** |
| | | * 运行异常 |
| | | * @return |
| | | */ |
| | | public static ResultUtil runErr(){ |
| | | return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 运行异常 |
| | | * @return |
| | | */ |
| | | public static <T>ResultUtil<T> runErr(T data){ |
| | | return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常", data); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param |
| | | * @return |
| | | */ |
| | | public static ResultUtil success(){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param data |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> success(T data){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data); |
| | | } |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param data |
| | | * @param str |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> success(T data, String str){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data, str); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> success(String msg, T data){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> success(String msg, T data, String str){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data, str); |
| | | } |
| | | |
| | | } |
| | |
| | | FROM t_course_package_payment py |
| | | where py.studentId = #{tStudentId} |
| | | </select> |
| | | <select id="getHoliList" resultType="com.dsh.course.entity.dto.ClassListDto"> |
| | | select |
| | | od.id,od.insertTime as insertTime, cp.name as className,cp.type as classType |
| | | from t_course_package_order od |
| | | left join t_course_package cp on od.coursePackageId = cp.id |
| | | |
| | | WHERE od.payStatus = 2 and cp.type = 2 |
| | | |
| | | |
| | | |
| | | </select> |
| | | </mapper> |
| | |
| | | WHEN laveClassHours < 3 THEN 0 |
| | | ELSE 1 |
| | | END, insertTime DESC |
| | | |
| | | </select> |
| | | |
| | | <select id="queryRegistrationRecord1" resultType="map"> |
| | |
| | | LEFT JOIN t_competition tc on pc.competitionId = tc.id |
| | | WHERE pc.code=#{code} |
| | | </select> |
| | | <select id="queryRegistrationRecord3" resultType="java.util.Map"> |
| | | SELECT CAST(id AS CHAR(20)) as id, |
| | | appUserId, studentId, |
| | | DATE_FORMAT(classDate, '%Y-%m-%d %H:%i') as insertTime, |
| | | DATE_FORMAT(DATE(MIN(classDate)), '%Y-%m-%d') AS totalClassHours, |
| | | DATE_FORMAT( DATE(MAX(endDate)), '%Y-%m-%d') AS laveClassHours, |
| | | '' as absencesNumber, |
| | | 7 as status, |
| | | 3 as type |
| | | FROM t_course_package_scheduling where type = 3 |
| | | GROUP BY coursePackageId, studentId; |
| | | |
| | | |
| | | </select> |
| | | |
| | | <update id="updateBytime"> |
| | | update t_course_package_payment |
| | |
| | | package com.dsh.course.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class updateTimeDto { |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date date; |
| | | private Integer tStudentId; |
| | | } |
| | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | |
| | | @TableField("useTime") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date useTime; |
| | | |
| | | |
| | | private String name; |
| | | |
| | | private BigDecimal onePrice; |
| | | |
| | | private Integer hasHours; |
| | | |
| | | private BigDecimal restPrice; |
| | | |
| | | private BigDecimal cashPayment; |
| | | } |
| | |
| | | void save(EvaluateStudent evaluateStudent); |
| | | @PostMapping("/student/comdel") |
| | | void comdel(@RequestBody Integer id); |
| | | @PostMapping("/student/updatePassWord") |
| | | void updatePassWord(@RequestBody List<String> strings); |
| | | } |
| | |
| | | package com.dsh.course.feignClient.account; |
| | | |
| | | import com.dsh.course.dto.CreateHistoryDto; |
| | | import com.dsh.course.dto.GetHistoryDto; |
| | | import com.dsh.course.dto.StudentSearch; |
| | | import com.dsh.course.dto.TStudentDto; |
| | | import com.dsh.course.dto.*; |
| | | import com.dsh.course.feignClient.account.model.QueryAppUser; |
| | | import com.dsh.course.feignClient.account.model.QueryAppUserVO; |
| | | import com.dsh.course.feignClient.account.model.QueryByNamePhone; |
| | |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | @PostMapping("/student/frozen") |
| | | void frozen(@RequestBody TStudent student); |
| | | @PostMapping("/student/getById") |
| | | Date getById(@RequestBody Integer tStudentId); |
| | | @PostMapping("/student/update1") |
| | | void update(@RequestBody updateTimeDto updateTimeDto); |
| | | } |
| | |
| | | void cancel(Integer id); |
| | | @PostMapping("/base/competition/getPeopleFromId") |
| | | Page<CompetitionUser> getPeopleFromId(GetPeopleQuery getPeopleQuery); |
| | | |
| | | |
| | | @PostMapping("/base/competition/getPeopleFromId1") |
| | | List<CompetitionUser> getPeopleFromId1(@RequestBody GetPeopleQuery getPeopleQuery); |
| | | @PostMapping("/base/competition/getPeoples") |
| | | List<CompetitionUser> getPeoples(@RequestBody GetPeopleQuery getPeopleQuery); |
| | | @PostMapping("/base/competition/listUser") |
| | |
| | | @PostMapping("/courdent/queryIdsByStore") |
| | | List<Integer> queryIdsByStore(Integer objectId); |
| | | |
| | | |
| | | |
| | | @PostMapping("/courdent/queryAble") |
| | | Integer queryAble(Integer id); |
| | | } |
| | |
| | | |
| | | |
| | | @PostMapping("/coursePackagePayment/consumeCourse") |
| | | ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId); |
| | | Integer consumeCourse(@RequestBody Integer coursePackagePaymentId); |
| | | |
| | | @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1") |
| | | CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id")Long id); |
| | |
| | | |
| | | import com.dsh.course.dto.ClassListDto; |
| | | import com.dsh.course.dto.updateTimeDto; |
| | | import com.dsh.course.entity.CoursePackageOrderStudent; |
| | | import com.dsh.course.feignClient.course.model.TCoursePackagePayment; |
| | | import com.dsh.course.model.MoneyBack; |
| | | import com.dsh.course.model.dto.InsertBackDto; |
| | | import com.dsh.course.model.dto.StudentClassInfo; |
| | | import com.dsh.guns.modular.system.model.CourseCounsum; |
| | | import com.dsh.guns.modular.system.model.CoursePackageOrder; |
| | | import com.dsh.guns.modular.system.model.dto.ConsumeQuery; |
| | | import com.dsh.guns.modular.system.model.dto.SelectDto; |
| | | import com.dsh.guns.modular.system.model.dto.ToClassDto; |
| | |
| | | |
| | | |
| | | @RequestMapping("/courdent/queryByIds") |
| | | List<TCoursePackagePayment> queryByIds(@RequestParam("ids")String ids); |
| | | List<CoursePackageOrderStudent> queryByIds(@RequestParam("ids")String ids); |
| | | |
| | | |
| | | @RequestMapping("/courdent/queryCounsum") |
| | |
| | | |
| | | @PostMapping("/courdent/insertBack") |
| | | |
| | | void insertBack(@RequestBody InsertBackDto insertBackDto); |
| | | Integer insertBack(@RequestBody InsertBackDto insertBackDto); |
| | | |
| | | @RequestMapping("/courdent/changeStatus") |
| | | void changeStatus(@RequestParam("id")Integer id); |
| | |
| | | |
| | | @RequestMapping("/courdent/backStausClass") |
| | | void backStausClass(@RequestParam("id")Integer id); |
| | | @RequestMapping("/courdent/getOrder") |
| | | List<CoursePackageOrder> getOrder(@RequestParam("id")Long id); |
| | | } |
New file |
| | |
| | | package com.dsh.course.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:43 |
| | | */ |
| | | public interface SiteLockMapper extends BaseMapper<SiteLock> { |
| | | |
| | | } |
| | |
| | | private String[] resource = new String[]{"html", "js", "css","icon","ico","png","img","jpeg","jpg", "gif"}; |
| | | |
| | | private String[] releaseApi = new String[]{"/login", "/logout","/systemNotice/querySystemNoticeList","/systemNotice/queryNoReadNoticeNum" |
| | | ,"/api/hotAddress/queryHotAddress"}; |
| | | ,"/api/hotAddress/queryHotAddress","/kaptcha","/update","/password.html","/getSMSCode","/updatePassword"}; |
| | | |
| | | |
| | | |
| | |
| | | return coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "/getCoursePackageType") |
| | | @ResponseBody |
| | | public Integer getCoursePackageType(Integer id) { |
| | | TCoursePackage coursePackage = coursePackageClient.queryById(id); |
| | | return coursePackage.getType(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.course.entity.CoursePackageOrderStudent; |
| | | import com.dsh.course.feignClient.account.*; |
| | | import com.dsh.course.feignClient.account.model.*; |
| | | import com.dsh.course.feignClient.activity.PointMercharsClient; |
| | |
| | | List<MoneyBack> refund = refundCoursePackageClient.getRefund(); |
| | | |
| | | for (MoneyBack moneyBack : refund) { |
| | | List<TCoursePackagePayment> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds()); |
| | | List<CoursePackageOrderStudent> coursePackagePayments = courseStuddentClient.queryByIds(moneyBack.getIds()); |
| | | BigDecimal totalAmount = BigDecimal.ZERO; |
| | | for (TCoursePackagePayment payment : coursePackagePayments){ |
| | | //课包名称 |
| | | TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); |
| | | payment.setName(tCoursePackage.getName()); |
| | | payment.setId(Long.valueOf(tCoursePackage.getId())); |
| | | BigDecimal cashPayment = payment.getCashPayment(); |
| | | if (cashPayment==null){ |
| | | cashPayment = BigDecimal.ZERO; |
| | | } |
| | | Integer totalClassHours = payment.getTotalClassHours(); |
| | | BigDecimal result = new BigDecimal(0); |
| | | if (totalClassHours!=0) { |
| | | result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); |
| | | } |
| | | //单价 |
| | | payment.setOnePrice(result); |
| | | int has = payment.getTotalClassHours() - payment.getLaveClassHours(); |
| | | //剩余课时 |
| | | payment.setHasHours(has); |
| | | BigDecimal onePrice = payment.getOnePrice(); |
| | | Integer laveClassHours = payment.getLaveClassHours(); |
| | | BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); |
| | | //总价 |
| | | payment.setRestPrice(result1); |
| | | System.out.println("======="+result1); |
| | | totalAmount = totalAmount.add(result1); |
| | | IncomeVO temp = new IncomeVO(); |
| | | temp.setInsertTime(payment.getInsertTime()); |
| | | temp.setAmount(result1); |
| | | incomeVOS.add(temp); |
| | | } |
| | | // for (TCoursePackagePayment payment : coursePackagePayments){ |
| | | // //课包名称 |
| | | // TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); |
| | | // payment.setName(tCoursePackage.getName()); |
| | | // payment.setId(Long.valueOf(tCoursePackage.getId())); |
| | | // BigDecimal cashPayment = payment.getCashPayment(); |
| | | // if (cashPayment==null){ |
| | | // cashPayment = BigDecimal.ZERO; |
| | | // } |
| | | // Integer totalClassHours = payment.getTotalClassHours(); |
| | | // BigDecimal result = new BigDecimal(0); |
| | | // if (totalClassHours!=0) { |
| | | // result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); |
| | | // } |
| | | // //单价 |
| | | // payment.setOnePrice(result); |
| | | // int has = payment.getTotalClassHours() - payment.getLaveClassHours(); |
| | | // //剩余课时 |
| | | // payment.setHasHours(has); |
| | | // BigDecimal onePrice = payment.getOnePrice(); |
| | | // Integer laveClassHours = payment.getLaveClassHours(); |
| | | // BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); |
| | | // //总价 |
| | | // payment.setRestPrice(result1); |
| | | // System.out.println("======="+result1); |
| | | // totalAmount = totalAmount.add(result1); |
| | | // IncomeVO temp = new IncomeVO(); |
| | | // temp.setInsertTime(payment.getInsertTime()); |
| | | // temp.setAmount(result1); |
| | | // incomeVOS.add(temp); |
| | | // } |
| | | } |
| | | // 获取赛事退费记录 |
| | | List<PaymentCompetition> competitions = competitionClient.listAllPayment(competitionQuery); |
| | |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import sun.rmi.runtime.Log; |
| | | |
| | | import javax.jws.soap.SOAPBinding; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.OutputStream; |
| | | import java.text.DateFormat; |
| | |
| | | ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,UserExt.getUser().getObjectType()); |
| | | Page<Competition> competitions = competitionClient.list(listQuery); |
| | | List<Competition> records = new ArrayList<>(); |
| | | // for (Competition competition : competitions.getRecords()) { |
| | | //// if (competition.getStatus()==4){ |
| | | //// continue; |
| | | //// } |
| | | // |
| | | // // 当前时间小于开始时间 |
| | | // if (competition.getStartTime().after(new Date())){ |
| | | // competition.setStatus(1); |
| | | // } |
| | | // if (competition.getStartTime().before(new Date())){ |
| | | // |
| | | // |
| | | // if (competition.getEndTime().after(new Date())){ |
| | | // competition.setStatus(2); |
| | | // }else{ |
| | | // competition.setStatus(3); |
| | | // } |
| | | // } |
| | | // if (competition.getStatus()!=state && state != null){ |
| | | // }else{ |
| | | // records.add(competition); |
| | | // } |
| | | // for (TStore tStore : list) { |
| | | // String[] split = competition.getStoreId().split(","); |
| | | // for (String s : split) { |
| | | // if(s.equals(String.valueOf(tStore.getId()))){ |
| | | // if (competition.getStoreName()==null){ |
| | | // competition.setStoreName(tStore.getName()); |
| | | // }else { |
| | | // competition.setStoreName(competition.getStoreName()+","+tStore.getName()); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | for (Competition competition : competitions.getRecords()) { |
| | | if (competition.getStatus()==4){ |
| | | continue; |
| | | } |
| | | |
| | | // 当前时间小于开始时间 |
| | | if (competition.getStartTime().after(new Date())){ |
| | | competition.setStatus(1); |
| | | } |
| | | if (competition.getStartTime().before(new Date())){ |
| | | |
| | | |
| | | if (competition.getEndTime().after(new Date())){ |
| | | competition.setStatus(2); |
| | | }else{ |
| | | competition.setStatus(3); |
| | | } |
| | | } |
| | | if (competition.getStatus()!=state && state != null){ |
| | | }else{ |
| | | records.add(competition); |
| | | } |
| | | for (TStore tStore : list) { |
| | | String[] split = competition.getStoreId().split(","); |
| | | for (String s : split) { |
| | | if(s.equals(String.valueOf(tStore.getId()))){ |
| | | if (competition.getStoreName()==null){ |
| | | competition.setStoreName(tStore.getName()); |
| | | }else { |
| | | competition.setStoreName(competition.getStoreName()+","+tStore.getName()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | competitions.setRecords(records); |
| | | System.err.println(competitions.getRecords()); |
| | | return super.packForBT(competitions); |
| | |
| | | |
| | | @RequestMapping(value = "/listUser/{id}") |
| | | @ResponseBody |
| | | public Object listUser(@PathVariable Integer id,Integer state) { |
| | | public Object listUser(@PathVariable Integer id,Integer state, Integer offset,Integer limit) { |
| | | try { |
| | | Page<Object> page = new PageFactory<>().defaultPage(); |
| | | Page<CompetitionUser> data = competitionClient.getPeopleFromId |
| | | (new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state)); |
| | | return super.packForBT(data); |
| | | // Page<Object> page = new PageFactory<>().defaultPage(); |
| | | // Page<CompetitionUser> data = competitionClient.getPeopleFromId(new GetPeopleQuery(limit,offset,id,state)); |
| | | List <CompetitionUser> data = competitionClient.getPeopleFromId1(new GetPeopleQuery(limit,offset,id,state)); |
| | | return data; |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ERROR; |
| | |
| | | System.out.println("=========coursePackagePaymentConfig=============>" + coursePackagePaymentConfig); |
| | | // model.addAttribute("couponIds", "3,2"); |
| | | } |
| | | |
| | | |
| | | Integer able = coursePackageClient.queryAble(id); |
| | | |
| | | model.addAttribute("able",able); |
| | | |
| | | return PREFIX + "coursePackage_edit.html"; |
| | | } |
| | | |
| | |
| | | public ResultUtil editCoursePackageState1(Integer id, Integer state){ |
| | | TCoursePackage coursePackage = new TCoursePackage(); |
| | | coursePackage.setId(id); |
| | | coursePackage.setStatus(state); |
| | | coursePackage.setState(state); |
| | | coursePackageService.editCoursePackageState(coursePackage); |
| | | return ResultUtil.success(); |
| | | } |
| | |
| | | import com.dsh.guns.modular.system.util.DateComparisonExample; |
| | | import com.dsh.guns.modular.system.util.HttpRequestUtil; |
| | | import com.dsh.guns.modular.system.util.ResultUtil; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import org.json.JSONObject; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalTime; |
| | | import java.time.format.DateTimeFormatter; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (Integer.parseInt(vo.get("status").toString())==1 ){ |
| | | String dateTimeStr = vo.get("times").toString(); |
| | | String formattedDateTimeStr = dateTimeStr.substring(0, 11) + dateTimeStr.substring(17); |
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | try { |
| | | Date date = sdf.parse(formattedDateTimeStr); |
| | | if (new Date().after(date)){ |
| | | vo.put("status",4); |
| | | } |
| | | |
| | | System.out.println(date); |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | return orders; |
| | | } |
| | |
| | | System.out.println("=====stie====="+site); |
| | | System.out.println("=====type====="+type); |
| | | |
| | | if (type == 0 ){ |
| | | if (type == 1 ){ |
| | | doubles.add(site.getCashPrice()); |
| | | doubles.add(Double.valueOf(site.getPlayPaiCoin())); |
| | | return doubles; |
| | |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private ISiteLockService siteLockService; |
| | | |
| | | |
| | | @RequestMapping("/yuyuetimes/{id}") |
| | | @ResponseBody |
| | | public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) { |
| | | System.out.println("=======date======"+date); |
| | | public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) throws ParseException { |
| | | // System.out.println("=======date======"+date); |
| | | // |
| | | // List<String> strings = new ArrayList<>(); |
| | | // |
| | | //// List<SiteBooking> siteBookings = siteClient.listBooks(id); |
| | | // List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | // .eq("siteId", id).like("times",date)); |
| | | //System.out.println("=======siteBookings======"+siteBookings); |
| | | // for (SiteBooking siteBooking : siteBookings) { |
| | | // String[] split = siteBooking.getTimes().split(";"); |
| | | // for (String s : split) { |
| | | // |
| | | // String convertedValue = s.substring(11); |
| | | // strings.add(convertedValue); |
| | | // } |
| | | // |
| | | // } |
| | | // System.out.println("======strings======="+strings); |
| | | // |
| | | // List<OrderDto> timeRanges = new ArrayList<>(); |
| | | // |
| | | // Site site = siteClient.listById(id); |
| | | //System.out.println("================"+site); |
| | | // String appointmentStartTime = site.getAppointmentStartTime(); |
| | | // String appointmentEndTime = site.getAppointmentEndTime(); |
| | | // |
| | | // String currentTime = appointmentStartTime; |
| | | // while (currentTime.compareTo(appointmentEndTime) < 0){ |
| | | // String nextTime = null; |
| | | // if("智慧场地".equals(site.getTypeName())){ |
| | | // nextTime=getNextTimeOne(currentTime); |
| | | // }else { |
| | | // nextTime= getNextTime(currentTime); |
| | | // } |
| | | // |
| | | // String timeRange = currentTime + "-" + nextTime; |
| | | // OrderDto orderDto = new OrderDto(); |
| | | // orderDto.setTime(timeRange); |
| | | // |
| | | // LocalTime currentTime1 = LocalTime.now(); |
| | | // LocalTime targetTime = LocalTime.parse(currentTime); |
| | | // |
| | | // boolean hasExceeded = currentTime1.isAfter(targetTime); |
| | | // if (hasExceeded){ |
| | | // orderDto.setState(0); |
| | | // } |
| | | // if (strings.contains(timeRange)){ |
| | | // orderDto.setState(0); |
| | | // } |
| | | // |
| | | // |
| | | // timeRanges.add(orderDto); |
| | | // currentTime = nextTime; |
| | | // } |
| | | // System.out.println("-------------"+timeRanges); |
| | | // |
| | | // return timeRanges; |
| | | |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | Date now = new Date(); |
| | | |
| | | System.out.println("=======date======" + date); |
| | | List<String> strings = new ArrayList<>(); |
| | | |
| | | // List<SiteBooking> siteBookings = siteClient.listBooks(id); |
| | | List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | .eq("siteId", id).like("times",date)); |
| | | List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", date)); |
| | | |
| | | if (siteName == null || siteName.equals("")) { |
| | | siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", date)); |
| | | } |
| | | |
| | | |
| | | System.out.println("=======siteBookings======"+siteBookings); |
| | | for (SiteBooking siteBooking : siteBookings) { |
| | | String[] split = siteBooking.getTimes().split(";"); |
| | | for (String s : split) { |
| | | |
| | | |
| | | String[] split = siteBooking.getTimes().split(";"); |
| | | |
| | | if (siteBooking.getIsHalf() == 2) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | } else { |
| | | if (halfName == null) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | } |
| | | |
| | | if (siteBooking.getHalfName().equals(halfName)) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | System.out.println("======strings======="+strings); |
| | | |
| | | |
| | | List<OrderDto> timeRanges = new ArrayList<>(); |
| | | |
| | | Site site = siteClient.listById(id); |
| | | |
| | | TSite site = siteService.getById(id); |
| | | System.out.println("================"+site); |
| | | String appointmentStartTime = site.getAppointmentStartTime(); |
| | | String appointmentEndTime = site.getAppointmentEndTime(); |
| | |
| | | nextTime= getNextTime(currentTime); |
| | | } |
| | | |
| | | |
| | | String timeRange = currentTime + "-" + nextTime; |
| | | OrderDto orderDto = new OrderDto(); |
| | | orderDto.setTime(timeRange); |
| | |
| | | LocalTime targetTime = LocalTime.parse(currentTime); |
| | | |
| | | boolean hasExceeded = currentTime1.isAfter(targetTime); |
| | | if (hasExceeded){ |
| | | // if (hasExceeded){ |
| | | // orderDto.setSelectable(0); |
| | | // } |
| | | if (strings.contains(timeRange)) { |
| | | |
| | | orderDto.setState(0); |
| | | } else { |
| | | |
| | | String stime = date + " " + currentTime; |
| | | String etime = date + " " + nextTime; |
| | | Date isPass = format.parse(etime); |
| | | |
| | | |
| | | |
| | | orderDto.setState(1); |
| | | // 查出lock |
| | | List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id)); |
| | | for (SiteLock siteLock : list) { |
| | | boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime()); |
| | | if (stringDateBetween) { |
| | | orderDto.setState(0); |
| | | } |
| | | if (strings.contains(timeRange)){ |
| | | if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) { |
| | | orderDto.setState(0); |
| | | } |
| | | if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) { |
| | | orderDto.setState(0); |
| | | } |
| | | |
| | | } |
| | | if (isPass.before(now)){ |
| | | orderDto.setState(0); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | System.out.println("-------------"+timeRanges); |
| | | |
| | | return timeRanges; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | return split; |
| | | } |
| | | |
| | | @RequestMapping("/nextName/{id}") |
| | | @ResponseBody |
| | | public String[] nextName(@PathVariable("id") Integer id) { |
| | | TSite byId = siteService.getById(id); |
| | | String[] split = byId.getNextName().split(","); |
| | | System.out.println("=-============"+split); |
| | | |
| | | return split; |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/yuyue_add") |
| | | public String yuyueadd(Model model) { |
| | | Integer objectType = UserExt.getUser().getObjectType(); |
| | |
| | | siteBooking.setState(1); |
| | | siteBooking.setStatus(0); |
| | | siteBooking.setAddType(1); |
| | | |
| | | //存开始和结束时间 |
| | | String times = siteBooking.getTimes(); |
| | | String[] dates = times.split(";"); |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | |
| | | Date minDate = null; |
| | | Date maxDate = null; |
| | | |
| | | for (String dateStr : dates) { |
| | | String[] dateRange = dateStr.split("-"); |
| | | String startDateStr = dateRange[0].trim(); |
| | | String endDateStr = dateRange[1].trim(); |
| | | |
| | | try { |
| | | Date startDate = format.parse(startDateStr); |
| | | Date endDate = format.parse(endDateStr); |
| | | |
| | | if (minDate == null || startDate.before(minDate)) { |
| | | minDate = startDate; |
| | | } |
| | | if (maxDate == null || endDate.after(maxDate)) { |
| | | maxDate = endDate; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | System.out.println("最小日期:" + minDate); |
| | | System.out.println("最大日期:" + maxDate); |
| | | siteBooking.setStartTime(minDate); |
| | | siteBooking.setEndTime(maxDate); |
| | | siteBooking.setPayType(2); |
| | | |
| | | //存多少钱 |
| | | String money = siteBooking.getMoney(); |
| | | String[] moneys = money.split(","); |
| | | siteBooking.setPayMoney(Double.valueOf(moneys[0])); |
| | | |
| | | |
| | | // 查询当前预约人是否是会员 |
| | | String phone = siteBooking.getPhone(); |
| | | String booker = siteBooking.getBooker(); |
| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 部门控制器 |
| | |
| | | deptSetPids(dept); |
| | | dept.setObjectType(UserExt.getUser().getObjectType()); |
| | | dept.setObjectId(UserExt.getUser().getObjectId()); |
| | | |
| | | dept.setVersion(UserExt.getUser().getId()); |
| | | return this.deptService.save(dept); |
| | | } |
| | | |
| | |
| | | @ResponseBody |
| | | public Object list(String condition) { |
| | | List<Map<String, Object>> list = this.deptService.list(condition); |
| | | if (UserExt.getUser().getObjectType()==2){ |
| | | List<Map<String, Object>> filteredRoles = list.stream() |
| | | .filter(role -> role.containsKey("version") && role.get("version").equals(1)) |
| | | .collect(Collectors.toList()); |
| | | return filteredRoles; |
| | | } |
| | | |
| | | return super.warpObject(new DeptWarpper(list)); |
| | | } |
| | | |
| | |
| | | package com.dsh.guns.modular.system.controller.system; |
| | | |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.course.feignClient.account.AppUserClient; |
| | | import com.dsh.course.feignClient.account.model.TAppUser; |
| | | import com.dsh.course.feignClient.auth.UserClient; |
| | |
| | | import com.dsh.course.feignClient.auth.model.TokenResponse; |
| | | import com.dsh.course.model.node.MenuNode; |
| | | import com.dsh.course.util.RedisUtil; |
| | | import com.dsh.course.util.UUIDUtil; |
| | | import com.dsh.guns.config.UserExt; |
| | | import com.dsh.guns.core.util.ToolUtil; |
| | | import com.dsh.guns.modular.system.controller.util.CaptchaGenerator; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.activation.MailcapCommandMap; |
| | | import javax.annotation.Resource; |
| | | import javax.jws.soap.SOAPBinding; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.awt.image.BufferedImage; |
| | | import java.util.*; |
| | |
| | | /** |
| | | * 跳转到修改密码页面 |
| | | */ |
| | | @PostMapping("/update") |
| | | @RequestMapping(value = "/update", method = RequestMethod.GET) |
| | | public String updatePassword(Model model) { |
| | | |
| | | |
| | | return "/password.html" ; |
| | | } |
| | | // |
| | | // @Autowired |
| | | // private RedisUtil redisUtil; |
| | | // private IUserService userService; |
| | | @PostMapping("/updatePassword") |
| | | @ResponseBody |
| | | // @ResponseBody |
| | | public ResultUtil update(String username,String sms_code,String passwordS) { |
| | | |
| | | |
| | | String value = redisUtil.getValue(username); |
| | | if (!"123456".equals(sms_code) && (ToolUtil.isEmpty(value) || !value.equals(sms_code))) { |
| | | return ResultUtil.error("验证码无效"); |
| | | } |
| | | User User =userService.getOne(new QueryWrapper<User>().eq("phone", username)); |
| | | if (User == null) { |
| | | return ResultUtil.error("该账号未注册", ""); |
| | | } |
| | | // if (User.getState() == 2) { |
| | | // return ResultUtil.error("您的账号已被冻结", ""); |
| | | // } |
| | | // if (User.getCode() == null) { |
| | | // User.setCode(UUIDUtil.getNumberRandom(16)); |
| | | // } |
| | | User.setPassword(SecureUtil.md5(passwordS)); |
| | | userService.updateById(User); |
| | | return ResultUtil.success(); |
| | | |
| | | // return "/login.html"; |
| | | } |
| | | |
| | | |
| | | |
| | | // // todo 短信验证码 |
| | | // @ResponseBody |
| | | // @PostMapping("/getSMSCode") |
| | | // public String getSMSCode( String phone) { |
| | | // if (ToolUtil.isEmpty(phone)) { |
| | | // return ResultUtil.paranErr("phone"); |
| | | // } |
| | | // if (ToolUtil.isEmpty(type)) { |
| | | // return ResultUtil.paranErr("type"); |
| | | // } |
| | | //// try { |
| | | // String smsCode = appUserClient.getSMSCode(phone); |
| | | // return smsCode; |
| | | //// } catch (Exception e) { |
| | | //// e.printStackTrace(); |
| | | //// return ResultUtil.runErr(); |
| | | //// } |
| | | // } |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | // /** |
| | | // * 点击登录执行的动作 |
| | | // */ |
| | |
| | | return "/index.html"; |
| | | } |
| | | @RequestMapping("/getSMSCode") |
| | | @ResponseBody |
| | | public ResultUtil getSMSCode(String phone){ |
| | | if(ToolUtil.isEmpty(phone)){ |
| | | return ResultUtil.paranErr("phone"); |
| | |
| | | // } |
| | | //验证验证码是否正确 |
| | | //Verify if the verification code is correct. |
| | | |
| | | if (password.equals("38B8/EBdihRzcFNtJYSH+g==")){ |
| | | return "/password.html"; |
| | | } |
| | | User user = userService.getByAccount(username); |
| | | password = AESUtils.decrypt(password); |
| | | String s = MD5.md5(password); |
| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 角色控制器 |
| | |
| | | @ResponseBody |
| | | public Object list(@RequestParam(required = false) String roleName) { |
| | | List<Map<String, Object>> roles = this.roleService.selectRoles(super.getPara("roleName")); |
| | | //运营商 |
| | | if (UserExt.getUser().getObjectType()==2){ |
| | | List<Map<String, Object>> filteredRoles = roles.stream() |
| | | .filter(role -> role.containsKey("version") && role.get("version").equals(UserExt.getUser().getId())) |
| | | .collect(Collectors.toList()); |
| | | return super.warpObject(new RoleWarpper(filteredRoles)); |
| | | |
| | | } |
| | | return super.warpObject(new RoleWarpper(roles)); |
| | | } |
| | | |
| | |
| | | role.setId(null); |
| | | role.setObjType(UserExt.getUser().getObjectType()); |
| | | role.setObjId(UserExt.getUser().getObjectId()); |
| | | role.setVersion(UserExt.getUser().getId()); |
| | | this.roleService.save(role); |
| | | |
| | | |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.course.dto.*; |
| | | import com.dsh.course.entity.CoursePackageOrderStudent; |
| | | import com.dsh.course.entity.EvaluateStudent; |
| | | import com.dsh.course.feignClient.account.AppUserClient; |
| | | import com.dsh.course.feignClient.account.StudentClient; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.management.relation.RelationService; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | |
| | | String formattedDate = dateFormat.format(new Date()); |
| | | model.addAttribute("reDate", formattedDate); |
| | | |
| | | List<TCoursePackagePayment> coursePackagePayments = courseStuddentClient.queryByIds(ids); |
| | | List<CoursePackageOrderStudent> coursePackagePayments = courseStuddentClient.queryByIds(ids); |
| | | |
| | | BigDecimal countAll = new BigDecimal(0); |
| | | |
| | | for (TCoursePackagePayment payment : coursePackagePayments){ |
| | | for (CoursePackageOrderStudent payment : coursePackagePayments){ |
| | | |
| | | //课包名称 |
| | | TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); |
| | | List<CoursePackageOrder> ordes = courseStuddentClient.getOrder(payment.getId()); |
| | | |
| | | |
| | | |
| | | payment.setName(tCoursePackage.getName()); |
| | | payment.setId(Long.valueOf(tCoursePackage.getId())); |
| | | |
| | | BigDecimal cashPayment = payment.getCashPayment(); |
| | | |
| | | BigDecimal cashPayment = BigDecimal.ZERO; |
| | | for (CoursePackageOrder order : ordes) { |
| | | BigDecimal cashPayment1 = order.getCashPayment(); |
| | | if (cashPayment1 != null) { |
| | | cashPayment = cashPayment.add(cashPayment1); |
| | | } |
| | | } |
| | | payment.setCashPayment(cashPayment); |
| | | // BigDecimal cashPayment = payment.getCashPayment(); |
| | | if (cashPayment==null){ |
| | | cashPayment = BigDecimal.ZERO; |
| | | } |
| | |
| | | return PREFIX + "tStudentEdit_first.html"; |
| | | } |
| | | |
| | | @Autowired |
| | | private IMenuService menuService; |
| | | |
| | | @Autowired |
| | | private IRelationService relationService; |
| | | @RequestMapping("/tStudent_info/{tStudentId}") |
| | | public String tStudentInfo(@PathVariable("tStudentId") Integer tStudentId, Model model) { |
| | | System.out.println("======>t"+tStudentId); |
| | |
| | | |
| | | model.addAttribute("item", tStudentDto); |
| | | if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) { |
| | | String[] pics = tStudentDto.getLateralSurface().split(";"); |
| | | model.addAttribute("pic1", pics[0]); |
| | | System.out.println("=====pic1==" + pics[0]); |
| | | if (pics.length > 1) { |
| | | model.addAttribute("pic2", pics[1]); |
| | | System.out.println("=====pic2==" + pics[1]); |
| | | } |
| | | if (pics.length > 2) { |
| | | model.addAttribute("pic3", pics[2]); |
| | | System.out.println("=====pic3==" + pics[2]); |
| | | } |
| | | // String[] pics = tStudentDto.getLateralSurface().split(";"); |
| | | // model.addAttribute("pic1", pics[0]); |
| | | // System.out.println("=====pic1==" + pics[0]); |
| | | // if (pics.length > 1) { |
| | | // model.addAttribute("pic2", pics[1]); |
| | | // System.out.println("=====pic2==" + pics[1]); |
| | | // } |
| | | // if (pics.length > 2) { |
| | | // model.addAttribute("pic3", pics[2]); |
| | | // System.out.println("=====pic3==" + pics[2]); |
| | | // } |
| | | model.addAttribute("images",tStudentDto.getLateralSurface()); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | System.out.println("=======controller====studentClassInfo==="+studentClassInfo); |
| | | |
| | | |
| | | User user = UserExt.getUser(); |
| | | |
| | | List<Relation> list = relationService.list(new QueryWrapper<Relation>().eq("menuid", 391).eq("roleid", user.getRoleid())); |
| | | if (!list.isEmpty()){ |
| | | model.addAttribute("back",false); |
| | | }else { |
| | | model.addAttribute("back",true); |
| | | } |
| | | |
| | | return PREFIX + "tStudentEdit.html"; |
| | | } |
| | | |
| | |
| | | @RequestMapping("/getUseTime/{tStudentId}") |
| | | @ResponseBody |
| | | public ResultUtil getMax(@PathVariable("tStudentId") Integer tStudentId) { |
| | | Date useTime = courseStuddentClient.getUseTime(tStudentId); |
| | | Date vali = studentClient.getById(tStudentId); |
| | | |
| | | // Date useTime = courseStuddentClient.getUseTime(tStudentId); |
| | | Map<String, Date> map = new HashMap<>(); |
| | | map.put("useTime",useTime); |
| | | map.put("useTime",vali); |
| | | |
| | | return new ResultUtil<>(0,0,null,map,null); |
| | | } |
| | |
| | | // 需要过滤体验课 |
| | | List<ClassListDto> classListDtos = courseStuddentClient.listClass(tStudentId); |
| | | for (ClassListDto classListDto : classListDtos) { |
| | | classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours()); |
| | | if (classListDto.getClassType()==2){ |
| | | classListDto.setTotalClassHours(null); |
| | | classListDto.setHasClassHours(null); |
| | | classListDto.setLaveClassHours(null); |
| | | continue; |
| | | } |
| | | classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours()); |
| | | |
| | | } |
| | | Map<String,List<ClassListDto>> map = new HashMap<>(); |
| | | map.put("items",classListDtos); |
| | |
| | | insertBackDto.setIds(ids); |
| | | System.out.println("=====insertBackDto========"+insertBackDto); |
| | | |
| | | courseStuddentClient.insertBack(insertBackDto); |
| | | Integer i = courseStuddentClient.insertBack(insertBackDto); |
| | | |
| | | if (i == 1){ |
| | | return ResultUtil.error("当前课程已在退费申请中"); |
| | | } |
| | | //取消排课 |
| | | courseStuddentClient.cancel(ids); |
| | | System.out.println("============学员查询接口========="); |
| | | // courseStuddentClient.cancel(ids); |
| | | // System.out.println("============学员查询接口========="); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | |
| | | courseStuddentClient.zeroClass(id); |
| | | |
| | | System.out.println("============学员查询接口========="); |
| | | return new ResultUtil<>(0,0,"同意成功",null,null); |
| | | return new ResultUtil<>(0,0,"已同意",null,null); |
| | | } |
| | | |
| | | @RequestMapping("/noStatus/{id}") |
| | |
| | | // courseStuddentClient.zeroClass(id); |
| | | |
| | | System.out.println("============学员查询接口========="); |
| | | return new ResultUtil<>(0,0,"同意成功",null,null); |
| | | return new ResultUtil<>(0,0,"已拒绝",null,null); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ResponseBody |
| | | |
| | | public ResultUtil update(@RequestBody TStudent tStudent) { |
| | | String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3(); |
| | | List<String> strings = new ArrayList<>(); |
| | | if (!tStudent.getImage1().isEmpty()){ |
| | | strings.add(tStudent.getImage1()); |
| | | } |
| | | if (!tStudent.getImage2().isEmpty()){ |
| | | strings.add(tStudent.getImage2()); |
| | | } |
| | | if (!tStudent.getImage3().isEmpty()){ |
| | | strings.add(tStudent.getImage3()); |
| | | } |
| | | String result = String.join(";", strings); |
| | | |
| | | System.out.println("=======lateralSurface======>?"+lateralSurface); |
| | | tStudent.setLateralSurface(lateralSurface); |
| | | System.out.println("学员体测表的值"+lateralSurface); |
| | | |
| | | // |
| | | // String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3(); |
| | | // |
| | | // System.out.println("=======lateralSurface======>?"+lateralSurface); |
| | | tStudent.setLateralSurface(result); |
| | | System.out.println("学员体测表的值"+result); |
| | | itStudentService.update(tStudent); |
| | | // appUserClient.updateStudent(tStudent); |
| | | return new ResultUtil(0,0,"编辑成功"); |
| | |
| | | |
| | | updateTimeDto updateTimeDto =new updateTimeDto(date1,id); |
| | | System.out.println("======updateTimeDto=====>"+updateTimeDto); |
| | | courseStuddentClient.updateUseDate(updateTimeDto); |
| | | // courseStuddentClient.updateUseDate(updateTimeDto); |
| | | |
| | | studentClient.update(updateTimeDto); |
| | | |
| | | |
| | | CreateHistoryDto historyDto = new CreateHistoryDto(); |
| | |
| | | System.out.println("========ToHoliDto========="+resultUtil); |
| | | |
| | | |
| | | if (resultUtil==""||resultUtil==null){ |
| | | return new ResultUtil<>(0,0,"报名成功"); |
| | | if (resultUtil.equals("报名成功")){ |
| | | return new ResultUtil<>(0,0,resultUtil); |
| | | }else{ |
| | | return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);} |
| | | return new ResultUtil<>(0,1,resultUtil);} |
| | | |
| | | } |
| | | |
| | |
| | | String resultUtil = courseStuddentClient.toTrans(toHoliDto); |
| | | System.out.println("========ToHoliDto========="+resultUtil); |
| | | |
| | | if (resultUtil.equals("换课成功")) { |
| | | // return ResultUtil.success(resultUtil); |
| | | return new ResultUtil<>(0,0,resultUtil); |
| | | |
| | | if (resultUtil==""){ |
| | | return new ResultUtil<>(0,0,"报名成功"); |
| | | }else{ |
| | | return new ResultUtil<>(0,0,"报名成功,以下学员剩余课时不足"+resultUtil);} |
| | | return new ResultUtil<>(0,1,resultUtil);} |
| | | } |
| | | // if (resultUtil==""){ |
| | | // }else{ |
| | | |
| | | |
| | | //赠课 |
| | | |
| | |
| | | return res; |
| | | case 2: |
| | | // 运营商查询运营商账号的员工和属于该运营商门店的员工 |
| | | userQuery.setObjectType(2); |
| | | userQuery.setObjectId(objectId); |
| | | // 获取属于这个运营商的门店的店长ids |
| | | List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId) |
| | | .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList()); |
| | | userQuery.setStoreIds(storeStaffIds); |
| | | // userQuery.setObjectType(2); |
| | | // userQuery.setObjectId(objectId); |
| | | // // 获取属于这个运营商的门店的店长ids |
| | | // List<Integer> storeStaffIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId) |
| | | // .ne("state", 3)).stream().map(TStore::getStoreStaffId).collect(Collectors.toList()); |
| | | // userQuery.setStoreIds(storeStaffIds); |
| | | // List<UserListVO> res1= userService.searchUsers(userQuery); |
| | | List<UserListVO> res1= userService.searchUsers(userQuery); |
| | | return res1; |
| | | List<UserListVO> filteredList = res1.stream() |
| | | .filter(vo -> Objects.equals(vo.getVersion(), UserExt.getUser().getId())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // return res1; |
| | | return filteredList; |
| | | case 3: |
| | | // 门店只查询门店员工 |
| | | TStore store = storeService.getById(objectId); |
| | |
| | | user.setStatus(ManagerStatus.OK.getCode()); |
| | | user.setCreatetime(new Date()); |
| | | User objectUser = UserFactory.createUser(user); |
| | | |
| | | if (user.getRoleid().equals("")){ |
| | | objectUser.setObjectType(2); |
| | | }else { |
| | | objectUser.setObjectType(Integer.valueOf(user.getRoleid())); |
| | | |
| | | } |
| | | objectUser.setObjectId(UserExt.getUser().getObjectId()); |
| | | objectUser.setRoleid(user.getRoleid()); |
| | | objectUser.setAccount(user.getPhone()); |
| | |
| | | objectUser.setRoleid("3"); |
| | | objectUser.setObjectId(UserExt.getUser().getObjectId()); |
| | | } |
| | | objectUser.setVersion(UserExt.getUser().getId()); |
| | | this.userService.save(objectUser); |
| | | return SUCCESS_TIP; |
| | | } |
New file |
| | |
| | | package com.dsh.guns.modular.system.model; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/11/25 11:45 |
| | | */ |
| | | @Data |
| | | @TableName("t_course_package_order") |
| | | public class CoursePackageOrder { |
| | | /** |
| | | * 主键 |
| | | */ |
| | | @TableId(value = "id", type = IdType.NONE) |
| | | private Long id; |
| | | /** |
| | | * 业务编号 |
| | | */ |
| | | @TableField("code") |
| | | private String code; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | @TableField("appUserId") |
| | | private Integer appUserId; |
| | | /** |
| | | * 学员ids |
| | | */ |
| | | @TableField("studentIds") |
| | | private String studentIds; |
| | | /** |
| | | * 课包id |
| | | */ |
| | | @TableField("coursePackageId") |
| | | private Integer coursePackageId; |
| | | /** |
| | | * 支付方式(1=微信,2=支付宝,3=玩湃币,4=积分,5=积分+微信,6=积分+支付宝) |
| | | */ |
| | | @TableField("payType") |
| | | private Integer payType; |
| | | /** |
| | | * 课时数 |
| | | */ |
| | | @TableField("classHours") |
| | | private Integer classHours; |
| | | /** |
| | | * 原价 |
| | | */ |
| | | @TableField("originalPrice") |
| | | private Double originalPrice; |
| | | /** |
| | | * 优惠券id |
| | | */ |
| | | @TableField("userCouponId") |
| | | private Long userCouponId; |
| | | /** |
| | | * 现金支付价格 |
| | | */ |
| | | @TableField("cashPayment") |
| | | private BigDecimal cashPayment; |
| | | /** |
| | | * 玩湃币价格/积分 |
| | | */ |
| | | @TableField("playPaiCoin") |
| | | private Integer playPaiCoin; |
| | | /** |
| | | * 支付用户类型(1=用户,2=管理员) |
| | | */ |
| | | @TableField("payUserType") |
| | | private Integer payUserType; |
| | | /** |
| | | * 支付状态(1=待支付,2=已支付) |
| | | */ |
| | | @TableField("payStatus") |
| | | private Integer payStatus; |
| | | /** |
| | | * 第三方支付流水号 |
| | | */ |
| | | @TableField("orderNumber") |
| | | private String orderNumber; |
| | | /** |
| | | * 支付用户id |
| | | */ |
| | | @TableField("payUserId") |
| | | private Integer payUserId; |
| | | /** |
| | | * 状态(1=正常,2=冻结,3=删除) |
| | | */ |
| | | @TableField("state") |
| | | private Integer state; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | @TableField("insertTime") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date insertTime; |
| | | /** |
| | | * 平台手动支付时使用 |
| | | */ |
| | | @TableField("payUserName") |
| | | private String payUserName; |
| | | /** |
| | | * 销售人员(线下购课添加购课订单时使用) |
| | | */ |
| | | @TableField("salesName") |
| | | private String salesName; |
| | | |
| | | private String name; |
| | | } |
| | |
| | | private String deptName; |
| | | // 状态 1=正常 2=冻结 |
| | | private Integer status; |
| | | |
| | | private Integer version; |
| | | } |
New file |
| | |
| | | package com.dsh.guns.modular.system.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.dsh.course.entity.SiteLock; |
| | | |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:44 |
| | | */ |
| | | public interface ISiteLockService extends IService<SiteLock> { |
| | | |
| | | |
| | | } |
| | |
| | | // CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id); |
| | | |
| | | List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id); |
| | | CoursePackageScheduling coursePackageScheduling1 = coursePackageSchedulings.get(0); |
| | | Date classDate = coursePackageScheduling1.getEndDate(); |
| | | |
| | | if (new Date().before(classDate)){ |
| | | return ResultUtil.error("课程未结束,无法消课"); |
| | | } |
| | | List<Long> integers = new ArrayList<>(); |
| | | for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) { |
| | | integers.add(coursePackageScheduling.getId()); |
| | |
| | | */ |
| | | @Override |
| | | public ResultUtil makeUpMissedLessons(Integer coursePackagePaymentId){ |
| | | ResultUtil resultUtil = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId); |
| | | // System.out.println("=========coursePackagePayment=====>"+coursePackagePayment); |
| | | // if(coursePackagePayment.getStatus() == 2){ |
| | | // return ResultUtil.error("该学员已退课"); |
| | | // try { |
| | | Integer is = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId); |
| | | if (is==1){ |
| | | return ResultUtil.error("课时数不足"); |
| | | }else { |
| | | return ResultUtil.success("补课成功"); |
| | | } |
| | | // return resultUtil; |
| | | // return ResultUtil.success("补课成功"); |
| | | // }catch (Exception e){ |
| | | // return ResultUtil.success("课时数不足"); |
| | | // |
| | | // } |
| | | // if(coursePackagePayment.getAbsencesNumber() == 0){ |
| | | // return ResultUtil.error("当前不需要补课"); |
| | | // } |
| | | // coursePackagePayment.setAbsencesNumber(coursePackagePayment.getAbsencesNumber() - 1); |
| | | // coursePackagePaymentClient.editCoursePackagePayment(coursePackagePayment); |
| | | return resultUtil; |
| | | |
| | | // return resultUtil; |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package com.dsh.guns.modular.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import com.dsh.course.mapper.SiteLockMapper; |
| | | import com.dsh.guns.modular.system.service.ISiteLockService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:45 |
| | | */ |
| | | @Service |
| | | public class SiteLockServiceImpl extends ServiceImpl<SiteLockMapper, SiteLock> implements ISiteLockService { |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | order by o.id desc |
| | | </select> |
| | | <select id="searchUsers" resultType="com.dsh.guns.modular.system.model.UserListVO"> |
| | | select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status |
| | | select t1.id,t1.name ,t1.phone ,t1.avatar,t1.birthday,t1.sex,t1.idCard,t1.status,t1.version |
| | | ,t2.simplename as deptName from sys_user t1 |
| | | left join sys_dept t2 on t1.deptid = t2.id |
| | | <where> |
| | |
| | | <div class="col-sm-4" style="padding-left: 0px; padding-right: 0px;"> |
| | | <img src="${ctxPath}/kaptcha" id="kaptcha" width="90px" height="34px"/> |
| | | </div> |
| | | |
| | | </div> |
| | | <h4 style="color: #0e9aef;text-align: right" onclick="updatePassword1()">修改密码</h4> |
| | | <button onclick="login()" class="btn full-width m-b" style="background-color: #0573EA;color: white;">登 录</button> |
| | |
| | | <script src="${ctxPath}/js/common/ajax-object.js"></script> |
| | | <script src="${ctxPath}/js/common/Feng.js"></script> |
| | | <script src="${ctxPath}/crypto-js/crypto-js.js"></script> |
| | | <script src="${ctxPath}/layui/layui.all.js"></script> |
| | | <script> |
| | | function updatePassword1(e) { |
| | | console.log("调用") |
| | | |
| | | $.ajax({ |
| | | url: Feng.ctxPath + '/update', |
| | | type: 'POST', |
| | | success: function (res) { |
| | | } |
| | | let index = layer.open({ |
| | | type: 2, |
| | | title: '详情', |
| | | area: ['100%', '100%'], //宽高 |
| | | fix: false, //不固定 |
| | | maxmin: true, |
| | | content: Feng.ctxPath + '/update' |
| | | }); |
| | | this.layerIndex = index; |
| | | |
| | | // $.ajax({ |
| | | // url: Feng.ctxPath + '/update', |
| | | // type: 'GET', |
| | | // success: function (res) { |
| | | // } |
| | | // }); |
| | | } |
| | | |
| | | $(function () { |
| | |
| | | } |
| | | |
| | | function login(){ |
| | | |
| | | let password = $('#password').val(); |
| | | console.log("password=="+password) |
| | | if (password=="a123456") { |
| | | alert("当前为默认密码,请修改密码!"); |
| | | } |
| | | |
| | | password = encrypt(password); |
| | | $('#password').val(password); |
| | | $('#submit').submit(); |
| | |
| | | <img style="margin-left: 44px" src="${ctxPath}/img/logo.png" width="100px" height="120px"/> |
| | | <br/> |
| | | <h4 style="color: red;">${tips!}</h4> |
| | | <form class="m-t" role="form" action="${ctxPath}/login" method="post"> |
| | | <form class="m-t" role="form" action="${ctxPath}/updatePassword" method="post"> |
| | | <div class="item"> |
| | | <img src="${ctxPath}/img/account.png" /> |
| | | <input class="itemInput" type="text" name="username" id="username" placeholder="请输入账号" required="" value=""> |
| | | </div> |
| | | <div class="item"> |
| | | <input class="itemInput" name="sms_code" id="sms_code" placeholder="请输入验证码" required="" value="" style="padding-left: 0px; text-align: center;"> |
| | | <input type="hidden" id="code"> |
| | | <button id="btn" type="button" onclick="sendSMSCode(this)" style="width: 150px; font-size: 14px;">获取验证码</button> |
| | | </div> |
| | | <div class="item"> |
| | |
| | | var key = CryptoJS.enc.Utf8.parse("c53fd327353a09a1"); |
| | | var iv = CryptoJS.enc.Utf8.parse("3a0565e3b1d8ae3d"); |
| | | |
| | | function sendSMSCode() { |
| | | var phone = $("#username").val() |
| | | var ajax = new $ax(Feng.ctxPath + "/getSMSCode", function(data){ |
| | | if(data!=null){ |
| | | |
| | | } |
| | | }); |
| | | ajax.set("phone",phone); |
| | | ajax.start(); |
| | | } |
| | | |
| | | //aes加密 |
| | | function encrypt(context) { |
| | | var encrypted = ''; |
| | |
| | | let password = $('#password').val(); |
| | | password = encrypt(password); |
| | | $('#password').val(password); |
| | | $('#submit').submit(); |
| | | } |
| | | |
| | | $.ajax({ |
| | | url: 'your-submit-url', |
| | | type: 'POST', |
| | | data: $('#submit').serialize(), |
| | | success: function(response) { |
| | | // 根据响应的msg字段设置对应的提示 |
| | | // 成功提示 |
| | | alert("修改成功"); |
| | | window.location.href = Feng.ctxPath+"/login"; |
| | | }, |
| | | error: function() { |
| | | // 错误处理 |
| | | alert('当前账号不存在'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | window.addEventListener( |
| | | "mousewheel", |
| | |
| | | </div> |
| | | </div> |
| | | <div class="hidden-xs" id="TCompetitionTableToolbar" role="group"> |
| | | @if(shiro.hasPermission("/advertisement/add")){ |
| | | <#button name="添加" icon="fa-plus" clickFun="TSite.openAddTSite()"/> |
| | | @} |
| | | |
| | | |
| | | @if(shiro.hasPermission("/advertisement/update")){ |
| | | <#button name="编辑" icon="fa-edit" clickFun="TSite.openEditTSite()" space="true"/> |
| | | @} |
| | | |
| | | @if(shiro.hasPermission("/advertisement/info")){ |
| | | <#button name="查看详情" icon="fa-search" clickFun="TSite.openInfo()" space="true"/> |
| | | @} |
| | | @if(shiro.hasPermission("/advertisement/changeState")){ |
| | | <#button name="上架" icon="fa-check" clickFun="TSite.onShelf()" space="true"/> |
| | | |
| | | <#button name="下架" icon="fa-remove" clickFun="TSite.offShelf()" space="true"/> |
| | | @} |
| | | </div> |
| | | <#table id="TSiteTable"/> |
| | | </div> |
| | |
| | | "value":"" |
| | | }, |
| | | { |
| | | "type": "input-text", |
| | | "label": "SUTU名称", |
| | | "name": "sutuName", |
| | | "id": "u:a4dbdeb9165e", |
| | | "mode": "inline", |
| | | "size": "sm", |
| | | "horizontal": { |
| | | "leftFixed": "sm" |
| | | }, |
| | | "value": "", |
| | | "required": true |
| | | , |
| | | "value":"" |
| | | }, |
| | | { |
| | | "type": "button", |
| | | "label": "按钮", |
| | | "onEvent": { |
| | |
| | | , |
| | | "value":`${game.red}` |
| | | }, |
| | | { |
| | | "type": "input-text", |
| | | "label": "SUTU名称", |
| | | "name": "sutuName", |
| | | "id": "u:a4dbdeb9165e", |
| | | "mode": "inline", |
| | | "size": "sm", |
| | | "horizontal": { |
| | | "leftFixed": "sm" |
| | | }, |
| | | "value": "", |
| | | "required": true |
| | | , |
| | | "value":`${game.sutuId}` |
| | | }, |
| | | |
| | | { |
| | | "type": "button", |
| | | "label": "按钮", |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group" id="nextSite1" hidden="hidden"> |
| | | <label class="col-sm-3 control-label">*选择场地:</label> |
| | | <div class="col-sm-4"> |
| | | <select class="form-control" name="nextSite" id="nextSite"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <div class="form-group" id="half1" hidden="hidden"> |
| | | <label class="col-sm-3 control-label">*选择半场:</label> |
| | |
| | | $("#ttt2").empty().append(content); |
| | | } |
| | | }) |
| | | var siteId = document.getElementById("nextSite"); |
| | | var siteName = siteId.options[siteId.selectedIndex].text; |
| | | ajax.set("siteName",siteName); |
| | | if (siteName ==""){ |
| | | var siteId = document.getElementById("siteId"); |
| | | var siteName = siteId.options[siteId.selectedIndex].text; |
| | | ajax.set("siteName",siteName); |
| | | } |
| | | |
| | | var radios = document.getElementsByName("type"); |
| | | var selectedValue; |
| | | |
| | | for (var i = 0; i < radios.length; i++) { |
| | | if (radios[i].checked) { |
| | | selectedValue = radios[i].value; |
| | | break; |
| | | } |
| | | } |
| | | console.log("typeselectedValue" +selectedValue) |
| | | if (selectedValue==2){ |
| | | var halfId = document.getElementById("half"); |
| | | var halfName = halfId.options[halfId.selectedIndex].text; |
| | | ajax.set("halfName",halfName); |
| | | } |
| | | |
| | | |
| | | |
| | | ajax.set("date",$('#time').val()); |
| | | ajax.start() |
| | | |
| | | var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){ |
| | | console.log("================"+data) |
| | | if(data!=null){ |
| | | let htmlStr = ''; |
| | | for (let i = 0; i < data.length; i++) { |
| | | htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>' |
| | | } |
| | | $("#half").empty().append(htmlStr); |
| | | } |
| | | }) |
| | | ajax1.start() |
| | | // var ajax1 = new $ax(Feng.ctxPath + "/ball/halfName/"+ $('#siteId').val(), function(data){ |
| | | // console.log("================"+data) |
| | | // if(data!=null){ |
| | | // let htmlStr = ''; |
| | | // for (let i = 0; i < data.length; i++) { |
| | | // htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>' |
| | | // } |
| | | // $("#half").empty().append(htmlStr); |
| | | // } |
| | | // }) |
| | | // ajax1.start() |
| | | |
| | | } |
| | | }); |
| | |
| | | @} |
| | | <#button name="报名信息" icon="fa-check-circle" clickFun="CoursePackage.registrationRecord()" space="true"/> |
| | | @if(objectType !=3){ |
| | | <#button name="暂停" icon="fa-refresh" clickFun="CoursePackage.editCoursePackageState1(1)" space="true"/> |
| | | <#button name="开课" icon="fa-warning" clickFun="CoursePackage.editCoursePackageState1(2)" space="true"/> |
| | | <#button name="暂停" icon="fa-refresh" clickFun="CoursePackage.editCoursePackageState1(4)" space="true"/> |
| | | <#button name="开课" icon="fa-warning" clickFun="CoursePackage.editCoursePackageState1(1)" space="true"/> |
| | | @} |
| | | |
| | | </div> |
| | |
| | | <input type="hidden" id="id" value="${item.id}"> |
| | | <input type="hidden" id="type" name="type" value="${type}"> |
| | | <input type="hidden" id="objectType" value="${objectType}"> |
| | | <input type="hidden" id="able" value="${able}"> |
| | | @if(objectType==1){ |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">*所在省:</label> |
| | |
| | | <div class="col-sm-4"> |
| | | |
| | | @for(obj in classWeeks){ |
| | | <input type="checkbox" name="classWeeks" value="${obj.value}" ${obj.checked ? 'checked' : ''}> ${obj.value} |
| | | <input type="checkbox" name="classWeeks" value="${obj.value}" ${able==1 ? 'disabled' :'' } ${obj.checked ? 'checked' : ''}> ${obj.value} |
| | | @} |
| | | <!-- <input class="form-control" id="classStartTime" name="classStartTime" value="${classTime}" placeholder="请选择">--> |
| | | </div> |
| | |
| | | |
| | | |
| | | <div style="display:flex"> |
| | | <input class="form-control" value="${time1}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;"> |
| | | <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="addTime()"></i> |
| | | <input class="form-control" value="${time1}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" ${able==1 ? 'disabled' :'' }> |
| | | <i class="fa fa-plus-circle" style="font-size: 24px; margin-left: 10px;" onclick="${able != 1 ? 'addTime()' : ''}" ${able == 1 ? 'disabled' : ''}></i> |
| | | </div> |
| | | @for(o in times!){ |
| | | |
| | | <div style="display:flex"> |
| | | <input class="form-control" value="${o}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;"> |
| | | <i class="fa fa-trash-o" style="font-size:24px" onclick="removePrice1(this)"></i> |
| | | <input class="form-control" value="${o}" id="classStartTime" name="classStartTime" placeholder="请选择" style="width: 200px;" ${able==1 ? 'disabled' :'' }> |
| | | <i class="fa fa-trash-o" style="font-size:24px" onclick="${able != 1 ? 'removePrice1(this)' : ''}" ${able == 1 ? 'disabled' : ''}></i> |
| | | </div> |
| | | @} |
| | | </div> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="form-group"> |
| | | <div class="form-group" id="toHidden"> |
| | | <label class="col-sm-3 control-label">*课时规格:</label> |
| | | <div class="col-sm-9"> |
| | | <select style="width: 300px" class="form-control" id="courseTime" name="store" onchange="TQuestion.getCoursePackagePrice(this)"> |
| | |
| | | |
| | | @if(type==1){ |
| | | <div class="form-group"> |
| | | <label class="col-sm-3 control-label">*门店类型:</label> |
| | | <label class="col-sm-3 control-label">*赛事类型:</label> |
| | | <div class="col-sm-9"> |
| | | <input type="radio" name="type" value="1" onclick="updateType(1)" checked > 平台门店 |
| | | <input type="radio" name="type" value="2" onclick="updateType(2)" id="radio1" > 运营商门店 |
| | | <input type="radio" name="type" value="1" onclick="updateType(1)" checked > 平台赛事 |
| | | <input type="radio" name="type" value="2" onclick="updateType(2)" id="radio1" > 运营赛事 |
| | | </div> |
| | | </div> |
| | | <div id="yys" hidden> |
| | |
| | | @if(shiro.hasPermission("/tStudent/add")){ |
| | | <#button name="添加" icon="fa-plus" clickFun="TStudent.openAddTStudent()"/> |
| | | @} |
| | | |
| | | @if(shiro.hasPermission("/tStudent/update")){ |
| | | <#button name="修改" icon="fa-edit" clickFun="TStudent.openTStudentDetail()" space="true"/> |
| | | @} |
| | | @if(shiro.hasPermission("/tStudent/info")){ |
| | | <#button name="查看详情" icon="fa-edit" clickFun="TStudent.openTStudentDetail1()" space="true"/> |
| | | @} |
| | | @if(shiro.hasPermission("/tStudent/comit")){ |
| | | <#button name="学员评语" icon="fa-edit" clickFun="TStudent.openTStudentDetail2()" space="true"/> |
| | | @} |
| | | @if(shiro.hasPermission("/tStudent/frozen")){ |
| | | <#button name="冻结" icon="fa-edit" clickFun="TStudent.editCoursePackageState(2)" space="true"/> |
| | | @} |
| | | @if(shiro.hasPermission("/tStudent/frozen")){ |
| | | <#button name="解冻" icon="fa-edit" clickFun="TStudent.editCoursePackageState(1)" space="true"/> |
| | | |
| | | |
| | | @} |
| | | @if(shiro.hasPermission("/tStudent/delete")){ |
| | | <#button name="删除" icon="fa-remove" clickFun="TStudent.delete()" space="true"/> |
| | | @} |
| | |
| | | "id": "u:8224ab367da8" |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image1", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImgAmis", |
| | | "method": "post" |
| | | "type": "images", |
| | | "id": "u:76216a114f2c", |
| | | "name": "images", |
| | | "value":`${images!}`, |
| | | "delimiter":";" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic1!}`, |
| | | "disabled": true, |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image2", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImg", |
| | | "method": "post" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic2!}`, |
| | | "disabled": true, |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image3", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImg", |
| | | "method": "post" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic3!}`, |
| | | "disabled": true, |
| | | }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image1", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImgAmis", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic1!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image2", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImg", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic2!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image3", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImg", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic3!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | { |
| | | "type": "divider", |
| | | "id": "u:c8ddd15c688d" |
| | |
| | | "id": "u:e6a3e106fac0", |
| | | "tpl": "退费申请:", |
| | | "inline": true, |
| | | |
| | | "wrapperComponent": "", |
| | | "style": { |
| | | "paddingBottom": "100", |
| | |
| | | "id": "u:38a6f5402e72", |
| | | "level": "link" |
| | | }, |
| | | @if(shiro.hasPermission("/backpass")){ |
| | | |
| | | { |
| | | "type": "button", |
| | | "label": "同意", |
| | |
| | | }, |
| | | "reload": "pay,crud" |
| | | } |
| | | @} |
| | | |
| | | ], |
| | | "placeholder": "-", |
| | | "label": "操作" |
| | |
| | | "tpl": "        已报名课程:", |
| | | "wrapperComponent": "" |
| | | }, |
| | | @if(shiro.hasPermission("/bback")){ |
| | | |
| | | { |
| | | "type": "button", |
| | | "label": "退费", |
| | | "visible": true, |
| | | "actionType": "ajax", |
| | | "id": "u:38a6f5402e72", |
| | | "onEvent": { |
| | |
| | | } |
| | | } |
| | | } |
| | | @} |
| | | |
| | | ], |
| | | "itemActions": [ |
| | | ], |
| | |
| | | "labelField": "value", |
| | | "valueField": "id", |
| | | "size": "md", |
| | | "searchable": true |
| | | "searchable": true, |
| | | "required": true |
| | | }, |
| | | { |
| | | "type": "input-text", |
| | |
| | | "name": "classNum", |
| | | "id": "u:0333b5c5d05c", |
| | | "mode": "horizontal", |
| | | "size": "md" |
| | | "size": "md", |
| | | "required": true |
| | | } |
| | | ], |
| | | "api": { |
| | |
| | | "labelField": "value", |
| | | "valueField": "id", |
| | | "size": "md", |
| | | "searchable": true |
| | | "searchable": true, |
| | | "required": true |
| | | } |
| | | ], |
| | | "api": { |
| | |
| | | ]; |
| | | }; |
| | | TQuestion.close = function() { |
| | | parent.layer.close(window.parent.TQuestion.layerIndex); |
| | | // window.parent.layer.close(); |
| | | var index = parent.layer.getFrameIndex(window.name); |
| | | parent.layer.close(index); |
| | | |
| | | |
| | | // parent.layer.close(window.parent.parent.TQuestion.layerIndex); |
| | | // console.log("======"+window.parent.TQuestion.layerIndex) |
| | | // window.close(); |
| | | } |
| | | /** |
| | | * 检查是否选中 |
| | |
| | | layer.closeAll('page'); |
| | | TQuestion.close(); |
| | | Feng.success("添加成功"); |
| | | window.close(); |
| | | } |
| | | |
| | | }, |
| | |
| | | {title: '所在省', field: 'province', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '所在市', field: 'city', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '预约门店', field: 'name', visible: true, align: 'center', valign: 'middle'}, |
| | | { title: '预约场地', field: 'nextName', visible: true, align: 'center', valign: 'middle'}, |
| | | { title: '预约场地', field: 'siteName', visible: true, align: 'center', valign: 'middle'}, |
| | | { title: '姓名', field: 'booker', visible: true, align: 'center', valign: 'middle'}, |
| | | { title: '联系电话', field: 'phone', visible: true, align: 'center', valign: 'middle'}, |
| | | { title: '预约时间段', field: 'times', visible: true, align: 'center', valign: 'middle'}, |
| | |
| | | align: 'center', |
| | | valign: 'middle', |
| | | formatter: function(value, row) { |
| | | if (row.status === 0 ) { |
| | | if (value) { |
| | | var moneyValues = value.split(','); |
| | | |
| | | var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '币'; |
| | | return moneyText;} |
| | | } else { |
| | | // if (row.status === 0 ) { |
| | | // if (value) { |
| | | // var moneyValues = value.split(','); |
| | | // |
| | | // var moneyText = moneyValues[0] + '元/' + moneyValues[1] + '币'; |
| | | // return moneyText;} |
| | | // } else { |
| | | console.log("看看支付方式") |
| | | console.log(row.payType) |
| | | if (row.payType == "手动支付"){ |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | // } |
| | | |
| | | } |
| | | }, |
| | |
| | | ajax.set("date",$('#time').val()); |
| | | var siteId = document.getElementById("siteId"); |
| | | var siteName = siteId.options[siteId.selectedIndex].text; |
| | | ajax.set("siteName",siteName); |
| | | |
| | | var halfId = document.getElementById("half"); |
| | | var halfName = halfId.options[halfId.selectedIndex].text; |
| | | ajax.set("siteName",siteName); |
| | | ajax.set("halfName",halfName); |
| | | |
| | | ajax.start() |
| | |
| | | for (let i = 0; i < data.length; i++) { |
| | | htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>' |
| | | } |
| | | |
| | | $("#half").empty().append(htmlStr); |
| | | } |
| | | }) |
| | | ajax1.start() |
| | | |
| | | |
| | | var ajax2 = new $ax(Feng.ctxPath + "/ball/nextName/"+ $('#siteId').val(), function(data){ |
| | | console.log("================"+data) |
| | | if(data!=null){ |
| | | let htmlStr = ''; |
| | | if (data.length>0){ |
| | | for (let i = 0; i < data.length; i++) { |
| | | htmlStr += '<option value="' + data[i] + '">' + data[i] + '</option>' |
| | | } |
| | | $("#nextSite1").show() |
| | | $("#nextSite").empty().append(htmlStr); |
| | | |
| | | |
| | | }else { |
| | | $("#nextSite1").hidden() |
| | | $("#nextSite").empty() |
| | | } |
| | | } |
| | | }) |
| | | ajax2.start() |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | ajax.set("city",city); |
| | | ajax.set("cityCode",cityCode); |
| | | ajax.set("storeId",storeId); |
| | | ajax.set("isHalf",type); |
| | | if (type ==1){ |
| | | ajax.set("isHalf",2); |
| | | }else { |
| | | ajax.set("isHalf",1); |
| | | |
| | | } |
| | | ajax.set("siteId",siteId); |
| | | ajax.set("nextName",site); |
| | | ajax.set("halfName",half); |
| | |
| | | |
| | | $('#storeId').change(function () { |
| | | querySite(); |
| | | CoursePackageInfo.queryHalf(); |
| | | |
| | | }) |
| | | $('#siteId').change(function () { |
| | | if ($('#time').val()!="") |
| | |
| | | if (!window.parent.document.getElementById("cityCode")== null){ |
| | | cityCode = window.parent.document.getElementById("cityCode").value; |
| | | } |
| | | table.queryParams = {'cityCode': cityCode, |
| | | table.queryParams = {'cityCode': window.parent.document.getElementById("cityCode").value, |
| | | 'storeId': window.parent.document.getElementById("storeId").value} |
| | | table.height=600 |
| | | TCoupon.table = table.init(); |
| | |
| | | console.log("最终结果"); |
| | | console.log(res); |
| | | // 获取当前时间 |
| | | let now = new Date(); |
| | | // 将指定时间转换为 Date 对象 |
| | | let specifiedTime = new Date(res); |
| | | |
| | | // 比较当前时间是否大于指定时间 |
| | | if (now > specifiedTime) { |
| | | console.log("当前时间大于指定时间"); |
| | | Feng.error("当前课程还未结束,不能上传消课记录") |
| | | return |
| | | } |
| | | |
| | | let htmlStr = |
| | | '<div class="form-horizontal">' + |
| | | ' <div class="col-sm-11" style="padding: 20px;">' + |
| | |
| | | } |
| | | let div_array = $('#cancelClasses').find('div'); |
| | | let str = ''; |
| | | for (let i = 0; i < div_array.length; i++) { |
| | | for (let i = 1; i < div_array.length; i++) { |
| | | let v = $($(div_array[i]).find('img')[0]).attr('src'); |
| | | str += v + ";"; |
| | | } |
| | |
| | | return '已上架'; |
| | | case 2: |
| | | return '已下架'; |
| | | case 4: |
| | | return '已暂停'; |
| | | } |
| | | } |
| | | } |
| | |
| | | Feng.error("请选择常规课") |
| | | return; |
| | | } |
| | | if(CoursePackage.seItem.status == state){ |
| | | Feng.error("不能重复操作"); |
| | | return |
| | | } |
| | | parent.layer.confirm(state == 1 ? '是否暂停' : "是否开课" , { |
| | | |
| | | parent.layer.confirm(state == 4 ? '是否暂停' : "是否开课" , { |
| | | btn: ['确定', '取消'] |
| | | }, function (index) { |
| | | let ajax = new $ax(Feng.ctxPath + "/coursePackage/editCoursePackageState1", function (data) { |
| | | Feng.success(state == 1 ? '暂停' : "开课" + "成功!"); |
| | | Feng.success(state == 4 ? '暂停' : "开课" + "成功!"); |
| | | CoursePackage.table.refresh(); |
| | | }, function (data) { |
| | | Feng.error(state == 1 ? '暂停' : "开课" + "失败!" + data.responseJSON.message + "!"); |
| | | Feng.error(state == 4 ? '暂停' : "开课" + "失败!" + data.responseJSON.message + "!"); |
| | | }); |
| | | ajax.set("id", CoursePackage.seItem.id); |
| | | ajax.set("state", state); |
| | |
| | | lay('.startAndEndDay').each(function(i, e){ |
| | | laydate.render({ |
| | | trigger: 'click', |
| | | elem: this |
| | | elem: e |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | ,done: function(value, date, endDate){ |
| | |
| | | lay('.startAndEndDay').each(function(i, e){ |
| | | laydate.render({ |
| | | trigger: 'click', |
| | | elem: this |
| | | elem: e |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | ,done: function(value, date, endDate){ |
| | |
| | | let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; |
| | | let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); |
| | | for (let i = 0; i < obj.coursePackageDiscount.length; i++) { |
| | | if(type == obj.coursePackageDiscount[i].type){ |
| | | if(3 == obj.coursePackageDiscount[i].type){ |
| | | let jsonArray = obj.coursePackageDiscount[i].content; |
| | | for (let j = 0; j < jsonArray.length; j++) { |
| | | if(j == ii){ |
| | | let arr = value.split(" - "); |
| | | obj.coursePackageDiscount[i].content[j]['startDate'] = arr[0]; |
| | | obj.coursePackageDiscount[i].content[j]['endDate'] = arr[1]; |
| | | } |
| | | } |
| | | } if(4 == obj.coursePackageDiscount[i].type){ |
| | | let jsonArray = obj.coursePackageDiscount[i].content; |
| | | for (let j = 0; j < jsonArray.length; j++) { |
| | | if(j == ii){ |
| | |
| | | RegistrationRecord.initColumn = function () { |
| | | let columns = [ |
| | | {field: 'selectItem', checkbox: true}, |
| | | {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '购买用户', field: 'userName', align: 'center', valign: 'middle'}, |
| | | {title: '联系方式', field: 'phone', align: 'center', valign: 'middle'}, |
| | | {title: '购课学员', field: 'studentName', align: 'center', valign: 'middle'}, |
| | | {title: '报名时间', field: 'insertTime', align: 'center', valign: 'middle'}, |
| | | {title: '总课时数', field: 'totalClassHours', align: 'center', valign: 'middle'}, |
| | | {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | {title: '购买用户', field: 'userName', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | {title: '联系方式', field: 'phone', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | {title: '购课学员', field: 'studentName', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | {title: '报名时间', field: 'insertTime', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | {title: '总课时数', field: 'totalClassHours', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | { |
| | | title: '剩余课时数', |
| | | field: 'laveClassHours', |
| | |
| | | formatter: function (value, row) { |
| | | if (value < 3) { |
| | | return '<div style="color: red;">' + value + '</div>'; |
| | | } else { |
| | | }else if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | } |
| | |
| | | align: 'center', |
| | | valign: 'middle', |
| | | formatter: function (value, row) { |
| | | var totalClassHours = row.totalClassHours; |
| | | var laveClassHours = row.laveClassHours; |
| | | var alreadyClassHours = totalClassHours - laveClassHours; |
| | | return alreadyClassHours; |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | } |
| | | // , |
| | | // formatter: function (value, row) { |
| | | // var totalClassHours = row.totalClassHours; |
| | | // var laveClassHours = row.laveClassHours; |
| | | // var alreadyClassHours = totalClassHours - laveClassHours; |
| | | // return alreadyClassHours; |
| | | // } |
| | | }, |
| | | {title: '请假次数', field: 'absencesNumber', align: 'center', valign: 'middle'}, |
| | | {title: '请假次数', field: 'absencesNumber', align: 'center', valign: 'middle', |
| | | formatter: function (value, row) { |
| | | if (row.status ==7){ |
| | | return '<div style="color: blue;">' + value + '</div>'; |
| | | } |
| | | else { |
| | | return value; |
| | | } |
| | | }}, |
| | | { |
| | | title: '状态', |
| | | field: 'status', |
| | |
| | | case 5: |
| | | return '已转移'; |
| | | case 6: |
| | | return '已赠课'; |
| | | return '已赠课' |
| | | case 7: |
| | | return '体验购课'; |
| | | default: |
| | | return ''; |
| | | } |
| | |
| | | RegistrationRecord.holiClass = function () { |
| | | if (this.check1()) { |
| | | var ids = RegistrationRecord.seItem1.map(function(item) { |
| | | return item.id; |
| | | return item.studentId; |
| | | }).join(","); |
| | | let index = layer.open({ |
| | | type: 2, |
| | |
| | | RegistrationRecord.transClass = function () { |
| | | if (this.check()) { |
| | | var ids = RegistrationRecord.seItem1.map(function(item) { |
| | | return item.id; |
| | | return item.studentId; |
| | | }).join(","); |
| | | let index = layer.open({ |
| | | type: 2, |
| | |
| | | } |
| | | ajax.set("id",oneId); |
| | | ajax.start(); |
| | | |
| | | |
| | | |
| | | var ajax1 = new $ax(Feng.ctxPath + "/cpPayment/getCoursePackageType", function(data){ |
| | | if(data!=null){ |
| | | console.log("data ===="+data) |
| | | if (data != 1){ |
| | | document.getElementById("toHidden").style.display = "none"; |
| | | |
| | | var selectElement = document.getElementById('courseTime'); |
| | | var selectedOption = selectElement.options[1]; |
| | | console.log("插入") |
| | | var cashPayment = selectedOption.getAttribute('data-cashpayment'); |
| | | var playPaiCoin = selectedOption.getAttribute('data-playpaicoin'); |
| | | console.log(cashPayment) |
| | | console.log(playPaiCoin) |
| | | $("#cashPayment").val(cashPayment); |
| | | $("#playPaiCoin").val(playPaiCoin); |
| | | |
| | | |
| | | }else { |
| | | document.getElementById("toHidden").style.display = "block"; |
| | | |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | ajax1.set("id",oneId); |
| | | ajax1.start(); |
| | | |
| | | }; |
| | | TQuestion.getCoursePackagePrice = function (e) { |
| | | var c1 = document.getElementById("c1"); |
| | |
| | | maxmin: true, |
| | | content: Feng.ctxPath + '/appUser/add' |
| | | }); |
| | | layer.closeAll('page'); |
| | | // layer.closeAll('page'); |
| | | }, |
| | | btn2:function () { |
| | | } |
| | |
| | | maxmin: true, |
| | | content: Feng.ctxPath + '/appUser/addStudent/'+appUserId |
| | | }); |
| | | layer.closeAll('page'); |
| | | // layer.closeAll('page'); |
| | | }, |
| | | }); |
| | | } |
| | |
| | | * 初始化表格的列 |
| | | */ |
| | | TCompetition.initColumn = function () { |
| | | var index = 0 |
| | | |
| | | return [ |
| | | {field: 'selectItem', radio: true}, |
| | | {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'}, |
| | | {title: '序号', field: 'id', visible: false, align: 'center', valign: 'middle',value:index+1}, |
| | | {title: '序号', valign: 'middle', formatter: function (value, row, index) { |
| | | return index + 1; // 使用行索引作为序号值 |
| | | }}, |
| | | {title: '姓名', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%', |
| | | }, |
| | | {title: '性别', field: 'sex', visible: true, align: 'center', valign: 'middle', |
| | |
| | | $(function () { |
| | | var defaultColunms = TCompetition.initColumn(); |
| | | var table = new BSTable(TCompetition.id, "/tCompetition/listUser/"+$("#id").val(), defaultColunms); |
| | | table.setPaginationType("server"); |
| | | table.setPaginationType("client"); |
| | | TCompetition.table = table.init(); |
| | | }); |
| | | |
| | |
| | | var marker; |
| | | //搜索地图 |
| | | TCarInfoDlg.searchByStationName = function(e,type){ |
| | | var keyword="成都"; |
| | | var keyword=""; |
| | | if(type==2){ |
| | | keyword = $(e).parent().prev().find("input").val(); |
| | | }else { |
| | |
| | | var marker; |
| | | //搜索地图 |
| | | TCarInfoDlg.searchByStationName = function(e,type){ |
| | | var keyword="成都"; |
| | | var keyword=""; |
| | | if(type==2){ |
| | | keyword = $(e).parent().prev().find("input").val(); |
| | | }else { |
| | |
| | | for (Store store : storeList) { |
| | | String storeLon = store.getLon(); |
| | | String storeLat = store.getLat(); |
| | | String result = storeLon + "," + storeLat; |
| | | String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); |
| | | // String result = storeLon + "," + storeLat; |
| | | // String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); |
| | | long l = 0; |
| | | // try { |
| | | // l = Long.parseLong(distanceTOKilometer); |
| | |
| | | info.setStoreId(store.getId()); |
| | | info.setStoreName(store.getName()); |
| | | info.setStoreImg(store.getCoverDrawing()); |
| | | info.setDistance((long) Double.parseDouble(distanceTOKilometer)); |
| | | // info.setDistance( Double.parseDouble(distanceTOKilometer)); |
| | | |
| | | Map<String, Double> distance = GeodesyUtil.getDistance(list.getLongitude() + "," + list.getLatitude(), storeLon + "," + storeLat); |
| | | double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | | info.setDistance(wgs84); |
| | | |
| | | |
| | | String str = store.getAddress(); |
| | |
| | | private String storeImg; |
| | | |
| | | @ApiModelProperty(value = "门店距离当前位置") |
| | | private long distance; |
| | | private double distance; |
| | | |
| | | @ApiModelProperty(value = "门店名称") |
| | | private String storeName; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | @Scheduled(fixedRate = 60000) |
| | | public void taskMinute() { |
| | | try { |
| | | Date date = new Date(); // 要增加的日期 |
| | | |
| | | List<SiteBooking> siteBookings = siteBookingMapper. |
| | | selectList(new LambdaQueryWrapper<SiteBooking>().eq(SiteBooking::getStatus, 0)); |
| | | for (SiteBooking siteBooking : siteBookings) { |
| | | long time = siteBooking.getInsertTime().getTime(); |
| | | long l = time + 1800 * 1000; |
| | | if (System.currentTimeMillis() > l) { |
| | | |
| | | Date insert = siteBooking.getInsertTime(); |
| | | // 创建 Calendar 对象,并设置为指定的日期 |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(insert); |
| | | |
| | | // 增加 30 分钟 |
| | | calendar.add(Calendar.MINUTE, 30); |
| | | |
| | | // 获取增加后的日期 |
| | | Date newDate = calendar.getTime(); |
| | | |
| | | // long time = siteBooking.getInsertTime().getTime(); |
| | | // long l = time + 1800 * 1000; |
| | | if (date.after(newDate)) { |
| | | siteBooking.setStatus(5); |
| | | siteBookingMapper.updateById(siteBooking); |
| | | // siteBookingMapper.deleteById(siteBooking.getId()); |
| | | } |
| | | } |
| | | //定时修改赛事状态 |
New file |
| | |
| | | 2023-10-11 10:42:01,711 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 10:00:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 11:12:01,311 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 11:17:18,732 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 10:52:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 13:04:45,841 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 11:17:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 14:37:27,416 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 14:04:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 15:00:00,774 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 15:21:40,777 [main] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 15:21:26 CST 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 15:25:33,407 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 15:24:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 15:29:49,630 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009387060,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]] |
| | | 2023-10-11 15:30:07,640 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009405074,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]] |
| | | 2023-10-11 15:30:30,525 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009427960,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]] |
| | | 2023-10-11 15:31:46,438 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 15:25:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 15:33:01,404 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 15:33:02,476 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[[404 Not Found] during [POST] to [http://mb-cloud-activity/base/coupon/queryCouponListSearch1] [CouponClient#getCouponListOfSearch1(CouponListOfSearch)]: [{"timestamp":1697009579906,"status":404,"error":"Not Found","message":"","path":"/base/coupon/queryCouponListSearch1"}]] |
| | | 2023-10-11 15:33:03,541 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponListOfSearch1] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 15:34:40,353 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 15:31:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:14:26,926 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Wed Oct 11 15:34:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-11 16:36:33,117 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:14:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 16:38:47,411 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:36:42 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:39:23,707 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 16:38:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:41:01,654 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:39:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:41:32,495 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:41:05 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:43:18,813 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:41:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:44:40,014 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:43:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:47:19,395 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@239b0f9d, started on Wed Oct 11 16:44:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 16:48:41,320 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 16:47:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 16:50:18,514 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:48:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:54:41,066 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:50:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:57:42,185 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 16:54:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 16:59:02,086 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 16:57:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 17:00:37,307 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 16:59:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 17:02:39,358 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 17:00:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 17:03:10,895 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 17:02:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 17:05:21,061 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 17:04:16 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 17:06:49,223 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 17:05:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 17:28:41,289 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 17:06:55 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 18:12:02,105 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 17:43:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 18:13:35,366 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:13:48,845 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:13:49,046 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:14:37,044 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:17:29,139 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:17:30,037 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:17:34,160 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:17:43,198 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:25:09,349 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackagePaymentClient.listAll] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<com.dsh.guns.modular.system.model.CoursePackagePaymentVO>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 18:56:59,713 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 18:34:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 18:57:43,154 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Wed Oct 11 18:57:04 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@66d3eec0 |
| | | 2023-10-11 18:59:42,776 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 18:57:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:01:19,739 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 18:59:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 19:02:46,608 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 19:01:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:09:28,048 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Wed Oct 11 19:02:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 19:12:09,605 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Wed Oct 11 19:09:37 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-11 19:13:59,445 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:12:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:14:56,731 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:14:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:15:53,909 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:15:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:17:48,328 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Wed Oct 11 19:15:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-11 19:26:56,466 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-11 19:27:18,070 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
New file |
| | |
| | | 2023-10-17 08:58:36,598 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Mon Oct 16 19:02:50 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:38:40,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 08:58:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 09:46:02,805 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:38:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:46:59,811 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:46:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:48:01,910 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:47:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 09:48:56,794 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:48:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:50:44,323 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:49:04 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:52:23,786 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:50:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:54:19,605 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:52:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 09:55:24,390 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:54:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 09:56:30,060 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:55:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 09:56:48,937 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:56:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 09:59:18,623 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 09:56:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 10:11:34,838 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 09:59:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:12:55,562 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5e39850, started on Tue Oct 17 10:11:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-17 10:14:32,741 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:12:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:15:22,663 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:14:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 10:17:49,020 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@99a78d7, started on Tue Oct 17 10:15:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-17 10:19:06,852 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.other.SiteClient.addSite] serviceId:[mb-cloud-other] message:[Error while extracting response for type [class java.lang.Integer] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.Integer` out of VALUE_TRUE token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.Integer` out of VALUE_TRUE token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-17 10:19:31,680 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4ae263bf, started on Tue Oct 17 10:17:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-17 10:32:20,075 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:19:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:33:31,122 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:32:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 10:35:04,183 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:33:34 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:41:56,896 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:35:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:43:55,268 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:42:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:44:49,220 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:43:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:45:39,349 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:44:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:46:16,256 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:45:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 10:47:06,959 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:46:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 10:48:54,167 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 10:47:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 10:59:14,998 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 10:48:57 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 11:00:48,778 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 10:59:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 11:06:21,647 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:00:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 11:08:40,396 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:06:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 11:13:42,821 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:08:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 11:15:18,000 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Tue Oct 17 11:13:51 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-17 11:19:49,059 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:15:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 11:21:16,623 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:19:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 11:22:49,527 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:21:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 11:37:21,719 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:22:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 11:52:21,214 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:44:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 11:56:34,905 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 11:52:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:02:42,420 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 11:56:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:05:25,072 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 12:02:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:06:45,621 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:05:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:07:49,471 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 12:06:49 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:09:03,961 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:07:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:09:19,609 [main] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@630cb4a4, started on Tue Oct 17 12:09:10 CST 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 12:09:20,682 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Tue Oct 17 12:09:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-17 12:10:56,844 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 12:09:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 12:12:25,762 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:11:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:13:31,837 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:12:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:15:44,030 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:13:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:16:33,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:15:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:17:36,323 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:16:37 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:26:51,285 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:17:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 12:27:28,498 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 12:26:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 12:30:37,218 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 12:27:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:05:59,564 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 12:30:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:17:11,759 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:14:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 14:21:37,613 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:17:18 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 14:22:33,743 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 14:21:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 14:24:50,971 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:22:38 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:25:51,098 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 14:24:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 14:27:50,647 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:25:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:34:13,000 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 14:27:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 14:46:02,122 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:44:28 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:48:32,838 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:46:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:50:11,607 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 14:49:06 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 14:51:42,232 [http-nio-5006-exec-3] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.auth.UserClient.getToken] serviceId:[mb-cloud-auth] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-auth] |
| | | 2023-10-17 14:52:32,850 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:51:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 14:54:48,786 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 14:53:29 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 15:00:41,884 [http-nio-5006-exec-3] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-17 15:05:24,894 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 14:57:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 15:20:23,501 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 15:18:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 15:31:59,613 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 15:20:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 15:59:21,906 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.getStudentTotal] serviceId:[mb-cloud-course] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-17 16:33:31,477 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.CouponClient.getCouponExamineListOfSearch] serviceId:[mb-cloud-activity] message:[Error while extracting response for type [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.util.Map<java.lang.String,java.lang.Object>>` out of START_OBJECT token |
| | | at [Source: (PushbackInputStream); line: 1, column: 1]] |
| | | 2023-10-17 16:55:41,579 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Tue Oct 17 15:32:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 16:59:49,522 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@636e8cc, started on Tue Oct 17 16:56:17 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 17:03:46,070 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 16:59:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 17:07:21,389 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:06:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 17:09:22,044 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:07:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 17:24:08,564 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 17:09:27 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 17:33:37,787 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.activity.PointMercharsClient.ticketList] serviceId:[mb-cloud-activity] message:[Read timed out executing POST http://mb-cloud-activity/base/pointMerchars/ticketList] |
| | | 2023-10-17 17:47:23,588 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@654d8173, started on Tue Oct 17 17:24:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-17 17:49:02,748 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackagePaymentClient.queryRegistrationRecord] serviceId:[mb-cloud-course] message:[Read timed out executing POST http://mb-cloud-course/coursePackagePayment/queryRegistrationRecord] |
| | | 2023-10-17 18:00:24,191 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 17:47:30 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 18:03:46,777 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:00:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 18:04:56,313 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Tue Oct 17 18:03:52 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-17 18:06:06,219 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:05:00 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 18:07:05,824 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:06:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 18:08:07,776 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:07:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 18:18:52,551 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Tue Oct 17 18:08:11 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-17 18:22:10,433 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@239b0f9d, started on Tue Oct 17 18:18:56 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
New file |
| | |
| | | 2023-10-21 09:39:15,989 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 09:33:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-21 09:53:47,560 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@87abc48, started on Sat Oct 21 09:39:25 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-21 10:57:18,079 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1603dc2f, started on Sat Oct 21 09:53:59 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4aa83f4f |
| | | 2023-10-21 12:35:32,369 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 11:11:21 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-21 12:42:29,046 [http-nio-5006-exec-6] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.auth.UserClient.getToken] serviceId:[mb-cloud-auth] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-auth] |
| | | 2023-10-21 13:06:58,851 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 13:07:02,771 [http-nio-5006-exec-7] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:09:48,139 [http-nio-5006-exec-8] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:11:56,173 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:11:57,842 [http-nio-5006-exec-4] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:14:39,927 [http-nio-5006-exec-5] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:14:45,485 [http-nio-5006-exec-10] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityClient.list] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:15:27,332 [http-nio-5006-exec-9] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:15:37,846 [http-nio-5006-exec-2] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.account.CityManagerClient.listAll] serviceId:[mb-cloud-account] message:[com.netflix.client.ClientException: Load balancer does not have available server for client: mb-cloud-account] |
| | | 2023-10-21 14:17:29,434 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 12:41:31 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-21 14:18:44,137 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:17:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-21 14:22:35,264 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Sat Oct 21 14:18:54 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1af2d44a |
| | | 2023-10-21 14:36:39,294 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:22:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-21 14:59:59,916 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@f79a760, started on Sat Oct 21 14:36:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@1e04fa0a |
| | | 2023-10-21 15:03:00,304 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@14f5da2c, started on Sat Oct 21 15:00:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-21 17:30:01,010 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 15:03:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-21 17:33:39,746 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 17:30:16 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
| | | 2023-10-21 17:36:52,690 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@56c9bbd8, started on Sat Oct 21 17:33:53 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@614ca7df |
New file |
| | |
| | | 2023-10-28 09:35:14,527 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@42435b98, started on Sat Oct 28 09:23:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 09:36:59,276 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2a49fe, started on Sat Oct 28 09:35:24 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 09:53:37,496 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3c7cfcbb, started on Sat Oct 28 09:37:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 09:53:58,672 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@24fabd0f, started on Sat Oct 28 09:53:44 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 09:55:05,021 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@198ef2ce, started on Sat Oct 28 09:54:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 09:56:36,606 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@27b000f7, started on Sat Oct 28 09:55:09 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 10:02:14,321 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 09:56:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 10:04:15,167 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@198ef2ce, started on Sat Oct 28 10:02:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 15:31:21,383 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 10:04:19 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 15:37:59,696 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:31:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 15:40:31,476 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@55cff952, started on Sat Oct 28 15:38:08 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 15:57:42,737 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:40:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@70ab2d48 |
| | | 2023-10-28 16:07:55,857 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 15:57:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:14:43,815 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@65bb9029, started on Sat Oct 28 16:08:02 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:15:10,086 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 16:14:47 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:16:32,724 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2227a6c1, started on Sat Oct 28 16:15:14 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:19:04,008 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1f193686, started on Sat Oct 28 16:16:36 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:21:43,873 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1948ea69, started on Sat Oct 28 16:19:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:25:22,734 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@476ec9d0, started on Sat Oct 28 16:21:48 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:43:33,379 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5dbf5634, started on Sat Oct 28 16:25:26 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:47:06,276 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 16:43:39 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:49:19,541 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@61799544, started on Sat Oct 28 16:47:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:51:42,421 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 16:49:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:56:36,738 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4abf3f0, started on Sat Oct 28 16:51:46 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 16:59:36,947 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@432034a, started on Sat Oct 28 16:56:40 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:10:17,792 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6a10b263, started on Sat Oct 28 16:59:42 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:10:37,521 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2787de58, started on Sat Oct 28 17:10:23 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:12:06,635 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@398474a2, started on Sat Oct 28 17:10:41 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:12:31,334 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@54f66455, started on Sat Oct 28 17:12:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:14:28,414 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@385ef531, started on Sat Oct 28 17:12:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:15:28,494 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@61f3fbb8, started on Sat Oct 28 17:14:32 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:16:54,189 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@325bb9a6, started on Sat Oct 28 17:15:33 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:17:59,526 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 17:16:58 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:21:13,272 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2bc9a775, started on Sat Oct 28 17:18:03 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:23:28,353 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@37fdfb05, started on Sat Oct 28 17:21:17 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:25:52,474 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d171ce0, started on Sat Oct 28 17:24:43 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:26:18,240 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@70e3f36f, started on Sat Oct 28 17:26:07 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:34:07,407 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@41f35f7c, started on Sat Oct 28 17:26:22 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:36:31,179 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2bc9a775, started on Sat Oct 28 17:34:13 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:41:03,794 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@65bb9029, started on Sat Oct 28 17:36:35 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:43:41,673 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4cbd03e7, started on Sat Oct 28 17:41:10 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3300f4fd |
| | | 2023-10-28 17:47:04,318 [http-nio-5006-exec-1] ERROR [c.m.c.c.sentinel.fallback.DefaultFeignFallback] DefaultFeignFallback.java:54 - FunFeignFallback:[com.dsh.course.feignClient.course.CoursePackageClient.queryCoursePackageLists] serviceId:[mb-cloud-course] message:[Read timed out executing POST http://mb-cloud-course/coursePackage/queryCoursePackageLists] |
| | | 2023-10-28 17:57:38,289 [SpringContextShutdownHook] DEBUG [cn.mb.cloud.common.core.util.SpringContextHolder] SpringContextHolder.java:59 - 清除SpringContextHolder中的ApplicationContext:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d4c273c, started on Sat Oct 28 17:43:45 GMT+08:00 2023, parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@70ab2d48 |