From fc2b79067a16b17b2c9b83128d7c9199a9584461 Mon Sep 17 00:00:00 2001 From: Todking Date: Mon, 6 Dec 2021 14:00:03 +0800 Subject: [PATCH] =?UTF-8?q?add=20aps=20kyc=20=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apsKYC/domain/entity/ApsNotice.java | 44 ++++++ .../apsKYC/domain/entity/ApsNoticeClient.java | 68 ++++++++ .../repository/ApsNoticeClientRepository.java | 18 +++ .../repository/ApsNoticeRepository.java | 21 +++ .../service/ApsNoticeClientsService.java | 9 ++ .../domain/service/ApsNoticeService.java | 19 +++ .../Impl/ApsNoticeClientsServiceImpl.java | 21 +++ .../service/Impl/ApsNoticeServiceImpl.java | 76 +++++++++ .../ApsNoticeClientRepositoryImpl.java | 39 +++++ .../repository/ApsNoticeRepositoryImpl.java | 45 ++++++ .../apsKYC/web/RestApsKYCController.java | 98 ++++++++++++ .../apsKYC/web/command/AddNoticeCommand.java | 40 +++++ .../web/command/SelectApsNoticeCommand.java | 13 ++ .../mappers/apskyc/ApsNoticeClientMapper.java | 26 +++ .../mappers/apskyc/ApsNoticeMapper.java | 27 ++++ src/main/resources/application-dev.yml | 4 +- .../mappers/apskyc/ApsNoticeClientMapper.xml | 19 +++ .../manage/mappers/apskyc/ApsNoticeMapper.xml | 29 ++++ src/main/ui/static/apsKYC/aps_kyc.js | 108 +++++++++++++ .../apsKYC/templates/add_aps_notice.html | 87 ++++++++++ .../ui/static/apsKYC/templates/aps_kyc.html | 149 ++++++++++++++++++ .../apsKYC/templates/cat_aps_notice.html | 46 ++++++ .../ui/static/images/main_menu/aps_kyc.png | Bin 0 -> 1649 bytes .../ui/static/menu/templates/main_menu.html | 10 ++ 24 files changed, 1014 insertions(+), 2 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNotice.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNoticeClient.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeClientRepository.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeRepository.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeClientsService.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeService.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeClientsServiceImpl.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeServiceImpl.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeClientRepositoryImpl.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeRepositoryImpl.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/web/RestApsKYCController.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/AddNoticeCommand.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/SelectApsNoticeCommand.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.java create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.xml create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.xml create mode 100644 src/main/ui/static/apsKYC/aps_kyc.js create mode 100644 src/main/ui/static/apsKYC/templates/add_aps_notice.html create mode 100644 src/main/ui/static/apsKYC/templates/aps_kyc.html create mode 100644 src/main/ui/static/apsKYC/templates/cat_aps_notice.html create mode 100644 src/main/ui/static/images/main_menu/aps_kyc.png diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNotice.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNotice.java new file mode 100644 index 000000000..61928b0fb --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNotice.java @@ -0,0 +1,44 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.entity; + + +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class ApsNotice { + private static final long serialVersionUID = 1L; + private String id; + + private Date createTime; + + private String creator; + + private Date modifyTime; + + private String modifier; + + /** + * 消息标题 + */ + private String title; + + /** + * 消息内容 + */ + private String content; + + /** + * 消息状态 + * 0;可用 + * 1;禁用 + */ + private Integer status = 0; +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNoticeClient.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNoticeClient.java new file mode 100644 index 000000000..b699ad09f --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/entity/ApsNoticeClient.java @@ -0,0 +1,68 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.entity; + + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class ApsNoticeClient { + private static final long serialVersionUID = 1L; + private String id; + + private Date createTime; + + private String creator; + + private Date modifyTime; + + private String modifier; + + /** + * 消息ID + */ + private String noticeId; + + /** + * 商户Code + */ + private String partnerCode; + + /** + * 用户第一次阅读时间 + */ + private Date readTime; + + /** + * 用户操作状态 + * 0;未读 + * 1;已读 + * 2;同意 + * 3;拒绝 + */ + private Integer status = 0; + + /** + * 用户操作时间 + */ + private Date statusTime; + + /** + * 运营处理时间 + * 0;未处理 + * 1;已处理 + */ + private Integer handle = 0; + + /** + * 是否失效 + */ + private Integer isValid = 0; +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeClientRepository.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeClientRepository.java new file mode 100644 index 000000000..54ab1ceb6 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeClientRepository.java @@ -0,0 +1,18 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.repository; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + +import java.util.Date; + +public interface ApsNoticeClientRepository { + void saveApsNoticeClient(ApsNoticeClient apsNoticeClient); + + void updateApsNoticeClient(ApsNoticeClient apsNoticeClient); + + PageList getApsNoticeClients(String id, PageBounds pageBounds); + + void updateApsNoticeClientByPartnerCode(Date modifyTime, String modifier, String partnerCode); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeRepository.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeRepository.java new file mode 100644 index 000000000..57598444d --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/repository/ApsNoticeRepository.java @@ -0,0 +1,21 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.repository; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNotice; +import au.com.royalpay.payment.manage.apsKYC.web.command.AddNoticeCommand; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + +import java.util.List; + +public interface ApsNoticeRepository { + PageList getApsNotices(PageBounds pageBounds); + + ApsNotice saveApsNotice(ApsNotice apsNotice); + + void updateApsNotice(ApsNotice apsNotice); + + ApsNotice getApsNoticesById(String id); + + List getApsNotice(String id); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeClientsService.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeClientsService.java new file mode 100644 index 000000000..e33df75a7 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeClientsService.java @@ -0,0 +1,9 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.service; + +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + +public interface ApsNoticeClientsService { + PageList getApsNoticeClients(String id, PageBounds pageBounds); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeService.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeService.java new file mode 100644 index 000000000..627b703f8 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/ApsNoticeService.java @@ -0,0 +1,19 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.service; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import au.com.royalpay.payment.manage.apsKYC.web.command.AddNoticeCommand; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + +public interface ApsNoticeService { + PageList getApsNotices(PageBounds pageBounds); + + void saveApsNotice(JSONObject manager, AddNoticeCommand addNoticeCommand); + + void stopApsNotice(JSONObject manager, String id); + + void updateApsNoticeClient(JSONObject manager, ApsNoticeClient apsNoticeClient); + + AddNoticeCommand getApsNotice(String id); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeClientsServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeClientsServiceImpl.java new file mode 100644 index 000000000..e04688421 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeClientsServiceImpl.java @@ -0,0 +1,21 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.service.Impl; + +import au.com.royalpay.payment.manage.apsKYC.domain.repository.ApsNoticeClientRepository; +import au.com.royalpay.payment.manage.apsKYC.domain.service.ApsNoticeClientsService; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ApsNoticeClientsServiceImpl implements ApsNoticeClientsService { + + @Autowired + private ApsNoticeClientRepository apsNoticeClientRepository; + + @Override + public PageList getApsNoticeClients(String id, PageBounds pageBounds) { + return apsNoticeClientRepository.getApsNoticeClients(id, pageBounds); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeServiceImpl.java new file mode 100644 index 000000000..e3878333f --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/domain/service/Impl/ApsNoticeServiceImpl.java @@ -0,0 +1,76 @@ +package au.com.royalpay.payment.manage.apsKYC.domain.service.Impl; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNotice; +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import au.com.royalpay.payment.manage.apsKYC.domain.repository.ApsNoticeClientRepository; +import au.com.royalpay.payment.manage.apsKYC.domain.repository.ApsNoticeRepository; +import au.com.royalpay.payment.manage.apsKYC.domain.service.ApsNoticeService; +import au.com.royalpay.payment.manage.apsKYC.web.command.AddNoticeCommand; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class ApsNoticeServiceImpl implements ApsNoticeService { + + @Autowired + private ApsNoticeRepository apsNoticeRepository; + + @Autowired + private ApsNoticeClientRepository apsNoticeClientRepository; + + @Override + public PageList getApsNotices(PageBounds pageBounds) { + return apsNoticeRepository.getApsNotices(pageBounds); + } + + @Override + public void saveApsNotice(JSONObject manager, AddNoticeCommand addNoticeCommand) { + // 保存消息数据 + ApsNotice saveApsNotice = addNoticeCommand.saveApsNotice(addNoticeCommand, manager); + ApsNotice apsNotice = apsNoticeRepository.saveApsNotice(saveApsNotice); + for (String partnerCode : addNoticeCommand.getPartnerCodes()) { + if (partnerCode != "" || partnerCode != null) { + apsNoticeClientRepository.updateApsNoticeClientByPartnerCode(new Date(), manager.getString("manager_id"), partnerCode); + ApsNoticeClient apsNoticeClient = addNoticeCommand.saveApsNoticeClient(partnerCode, manager, apsNotice.getId()); + apsNoticeClientRepository.saveApsNoticeClient(apsNoticeClient); + } + } + } + + @Override + public void stopApsNotice(JSONObject manager, String id) { + ApsNotice apsNotice = apsNoticeRepository.getApsNoticesById(id); + apsNotice.setStatus(1) + .setModifier(manager.getString("manager_id")) + .setModifyTime(new Date()); + apsNoticeRepository.updateApsNotice(apsNotice); + } + + @Override + public void updateApsNoticeClient(JSONObject manager, ApsNoticeClient apsNoticeClient) { + apsNoticeClient.setModifier(manager.getString("manager_id")); + apsNoticeClient.setModifyTime(new Date()); + apsNoticeClientRepository.updateApsNoticeClient(apsNoticeClient); + } + + @Override + public AddNoticeCommand getApsNotice(String id) { + List apsNotice = apsNoticeRepository.getApsNotice(id); + AddNoticeCommand addNoticeCommand = new AddNoticeCommand(); + ArrayList codes = new ArrayList<>(); + for (JSONObject a : apsNotice) { + addNoticeCommand.setTitle(a.getString("title")); + addNoticeCommand.setContent(a.getString("content")); + codes.add(a.getString("partner_code")); + } + addNoticeCommand.setPartnerCodes(codes.toArray(new String[codes.size()])); + return addNoticeCommand; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeClientRepositoryImpl.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeClientRepositoryImpl.java new file mode 100644 index 000000000..19758cce6 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeClientRepositoryImpl.java @@ -0,0 +1,39 @@ +package au.com.royalpay.payment.manage.apsKYC.infrastructure.repository; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import au.com.royalpay.payment.manage.apsKYC.domain.repository.ApsNoticeClientRepository; +import au.com.royalpay.payment.manage.mappers.apskyc.ApsNoticeClientMapper; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import java.util.Date; + +@Repository +public class ApsNoticeClientRepositoryImpl implements ApsNoticeClientRepository { + + @Autowired + private ApsNoticeClientMapper mapper; + + @Override + public void saveApsNoticeClient(ApsNoticeClient apsNoticeClient) { + mapper.saveApsNoticeClient(apsNoticeClient); + } + + @Override + public void updateApsNoticeClient(ApsNoticeClient apsNoticeClient) { + mapper.updateApsNoticeClient(apsNoticeClient); + } + + @Override + public PageList getApsNoticeClients(String id, PageBounds pageBounds) { + return mapper.getApsNoticeClients(id, pageBounds); + } + + @Override + public void updateApsNoticeClientByPartnerCode(Date modifyTime, String modifier, String partnerCode) { + mapper.updateApsNoticeClientByPartnerCode(modifyTime, modifier, partnerCode); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeRepositoryImpl.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeRepositoryImpl.java new file mode 100644 index 000000000..6cb46ceac --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/infrastructure/repository/ApsNoticeRepositoryImpl.java @@ -0,0 +1,45 @@ +package au.com.royalpay.payment.manage.apsKYC.infrastructure.repository; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNotice; +import au.com.royalpay.payment.manage.apsKYC.domain.repository.ApsNoticeRepository; +import au.com.royalpay.payment.manage.mappers.apskyc.ApsNoticeMapper; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public class ApsNoticeRepositoryImpl implements ApsNoticeRepository { + + @Autowired + private ApsNoticeMapper mapper; + + @Override + public PageList getApsNotices(PageBounds pageBounds) { + return mapper.getApsNotices(pageBounds); + } + + @Override + public ApsNotice saveApsNotice(ApsNotice apsNotice) { + mapper.saveApsNotice(apsNotice); + return mapper.getApsNoticesById(apsNotice.getId()); + } + + @Override + public void updateApsNotice(ApsNotice apsNotice) { + mapper.updateApsNotice(apsNotice); + } + + @Override + public ApsNotice getApsNoticesById(String id) { + return mapper.getApsNoticesById(id); + } + + @Override + public List getApsNotice(String id) { + return mapper.getApsNotice(id); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/RestApsKYCController.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/RestApsKYCController.java new file mode 100644 index 000000000..6f6ceef5c --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/RestApsKYCController.java @@ -0,0 +1,98 @@ +package au.com.royalpay.payment.manage.apsKYC.web; + + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import au.com.royalpay.payment.manage.apsKYC.domain.service.ApsNoticeClientsService; +import au.com.royalpay.payment.manage.apsKYC.domain.service.ApsNoticeService; +import au.com.royalpay.payment.manage.apsKYC.web.command.AddNoticeCommand; +import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.tools.CommonConsts; +import au.com.royalpay.payment.tools.permission.enums.ManagerRole; +import au.com.royalpay.payment.tools.utils.PageListUtils; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping(value = "/aps/kyc") +public class RestApsKYCController { + + @Resource + private ApsNoticeService apsNoticeService; + + @Resource + private ApsNoticeClientsService apsNoticeClientsService; + + /** + * 获取消息通知列表 + * + * @param page 当前页 + * @param pageSize 每页数 + * @return + */ + @ManagerMapping(value = "/notices", method = RequestMethod.GET, role = {ManagerRole.ADMIN}) + public JSONObject getApsNotices(@RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) { + PageBounds pageBounds = new PageBounds(page, pageSize); + PageList apply = apsNoticeService.getApsNotices(pageBounds); + return PageListUtils.buildPageListResult(apply); + } + + @ManagerMapping(value = "/notice", method = RequestMethod.GET, role = {ManagerRole.ADMIN}) + public AddNoticeCommand getApsNotice(@RequestParam String id) { + return apsNoticeService.getApsNotice(id); + } + + /** + * 获取消息通知商户列表 + * + * @param page 当前页 + * @param pageSize 每页数 + * @param id 消息id + * @return JSONObject + */ + @ManagerMapping(value = "/notice/clients", method = RequestMethod.GET, role = {ManagerRole.ADMIN}) + public JSONObject getApsNoticeClients(@RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, + @RequestParam String id) { + PageBounds pageBounds = new PageBounds(page, pageSize); + PageList apply = apsNoticeClientsService.getApsNoticeClients(id, pageBounds); + return PageListUtils.buildPageListResult(apply); + } + + /** + * 新增消息通知 + * + * @param manager 运营用户 + * @param addNoticeCommand 新增数据 + */ + @ManagerMapping(value = "/notice", method = RequestMethod.POST, role = {ManagerRole.ADMIN}) + public void addApsNotice(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @RequestBody AddNoticeCommand addNoticeCommand) { + apsNoticeService.saveApsNotice(manager, addNoticeCommand); + } + + /** + * 禁用消息 + * + * @param manager 运营用户 + * @param id 消息数据 + */ + @ManagerMapping(value = "/notice", method = RequestMethod.PUT, role = {ManagerRole.ADMIN}) + public void stopApsNotice(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @RequestBody String id) { + apsNoticeService.stopApsNotice(manager, id); + } + + /** + * 停用商户 + * + * @param manager 运营数据 + * @param apsNoticeClient 消息关联商户数据 + */ + @ManagerMapping(value = "/notice/client", method = RequestMethod.PUT, role = {ManagerRole.ADMIN}) + public void updateApsNoticeClient(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @RequestBody ApsNoticeClient apsNoticeClient) { + apsNoticeService.updateApsNoticeClient(manager, apsNoticeClient); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/AddNoticeCommand.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/AddNoticeCommand.java new file mode 100644 index 000000000..f6300a3dc --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/AddNoticeCommand.java @@ -0,0 +1,40 @@ +package au.com.royalpay.payment.manage.apsKYC.web.command; + + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNotice; +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.joda.time.DateTime; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AddNoticeCommand { + + private String[] partnerCodes; + + private String title; + + private String content; + + public ApsNotice saveApsNotice(AddNoticeCommand addNoticeDescriptor, JSONObject manager) { + return new ApsNotice() + .setCreateTime(new Date()) + .setCreator(manager.getString("manager_id")) + .setTitle(addNoticeDescriptor.getTitle()) + .setContent(addNoticeDescriptor.getContent()); + } + + public ApsNoticeClient saveApsNoticeClient(String partnerCode,JSONObject manager,String noticeId){ + return new ApsNoticeClient() + .setCreateTime(new Date()) + .setCreator(manager.getString("manager_id")) + .setNoticeId(noticeId) + .setPartnerCode(partnerCode); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/SelectApsNoticeCommand.java b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/SelectApsNoticeCommand.java new file mode 100644 index 000000000..9e87a6f7e --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/apsKYC/web/command/SelectApsNoticeCommand.java @@ -0,0 +1,13 @@ +package au.com.royalpay.payment.manage.apsKYC.web.command; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SelectApsNoticeCommand { + private int limit = 10; + private int page = 1; +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.java new file mode 100644 index 000000000..073148945 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.java @@ -0,0 +1,26 @@ +package au.com.royalpay.payment.manage.mappers.apskyc; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNoticeClient; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper; +import com.yixsoft.support.mybatis.autosql.annotations.AutoSql; +import com.yixsoft.support.mybatis.autosql.annotations.SqlType; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +@AutoMapper(tablename = "sys_aps_notice_clients", pkName = "id") +public interface ApsNoticeClientMapper { + + @AutoSql(SqlType.INSERT) + void saveApsNoticeClient(ApsNoticeClient apsNoticeClient); + + @AutoSql(SqlType.UPDATE) + void updateApsNoticeClient(ApsNoticeClient apsNoticeClient); + + PageList getApsNoticeClients(String id, PageBounds pageBounds); + + void updateApsNoticeClientByPartnerCode(@Param("modify_time") Date modifyTime, @Param("modifier") String modifier, @Param("partner_code") String partnerCode); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.java new file mode 100644 index 000000000..30b83d756 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.java @@ -0,0 +1,27 @@ +package au.com.royalpay.payment.manage.mappers.apskyc; + +import au.com.royalpay.payment.manage.apsKYC.domain.entity.ApsNotice; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; +import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper; +import com.yixsoft.support.mybatis.autosql.annotations.AutoSql; +import com.yixsoft.support.mybatis.autosql.annotations.SqlType; + +import java.util.List; + +@AutoMapper(tablename = "sys_aps_notice", pkName = "id") +public interface ApsNoticeMapper { + PageList getApsNotices(PageBounds pageBounds); + + @AutoSql(SqlType.INSERT) + void saveApsNotice(ApsNotice apsNotice); + + @AutoSql(SqlType.SELECT) + ApsNotice getApsNoticesById(String id); + + @AutoSql(SqlType.UPDATE) + void updateApsNotice(ApsNotice apsNotice); + + List getApsNotice(String id); +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 82aa7edc2..533a120dd 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,13 +2,13 @@ spring: datasource: master: host: 192.168.0.92:3306 - jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false + jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai password: SuTUUxyvzS0cLETi6Rzm schema-name: royalpay username: rpaydev slave: host: 192.168.0.92:3306 - jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false + jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai password: SuTUUxyvzS0cLETi6Rzm schema-name: royalpay username: rpaydev diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.xml new file mode 100644 index 000000000..721309c7f --- /dev/null +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeClientMapper.xml @@ -0,0 +1,19 @@ + + + + + UPDATE sys_aps_notice_clients + SET modifier = #{modifier}, + modify_time = #{modify_time}, + is_valid = 1 + WHERE partner_code = #{partner_code} + + + + diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.xml new file mode 100644 index 000000000..ad7e52f19 --- /dev/null +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/apskyc/ApsNoticeMapper.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/src/main/ui/static/apsKYC/aps_kyc.js b/src/main/ui/static/apsKYC/aps_kyc.js new file mode 100644 index 000000000..7d9261921 --- /dev/null +++ b/src/main/ui/static/apsKYC/aps_kyc.js @@ -0,0 +1,108 @@ +/** + * Created by todking on 01/12/2021. + */ +define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) { + 'use strict'; + var app = angular.module('ApsKYC', ['ui.bootstrap', 'ui.router']); + app.config(['$stateProvider', function ($stateProvider) { + $stateProvider.state('aps_kyc', { + url: '/aps_kyc', + templateUrl: '/static/apsKYC/templates/aps_kyc.html', + controller: 'ApsKYCCtrl' + }); + }]); + + app.controller('ApsKYCCtrl', ['$scope', '$http', '$uibModal', function ($scope, $http, $uibModal) { + var that = $scope + that.params = {}; + that.noticeClients = {}; + that.showClients = false + that.loadApsNotice = function (page) { + var params = angular.copy(that.params); + params.page = page || that.pagination.page || 1; + $http.get('/aps/kyc/notices', {params: params}).then(function (resp) { + that.apply = resp.data.data; + that.pagination = resp.data.pagination; + }); + } + that.loadApsNotice(1); + that.stopNotice = function (id) { + $http.put('/aps/kyc/notice', id).then(function () { + that.loadApsNotice(1); + }); + }; + that.getNoticeClients = function (title, id, page) { + that.showClients = true + that.clientTitle = title + if (that.showClients) { + that.loadApsNoticeClients(id, page); + } + }; + that.loadApsNoticeClients = function (id, page) { + var params = angular.copy(that.params); + params.page = page || that.clientPagination.page || 1; + params.id = id; + $http.get('/aps/kyc/notice/clients', {params: params}).then(function (resp) { + that.noticeClients = resp.data.data; + that.clientPagination = resp.data.pagination; + }); + }; + that.addNotice = function () { + $uibModal + .open({ + templateUrl: '/static/apsKYC/templates/add_aps_notice.html', + backdrop: false, + size: 'lg', + controller: 'addApsNoticeCtrl', + }).result.then(function () { + that.loadApsNotice(1) + }); + }; + that.catNotice = function (id) { + $scope.noticeDetail = {}; + var params = angular.copy(that.params); + params.id = id; + $uibModal + .open({ + templateUrl: '/static/apsKYC/templates/cat_aps_notice.html', + size: 'lg', + controller: ['$scope', '$http', function ($scope, $http) { + $http.get('/aps/kyc/notice', {params: params}).then(function (resp) { + $scope.noticeDetail = resp.data; + document.getElementById("input").innerHTML = resp.data.content + }); + }], + }); + }; + that.setHandle = function (id) { + + } + }]); + app.controller('addApsNoticeCtrl', ['$scope', '$http', function ($scope, $http) { + var that = $scope + that.saveNoticeData = {} + that.saveNotice = function (form) { + if (form.$invalid) { + angular.forEach(form, function (item, key) { + if (key.indexOf('$') < 0) { + item.$dirty = true; + } + }); + return; + } + let split = that.saveNoticeData.partnerCodes.split(`,`); + if (split.length >= 2) { + alert("商户编码格式存在问题"); + return; + } + let codes = that.saveNoticeData.partnerCodes.split(","); + let newClients = [...new Set(codes)] + that.saveNoticeData.partnerCodes = newClients; + $http.post('/aps/kyc/notice', that.saveNoticeData).then(function () { + alert("新增成功"); + that.$close(); + }); + }; + }]) + return app; +}); diff --git a/src/main/ui/static/apsKYC/templates/add_aps_notice.html b/src/main/ui/static/apsKYC/templates/add_aps_notice.html new file mode 100644 index 000000000..95397d064 --- /dev/null +++ b/src/main/ui/static/apsKYC/templates/add_aps_notice.html @@ -0,0 +1,87 @@ +
+

新增A+KYC通知

+
+
+
+
+
+
+
+ +
+ +
+

required field +

+
+
+
+ +
+ +
+ +
+

required field +

+
+
+
+ +
+ +
+ +
+

required field +

+
+
+
+
+
+
+
+
+ + + + + + diff --git a/src/main/ui/static/apsKYC/templates/aps_kyc.html b/src/main/ui/static/apsKYC/templates/aps_kyc.html new file mode 100644 index 000000000..f95a1ba10 --- /dev/null +++ b/src/main/ui/static/apsKYC/templates/aps_kyc.html @@ -0,0 +1,149 @@ +
+

A+KYC通知

+ +
+ +
+
+
+
+
+ +
+

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
通知时间通知标题通知内容通知商户数未读数同意数合规处理数操作
{{ item.createTime }}{{ item.title }} +
+ {{ item.content }} +
+
{{ item.clientsNum }} + + + + {{ item.noRead }}{{ item.agree }}{{ item.handleNum }} + +  禁用 +  已禁用 + +  |  + +  详情 + +
+
+
+ + +
+
+
+ +
+ + + +
+ diff --git a/src/main/ui/static/apsKYC/templates/cat_aps_notice.html b/src/main/ui/static/apsKYC/templates/cat_aps_notice.html new file mode 100644 index 000000000..88c9d5dfd --- /dev/null +++ b/src/main/ui/static/apsKYC/templates/cat_aps_notice.html @@ -0,0 +1,46 @@ +
+

A+KYC通知详情

+
+
+
+
+
+
+ +
+ {{ noticeDetail.partnerCodes }} +
+
+ +
+ +
+ {{ noticeDetail.title }} +
+
+ +
+ +
+
+
+
+ +
+
+
+
+ + + + + + diff --git a/src/main/ui/static/images/main_menu/aps_kyc.png b/src/main/ui/static/images/main_menu/aps_kyc.png new file mode 100644 index 0000000000000000000000000000000000000000..2575c4c6b77148fbfa024dc254404fe3bc8435d1 GIT binary patch literal 1649 zcmV-%29EiOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91R-gj_1ONa40RR91RsaA102!1H=Kuf&+et)0RCodHoz06JMHIka_3o_h zhIMBlqS1q*EBXg4L;`V%pa($`g9i`BL(JVTkep=kWIX7Cc=V#4g8@$}#!VnWSWg-W zvWgmF6eBz1Ib=9j^zkXfSUDf?cfsJrU&q96s zDFA&0w0;alF5zzx6wKrPjEy3!%TTHY8n#jH7XCItsjC3$JQU`?ghOg4Yk4ZQfQzL? zgmx5Mbrh6-8kL+&Eh|qM6;wg1FTl~~5cWAZTqN*`LvpYidJZc8z7F8Ni7@9Am$;WQ zD6(khUD$Wmd$6pkNmP#yR_iIaP<|ON_f-UXAW0#6KCOZq*i5X#6AK@q74OEWPdu=f zs`o>!_8CH5jw5t@)2I!YnK=fB=B^K_<6y8C%Lids6V!VL37d%HWWA2_92{QwwqJdn zeh2Z=e-WXs3)B!LY6gi3vFQ_fTP$UC-B0@Dl|znm0^8kBO(4u*{mY*$^$t@ei3?wAk?&Pql+5y%ZYHEfn`V-pIc|O%F1flUU+x3N{71PezZ)epUkd zh=bD*k7gAk`6C2y-j6!3MVusPbf89IQw@UUj2Cowqwn?CfA(}?E47y#}r42O!20;q-nbp zupBWGu$JqPOK~Fs`_et#UxAw9h?ptf6qhtD_t_Xp8~gTycY5^-E@=W4#6>F{#M@3A zEywo0f^W9W-Eqc}^vd3tRafh!j5Rf9A4yYSR%N_m1uWC~6tDu8i2##Wu~-4iM1V=G zSge3$BETe8ELOlW5nvL_X0cm!mq}%NVmWnW1AF#n-5voZNt`;ejc&b$FZI%gx_N%_ zm~`X{Y@=Io6b?qfwDt$s!ozGIT(5a=T*r}<$24pfo20Tz`5&PN&J#ZWrw(s0T2m6; z(xzo=W78`1-F5?B_^|>^p9Z8=D{(&j90|Qr<|O=n%Y|ous6ZwEHx&JeAyfPu$#eDD zKj9FLmKz$L`Tjq+Q46=ULnxS|2xLl4K`J+%HuQ0uomL%R)_DF(1+G;0x~aCPcpf%3 zTf0Nv`0$S!T*J%%#MLT%RcZ{mbk^cF6|8TqVRP^bYcZ21Tsdpl6ij_RY4zr>uR1TT zOKekaxh^3`-{g~8f*k_H5}EoB2;}Hnf*k@)mOfbWp6)sNwj+CDr4U16iNOc!xui$$ z=@K#$K!#2C{=v8hfH;lJ2DPWtNYBqdx}=wok^r&`t(DNWSQ1B$dDqLA#fNNCw&=!x zW#RGg8VP0NbA{A@$zqgY8s7H*{?-RSZzeK<00000NkvXXu0mjf=7jOX literal 0 HcmV?d00001 diff --git a/src/main/ui/static/menu/templates/main_menu.html b/src/main/ui/static/menu/templates/main_menu.html index 1baeb605a..3d771db67 100644 --- a/src/main/ui/static/menu/templates/main_menu.html +++ b/src/main/ui/static/menu/templates/main_menu.html @@ -457,6 +457,16 @@ +