Browse Source

提交

dev^2
2 weeks ago
parent
commit
37a31d6f4c
  1. 4
      application-tenant/tenant-admin/pom.xml
  2. 16
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/CorsConfig.java
  3. 22
      application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java
  4. 2
      application-tenant/tenant-admin/src/main/resources/application-config.yml
  5. 8
      application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml
  6. 6
      common/common-association/pom.xml
  7. 16
      common/common-association/src/main/java/apelet/association/config/FrontendConfig.java
  8. 21
      common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java
  9. 71
      common/common-association/src/main/java/apelet/association/controller/HomeController.java
  10. 12
      common/common-association/src/main/java/apelet/association/dto/UserExerciseDto.java
  11. 110
      common/common-association/src/main/java/apelet/association/plugin/active/ActivityInfoDetailsPlugin.java
  12. 15
      common/common-association/src/main/java/apelet/association/plugin/active/ActivityRegistrationSavePlugin.java
  13. 98
      common/common-association/src/main/java/apelet/association/plugin/active/ActivityRegistrationUpdatePlugin.java
  14. 16
      common/common-association/src/main/java/apelet/association/plugin/active/ActivitySignConfigPlugin.java
  15. 7
      common/common-association/src/main/java/apelet/association/plugin/active/CompetitionDetailsPlugin.java
  16. 72
      common/common-association/src/main/java/apelet/association/plugin/member/MembershipFeePayPlugin.java
  17. 17
      common/common-association/src/main/java/apelet/association/plugin/member/MembershipPayPopupPlugin.java
  18. 25
      common/common-association/src/main/java/apelet/association/plugin/member/UnitNameChangePopupPlugin.java
  19. 6
      common/common-association/src/main/java/apelet/association/plugin/question/QuestionBankListPlugin.java
  20. 30
      common/common-association/src/main/java/apelet/association/task/ContractPaymentReminderTask.java
  21. 62
      common/common-association/src/main/java/apelet/association/task/UserRenewalReminderTask.java
  22. 4
      common/common-qy/pom.xml
  23. 2
      pom.xml

4
application-tenant/tenant-admin/pom.xml

@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-online</artifactId>
<version>1.0.0</version>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>apelet</groupId>
@ -140,7 +140,7 @@ @@ -140,7 +140,7 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-orm</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>apelet</groupId>

16
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/config/CorsConfig.java

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
package apelet.tenantadmin.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 允许所有源
.allowedMethods("*") // 允许所有请求方法
.allowedHeaders("*"); // 允许所有请求头
}
}

22
application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/upms/controller/LoginController.java

@ -1144,33 +1144,15 @@ public class LoginController { @@ -1144,33 +1144,15 @@ public class LoginController {
String sessionId = user.getLoginName() + "_" + deviceType + "_" + MyCommonUtil.generateUuid();
JSONObject jsonData = this.createResponseData(user, sessionId);
TokenData tokenData = this.buildTokenData(user, sessionId, deviceType);
String zwcjName = null;
try {
String result = (String)EasUtil.executeOsfServiceWs("com.kingdee.shr.custom.plat.osf.service.GetPersonalDataService"
,user.getLoginName(),new HashMap());
JSONObject personData = JSONObject.parseObject(result);
tokenData.setPersonId((String) personData.get("personId"));
jsonData.put("personData", JSONObject.parseObject(result));
zwcjName = (String)personData.get("zwcjName");
}catch(Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
this.putTokenDataToSessionCache(tokenData);
// 这里手动将TokenData存入request,便于OperationLogAspect统一处理操作日志。
TokenData.addToRequest(tokenData);
List<MobileEntry> mobileEntryList;
String roleId = getShrRole(zwcjName);
if(!StringUtils.isEmpty(roleId)){
mobileEntryList = mobileEntryService.getMobileEntryListByRoleIds(roleId);
}else{
if (isAdmin) {
mobileEntryList = mobileEntryService.getAllListByOrder(SHOW_ORDER_FIELD);
} else {
mobileEntryList = mobileEntryService.getMobileEntryListByRoleIds(tokenData.getRoleIds());
}
}
jsonData.put("mobileEntryList", mobileEntryList);
Set<String> permSet = new HashSet<>();
if (!isAdmin) {
@ -1205,8 +1187,6 @@ public class LoginController { @@ -1205,8 +1187,6 @@ public class LoginController {
sysPermService.putUserSysPermCache(sessionId, user.getUserId(), permSet);
sysDataPermService.putDataPermCache(sessionId, user.getUserId(), user.getDeptId());
}
return jsonData;
}
@ -1552,4 +1532,6 @@ public class LoginController { @@ -1552,4 +1532,6 @@ public class LoginController {
private List<String> permCodeList;
private List<String> permList;
}
}

2
application-tenant/tenant-admin/src/main/resources/application-config.yml

@ -92,7 +92,7 @@ aliyun: @@ -92,7 +92,7 @@ aliyun:
accessKey: LTAI5t5fEgzRRtdmBvczVS6r
secretKey: uESFiyyi6EwCkM5w4a4pbx6TmVhqgx
bucketName: yy-test12
nginxOssUrl:
minio:
enabled: false

8
application-tenant/tenant-admin/src/main/resources/tenant-admin-dev.yml

@ -218,9 +218,9 @@ spring: @@ -218,9 +218,9 @@ spring:
password: X7&9p8L2@6z4K7!8
driverClassName: com.mysql.cj.jdbc.Driver
name: tenant-admin
initialSize: 10
minIdle: 10
maxActive: 50
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
@ -229,7 +229,7 @@ spring: @@ -229,7 +229,7 @@ spring:
maxOpenPreparedStatements: 20
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnBorrow: true
testOnReturn: false
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
filters: stat,wall

6
common/common-association/pom.xml

@ -42,17 +42,17 @@ @@ -42,17 +42,17 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-generator</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-online</artifactId>
<version>1.0.0</version>
<version>1.0.3</version>
</dependency>
<dependency>
<artifactId>common-orm</artifactId>
<groupId>apelet</groupId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
<dependency>
<artifactId>common-msg-notice</artifactId>

16
common/common-association/src/main/java/apelet/association/config/FrontendConfig.java

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
package apelet.association.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@Data
public class FrontendConfig {
// @Value("${frontend.address}")
public String address;
}

21
common/common-association/src/main/java/apelet/association/controller/DoPracticeProblemsController.java

@ -74,8 +74,10 @@ public class DoPracticeProblemsController { @@ -74,8 +74,10 @@ public class DoPracticeProblemsController {
long batchNumber = IdUtil.getSnowflakeNextId();
result.put("batchNumber", batchNumber);
collection.forEach(f -> {
ObjectValue examQuestions = f.getObjectValue("exam_questions_id");
for (int i = 0; i < collection.size(); i++) {
ObjectValue object = collection.getObject(i);
ObjectValue examQuestions = object.getObjectValue("exam_questions_id");
list.add(examQuestions.getString("id"));
ObjectValue userExercise = new ObjectValue("user_exercise");
@ -92,7 +94,9 @@ public class DoPracticeProblemsController { @@ -92,7 +94,9 @@ public class DoPracticeProblemsController {
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
List<Map<String, Object>> examQuestionsList = new ArrayList<>();
result.put("examQuestionsList", examQuestionsList);
@ -101,7 +105,9 @@ public class DoPracticeProblemsController { @@ -101,7 +105,9 @@ public class DoPracticeProblemsController {
filter.add(new FilterItem("type", FilterItem.not_equals, 4));
ObjectCollection examQuestions = ormGenDataSourceUtil.query("exam_questions", filter, new Selector());
int no = 1;
for (ObjectValue examQuestion : examQuestions) {
for (int i = 0; i < examQuestions.size(); i++) {
ObjectValue examQuestion = examQuestions.getObject(i);
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("id", examQuestion.getString("id"));
hashMap.put("no", no);
@ -118,11 +124,16 @@ public class DoPracticeProblemsController { @@ -118,11 +124,16 @@ public class DoPracticeProblemsController {
hashMap.put("difficulty", examQuestion.getString("difficulty"));
ObjectCollection examQuestionsEntry = examQuestion.getObjectCollection("exam_questions_entry");
List<Map<String, Object>> option = new ArrayList<>();
examQuestionsEntry.forEach(f -> option.add(f.getValues()));
for (int i1 = 0; i1 < examQuestionsEntry.size(); i1++) {
ObjectValue object = examQuestionsEntry.getObject(i1);
option.add(object.getValues());
}
hashMap.put("options", option);
examQuestionsList.add(hashMap);
no++;
}
return ResponseResult.success(result);
}

71
common/common-association/src/main/java/apelet/association/controller/HomeController.java

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
package apelet.association.controller;
import apelet.common.core.object.ObjectCollection;
import apelet.common.core.object.ResponseResult;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.orm.impl.Filter;
import apelet.common.orm.impl.FilterItem;
import apelet.common.orm.impl.Selector;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
* 课程管理
*/
@RestController
@RequestMapping("/tenantadmin/home")
public class HomeController {
@Autowired
private OrmGenDataSourceUtil ormGenDataSourceUtil;
@PostMapping("/homeData")
public ResponseResult<?> homeData() {
HashMap<String, Integer> map = new HashMap<>();
//报名审核
map.put("ApplicationReview", 0);
//会费逾期
ObjectCollection feePay = ormGenDataSourceUtil.query("membership_fee_pay", new Filter(), new Selector());
ArrayList<Map> objects = new ArrayList<>();
for (int i = 0; i < feePay.size(); i++) {
objects.add(feePay.getObject(i).getValues());
}
Map<Object, List<Map>> parentMap = objects.stream().collect(Collectors.groupingBy(m -> m.get("parent_id")));
AtomicInteger OverdueMembershipFees = new AtomicInteger();
parentMap.forEach((k, v) -> {
// 是否存在任意一条 end_time > 当前时间
boolean anyAfterNow = v.stream()
.anyMatch(m2 -> {
Object endTimeObj = m2.get("end_time");
if(endTimeObj == null){
return false;
}
Date endTime = (Date) endTimeObj;
// end_time > 当前时间
return endTime.after(new Date());
});
if(anyAfterNow){
OverdueMembershipFees.getAndIncrement();
}
});
map.put("OverdueMembershipFees", OverdueMembershipFees.get());
// 入会申请
Filter filter = new Filter();
filter.add(new FilterItem("billstatus", FilterItem.not_equals, "C"));
ObjectCollection membershipApply = ormGenDataSourceUtil.query("membership_apply", filter, new Selector());
map.put("MembershipApplication", membershipApply.size());
return ResponseResult.success(map);
}
}

12
common/common-association/src/main/java/apelet/association/dto/UserExerciseDto.java

@ -1,19 +1,19 @@ @@ -1,19 +1,19 @@
package apelet.association.dto;
import apelet.association.model.UserExercise;
import apelet.association.model.*;
import lombok.Data;
import org.flowable.spring.security.UserDto;
import java.util.List;
@Data
public class UserExerciseDto {
public class UserExerciseDto extends ExamQuestions {
// 考试id
Long examId;
// 考试
Exam exam;
// 题库id
Long questionBankId;
// 题库
QuestionBank questionBank;
// 答题用户id
Long userId;

110
common/common-association/src/main/java/apelet/association/plugin/active/ActivityInfoDetailsPlugin.java

@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
package apelet.association.plugin.active;
import apelet.association.utils.MyFileUtil;
import apelet.association.utils.QRCodeUtil;
import apelet.common.core.exception.MyRuntimeException;
import apelet.common.core.object.ObjectValue;
import apelet.common.core.upload.UploadResponseInfo;
import apelet.common.core.util.ApplicationContextHolder;
import apelet.common.core.util.RsaUtil;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.abstractplugin.ListPlugin;
import apelet.common.online.dto.OnlineEventPluginExecuteDto;
import apelet.common.online.model.OnlineDatasource;
import apelet.common.online.model.OnlineTable;
import apelet.common.online.model.constant.AttributeEnum;
import apelet.common.online.service.OnlineDatasourceService;
import apelet.common.online.service.OnlineTableService;
import apelet.common.orm.impl.FilterItem;
import apelet.common.orm.impl.Selector;
import apelet.common.orm.impl.SelectorItem;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 活动详情
*/
public class ActivityInfoDetailsPlugin extends ListPlugin {
private final OrmGenDataSourceUtil ormGenDataSourceUtil;
private final MyFileUtil myFileUtil;
private final QRCodeUtil qrCodeUtil;
private final OnlineDatasourceService onlineDatasourceService;
private final OnlineTableService onlineTableService;
public ActivityInfoDetailsPlugin() {
myFileUtil = ApplicationContextHolder.getBean(MyFileUtil.class);
qrCodeUtil = ApplicationContextHolder.getBean(QRCodeUtil.class);
ormGenDataSourceUtil = ApplicationContextHolder.getBean(OrmGenDataSourceUtil.class);
onlineDatasourceService = ApplicationContextHolder.getBean(OnlineDatasourceService.class);
onlineTableService = ApplicationContextHolder.getBean(OnlineTableService.class);
}
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
this.setWidgetAttribute("id", AttributeEnum.SHOW, false);
}
@Override
public void change(String widgetVariableName, ObjectValue objectValue) {
}
@Override
public void buttonTriggered(String widgetVariableName, ObjectValue objectValue) {
if (widgetVariableName.equals("button1786587153460")) {
String registrationQr = objectValue.getString("registration_qr");
if(StringUtils.isNotEmpty(registrationQr)){
this.showErrorMessage("当前已存在报名二维码, 请勿重复生成!!!");
return;
}
OnlineEventPluginExecuteDto dto = getDto();
String savePath = System.getProperty("user.dir") + "\\zz-resource\\qrcode";
File QRFile = null;
try {
OnlineDatasource onlineDatasource = onlineDatasourceService.getById(dto.getModel().getDatasourceId());
OnlineTable table = onlineTableService.getOnlineTableFromCache(onlineDatasource.getMasterTableId());
// 生成 报名二维码
long id = objectValue.getLong("id");
String url = "http://58.48.135.5:8069" + "/#/?" +
"loginName=" + "admin" +
"&password=" + "123456" +
"&entryId=" + "2087413611113746432" +
"&bindType=" + "1" +
"&onlineFormId=" + "2087385700075835392" +
"&activeId=" + id;
byte[] checkInQr = qrCodeUtil.generateQrCode(url, 350, 350);
QRFile = MyFileUtil.writeToFile(checkInQr, savePath, "qrcode-" + System.currentTimeMillis() + ".png");
MultipartFile checkInMultipart = MyFileUtil.readFileAsMultipartFile(QRFile, "image/png");
UploadResponseInfo registrationQR = myFileUtil.uploadMyFile(table, "registration_qr", true, checkInMultipart);
this.setWidgetAttribute("registrationQr", AttributeEnum.VALUE_CHANGE, registrationQR);
objectValue.put("registration_qr", "["+new JSONObject(BeanUtil.beanToMap(registrationQR)).toJSONString()+"]");
Selector selector = new Selector();
selector.getList().add(new SelectorItem("registration_qr"));
ormGenDataSourceUtil.update(objectValue.getTableName(), objectValue, selector);
} catch (Exception e) {
throw new MyRuntimeException(e.getMessage());
} finally {
QRFile.delete();
}
}
}
}

15
common/common-association/src/main/java/apelet/association/plugin/active/ActivityRegistrationSavePlugin.java

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
package apelet.association.plugin.active;
import apelet.common.core.object.ObjectValue;
import apelet.common.online.plugin.EndOperationTransactionArgs;
import apelet.common.online.plugin.OperationServicePlugIn;
public class ActivityRegistrationSavePlugin extends OperationServicePlugIn {
@Override
public void endOperationTransaction(EndOperationTransactionArgs e) {
ObjectValue objectValue = e.getModel();
}
}

98
common/common-association/src/main/java/apelet/association/plugin/active/ActivityRegistrationUpdatePlugin.java

@ -0,0 +1,98 @@ @@ -0,0 +1,98 @@
package apelet.association.plugin.active;
import apelet.common.core.exception.MyRuntimeException;
import apelet.common.core.object.ObjectCollection;
import apelet.common.core.object.ObjectValue;
import apelet.common.core.util.ApplicationContextHolder;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.abstractplugin.ListPlugin;
import apelet.common.online.dto.OnlineEventPluginExecuteDto;
import apelet.common.online.model.constant.AttributeEnum;
import apelet.common.online.plugin.EndOperationTransactionArgs;
import apelet.common.online.plugin.OperationServicePlugIn;
import apelet.common.orm.impl.Filter;
import apelet.common.orm.impl.FilterItem;
import apelet.common.orm.impl.Selector;
import com.alibaba.fastjson.JSONObject;
public class ActivityRegistrationUpdatePlugin extends ListPlugin {
private OrmGenDataSourceUtil ormGenDataSourceUtil;
public ActivityRegistrationUpdatePlugin() {
ormGenDataSourceUtil = ApplicationContextHolder.getBean(OrmGenDataSourceUtil.class);
}
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
setWidgetAttribute("id", AttributeEnum.SHOW, false);
JSONObject eventparams = JSONObject.parseObject(objectValue.getString("eventparams"));
JSONObject jsonObject = eventparams.getJSONObject("urlParams");
String activeId = jsonObject.getString("activeId");
if(activeId == null){
throw new MyRuntimeException("活动id不能为空");
}
ObjectValue active = ormGenDataSourceUtil.queryOne("association_activity", activeId);
this.setWidgetAttribute("name", AttributeEnum.VALUE_CHANGE, active.get("name"));
this.setWidgetAttribute("startDate", AttributeEnum.VALUE_CHANGE, active.get("start_time"));
this.setWidgetAttribute("endDate", AttributeEnum.VALUE_CHANGE, active.get("end_time"));
this.setWidgetAttribute("parentId", AttributeEnum.VALUE_CHANGE, active.get("id"));
this.setWidgetAttribute("parentId", AttributeEnum.SHOW, false);
}
@Override
public void buttonTriggered(String widgetVariableName, ObjectValue objectValue) {
String unitName = objectValue.getString("unit_name");
String person = objectValue.getString("person");
String phone = objectValue.getString("phone");
String parentId = objectValue.getString("parent_id");
Filter filter1 = new Filter();
filter1.add(new FilterItem("unit_name", FilterItem.equals, unitName));
filter1.add(new FilterItem("person", FilterItem.equals, person));
filter1.add(new FilterItem("phone", FilterItem.equals, phone));
filter1.add(new FilterItem("parent_id", FilterItem.equals, parentId));
ObjectCollection collection = ormGenDataSourceUtil.query("activity_register", filter1, new Selector());
if(!collection.isEmpty()){
this.showWarningMessage("当前单位联系人已报名成功, 请勿重复提交!!!");
this.cancelOperate();
return;
}
ObjectValue activityRegister = new ObjectValue("activity_register");
activityRegister.put("unit_name", unitName);
activityRegister.put("person", person);
activityRegister.put("phone", phone);
activityRegister.put("parent_id", parentId);
Filter filter = new Filter();
filter.add(new FilterItem("unit_name", FilterItem.equals, unitName));
ObjectCollection membershipApplyList = ormGenDataSourceUtil.query("membership_apply", filter, new Selector());
filter = new Filter();
filter.add(new FilterItem("name", FilterItem.equals, person));
ObjectCollection expertManageList = ormGenDataSourceUtil.query("expert_manage", filter, new Selector());
if(membershipApplyList != null && !membershipApplyList.isEmpty()){
ObjectValue object = membershipApplyList.getObject(0);
activityRegister.put("membership_apply_id", object);
}else if(expertManageList != null && !expertManageList.isEmpty()){
ObjectValue object = expertManageList.getObject(0);
activityRegister.put("expert_manage_id", object);
}
try {
ormGenDataSourceUtil.addNew(activityRegister.getTableName(), activityRegister);
} catch (Exception e) {
throw new MyRuntimeException(e.getMessage());
}
this.showMessage("保存成功");
this.cancelOperate();
}
}

16
common/common-association/src/main/java/apelet/association/plugin/active/ActivitySignConfigPlugin.java

@ -36,6 +36,8 @@ import java.util.Map; @@ -36,6 +36,8 @@ import java.util.Map;
@Slf4j
public class ActivitySignConfigPlugin extends ListPlugin {
private final String url = "http://58.48.135.5:8069";
private final MyFileUtil myFileUtil;
private final QRCodeUtil qrCodeUtil;
@ -100,11 +102,11 @@ public class ActivitySignConfigPlugin extends ListPlugin { @@ -100,11 +102,11 @@ public class ActivitySignConfigPlugin extends ListPlugin {
Model model = dto.getModel();
if ("button1778742711763".equals(widgetVariableName)) {
// if (StringUtils.isNotBlank(objectValue.getString("sign_in_code")) &&
// StringUtils.isNotBlank(objectValue.getString("sign_out_code"))) {
// showWarningMessage("当前已存在二维码, 请勿重复生产!!!");
// return;
// }
if (StringUtils.isNotBlank(objectValue.getString("sign_in_code")) &&
StringUtils.isNotBlank(objectValue.getString("sign_out_code"))) {
showWarningMessage("当前已存在二维码, 请勿重复生产!!!");
return;
}
// 生成二维码
String savePath = System.getProperty("user.dir") + "\\zz-resource\\qrcode";
@ -117,14 +119,14 @@ public class ActivitySignConfigPlugin extends ListPlugin { @@ -117,14 +119,14 @@ public class ActivitySignConfigPlugin extends ListPlugin {
OnlineDatasource onlineDatasource = onlineDatasourceService.getById(model.getDatasourceId());
OnlineTable table = onlineTableService.getOnlineTableFromCache(onlineDatasource.getMasterTableId());
String checkIn = "http://192.168.100.22:8080/#/pages/login/routerHdView?activityId=" + activityId + "&activityName=" + activityName + "&type=" + 1;
String checkIn = url + "/#/pages/login/routerHdView?activityId=" + activityId + "&activityName=" + activityName + "&type=" + 1;
byte[] checkInQr = qrCodeUtil.generateQrCode(checkIn, 350, 350);
checkInFile = MyFileUtil.writeToFile(checkInQr, savePath, "qrcode-" + System.currentTimeMillis() + ".png");
MultipartFile checkInMultipart = MyFileUtil.readFileAsMultipartFile(checkInFile, "image/png");
UploadResponseInfo checkInUpload = myFileUtil.uploadMyFile(table, "sign_in_code", true, checkInMultipart);
this.setWidgetAttribute("signInCode", AttributeEnum.VALUE_CHANGE, checkInUpload);
String checkOut = "http://192.168.100.22:8080/#/pages/login/routerHdView?activityId=" + activityId + "&activityName=" + activityName + "&type=" + 2;
String checkOut = url + "#/pages/login/routerHdView?activityId=" + activityId + "&activityName=" + activityName + "&type=" + 2;
byte[] checkOutQr = qrCodeUtil.generateQrCode(checkOut, 300, 300);
checkOutFile = MyFileUtil.writeToFile(checkOutQr, savePath, "qrcode-" + System.currentTimeMillis() + ".png");
MultipartFile checkOutMultipart = MyFileUtil.readFileAsMultipartFile(checkOutFile, "image/png");

7
common/common-association/src/main/java/apelet/association/plugin/active/CompetitionDetailsPlugin.java

@ -30,9 +30,10 @@ public class CompetitionDetailsPlugin extends ListPlugin { @@ -30,9 +30,10 @@ public class CompetitionDetailsPlugin extends ListPlugin {
filter.add(new FilterItem("association_activity_id",FilterItem.equals, objectValue.get("id")));
ObjectCollection collection = ormGenDataSourceUtil.query("competition_entries", filter, new Selector());
JSONArray jsonArray = new JSONArray();
collection.forEach(f -> {
jsonArray.add(f.getValues());
});
for (int i = 0; i < collection.size(); i++) {
jsonArray.add(collection.getObject(i).getValues());
}
setWidgetAttribute("table1783059589608", AttributeEnum.ADD_ROWS, jsonArray);
}

72
common/common-association/src/main/java/apelet/association/plugin/member/MembershipFeePayPlugin.java

@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
package apelet.association.plugin.member;
import apelet.common.core.exception.MyRuntimeException;
import apelet.common.core.object.ObjectCollection;
import apelet.common.core.object.ObjectValue;
import apelet.common.core.util.ApplicationContextHolder;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.online.abstractplugin.ExecutePluginParent;
import apelet.common.online.dto.OnlineEventPluginExecuteDto;
import apelet.common.online.model.ShowParameter;
import apelet.common.online.model.constant.AttributeEnum;
import apelet.common.online.model.constant.ShowTypeEnum;
import apelet.common.online.model.constant.ViewStatus;
import apelet.common.orm.impl.Filter;
import apelet.common.orm.impl.FilterItem;
import apelet.common.orm.impl.Selector;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
public class MembershipFeePayPlugin extends ExecutePluginParent {
private OrmGenDataSourceUtil ormGenDataSourceUtil;
public MembershipFeePayPlugin(){
ormGenDataSourceUtil = ApplicationContextHolder.getBean(OrmGenDataSourceUtil.class);
}
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
super.formCreated(widgetVariableName, objectValue);
OnlineEventPluginExecuteDto dto = getDto();
Map eventParams = dto.getEventParams();
if (eventParams != null) {
this.setWidgetAttribute("parentId", AttributeEnum.VALUE_CHANGE, eventParams.get("id"));
this.setWidgetAttribute("parentId", AttributeEnum.SHOW, false);
this.setWidgetAttribute("membershipDate", AttributeEnum.VALUE_CHANGE, eventParams.get("create_time"));
this.setWidgetAttribute("membershipType", AttributeEnum.VALUE_CHANGE, eventParams.get("membership_type"));
}
}
@Override
public void buttonTriggered(String widgetVariableName, ObjectValue objectValue) {
if(widgetVariableName.equals("保存")){
String parentId = objectValue.getString("parent_id");
Date startTime1= objectValue.getDate("membership_date");
Date endTime1 = objectValue.getDate("end_time");
Filter filter = new Filter();
filter.add(new FilterItem("parent_id", FilterItem.equals, parentId));
ObjectCollection collection = ormGenDataSourceUtil.query(objectValue.getTableName(), filter, new Selector());
for (int i = 0; i < collection.size(); i++) {
ObjectValue object = collection.getObject(i);
Date startTime2= object.getDate("membership_date");
Date endTime2 = object.getDate("end_time");
// 判断 startTime - endTime 和 startTime2 - endTime2 是否存在交集
if (startTime1.before(endTime2) && startTime2.before(endTime1)) {
// 存在交集,抛出异常
throw new MyRuntimeException("会费已缴纳, 请勿重复缴纳!!!");
}
}
}
}
}

17
common/common-association/src/main/java/apelet/association/plugin/member/MembershipPayPopupPlugin.java

@ -22,11 +22,6 @@ public class MembershipPayPopupPlugin extends ExecutePluginParent { @@ -22,11 +22,6 @@ public class MembershipPayPopupPlugin extends ExecutePluginParent {
*/
private static final Object FORM_ID = "2049040032123064320";
/**
* 触发按钮的标识 - 对应表单上按钮的 key/标识
* 点击此按钮时触发弹窗
*/
private static final String BUTTON_KEY = "会费缴纳";
/**
* 按钮点击事件
@ -38,19 +33,21 @@ public class MembershipPayPopupPlugin extends ExecutePluginParent { @@ -38,19 +33,21 @@ public class MembershipPayPopupPlugin extends ExecutePluginParent {
@Override
public void buttonTriggered(String buttonKey, ObjectValue objectValue) {
// 仅响应指定按钮的点击事件
if (!BUTTON_KEY.equals(buttonKey)) {
return;
}
if ("会费缴纳".equals(buttonKey)) {
// 调用 showForm 打开 membershipFeePay 表单
ShowParameter showParameter = new ShowParameter();
showParameter.setFormId(FORM_ID.toString());
showParameter.setHowType(ShowTypeEnum.OPEN_ONLINE_MODAL);
showParameter.setStatus(ViewStatus.EDIT);
Map<String, Object> customParam = new HashMap<>();
customParam.put("id", " ");
customParam.putAll(objectValue.getValues());
showParameter.setCustomParam(customParam);
super.showForm(showParameter);
}
}
}

25
common/common-association/src/main/java/apelet/association/plugin/member/UnitNameChangePopupPlugin.java

@ -50,6 +50,31 @@ public class UnitNameChangePopupPlugin extends ListPlugin { @@ -50,6 +50,31 @@ public class UnitNameChangePopupPlugin extends ListPlugin {
return filter;
}
@Override
protected void afterLoadData(List<Map<String, Object>> dataList) {
super.afterLoadData(dataList);
}
@Override
public void afterLoadFormData(String widgetVariableName, ObjectValue objectValue) {
super.afterLoadFormData(widgetVariableName, objectValue);
}
@Override
public void beforeLoadTableData(String widgetVariableName, ObjectValue objectValue) {
OnlineEventPluginExecuteDto dto = getDto();
super.beforeLoadTableData(widgetVariableName, objectValue);
}
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
super.formCreated(widgetVariableName, objectValue);
}
/**
* 按钮点击事件列表按钮
* 点击"变更"按钮时通过 getSelectData 获取列表中选中行的单据数据

6
common/common-association/src/main/java/apelet/association/plugin/question/QuestionBankListPlugin.java

@ -39,7 +39,8 @@ public class QuestionBankListPlugin extends ListPlugin { @@ -39,7 +39,8 @@ public class QuestionBankListPlugin extends ListPlugin {
return;
}
long batchNumber = IdUtil.getSnowflakeNextId();
collection.forEach(f -> {
for (int i = 0; i < collection.size(); i++) {
ObjectValue f = collection.getObject(i);
ObjectValue userExercise = new ObjectValue("user_exercise");
userExercise.put("question_bank_id", questionBank);
userExercise.put("exam_questions_id", f.getObjectValue("exam_questions_id"));
@ -51,7 +52,8 @@ public class QuestionBankListPlugin extends ListPlugin { @@ -51,7 +52,8 @@ public class QuestionBankListPlugin extends ListPlugin {
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
ObjectValue object = collection.getObject(0);
ObjectValue examQuestions = object.getObjectValue("exam_questions_id");
ShowParameter showParameter = new ShowParameter();

30
common/common-association/src/main/java/apelet/association/task/ContractPaymentReminderTask.java

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
package apelet.association.task;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.orm.impl.Filter;
import apelet.msgnotice.service.SystemMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ContractPaymentReminderTask {
// 提前 30 天提醒
private static final int REMIND_BEFORE_DAYS = 7;
@Autowired
private OrmGenDataSourceUtil ormGenDataSourceUtil;
@Autowired
private SystemMessageService systemMessageService;
@Scheduled(cron = "0 0 1 * * ?")
public void sendRemind() {
Filter filter = new Filter();
// ormGenDataSourceUtil.query("", )
}
}

62
common/common-association/src/main/java/apelet/association/task/UserRenewalReminderTask.java

@ -6,6 +6,8 @@ import apelet.common.core.object.ObjectValue; @@ -6,6 +6,8 @@ import apelet.common.core.object.ObjectValue;
import apelet.common.generator.utils.OrmGenDataSourceUtil;
import apelet.common.orm.impl.Filter;
import apelet.common.orm.impl.Selector;
import apelet.msgnotice.dto.SendSystemMessageDto;
import apelet.msgnotice.service.SystemMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@ -13,6 +15,7 @@ import org.springframework.stereotype.Component; @@ -13,6 +15,7 @@ import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.Date;
@Component
@ -20,11 +23,13 @@ public class UserRenewalReminderTask { @@ -20,11 +23,13 @@ public class UserRenewalReminderTask {
// 提前 30 天提醒
private static final int REMIND_BEFORE_DAYS = 30;
// 会员年度天数(固定 365)
private static final int YEAR_DAYS = 365;
@Autowired
private OrmGenDataSourceUtil ormGenDataSourceUtil;
@Autowired
private SystemMessageService systemMessageService;
@Scheduled(cron = "0 0 1 * * ?")
public void sendRemind() {
ObjectCollection collection = ormGenDataSourceUtil.query("membership_apply", new Filter(), new Selector());
@ -33,40 +38,37 @@ public class UserRenewalReminderTask { @@ -33,40 +38,37 @@ public class UserRenewalReminderTask {
}
for (int i = 0; i < collection.size(); i++) {
ObjectValue objectValue = collection.getObject(i);
Date registTime = objectValue.getDate("regist_time");
if (needRemind(registTime)) {
// TODO 发送消息提示续费
ObjectCollection feePay = objectValue.getObjectCollection("membership_fee_pay");
Date endTime = null;
for (int j = 0; j < feePay.size(); j++) {
if (j == 0) {
endTime = feePay.getObject(j).getDate("end_time");
} else {
Date endTime1 = feePay.getObject(j).getDate("end_time");
if (endTime1.after(endTime)) {
endTime = endTime1;
}
}
}
public boolean needRemind(Date date) {
// 判断 Date endTime 30天后是否是今天
LocalDate endLocalDate = endTime.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
// endTime +30天
LocalDate plus30Day = endLocalDate.plusDays(30);
// 获取今天日期
LocalDate today = LocalDate.now();
LocalDate join = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
if (today.isBefore(join)) {
return false;
if (plus30Day.isEqual(today)) {
// 发送消息提醒
SendSystemMessageDto sendSystemMessageDto = new SendSystemMessageDto();
sendSystemMessageDto.setTitle("会员续费提醒");
sendSystemMessageDto.setContent("您的会员期限还有30天到期,请及时续费。");
sendSystemMessageDto.setRecipientUserIds(Arrays.asList(objectValue.getLong("membership_manger_id")));
systemMessageService.sendSystemMessage(sendSystemMessageDto);
}
// 入会到今天总天数
long totalDays = ChronoUnit.DAYS.between(join, today);
// 第几个年度(从 1 开始)
int yearIndex = (int) (totalDays / YEAR_DAYS) + 1;
// 该年度到期日
LocalDate expireDate = join.plusDays((long) YEAR_DAYS * yearIndex);
// 提醒开始日:到期前 30 天
LocalDate remindStart = expireDate.minusDays(REMIND_BEFORE_DAYS);
// 今天在 [remindStart, expireDate] 区间内,则提醒
return !today.isBefore(remindStart) && !today.isAfter(expireDate);
}
}
}

4
common/common-qy/pom.xml

@ -26,12 +26,12 @@ @@ -26,12 +26,12 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-generator</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-orm</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
</dependencies>

2
pom.xml

@ -289,7 +289,7 @@ @@ -289,7 +289,7 @@
<dependency>
<groupId>apelet</groupId>
<artifactId>common-orm</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
</dependency>
</dependencies>
</dependencyManagement>

Loading…
Cancel
Save