|
@@ -0,0 +1,204 @@
|
|
|
+package cn.rankin.userservice.controller;
|
|
|
+
|
|
|
+import cn.rankin.common.utils.api.model.APIResult;
|
|
|
+import cn.rankin.common.utils.api.page.Page;
|
|
|
+import cn.rankin.common.utils.enums.BaseOrderEnum;
|
|
|
+import cn.rankin.common.utils.util.ProvinceUtil;
|
|
|
+import cn.rankin.data.api.user.dto.CampusDTO;
|
|
|
+import cn.rankin.data.api.user.dto.CampusSearchDTO;
|
|
|
+import cn.rankin.data.api.user.dto.UserDeviceDTO;
|
|
|
+import cn.rankin.data.api.user.entity.Campus;
|
|
|
+import cn.rankin.data.api.user.entity.Merchant;
|
|
|
+import cn.rankin.data.api.user.entity.UserDevice;
|
|
|
+import cn.rankin.userservice.code.UserServiceAPICode;
|
|
|
+import cn.rankin.userservice.helper.RaStringHelper;
|
|
|
+import cn.rankin.userservice.service.CampusService;
|
|
|
+import cn.rankin.userservice.service.MerchantService;
|
|
|
+import cn.rankin.userservice.service.UserDeviceService;
|
|
|
+import cn.rankin.userservice.utils.StudentNo;
|
|
|
+import cn.rankin.userservice.utils.StudentNumberUtil;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping(value = "/stmt")
|
|
|
+public class StmtController
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private MerchantService merchantService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CampusService campusService;
|
|
|
+
|
|
|
+ @RequestMapping(value = "/campus/list", method = RequestMethod.GET)
|
|
|
+ public APIResult<Page<Campus>> search(CampusSearchDTO searchDTO) {
|
|
|
+ Campus campus = new Campus();
|
|
|
+
|
|
|
+ String name = searchDTO.getName();
|
|
|
+ if (!StringUtils.isEmpty(name)) {
|
|
|
+ campus.setName("%" + name + "%");
|
|
|
+ }
|
|
|
+
|
|
|
+ String code = searchDTO.getCode();
|
|
|
+ if (!StringUtils.isEmpty(code)) {
|
|
|
+ campus.setCode("%" + code + "%");
|
|
|
+ }
|
|
|
+
|
|
|
+ String merchantId = searchDTO.getMerchantId();
|
|
|
+ if (!StringUtils.isEmpty(merchantId)) {
|
|
|
+ campus.setMerchantId(merchantId);
|
|
|
+ }
|
|
|
+
|
|
|
+ // sort
|
|
|
+ LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
|
|
|
+ sort.put("gmtModified", BaseOrderEnum.DESC);
|
|
|
+
|
|
|
+ APIResult<Page<Campus>> apiResult = campusService.search(campus, searchDTO.getPageNo(), searchDTO.getPageSize(), sort);
|
|
|
+ if (apiResult.getSuccess() && apiResult.getData() != null) {
|
|
|
+ List<Campus> campusList = apiResult.getData().getList();
|
|
|
+ setMerchantName(campusList);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return apiResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(method = RequestMethod.GET)
|
|
|
+ public APIResult<List<Campus>> findByCondition(CampusSearchDTO searchDTO) {
|
|
|
+ Campus campus = new Campus();
|
|
|
+
|
|
|
+ String name = searchDTO.getName();
|
|
|
+ if (!StringUtils.isEmpty(name)) {
|
|
|
+ campus.setName("%" + name + "%");
|
|
|
+ }
|
|
|
+
|
|
|
+ String code = searchDTO.getCode();
|
|
|
+ if (!StringUtils.isEmpty(code)) {
|
|
|
+ campus.setCode("%" + code + "%");
|
|
|
+ }
|
|
|
+
|
|
|
+ // sort
|
|
|
+ LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
|
|
|
+ sort.put("gmtModified", BaseOrderEnum.DESC);
|
|
|
+
|
|
|
+ return campusService.find(campus, sort);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @RequestMapping(method = RequestMethod.POST)
|
|
|
+ public APIResult<Campus> create(@RequestBody @Valid CampusDTO campusDTO) {
|
|
|
+ String merchantId = campusDTO.getMerchantId();
|
|
|
+ if (StringUtils.isEmpty(merchantId)) {
|
|
|
+ return APIResult.error(UserServiceAPICode.error("缺少渠道id"));
|
|
|
+ }
|
|
|
+
|
|
|
+ Merchant merchant = merchantService.findOne(merchantId);
|
|
|
+ if (merchant == null) {
|
|
|
+ return APIResult.error(UserServiceAPICode.error("渠道不存在"));
|
|
|
+ }
|
|
|
+
|
|
|
+ String provinceCode = campusDTO.getProvinceCode();
|
|
|
+ if (StringUtils.isEmpty(provinceCode)) {
|
|
|
+ return APIResult.error(UserServiceAPICode.PARAMETER_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ provinceCode = converProvinceCode(merchant, provinceCode);
|
|
|
+
|
|
|
+ Integer serialNo = campusService.getSerialNo(merchantId, provinceCode);
|
|
|
+ StudentNo studentNo = StudentNumberUtil.getStudentNo(merchant.getCode(), provinceCode, serialNo);
|
|
|
+ if (studentNo == null) {
|
|
|
+ return APIResult.error(UserServiceAPICode.CAMPUS_NO_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ campusDTO.setProvinceCode(provinceCode);
|
|
|
+ campusDTO.setSerialNo(serialNo);
|
|
|
+ campusDTO.setCode(studentNo.getCampusNo());
|
|
|
+
|
|
|
+ APIResult<Campus> result = campusService.create(campusDTO);
|
|
|
+ if (result.getSuccess()) {
|
|
|
+ Campus campus = result.getData();
|
|
|
+ setMerchantName(campus);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断是否贝尔安亲,湖南校区。
|
|
|
+ * 因湖南校区已达到最大限额,使用湖南新编号
|
|
|
+ * @param merchant
|
|
|
+ * @param provinceCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String converProvinceCode(Merchant merchant, String provinceCode) {
|
|
|
+ if("6666".equals(merchant.getCode()) && provinceCode.equals(ProvinceUtil.HN_ORIGINAL)){
|
|
|
+ provinceCode = ProvinceUtil.HN;
|
|
|
+ }
|
|
|
+
|
|
|
+ return provinceCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/ids", method = RequestMethod.GET)
|
|
|
+ public APIResult<Map<String, Campus>> findByIds(@RequestParam("id") List<String> campusIds) {
|
|
|
+ Map<String, Campus> campusMap = campusService.getCampusMap(campusIds);
|
|
|
+ return APIResult.ok(campusMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(method = RequestMethod.PUT)
|
|
|
+ public APIResult<Campus> update(@RequestBody @Valid CampusDTO campusDTO) {
|
|
|
+ String id = campusDTO.getId();
|
|
|
+ if (StringUtils.isEmpty(id)) {
|
|
|
+ return APIResult.error(UserServiceAPICode.PARAMETER_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ APIResult<Campus> result = campusService.update(campusDTO);
|
|
|
+ if (result.getSuccess()) {
|
|
|
+ Campus campus = result.getData();
|
|
|
+ setMerchantName(campus);
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMerchantName(List<Campus> campusList) {
|
|
|
+ if (CollectionUtils.isEmpty(campusList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<String> merchantIdSet = new HashSet<>();
|
|
|
+ campusList.forEach(campus -> merchantIdSet.add(campus.getMerchantId()));
|
|
|
+
|
|
|
+ if (merchantIdSet.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> merchantIdList = new ArrayList<>();
|
|
|
+ merchantIdList.addAll(merchantIdSet);
|
|
|
+ Map<String, Merchant> merchantMap = merchantService.getMerchantMap(merchantIdList);
|
|
|
+
|
|
|
+ for (Campus campus : campusList) {
|
|
|
+ String merchantId = campus.getMerchantId();
|
|
|
+ Merchant merchant = merchantMap.get(merchantId);
|
|
|
+ campus.setMerchantName(merchant.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMerchantName(Campus campus) {
|
|
|
+ if (campus == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Merchant merchant = merchantService.findOne(campus.getMerchantId());
|
|
|
+ if (merchant != null) {
|
|
|
+ campus.setMerchantName(merchant.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|