Commit aa43ab4d authored by 王海's avatar 王海

Merge remote-tracking branch 'origin/master'

parents 6cea6982 da655109
<component name="ProjectDictionaryState"> <component name="ProjectDictionaryState">
<dictionary name="Eurus"> <dictionary name="Eurus">
<words> <words>
<w>addr</w>
<w>alipay</w>
<w>appid</w>
<w>baozheng</w> <w>baozheng</w>
<w>caocao</w> <w>caocao</w>
<w>chengyaojin</w> <w>chengyaojin</w>
<w>diaochan</w> <w>diaochan</w>
<w>exps</w> <w>exps</w>
<w>guanyu</w> <w>guanyu</w>
<w>hshop</w>
<w>huanggai</w> <w>huanggai</w>
<w>huangxin</w> <w>huangxin</w>
<w>inputer</w> <w>inputer</w>
...@@ -20,11 +24,13 @@ ...@@ -20,11 +24,13 @@
<w>mawu</w> <w>mawu</w>
<w>nong</w> <w>nong</w>
<w>patt</w> <w>patt</w>
<w>posppp</w>
<w>shixiu</w> <w>shixiu</w>
<w>skugrps</w> <w>skugrps</w>
<w>skus</w> <w>skus</w>
<w>strs</w> <w>strs</w>
<w>sunquan</w> <w>sunquan</w>
<w>unipay</w>
<w>xishi</w> <w>xishi</w>
<w>yanqing</w> <w>yanqing</w>
<w>yuefei</w> <w>yuefei</w>
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" /> <option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/pay" />
</set> </set>
</option> </option>
<option name="resolveModulePerSourceSet" value="false" /> <option name="resolveModulePerSourceSet" value="false" />
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/TangKuPos.iml" filepath="$PROJECT_DIR$/TangKuPos.iml" /> <module fileurl="file://$PROJECT_DIR$/TangKuPos.iml" filepath="$PROJECT_DIR$/TangKuPos.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/pay/pay.iml" filepath="$PROJECT_DIR$/pay/pay.iml" />
</modules> </modules>
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -71,8 +71,8 @@ public class App extends Application { ...@@ -71,8 +71,8 @@ public class App extends Application {
.start(); .start();
// 初始化异常处理 // 初始化异常处理
initEx(); // initEx();
//初始化Frwagment框架 //初始化Fragment框架
initFragment(); initFragment();
//初始化数据库 //初始化数据库
......
...@@ -69,11 +69,11 @@ public class C { ...@@ -69,11 +69,11 @@ public class C {
/** /**
* 开发平台(开发人员使用) * 开发平台(开发人员使用)
*/ */
// public static final String BASE_URL = "http://demo.51zzd.cn:8080/";//开发测试平台 public static final String BASE_URL = "http://demo.51zzd.cn:8080/";//开发测试平台
/** /**
* 生产平台 * 生产平台
*/ */
public static final String BASE_URL = "http://tk.51zzd.com/"; // public static final String BASE_URL = "http://tk.51zzd.com/";
private static final String PKG = "/tk/"; private static final String PKG = "/tk/";
...@@ -298,6 +298,28 @@ public class C { ...@@ -298,6 +298,28 @@ public class C {
public static final String add = ROOT_URL + "add"; public static final String add = ROOT_URL + "add";
} }
/**
* 付费相关接口
*/
public final class PAIDUP {
/**
* 付费规则查询
*/
public static final String getEnter = PKG + "/enter/query";
/**
* 开通营销
*/
public static final String activateMarketing = PKG + "/merchant/marketing";
/**
* 开通营销支付确认
*/
public static final String confirmMarketing = PKG + "/merchant/confirmMarketing";
/**
* 获取当前营销状态
*/
public static final String getMarketing = PKG + "/merchant/getMarketing";
}
public final class TICKET { public final class TICKET {
private static final String ROOT_URL = PKG + "ticket/"; private static final String ROOT_URL = PKG + "ticket/";
......
...@@ -11,6 +11,7 @@ import com.xingdata.zzdpos.model.Category; ...@@ -11,6 +11,7 @@ import com.xingdata.zzdpos.model.Category;
import com.xingdata.zzdpos.model.Gbound; import com.xingdata.zzdpos.model.Gbound;
import com.xingdata.zzdpos.model.Mscard; import com.xingdata.zzdpos.model.Mscard;
import com.xingdata.zzdpos.model.Pager; import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.PaidUpEnter;
import com.xingdata.zzdpos.model.Trule; import com.xingdata.zzdpos.model.Trule;
import com.xingdata.zzdpos.model.Ubound; import com.xingdata.zzdpos.model.Ubound;
import com.xingdata.zzdpos.model.UsskuParam; import com.xingdata.zzdpos.model.UsskuParam;
...@@ -565,7 +566,53 @@ public final class ApiFactory { ...@@ -565,7 +566,53 @@ public final class ApiFactory {
} }
} }
public static class PaidUp {
/**
* 付費規則查詢
*/
public static Observable<Pager<PaidUpEnter>> getEnter() {
return Api.getInstance().service.getEnter()
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 查询营销
*/
public static Observable<Object> getMarketing() {
return Api.getInstance().service.getMarketing()
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 开通营销
*/
public static Observable<Object> activateMarketing(Integer months, Integer years
) {
return Api.getInstance().service.activateMarketing(months, years)
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/**
* 开通营销确认
*/
public static Observable<Object> confirmMarketing(String payNo, Integer operID
) {
return Api.getInstance().service.confirmMarketing(payNo, operID)
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
}
public static class CsDetail { public static class CsDetail {
/** /**
* 添加库存盘点详情 * 添加库存盘点详情
......
...@@ -15,6 +15,7 @@ import com.xingdata.zzdpos.model.Notice; ...@@ -15,6 +15,7 @@ import com.xingdata.zzdpos.model.Notice;
import com.xingdata.zzdpos.model.Oper; import com.xingdata.zzdpos.model.Oper;
import com.xingdata.zzdpos.model.Ossku; import com.xingdata.zzdpos.model.Ossku;
import com.xingdata.zzdpos.model.Pager; import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.PaidUpEnter;
import com.xingdata.zzdpos.model.Pay; import com.xingdata.zzdpos.model.Pay;
import com.xingdata.zzdpos.model.Psb; import com.xingdata.zzdpos.model.Psb;
import com.xingdata.zzdpos.model.Saleorder; import com.xingdata.zzdpos.model.Saleorder;
...@@ -165,6 +166,18 @@ interface ApiService { ...@@ -165,6 +166,18 @@ interface ApiService {
@POST(C.URL.FEED.add) @POST(C.URL.FEED.add)
Observable<HttpMessage<Object>> addFeed(@Body Feed feed); Observable<HttpMessage<Object>> addFeed(@Body Feed feed);
@POST(C.URL.PAIDUP.getEnter)
Observable<HttpMessage<Pager<PaidUpEnter>>> getEnter();
@POST(C.URL.PAIDUP.getMarketing)
Observable<HttpMessage<Object>> getMarketing();
@POST(C.URL.PAIDUP.activateMarketing)
Observable<HttpMessage<Object>> activateMarketing(@Query("months") Integer months, @Query("years") Integer years);
@POST(C.URL.PAIDUP.confirmMarketing)
Observable<HttpMessage<Object>> confirmMarketing(@Query("payNo") String payNo, @Query("openId") Integer openId);
@POST(C.URL.CSDETAIL.add) @POST(C.URL.CSDETAIL.add)
Observable<HttpMessage<CsDetail>> addCsDetail(@Body CsDetail csDetail); Observable<HttpMessage<CsDetail>> addCsDetail(@Body CsDetail csDetail);
......
package com.xingdata.zzdpos.base;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.R;
import java.util.ArrayList;
import java.util.List;
public abstract class BaseMultiSelectAdapter<T, B extends ViewDataBinding> extends BaseQuickAdapter<T, BaseViewHolder> {
private List<Integer> mSelectedPositionList;
public BaseMultiSelectAdapter(int layoutResId, @Nullable List<T> data) {
super(layoutResId, data);
mSelectedPositionList = new ArrayList<>();
}
@Override
protected void convert(BaseViewHolder helper, T item) {
this.convert(helper, (B) helper.mViewBinding, mSelectedPositionList.contains(helper.getAdapterPosition()), item);
}
protected abstract void convert(BaseViewHolder helper, B mViewBinding, boolean isSelected, T item);
/**
* 获取所有选中的数据
*
* @return 选中的数据
*/
public List<T> getSelectedDatas() {
List<T> tList = new ArrayList<>();
for (int i = 0; i < getData().size(); i++) {
if (mSelectedPositionList.contains(i)) {
tList.add(getData().get(i));
}
}
return tList;
}
/**
* 选择全部,如果已经全选则全部取消
*/
public void selectAll() {
mSelectedPositionList = new ArrayList<>();
for (int i = 0; i < getData().size(); i++) {
mSelectedPositionList.add(i);
}
}
/**
* 选择某项数据
*
* @param position 要选定item的position
*/
public void select(int position) {
mSelectedPositionList.add(position);
}
/**
* 取消选择某项数据
*
* @param position 要取消的item的position
*/
public void deselect(int position) {
mSelectedPositionList.remove((Integer) position);
}
/**
* 反选
*
* @param position 要反选的item的position
*/
public void invert(int position) {
if (mSelectedPositionList.contains(position)) deselect(position);
else select(position);
}
@Override
protected View getItemView(int layoutResId, ViewGroup parent) {
ViewDataBinding binding = DataBindingUtil.inflate(mLayoutInflater, layoutResId, parent, false);
if (binding == null) return super.getItemView(layoutResId, parent);
View view = binding.getRoot();
view.setTag(R.id.BaseQuickAdapter_databinding_support, binding);
return view;
}
}
...@@ -6,6 +6,7 @@ import com.blankj.utilcode.util.TimeUtils; ...@@ -6,6 +6,7 @@ import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zzdpos.App; import com.xingdata.zzdpos.App;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.base.BaseModel; import com.xingdata.zzdpos.base.BaseModel;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.model.HandoverInfo; import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.Level; import com.xingdata.zzdpos.model.Level;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
...@@ -133,8 +134,8 @@ public class DBFactory { ...@@ -133,8 +134,8 @@ public class DBFactory {
* @return 商品分组 * @return 商品分组
*/ */
public static Observable<List<Sskugrp>> querySkugrp() { public static Observable<List<Sskugrp>> querySkugrp() {
return Observable.just(DB.getInstance().get(StorePresenter.class).where(Sskugrp return Observable.just(DB.getInstance().get(StorePresenter.class).where(Sskugrp.class)
.class).findAll()) .findAll())
.flatMap(sskugrps -> Observable.just(getList(sskugrps))); .flatMap(sskugrps -> Observable.just(getList(sskugrps)));
} }
...@@ -146,8 +147,8 @@ public class DBFactory { ...@@ -146,8 +147,8 @@ public class DBFactory {
* @return 商品名称 * @return 商品名称
*/ */
public static String querySpuNameBySkuId(Long skuId) { public static String querySpuNameBySkuId(Long skuId) {
List<Sssku> ssskus = getList(DB.getInstance().get(StorePresenter.class).where(Sssku List<Sssku> ssskus = getList(DB.getInstance().get(StorePresenter.class).where(Sssku.class)
.class).equalTo("skuId", skuId).findAll()); .equalTo("skuId", skuId).findAll());
if (ssskus.size() > 0) return ssskus.get(0).getSpuName(); if (ssskus.size() > 0) return ssskus.get(0).getSpuName();
else return null; else return null;
} }
...@@ -161,20 +162,14 @@ public class DBFactory { ...@@ -161,20 +162,14 @@ public class DBFactory {
RealmQuery<Ms> query = DB.getInstance().get(StorePresenter.class).where(Ms.class); RealmQuery<Ms> query = DB.getInstance().get(StorePresenter.class).where(Ms.class);
query.equalTo("msStatus", 0); query.equalTo("msStatus", 0);
query.notEqualTo("msTools", C.MS_TYPE.GIFT); Long dateNow = Long.valueOf(TimeUtils.getNowString(new SimpleDateFormat("yyyyMMdd", Locale.getDefault())));
query.beginGroup().lessThanOrEqualTo("msDateBegin", dateNow).greaterThanOrEqualTo("msDateEnd", dateNow).endGroup();
Long dateNow = Long.valueOf(TimeUtils.getNowString(new SimpleDateFormat("yyyyMMdd",
Locale.getDefault())));
query.beginGroup().lessThanOrEqualTo("msDateBegin", dateNow).greaterThanOrEqualTo
("msDateEnd", dateNow).endGroup();
String weekNow = String.valueOf(TimeUtils.getWeekIndex(TimeUtils.getNowDate())); String weekNow = String.valueOf(TimeUtils.getWeekIndex(TimeUtils.getNowDate()));
query.contains("msWeekPlan", weekNow); query.contains("msWeekPlan", weekNow);
Long timeNow = Long.valueOf(TimeUtils.getNowString(new SimpleDateFormat("HHmmss", Long timeNow = Long.valueOf(TimeUtils.getNowString(new SimpleDateFormat("HHmmss", Locale.getDefault())));
Locale.getDefault()))); query.beginGroup().lessThanOrEqualTo("msTimeBegin", timeNow).greaterThanOrEqualTo("msTimeEnd", timeNow).endGroup();
query.beginGroup().lessThanOrEqualTo("msTimeBegin", timeNow).greaterThanOrEqualTo
("msTimeEnd", timeNow).endGroup();
query.equalTo("msCoustomTag", 0); query.equalTo("msCoustomTag", 0);
...@@ -182,6 +177,22 @@ public class DBFactory { ...@@ -182,6 +177,22 @@ public class DBFactory {
return Observable.just(query.findAllSorted("msTouchTag2", Sort.DESCENDING)) return Observable.just(query.findAllSorted("msTouchTag2", Sort.DESCENDING))
.flatMap(ms -> Observable.just(getList(ms))); .flatMap(ms -> Observable.just(getList(ms)));
} }
/**
* 查询换购商品
*
* @param gifts 换购信息
* @return 换购信息列表(附带商品)
*/
public static Observable<List<Sssku>> queryGiftSkus(List<Gift> gifts) {
RealmQuery<Sssku> query = DB.getInstance().get(MainPresenter.class).where(Sssku.class);
for (int i = 0; i < gifts.size(); i++) {
if (i > 0) query.or();
query.equalTo("skuId", gifts.get(i).getSkuId());
}
return Observable.just(query.findAll()).flatMap(ssskus -> Observable.just(getList(ssskus)));
}
} }
public static class Vip { public static class Vip {
......
...@@ -3,15 +3,18 @@ package com.xingdata.zzdpos.model; ...@@ -3,15 +3,18 @@ package com.xingdata.zzdpos.model;
public class Gift { public class Gift {
public Gift(Long msId, Sssku sssku, Long addAmt) { public Gift(Long msId, Long skuId, Long addAmt, Long dateEnd) {
this.sssku = sssku; this.skuId = skuId;
this.msId = msId; this.msId = msId;
this.addAmt = addAmt; this.addAmt = addAmt;
this.dateEnd = dateEnd;
} }
private Sssku sssku; private Sssku sssku;
private Long msId; private Long msId;
private Long addAmt; private Long addAmt;
private Long skuId;
private Long dateEnd;
public Sssku getSssku() { public Sssku getSssku() {
return sssku; return sssku;
...@@ -37,4 +40,20 @@ public class Gift { ...@@ -37,4 +40,20 @@ public class Gift {
public void setAddAmt(Long addAmt) { public void setAddAmt(Long addAmt) {
this.addAmt = addAmt; this.addAmt = addAmt;
} }
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public Long getDateEnd() {
return dateEnd;
}
public void setDateEnd(Long dateEnd) {
this.dateEnd = dateEnd;
}
} }
...@@ -33,7 +33,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean { ...@@ -33,7 +33,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
public interface OnApplyListener { public interface OnApplyListener {
void setDis(Ms ms); void setDis(Ms ms);
void addGift(Long msId, Long skuId, long addAmt); void addGift(Long msId, Long skuId, long addAmt, long dateEnd);
void removeGift(Long msId); void removeGift(Long msId);
} }
...@@ -73,7 +73,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean { ...@@ -73,7 +73,7 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
if (amt >= this.getPayAmt()) break; if (amt >= this.getPayAmt()) break;
} }
if (amt >= this.getPayAmt()) { if (amt >= this.getPayAmt()) {
onApplyListener.addGift(id, giftSkuId, giftSkuPrice); onApplyListener.addGift(id, giftSkuId, giftSkuPrice, msDateEnd);
} else { } else {
onApplyListener.removeGift(id); onApplyListener.removeGift(id);
} }
......
package com.xingdata.zzdpos.model;
/**
* Created by Administrator on 2018/3/2.
*/
public class PaidUpEnter {
/**
* mssrvMapId : 1
* mssrvFree : 1
* mssrvPrice1 : 3000
* mssrvPrice2 : 36000
* vipLevelDef : 4
* ticketLevelDef : 9
* acctLevelDef : 2
* smsFee : 10
* updateTime : 1519808634000
* createTime : 1519808634000
* mssrvName : 开通优惠券
*/
private int mssrvMapId;
private int mssrvFree;
private int mssrvPrice1;
private int mssrvPrice2;
private int vipLevelDef;
private int ticketLevelDef;
private int acctLevelDef;
private int smsFee;
private long updateTime;
private long createTime;
private String mssrvName;
public int getMssrvMapId() {
return mssrvMapId;
}
public void setMssrvMapId(int mssrvMapId) {
this.mssrvMapId = mssrvMapId;
}
public int getMssrvFree() {
return mssrvFree;
}
public void setMssrvFree(int mssrvFree) {
this.mssrvFree = mssrvFree;
}
public int getMssrvPrice1() {
return mssrvPrice1;
}
public void setMssrvPrice1(int mssrvPrice1) {
this.mssrvPrice1 = mssrvPrice1;
}
public int getMssrvPrice2() {
return mssrvPrice2;
}
public void setMssrvPrice2(int mssrvPrice2) {
this.mssrvPrice2 = mssrvPrice2;
}
public int getVipLevelDef() {
return vipLevelDef;
}
public void setVipLevelDef(int vipLevelDef) {
this.vipLevelDef = vipLevelDef;
}
public int getTicketLevelDef() {
return ticketLevelDef;
}
public void setTicketLevelDef(int ticketLevelDef) {
this.ticketLevelDef = ticketLevelDef;
}
public int getAcctLevelDef() {
return acctLevelDef;
}
public void setAcctLevelDef(int acctLevelDef) {
this.acctLevelDef = acctLevelDef;
}
public int getSmsFee() {
return smsFee;
}
public void setSmsFee(int smsFee) {
this.smsFee = smsFee;
}
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public String getMssrvName() {
return mssrvName;
}
public void setMssrvName(String mssrvName) {
this.mssrvName = mssrvName;
}
}
...@@ -13,8 +13,10 @@ import com.xingdata.zzdpos.base.BaseActivity; ...@@ -13,8 +13,10 @@ import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.ActivityMainBinding; import com.xingdata.zzdpos.databinding.ActivityMainBinding;
import com.xingdata.zzdpos.databinding.ItemMenuBottomBinding; import com.xingdata.zzdpos.databinding.ItemMenuBottomBinding;
import com.xingdata.zzdpos.ui.dialog.PromptDialog;
import com.xingdata.zzdpos.ui.main.adapter.FragmentViewAdapter; import com.xingdata.zzdpos.ui.main.adapter.FragmentViewAdapter;
import com.xingdata.zzdpos.ui.main.dialog.HandoverDialog; import com.xingdata.zzdpos.ui.main.dialog.HandoverDialog;
import com.xingdata.zzdpos.ui.main.dialog.PaidUpDialog;
import com.xingdata.zzdpos.ui.main.fragment.CasherFragment; import com.xingdata.zzdpos.ui.main.fragment.CasherFragment;
import com.xingdata.zzdpos.ui.main.fragment.MyselfFragment; import com.xingdata.zzdpos.ui.main.fragment.MyselfFragment;
import com.xingdata.zzdpos.ui.main.fragment.ServiceFragment; import com.xingdata.zzdpos.ui.main.fragment.ServiceFragment;
...@@ -44,6 +46,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin ...@@ -44,6 +46,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
// private List<View> views=new ArrayList<>(); // private List<View> views=new ArrayList<>();
private List<ItemMenuBottomBinding> itemMenuBottomBindings = new ArrayList<>(); private List<ItemMenuBottomBinding> itemMenuBottomBindings = new ArrayList<>();
private HandoverDialog mHandoverDialog = new HandoverDialog(); private HandoverDialog mHandoverDialog = new HandoverDialog();
private PaidUpDialog mPaidUpDialog = new PaidUpDialog();
@Override @Override
public int getLayoutId() { public int getLayoutId() {
...@@ -52,6 +55,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin ...@@ -52,6 +55,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
@Override @Override
public void initView() { public void initView() {
mPresenter.getPaidUpEnter();
mainActivity = this; mainActivity = this;
mPresenter.initHandoverInfo(); mPresenter.initHandoverInfo();
List<BaseFragment> fragments = new ArrayList<>(); List<BaseFragment> fragments = new ArrayList<>();
...@@ -181,6 +185,21 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin ...@@ -181,6 +185,21 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
mHandoverDialog.show(this); mHandoverDialog.show(this);
} }
@Override
public void showPaidUpVipDialog(Class activity, Integer day) {
mPaidUpDialog.setDay(day);
mPaidUpDialog.setClass(activity);
mPaidUpDialog.show(this);
}
@Override
public void showMarketingResult() {
PromptDialog mPromptDialog = new PromptDialog();
mPromptDialog.setDialogType(PromptDialog.PROMPTDIALOG_SUCC, "开通成功");
mPromptDialog.setCustomButton("确定", view -> dismissAllDialog());
mPromptDialog.show((BaseActivity) ActivityUtils.getTopActivity(), 2);
}
@Override @Override
public void onBackPressedSupport() { public void onBackPressedSupport() {
if ((System.currentTimeMillis() - mExitTime) > 1500) { if ((System.currentTimeMillis() - mExitTime) > 1500) {
......
...@@ -8,7 +8,9 @@ interface MainContract { ...@@ -8,7 +8,9 @@ interface MainContract {
interface View extends BaseView { interface View extends BaseView {
void isShowLoading(Boolean is); void isShowLoading(Boolean is);
void showUptateDialog(String updateUrl, String version); void showUptateDialog(String updateUrl, String version);
/** /**
* 交班确认 * 交班确认
*/ */
...@@ -20,10 +22,34 @@ interface MainContract { ...@@ -20,10 +22,34 @@ interface MainContract {
*/ */
void showHandoverDialog(); void showHandoverDialog();
/**
* 显示会员续费页面
*/
void showPaidUpVipDialog(Class activity, Integer day);
/**
* 显示开通结果
*/
void showMarketingResult();
} }
abstract class Presenter extends BasePresenter<View> { abstract class Presenter extends BasePresenter<View> {
/**
* 查詢會員规则
*/
public abstract void getPaidUpEnter();
/**
* 查詢會員付費
*/
public abstract void isPaidUpVip(Class activity);
/**
* 开通营销
*/
public abstract void activateMarketing(Integer months, Integer years);
/** /**
* 菜单EXIT页面 - 点击交班 打开交班报表页面 * 菜单EXIT页面 - 点击交班 打开交班报表页面
......
package com.xingdata.zzdpos.ui.main; package com.xingdata.zzdpos.ui.main;
import android.os.Message;
import android.view.KeyEvent;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.AppUtils; import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.SPUtils;
import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.TimeUtils; import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils; import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.api.print.ZX_PrintPOS;
import com.xingdata.zzdpos.api.ApiFactory; import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.db.DBFactory; import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.HandoverInfo; import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.PaidUpEnter;
import com.xingdata.zzdpos.ui.login.LoginPresenter; import com.xingdata.zzdpos.ui.login.LoginPresenter;
import com.xingdata.zzdpos.util.SystemUtil; import com.xingdata.zzdpos.util.SystemUtil;
...@@ -30,7 +24,7 @@ import io.reactivex.ObservableSource; ...@@ -30,7 +24,7 @@ import io.reactivex.ObservableSource;
import io.reactivex.functions.Function; import io.reactivex.functions.Function;
public class MainPresenter extends MainContract.Presenter { public class MainPresenter extends MainContract.Presenter {
public static PaidUpEnter mPaidUpEnter;
public static HandoverInfo handoverInfo; public static HandoverInfo handoverInfo;
...@@ -39,9 +33,66 @@ public class MainPresenter extends MainContract.Presenter { ...@@ -39,9 +33,66 @@ public class MainPresenter extends MainContract.Presenter {
this.initRealm(); this.initRealm();
} }
@Override
public void getPaidUpEnter() {
ApiFactory.PaidUp.getEnter()
.subscribe(paidUpEnterPager -> {
if (paidUpEnterPager.getList().size() != 0) {
this.mPaidUpEnter = paidUpEnterPager.getList().get(0);
}
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override
public void isPaidUpVip(Class activity) {
ApiFactory.PaidUp.getMarketing()
.subscribe(object -> {
if (object.toString().length() == 0) {
mView.showPaidUpVipDialog(activity, null);
} else {
Long time = JSON.parseObject(object.toString()).getLong("openExp");
Integer day = (int) ((time - System.currentTimeMillis()) / 86400000L);
if (day <= 7) {
mView.showPaidUpVipDialog(activity, day);
} else {
ActivityUtils.startActivity(activity);
}
}
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override
public void activateMarketing(Integer months, Integer years) {
mView.isShowLoading(true);
ApiFactory.PaidUp.activateMarketing(months, years).doFinally(() -> mView.isShowLoading(false))
.subscribe(object -> {
mView.showMarketingResult();
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override @Override
public void clickHandover() { public void clickHandover() {
mView.showHandoverDialog(); mView.showHandoverDialog();
} }
......
package com.xingdata.zzdpos.ui.main.dialog;
import android.text.Html;
import android.view.View;
import com.blankj.utilcode.util.ActivityUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseDialog;
import com.xingdata.zzdpos.databinding.DialogPaidUpBinding;
import com.xingdata.zzdpos.model.PaidUpEnter;
import com.xingdata.zzdpos.ui.main.MainPresenter;
import com.xingdata.zzdpos.ui.marketing.marketingMenu.MarketingMenuPresenter;
import com.xingdata.zzdpos.util.ConvertUtil;
/**
* 交班页面
*/
public class PaidUpDialog extends BaseDialog<MainPresenter, DialogPaidUpBinding> {
private Boolean isNew = true;
private Integer day;
private Class mClass;
public void setDay(Integer integer) {
this.day = integer;
}
public void setClass(Class mClass) {
this.mClass = mClass;
}
@Override
public int getLayoutId() {
return R.layout.dialog_paid_up;
}
@Override
public int getTitle() {
return -1;
}
@Override
public void onCancelClick(View view) {
super.onCancelClick(view);
if (!isNew) {
if (mClass != null) {
ActivityUtils.startActivity(mClass);
} else {
mPresenter.clickHandover();
}
}
}
@Override
public void onConfirmClick(View view) {
super.onConfirmClick(view);
if (isNew) {
mPresenter.activateMarketing(null, null);
dismiss();
} else {
mViewBinding.tvLine1.setVisibility(View.GONE);
mViewBinding.setIsShow(false);
}
}
@Override
public void initView() {
mViewBinding.setIsShow(true);
if (MainPresenter.mPaidUpEnter != null) {
setPaidUpEnter(MainPresenter.mPaidUpEnter);
}
}
public void setPaidUpEnter(PaidUpEnter paidUpEnter) {
if (day != null) {
if (day < 0) {
day = 0;
}
mViewBinding.tvLine1.setText(Html.fromHtml("<big><font color=\"black\">高级功能体验剩余</font></big>" +
"<big><big><big><font color=\"red\">" + day + "</font></big></big></big>" + "<big><font color=\"black\">天</font></big>"));
setBtnName("继续使用", "续费");
isNew = false;
} else {
mViewBinding.tvLine1.setText(Html.fromHtml("<big><font color=\"black\">高级功能可试用</font></big>" +
"<big><big><big><font color=\"red\">" + paidUpEnter.getMssrvFree() + "</font></big></big></big>" + "<big><font color=\"black\">月</font></big>"));
setBtnName("暂不试用", "开始试用");
isNew = true;
}
mViewBinding.tvLine2.setText(Html.fromHtml("<big><font color=\"black\">服务费:¥</font></big>" +
"<big><big><big><font color=\"black\">" + ConvertUtil.fenToYuan(Long.valueOf(paidUpEnter.getMssrvPrice2()), false) + "/年" + "</font></big></big></big>"));
}
}
...@@ -19,6 +19,7 @@ import com.xingdata.zzdpos.ui.main.adapter.MenuRecyclerAdapter; ...@@ -19,6 +19,7 @@ import com.xingdata.zzdpos.ui.main.adapter.MenuRecyclerAdapter;
import com.xingdata.zzdpos.ui.manage.manageMenu.ManageMenuActivity; import com.xingdata.zzdpos.ui.manage.manageMenu.ManageMenuActivity;
import com.xingdata.zzdpos.ui.marketing.marketingMenu.MarketingMenuActivity; import com.xingdata.zzdpos.ui.marketing.marketingMenu.MarketingMenuActivity;
import com.xingdata.zzdpos.ui.payment.PaymentActivity; import com.xingdata.zzdpos.ui.payment.PaymentActivity;
import com.xingdata.zzdpos.ui.sendticke.SendTicketActivity;
import com.xingdata.zzdpos.ui.statistics.StatisticsActivity; import com.xingdata.zzdpos.ui.statistics.StatisticsActivity;
import com.xingdata.zzdpos.ui.store.StoreActivity; import com.xingdata.zzdpos.ui.store.StoreActivity;
import com.xingdata.zzdpos.ui.vip.VipActivity; import com.xingdata.zzdpos.ui.vip.VipActivity;
...@@ -130,7 +131,7 @@ public class CasherFragment extends BaseFragment<MainPresenter, FragmentCasherBi ...@@ -130,7 +131,7 @@ public class CasherFragment extends BaseFragment<MainPresenter, FragmentCasherBi
MarketingMenuActivity.class)); MarketingMenuActivity.class));
break; break;
case C.MENU.MENU_TICKET://优惠券 case C.MENU.MENU_TICKET://优惠券
ActivityUtils.startActivity(getActivity(), com.xingdata.zzdpos.ui.sendticke.SendTicketActivity.class); mPresenter.isPaidUpVip(SendTicketActivity.class);
break; break;
case C.MENU.MENU_STATISTICS://统计 case C.MENU.MENU_STATISTICS://统计
ActivityUtils.startActivity(getActivity(), StatisticsActivity.class); ActivityUtils.startActivity(getActivity(), StatisticsActivity.class);
...@@ -158,7 +159,7 @@ public class CasherFragment extends BaseFragment<MainPresenter, FragmentCasherBi ...@@ -158,7 +159,7 @@ public class CasherFragment extends BaseFragment<MainPresenter, FragmentCasherBi
mViewBinding.btnHandover.setOnClickListener(new OnClickListener() { mViewBinding.btnHandover.setOnClickListener(new OnClickListener() {
@Override @Override
protected void myOnClickListener(View v) { protected void myOnClickListener(View v) {
mPresenter.clickHandover(); mPresenter.isPaidUpVip(null);
} }
}); });
......
...@@ -33,7 +33,7 @@ public class InventoryActivity extends BaseActivity<InventoryPresenter, Activity ...@@ -33,7 +33,7 @@ public class InventoryActivity extends BaseActivity<InventoryPresenter, Activity
private InventoryFragment mInventoryFragment = new InventoryFragment(); private InventoryFragment mInventoryFragment = new InventoryFragment();
private ManageDateFragment mManageDateFragment = new ManageDateFragment(); private ManageDateFragment mManageDateFragment = new ManageDateFragment();
private InventoryAddFragment mInventoryAddFragment; private InventoryAddFragment mInventoryAddFragment;
;
private ScanFragment mScanFragment; private ScanFragment mScanFragment;
@Override @Override
......
...@@ -275,7 +275,6 @@ public class SsskuPresenter extends SsskuContract.Presenter { ...@@ -275,7 +275,6 @@ public class SsskuPresenter extends SsskuContract.Presenter {
public void doOnFinish() { public void doOnFinish() {
if (!isNeedSync) return; if (!isNeedSync) return;
final double[] nowPro = {0.0}; final double[] nowPro = {0.0};
mView.showLoadingDialog();
SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORCODE, ""); SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORCODE, "");
SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORMSG, ""); SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORMSG, "");
for (int i = 0; i < SplashPresenter.listSync.size(); i++) { for (int i = 0; i < SplashPresenter.listSync.size(); i++) {
...@@ -283,9 +282,6 @@ public class SsskuPresenter extends SsskuContract.Presenter { ...@@ -283,9 +282,6 @@ public class SsskuPresenter extends SsskuContract.Presenter {
@Override @Override
public void getPro(double pro) { public void getPro(double pro) {
nowPro[0] += pro; nowPro[0] += pro;
if (nowPro[0] >= 100) {
mView.dismissLoadingDialog();
}
} }
@Override @Override
......
...@@ -10,8 +10,11 @@ import com.blankj.utilcode.util.ActivityUtils; ...@@ -10,8 +10,11 @@ import com.blankj.utilcode.util.ActivityUtils;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.databinding.ActivityMarketingMenuBinding; import com.xingdata.zzdpos.databinding.ActivityMarketingMenuBinding;
import com.xingdata.zzdpos.model.MarketingMenuModel; import com.xingdata.zzdpos.model.MarketingMenuModel;
import com.xingdata.zzdpos.ui.dialog.PromptDialog;
import com.xingdata.zzdpos.ui.main.dialog.PaidUpDialog;
import com.xingdata.zzdpos.ui.marketing.integral.IntegralActivity; import com.xingdata.zzdpos.ui.marketing.integral.IntegralActivity;
import com.xingdata.zzdpos.ui.marketing.marketingMenu.adapter.MarketingMenuAdapter; import com.xingdata.zzdpos.ui.marketing.marketingMenu.adapter.MarketingMenuAdapter;
import com.xingdata.zzdpos.ui.marketing.ms.MsActivity; import com.xingdata.zzdpos.ui.marketing.ms.MsActivity;
...@@ -24,14 +27,19 @@ import com.xingdata.zzdpos.util.RecyclerViewUtil; ...@@ -24,14 +27,19 @@ import com.xingdata.zzdpos.util.RecyclerViewUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class MarketingMenuActivity extends AppCompatActivity { public class MarketingMenuActivity extends BaseActivity<MarketingMenuPresenter, ActivityMarketingMenuBinding> implements MarketingMenuContract.View {
MarketingMenuAdapter marketingMenuAdapter; MarketingMenuAdapter marketingMenuAdapter;
List<Integer> list = new ArrayList<>(); List<Integer> list = new ArrayList<>();
private PaidUpDialog mPaidUpDialog = new PaidUpDialog();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { public int getLayoutId() {
super.onCreate(savedInstanceState); return R.layout.activity_marketing_menu;
setContentView(R.layout.activity_marketing_menu); }
@Override
public void initView() {
ActivityMarketingMenuBinding mViewBinding = DataBindingUtil.setContentView( ActivityMarketingMenuBinding mViewBinding = DataBindingUtil.setContentView(
this, R.layout.activity_marketing_menu); this, R.layout.activity_marketing_menu);
...@@ -70,17 +78,20 @@ public class MarketingMenuActivity extends AppCompatActivity { ...@@ -70,17 +78,20 @@ public class MarketingMenuActivity extends AppCompatActivity {
break; break;
case C.MENU.MENU_MS_TICKET: { case C.MENU.MENU_MS_TICKET: {
//优惠券设置 //优惠券设置
ActivityUtils.startActivity(ReturnTicketActivity.class); mPresenter.isPaidUpVip(ReturnTicketActivity.class);
} }
break; break;
case C.MENU.MENU_MS_RECHARGE: { case C.MENU.MENU_MS_RECHARGE: {
//充值优惠 //充值优惠
ActivityUtils.startActivity(RechargeRuleActivity.class); mPresenter.isPaidUpVip(RechargeRuleActivity.class);
} }
break; break;
case C.MENU.MENU_MS_MS: { case C.MENU.MENU_MS_MS: {
//营销计划 //营销计划
ActivityUtils.startActivity(MsActivity.class); mPresenter.isPaidUpVip(MsActivity.class);
} }
break; break;
case C.MENU.MENU_MS_SMS: { case C.MENU.MENU_MS_SMS: {
...@@ -95,4 +106,29 @@ public class MarketingMenuActivity extends AppCompatActivity { ...@@ -95,4 +106,29 @@ public class MarketingMenuActivity extends AppCompatActivity {
} }
}); });
} }
@Override
public void showPaidUpVipDialog(Class activity, Integer day) {
mPaidUpDialog.setDay(day);
mPaidUpDialog.setClass(activity);
mPaidUpDialog.show(this);
}
@Override
public void showMarketingResult() {
PromptDialog mPromptDialog = new PromptDialog();
mPromptDialog.setDialogType(PromptDialog.PROMPTDIALOG_SUCC, "开通成功");
mPromptDialog.setCustomButton("确定", view -> dismissAllDialog());
mPromptDialog.show((BaseActivity) ActivityUtils.getTopActivity(), 2);
}
@Override
public void isShowLoading(Boolean is) {
if (is) {
mLoadingDialog.show((BaseActivity) mContext);
} else {
if (mLoadingDialog.isShowing) {
mLoadingDialog.dismiss();
}
}
}
} }
package com.xingdata.zzdpos.ui.marketing.marketingMenu;
import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseView;
interface MarketingMenuContract {
interface View extends BaseView {
/**
* 显示读取对话框
*/
void isShowLoading(Boolean is);
/**
* 显示会员续费页面
*/
void showPaidUpVipDialog(Class activity, Integer day);
/**
* 显示开通结果
*/
void showMarketingResult();
}
abstract class Presenter extends BasePresenter<View> {
/**
* 查詢會員规则
*/
public abstract void getPaidUpEnter();
/**
* 查詢會員付費
*/
public abstract void isPaidUpVip(Class activity);
/**
* 开通营销
*/
public abstract void activateMarketing(Integer months, Integer years);
}
}
package com.xingdata.zzdpos.ui.marketing.marketingMenu;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.ui.main.MainPresenter;
public class MarketingMenuPresenter extends MarketingMenuContract.Presenter {
@Override
public void getPaidUpEnter() {
ApiFactory.PaidUp.getEnter()
.subscribe(paidUpEnterPager -> {
if (paidUpEnterPager.getList().size() != 0) {
MainPresenter.mPaidUpEnter = paidUpEnterPager.getList().get(0);
}
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override
public void isPaidUpVip(Class activity) {
ApiFactory.PaidUp.getMarketing()
.subscribe(object -> {
if (object.toString().length() == 0) {
mView.showPaidUpVipDialog(activity, null);
} else {
Long time = JSON.parseObject(object.toString()).getLong("openExp");
Integer day = (int) ((time - System.currentTimeMillis()) / 86400000L);
if (day <= 7) {
mView.showPaidUpVipDialog(activity, day);
} else {
ActivityUtils.startActivity(activity);
}
}
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override
public void activateMarketing(Integer months, Integer years) {
mView.isShowLoading(true);
ApiFactory.PaidUp.activateMarketing(months, years).doFinally(() -> mView.isShowLoading(false))
.subscribe(object -> {
mView.showMarketingResult();
}
, throwable -> {
ToastUtils.showShort(throwable.getMessage());
}
);
}
@Override
public void onAttached() {
}
}
\ No newline at end of file
...@@ -201,7 +201,6 @@ public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku> ...@@ -201,7 +201,6 @@ public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku>
public void doOnFinish() { public void doOnFinish() {
if (!isNeedSync) return; if (!isNeedSync) return;
final double[] nowPro = {0.0}; final double[] nowPro = {0.0};
mView.showLoadingDialog();
SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORCODE, ""); SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORCODE, "");
SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORMSG, ""); SPUtils.getInstance().put(SplashActivity.SYNCHRONOUSERRORMSG, "");
for (int i = 0; i < SplashPresenter.listSync.size(); i++) { for (int i = 0; i < SplashPresenter.listSync.size(); i++) {
...@@ -209,9 +208,6 @@ public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku> ...@@ -209,9 +208,6 @@ public class MsPresenter<Sku extends BaseSku> extends MsContract.Presenter<Sku>
@Override @Override
public void getPro(double pro) { public void getPro(double pro) {
nowPro[0] += pro; nowPro[0] += pro;
if (nowPro[0] >= 100) {
mView.dismissLoadingDialog();
}
} }
@Override @Override
......
...@@ -81,7 +81,7 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -81,7 +81,7 @@ public class SettlePresenter extends SettleContract.Presenter {
} }
@Override @Override
public void addGift(Long msId, Long skuId, long addAmt) { public void addGift(Long msId, Long skuId, long addAmt, long dateEnd) {
//这一版不做处理 //这一版不做处理
} }
......
...@@ -23,6 +23,7 @@ import com.xingdata.zzdpos.R; ...@@ -23,6 +23,7 @@ import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity; import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseSku; import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.ActivityStoreBinding; import com.xingdata.zzdpos.databinding.ActivityStoreBinding;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Pager; import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Saledetail; import com.xingdata.zzdpos.model.Saledetail;
...@@ -33,6 +34,7 @@ import com.xingdata.zzdpos.ui.scan.ScanFragment; ...@@ -33,6 +34,7 @@ import com.xingdata.zzdpos.ui.scan.ScanFragment;
import com.xingdata.zzdpos.ui.settle.SettleActivity; import com.xingdata.zzdpos.ui.settle.SettleActivity;
import com.xingdata.zzdpos.ui.store.dialog.CartDialog; import com.xingdata.zzdpos.ui.store.dialog.CartDialog;
import com.xingdata.zzdpos.ui.store.dialog.MsDialog; import com.xingdata.zzdpos.ui.store.dialog.MsDialog;
import com.xingdata.zzdpos.ui.store.fragment.GiftFragment;
import com.xingdata.zzdpos.ui.store.fragment.SearchFragment; import com.xingdata.zzdpos.ui.store.fragment.SearchFragment;
import com.xingdata.zzdpos.ui.store.fragment.StoreFragment; import com.xingdata.zzdpos.ui.store.fragment.StoreFragment;
import com.xingdata.zzdpos.util.Global; import com.xingdata.zzdpos.util.Global;
...@@ -46,6 +48,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -46,6 +48,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
private StoreFragment mStoreFragment = new StoreFragment(); private StoreFragment mStoreFragment = new StoreFragment();
private SearchFragment mSearchFragment = new SearchFragment(); private SearchFragment mSearchFragment = new SearchFragment();
private ScanFragment mScanFragment = new ScanFragment(); private ScanFragment mScanFragment = new ScanFragment();
private GiftFragment mGiftFragment = new GiftFragment();
private CartDialog mCartDialog = new CartDialog(); private CartDialog mCartDialog = new CartDialog();
private MsDialog mMsDialog = new MsDialog(); private MsDialog mMsDialog = new MsDialog();
...@@ -77,12 +80,14 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -77,12 +80,14 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
); );
mViewBinding.btnPayment.setOnClickListener(view -> { mViewBinding.btnPayment.setOnClickListener(view -> {
//显示价格输入页面以添加无码商品
Intent intent = new Intent(StoreActivity.this, PaymentActivity.class); Intent intent = new Intent(StoreActivity.this, PaymentActivity.class);
intent.putExtra(C.SP_KEY.SETTLE_MODE, C.SETTLE_MODE.STORE); intent.putExtra(C.SP_KEY.SETTLE_MODE, C.SETTLE_MODE.STORE);
ActivityUtils.startActivity(intent); ActivityUtils.startActivity(intent);
}); });
mScanFragment.setOnScanCompletedListener(barcode -> mPresenter.scanComplete(barcode)); mScanFragment.setOnScanCompletedListener(barcode -> mPresenter.scanComplete(barcode));
} }
@Override @Override
...@@ -163,6 +168,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -163,6 +168,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
ActivityUtils.startActivity(intent); ActivityUtils.startActivity(intent);
} }
@Override
public void showGiftFragment(List<Gift> gifts) {
this.start(mGiftFragment);
}
@Override @Override
public void showSearchFragment() { public void showSearchFragment() {
if (!mSearchFragment.isAdded()) { if (!mSearchFragment.isAdded()) {
...@@ -206,6 +216,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin ...@@ -206,6 +216,11 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
r.play(); r.play();
} }
@Override
public void loadGifts(List<Gift> gifts) {
mGiftFragment.loadGifts(gifts);
}
/** /**
* 执行抖动动画 * 执行抖动动画
......
...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.store; ...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.store;
import com.xingdata.zzdpos.base.BasePresenter; import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseSku; import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.base.BaseView; import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Pager; import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Saledetail; import com.xingdata.zzdpos.model.Saledetail;
...@@ -106,6 +107,13 @@ interface StoreContract { ...@@ -106,6 +107,13 @@ interface StoreContract {
*/ */
void showSettle(List<Saledetail> saledetails); void showSettle(List<Saledetail> saledetails);
/**
* 显示换购页面
*
* @param gifts 换购信息列表
*/
void showGiftFragment(List<Gift> gifts);
/** /**
* 显示搜索页面 * 显示搜索页面
*/ */
...@@ -139,6 +147,11 @@ interface StoreContract { ...@@ -139,6 +147,11 @@ interface StoreContract {
* @param result 提示音 * @param result 提示音
*/ */
void startAlarm(boolean result); void startAlarm(boolean result);
/**
* 加载换购信息
*/
void loadGifts(List<Gift> gifts);
} }
abstract class Presenter extends BasePresenter<View> { abstract class Presenter extends BasePresenter<View> {
...@@ -246,6 +259,12 @@ interface StoreContract { ...@@ -246,6 +259,12 @@ interface StoreContract {
* @param b 获取焦点 * @param b 获取焦点
*/ */
public abstract void searchBarFocusChanged(boolean b); public abstract void searchBarFocusChanged(boolean b);
/**
* 换购页面 - 初始化
*/
public abstract void initGift();
} }
} }
...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.store; ...@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.store;
import com.xingdata.zzdpos.base.BaseSku; import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.db.DB; import com.xingdata.zzdpos.db.DB;
import com.xingdata.zzdpos.db.DBFactory; import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail; import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder; import com.xingdata.zzdpos.model.Saleorder;
...@@ -32,6 +33,11 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -32,6 +33,11 @@ public class StorePresenter extends StoreContract.Presenter {
*/ */
private List<Saledetail> mSaledetails; private List<Saledetail> mSaledetails;
/**
* 换购商品列表
*/
private List<Gift> mGiftList;
/** /**
* 当前营销计划 * 当前营销计划
*/ */
...@@ -47,11 +53,10 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -47,11 +53,10 @@ public class StorePresenter extends StoreContract.Presenter {
@Override @Override
public void onAttached() { public void onAttached() {
this.initRealm(); this.initRealm();
mVip = Vip.createDefault(); mVip = Vip.createDefault();
mSaledetails = new ArrayList<>(); mSaledetails = new ArrayList<>();
mGiftList = new ArrayList<>();
mSaleorder = new Saleorder(); mSaleorder = new Saleorder();
mOnApplyListener = new Ms.OnApplyListener() { mOnApplyListener = new Ms.OnApplyListener() {
@Override @Override
public void setDis(Ms ms) { public void setDis(Ms ms) {
...@@ -59,13 +64,18 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -59,13 +64,18 @@ public class StorePresenter extends StoreContract.Presenter {
} }
@Override @Override
public void addGift(Long msId, Long skuId, long addAmt) { public void addGift(Long msId, Long skuId, long addAmt, long dateEnd) {
//这一版不做处理 mGiftList.add(new Gift(msId, skuId, addAmt, dateEnd));
} }
@Override @Override
public void removeGift(Long msId) { public void removeGift(Long msId) {
//这一版不作处理 for (int i = 0; i < mGiftList.size(); i++) {
if (mGiftList.get(i).getMsId().longValue() == msId) {
mGiftList.remove(i);
break;
}
}
} }
}; };
} }
...@@ -73,7 +83,11 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -73,7 +83,11 @@ public class StorePresenter extends StoreContract.Presenter {
@Override @Override
public void clickSettle() { public void clickSettle() {
if (mSaledetails.size() == 0) return; if (mSaledetails.size() == 0) return;
mView.showSettle(mSaledetails); if (mGiftList.size() > 0) {
mView.showGiftFragment(mGiftList);
} else {
mView.showSettle(mSaledetails);
}
} }
@Override @Override
...@@ -200,6 +214,21 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -200,6 +214,21 @@ public class StorePresenter extends StoreContract.Presenter {
if (b) mView.showSearchFragment(); if (b) mView.showSearchFragment();
} }
@Override
public void initGift() {
mCompositeDisposable.add(DBFactory.Store.queryGiftSkus(mGiftList).subscribe(ssskus -> {
for (int i = 0; i < ssskus.size(); i++) {
for (int j = 0; j < mGiftList.size(); j++) {
if (ssskus.get(i).getSkuId().longValue() == mGiftList.get(j).getSkuId()) {
mGiftList.get(j).setSssku(ssskus.get(i));
break;
}
}
}
mView.loadGifts(mGiftList);
}));
}
/** /**
* 获取商品分组 * 获取商品分组
......
package com.xingdata.zzdpos.ui.store.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseMultiSelectAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemStoreGiftBinding;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList;
public class GiftAdapter extends BaseMultiSelectAdapter<Gift, ItemStoreGiftBinding> {
public GiftAdapter() {
super(R.layout.item_store_gift, new ArrayList<>());
}
@Override
protected void convert(BaseViewHolder helper, ItemStoreGiftBinding mViewBinding, boolean isSelected, Gift item) {
mViewBinding.tvName.setText(item.getSssku().getSpuName());
mViewBinding.tvOriginalPrice.setText(ConvertUtil.fenToYuan(item.getSssku().getSkuRetailPrice1(), true));
StringBuilder sbDateEnd = new StringBuilder(item.getDateEnd().toString());
sbDateEnd.insert(6, "-");
sbDateEnd.insert(4, "-");
mViewBinding.tvDateEnd.setText("换购截止:" + sbDateEnd.toString());
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuanNoZero(item.getAddAmt()) + "元");
mViewBinding.ivChecked.setImageResource(isSelected ? R.mipmap.radio_select_bg : R.mipmap.radio_normal_bg);
}
}
...@@ -86,7 +86,8 @@ public class MsAdapter extends BaseAdapter<Ms, ItemStoreMsBinding> { ...@@ -86,7 +86,8 @@ public class MsAdapter extends BaseAdapter<Ms, ItemStoreMsBinding> {
strType = mContext.getString(R.string.ms_type_money_off_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftOffAmt())); strType = mContext.getString(R.string.ms_type_money_off_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftOffAmt()));
break; break;
case C.MS_TYPE.GIFT: case C.MS_TYPE.GIFT:
strType = mContext.getString(R.string.ms_type_gift_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftSkuPrice()), ms.getGiftSkuName()); String spuName = DBFactory.Store.querySpuNameBySkuId(ms.getGiftSkuId());
strType = mContext.getString(R.string.ms_type_gift_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftSkuPrice()), spuName);
break; break;
} }
......
package com.xingdata.zzdpos.ui.store.fragment;
import android.support.v7.widget.LinearLayoutManager;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentStoreGiftBinding;
import com.xingdata.zzdpos.model.Gift;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import com.xingdata.zzdpos.ui.store.adapter.GiftAdapter;
import java.util.List;
public class GiftFragment extends BaseFragment<StorePresenter, FragmentStoreGiftBinding> {
private GiftAdapter mGiftAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_store_gift;
}
@Override
public void initView() {
// init gift
mGiftAdapter = new GiftAdapter();
mViewBinding.rlGift.setAdapter(mGiftAdapter);
mViewBinding.rlGift.setLayoutManager(new LinearLayoutManager(mContext));
mGiftAdapter.setOnItemClickListener((adapter, view, position) -> {
mGiftAdapter.invert(position);
mGiftAdapter.notifyItemChanged(position);
});
// init data
mPresenter.initGift();
}
/**
* 加载换购商品信息
*
* @param gifts 换购商品
*/
public void loadGifts(List<Gift> gifts) {
mGiftAdapter.setNewData(gifts);
}
}
...@@ -197,7 +197,8 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin ...@@ -197,7 +197,8 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
strType = getString(R.string.ms_type_money_off_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftOffAmt())); strType = getString(R.string.ms_type_money_off_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftOffAmt()));
break; break;
case C.MS_TYPE.GIFT: case C.MS_TYPE.GIFT:
strType = getString(R.string.ms_type_gift_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftSkuPrice()), ms.getGiftSkuName()); String spuName = DBFactory.Store.querySpuNameBySkuId(ms.getGiftSkuId());
strType = getString(R.string.ms_type_gift_info, ConvertUtil.fenToYuan(ms.getPayAmt()), ConvertUtil.fenToYuan(ms.getGiftSkuPrice()), spuName);
break; break;
} }
......
...@@ -57,8 +57,8 @@ public final class SystemUtil { ...@@ -57,8 +57,8 @@ public final class SystemUtil {
e.printStackTrace(); e.printStackTrace();
} }
} }
// return deviceSN; // return "0818562";
return "test01"; return "test8988";
} }
/** /**
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
<variable
name="isShow"
type="Boolean" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white_caocao"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
android:paddingTop="@dimen/all_margin">
<TextView
android:id="@+id/tv_line_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<TextView
android:id="@+id/tv_line_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<View
android:id="@+id/view1"
android:layout_width="match_parent"
android:layout_height="@dimen/view_line_L1"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/lyt_main_bg"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_line_2" />
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/all_margin"
android:visibility="@{isShow?View.VISIBLE:View.GONE}">
<ImageView
android:id="@+id/img_model_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_manager_ticket" />
<TextView
android:id="@+id/tv_model_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_padding"
android:text="@string/paid_up_vip_model1"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintStart_toEndOf="@id/img_model_one"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_padding"
android:layout_marginTop="@dimen/all_padding"
android:text="@string/paid_up_vip_model1_detail"
android:textColor="@color/gary"
android:textSize="@dimen/all_text_size_low"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/img_model_one"
app:layout_constraintTop_toBottomOf="@id/tv_model_one" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/all_margin"
android:visibility="@{isShow?View.VISIBLE:View.GONE}">
<ImageView
android:id="@+id/img_model_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/top_up_preferential" />
<TextView
android:id="@+id/tv_model_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_padding"
android:text="@string/paid_up_vip_model2"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintStart_toEndOf="@id/img_model_two"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/paid_up_vip_model2_detail"
android:textColor="@color/gary"
android:textSize="@dimen/all_text_size_low"
android:layout_marginStart="@dimen/all_padding"
android:layout_marginTop="@dimen/all_padding"
app:layout_constraintTop_toBottomOf="@id/tv_model_two"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/img_model_two"
/>
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/all_margin"
android:visibility="@{isShow?View.VISIBLE:View.GONE}">
<ImageView
android:id="@+id/img_model_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/marketing_plan" />
<TextView
android:id="@+id/tv_model_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_padding"
android:text="@string/paid_up_vip_model3"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintStart_toEndOf="@id/img_model_three"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_padding"
android:layout_marginTop="@dimen/all_padding"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/paid_up_vip_model1_detail"
android:textColor="@color/gary"
android:textSize="@dimen/all_text_size_low"
app:layout_constraintStart_toEndOf="@id/img_model_three"
app:layout_constraintTop_toBottomOf="@id/tv_model_three" />
</android.support.constraint.ConstraintLayout>
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_zhouyu"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_gift"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:paddingEnd="@null"
android:paddingStart="@dimen/all_margin">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_pic"
android:layout_width="80dp"
android:layout_height="80dp"
app:failureImage="@mipmap/icon_goods_default"
app:layout_constraintBottom_toBottomOf="@+id/ll_price"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/tv_name"
app:placeholderImage="@mipmap/icon_goods_default"
app:roundedCornerRadius="@dimen/all_shape_radius" />
<ImageView
android:id="@+id/iv_checked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/all_margin"
android:src="@mipmap/radio_select_bg"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@id/tv_name"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_margin"
android:layout_marginTop="@dimen/all_margin"
android:lines="2"
android:text="维达纸巾"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
android:textStyle="bold"
app:layout_constraintLeft_toRightOf="@id/iv_pic"
app:layout_constraintRight_toLeftOf="@id/iv_checked"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_date_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="截止时间 : 2017-01-02"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_caption_size"
app:layout_constraintLeft_toLeftOf="@id/tv_name"
app:layout_constraintTop_toBottomOf="@id/tv_name" />
<TextView
android:id="@+id/tv_original_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
android:text="原价 : ¥10.0"
android:textSize="@dimen/all_caption_size"
app:layout_constraintLeft_toLeftOf="@id/tv_name"
app:layout_constraintTop_toBottomOf="@id/tv_date_end" />
<LinearLayout
android:id="@+id/ll_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/tv_name"
app:layout_constraintTop_toBottomOf="@id/tv_original_price">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加"
android:textSize="@dimen/all_caption_size" />
<TextView
android:id="@+id/tv_amt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/all_spacing"
android:layout_marginStart="@dimen/all_spacing"
android:text="4元"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_text_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="换购"
android:textSize="@dimen/all_caption_size" />
</LinearLayout>
<View
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_kongming"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_price" />
</android.support.constraint.ConstraintLayout>
</layout>
...@@ -741,5 +741,12 @@ ...@@ -741,5 +741,12 @@
<string name="search_action">搜索</string> <string name="search_action">搜索</string>
<string name="search_clear">清空</string> <string name="search_clear">清空</string>
<!--续费会员-->
<string name="paid_up_vip_model1">优惠券设置</string>
<string name="paid_up_vip_model1_detail">设置优惠券面值,通过优惠券方式吸引回头客</string>
<string name="paid_up_vip_model2">充值优惠</string>
<string name="paid_up_vip_model2_detail">设置充值优惠金额,多充多送,让更多会员加入我们</string>
<string name="paid_up_vip_model3">营销计划</string>
<string name="paid_up_vip_model4_detail">提前设置打折、促销、满减、换购等优惠活动,不错过每一个节日</string>
<string name="paid_up_pay_hint">请选择支付方式</string>
</resources> </resources>
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
defaultConfig {
minSdkVersion 25
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
package com.xingdata.zxpay;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.xingdata.zxpay.test", appContext.getPackageName());
}
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xingdata.zxpay" />
public class C {
}
package com.xingdata.zxpay.model;
import android.support.annotation.Nullable;
import java.util.Date;
public class Host {
private Integer hostMapId;
@Nullable
private String hostName;
@Nullable
private String hostAddr;
@Nullable
private String hostPort;
@Nullable
private Byte hostStatus;
@Nullable
private String hostCompany;
@Nullable
private String hostLawyer;
@Nullable
private String hostLawyerContact;
@Nullable
private String hostContractNumber;
@Nullable
private Long hostCostsRate;
@Nullable
private Long hostClearDate;
@Nullable
private Long hostTotalAmt;
@Nullable
private String hostKeyWechat;
@Nullable
private String hostKeyAlipay;
@Nullable
private String hostKeyUnipay;
@Nullable
private String hostNotiUrl;
@Nullable
private String hostAcqCode;
private Date updateTime;
private Date createTime;
public Integer getHostMapId() {
return hostMapId;
}
public void setHostMapId(Integer hostMapId) {
this.hostMapId = hostMapId;
}
@Nullable
public String getHostName() {
return hostName;
}
public void setHostName(@Nullable String hostName) {
this.hostName = hostName;
}
@Nullable
public String getHostAddr() {
return hostAddr;
}
public void setHostAddr(@Nullable String hostAddr) {
this.hostAddr = hostAddr;
}
@Nullable
public String getHostPort() {
return hostPort;
}
public void setHostPort(@Nullable String hostPort) {
this.hostPort = hostPort;
}
@Nullable
public Byte getHostStatus() {
return hostStatus;
}
public void setHostStatus(@Nullable Byte hostStatus) {
this.hostStatus = hostStatus;
}
@Nullable
public String getHostCompany() {
return hostCompany;
}
public void setHostCompany(@Nullable String hostCompany) {
this.hostCompany = hostCompany;
}
@Nullable
public String getHostLawyer() {
return hostLawyer;
}
public void setHostLawyer(@Nullable String hostLawyer) {
this.hostLawyer = hostLawyer;
}
@Nullable
public String getHostLawyerContact() {
return hostLawyerContact;
}
public void setHostLawyerContact(@Nullable String hostLawyerContact) {
this.hostLawyerContact = hostLawyerContact;
}
@Nullable
public String getHostContractNumber() {
return hostContractNumber;
}
public void setHostContractNumber(@Nullable String hostContractNumber) {
this.hostContractNumber = hostContractNumber;
}
@Nullable
public Long getHostCostsRate() {
return hostCostsRate;
}
public void setHostCostsRate(@Nullable Long hostCostsRate) {
this.hostCostsRate = hostCostsRate;
}
@Nullable
public Long getHostClearDate() {
return hostClearDate;
}
public void setHostClearDate(@Nullable Long hostClearDate) {
this.hostClearDate = hostClearDate;
}
@Nullable
public Long getHostTotalAmt() {
return hostTotalAmt;
}
public void setHostTotalAmt(@Nullable Long hostTotalAmt) {
this.hostTotalAmt = hostTotalAmt;
}
@Nullable
public String getHostKeyWechat() {
return hostKeyWechat;
}
public void setHostKeyWechat(@Nullable String hostKeyWechat) {
this.hostKeyWechat = hostKeyWechat;
}
@Nullable
public String getHostKeyAlipay() {
return hostKeyAlipay;
}
public void setHostKeyAlipay(@Nullable String hostKeyAlipay) {
this.hostKeyAlipay = hostKeyAlipay;
}
@Nullable
public String getHostKeyUnipay() {
return hostKeyUnipay;
}
public void setHostKeyUnipay(@Nullable String hostKeyUnipay) {
this.hostKeyUnipay = hostKeyUnipay;
}
@Nullable
public String getHostNotiUrl() {
return hostNotiUrl;
}
public void setHostNotiUrl(@Nullable String hostNotiUrl) {
this.hostNotiUrl = hostNotiUrl;
}
@Nullable
public String getHostAcqCode() {
return hostAcqCode;
}
public void setHostAcqCode(@Nullable String hostAcqCode) {
this.hostAcqCode = hostAcqCode;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
\ No newline at end of file
package com.xingdata.zxpay.model;
import android.support.annotation.Nullable;
import java.util.Date;
public class Posppp {
private Integer id;
private Integer hostMapId;
@Nullable
private Long opMapId;
@Nullable
private Long channelMapId;
private Long merMapId;
@Nullable
private String hshopName;
@Nullable
private String hshopNameabcn;
private Long casherId;
private Integer hshopNo;
@Nullable
private Integer hposNo;
private Byte pppFlag;
@Nullable
private Integer hposBatch;
@Nullable
private Integer hposTrace;
@Nullable
private String hposKey;
private Date updateTime;
private Date createTime;
@Nullable
private String hostName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getHostMapId() {
return hostMapId;
}
public void setHostMapId(Integer hostMapId) {
this.hostMapId = hostMapId;
}
@Nullable
public Long getOpMapId() {
return opMapId;
}
public void setOpMapId(@Nullable Long opMapId) {
this.opMapId = opMapId;
}
@Nullable
public Long getChannelMapId() {
return channelMapId;
}
public void setChannelMapId(@Nullable Long channelMapId) {
this.channelMapId = channelMapId;
}
public Long getMerMapId() {
return merMapId;
}
public void setMerMapId(Long merMapId) {
this.merMapId = merMapId;
}
@Nullable
public String getHshopName() {
return hshopName;
}
public void setHshopName(@Nullable String hshopName) {
this.hshopName = hshopName;
}
@Nullable
public String getHshopNameabcn() {
return hshopNameabcn;
}
public void setHshopNameabcn(@Nullable String hshopNameabcn) {
this.hshopNameabcn = hshopNameabcn;
}
public Long getCasherId() {
return casherId;
}
public void setCasherId(Long casherId) {
this.casherId = casherId;
}
public Integer getHshopNo() {
return hshopNo;
}
public void setHshopNo(Integer hshopNo) {
this.hshopNo = hshopNo;
}
@Nullable
public Integer getHposNo() {
return hposNo;
}
public void setHposNo(@Nullable Integer hposNo) {
this.hposNo = hposNo;
}
public Byte getPppFlag() {
return pppFlag;
}
public void setPppFlag(Byte pppFlag) {
this.pppFlag = pppFlag;
}
@Nullable
public Integer getHposBatch() {
return hposBatch;
}
public void setHposBatch(@Nullable Integer hposBatch) {
this.hposBatch = hposBatch;
}
@Nullable
public Integer getHposTrace() {
return hposTrace;
}
public void setHposTrace(@Nullable Integer hposTrace) {
this.hposTrace = hposTrace;
}
@Nullable
public String getHposKey() {
return hposKey;
}
public void setHposKey(@Nullable String hposKey) {
this.hposKey = hposKey;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Nullable
public String getHostName() {
return hostName;
}
public void setHostName(@Nullable String hostName) {
this.hostName = hostName;
}
}
\ No newline at end of file
package com.xingdata.zxpay.model;
import android.support.annotation.Nullable;
import java.util.Date;
public class Shopppp {
private Integer id;
private Integer hostMapId;
@Nullable
private Long opMapId;
@Nullable
private Long channelMapId;
private Long merMapId;
@Nullable
private String hshopName;
@Nullable
private String hshopNameabcn;
@Nullable
private Integer hshopNo;
private Byte pppFlag;
@Nullable
private String shopAppidDisp;
@Nullable
private String shopAppidScan;
@Nullable
private String hshopKeyWechat;
@Nullable
private String hshopKeyAlipay;
@Nullable
private String hshopKeyUnipay;
private Date updateTime;
private Date createTime;
@Nullable
private String hostName;
@Nullable
private Posppp posppp;
@Nullable
private Host host;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getHostMapId() {
return hostMapId;
}
public void setHostMapId(Integer hostMapId) {
this.hostMapId = hostMapId;
}
@Nullable
public Long getOpMapId() {
return opMapId;
}
public void setOpMapId(@Nullable Long opMapId) {
this.opMapId = opMapId;
}
@Nullable
public Long getChannelMapId() {
return channelMapId;
}
public void setChannelMapId(@Nullable Long channelMapId) {
this.channelMapId = channelMapId;
}
public Long getMerMapId() {
return merMapId;
}
public void setMerMapId(Long merMapId) {
this.merMapId = merMapId;
}
@Nullable
public String getHshopName() {
return hshopName;
}
public void setHshopName(@Nullable String hshopName) {
this.hshopName = hshopName;
}
@Nullable
public String getHshopNameabcn() {
return hshopNameabcn;
}
public void setHshopNameabcn(@Nullable String hshopNameabcn) {
this.hshopNameabcn = hshopNameabcn;
}
@Nullable
public Integer getHshopNo() {
return hshopNo;
}
public void setHshopNo(@Nullable Integer hshopNo) {
this.hshopNo = hshopNo;
}
public Byte getPppFlag() {
return pppFlag;
}
public void setPppFlag(Byte pppFlag) {
this.pppFlag = pppFlag;
}
@Nullable
public String getShopAppidDisp() {
return shopAppidDisp;
}
public void setShopAppidDisp(@Nullable String shopAppidDisp) {
this.shopAppidDisp = shopAppidDisp;
}
@Nullable
public String getShopAppidScan() {
return shopAppidScan;
}
public void setShopAppidScan(@Nullable String shopAppidScan) {
this.shopAppidScan = shopAppidScan;
}
@Nullable
public String getHshopKeyWechat() {
return hshopKeyWechat;
}
public void setHshopKeyWechat(@Nullable String hshopKeyWechat) {
this.hshopKeyWechat = hshopKeyWechat;
}
@Nullable
public String getHshopKeyAlipay() {
return hshopKeyAlipay;
}
public void setHshopKeyAlipay(@Nullable String hshopKeyAlipay) {
this.hshopKeyAlipay = hshopKeyAlipay;
}
@Nullable
public String getHshopKeyUnipay() {
return hshopKeyUnipay;
}
public void setHshopKeyUnipay(@Nullable String hshopKeyUnipay) {
this.hshopKeyUnipay = hshopKeyUnipay;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Nullable
public String getHostName() {
return hostName;
}
public void setHostName(@Nullable String hostName) {
this.hostName = hostName;
}
@Nullable
public Posppp getPosppp() {
return posppp;
}
public void setPosppp(@Nullable Posppp posppp) {
this.posppp = posppp;
}
@Nullable
public Host getHost() {
return host;
}
public void setHost(@Nullable Host host) {
this.host = host;
}
}
\ No newline at end of file
<resources>
<string name="app_name">pay</string>
</resources>
package com.xingdata.zxpay;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
\ No newline at end of file
include ':app' include ':app', ':pay'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment